diff --git a/docs/hardware/interface-compatibilities.mdx b/docs/hardware/interface-compatibilities.mdx new file mode 100644 index 00000000..a0d1f28b --- /dev/null +++ b/docs/hardware/interface-compatibilities.mdx @@ -0,0 +1,158 @@ +--- +sidebar_position: 1 +description: Overview of what interfaces can track what in VRCFaceTracking. +--- + +import {EditUrl, CustomLink} from '@site/src/components/Utils.tsx' +import FilterTable from '@site/src/components/FilterTable.tsx'; + +# Tracking Compatibility + +*** + +:::note How to read this page + +This page goes over generalized functions, features, and +tracking quality of each interface, and what they can do in +VRCFaceTracking. For more specific information about the listed +interfaces please refer to their dedicated sections. + +Various aspects of the interfaces are given a rank from 1-10, indicating +their quality or effectiveness. The rankings are given by ranking devices +relative to each other based on criteria such as expressibility and +tracking quality. + +**Expressibility**: The range of motions/expressions that can be tracked. The higher +the expressibility, the more face details the interface reports tracked values for. + +**Tracking Quality**: How well the interface tracks its reported range of motions. +The higher the tracking quality, the better control most users will have over the +range of motions/expressions supported by the interface. + +::: + +Widen
Squeeze
Brow(Emulated), + '~', + <>Widen(Emulated)
Squeeze(Emulated)
, + <>Widen
Squint
Brow, + <>Widen
Squint
Brow, + '❌', + '❌', + <>Widen
Squint
Brow, + '❌', + '❌', + <>Widen
Squeeze
Brow(Emulated), + `~`, + '~' + ], + [ + 'Upper Face Expressibility', + '5/10', + '~', + 'N/A', + '9/10', + '8/10', + '❌', + '❌', + '9/10', + '❌', + '❌', + '5/10', + '~', + '~' + ], + [ + 'Upper Face Tracking Quality', + '8/10', + '~', + 'N/A', + '7/10', + '4/10', + '❌', + '❌', + '8/10', + '❌', + '❌', + '7/10', + '~', + '~' + ], + [ + 'Lower Face Expression Support', + '~', + <>Jaw
Lip
Mouth
Cheek, + '~', + <>Jaw
Lip
Mouth
Cheek
Nose, + <>Jaw
Lip
Mouth
Cheek
Nose, + '~', + '~', + <>Jaw
Lip
Mouth
Cheek
Nose, + <>Jaw
Lip
Mouth
Cheek
Nose, + '~', + '~', + <>Jaw
Lip
Mouth
Cheek
Nose, + '~' + ], + [ + 'Lower Face Expressibility', + '~', + '7/10', + '~', + '8/10', + '7/10', + '~', + '~', + '8/10', + '9/10', + '~', + '~', + '7/10', + '~' + ], + [ + 'Face Tracking Quality', + '~', + '8/10', + '~', + '7/10', + '4/10', + '~', + '~', + '8/10', + '8/10', + '~', + '~', + '7/10', + '~' + ], + ['Tongue Expression Support', '~', 'Tongue Out & Directions', '~', '❌', 'Tongue Out', '~', '~', 'Tongue Out', 'All Tongue Expressions', '~', '~', 'Tongue Out & Directions', '~'], + ]} +/> diff --git a/docs/tutorial-avatars/tutorial-avatars-extras/_unified-blended-table.mdx b/docs/tutorial-avatars/tutorial-avatars-extras/_unified-blended-table.mdx index 485d1b11..86eeed03 100644 --- a/docs/tutorial-avatars/tutorial-avatars-extras/_unified-blended-table.mdx +++ b/docs/tutorial-avatars/tutorial-avatars-extras/_unified-blended-table.mdx @@ -1,386 +1,264 @@ import ContextModal from '@site/src/components/ContextModal.tsx' import '@site/src/css/unified-tables.css' +import FilterTable from '@site/src/components/FilterTable.tsx' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {/* - - - - - */} - - - - - - - - - - - - - -
Blended Eye Expressions
ReferenceNameFunctionBasis
Reference ImageEyeClosedCloses both eye lids.EyeClosedRight
EyeClosedRight
Reference ImageEyeWideWidens both eye lids.EyeWidenRight
EyeWidenLeft
Reference ImageEyeSquintSquints both eye lids.EyeSquintRight
EyeSquintLeft
Reference ImageEyeDilationDilates both pupils.EyeDilationRight
EyeDilationLeft
Reference ImageEyeConstrictConstricts both pupils.EyeConstrictRight
EyeConstrictLeft
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Blended Brows
ReferenceNameFunctionBasis
Reference ImageBrowDownRightPulls the right eyebrow down and in.BrowLowererRight
BrowPinchRight
Reference ImageBrowDownLeftPulls the left eyebrow down and in.BrowLowererLeft
BrowPinchLeft
Reference ImageBrowDownPulls the left eyebrow down and in.BrowLowererRight
BrowLowererLeft
BrowPinchRight
BrowPinchLeft
Reference ImageBrowUpRightRight brow appears worried.BrowInnerUpRight
BrowOuterUpRight
Reference ImageBrowUpLeftLeft brow appears worried.BrowInnerUpLeft
BrowOuterUpLeft
Reference ImageBrowUpBrows appears worried.BrowInnerUpRight
BrowInnerUpLeft
BrowOuterUpRight
BrowOuterUpLeft
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Blended Nose
ReferenceNameFunctionBasis
Reference ImageNoseSneerEntire face sneers.NoseSneerRight
NoseSneerLeft
Reference ImageNasalDilationBoth nose canals dilate.NasalDilationRight
NasalDilationLeft
Reference ImageNasalConstrictBoth nose canals constrict.NasalConstrictRight
NasalConstrictLeft
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Blended Cheeks
ReferenceNameFunctionBasis
Reference ImageCheekPuffPuffs both cheeks.CheekPuffRight
CheekPuffLeft
Reference ImageCheekSuckSucks both cheeks.CheekSuckRight
CheekSuckLeft
Reference ImageCheekSquintRaises both cheeks.CheekSquintRight
CheekSquintLeft
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {/* - - - - - */} - - - - - - - - - - - - - - - - - - - {/* - - - - - */} - - - - - - - - - - - - - - - - - - - -
Blended Lips
ReferenceNameFunctionBasis
Reference ImageLipSuckUpperTucks in the upper lips.LipSuckUpperRight
LipSuckUpperLeft
Reference ImageLipSuckLowerTucks in the lower lips.LipSuckLowerRight
LipSuckLowerLeft
Reference ImageLipSuckTucks in the upper and lower lips.LipSuckUpperRight
LipSuckUpperLeft
LipSuckLowerRight
LipSuckLowerLeft
Reference ImageLipFunnelUpperFunnels in the upper lips.LipFunnelUpperRight
LipFunnelUpperLeft
Reference ImageLipFunnelLowerFunnels in the lower lips.LipFunnelLowerRight
LipFunnelLowerLeft
Reference ImageLipFunnelFunnels in the upper and lower lips.LipFunnelUpperRight
LipFunnelUpperLeft
LipFunnelLowerRight
LipFunnelLowerLeft
Reference ImageLipPuckerUpperUpper lip part pushes outward.LipPuckerUpperRight
LipPuckerUpperLeft
Reference ImageLipPuckerLowerLower lip part pushes outward.LipPuckerLowerRight
LipPuckerLowerLeft
Reference ImageLipPuckerLips push outward.LipPuckerUpperRight
LipPuckerUpperLeft
LipPuckerLowerRight
LipPuckerLowerLeft
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {/* - - - - - */} - - - - - - - - - - - - - {/* - - - - - */} - - - - - - - - - - - - - - - - - - - {/* - - - - - */} - - - - - - - - - - - - - - - - - - - {/* - - - - - */} - - - - - - - - - - - - - - - - - - - - - - - - - -
Blended Mouth
ReferenceNameFunctionBasis
Reference ImageMouthUpperUpRaises the upper lips.MouthUpperUpRight
MouthUpperUpLeft
Reference ImageMouthLowerDownLowers the lower lips.MouthLowerDownRight
MouthLowerDownLeft
Reference ImageMouthOpenMouth opens, revealing teeth.MouthUpperUpRight
MouthUpperUpLeft
MouthLowerDownRight
MouthLowerDownLeft
Reference ImageMouthRightMoves mouth right.MouthUpperRight
MouthLowerRight
Reference ImageMouthLeftMoves mouth left.MouthUpperLeft
MouthLowerLeft
Reference ImageMouthSmileRightRight side mouth expresses a smile.MouthCornerPullRight
MouthCornerSlantRight
Reference ImageMouthSmileLeftLeft side mouth expresses a smile.MouthCornerPullLeft
MouthCornerSlantLeft
Reference ImageMouthSmileMouth expresses a smile.MouthCornerPullRight
MouthCornerPullLeft
MouthCornerSlantRight
MouthCornerSlantLeft
Reference ImageMouthSadRightLeft side mouth expresses sadness.MouthFrownRight
MouthStretchRight
Reference ImageMouthSadLeftRight side mouth expresses sadness.MouthFrownLeft
MouthStretchLeft
Reference ImageMouthSadMouth expresses sadness.MouthFrownRight
MouthFrownLeft
MouthStretchRight
MouthStretchLeft
Reference ImageMouthStretchMouth stretches.MouthStretchRight
MouthStretchLeft
Reference ImageMouthDimpleLip corner dimplesMouthDimpleRight
MouthDimpleLeft
Reference ImageMouthTightenerMouth tightens.MouthTightenerRight
MouthTightenerLeft
Reference ImageMouthPressMouth presses together.MouthPressRight
MouthPressLeft
+, + 'EyeClosed', + Closes both eye lids., + <>EyeClosedRight
EyeClosedRight + ], + [ + Reference Image, + 'EyeWide', + Widens both eye lids., + <>EyeWidenRight
EyeWidenLeft + ], + [ + Reference Image, + 'EyeSquint', + Squints both eye lids., + <>EyeSquintRight
EyeSquintLeft + ], + [ + Reference Image, + 'EyeDilation', + Dilates both pupils., + <>EyeDilationRight
EyeDilationLeft + ], + [ + Reference Image, + 'EyeConstrict', + Constricts both pupils., + <>EyeConstrictRight
EyeConstrictLeft + ], + [ + Reference Image, + 'BrowDownRight', + Pulls the right eyebrow down and in., + <>BrowLowererRight
BrowPinchRight + ], + [ + Reference Image, + 'BrowDownLeft', + Pulls the left eyebrow down and in., + <>BrowLowererLeft
BrowPinchLeft + ], + [ + Reference Image, + 'BrowDown', + Pulls the left eyebrow down and in., + <>BrowLowererRight
BrowLowererLeft
BrowPinchRight
BrowPinchLeft + ], + [ + Reference Image, + 'BrowUpRight', + Right brow appears worried., + <>BrowInnerUpRight
BrowOuterUpRight + ], + [ + Reference Image, + 'BrowUpLeft', + Left brow appears worried., + <>BrowInnerUpLeft
BrowOuterUpLeft + ], + [ + Reference Image, + 'BrowUp', + Brows appear worried., + <>BrowInnerUpRight
BrowInnerUpLeft
BrowOuterUpRight
BrowOuterUpLeft + ], + [ + Reference Image, + 'NoseSneer', + Entire face sneers., + <>NoseSneerRight
NoseSneerLeft + ], + [ + Reference Image, + 'NasalDilation', + Both nose canals dilate., + <>NasalDilationRight
NasalDilationLeft + ], + [ + Reference Image, + 'NasalConstrict', + Both nose canals constrict., + <>NasalConstrictRight
NasalConstrictLeft + ], + [ + Reference Image, + 'CheekPuff', + Puffs both cheeks., + <>CheekPuffRight
CheekPuffLeft + ], + [ + Reference Image, + 'CheekSuck', + Sucks both cheeks., + <>CheekSuckRight
CheekSuckLeft + ], + [ + Reference Image, + 'CheekSquint', + Raises both cheeks., + <>CheekSquintRight
CheekSquintLeft + ], + [ + Reference Image, + 'LipSuckUpper', + Tucks in the upper lips., + <>LipSuckUpperRight
LipSuckUpperLeft + ], + [ + Reference Image, + 'LipSuckLower', + Tucks in the lower lips., + <>LipSuckLowerRight
LipSuckLowerLeft + ], + [ + Reference Image, + 'LipSuck', + Tucks in the upper and lower lips., + <>LipSuckUpperRight
LipSuckUpperLeft
LipSuckLowerRight
LipSuckLowerLeft + ], + [ + Reference Image, + 'LipFunnelUpper', + Funnels in the upper lips., + <>LipFunnelUpperRight
LipFunnelUpperLeft + ], + [ + Reference Image, + 'LipFunnelLower', + Funnels in the lower lips., + <>LipFunnelLowerRight
LipFunnelLowerLeft + ], + [ + Reference Image, + 'LipFunnel', + Funnels in the upper and lower lips., + <>LipFunnelUpperRight
LipFunnelUpperLeft
LipFunnelLowerRight
LipFunnelLowerLeft + ], + [ + Reference Image, + 'LipPuckerUpper', + Upper lip part pushes outward., + <>LipPuckerUpperRight
LipPuckerUpperLeft + ], + [ + Reference Image, + 'LipPuckerLower', + Lower lip part pushes outward., + <>LipPuckerLowerRight
LipPuckerLowerLeft + ], + [ + Reference Image, + 'LipPucker', + Lips push outward., + <>LipPuckerUpperRight
LipPuckerUpperLeft
LipPuckerLowerRight
LipPuckerLowerLeft + ], + [ + Reference Image, + 'MouthUpperUp', + Raises the upper lips., + <>MouthUpperUpRight
MouthUpperUpLeft + ], + [ + Reference Image, + 'MouthLowerDown', + Lowers the lower lips., + <>MouthLowerDownRight
MouthLowerDownLeft + ], + [ + Reference Image, + 'MouthOpen', + 'Mouth opens, revealing teeth.', + <>MouthUpperUpRight
MouthUpperUpLeft
MouthLowerDownRight
MouthLowerDownLeft + ], + [ + Reference Image, + 'MouthRight', + 'Moves mouth right.', + <>MouthUpperRight
MouthLowerRight + ], + [ + Reference Image, + 'MouthLeft', + Moves mouth left., + <>MouthUpperLeft
MouthLowerLeft + ], + [ + Reference Image, + 'MouthSmileRight', + 'Right side mouth expresses a smile.', + <>MouthCornerPullRight
MouthCornerSlantRight + ], + [ + Reference Image, + 'MouthSmileLeft', + 'Left side mouth expresses a smile.', + <>MouthCornerPullLeft
MouthCornerSlantLeft + ], + [ + Reference Image, + 'MouthSmile', + 'Mouth expresses a smile.', + <>MouthCornerPullRight
MouthCornerPullLeft
MouthCornerSlantRight
MouthCornerSlantLeft + ], + [ + Reference Image, + 'MouthSadRight', + 'Left side mouth expresses sadness.', + <>MouthFrownRight
MouthStretchRight + ], + [ + Reference Image, + 'MouthSadLeft', + 'Right side mouth expresses sadness.', + <>MouthFrownLeft
MouthStretchLeft + ], + [ + Reference Image, + 'MouthSad', + 'Mouth expresses sadness.', + <>MouthFrownRight
MouthFrownLeft
MouthStretchRight
MouthStretchLeft + ], + [ + Reference Image, + 'MouthStretch', + Mouth stretches., + <>MouthStretchRight
MouthStretchLeft + ], + [ + Reference Image, + 'MouthDimple', + Lip corner dimples, + <>MouthDimpleRight
MouthDimpleLeft + ], + [ + Reference Image, + 'MouthTightener', + Mouth tightens., + <>MouthTightenerRight
MouthTightenerLeft + ], + [ + Reference Image, + 'MouthPress', + Mouth presses together., + <>MouthPressRight
MouthPressLeft + ] + ]} +/> import OneExplain from './unified-explanations/super-scripts/_1_explain.mdx' import TwoExplain from './unified-explanations/super-scripts/_2_explain.mdx' diff --git a/docs/tutorial-avatars/tutorial-avatars-extras/_unified-shape-table.mdx b/docs/tutorial-avatars/tutorial-avatars-extras/_unified-shape-table.mdx index c4f7605c..58800024 100644 --- a/docs/tutorial-avatars/tutorial-avatars-extras/_unified-shape-table.mdx +++ b/docs/tutorial-avatars/tutorial-avatars-extras/_unified-shape-table.mdx @@ -1,5 +1,6 @@ -import ContextModal from '@site/src/components/ContextModal.tsx' -import '@site/src/css/unified-tables.css' +import ContextModal from '@site/src/components/ContextModal.tsx'; +import FilterTable from '@site/src/components/FilterTable.tsx'; +import '@site/src/css/unified-tables.css'; @@ -9,7 +10,7 @@ import '@site/src/css/unified-tables.css' - + @@ -17,720 +18,526 @@ import '@site/src/css/unified-tables.css'
Reference ImageReference Image
Basis
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Eye Gaze
ReferenceNameFunction
Reference ImageEyeLookOutRightRight eye looks out.
Reference ImageEyeLookInRightRight eye looks in.
Reference ImageEyeLookUpRightRight eye looks up.
Reference ImageEyeLookDownRightRight eye looks down.
Reference ImageEyeLookOutLeftLeft eye looks out.
Reference ImageEyeLookInLeftLeft eye looks in.
Reference ImageEyeLookUpLeftLeft eye looks up.
Reference ImageEyeLookDownLeftLeft eye looks down.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Eye Expressions
ReferenceNameFunction
Reference ImageEyeClosedRightCloses the right eyelid.
Reference ImageEyeClosedLeftCloses the left eyelid.
Reference ImageEyeSquintRightSqueezes the right eye socket muscles.
Reference ImageEyeSquintLeftSqueezes the left eye socket muscles.
Reference ImageEyeWideRightRight eyelid widens beyond relaxed.
Reference ImageEyeWideLeftLeft eyelid widens beyond relaxed.
Reference ImageEyeDilationRightDilates the right eye pupil
Reference ImageEyeDilationLeftDilates the left eye pupil
Reference ImageEyeConstrictRightConstricts the right eye pupil
Reference ImageEyeConstrictLeftConstricts the left eye pupil
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {/* - - - - */} - - - - - - - - - - - - - - - - - - - - - -
Brows
ReferenceNameFunction
Reference ImageBrowPinchRightRight eyebrow pinches in.
Reference ImageBrowPinchLeftLeft eyebrow pinches in.
Reference ImageBrowLowererRightOuter right eyebrow pulls down.
Reference ImageBrowLowererLeftOuter Left eyebrow pulls down.
Reference ImageBrowInnerUpRightInner right eyebrow pulls up.
Reference ImageBrowInnerUpLeftInner left eyebrow pulls up.
Reference ImageBrowOuterUpRightOuter right eyebrow pulls up.
Reference ImageBrowOuterUpLeftOuter left eyebrow pulls up.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Nose
ReferenceNameFunction
Reference ImageNoseSneerRightRight side face sneers.
Reference ImageNoseSneerLeftLeft side face sneers.
Reference ImageNasalDilationRight1Right side nose canal dilates.
Reference ImageNasalDilationLeft1Left side nose canal dilates.
Reference ImageNasalConstrictRight1Right side nose canal constricts.
Reference ImageNasalConstrictLeft1Left side nose canal constricts.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Cheeks
ReferenceNameFunction
Reference ImageCheekSquintRightRaises the right side cheek.
Reference ImageCheekSquintLeftRaises the left side cheek.
Reference ImageCheekPuffRightPuffs the right side cheek.
Reference ImageCheekPuffLeftPuffs the left side cheek.
Reference ImageCheekSuckRightSucks in the right side cheek.
Reference ImageCheekSuckLeftSucks in the left side cheek.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Jaw
ReferenceNameFunction
Reference ImageJawOpenOpens jawbone.
Reference ImageMouthClosedCloses mouth (in relation to JawOpen).
Reference ImageJawRightPushes jawbone right.
Reference ImageJawLeftPushes jawbone left.
Reference ImageJawForwardPushes jawbone forwards.
Reference ImageJawBackward1Pulls jawbone backwards.
Reference ImageJawClench1Flexes jaw muscles.
Reference ImageJawMandibleRaise1Raises jawbone.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {/* - - - - */} - - - - - - - - - - - - - - - - - - - - - -
Lips
ReferenceNameFunction
Reference ImageLipSuckUpperRightUpper right lip part tucks in the mouth.
Reference ImageLipSuckUpperLeftUpper left lip part tucks in the mouth.
Reference ImageLipSuckLowerRightLower right lip part tucks in the mouth.
Reference ImageLipSuckLowerLeftLower left lip part tucks in the mouth.
Reference ImageLipSuckCornerRight1Right lip corner folds into the mouth.
Reference ImageLipSuckCornerLeft1Left lip corner folds into the mouth.
Reference ImageLipFunnelUpperRightUpper right lip part pushes into a funnel.
Reference ImageLipFunnelUpperLeftUpper left lip part pushes into a funnel.
Reference ImageLipFunnelLowerRightLower right lip part pushes into a funnel.
Reference ImageLipFunnelLowerLeftLower left lip part pushes into a funnel.
Reference ImageLipPuckerUpperRightUpper right lip part pushes outward.
Reference ImageLipPuckerUpperLeftUpper left lip part pushes outward.
Reference ImageLipPuckerLowerRightLower right lip part pushes outward.
Reference ImageLipPuckerLowerLeftLower left lip part pushes outward.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {/* - - - - */} - - - - - - - - - - - {/* - - - - */} - - - - - - - - - - - - - - - - - - - - - {/* - - - - */} - - - - - - - - - - - - - - - - - - - - - {/* - - - - */} - - - - - - - - - - - - - - - - - - - - - {/* - - - - */} - - - - - - - - - - - - - - - - - - - - - {/* - - - - */} - - - - - - - - - - - - - - - - - - - - - -
Mouth
ReferenceNameFunction
Reference ImageMouthUpperUpRightUpper right part of the lip pulls up.
Reference ImageMouthUpperUpLeftUpper left part of the lip pulls up.
Reference ImageMouthLowerDownRightLower right part of the lip pulls up.
Reference ImageMouthLowerDownLeftLower right part of the lip pulls up.
Reference ImageMouthUpperDeepenRightUpper right lip part pushes in the cheek.
Reference ImageMouthUpperDeepenLeftUpper left lip part pushes in the cheek.
Reference ImageMouthUpperRightMoves upper lip right.
Reference ImageMouthUpperLeftMoves upper lip left.
Reference ImageMouthLowerRightMoves lower lip right.
Reference ImageMouthLowerLeftMoves lower lip left.
Reference ImageMouthCornerPullRightRight lip corner pulls diagonally up and out.
Reference ImageMouthCornerPullLeftLeft lip corner pulls diagonally up and out.
Reference ImageMouthCornerSlantRightRight corner lip slants up.
Reference ImageMouthCornerSlantLeftLeft corner lip slants up.
Reference ImageMouthFrownRightRight corner lip pulls down.
Reference ImageMouthFrownLeftLeft corner lip pulls down.
Reference ImageMouthStretchRightRight corner lip pulls out and down.
Reference ImageMouthStretchLeftLeft corner lip pulls out and down.
Reference ImageMouthDimpleRightRight lip corner is pushed backwards.
Reference ImageMouthDimpleLeftLeft lip corner is pulled backwards.
Reference ImageMouthRaiserUpperRaises and slightly pushes out the upper mouth.
Reference ImageMouthRaiserLowerRaises and slightly pushes out the lower mouth.
Reference ImageMouthPressRightRight side lips press and flatten together vertically.
Reference ImageMouthPressLeftLeft side lips press and flatten together vertically.
Reference ImageMouthTightenerRightRight side lips squeeze together horizontally.
Reference ImageMouthTightenerLeftLeft side lips squeeze together horizontally.
- - - - - - - - - - - - - - - - - - - {/* - - - - */} - - - - - - - - - - - - - - - - - - - - - {/* - - - - */} - - - - - - - - - - - - - - - - - - - - - - - - - - {/* - - - - */} - - - - - - - - - - - -
Tongue
ReferenceNameFunction
Reference ImageTongueOutTongue visibly sticks out of the mouth.
Reference ImageTongueUpTongue points up.
Reference ImageTongueDownTongue points down.
Reference ImageTongueRightTongue points right.
Reference ImageTongueLeftTongue points left.
Reference ImageTongueRollSides of the tongue funnel, creating a 'hotdog' shape.
Reference ImageTongueBendDown1Tongue arches up then down inside the mouth.
Reference ImageTongueCurlUp1Tongue arches down then up inside the mouth.
Reference ImageTongueSquish1Tongue squishes together and thickens.
Reference ImageTongueFlat1Tongue flattens and thins out.
Reference ImageTongueTwistRight1Tongue tip rotates clockwise, with the rest following gradually.
Reference ImageTongueTwistLeft1Tongue tip rotates counter-clockwise, with the rest following gradually.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Neck
ReferenceNameFunction
Reference ImageSoftPalateClose1Inner mouth throat closes.
Reference ImageThroatSwallow1The Adam's apple visibly swallows.
Reference ImageNeckFlexRight1Right side neck visibly flexes.
Reference ImageNeckFlexLeft1Left side neck visibly flexes.
+, + 'EyeLookOutRight', + Right eye looks out. + ], + [ + Reference Image, + 'EyeLookInRight', + Right eye looks in. + ], + [ + Reference Image, + 'EyeLookUpRight', + Right eye looks up. + ], + [ + Reference Image, + 'EyeLookDownRight', + Right eye looks down. + ], + [ + Reference Image, + 'EyeLookOutLeft', + Left eye looks out. + ], + [ + Reference Image, + 'EyeLookInLeft', + Left eye looks in. + ], + [ + Reference Image, + 'EyeLookUpLeft', + Left eye looks up. + ], + [ + Reference Image, + 'EyeLookDownLeft', + Left eye looks down. + ], + [ + Reference Image, + 'EyeClosedRight', + Closes the right eyelid. + ], + [ + Reference Image, + 'EyeClosedLeft', + Closes the left eyelid. + ], + [ + Reference Image, + 'EyeSquintRight', + Squeezes the right eye socket muscles. + ], + [ + Reference Image, + 'EyeSquintLeft', + Squeezes the left eye socket muscles. + ], + [ + Reference Image, + 'EyeWideRight', + Right eyelid widens beyond relaxed. + ], + [ + Reference Image, + 'EyeWideLeft', + Left eyelid widens beyond relaxed. + ], + [ + Reference Image, + 'EyeDilationRight', + Dilates the right eye pupil + ], + [ + Reference Image, + 'EyeDilationLeft', + Dilates the left eye pupil + ], + [ + Reference Image, + 'EyeConstrictRight', + Constricts the right eye pupil + ], + [ + Reference Image, + 'EyeConstrictLeft', + Constricts the left eye pupil + ], + [ + Reference Image, + 'BrowPinchRight', + Right eyebrow pinches in. + ], + [ + Reference Image, + 'BrowPinchLeft', + Left eyebrow pinches in. + ], + [ + Reference Image, + 'BrowLowererRight', + Outer right eyebrow pulls down. + ], + [ + Reference Image, + 'BrowLowererLeft', + Outer Left eyebrow pulls down. + ], + [ + Reference Image, + 'BrowInnerUpRight', + Inner right eyebrow pulls up. + ], + [ + Reference Image, + 'BrowInnerUpLeft', + Inner left eyebrow pulls up. + ], + [ + Reference Image, + 'BrowOuterUpRight', + Outer right eyebrow pulls up. + ], + [ + Reference Image, + 'BrowOuterUpLeft', + Outer left eyebrow pulls up. + ], + [ + Reference Image, + 'NoseSneerRight', + Right side face sneers. + ], + [ + Reference Image, + 'NoseSneerLeft', + Left side face sneers. + ], + [ + Reference Image, + 'NasalDilationRight', + Right side nose canal dilates. + ], + [ + Reference Image, + 'NasalDilationLeft', + Left side nose canal dilates. + ], + [ + Reference Image, + 'NasalConstrictRight', + Right side nose canal constricts. + ], + [ + Reference Image, + 'NasalConstrictLeft', + Left side nose canal constricts. + ], + [ + Reference Image, + 'CheekSquintRight', + Raises the right side cheek. + ], + [ + Reference Image, + 'CheekSquintLeft', + Raises the left side cheek. + ], + [ + Reference Image, + 'CheekPuffRight', + Puffs the right side cheek. + ], + [ + Reference Image, + 'CheekPuffLeft', + Puffs the left side cheek. + ], + [ + Reference Image, + 'CheekSuckRight', + Sucks in the right side cheek. + ], + [ + Reference Image, + 'CheekSuckLeft', + Sucks in the left side cheek. + ], + [ + Reference Image, + 'JawOpen', + Opens jawbone. + ], + [ + Reference Image, + 'MouthClosed', + Closes mouth (in relation to JawOpen). + ], + [ + Reference Image, + 'JawRight', + Pushes jawbone right. + ], + [ + Reference Image, + 'JawLeft', + Pushes jawbone left. + ], + [ + Reference Image, + 'JawForward', + Pushes jawbone forwards. + ], + [ + Reference Image, + 'JawBackward', + Pulls jawbone backwards. + ], + [ + Reference Image, + 'JawClench', + Flexes jaw muscles. + ], + [ + Reference Image, + 'JawMandibleRaise', + Raises jawbone. + ], + [ + Reference Image, + 'LipSuckUpperRight', + Upper right lip part tucks in the mouth. + ], + [ + Reference Image, + 'LipSuckUpperLeft', + Upper left lip part tucks in the mouth. + ], + [ + Reference Image, + 'LipSuckLowerRight', + Lower right lip part tucks in the mouth. + ], + [ + Reference Image, + 'LipSuckLowerLeft', + Lower left lip part tucks in the mouth. + ], + [ + Reference Image, + 'LipSuckCornerRight', + Right lip corner folds into the mouth. + ], + [ + Reference Image, + 'LipSuckCornerLeft', + Left lip corner folds into the mouth. + ], + [ + Reference Image, + 'LipFunnelUpperRight', + Upper right lip part pushes into a funnel. + ], + [ + Reference Image, + 'LipFunnelUpperLeft', + Upper left lip part pushes into a funnel. + ], + [ + Reference Image, + 'LipFunnelLowerRight', + Lower right lip part pushes into a funnel. + ], + [ + Reference Image, + 'LipFunnelLowerLeft', + Lower left lip part pushes into a funnel. + ], + [ + Reference Image, + 'LipPuckerUpperRight', + Upper right lip part pushes outward. + ], + [ + Reference Image, + 'LipPuckerUpperLeft', + Upper left lip part pushes outward. + ], + [ + Reference Image, + 'LipPuckerLowerRight', + Lower right lip part pushes outward. + ], + [ + Reference Image, + 'LipPuckerLowerLeft', + Lower left lip part pushes outward. + ], + [ + Reference Image, + 'MouthUpperUpRight', + Upper right part of the lip pulls up. + ], + [ + Reference Image, + 'MouthUpperUpLeft', + Upper left part of the lip pulls up. + ], + [ + Reference Image, + 'MouthLowerDownRight', + Lower right part of the lip pulls up. + ], + [ + Reference Image, + 'MouthLowerDownLeft', + Lower left part of the lip pulls up. + ], + [ + Reference Image, + 'MouthUpperDeepenRight', + Upper right lip part pushes in the cheek. + ], + [ + Reference Image, + 'MouthUpperDeepenLeft', + Upper left lip part pushes in the cheek. + ], + [ + Reference Image, + 'MouthUpperRight', + Moves upper lip right. + ], + [ + Reference Image, + 'MouthUpperLeft', + Moves upper lip left. + ], + [ + Reference Image, + 'MouthLowerRight', + Moves lower lip right. + ], + [ + Reference Image, + 'MouthLowerLeft', + Moves lower lip left. + ], + [ + Reference Image, + 'MouthCornerPullRight', + Right lip corner pulls diagonally up and out. + ], + [ + Reference Image, + 'MouthCornerPullLeft', + Left lip corner pulls diagonally up and out. + ], + [ + Reference Image, + 'MouthCornerSlantRight', + Right corner lip slants up. + ], + [ + Reference Image, + 'MouthCornerSlantLeft', + Left corner lip slants up. + ], + [ + Reference Image, + 'MouthFrownRight', + Right corner lip pulls down. + ], + [ + Reference Image, + 'MouthFrownLeft', + Left corner lip pulls down. + ], + [ + Reference Image, + 'MouthStretchRight', + Right corner lip pulls out and down. + ], + [ + Reference Image, + 'MouthStretchLeft', + Left corner lip pulls out and down. + ], + [ + Reference Image, + 'MouthDimpleRight', + Right lip corner is pushed backwards. + ], + [ + Reference Image, + 'MouthDimpleLeft', + Left lip corner is pulled backwards. + ], + [ + Reference Image, + 'MouthRaiserUpper', + Raises and slightly pushes out the upper mouth. + ], + [ + Reference Image, + 'MouthRaiserLower', + Raises and slightly pushes out the lower mouth. + ], + [ + Reference Image, + 'MouthPressRight', + Right side lips press and flatten together vertically. + ], + [ + Reference Image, + 'MouthPressLeft', + Left side lips press and flatten together vertically. + ], + [ + Reference Image, + 'MouthTightenerRight', + Right side lips squeeze together horizontally. + ], + [ + Reference Image, + 'MouthTightenerLeft', + Left side lips squeeze together horizontally. + ], + [ + Reference Image, + 'TongueOut', + Tongue visibly sticks out of the mouth. + ], + [ + Reference Image, + 'TongueUp', + Tongue points up. + ], + [ + Reference Image, + 'TongueDown', + Tongue points down. + ], + [ + Reference Image, + 'TongueRight', + Tongue points right. + ], + [ + Reference Image, + 'TongueLeft', + Tongue points left. + ], + [ + Reference Image, + 'TongueRoll', + Sides of the tongue funnel, creating a 'hotdog' shape. + ], + [ + Reference Image, + 'TongueBendDown', + Tongue arches up then down inside the mouth. + ], + [ + Reference Image, + 'TongueCurlUp', + Tongue arches down then up inside the mouth. + ], + [ + Reference Image, + 'TongueSquish', + Tongue squishes together and thickens. + ], + [ + Reference Image, + 'TongueFlat', + Tongue flattens and thins out. + ], + [ + Reference Image, + 'TongueTwistRight', + Tongue tip rotates clockwise, with the rest following gradually. + ], + [ + Reference Image, + 'TongueTwistLeft', + Tongue tip rotates counter-clockwise, with the rest following gradually. + ], + [ + Reference Image, + 'SoftPalateClose¹', + Inner mouth throat closes. + ], + [ + Reference Image, + 'ThroatSwallow¹', + The Adam's apple visibly swallows. + ], + [ + Reference Image, + 'NeckFlexRight¹', + Right side neck visibly flexes. + ], + [ + Reference Image, + 'NeckFlexLeft¹', + Left side neck visibly flexes. + ], + ]} +/> import OneExplain from './unified-explanations/super-scripts/_1_explain.mdx' import TwoExplain from './unified-explanations/super-scripts/_2_explain.mdx' diff --git a/docs/tutorial-avatars/tutorial-avatars-extras/compatibility/_category_.json b/docs/tutorial-avatars/tutorial-avatars-extras/compatibility/_category_.json new file mode 100644 index 00000000..fb243e09 --- /dev/null +++ b/docs/tutorial-avatars/tutorial-avatars-extras/compatibility/_category_.json @@ -0,0 +1,8 @@ +{ + "label": "Compatibility", + "position": 2, + "link": { + "type": "generated-index", + "description": "Information pertaining to Unified Expressions compatibility." + } +} diff --git a/docs/tutorial-avatars/tutorial-avatars-extras/compatibility/arkit.mdx b/docs/tutorial-avatars/tutorial-avatars-extras/compatibility/arkit.mdx new file mode 100644 index 00000000..8faf71d4 --- /dev/null +++ b/docs/tutorial-avatars/tutorial-avatars-extras/compatibility/arkit.mdx @@ -0,0 +1,106 @@ +--- +sidebar_position: 2 +description: Information about ARKit face tracking works with Unified Expressions. +--- + +import {EditUrl, CustomLink} from '@site/src/components/Utils.tsx' +import FilterTable from '@site/src/components/FilterTable.tsx'; + +# Apple ARKit + +*** + +Apple provides a face tracking standard for iOS devices within their ARKit SDK and software, +where the associated blendshapes are often referred to as PerfectSync, AR52, and ARKit respectively. + +The following table shows how ARKit face tracking translates to Unified Expressions + +### ARKit Comparison + +BrowDownRight, 'browDownRight'], + [BrowDownLeft, 'browDownLeft'], + [BrowInnerUp, 'browInnerUp'], + ['BrowOuterUpRight', 'browOuterUpRight'], + ['BrowOuterUpLeft', 'browOuterUpLeft'], + ['NoseSneerRight', 'noseSneerRight'], + ['NoseSneerLeft', 'noseSneerLeft'], + ['CheekSquintRight', 'cheekSquintRight'], + ['CheekSquintLeft', 'cheekSquintLeft'], + [CheekPuff, 'cheekPuff'], + ['JawOpen', 'jawOpen'], + ['MouthClosed', 'mouthClose'], + ['JawRight', 'jawRight'], + ['JawLeft', 'jawLeft'], + ['JawForward', 'jawForward'], + [LipSuckUpper, 'mouthRollUpper'], + [LipSuckLower, 'mouthRollLower'], + [LipFunnel, 'mouthFunnel'], + [LipPucker, 'mouthPucker'], + ['MouthUpperUpRight', 'mouthUpperUpRight'], + ['MouthUpperUpLeft', 'mouthUpperUpLeft'], + ['MouthLowerDownRight', 'mouthLowerUpRight'], + ['MouthLowerDownLeft', 'mouthLowerUpLeft'], + [MouthSmileRight, 'mouthSmileRight'], + [MouthSmileLeft, 'mouthSmileLeft'], + ['MouthFrownRight', 'mouthFrownRight'], + ['MouthFrownLeft', 'mouthFrownLeft'], + ['MouthStretchRight', 'mouthStretchRight'], + ['MouthStretchLeft', 'mouthStretchLeft'], + ['MouthDimplerRight', 'mouthDimpleRight'], + ['MouthDimplerLeft', 'mouthDimpleLeft'], + ['MouthRaiserUpper', 'mouthShrugUpper'], + ['MouthRaiserLower', 'mouthShrugLower'], + ['MouthPressRight', 'mouthPressRight'], + ['MouthPressLeft', 'mouthPressLeft'], + ['TongueOut', 'tongueOut'] + ]} +/> + +* Bold Blended Shape. + +:::caution Some shapes are not tracked + +ARKit does not include expressions to track the following Unified Expressions: + +``` +EyeDilationRight +EyeDilationLeft +EyeConstrictRight +EyeConstrictLeft + +CheekSuckRight +CheekSuckLeft + +MouthTightenerRight +MouthTightenerLeft + +Tongue Directions +Misc. Tongue Expressions +``` + +However, the absence of these shapes does not affect tracking quality. +::: + +### Standard Documentation + +Apple Developer Documentation
+ARKit Shape References (Unofficial) \ No newline at end of file diff --git a/docs/tutorial-avatars/tutorial-avatars-extras/compatibility/meta-movement.mdx b/docs/tutorial-avatars/tutorial-avatars-extras/compatibility/meta-movement.mdx new file mode 100644 index 00000000..8e04175c --- /dev/null +++ b/docs/tutorial-avatars/tutorial-avatars-extras/compatibility/meta-movement.mdx @@ -0,0 +1,112 @@ +--- +sidebar_position: 2 +description: Information about Meta Movement (Quest Pro) face tracking works with Unified Expressions. +--- + +import {EditUrl, CustomLink} from '@site/src/components/Utils.tsx' +import FilterTable from '@site/src/components/FilterTable.tsx'; + +# Meta Movement (Quest Pro) + +*** + +Meta provides a face tracking standard for Quest Pro within their Movement SDK, +where the blendshapes are often referred to as FACS, Quest Pro Face Tracking, +and Movement respectively. + +The following table shows how Movement face tracking translates to Unified Expressions. + +### Movement Comparison + +BrowDownRight, 'BROW_LOWERER_R'], + [BrowDownLeft, 'BROW_LOWERER_L'], + ['BrowInnerUpRight', 'INNER_BROW_RAISER_R'], + ['BrowInnerUpLeft', 'INNER_BROW_RAISER_L'], + ['BrowOuterUpRight', 'OUTER_BROW_RAISER_R'], + ['BrowOuterUpLeft', 'OUTER_BROW_RAISER_L'], + ['NoseSneerRight', 'NOSE_WRINKLER_R'], + ['NoseSneerLeft', 'NOSE_WRINKLER_L'], + ['CheekSquintRight', 'CHEEK_RAISER_R'], + ['CheekSquintLeft', 'CHEEK_RAISER_L'], + ['CheekPuffRight', 'CHEEK_PUFF_R'], + ['CheekPuffLeft', 'CHEEK_PUFF_L'], + ['CheekSuckRight', 'CHEEK_SUCK_R'], + ['CheekSuckLeft', 'CHEEK_SUCK_L'], + ['JawOpen', 'JAW_DROP'], + ['MouthClosed', 'LIPS_TOWARD'], + ['JawRight', 'JAW_SIDEWAYS_RIGHT'], + ['JawLeft', 'JAW_SIDEWAYS_LEFT'], + ['JawForward', 'JAW_THRUST'], + ['LipSuckUpperRight', 'LIP_SUCK_RT'], + ['LipSuckUpperLeft', 'LIP_SUCK_LT'], + ['LipSuckLowerRight', 'LIP_SUCK_RB'], + ['LipSuckLowerLeft', 'LIP_SUCK_LB'], + ['LipFunnelUpperRight', 'LIP_FUNNELER_RT'], + ['LipFunnelUpperLeft', 'LIP_FUNNELER_LT'], + ['LipFunnelLowerRight', 'LIP_FUNNELER_RB'], + ['LipFunnelLowerLeft', 'LIP_FUNNELER_LB'], + [<>LipPuckerUpperRight
LipPuckerLowerRight, 'LIP_PUCKER_R'], + [<>LipPuckerUpperLeft
LipPuckerLowerLeft, 'LIP_PUCKER_L'], + ['MouthUpperUpRight', 'UPPER_LIP_RAISER_R'], + ['MouthUpperUpLeft', 'UPPER_LIP_RAISER_L'], + ['MouthLowerDownRight', 'LOWER_LIP_DEPRESSOR_R'], + ['MouthLowerDownLeft', 'LOWER_LIP_DEPRESSER_L'], + [MouthSmileRight, 'LIP_CORNER_PULLER_R'], + [MouthSmileLeft, 'LIP_CORNER_PULLER_L'], + ['MouthFrownRight', 'LIP_CORNER_DEPRESSOR_R'], + ['MouthFrownLeft', 'LIP_CORNER_DEPRESSOR_L'], + ['MouthStretchRight', 'LIP_STRETCHER_R'], + ['MouthStretchLeft', 'LIP_STRETCHER_L'], + ['MouthDimplerRight', 'DIMPLER_R'], + ['MouthDimplerLeft', 'DIMPLER_L'], + ['MouthRaiserUpper', 'CHIN_RAISER_T'], + ['MouthRaiserUpper', 'CHIN_RAISER_T'], + ['MouthPressRight', 'LIP_PRESSOR_R'], + ['MouthPressLeft', 'LIP_PRESSOR_L'], + ['MouthTightenerRight', 'LIP_TIGHTENER_R'], + ['MouthTightenerLeft', 'LIP_TIGHTENER_L'], + ]} +/> + +* Bold Blended Shape. + +:::caution Some shapes are not tracked + +Movement does not include expressions to track the following Unified Expressions: + +``` +EyeDilationRight +EyeDilationLeft +EyeConstrictRight +EyeConstrictLeft + +TongueOut +Tongue Directions +Misc. Tongue Expressions +``` + +However, the absence of these shapes does not affect tracking quality. +::: + +### Standard Documentation + +Blendshape Visual Reference for Movement \ No newline at end of file diff --git a/docs/tutorial-avatars/tutorial-avatars-extras/compatibility/overview.mdx b/docs/tutorial-avatars/tutorial-avatars-extras/compatibility/overview.mdx new file mode 100644 index 00000000..a1519d48 --- /dev/null +++ b/docs/tutorial-avatars/tutorial-avatars-extras/compatibility/overview.mdx @@ -0,0 +1,191 @@ +--- +sidebar_position: 1 +description: Overview of what face tracking standards can express in Unified Expressions. +--- + +import {EditUrl, CustomLink} from '@site/src/components/Utils.tsx' +import FilterTable from '@site/src/components/FilterTable.tsx'; + +# Tracking Standard Comparison Overview + +*** + +:::note How to read this section + +This page goes over specific translations for each standard into +Unified Expressions. For more concrete examples of each standard listed, +please refer to the appropriate standards' documentation. + +Base and Blended shapes from Unified Expressions will be matched directly with +other standards' shapes. Some caveats such as unique shapes will be +given more detailed explanations on how they can translate to Unified Expressions. + +::: + +:::info Table Explained + +This table provides a comprehensive understanding of the +relationship between various shapes and Unified Expressions: + +When multiple shapes are listed in the same row, they +collaboratively contribute to the formation of a specific +standard shape. + +`~` indicates that the expression in a row is directly connected +elsewhere. + +`❌` indicates that the expression in a row is not tracked. + +Some shapes have an extra condition (`While X`, `Negates X`) +that indicates that specified cell needs the presence or absence +of specific shapes to convey a specific expression accurately in +order to correlate it to the other expressions in that row. +This often necessitates particular adjustments (animation +or blendshape) for compatibility with Unified Expressions, +while maintaining anatomical consistency within the given row. + +* `While` signifies that a standard requires a shape +to be active to match the row. +* `Negates` signifies that a standard requires a shape +to be inactive to match the row. + +Regardless of the conditions, the shape can be converted into +Unified Expressions without compromising tracking quality or +expression behavior. + +This section only provides a generalized comparison across +all standards; for more specific information refer to the +dedicated sections for each standard. + +::: + +### Standard Comparisons + +BrowDownRight
CheekSquintRight
EyeSquintRight
While EyeClosedRight, '~', 'Eye_Right_squeeze¹', '~'], + [<>BrowDownLeft
CheekSquintLeft
EyeSquintLeft
While EyeClosedLeft, '~', 'Eye_Left_squeeze¹', '~'], + ['EyeWideRight', 'eyeWideRight', 'Eye_Right_Wide', 'EYES_WIDEN_R'], + ['EyeWideLeft', 'eyeWideLeft', 'Eye_Left_Wide', 'EYES_WIDEN_L'], + ['EyeDilationRight', '❌', 'Eye_Right_Dilation', '❌'], + ['EyeDilationLeft', '❌', 'Eye_Left_Dilation', '❌'], + ['EyeConstrictRight', '❌', 'Eye_Right_Constrict', '❌'], + ['EyeConstrictLeft', '❌', 'Eye_Left_Constrict', '❌'], + [BrowDownRight, 'browDownRight', '❌', 'BROW_LOWERER_R'], + [BrowDownLeft, 'browDownLeft', '❌', 'BROW_LOWERER_L'], + ['BrowInnerUpRight', '~', '❌', 'INNER_BROW_RAISER_R'], + ['BrowInnerUpLeft', '~', '❌', 'INNER_BROW_RAISER_L'], + [BrowInnerUp, 'browInnerUp', '❌', '~'], + ['BrowOuterUpRight', 'browOuterUpRight', '❌', 'OUTER_BROW_RAISER_R'], + ['BrowOuterUpLeft', 'browOuterUpLeft', '❌', 'OUTER_BROW_RAISER_L'], + ['NoseSneerRight', 'noseSneerRight', '❌', 'NOSE_WRINKLER_R'], + ['NoseSneerLeft', 'noseSneerLeft', '❌', 'NOSE_WRINKLER_L'], + ['CheekSquintRight', 'cheekSquintRight', '~', 'CHEEK_RAISER_R'], + ['CheekSquintLeft', 'cheekSquintLeft', '~', 'CHEEK_RAISER_L'], + ['CheekPuffRight', '~', 'Cheek_Puff_Right', 'CHEEK_PUFF_R'], + ['CheekPuffLeft', '~', 'Cheek_Puff_Left', 'CHEEK_PUFF_L'], + [CheekPuff, 'cheekPuff', '~', '~'], + ['CheekSuckRight', '❌', '~', 'CHEEK_SUCK_R'], + ['CheekSuckLeft', '❌', '~', 'CHEEK_SUCK_L'], + [CheekSuck, '❌', 'Cheek_Suck', '~'], + ['JawOpen', 'jawOpen', 'Jaw_Open', 'JAW_DROP'], + ['MouthClosed', 'mouthClose', <>Mouth_Ape_Shape¹
Negates Jaw_Open, 'LIPS_TOWARD'], + ['JawRight', 'jawRight', 'Jaw_Right', 'JAW_SIDEWAYS_RIGHT'], + ['JawLeft', 'jawLeft', 'Jaw_Left', 'JAW_SIDEWAYS_LEFT'], + ['JawForward', 'jawForward', 'Jaw_Forward', 'JAW_THRUST'], + ['LipSuckUpperRight', '~', '~', 'LIP_SUCK_RT'], + ['LipSuckUpperLeft', '~', '~', 'LIP_SUCK_LT'], + [LipSuckUpper, 'mouthRollUpper', 'Mouth_Upper_Inside', '~'], + ['LipSuckLowerRight', '~', '~', 'LIP_SUCK_RB'], + ['LipSuckLowerLeft', '~', '~', 'LIP_SUCK_LB'], + [LipSuckLower, 'mouthRollLower', 'Mouth_Lower_Inside', '~'], + ['LipFunnelUpperRight', '~', '~', 'LIP_FUNNELER_RT'], + ['LipFunnelUpperLeft', '~', '~', 'LIP_FUNNELER_LT'], + [LipFunnelUpper, '~', 'Mouth_Upper_Overturn¹', '~'], + ['LipFunnelLowerRight', '~', '~', 'LIP_SUCK_RB'], + ['LipFunnelLowerLeft', '~', '~', 'LIP_SUCK_LB'], + [LipFunnelLower, '~', 'Mouth_Lower_Overturn¹', '~'], + [LipFunnel, 'mouthFunnel', '~', '~'], + [<>LipPuckerUpperRight
LipPuckerLowerRight, '~', '~', 'LIP_PUCKER_R'], + [<>LipPuckerUpperLeft
LipPuckerLowerLeft, '~', '~', 'LIP_PUCKER_L'], + [LipPucker, 'mouthPucker', 'Mouth_Pout', ''], + ['MouthUpperUpRight', 'mouthUpperUpRight', 'Mouth_Upper_Up_Right', 'UPPER_LIP_RAISER_R'], + ['MouthUpperUpLeft', 'mouthUpperUpLeft', 'Mouth_Upper_Up_Left', 'UPPER_LIP_RAISER_L'], + ['MouthLowerDownRight', 'mouthLowerUpRight', 'Mouth_Lower_Down_Right', 'LOWER_LIP_DEPRESSOR_R'], + ['MouthLowerDownLeft', 'mouthLowerUpLeft', 'Mouth_Lower_Down_Left', 'LOWER_LIP_DEPRESSER_L'], + [MouthSmileRight, 'mouthSmileRight', 'Mouth_Smile_Right', 'LIP_CORNER_PULLER_R'], + [MouthSmileLeft, 'mouthSmileLeft', 'Mouth_Smile_Left', 'LIP_CORNER_PULLER_L'], + ['MouthFrownRight', 'mouthFrownRight', '~', 'LIP_CORNER_DEPRESSOR_R'], + ['MouthFrownLeft', 'mouthFrownLeft', '~', 'LIP_CORNER_DEPRESSOR_L'], + [MouthSadRight, '~', 'Mouth_Sad_Right', '~'], + [MouthSadLeft, '~', 'Mouth_Sad_Left', '~'], + ['MouthStretchRight', 'mouthStretchRight', '~', 'LIP_STRETCHER_R'], + ['MouthStretchLeft', 'mouthStretchLeft', '~', 'LIP_STRETCHER_L'], + ['MouthDimplerRight', 'mouthDimpleRight', '~', 'DIMPLER_R'], + ['MouthDimplerLeft', 'mouthDimpleLeft', '~', 'DIMPLER_L'], + ['MouthRaiserUpper', 'mouthShrugUpper', '❌', 'CHIN_RAISER_T'], + ['MouthRaiserLower', 'mouthShrugLower', 'Mouth_Lower_Overlay', 'CHIN_RAISER_B'], + ['MouthPressRight', 'mouthPressRight¹', '❌', 'LIP_PRESSOR_R'], + ['MouthPressLeft', 'mouthPressLeft¹', '❌', 'LIP_PRESSOR_L'], + ['MouthTightenerRight', '❌', '❌', 'LIP_TIGHTENER_R'], + ['MouthTightenerLeft', '❌', '❌', 'LIP_TIGHTENER_L'], + ['TongueOut', 'tongueOut', <>Tongue_LongStep1
Tongue_LongStep2, '❌'], + ['TongueUp', '❌', 'Tongue_Up', '❌'], + ['TongueDown', '❌', 'Tongue_Down', '❌'], + ['TongueRight', '❌', 'Tongue_Right', '❌'], + ['TongueLeft', '❌', 'Tongue_Left', '❌'], + ['TongueRoll', '❌', 'Tongue_Roll', '❌'], + ]} +/> + +* ¹ Requires the use of a specialized animation setup to work with VRCFT V2 tracking. +* Bold Blended Shape. + +### Standard Documentation + +VRCFT Documentation + ], + [ + 'ARKit', + <> + Apple Developer Documentation
+ ARKit Shape References (Unofficial) + + ], + [ + 'VIVE SRanipal', + <> + VIVE Developer Resource
+ VRCFT v4.0 Documentation + + ], + [ + 'Meta Movement', + <> + Blendshape Visual Reference for Movement + + ], + ]} +/> diff --git a/docs/tutorial-avatars/tutorial-avatars-extras/compatibility/vive-sranipal.mdx b/docs/tutorial-avatars/tutorial-avatars-extras/compatibility/vive-sranipal.mdx new file mode 100644 index 00000000..8eb61572 --- /dev/null +++ b/docs/tutorial-avatars/tutorial-avatars-extras/compatibility/vive-sranipal.mdx @@ -0,0 +1,277 @@ +--- +sidebar_position: 2 +description: Information about VIVE SRanipal face tracking works with Unified Expressions. +--- + +import {EditUrl, CustomLink} from '@site/src/components/Utils.tsx' +import FilterTable from '@site/src/components/FilterTable.tsx'; + +# VIVE SRanipal + +*** + + +VIVE offers a facial tracking standard through the SRanipal SDK and software. +This standard serves as the foundational tracking framework for devices such as +the Vive Pro Eye, Vive Facial Tracker, and other VIVE products equipped with +facial tracking functionalities. + +The following table illustrates the mapping of SRanipal facial tracking to Unified Expressions. + +:::info Table Explained + +This table provides a comprehensive understanding of the +relationship between various shapes and Unified Expressions: + +When multiple shapes are listed in the same row, they +collaboratively contribute to the formation of a specific +standard shape. + +Some shapes have an extra condition (`While X`, `Negates X`) +that indicates that specified cell needs the presence or absence +of specific shapes to convey a specific expression accurately in +order to correlate it to the other expressions in that row. +This often necessitates particular adjustments (animation +or blendshape) for compatibility with Unified Expressions, +while maintaining anatomical consistency within the given row. + +* `While` signifies that a standard requires a shape +to be active to match the row. +* `Negates` signifies that a standard requires a shape +to be inactive to match the row. + +Regardless of the conditions, the shape can be converted into +Unified Expressions without compromising tracking quality or +expression behavior. + +For more concise and readable information for specific tracking +standards and how they convert to Unified Expressions, please +refer to [Admonitions](#admonitions). + +::: + +### SRanipal Comparison + +BrowDownRight
CheekSquintRight
EyeSquintRight
, 'Eye_Right_squeeze¹'], + [<>BrowDownLeft
CheekSquintLeft
EyeSquintLeft
, 'Eye_Left_squeeze¹'], + ['EyeWideRight', 'Eye_Right_Wide'], + ['EyeWideLeft', 'Eye_Left_Wide'], + ['EyeDilationRight', 'Eye_Right_Dilation'], + ['EyeDilationLeft', 'Eye_Left_Dilation'], + ['EyeConstrictRight', 'Eye_Right_Constrict'], + ['EyeConstrictLeft', 'Eye_Left_Constrict'], + ['CheekPuffRight', 'Cheek_Puff_Right'], + ['CheekPuffLeft', 'Cheek_Puff_Left'], + [CheekSuck', 'Cheek_Suck'], + ['JawOpen', 'Jaw_Open'], + ['MouthClosed', <>Mouth_Ape_Shape¹
Negates Jaw_Open], + ['JawRight', 'Jaw_Right'], + ['JawLeft', 'Jaw_Left'], + ['JawForward', 'Jaw_Forward'], + [LipSuckUpper, 'Mouth_Upper_Inside'], + [LipSuckLower, 'Mouth_Lower_Inside'], + [LipFunnelUpper, <>Mouth_Upper_Overturn
While Mouth_Upper_Up_Left
While Mouth_Upper_Up_Right
], + [LipFunnelLower, <>Mouth_Lower_Overturn
While Mouth_Lower_Down_Left
While Mouth_Lower_Down_Right
], + [LipPucker, 'Mouth_Pout'], + ['MouthUpperUpRight', 'Mouth_Upper_Up_Right'], + ['MouthUpperUpLeft', 'Mouth_Upper_Up_Left'], + ['MouthLowerDownRight', 'Mouth_Lower_Down_Right'], + ['MouthLowerDownLeft', 'Mouth_Lower_Down_Left'], + [MouthSmileRight, 'Mouth_Smile_Right'], + [MouthSmileLeft, 'Mouth_Smile_Left'], + [MouthSadRight, 'Mouth_Sad_Right'], + [MouthSadLeft, 'Mouth_Sad_Left'], + ['MouthRaiserLower', 'Mouth_Lower_Overlay'], + ['TongueOut', <>Tongue_LongStep1
Tongue_LongStep2], + ['TongueUp', 'Tongue_Up'], + ['TongueDown', 'Tongue_Down'], + ['TongueRight', 'Tongue_Right'], + ['TongueLeft', 'Tongue_Left'], + ['TongueRoll', 'Tongue_Roll'], + ]} +/> + +* ¹ More detailed reasoning is elaborated in [Admonitions](#admonitions) +* Bold Blended Shape. + +### Admonitions {#admonitions} + +Certain expressions in SRanipal may not have direct or intuitive assignments +to Unified Expressions due to the format of the expressions. + +The following section will provide comprehensive explanations on how SRanipal +controls Unified Expressions, and subsequently how Unified can be used to track +SRanipal shapes. This can be useful for making SRanipal shapes compatible in Unified +Expressions driven animation setups (in the case of VRCFT avatars). + +Recognizing these differences in your avatar's setup should allow SRanipal +shapes to track as intended. Certain animation templates have these admonitions +built in, allowing SRanipal shapes to be used directly with Unified Expressions! + +This section provides a thorough description of what each shape should do to +track as intended with Unifed Expressions. + + + From the SRanipal avatar reference, + this SRanipal expression controls these Unified + expressions while the eyelids are closed: +

+ EyeSquintRight
+ CheekSquintRight
+ BrowPinchRight
+ BrowLowererRight +

+ To get the intended tracking, these Unified expressions must be all active together + to trigger Eye_Right_squeeze in animation. Alternatively the listed UE expressions can be + made separately to allow for more robust tracking for non-SRanipal tracking. +

+ ], + [ + 'Eye_Left_squeeze', +

+ From the SRanipal avatar reference, + this SRanipal expression controls these Unified + expressions while the eyelids are closed: +

+ EyeSquintLeft
+ CheekSquintLeft
+ BrowPinchLeft
+ BrowLowererLeft +

+ To get the intended tracking, these Unified expressions must be all active together + to trigger Eye_Left_squeeze in animation. Alternatively the listed UE expressions can be + made separately to allow for more robust tracking for non-SRanipal tracking. +

+ ], + [ + 'Mouth_Ape_Shape', +

+ This SRanipal expression controls Unified's MouthClosed expression. + To get the intended tracking on this SRanipal shape, MouthClosed must negate JawOpen + in the animation proportional to the amount MouthClosed is active. +

+ Alternatively, this blendshape can be turned into MouthClosed by negating JawOpen + in the blendshape itself. +

+ ], + [ + 'Mouth_Upper_Overturn', +

+ This SRanipal expression controls Unified's LipFunnelUpperRight and LipFunnelUpperLeft expressions. + To get the intended tracking on this SRanipal shape, it should also include Mouth_Upper_Up_Right + and Mouth_Upper_Up_Left when this shape is active. +

+ Alternatively, this shape can be turned into LipFunnelUpper by adding Mouth_Upper_Up_Left and + Mouth_Upper_Up_Right to this shape. +

+ ], + [ + 'Mouth_Lower_Overturn', +

+ This SRanipal expression controls Unified's LipFunnelLowerRight and LipFunnelLowerLeft expressions. + To get the intended tracking on this SRanipal shape, it should also include Mouth_Lower_Down_Right + and Mouth_Lower_Down_Left when this shape is active. +

+ Alternatively, this shape can be turned into LipFunnelUpper by adding Mouth_Upper_Up_Left and + Mouth_Upper_Up_Right to this shape. +

+ ], + [ + 'Mouth_Smile_Right', +

+ This SRanipal expression directly controls Unified's MouthCornerPullerRight and + MouthCornerSlantRight, creating the MouthSmileRight Blended shape. On many avatars and + on the SRanipal reference avatar, the right cheek is squinting when smiling. It is perfectly acceptable + to have MouthSmileRight to have this behavior, especially when using SRanipal-compatible tracking + with this avatar. +

+ Optionally, if there is a desire for more expressive tracking then moving the cheek raising part + of Mouth_Smile_Right to it's own dedicated shape will allow CheekSquintRight to be able to control + it directly, allowing for more expressibility. This will require editing the blendshape directly or + creating new shapes to fulfill the change. +

+ ], + [ + 'Mouth_Smile_Left', +

+ This SRanipal expression directly controls Unified's MouthCornerPullerLeft and + MouthCornerSlantLeft, creating the MouthSmileLeft Blended shape. On many avatars and + on the SRanipal reference avatar, the right cheek is squinting when smiling. It is perfectly acceptable + to have MouthSmileLeft to have this behavior, especially when using SRanipal-compatible tracking + with this avatar. +

+ Optionally, if there is a desire for more expressive tracking then moving the cheek raising part + of Mouth_Smile_Left to it's own dedicated shape will allow CheekSquintLeft to be able to control + it directly, allowing for more expressibility. This will require editing the blendshape directly or + creating new shapes to fulfill the change. +

+ ], + [ + <>Tongue_LongStep1
Tongue_LongStep2, +

+ These SRanipal expressions control TongueOut linearly. + To get the intended tracking on this shape, let Tongue_LongStep1 activate + from 0-0.5, while LongStep2 activates from 0.5-1 in the animation. + These are corrective shapes for TongueOut, allowing for the tongue to + stick out of the mouth. +

+ ], + ]} +/> + +:::caution Some shapes are not tracked + +SRanipal does not include expressions to track the following Unified Expressions: + +``` +BrowPinchRight +BrowPinchLeft +BrowLowererRight +BrowLowererLeft +BrowInnerUpRight +BrowInnerUpLeft +BrowOuterUpRight +BrowOuterUpLeft + +CheekSquintRight (baked into Mouth_Smile_Right) +CheekSquintLeft (baked into Mouth_Smile_Left) + +MouthRaiserUpper +MouthPressRight +MouthPressLeft +MouthTightenerLeft +MouthTightenerRight + +Some misc. Tongue Expressions +``` + +However, the absence of these shapes does not affect tracking quality. +::: + +### Standard Documentation + +Vive Developer Resource
+VRCFT v4.0 Documentation + diff --git a/src/components/FilterTable.tsx b/src/components/FilterTable.tsx new file mode 100644 index 00000000..eb6aafd6 --- /dev/null +++ b/src/components/FilterTable.tsx @@ -0,0 +1,117 @@ +import React, { FC, useState } from 'react'; +import '../css/filtertable.css'; + +interface FilterData { + title: string; + omitHeaders: string[]; + disabledHeaders: string[]; + headers: string[]; + rows: any[][]; +} + +const FilterTable = ({ title, omitHeaders, disabledHeaders, headers, rows } : FilterData) => { + const [hiddenColumns, setHiddenColumns] = useState( + disabledHeaders?.map(header => headers.indexOf(header)) || [] + ); + const [filterText, setFilterText] = useState(''); + const [filterRegex, setFilterRegex] = useState(null); + const [hasError, setHasError] = useState(false); + + const toggleColumn = (index) => { + if (hiddenColumns.includes(index)) { + setHiddenColumns(hiddenColumns.filter((i) => i !== index)); + } else { + setHiddenColumns([...hiddenColumns, index]); + } + }; + + const filteredRows = rows.filter(row => + row.some((cell) => { + if (filterRegex) { + try { + return cell?.toString && filterRegex.test(cell.toString()); + } catch (error) { + return false; + } + } else { + return cell?.toString && cell?.toString().includes(filterText); + } + }) + ); + + const handleFilterChange = (value) => { + setFilterText(value); + setHasError(false); + + try { + if (value.trim() !== '') { + setFilterRegex(new RegExp(value, 'i')); + } else { + setFilterRegex(null); + } + } catch (error) { + setHasError(true); + setFilterRegex(null); + } + }; + + return ( +
+ handleFilterChange(e.target.value)} + className={`filter-input ${hasError ? 'invalid' : ''}`} + /> + {headers.map((header, index) => ( + omitHeaders?.includes(header) ? null : ( + + ) + ))} + + + + {headers.map((header, index) => ( + omitHeaders?.includes(header) ? ( + // If header is in omitHeaders, render a disabled header without onClick + + ) : ( + // If header is not in omitHeaders, apply normal header with onClick and toggleColumn + + ) + ))} + + + + {filteredRows.map((row, rowIndex) => ( + + {row.map((cell, cellIndex) => ( + + ))} + + ))} + +
{header} toggleColumn(index)} + className={hiddenColumns.includes(index) ? 'hidden' : ''} + > + {header} +
+ {cell} +
+
+ ); +}; + +export default FilterTable; \ No newline at end of file diff --git a/src/css/custom.css b/src/css/custom.css index 94d21a75..c65de69f 100644 --- a/src/css/custom.css +++ b/src/css/custom.css @@ -4,11 +4,14 @@ * work well for content-centric websites. */ +.hidden { + display: none; +} + .header-github-link:hover { opacity: 0.6; } - .header-github-link::before { content: ''; width: 24px; @@ -44,9 +47,9 @@ /* You can override the default Infima variables here. */ :root { --ifm-color-primary: #f29fa7; - --ifm-color-primary-dark: #b17181; - --ifm-color-primary-darker: #b17181; - --ifm-color-primary-darkest: #b17181; + --ifm-color-primary-dark: #9b9b9b; + --ifm-color-primary-darker: #cccccc; + --ifm-color-primary-darkest: #ececec; --ifm-color-primary-light: #b68f92; --ifm-color-primary-lighter: #b68f92; --ifm-color-primary-lightest: #b68f92; @@ -57,9 +60,9 @@ /* For readability concerns, you should choose a lighter palette in dark mode. */ [data-theme='dark'] { --ifm-color-primary: #90f223; - --ifm-color-primary-dark: #9c9c9c; - --ifm-color-primary-darker: #9c9c9c; - --ifm-color-primary-darkest: #808080; + --ifm-color-primary-dark: #707070; + --ifm-color-primary-darker: #4d4d4d; + --ifm-color-primary-darkest: #2e2e2e; --ifm-color-primary-light: #6db71f; --ifm-color-primary-lighter: #6db81a; --ifm-color-primary-lightest: #90f223; diff --git a/src/css/filtertable.css b/src/css/filtertable.css new file mode 100644 index 00000000..d2c3a111 --- /dev/null +++ b/src/css/filtertable.css @@ -0,0 +1,40 @@ +table { + table-layout: auto; + width: 100%; +} + +th, td { + width: 33.33vh; + text-align: center; +} + +button { + background: var(--ifm-color-primary-darkest); + border: none; + cursor: pointer; + margin-top: 0rem; + margin-bottom: 0.2rem; + margin-right: 0.2rem; + margin-left: 0rem; + padding: 0.5rem; + border-collapse: collapse; +} + +button.disable { + text-decoration: line-through; + color: var(--ifm-color-primary-dark); +} + +.filter-input { + background: var(--ifm-color-primary-darkest); + padding: 0.5rem; + border: none; + margin-top: 0rem; + margin-bottom: 0.2rem; + margin-right: 0.2rem; + margin-left: 0rem; +} + +.invalid { + color: red; +} \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index e90e22a6..4f869f40 100644 --- a/yarn.lock +++ b/yarn.lock @@ -76,7 +76,7 @@ "@algolia/requester-common" "4.17.0" "@algolia/transporter" "4.17.0" -"@algolia/client-search@4.17.0": +"@algolia/client-search@>= 4.9.1 < 6", "@algolia/client-search@4.17.0": version "4.17.0" resolved "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.17.0.tgz" integrity sha512-x4P2wKrrRIXszT8gb7eWsMHNNHAJs0wE7/uqbufm4tZenAp+hwU/hq5KVsY50v+PfwM0LcDwwn/1DroujsTFoA== @@ -150,6 +150,27 @@ resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.0.tgz" integrity sha512-gMuZsmsgxk/ENC3O/fRw5QY8A9/uxQbbCEypnLIiYYc/qVJtEV7ouxC3EllIIwNzMqAQee5tanFabWsUOutS7g== +"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.11.6", "@babel/core@^7.12.0", "@babel/core@^7.13.0", "@babel/core@^7.18.6", "@babel/core@^7.19.6", "@babel/core@^7.4.0-0": + version "7.21.3" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.21.3.tgz" + integrity sha512-qIJONzoa/qiHghnm0l1n4i/6IIziDpzqc36FBs4pzMhDUraHqponwJLiAKm1hGLP3OSB/TVNz6rMwVGpwxxySw== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.21.3" + "@babel/helper-compilation-targets" "^7.20.7" + "@babel/helper-module-transforms" "^7.21.2" + "@babel/helpers" "^7.21.0" + "@babel/parser" "^7.21.3" + "@babel/template" "^7.20.7" + "@babel/traverse" "^7.21.3" + "@babel/types" "^7.21.3" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.2" + semver "^6.3.0" + "@babel/core@7.12.9": version "7.12.9" resolved "https://registry.npmjs.org/@babel/core/-/core-7.12.9.tgz" @@ -172,27 +193,6 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/core@^7.18.6", "@babel/core@^7.19.6": - version "7.21.3" - resolved "https://registry.npmjs.org/@babel/core/-/core-7.21.3.tgz" - integrity sha512-qIJONzoa/qiHghnm0l1n4i/6IIziDpzqc36FBs4pzMhDUraHqponwJLiAKm1hGLP3OSB/TVNz6rMwVGpwxxySw== - dependencies: - "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.21.3" - "@babel/helper-compilation-targets" "^7.20.7" - "@babel/helper-module-transforms" "^7.21.2" - "@babel/helpers" "^7.21.0" - "@babel/parser" "^7.21.3" - "@babel/template" "^7.20.7" - "@babel/traverse" "^7.21.3" - "@babel/types" "^7.21.3" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.2" - semver "^6.3.0" - "@babel/generator@^7.12.5", "@babel/generator@^7.18.7", "@babel/generator@^7.21.3": version "7.21.3" resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.21.3.tgz" @@ -325,16 +325,16 @@ dependencies: "@babel/types" "^7.18.6" -"@babel/helper-plugin-utils@7.10.4": - version "7.10.4" - resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz" - integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg== - "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.19.0", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": version "7.20.2" resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz" integrity sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ== +"@babel/helper-plugin-utils@7.10.4": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz" + integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg== + "@babel/helper-remap-async-to-generator@^7.18.9": version "7.18.9" resolved "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz" @@ -517,15 +517,6 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-proposal-object-rest-spread@7.12.1": - version "7.12.1" - resolved "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz" - integrity sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.0" - "@babel/plugin-transform-parameters" "^7.12.1" - "@babel/plugin-proposal-object-rest-spread@^7.20.2": version "7.20.7" resolved "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz" @@ -537,6 +528,15 @@ "@babel/plugin-syntax-object-rest-spread" "^7.8.3" "@babel/plugin-transform-parameters" "^7.20.7" +"@babel/plugin-proposal-object-rest-spread@7.12.1": + version "7.12.1" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz" + integrity sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-transform-parameters" "^7.12.1" + "@babel/plugin-proposal-optional-catch-binding@^7.18.6": version "7.18.6" resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz" @@ -629,13 +629,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-jsx@7.12.1": - version "7.12.1" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz" - integrity sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-jsx@^7.18.6": version "7.18.6" resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz" @@ -643,6 +636,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" +"@babel/plugin-syntax-jsx@7.12.1": + version "7.12.1" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz" + integrity sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-logical-assignment-operators@^7.10.4": version "7.10.4" resolved "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz" @@ -664,7 +664,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-object-rest-spread@7.8.3", "@babel/plugin-syntax-object-rest-spread@^7.8.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3": +"@babel/plugin-syntax-object-rest-spread@^7.8.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3", "@babel/plugin-syntax-object-rest-spread@7.8.3": version "7.8.3" resolved "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz" integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== @@ -1216,7 +1216,7 @@ "@docsearch/css" "3.3.5" algoliasearch "^4.0.0" -"@docusaurus/core@2.4.1", "@docusaurus/core@^2.4.1": +"@docusaurus/core@^2.4.1", "@docusaurus/core@2.4.1": version "2.4.1" resolved "https://registry.npmjs.org/@docusaurus/core/-/core-2.4.1.tgz" integrity sha512-SNsY7PshK3Ri7vtsLXVeAJGS50nJN3RgF836zkyUfAD01Fq+sAk5EwWgLw+nnm5KVNGDu7PRR2kRGDsWvqpo0g== @@ -1334,7 +1334,7 @@ url-loader "^4.1.1" webpack "^5.73.0" -"@docusaurus/module-type-aliases@2.4.1", "@docusaurus/module-type-aliases@^2.4.1": +"@docusaurus/module-type-aliases@^2.4.1", "@docusaurus/module-type-aliases@2.4.1": version "2.4.1" resolved "https://registry.npmjs.org/@docusaurus/module-type-aliases/-/module-type-aliases-2.4.1.tgz" integrity sha512-gLBuIFM8Dp2XOCWffUDSjtxY7jQgKvYujt7Mx5s4FCTfoL5dN1EVbnrn+O2Wvh8b0a77D57qoIDY7ghgmatR1A== @@ -1482,7 +1482,7 @@ "@docusaurus/theme-search-algolia" "2.4.1" "@docusaurus/types" "2.4.1" -"@docusaurus/react-loadable@5.5.2", "react-loadable@npm:@docusaurus/react-loadable@5.5.2": +"@docusaurus/react-loadable@5.5.2": version "5.5.2" resolved "https://registry.npmjs.org/@docusaurus/react-loadable/-/react-loadable-5.5.2.tgz" integrity sha512-A3dYjdBGuy0IGT+wyLIGIKLRE+sAk1iNk0f1HjNDysO7u8lhL4N3VEm+FAubmJbAztn94F7MxBTPmnixbiyFdQ== @@ -1587,7 +1587,7 @@ fs-extra "^10.1.0" tslib "^2.4.0" -"@docusaurus/types@2.4.1": +"@docusaurus/types@*", "@docusaurus/types@2.4.1": version "2.4.1" resolved "https://registry.npmjs.org/@docusaurus/types/-/types-2.4.1.tgz" integrity sha512-0R+cbhpMkhbRXX138UOc/2XZFF8hiZa6ooZAEEJFp5scytzCw4tC1gChMFXrpa3d2tYE6AX8IrOEpSonLmfQuQ== @@ -1680,7 +1680,16 @@ "@jridgewell/set-array" "^1.0.0" "@jridgewell/sourcemap-codec" "^1.4.10" -"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": +"@jridgewell/gen-mapping@^0.3.0": + version "0.3.2" + resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz" + integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== + dependencies: + "@jridgewell/set-array" "^1.0.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/gen-mapping@^0.3.2": version "0.3.2" resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz" integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== @@ -1707,7 +1716,7 @@ "@jridgewell/gen-mapping" "^0.3.0" "@jridgewell/trace-mapping" "^0.3.9" -"@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10": +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@1.4.14": version "1.4.14" resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz" integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== @@ -1768,7 +1777,7 @@ "@nodelib/fs.stat" "2.0.5" run-parallel "^1.1.9" -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": +"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": version "2.0.5" resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== @@ -1876,7 +1885,7 @@ "@svgr/babel-plugin-transform-react-native-svg" "^6.5.1" "@svgr/babel-plugin-transform-svg-component" "^6.5.1" -"@svgr/core@^6.5.1": +"@svgr/core@*", "@svgr/core@^6.0.0", "@svgr/core@^6.5.1": version "6.5.1" resolved "https://registry.npmjs.org/@svgr/core/-/core-6.5.1.tgz" integrity sha512-/xdLSWxK5QkqG524ONSjvg3V/FkNyCv538OIBdQqPNaAta3AsXj/Bd2FbvR87yMbXO2hFSWiAe/Q6IkVPDw+mw== @@ -1942,7 +1951,7 @@ "@tsconfig/docusaurus@^2.0.0": version "2.0.0" - resolved "https://registry.yarnpkg.com/@tsconfig/docusaurus/-/docusaurus-2.0.0.tgz#cadc77ab84052ffaaa4d6f79e998d719efa50e56" + resolved "https://registry.npmjs.org/@tsconfig/docusaurus/-/docusaurus-2.0.0.tgz" integrity sha512-X5wptT7pXA/46/IRFTW76oR5GNjoy9qjNM/1JGhFV4QAsmLh3YUpJJA+Vpx7Ds6eEBxSxz1QrgoNEBy6rLVs8w== "@types/body-parser@*": @@ -2136,7 +2145,7 @@ "@types/history" "^4.7.11" "@types/react" "*" -"@types/react@*": +"@types/react@*", "@types/react@>= 16.8.0 < 19.0.0": version "18.0.28" resolved "https://registry.npmjs.org/@types/react/-/react-18.0.28.tgz" integrity sha512-RD0ivG1kEztNBdoAK7lekI9M+azSnitIn85h4iOiaLjaTrMjzslhaqCGaI4IyCJ1RljWiLCEu4jyrLLgqxBTew== @@ -2357,7 +2366,7 @@ acorn-walk@^8.0.0: resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz" integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== -acorn@^8.0.4, acorn@^8.5.0, acorn@^8.7.1: +acorn@^8, acorn@^8.0.4, acorn@^8.5.0, acorn@^8.7.1: version "8.8.2" resolved "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz" integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== @@ -2394,7 +2403,7 @@ ajv-keywords@^5.0.0: dependencies: fast-deep-equal "^3.1.3" -ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5: +ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.9.1: version "6.12.6" resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -2404,7 +2413,17 @@ ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^8.0.0, ajv@^8.8.0: +ajv@^8.0.0: + version "8.12.0" + resolved "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz" + integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + +ajv@^8.8.0, ajv@^8.8.2: version "8.12.0" resolved "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz" integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== @@ -2421,7 +2440,7 @@ algoliasearch-helper@^3.10.0: dependencies: "@algolia/events" "^4.0.1" -algoliasearch@^4.0.0, algoliasearch@^4.13.1: +algoliasearch@^4.0.0, algoliasearch@^4.13.1, "algoliasearch@>= 3.1 < 6", "algoliasearch@>= 4.9.1 < 6": version "4.17.0" resolved "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.17.0.tgz" integrity sha512-JMRh2Mw6sEnVMiz6+APsi7lx9a2jiDFF+WUtANaUVCv6uSU9UOLdo5h9K3pdP6frRRybaM2fX8b1u0nqICS9aA== @@ -2507,16 +2526,16 @@ argparse@^2.0.1: resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== -array-flatten@1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" - integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== - array-flatten@^2.1.2: version "2.1.2" resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz" integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" + integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== + array-union@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" @@ -2713,7 +2732,7 @@ braces@^3.0.2, braces@~3.0.2: dependencies: fill-range "^7.0.1" -browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.18.1, browserslist@^4.21.3, browserslist@^4.21.4, browserslist@^4.21.5: +browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.18.1, browserslist@^4.21.3, browserslist@^4.21.4, browserslist@^4.21.5, "browserslist@>= 4.21.0": version "4.21.5" resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz" integrity sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w== @@ -2943,7 +2962,7 @@ clsx@^1.2.1: clsx@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/clsx/-/clsx-2.0.0.tgz#12658f3fd98fafe62075595a5c30e43d18f3d00b" + resolved "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz" integrity sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q== collapse-white-space@^1.0.2: @@ -2965,16 +2984,16 @@ color-convert@^2.0.1: dependencies: color-name "~1.1.4" -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" - integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - color-name@~1.1.4: version "1.1.4" resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + colord@^2.9.1: version "2.9.3" resolved "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz" @@ -2995,11 +3014,6 @@ comma-separated-tokens@^1.0.0: resolved "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz" integrity sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw== -commander@7, commander@^7.2.0: - version "7.2.0" - resolved "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz" - integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== - commander@^2.20.0: version "2.20.3" resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" @@ -3010,11 +3024,21 @@ commander@^5.1.0: resolved "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz" integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== +commander@^7.2.0: + version "7.2.0" + resolved "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz" + integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== + commander@^8.3.0: version "8.3.0" resolved "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz" integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== +commander@7: + version "7.2.0" + resolved "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz" + integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== + commondir@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz" @@ -3363,7 +3387,7 @@ cytoscape-fcose@^2.1.0: dependencies: cose-base "^2.2.0" -cytoscape@^3.23.0: +cytoscape@^3.2.0, cytoscape@^3.23.0: version "3.24.0" resolved "https://registry.npmjs.org/cytoscape/-/cytoscape-3.24.0.tgz" integrity sha512-W9fJMrAfr/zKFzDCpRR/wn6uoEQ7gfbJmxPK5DadXj69XyAhZYi1QXLOE+UXJfXVXxqGM1o1eeiIrtxrtB43zA== @@ -3371,7 +3395,7 @@ cytoscape@^3.23.0: heap "^0.2.6" lodash "^4.17.21" -"d3-array@2 - 3", "d3-array@2.10.0 - 3", "d3-array@2.5.0 - 3", d3-array@3, d3-array@^3.2.0: +d3-array@^3.2.0, "d3-array@2 - 3", "d3-array@2.10.0 - 3", "d3-array@2.5.0 - 3", d3-array@3: version "3.2.3" resolved "https://registry.npmjs.org/d3-array/-/d3-array-3.2.3.tgz" integrity sha512-JRHwbQQ84XuAESWhvIPaUV4/1UYTBOLiOPGWqgFDHZS1D5QN9c57FbH3QpEnQMYiOXNzKUQyGTZf+EVO7RT5TQ== @@ -3487,7 +3511,7 @@ d3-hierarchy@3: dependencies: d3-color "1 - 3" -"d3-path@1 - 3", d3-path@3, d3-path@^3.1.0: +d3-path@^3.1.0, "d3-path@1 - 3", d3-path@3: version "3.1.0" resolved "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz" integrity sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ== @@ -3628,20 +3652,27 @@ dayjs@^1.11.7: resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.11.7.tgz" integrity sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ== -debug@2.6.9, debug@^2.6.0: +debug@^2.6.0: version "2.6.9" resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" -debug@4, debug@^4.1.0, debug@^4.1.1: +debug@^4.1.0, debug@^4.1.1, debug@4: version "4.3.4" resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: ms "2.1.2" +debug@2.6.9: + version "2.6.9" + resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + decompress-response@^3.3.0: version "3.3.0" resolved "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz" @@ -3705,16 +3736,16 @@ delaunator@5: dependencies: robust-predicates "^3.0.0" -depd@2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" - integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== - depd@~1.1.2: version "1.1.2" resolved "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz" integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== +depd@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + destroy@1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz" @@ -3849,16 +3880,16 @@ dot-prop@^5.2.0: dependencies: is-obj "^2.0.0" -duplexer3@^0.1.4: - version "0.1.5" - resolved "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz" - integrity sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA== - duplexer@^0.1.2: version "0.1.2" resolved "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz" integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== +duplexer3@^0.1.4: + version "0.1.5" + resolved "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz" + integrity sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA== + eastasianwidth@^0.2.0: version "0.2.0" resolved "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz" @@ -4167,7 +4198,7 @@ feed@^4.2.2: dependencies: xml-js "^1.6.11" -file-loader@^6.2.0: +file-loader@*, file-loader@^6.2.0: version "6.2.0" resolved "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz" integrity sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw== @@ -4308,11 +4339,6 @@ fs.realpath@^1.0.0: resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== -fsevents@~2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== - function-bind@^1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" @@ -4697,6 +4723,16 @@ http-deceiver@^1.2.7: resolved "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz" integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw== +http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz" + integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + http-errors@2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz" @@ -4708,16 +4744,6 @@ http-errors@2.0.0: statuses "2.0.1" toidentifier "1.0.1" -http-errors@~1.6.2: - version "1.6.3" - resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz" - integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.0" - statuses ">= 1.4.0 < 2" - http-parser-js@>=0.5.1: version "0.5.8" resolved "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz" @@ -4820,7 +4846,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.0, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3: +inherits@^2.0.0, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3, inherits@2, inherits@2.0.4: version "2.0.4" resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -4830,16 +4856,16 @@ inherits@2.0.3: resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== -ini@2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz" - integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== - ini@^1.3.5, ini@~1.3.0: version "1.3.8" resolved "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== +ini@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz" + integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== + inline-style-parser@0.1.1: version "0.1.1" resolved "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz" @@ -4862,17 +4888,17 @@ invariant@^2.2.4: dependencies: loose-envify "^1.0.0" -ipaddr.js@1.9.1: - version "1.9.1" - resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz" - integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== - ipaddr.js@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz" integrity sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng== -is-alphabetical@1.0.4, is-alphabetical@^1.0.0: +ipaddr.js@1.9.1: + version "1.9.1" + resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + +is-alphabetical@^1.0.0, is-alphabetical@1.0.4: version "1.0.4" resolved "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz" integrity sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg== @@ -5050,16 +5076,16 @@ is-yarn-global@^0.3.0: resolved "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz" integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw== -isarray@0.0.1: - version "0.0.1" - resolved "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== - isarray@~1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" + integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== + isexe@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" @@ -5314,7 +5340,7 @@ lodash.memoize@^4.1.2: resolved "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz" integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== -lodash.uniq@4.5.0, lodash.uniq@^4.5.0: +lodash.uniq@^4.5.0, lodash.uniq@4.5.0: version "4.5.0" resolved "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz" integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== @@ -5484,7 +5510,7 @@ micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: braces "^3.0.2" picomatch "^2.3.1" -mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": +"mime-db@>= 1.43.0 < 2": version "1.52.0" resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== @@ -5494,14 +5520,40 @@ mime-db@~1.33.0: resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz" integrity sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ== -mime-types@2.1.18, mime-types@~2.1.17: +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.27: + version "2.1.35" + resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mime-types@^2.1.31: + version "2.1.35" + resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mime-types@~2.1.17, mime-types@2.1.18: version "2.1.18" resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz" integrity sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ== dependencies: mime-db "~1.33.0" -mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.24, mime-types@~2.1.34: +mime-types@~2.1.24: + version "2.1.35" + resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mime-types@~2.1.34: version "2.1.35" resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== @@ -5535,7 +5587,7 @@ minimalistic-assert@^1.0.0: resolved "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz" integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== -minimatch@3.1.2, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1: +minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@3.1.2: version "3.1.2" resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== @@ -5911,6 +5963,13 @@ path-parse@^1.0.7: resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== +path-to-regexp@^1.7.0: + version "1.8.0" + resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz" + integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA== + dependencies: + isarray "0.0.1" + path-to-regexp@0.1.7: version "0.1.7" resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz" @@ -5921,13 +5980,6 @@ path-to-regexp@2.2.1: resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.2.1.tgz" integrity sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ== -path-to-regexp@^1.7.0: - version "1.8.0" - resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz" - integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA== - dependencies: - isarray "0.0.1" - path-type@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" @@ -6238,7 +6290,7 @@ postcss-zindex@^5.1.0: resolved "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-5.1.0.tgz" integrity sha512-fgFMf0OtVSBR1va1JNHYgMxYk73yhn/qb4uQDq1DLGYolz8gHCyr/sesEuGUaYs58E3ZJRcpoGuPVoB7Meiq9A== -postcss@^8.3.11, postcss@^8.4.14, postcss@^8.4.17, postcss@^8.4.19: +"postcss@^7.0.0 || ^8.0.1", postcss@^8.0.9, postcss@^8.1.0, postcss@^8.2.15, postcss@^8.2.2, postcss@^8.3.11, postcss@^8.4.14, postcss@^8.4.16, postcss@^8.4.17, postcss@^8.4.19: version "8.4.21" resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz" integrity sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg== @@ -6375,16 +6427,21 @@ randombytes@^2.1.0: dependencies: safe-buffer "^5.1.0" -range-parser@1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz" - integrity sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A== +range-parser@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== -range-parser@^1.2.1, range-parser@~1.2.1: +range-parser@~1.2.1: version "1.2.1" resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== +range-parser@1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz" + integrity sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A== + raw-body@2.5.1: version "2.5.1" resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz" @@ -6395,7 +6452,7 @@ raw-body@2.5.1: iconv-lite "0.4.24" unpipe "1.0.0" -rc@1.2.8, rc@^1.2.8: +rc@^1.2.8, rc@1.2.8: version "1.2.8" resolved "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz" integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== @@ -6445,7 +6502,7 @@ react-dev-utils@^12.0.1: strip-ansi "^6.0.1" text-table "^0.2.0" -react-dom@^17.0.2: +react-dom@*, "react-dom@^16.6.0 || ^17.0.0 || ^18.0.0", "react-dom@^16.8.4 || ^17.0.0", "react-dom@^17.0.0 || ^16.3.0 || ^15.5.4", react-dom@^17.0.2, "react-dom@>= 16.8.0 < 19.0.0": version "17.0.2" resolved "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz" integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA== @@ -6502,6 +6559,14 @@ react-loadable-ssr-addon-v5-slorber@^1.0.1: dependencies: "@babel/runtime" "^7.10.3" +react-loadable@*, "react-loadable@npm:@docusaurus/react-loadable@5.5.2": + version "5.5.2" + resolved "https://registry.npmjs.org/@docusaurus/react-loadable/-/react-loadable-5.5.2.tgz" + integrity sha512-A3dYjdBGuy0IGT+wyLIGIKLRE+sAk1iNk0f1HjNDysO7u8lhL4N3VEm+FAubmJbAztn94F7MxBTPmnixbiyFdQ== + dependencies: + "@types/react" "*" + prop-types "^15.6.2" + react-player@^2.12.0: version "2.12.0" resolved "https://registry.npmjs.org/react-player/-/react-player-2.12.0.tgz" @@ -6533,7 +6598,7 @@ react-router-dom@^5.3.3: tiny-invariant "^1.0.2" tiny-warning "^1.0.0" -react-router@5.3.4, react-router@^5.3.3: +react-router@^5.3.3, react-router@>=5, react-router@5.3.4: version "5.3.4" resolved "https://registry.npmjs.org/react-router/-/react-router-5.3.4.tgz" integrity sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA== @@ -6557,7 +6622,7 @@ react-textarea-autosize@^8.3.2: use-composed-ref "^1.3.0" use-latest "^1.2.1" -react@^17.0.2: +react@*, "react@^15.0.2 || ^16.0.0 || ^17.0.0", "react@^16.13.1 || ^17.0.0", "react@^16.6.0 || ^17.0.0 || ^18.0.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0", "react@^16.8.4 || ^17.0.0", "react@^17.0.0 || ^16.3.0 || ^15.5.4", react@^17.0.2, "react@>= 16.8.0 < 19.0.0", react@>=0.14.9, react@>=15, react@>=16.6.0, react@17.0.2: version "17.0.2" resolved "https://registry.npmjs.org/react/-/react-17.0.2.tgz" integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA== @@ -6845,15 +6910,20 @@ rxjs@^7.5.4: dependencies: tslib "^2.1.0" -safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: +safe-buffer@^5.1.0, safe-buffer@>=5.1.0, safe-buffer@~5.2.0, safe-buffer@5.2.1: + version "5.2.1" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.1.0, safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== +safe-buffer@5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== "safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": version "2.1.2" @@ -6873,15 +6943,6 @@ scheduler@^0.20.2: loose-envify "^1.1.0" object-assign "^4.1.1" -schema-utils@2.7.0: - version "2.7.0" - resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz" - integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A== - dependencies: - "@types/json-schema" "^7.0.4" - ajv "^6.12.2" - ajv-keywords "^3.4.1" - schema-utils@^2.6.5: version "2.7.1" resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz" @@ -6891,7 +6952,25 @@ schema-utils@^2.6.5: ajv "^6.12.4" ajv-keywords "^3.5.2" -schema-utils@^3.0.0, schema-utils@^3.1.0, schema-utils@^3.1.1: +schema-utils@^3.0.0: + version "3.1.1" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz" + integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw== + dependencies: + "@types/json-schema" "^7.0.8" + ajv "^6.12.5" + ajv-keywords "^3.5.2" + +schema-utils@^3.1.0: + version "3.1.1" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz" + integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw== + dependencies: + "@types/json-schema" "^7.0.8" + ajv "^6.12.5" + ajv-keywords "^3.5.2" + +schema-utils@^3.1.1: version "3.1.1" resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz" integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw== @@ -6910,6 +6989,15 @@ schema-utils@^4.0.0: ajv-formats "^2.1.1" ajv-keywords "^5.0.0" +schema-utils@2.7.0: + version "2.7.0" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz" + integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A== + dependencies: + "@types/json-schema" "^7.0.4" + ajv "^6.12.2" + ajv-keywords "^3.4.1" + section-matter@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz" @@ -6939,17 +7027,37 @@ semver-diff@^3.1.1: semver@^5.4.1: version "5.7.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" + resolved "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz" integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== -semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: +semver@^6.0.0: + version "6.3.1" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^6.1.1: version "6.3.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^6.1.2: + version "6.3.1" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^6.2.0: + version "6.3.1" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^6.3.0: + version "6.3.1" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== semver@^7.3.2, semver@^7.3.4, semver@^7.3.7, semver@^7.3.8: version "7.5.4" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" + resolved "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz" integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== dependencies: lru-cache "^6.0.0" @@ -7198,22 +7306,45 @@ state-toggle@^1.0.0: resolved "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.3.tgz" integrity sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ== -statuses@2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" - integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== - "statuses@>= 1.4.0 < 2": version "1.5.0" resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + std-env@^3.0.1: version "3.3.2" resolved "https://registry.npmjs.org/std-env/-/std-env-3.3.2.tgz" integrity sha512-uUZI65yrV2Qva5gqE0+A7uVAvO40iPo6jGhs7s8keRfHCmtg+uB2X6EiLGCI9IgL1J17xGhvoOqSz79lzICPTA== -string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2: +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.2: + version "4.2.3" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^4.2.0: version "4.2.3" resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -7231,20 +7362,6 @@ string-width@^5.0.1: emoji-regex "^9.2.2" strip-ansi "^7.0.1" -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - stringify-object@^3.3.0: version "3.3.0" resolved "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz" @@ -7288,7 +7405,7 @@ strip-json-comments@~2.0.1: resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz" integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== -style-to-object@0.3.0, style-to-object@^0.3.0: +style-to-object@^0.3.0, style-to-object@0.3.0: version "0.3.0" resolved "https://registry.npmjs.org/style-to-object/-/style-to-object-0.3.0.tgz" integrity sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA== @@ -7485,9 +7602,9 @@ typedarray-to-buffer@^3.1.5: dependencies: is-typedarray "^1.0.0" -typescript@^5.1.6: +typescript@^5.1.6, "typescript@>= 2.7": version "5.1.6" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.1.6.tgz#02f8ac202b6dad2c0dd5e0913745b47a37998274" + resolved "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz" integrity sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA== ua-parser-js@^0.7.30: @@ -7526,10 +7643,10 @@ unicode-property-aliases-ecmascript@^2.0.0: resolved "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz" integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== -unified@9.2.0: - version "9.2.0" - resolved "https://registry.npmjs.org/unified/-/unified-9.2.0.tgz" - integrity sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg== +unified@^9.2.2: + version "9.2.2" + resolved "https://registry.npmjs.org/unified/-/unified-9.2.2.tgz" + integrity sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ== dependencies: bail "^1.0.0" extend "^3.0.0" @@ -7538,10 +7655,10 @@ unified@9.2.0: trough "^1.0.0" vfile "^4.0.0" -unified@^9.2.2: - version "9.2.2" - resolved "https://registry.npmjs.org/unified/-/unified-9.2.2.tgz" - integrity sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ== +unified@9.2.0: + version "9.2.0" + resolved "https://registry.npmjs.org/unified/-/unified-9.2.0.tgz" + integrity sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg== dependencies: bail "^1.0.0" extend "^3.0.0" @@ -7557,7 +7674,7 @@ unique-string@^2.0.0: dependencies: crypto-random-string "^2.0.0" -unist-builder@2.0.3, unist-builder@^2.0.0: +unist-builder@^2.0.0, unist-builder@2.0.3: version "2.0.3" resolved "https://registry.npmjs.org/unist-builder/-/unist-builder-2.0.3.tgz" integrity sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw== @@ -7606,7 +7723,7 @@ unist-util-visit-parents@^3.0.0: "@types/unist" "^2.0.0" unist-util-is "^4.0.0" -unist-util-visit@2.0.3, unist-util-visit@^2.0.0, unist-util-visit@^2.0.3: +unist-util-visit@^2.0.0, unist-util-visit@^2.0.3, unist-util-visit@2.0.3: version "2.0.3" resolved "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz" integrity sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q== @@ -7620,7 +7737,7 @@ universalify@^2.0.0: resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz" integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== -unpipe@1.0.0, unpipe@~1.0.0: +unpipe@~1.0.0, unpipe@1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== @@ -7878,7 +7995,7 @@ webpack-sources@^3.2.2, webpack-sources@^3.2.3: resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz" integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== -webpack@^5.73.0: +"webpack@^4.0.0 || ^5.0.0", "webpack@^4.37.0 || ^5.0.0", webpack@^5.0.0, webpack@^5.1.0, webpack@^5.20.0, webpack@^5.73.0, "webpack@>= 4", webpack@>=2, "webpack@>=4.41.1 || 5.x", "webpack@3 || 4 || 5": version "5.76.2" resolved "https://registry.npmjs.org/webpack/-/webpack-5.76.2.tgz" integrity sha512-Th05ggRm23rVzEOlX8y67NkYCHa9nTNcwHPBhdg+lKG+mtiW7XgggjAeeLnADAe7mLjJ6LUNfgHAuRRh+Z6J7w== @@ -7918,7 +8035,7 @@ webpackbar@^5.0.2: pretty-time "^1.1.0" std-env "^3.0.1" -websocket-driver@>=0.5.1, websocket-driver@^0.7.4: +websocket-driver@^0.7.4, websocket-driver@>=0.5.1: version "0.7.4" resolved "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz" integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==