diff --git a/Working with RAE/RAE Default App/.vscode/launch.json b/Working with RAE/RAE Default App/.vscode/launch.json new file mode 100644 index 0000000..9179aa5 --- /dev/null +++ b/Working with RAE/RAE Default App/.vscode/launch.json @@ -0,0 +1 @@ +{"version":"0.2.0","configurations":[{"type":"robothub","request":"launch","name":"Run"}]} \ No newline at end of file diff --git a/Working with RAE/RAE Default App/.vscode/settings.json b/Working with RAE/RAE Default App/.vscode/settings.json new file mode 100644 index 0000000..9907e85 --- /dev/null +++ b/Working with RAE/RAE Default App/.vscode/settings.json @@ -0,0 +1,8 @@ +{ + "evenBetterToml.taplo.configFile.path": "/.vscode/taplo.toml", + "eslint.workingDirectories": [ + "src" + ], + "editor.tabSize": 2, + "ros.distro": "humble" +} diff --git a/Working with RAE/RAE Default App/README.md b/Working with RAE/RAE Default App/README.md new file mode 100644 index 0000000..90bf3f0 --- /dev/null +++ b/Working with RAE/RAE Default App/README.md @@ -0,0 +1,46 @@ +# RAE Default App + +This is an example of Default RAE App source code. In this example, FollowMe Application is used as the default entry point, but others can be specified via `robotapp.toml` file. + +## Features +- FollowMe Application - robot is put in a mode that follows a person standing in front or in the back of the robot +- A FrontEnd application is launched to publish images on LCD screen or control LED behavior +- Abstractions are provided for the robot class that allow customizing the App behavior, or creation of a whole different app +- It is possible to set up streams for both RobotHub using provided wrappers + +## Requirements + +- RAE + +## Dependencies +- ROS2 Humble +- DepthAI libraries +- RobotHub + +## Concepts of Robot classes + +1. The Robot Class: An Integrated Approach to Robotics Control + +The Robot class stands as a cornerstone in robotics control, encapsulating various functionalities such as movement, display, and LED control. This class serves as a bridge between hardware components and higher-level software commands, thereby streamlining robotics operations. + +Key Functionalities: +- Movement Control: By integrating a MovementController, the Robot class allows for precise control over the robot's motion, enabling it to navigate its environment effectively. +- Visual Feedback: The incorporation of a DisplayController and LEDController provides visual feedback and communication capabilities, enhancing human-robot interaction. +- Battery Monitoring: The class also includes a method for battery state monitoring, ensuring the robot operates within its energy constraints. + + +2. The Camera Class: Enhancing Perception in Robotics + +The Camera class is instrumental in augmenting a robot's perception of its surroundings. It leverages the depthai and robothub libraries to manage camera functionalities, which are vital for tasks like navigation, object recognition, and environmental interaction. + +- Stream Management: It enables the creation and management of video streams through RobotHub and ROS, crucial for real-time visual data processing. +- Hardware Interface: The class interacts directly with the camera hardware, ensuring optimal utilization of the device's capabilities. +- Flexibility and Control: The inclusion of methods for starting and stopping the camera pipeline, and for publishing video data, provides flexibility and control over the camera operations. + +3. The ROS2Manager Class: Streamlining ROS2 Operations + +The ROS2Manager class encapsulates the management of ROS2 functionalities. ROS2 (Robot Operating System 2) is an essential component in modern robotics, providing tools for communication between different parts of a robotic system. + +- Node Management: This class is responsible for creating and managing nodes in ROS2, facilitating communication between different components of a robot. +- Publisher and Subscriber System: It includes a comprehensive system for creating publishers, subscribers, clients etc. allowing the robot to interact with various data streams efficiently. +- Lifecycle Management: The class also manages the lifecycle of ROS2 processes, including starting and stopping nodes and context, ensuring robust and reliable operations. \ No newline at end of file diff --git a/Working with RAE/RAE Default App/frontend/assets/index-37243f35.css b/Working with RAE/RAE Default App/frontend/assets/index-37243f35.css new file mode 100644 index 0000000..9c9eb5f --- /dev/null +++ b/Working with RAE/RAE Default App/frontend/assets/index-37243f35.css @@ -0,0 +1 @@ +*,*:before,*:after{box-sizing:border-box}*:not(dialog){margin:0}html,body{height:100%}body{line-height:1.5;-webkit-font-smoothing:antialiased}img,picture,video,canvas{display:block;max-width:100%}svg{display:inline-block}input,button,textarea,select{font:inherit}p,h1,h2,h3,h4,h5,h6{overflow-wrap:break-word}#root{isolation:isolate}a{text-decoration:none;color:inherit}input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus,input:-webkit-autofill:active{-webkit-box-shadow:0 0 0 30px white inset!important}:root{--white: #fff;--black: #000;--gray25: #fcfcfd;--gray50: #f9fafb;--gray100: #f2f4f7;--gray200: #eaecf0;--gray300: #d0d5dd;--gray400: #98a2b3;--gray500: #667085;--gray600: #475467;--gray700: #344054;--gray800: #1d2939;--gray900: #101828;--primary25: #f6fcfe;--primary50: #dceffc;--primary100: #c1dcf9;--primary200: #a7c3f6;--primary300: #8da4f4;--primary400: #6178f4;--primary500: #4c4ff1;--primary600: #4e38ed;--primary700: #5724e8;--primary800: #441bb6;--primary900: #301383;--warning25: #fffcf5;--warning50: #fffaeb;--warning100: #fef0c7;--warning200: #fedf89;--warning300: #fec84b;--warning400: #fdb022;--warning500: #f79009;--warning600: #dc6803;--warning700: #b54708;--error25: #fffbfa;--error50: #fef3f2;--error100: #fee4ef;--error200: #fecdca;--error300: #fda29b;--error400: #f97066;--error500: #f04438;--error600: #d92d20;--error700: #b42318;--success25: #f6fef9;--success50: #ecfdf3;--success100: #d1fadf;--success200: #a6f4c5;--success300: #6ce9a6;--success400: #32d583;--success500: #12b76a;--success600: #039855;--success700: #027a48;--red50: #ffebee;--red100: #ffcdd2;--red200: #ef9a9a;--red300: #e57373;--red400: #ef5350;--red500: #f44336;--red600: #e53935;--red700: #d32f2f;--red800: #c62828;--red900: #b71c1c;--purple50: #f3e5f5;--purple100: #e1bee7;--purple200: #ce93d8;--purple300: #ba68c8;--purple400: #ab47bc;--purple500: #9c27b0;--purple600: #8e24aa;--purple700: #7b1fa2;--purple800: #6a1b9a;--purple900: #4a148c;--deep-purple50: #ede7f6;--deep-purple100: #d1c4e9;--deep-purple200: #b39ddb;--deep-purple300: #9575cd;--deep-purple400: #7e57c2;--deep-purple500: #673ab7;--deep-purple600: #5e35b1;--deep-purple700: #512da8;--deep-purple800: #4527a0;--deep-purple900: #311b92;--indigo50: #e8eaf6;--indigo100: #c5cae9;--indigo200: #9fa8da;--indigo300: #7986cb;--indigo400: #5c6bc0;--indigo500: #3f51b5;--indigo600: #3949ab;--indigo700: #303f9f;--indigo800: #283593;--indigo900: #1a237e;--blue50: #e3f2fd;--blue100: #bbdefb;--blue200: #90caf9;--blue300: #64b5f6;--blue400: #42a5f5;--blue500: #2196f3;--blue600: #1e88e5;--blue700: #1976d2;--blue800: #1565c0;--blue900: #0d47a1;--teal50: #e0f2f1;--teal100: #b2dfdb;--teal200: #80cbc4;--teal300: #4db6ac;--teal400: #26a69a;--teal500: #009688;--teal600: #00897b;--teal700: #00796b;--teal800: #00695c;--teal900: #004d40;--green50: #e8f5e9;--green100: #c8e6c9;--green200: #a5d6a7;--green300: #81c784;--green400: #66bb6a;--green500: #4caf50;--green600: #43a047;--green700: #388e3c;--green800: #2e7d32;--green900: #1b5e20;--amber50: #fff8e1;--amber100: #ffecb3;--amber200: #ffe082;--amber300: #ffd54f;--amber400: #ffca28;--amber500: #ffc107;--amber600: #ffb300;--amber700: #ffa000;--amber800: #ff8f00;--amber900: #ff6f00;--orange50: #fff3e0;--orange100: #ffe0b2;--orange200: #ffcc80;--orange300: #ffb74d;--orange400: #ffa726;--orange500: #ff9800;--orange600: #fb8c00;--orange700: #f57c00;--orange800: #ef6c00;--orange900: #e65100;--deep-orange50: #fbe9e7;--deep-orange100: #ffccbc;--deep-orange200: #ffab91;--deep-orange300: #ff8a65;--deep-orange400: #ff7043;--deep-orange500: #ff5722;--deep-orange600: #f4511e;--deep-orange700: #e64a19;--deep-orange800: #d84315;--deep-orange900: #bf360c;--blue-gray50: #eceff1;--blue-gray100: #cfd8dc;--blue-gray200: #b0bec5;--blue-gray300: #90a4ae;--blue-gray400: #78909c;--blue-gray500: #607d8b;--blue-gray600: #546e7a;--blue-gray700: #455a64;--blue-gray800: #37474f;--blue-gray900: #263238;--pink700: #c11574;--shadow-xs: 0px 1px 2px rgba(16, 24, 40, .05);--shadow-sm: 0px 1px 3px rgba(16, 24, 40, .1), 0px 1px 2px rgba(16, 24, 40, .06);--shadow-md: 0px 4px 8px -2px rgba(16, 24, 40, .1), 0px 2px 4px -2px rgba(16, 24, 40, .06);--shadow-lg: 0px 12px 16px -4px rgba(16, 24, 40, .08), 0px 4px 6px -2px rgba(16, 24, 40, .03);--primary-color: var(--primary600);--divider-color: var(--gray200);--navigation-background: #ffffff;--content-background: #fcfcfd;--component-background: #ffffff;--menu-bar-background: #222;--font-family: Inter, -apple-system, BlinkMacSystemFont, Inter, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--screen-xs: 0px;--screen-sm: 768px;--screen-md: 992px;--screen-lg: 1200px;--screen-xl: 1400px;--content-width-xs: 328px;--content-width-sm: 568px;--content-width-md: 712px;--content-width-lg: var(--page-layout-panel-max-width);--border-radius: 8px;--border-radius-input: 6px;--text-color: var(--gray900);--text-color-secondary: var(--gray500);--text-color-project: var(--primary700);--icon-color: inherit;--icon-color-hover: rgba(0, 0, 0, .75);--heading-color: rgba(0, 0, 0, .85);--text-color-dark: rgba(255, 255, 255, .95);--text-color-secondary-dark: rgba(255, 255, 255, .75);--font-size-base: 14px;--line-height-base: 22px;--font-size-text-xs: .857rem;--line-height-text-xs: .857rem;--font-size-text-sm: 1rem;--line-height-text-sm: 1.35rem;--font-size-text-md: 1.143rem;--line-height-text-md: 1.56rem;--font-size-text-lg: 1.286rem;--line-height-text-lg: 1.286rem;--font-size-text-xl: 1.429rem;--line-height-text-xl: 1.429rem;--font-size-display-xs: 1.514rem;--line-height-display-xs: 1.8rem;--font-size-display-sm: 2.143rem;--line-height-display-sm: 2.143rem;--font-size-display-md: 2.714rem;--line-height-display-md: 2.714rem;--font-size-display-lg: 3.286rem;--line-height-display-lg: 3.286rem;--font-size-display-xl: 4.286rem;--line-height-display-xl: 4.286rem;--font-size-display-2xl: 5.143rem;--line-height-display-2xl: 5.143rem;--font-weight-bold: 700;--font-weight-semibold: 600;--font-weight-medium: 500;--font-weight-normal: 400;--ss-12: 128px;--ss-11: 96px;--ss-10: 72px;--ss-9: 64px;--ss-8: 56px;--ss-7: 48px;--ss-6: 32px;--ss-5: 24px;--ss-4: 16px;--ss-3: 12px;--ss-2: 8px;--ss-1: 4px;--ss-0: 0;--padding-5: var(--ss-5);--padding-4: var(--ss-4);--padding-3: var(--ss-3);--padding-2: var(--ss-2);--padding-1: var(--ss-1);--padding-side-default: var(--ss-3);--margin-5: var(--ss-5);--margin-4: var(--ss-4);--margin-3: var(--ss-3);--margin-2: var(--ss-2);--margin-1: var(--ss-1);--height-base: 32px;--height-lg: 40px;--height-sm: 24px;--border-color-base: var(--gray200);--border-color-dark: var(--gray400);--border-color-split: var(--border-color-base);--border-color-inverse: var(--gray900);--border-width-base: 1px;--border-style-base: solid;--outline-blur-size: 0;--outline-width: 2px;--outline-color: var(--primary-color);--outline-fade: 20%;--background-color-light: #fafafa;--background-color-base: #f5f5f5;--disabled-color: rgba(0, 0, 0, .25);--disabled-bg: var(--background-color-base);--disabled-active-bg: #e6e6e6;--disabled-color-dark: rgba(255, 255, 255, .35);--disabled-opacity: .6;--shadow-color: rgba(0, 0, 0, .15);--shadow-color-inverse: var(--component-background);--box-shadow-base: var(--shadow-2);--shadow-1-up: 0 -1.5px 4px -2px rgba(0, 0, 0, .06), 0 -2px 7px 0 rgba(0, 0, 0, .03);--shadow-1-down: 0 3px 8px -4px rgba(0, 0, 0, .08), 0 -4px 14px 0 rgba(0, 0, 0, .05);--shadow-1-left: -6px 0 16px -8px rgba(0, 0, 0, .08), -9px 0 28px 0 rgba(0, 0, 0, .05), -12px 0 48px 16px rgba(0, 0, 0, .03);--shadow-1-right: 6px 0 16px -8px rgba(0, 0, 0, .08), 9px 0 28px 0 rgba(0, 0, 0, .05), 12px 0 48px 16px rgba(0, 0, 0, .03);--shadow-2: 0 3px 6px -4px rgba(0, 0, 0, .12), 0 6px 16px 0 rgba(0, 0, 0, .08), 0 9px 28px 8px rgba(0, 0, 0, .05);--shadow-card: 0px 1px 3px rgba(16, 24, 40, .1), 0px 1px 2px rgba(16, 24, 40, .06);--layout-navmenu-mobile-height: 56px;--navigationMenuWidth: 64px;--navigationMenuHeight: 56px;--navigationMenuBackground: var(--navigation-background);--page-layout-panel-max-width: 960px;--page-header-topbar-height: var(--navigationMenuHeight);--page-content-spacing: 16px;--page-content-bottom-offset: 56px;--container-header-min-height: 64px;--container-padding: var(--ss-3);--divider: 1px solid var(--divider-color);--inputHeightBase: 44px;--inputHeightLg: 56px;--inputHeightSm: 38px;--inputPaddingHorizontal: 14px;--inputPaddingHorizontalLg: 16px;--inputPaddingHorizontalSm: 12px;--inputPaddingVertical: 10px;--inputPaddingVerticalLg: 12px;--inputPaddingverticalSm: 8px;--inputMinWidth: 120px;--form-max-width: 620px;--button-min-height: 42px}:root{--color: var(--text-color)}:root{font-size:var(--font-size-base);line-height:var(--line-height-base);font-family:var(--font-family);color:var(--_textColor, var(--textColor, var(--color)));background-color:var(--gray50)}:focus{outline:none}@media (min-width: 426px){:root{--page-header-topbar-height: var(--navigationMenuWidth);--page-content-spacing: 24px}}:is([data-text-align="left"]){text-align:left}:is([data-text-align="center"]){text-align:center}:is([data-text-align="right"]){text-align:right}:is([data-text="text-xs"]){font-size:var(--font-size-text-xs);line-height:var(--line-height-text-xs)}:is([data-text="text-sm"]){font-size:var(--font-size-text-sm);line-height:var(--line-height-text-sm)}:is([data-text="text-md"]){font-size:var(--font-size-text-md);line-height:var(--line-height-text-md)}:is([data-text="text-lg"]){font-size:var(--font-size-text-lg);line-height:var(--line-height-text-lg)}:is([data-text="text-xl"]){font-size:var(--font-size-text-xl);line-height:var(--line-height-text-xl)}:is([data-text="display-xs"]){font-size:var(--font-size-display-xs);line-height:var(--line-height-display-xs)}:is([data-text="display-sm"]){font-size:var(--font-size-display-sm);line-height:var(--line-height-display-sm)}:is([data-text="display-md"]){font-size:var(--font-size-display-md);line-height:var(--line-height-display-md)}:is([data-text="display-lg"]){font-size:var(--font-size-display-lg);line-height:var(--line-height-display-lg)}:is([data-text="display-xl"]){font-size:var(--font-size-display-xl);line-height:var(--line-height-display-xl)}:is([data-text="display-2xl"]){font-size:var(--font-size-display-2xl);line-height:var(--line-height-display-2xl)}:is([data-text="inherit"]){font-size:inherit;line-height:inherit}:is([data-text-weight="normal"]){font-weight:var(--font-weight-normal)!important}:is([data-text-weight="medium"]){font-weight:var(--font-weight-medium)!important}:is([data-text-weight="semibold"]){font-weight:var(--font-weight-semibold)!important}:is([data-text-weight="bold"]){font-weight:var(--font-weight-bold)!important}:is([data-text-weight="inherit"]){font-weight:inherit}:is([data-font="default"]){font-family:var(--font-family)}:is([data-font="code"]){font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;white-space:pre}[data-text][data-color=inherit]{color:inherit}[data-clamp-text]{overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:var(--_lines, 2);line-clamp:var(--_lines, 2);-webkit-box-orient:vertical}[data-clamp-text="1"]{--_lines: 1}[data-clamp-text="2"]{--_lines: 2}[data-clamp-text="3"]{--_lines: 3}.color-gray50{color:var(--gray50)}.color-gray100{color:var(--gray100)}.color-gray200{color:var(--gray200)}.color-gray300{color:var(--gray300)}.color-gray400{color:var(--gray400)}.color-gray500{color:var(--gray500)}.color-gray600{color:var(--gray600)}.color-gray700{color:var(--gray700)}.color-gray900{color:var(--gray900)}.color-primary500{color:var(--primary500)}.color-primary600{color:var(--primary600)}.color-primary700{color:var(--primary700)}.color-success50{color:var(--success50)}.color-success500,.color-success600{color:var(--success500)}.color-success700{color:var(--success700)}.color-error500{color:var(--error500)}.color-error600{color:var(--error600)}.color-error700{color:var(--error700)}.color-warning600{color:var(--warning600)}.color-warning700{color:var(--warning700)}.color-pink700{color:var(--pink700)}.color-white{color:#fff}.background-primary25{background:var(--primary25)}.background-primary50{background:var(--primary50)}.background-primary100{background:var(--primary100)}.background-primary600{background:var(--primary600)}.background-primary700{background:var(--primary700)}.background-success50{background:var(--success50)}.background-error50{background:var(--error50)}.background-warning50{background:var(--warning50)}.background-warning600{background:var(--warning600)}.background-warning700{background:var(--warning700)}.background-gray25{background:var(--gray25)}.background-gray50{background:var(--gray50)}.background-gray100{background:var(--gray100)}.background-gray200{background:var(--gray200)}.background-gray600{background:var(--gray600)}.background-gray700{background:var(--gray700)}.background-gray900{background:var(--gray900)}html,body,div{scroll-behavior:smooth}[data-color=gray]{--palette-light-contrast: var(--gray900);--palette-dark-contrast: #fff;--palette-25: var(--gray25);--palette-50: var(--gray50);--palette-100: var(--gray100);--palette-200: var(--gray200);--palette-300: var(--gray300);--palette-400: var(--gray400);--palette-500: var(--gray500);--palette-600: var(--gray600);--palette-700: var(--gray700);--palette-800: var(--gray800);--palette-900: var(--gray900)}[data-color=primary]{--palette-light-contrast: var(--gray900);--palette-dark-contrast: #fff;--palette-25: var(--primary25);--palette-50: var(--primary50);--palette-100: var(--primary100);--palette-200: var(--primary200);--palette-300: var(--primary300);--palette-400: var(--primary400);--palette-500: var(--primary500);--palette-600: var(--primary600);--palette-700: var(--primary700);--palette-800: var(--primary800);--palette-900: var(--primary900)}[data-color=warning]{--palette-light-contrast: var(--gray900);--palette-dark-contrast: var(--gray900);--palette-25: var(--warning25);--palette-50: var(--warning50);--palette-100: var(--warning100);--palette-200: var(--warning200);--palette-300: var(--warning300);--palette-400: var(--warning400);--palette-500: var(--warning500);--palette-600: var(--warning600);--palette-700: var(--warning700);--palette-800: var(--warning700);--palette-900: var(--warning700)}[data-color=error],[data-color=danger]{--palette-light-contrast: var(--gray900);--palette-dark-contrast: #fff;--palette-25: var(--error25);--palette-50: var(--error50);--palette-100: var(--error100);--palette-200: var(--error200);--palette-300: var(--error300);--palette-400: var(--error400);--palette-500: var(--error500);--palette-600: var(--error600);--palette-700: var(--error700);--palette-800: var(--error700);--palette-900: var(--error700)}[data-color=success]{--palette-light-contrast: var(--gray900);--palette-dark-contrast: #fff;--palette-25: var(--success25);--palette-50: var(--success50);--palette-100: var(--success100);--palette-200: var(--success200);--palette-300: var(--success300);--palette-400: var(--success400);--palette-500: var(--success500);--palette-600: var(--success600);--palette-700: var(--success700);--palette-800: var(--success700);--palette-900: var(--success700)}[data-color=red]{--palette-light-contrast: var(--gray900);--palette-dark-contrast: #fff;--palette-25: var(--red50);--palette-50: var(--red50);--palette-100: var(--red100);--palette-200: var(--red200);--palette-300: var(--red300);--palette-400: var(--red400);--palette-500: var(--red500);--palette-600: var(--red600);--palette-700: var(--red700);--palette-800: var(--red800);--palette-900: var(--red900)}[data-color=purple]{--palette-light-contrast: var(--gray900);--palette-dark-contrast: #fff;--palette-25: var(--purple50);--palette-50: var(--purple50);--palette-100: var(--purple100);--palette-200: var(--purple200);--palette-300: var(--purple300);--palette-400: var(--purple400);--palette-500: var(--purple500);--palette-600: var(--purple600);--palette-700: var(--purple700);--palette-800: var(--purple800);--palette-900: var(--purple900)}[data-color=deep-purple]{--palette-light-contrast: var(--gray900);--palette-dark-contrast: #fff;--palette-25: var(--deep-purple50);--palette-50: var(--deep-purple50);--palette-100: var(--deep-purple100);--palette-200: var(--deep-purple200);--palette-300: var(--deep-purple300);--palette-400: var(--deep-purple400);--palette-500: var(--deep-purple500);--palette-600: var(--deep-purple600);--palette-700: var(--deep-purple700);--palette-800: var(--deep-purple800);--palette-900: var(--deep-purple900)}[data-color=indigo]{--palette-light-contrast: var(--gray900);--palette-dark-contrast: #fff;--palette-25: var(--indigo50);--palette-50: var(--indigo50);--palette-100: var(--indigo100);--palette-200: var(--indigo200);--palette-300: var(--indigo300);--palette-400: var(--indigo400);--palette-500: var(--indigo500);--palette-600: var(--indigo600);--palette-700: var(--indigo700);--palette-800: var(--indigo800);--palette-900: var(--indigo900)}[data-color=blue]{--palette-light-contrast: var(--gray900);--palette-dark-contrast: #fff;--palette-25: var(--blue50);--palette-50: var(--blue50);--palette-100: var(--blue100);--palette-200: var(--blue200);--palette-300: var(--blue300);--palette-400: var(--blue400);--palette-500: var(--blue500);--palette-600: var(--blue600);--palette-700: var(--blue700);--palette-800: var(--blue800);--palette-900: var(--blue900)}[data-color=teal]{--palette-light-contrast: var(--gray900);--palette-dark-contrast: #fff;--palette-25: var(--teal50);--palette-50: var(--teal50);--palette-100: var(--teal100);--palette-200: var(--teal200);--palette-300: var(--teal300);--palette-400: var(--teal400);--palette-500: var(--teal500);--palette-600: var(--teal600);--palette-700: var(--teal700);--palette-800: var(--teal800);--palette-900: var(--teal900)}[data-color=green]{--palette-light-contrast: var(--gray900);--palette-dark-contrast: #fff;--palette-25: var(--green50);--palette-50: var(--green50);--palette-100: var(--green100);--palette-200: var(--green200);--palette-300: var(--green300);--palette-400: var(--green400);--palette-500: var(--green500);--palette-600: var(--green600);--palette-700: var(--green700);--palette-800: var(--green800);--palette-900: var(--green900)}[data-color=amber]{--palette-light-contrast: var(--gray900);--palette-dark-contrast: #fff;--palette-25: var(--amber50);--palette-50: var(--amber50);--palette-100: var(--amber100);--palette-200: var(--amber200);--palette-300: var(--amber300);--palette-400: var(--amber400);--palette-500: var(--amber500);--palette-600: var(--amber600);--palette-700: var(--amber700);--palette-800: var(--amber800);--palette-900: var(--amber900)}[data-color=orange]{--palette-light-contrast: var(--gray900);--palette-dark-contrast: #fff;--palette-25: var(--orange50);--palette-50: var(--orange50);--palette-100: var(--orange100);--palette-200: var(--orange200);--palette-300: var(--orange300);--palette-400: var(--orange400);--palette-500: var(--orange500);--palette-600: var(--orange600);--palette-700: var(--orange700);--palette-800: var(--orange800);--palette-900: var(--orange900)}[data-color=deep-orange]{--palette-light-contrast: var(--gray900);--palette-dark-contrast: #fff;--palette-25: var(--deep-orange50);--palette-50: var(--deep-orange50);--palette-100: var(--deep-orange100);--palette-200: var(--deep-orange200);--palette-300: var(--deep-orange300);--palette-400: var(--deep-orange400);--palette-500: var(--deep-orange500);--palette-600: var(--deep-orange600);--palette-700: var(--deep-orange700);--palette-800: var(--deep-orange800);--palette-900: var(--deep-orange900)}[data-color=blue-gray]{--palette-light-contrast: var(--gray900);--palette-dark-contrast: #fff;--palette-25: var(--blue-gray50);--palette-50: var(--blue-gray50);--palette-100: var(--blue-gray100);--palette-200: var(--blue-gray200);--palette-300: var(--blue-gray300);--palette-400: var(--blue-gray400);--palette-500: var(--blue-gray500);--palette-600: var(--blue-gray600);--palette-700: var(--blue-gray700);--palette-800: var(--blue-gray800);--palette-900: var(--blue-gray900)}[data-text-color]{color:var(--color)}[data-text-color=project-primary]{--color: var(--text-color-project)}[data-text-color=primary]{--color: var(--text-color)}[data-text-color=secondary]{--color: var(--text-color-secondary)}[data-text-color=inverse-primary]{--color: var(--text-color-dark)}[data-text-color=inverse-secondary]{--color: var(--text-color-secondary-dark)}[data-text-color=disabled]{--color: var(--disabled-color)}[data-text-color=error]{--color: var(--error700)}[data-text-color=warning]{--color: var(--warning700)}[data-on=dark][data-component-color=data-color]{--_onPrimaryColor: var(--palette-600);--_primaryColor: var(--palette-dark-contrast);--_onSecondaryColor: var(--palette-50);--_secondaryColor: var(--palette-light-contrast);--_primaryHoverColor: var(--palette-50);--_secondaryHoverColor: var(--palette-50);--_outlineColor: var(--palette-dark-contrast);--_borderlessBgColor: var(--palette-dark-contrast)}[data-on=light][data-component-color=data-color]{--_onPrimaryColor: var(--palette-dark-contrast);--_primaryColor: var(--palette-600);--_onSecondaryColor: var(--palette-light-contrast);--_secondaryColor: var(--palette-50);--_primaryHoverColor: var(--palette-500);--_secondaryHoverColor: var(--palette-50);--_outlineColor: var(--palette-200);--_borderlessBgColor: var(--palette-50)}[data-component-color=on-menu-bar]{--_onPrimaryColor: var(--menu-bar-background);--_primaryColor: var(--text-color-dark);--_secondaryColor: var(--text-color-secondary-dark);--_primaryHoverColor: rgba(255, 255, 255, .12);--_secondaryHoverColor: rgba(255, 255, 255, .12);--_outlineColor: transparent}[data-style=outlined-circle]{border-radius:50%;border:1px solid var(--gray100);overflow:hidden}[data-limit-width=page-panel]{max-width:var(--page-layout-panel-max-width)}[data-content-width=xs]{width:100%;max-width:var(--content-width-xs)}[data-content-width=sm]{width:100%;max-width:var(--content-width-sm)}[data-content-width=md]{width:100%;max-width:var(--content-width-md)}[data-content-width=lg]{width:100%;max-width:var(--content-width-lg)}[data-content-width=fill]{width:100%;max-width:unset}[data-visible=no]{visibility:hidden;animation-play-state:paused}[data-visible=yes]{visibility:visible}[data-scroll=none]{overflow:hidden}[data-cursor=pointer]{cursor:pointer}:is([data-w],[data-h],[data-size]){display:block;width:var(--_width);height:var(--_height)}[data-size]{--_width: var(--__ss);--_height: var(--__ss)}[data-w]{--_width: var(--__ss);--_height: auto}[data-h]{--_width: auto;--_height: var(--__ss)}:is([data-size="icon"],[data-w="icon"],[data-h="icon"]){--__ss: var(--ss-5)}:is([data-size="icon-large"],[data-w="icon-large"],[data-h="icon-large"]){--__ss: var(--ss-6)}:is([data-size="avatar"],[data-w="avatar"],[data-h="avatar"]){--__ss: var(--ss-7)}:is([data-size="avatar-large"],[data-w="avatar-large"],[data-h="avatar-large"]){--__ss: var(--ss-8)}:is([data-padding],[data-padding-y],[data-padding-x],[data-padding-l],[data-padding-t],[data-padding-r],[data-padding-b]){--_padding-t: 0;--_padding-r: 0;--_padding-b: 0;--_padding-l: 0;box-sizing:border-box;padding:var(--_padding-t) var(--_padding-r) var(--_padding-b) var(--_padding-l)}[data-padding="0"]{--_padding: var(--ss-0);--_padding-x: var(--ss-0);--_padding-y: var(--ss-0);--_padding-t: var(--ss-0);--_padding-r: var(--ss-0);--_padding-b: var(--ss-0);--_padding-l: var(--ss-0)}[data-padding="1"]{--_padding: var(--ss-1);--_padding-x: var(--ss-1);--_padding-y: var(--ss-1);--_padding-t: var(--ss-1);--_padding-r: var(--ss-1);--_padding-b: var(--ss-1);--_padding-l: var(--ss-1)}[data-padding="2"]{--_padding: var(--ss-2);--_padding-x: var(--ss-2);--_padding-y: var(--ss-2);--_padding-t: var(--ss-2);--_padding-r: var(--ss-2);--_padding-b: var(--ss-2);--_padding-l: var(--ss-2)}[data-padding="3"]{--_padding: var(--ss-3);--_padding-x: var(--ss-3);--_padding-y: var(--ss-3);--_padding-t: var(--ss-3);--_padding-r: var(--ss-3);--_padding-b: var(--ss-3);--_padding-l: var(--ss-3)}[data-padding="4"]{--_padding: var(--ss-4);--_padding-x: var(--ss-4);--_padding-y: var(--ss-4);--_padding-t: var(--ss-4);--_padding-r: var(--ss-4);--_padding-b: var(--ss-4);--_padding-l: var(--ss-4)}[data-padding="5"]{--_padding: var(--ss-5);--_padding-x: var(--ss-5);--_padding-y: var(--ss-5);--_padding-t: var(--ss-5);--_padding-r: var(--ss-5);--_padding-b: var(--ss-5);--_padding-l: var(--ss-5)}[data-padding="6"]{--_padding: var(--ss-6);--_padding-x: var(--ss-6);--_padding-y: var(--ss-6);--_padding-t: var(--ss-6);--_padding-r: var(--ss-6);--_padding-b: var(--ss-6);--_padding-l: var(--ss-6)}[data-padding="7"]{--_padding: var(--ss-7);--_padding-x: var(--ss-7);--_padding-y: var(--ss-7);--_padding-t: var(--ss-7);--_padding-r: var(--ss-7);--_padding-b: var(--ss-7);--_padding-l: var(--ss-7)}[data-padding-x="0"]{--_padding-x: var(--ss-0);--_padding-r: var(--ss-0);--_padding-l: var(--ss-0)}[data-padding-x="1"]{--_padding-x: var(--ss-1);--_padding-r: var(--ss-1);--_padding-l: var(--ss-1)}[data-padding-x="2"]{--_padding-x: var(--ss-2);--_padding-r: var(--ss-2);--_padding-l: var(--ss-2)}[data-padding-x="3"]{--_padding-x: var(--ss-3);--_padding-r: var(--ss-3);--_padding-l: var(--ss-3)}[data-padding-x="4"]{--_padding-x: var(--ss-4);--_padding-r: var(--ss-4);--_padding-l: var(--ss-4)}[data-padding-x="5"]{--_padding-x: var(--ss-5);--_padding-r: var(--ss-5);--_padding-l: var(--ss-5)}[data-padding-x="6"]{--_padding-x: var(--ss-6);--_padding-r: var(--ss-6);--_padding-l: var(--ss-6)}[data-padding-x="7"]{--_padding-x: var(--ss-7);--_padding-r: var(--ss-7);--_padding-l: var(--ss-7)}[data-padding-y="0"]{--_padding-y: var(--ss-0);--_padding-t: var(--ss-0);--_padding-b: var(--ss-0)}[data-padding-y="1"]{--_padding-y: var(--ss-1);--_padding-t: var(--ss-1);--_padding-b: var(--ss-1)}[data-padding-y="2"]{--_padding-y: var(--ss-2);--_padding-t: var(--ss-2);--_padding-b: var(--ss-2)}[data-padding-y="3"]{--_padding-y: var(--ss-3);--_padding-t: var(--ss-3);--_padding-b: var(--ss-3)}[data-padding-y="4"]{--_padding-y: var(--ss-4);--_padding-t: var(--ss-4);--_padding-b: var(--ss-4)}[data-padding-y="5"]{--_padding-y: var(--ss-5);--_padding-t: var(--ss-5);--_padding-b: var(--ss-5)}[data-padding-y="6"]{--_padding-y: var(--ss-6);--_padding-t: var(--ss-6);--_padding-b: var(--ss-6)}[data-padding-y="7"]{--_padding-y: var(--ss-7);--_padding-t: var(--ss-7);--_padding-b: var(--ss-7)}[data-padding-l="0"]{--_padding-l: var(--ss-0)}[data-padding-l="1"]{--_padding-l: var(--ss-1)}[data-padding-l="2"]{--_padding-l: var(--ss-2)}[data-padding-l="3"]{--_padding-l: var(--ss-3)}[data-padding-l="4"]{--_padding-l: var(--ss-4)}[data-padding-l="5"]{--_padding-l: var(--ss-5)}[data-padding-l="6"]{--_padding-l: var(--ss-6)}[data-padding-l="7"]{--_padding-l: var(--ss-7)}[data-padding-r="0"]{--_padding-r: var(--ss-0)}[data-padding-r="1"]{--_padding-r: var(--ss-1)}[data-padding-r="2"]{--_padding-r: var(--ss-2)}[data-padding-r="3"]{--_padding-r: var(--ss-3)}[data-padding-r="4"]{--_padding-r: var(--ss-4)}[data-padding-r="5"]{--_padding-r: var(--ss-5)}[data-padding-r="6"]{--_padding-r: var(--ss-6)}[data-padding-r="7"]{--_padding-r: var(--ss-7)}[data-padding-t="0"]{--_padding-t: var(--ss-0)}[data-padding-t="1"]{--_padding-t: var(--ss-1)}[data-padding-t="2"]{--_padding-t: var(--ss-2)}[data-padding-t="3"]{--_padding-t: var(--ss-3)}[data-padding-t="4"]{--_padding-t: var(--ss-4)}[data-padding-t="5"]{--_padding-t: var(--ss-5)}[data-padding-t="6"]{--_padding-t: var(--ss-6)}[data-padding-t="7"]{--_padding-t: var(--ss-7)}[data-padding-b="0"]{--_padding-b: var(--ss-0)}[data-padding-b="1"]{--_padding-b: var(--ss-1)}[data-padding-b="2"]{--_padding-b: var(--ss-2)}[data-padding-b="3"]{--_padding-b: var(--ss-3)}[data-padding-b="4"]{--_padding-b: var(--ss-4)}[data-padding-b="5"]{--_padding-b: var(--ss-5)}[data-padding-b="6"]{--_padding-b: var(--ss-6)}[data-padding-b="7"]{--_padding-b: var(--ss-7)}:where([data-flex]){--_gap: var(--ss-1);--_crossAxisAlign: center;--_mainAxisAlign: center}[data-flex]{display:flex;align-items:var(--_crossAxisAlign);justify-content:var(--_mainAxisAlign);gap:var(--_gap);flex-wrap:var(--_flexWrap, unset)}[data-flex=row]{flex-direction:row}[data-flex=row-inline]{display:inline-flex;flex-direction:row}[data-flex=column]{flex-direction:column}[data-flex][data-flex-wrap]{flex-wrap:wrap}[data-flex][data-flex-main-align=start]{--_mainAxisAlign: flex-start}[data-flex][data-flex-main-align=end]{--_mainAxisAlign: flex-end}[data-flex][data-flex-main-align=center]{--_mainAxisAlign: center}[data-flex][data-flex-main-align=space-between]{--_mainAxisAlign: space-between}[data-flex][data-flex-main-align=space-around]{--_mainAxisAlign: space-around}[data-flex][data-flex-main-align=space-evenly]{--_mainAxisAlign: space-evenly}[data-flex][data-flex-cross-align=center]{--_crossAxisAlign: center}[data-flex][data-flex-cross-align=start]{--_crossAxisAlign: flex-start}[data-flex][data-flex-cross-align=baseline]{--_crossAxisAlign: baseline}[data-flex][data-flex-cross-align=end]{--_crossAxisAlign: flex-end}[data-flex][data-flex-cross-align=stretch]{--_crossAxisAlign: stretch}[data-flex][data-flex-cross-align=between]{--_crossAxisAlign: space-between}[data-flex][data-flex-gap="1"]{--_gap: var(--ss-1)}[data-flex][data-flex-gap="2"]{--_gap: var(--ss-2)}[data-flex][data-flex-gap="3"]{--_gap: var(--ss-3)}[data-flex][data-flex-gap="4"]{--_gap: var(--ss-4)}[data-flex][data-flex-gap="5"]{--_gap: var(--ss-5)}[data-flex][data-flex-wrap=nowrap]{--_flexWrap: nowrap}[data-flex][data-flex-wrap=wrap]{--_flexWrap: wrap}*[data-flex-child=stretch]{flex:1}[data-flex-gap=none]{--_gap: 0}[data-grid]{display:grid}[data-grid][data-grid-template-columns="1fr 1fr"]{grid-template-columns:1fr 1fr}[data-grid][data-grid-template-columns="2fr 1fr"]{grid-template-columns:2fr 1fr}[data-grid-columns="1 / 2"]{grid-column:1 / 2}[data-grid-columns="2 / 3"]{grid-column:2 / 3}@media (max-width: 830px){[data-grid][data-grid-template-columns="1fr 1fr"],[data-grid][data-grid-template-columns="2fr 1fr"]{grid-template-columns:1fr}[data-grid-columns="1 / 2"]{grid-column:1}[data-grid-columns="2 / 3"]{margin-top:12px;grid-column:1}}.scrollable{--scrollbar-foreground: var(--primary500);--scrollbar-background: var(--gray200);overflow-x:unset;overflow-y:unset;scroll-behavior:smooth}.scrollable::-webkit-scrollbar{scrollbar-color:var(--scrollbar-foreground) var(--scrollbar-background);scrollbar-width:thin;width:8px;height:8px}.scrollable::-webkit-scrollbar-track{background-color:var(--scrollbar-background)}.scrollable::-webkit-scrollbar-thumb{background:var(--scrollbar-foreground)}.scrollable.xy{overflow-x:auto;overflow-y:auto}.scrollable.x{overflow-x:auto}.scrollable.not-x{overflow-x:hidden}.scrollable.y{overflow-y:auto}.scrollable.not-y{overflow-y:hidden}:where([data-animate="pulse"]){animation:pulse 2s ease 0s infinite}@keyframes pulse{0%{opacity:1}50%{opacity:.2}to{opacity:1}}[data-layout=unsupported]{width:100%;display:flex;flex-direction:column;align-items:flex-start;gap:16px;box-sizing:border-box;padding:var(--page-content-spacing);background-color:var(--primary900);color:var(--text-color-dark)}[data-layout=unsupported]>:first-child{margin-bottom:16px}[data-layout=unsupported]>*{width:100%;min-width:0;max-width:800px}div[data-layout=root]{width:100%;height:100%;display:flex;flex-direction:column;overflow:hidden}div[data-layout=root]>div[data-layout=body]{flex:1;width:100%;min-width:0;height:100%;overflow:hidden;display:flex;flex-direction:column;align-items:stretch}div[data-layout=body]>div[data-layout=content]{flex:1;width:100%;min-width:0;overflow-x:hidden;overflow-y:auto;display:flex;flex-direction:column;align-items:stretch}div[data-layout=body]>div[data-layout=status]{display:none}@media (min-width: 560px){div[data-layout=root]{flex-direction:row}div[data-layout=body]>div[data-layout=status]{width:100%;min-width:0;display:flex;flex-direction:row;align-items:center;justify-content:flex-end;gap:24px;border-top:1px solid var(--gray200);background-color:var(--gray50);padding:8px 32px;box-shadow:var(--shadow-1-up)}}.LinkedRobots-info-bar{display:flex;flex-direction:column;justify-content:space-evenly}[data-is=split]{width:100%;display:flex;justify-content:space-between;align-items:center}[data-is=split]>[data-split]{width:100%;box-sizing:border-box;display:flex;flex-direction:column;justify-content:space-between}[data-is=split]>[data-split=left]{align-items:flex-start}[data-is=split]>[data-split=right]{align-items:flex-end}.camera-description{display:flex;align-items:center}.camera-description>span{margin-right:10px}[data-layout=dual-column]{display:grid;grid-template-columns:1fr;width:100%;height:100vh}[data-layout=dual-column]>*{width:100%;box-sizing:border-box}[data-layout=dual-column]>[data-dualcolumn=left]{padding:32px;display:flex;flex-direction:column;justify-content:space-between}[data-layout=dual-column]>[data-dualcolumn=left]>[data-dualcolumn=logo]>svg{width:140px;height:auto}[data-layout=dual-column]>[data-dualcolumn=right]{display:none}[data-layout=dual-column]>[data-dualcolumn=right]>[data-dualcolumn=camera]{max-width:512px}[data-layout=dual-column]>[data-dualcolumn=left]>[data-dualcolumn=content]{width:100%;max-width:360px;margin:auto}[data-layout=dual-column]>[data-dualcolumn=left]>[data-dualcolumn=content]>[data-dualcolumn=header]{margin-bottom:var(--margin-4)}[data-layout=dual-column]>[data-dualcolumn=left]>[data-dualcolumn=content]>[data-dualcolumn=header]>[data-dualcolumn=title]{margin-bottom:var(--margin-2)}[data-layout=dual-column] [data-dualcolumn=links]{display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;justify-content:flex-start;margin:12px 0 0}[data-layout=dual-column] [data-dualcolumn=links]>*{margin:4px}@media (min-width: 800px){[data-layout=dual-column]{grid-template-columns:1fr 1fr}[data-layout=dual-column]>[data-dualcolumn=right]{display:flex;flex-direction:column;justify-content:center;align-items:center;border:1px solid var(--gray200);border-radius:80px 0 0 80px;overflow:hidden;background-color:#fff}}[data-layout=get-started]{display:flex;flex-direction:column;align-items:start;height:100vh;padding:var(--ss-10)}a[data-is=link]{color:var(--_color, var(--color, var(--palette-600)));font-weight:var(--font-weight-medium)}a[data-fill-width]{display:inline-block;width:100%}:where(ul,ol)[data-is=list]{display:flex;flex-direction:column;align-items:stretch;gap:var(--ss-1);margin:var(--ss-2);box-sizing:border-box;padding:0 0 0 var(--ss-3)}dialog[data-is=modal]{--_sideMargin: 16px;--_padding: 16px;--_width: 600px;--_maxWidth: calc(100vw - 2 * var(--_sideMargin));--_background: #fff;--_contentGap: 24px}dialog[data-is=modal]::backdrop{background:rgba(0,0,0,.25)}dialog[data-is=modal]{border-radius:var(--border-radius);border:0;max-height:90vh;width:var(--_width);max-width:var(--_maxWidth);box-sizing:border-box;padding:var(--_padding);background:var(--_background);box-shadow:var(--shadow-2);flex-direction:column;align-items:stretch;gap:var(--_contentGap)}dialog[data-is=modal][open]{display:flex}dialog[data-is=modal][data-modal-stick=top]{top:var(--_sideMargin);bottom:unset}dialog[data-is=modal][data-bg=gray]{--_background: var(--gray100)}dialog[data-is=modal][data-bg=black]{--_background: #000}dialog[data-is=modal]:not([data-scroll="none"]){overflow-x:hidden;overflow-y:auto}dialog[data-is=modal][data-scroll=none]{overflow:hidden}dialog[data-is=modal][data-padding="0"]{--_padding: 0}dialog[data-is=modal][data-modal-width=auto]{--_width: fit-content}dialog[data-is=modal][data-modal-width=sm]{--_width: 360px}dialog[data-is=modal][data-modal-width=md]{--_width: 480px}dialog[data-is=modal][data-modal-width=lg]{--_width: 560px}dialog[data-is=modal][data-modal-width=xl]{--_width: 960px}dialog[data-is=modal][data-modal-align=top]{position:fixed;top:64px;left:50%;transform:translate(-50%);margin:0}dialog[data-is=modal] header{display:flex;flex-direction:row;align-items:center}dialog[data-is=modal]>header>[data-modal-first=default]{flex:1;display:flex;flex-direction:column;align-items:flex-start;justify-content:center}dialog[data-is=modal]>header>[data-modal-first=back]{flex:1;display:flex;flex-direction:row;align-items:center;justify-content:space-between}dialog[data-is=modal]>header>[data-modal-back-button=true]{margin-right:10px}[data-is=page-header]{display:flex;flex-direction:column;justify-content:space-between;background-color:#fff}[data-is=page-header][data-page-header-level=primary]{box-shadow:var(--shadow-1-down);position:relative;z-index:10}[data-is=page-header]>[data-page-header=banner]{font-size:var(--font-size-text-sm);line-height:var(--line-height-text-sm);background-color:var(--primary500);color:var(--text-color-dark);padding:8px var(--page-content-spacing);box-sizing:border-box;text-align:center}[data-is=page-header]>[data-page-header=topbar]{display:flex;flex-direction:row;align-items:center;min-height:var(--page-header-topbar-height);padding:0 var(--page-content-spacing);border-bottom:var(--divider)}[data-is=page-header][data-page-header-small-start-padding]>[data-page-header=topbar]{padding:0 var(--page-content-spacing) 0 calc(var(--page-content-spacing) / 2)}[data-is=page-header]>[data-page-header=topbar]>:is(img,svg,[data-icon],[data-img],[data-is="button"]){margin-right:20px}[data-is=page-header]>[data-page-header=topbar]>:is(img,svg,[data-icon],[data-img]){width:48px;height:48px;display:flex}[data-is=page-header]>[data-page-header=topbar]>[data-page-header=left-side]{display:flex;flex:1;margin-right:20px;min-height:var(--btn-height-base)}[data-is=page-header]>[data-page-header=topbar]>[data-page-header=right-side]{display:flex;flex-direction:row;align-items:center;gap:12px}[data-is=page-header]:not([data-page-header-level="primary"]){border-top:var(--divider);border-left:var(--divider);border-right:var(--divider)}[data-is=page-header]:not([data-page-header-level="primary"]),[data-is=page-header]:not([data-page-header-level="primary"]) [data-is=page-menu]{border-radius:var(--border-radius)}[data-is=page-header]:not([data-page-header-level="primary"])>[data-page-header=banner]{border-radius:var(--border-radius) var(--border-radius) 0 0}[data-is=page-menu]{display:flex;flex-direction:column;gap:24px;justify-content:start;padding:0px var(--page-content-spacing);border-bottom:var(--divider)}[data-is=page-menu]>[data-page-menu=link]{--_borderColor: transparent;display:inline-flex;flex-direction:row;gap:8px;align-items:center;padding:12px 0;color:var(--gray500);font-size:var(--font-size-text-sm);font-weight:var(--font-weight-medium);border-bottom:2px solid var(--_borderColor)}[data-is=page-menu]>[data-page-menu=link].active{color:var(--primary500);--_borderColor: var(--primary500)}[data-is=page-menu]>[data-page-menu=link]:not(.active):hover{color:var(--primary500);background-color:var(--primary25)}@media (min-width: 760px){[data-is=page-menu]{flex-direction:row;align-items:center}}[data-is=page-content]{--__padding: var(--_padding, var(--page-content-spacing));--__gap: var(--_gap, var(--page-content-spacing))}[data-is=page-content]{display:flex;flex-direction:row;box-sizing:border-box;padding:var(--__padding) var(--__padding) var(--page-content-bottom-offset) var(--__padding);gap:24px}[data-is=page-content]>[data-page-content=main]{display:flex;flex-direction:column;flex:1;min-width:0;gap:var(--__gap)}[data-is=page-content][data-content=limit-width]{align-items:flex-start}[data-is=page-content][data-content=limit-width]>*{max-width:var(--page-layout-panel-max-width)}[data-is=page-content]>[data-page-content=side-panel]{display:flex;flex-direction:column;align-items:stretch;width:100%;max-width:360px;min-width:360px}[data-is=page-inset]{width:100%;display:flex;flex-direction:column;align-items:stretch;padding:var(--page-content-spacing);box-sizing:border-box;gap:24px}.PageSearch{width:100%;display:flex;flex-direction:column;align-items:stretch;box-sizing:border-box;padding:20px 24px;border-radius:var(--border-radius);background-color:#fff;border:var(--border-width-base) var(--border-style-base) var(--gray200);gap:24px}.PageSearch-field{display:flex;flex-direction:column;gap:6px}.PageSearch input[type=search]::-webkit-search-cancel-button{padding:2px;cursor:pointer}.PageSearchDropdown{display:flex;flex-direction:column;min-height:0;min-width:160px;gap:6px}.PageSearchDropdown-option{min-height:38px}.PageSearchDropdown .ant-select-selection-item,.PageSearchDropdown-option .ant-select-item-option-content{display:flex;flex-direction:row;align-items:center;justify-content:flex-start;gap:8px}@media (min-width: 720px){.PageSearch{flex-direction:row;align-items:center}.PageSearch-field{flex:1}}.ErrorPage{text-align:center}.ErrorPage>svg{--_iconSize: 128px;margin:auto}[data-header]{display:block;margin:0 0 24px}:where(svg[data-icon],[data-icon] > svg){--iconSize: 24px}[data-icon]:where(svg,[data-icon]){width:var(--_iconSize, var(--iconSize));height:var(--_iconSize, var(--iconSize));color:var(--_iconColor, var(--palette-600, inherit))}[data-icon]{display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:6;padding:var(--_iconPadding, 0);border-radius:var(--border-radius);background-color:var(--_bg, transparent)}[data-icon]>svg{width:100%;height:100%}svg[data-inner-offset="4"]{padding:4px}svg[data-size-override="6"]{--_iconSize: 6px}svg[data-size-override="14"]{--_iconSize: 14px}svg[data-size="6"]{--iconSize: 6px}svg[data-size="8"]{--iconSize: 8px}svg[data-size="16"]{--iconSize: 16px}svg[data-size="22"]{--iconSize: 22px}svg[data-size="24"]{--iconSize: 24px}svg[data-size="72"]{--iconSize: 72px}svg[data-size="96"]{--iconSize: 96px}svg[data-size="172"]{--iconSize: 172px}[data-is=icon-glow]{display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative;width:var(--_iconSize, var(--iconSize));height:var(--_iconSize, var(--iconSize))}[data-is=icon-glow]>:nth-child(1){width:100%;height:100%;position:absolute;left:0;top:0;background-color:var(--primary25);border-radius:100%;z-index:0}[data-is=icon-glow]>:nth-child(2){width:70%;height:70%;position:absolute;left:15%;top:15%;background-color:var(--primary50);border-radius:100%;z-index:1}[data-is=icon-glow]>:is(svg,[data-icon]){width:50%;height:50%}[data-icon][data-disabled=yes]{opacity:.7}[data-icon-color=gray]{color:var(--gray700)}*[data-is=divider]{--_maxWidth: unset;--_color: var(--divider-color);--_margin: 0}*[data-is=divider]{width:100%;max-width:var(--_maxWidth);margin:var(--_margin) 0;display:flex;flex-direction:row;gap:16px;align-items:center}*[data-is=divider]:not([data-divider="with-label"]){border-top:1px solid var(--_color)}*[data-is=divider][data-on=light]{--_color: var(--gray600)}*[data-is=divider][data-use-margin=yes]{--_margin: 16px}*[data-is=divider][data-divider=with-label]:before,*[data-is=divider][data-divider=with-label]:after{content:"";display:block;flex:1;height:1px;background-color:var(--_color)}*[data-is=divider][data-divider=with-label]>*{font-size:var(--font-size-text-md);font-weight:var(--font-weight-medium);color:var(--gray700)}div[data-is=spinner]{--_size: 48px;--_borderSize: calc(var(--_size) / 16)}div[data-is=spinner].spinner--icon{--_size: 16px;--_borderSize: calc(var(--_size) / 16)}div[data-is=spinner]{width:var(--_size);height:var(--_size);border-radius:50%;display:inline-block;position:relative;border:var(--_borderSize) solid;box-sizing:border-box;animation:rotation 1.2s linear infinite}div[data-is=spinner]:after,div[data-is=spinner]:before{content:"";position:absolute;left:0;right:0;top:0;bottom:0;margin:auto;border:var(--_borderSize) solid;--_smallerSize: calc(var(--_size) - 4px);width:var(--_smallerSize);height:var(--_smallerSize);border-radius:50%;box-sizing:border-box;animation:rotationBack .6s linear infinite;transform-origin:center center}div[data-is=spinner]:before{--_smallestSize: calc(var(--_smallerSize) - 4px);width:var(--_smallestSize);height:var(--_smallestSize);animation:rotation 2.4s linear infinite}div[data-is=spinner][data-visible=no]{animation-play-state:paused}@keyframes rotation{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes rotationBack{0%{transform:rotate(0)}to{transform:rotate(-360deg)}}[data-is=spinner-wrapper]{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:96px;width:100%;height:auto}div[data-is=spinner][data-on=dark]{border-color:#fff #fff transparent transparent}div[data-is=spinner][data-on=dark]:before{border-color:#FFF #FFF transparent transparent}div[data-is=spinner][data-on=dark]:after{border-color:var(--primary100) var(--primary100) transparent transparent}div[data-is=spinner][data-on=light]{border-color:var(--gray500) var(--gray500) transparent transparent}div[data-is=spinner][data-on=light]:before{border-color:var(--gray500) var(--gray500) transparent transparent}div[data-is=spinner][data-on=light]:after{border-color:var(--primary600) var(--primary600) transparent transparent}div[data-is=progress]{--_percent: 0%;--_height: 8px}div[data-is=progress]{width:100%;height:var(--_height);position:relative;background-color:var(--gray200);border-radius:calc(var(--_height) / 2)}div[data-is=progress]:after{content:"";position:absolute;top:0;left:0;width:var(--_percent);max-width:100%;height:100%;background-color:var(--palette-600, var(--primary600));border-radius:calc(var(--_height) / 2);transition:width .2s ease-out}:is(a[data-is="button"],button[data-is="button"],input[type="button"],input[type="submit"],input[type="reset"],input[type="file"],div[data-is="button-group"]),:is(input[type="file"])::file-selector-button{--_width: fit-content;--_height: var(--button-min-height);--_cursor: pointer;--_text-light: var(--text-color);--_text-dark: var(--text-color-dark);--_text: var(--_text-light);--_bg-light: hsl(0, 0%, 100%);--_bg-dark: hsl(210, 9%, 31%);--_buttonBackground: var(--_bg-light);--_input-well-light: hsl(210, 16%, 87%);--_input-well-dark: hsl(204, 10%, 10%);--_input-well: var(--_input-well-light);--_padding-inline: 1.75ch;--_padding-block: .75ch;--_border-radius: var(--border-radius);--_border-light: var(--border-color-base);--_border-dark: var(--_bg-dark);--_border: 1px solid var(--_border-light);--_highlight-size: 0;--_highlight-light: hsla(210, 10%, 71%, .25);--_highlight-dark: hsla(210, 10%, 5%, .25);--_highlight: var(--_highlight-light);--_icon-size: 2ch;--_shadow-color-light: 220 3% 15%;--_shadow-color-dark: 220 40% 2%;--_shadow-color: var(--_shadow-color-light);--_shadow-strength-light: 1%;--_shadow-strength-dark: 25%;--_shadow-strength: var(--_shadow-strength-light);--_shadow-1: 0 1px 2px -1px hsl(var(--_shadow-color)/calc(var(--_shadow-strength) + 9%));--_shadow-2: 0 3px 5px -2px hsl(var(--_shadow-color)/calc(var(--_shadow-strength) + 3%)), 0 7px 14px -5px hsl(var(--_shadow-color)/calc(var(--_shadow-strength) + 5%));--_shadow-depth-light: 0 1px var(--_border-light);--_shadow-depth-dark: 0 1px var(--_bg-dark);--_shadow-depth: var(--_shadow-depth-light);--_transition-motion-reduce: none;--_transition-motion-ok: box-shadow 145ms ease, outline-offset 145ms ease;--_transition: var(--_transition-motion-reduce);font:inherit;letter-spacing:inherit;line-height:1.5;border-radius:var(--_border-radius)}@media (prefers-reduced-motion: no-preference){:is(a[data-is="button"],button[data-is="button"],input[type="button"],input[type="submit"],input[type="reset"],input[type="file"],div[data-is="button-group"]),:is(input[type="file"])::file-selector-button{--_transition: var(--_transition-motion-ok)}}:is(a[data-is="button"],button[data-is="button"],input[type="button"],input[type="submit"],div[data-is="button-group"],input[type="reset"]):not(:is([role="switch"],[hidden])),:is(input[type="file"])::file-selector-button{cursor:var(--_cursor);touch-action:manipulation;box-sizing:border-box;display:inline-block;width:var(--_width);min-width:fit-content;height:var(--_height);font-size:var(--_size, 1rem);line-height:var(--_lineHeight, 1);background:var(--_buttonBackground);color:var(--_text);border:var(--_border);transition:var(--_transition);position:relative;font-weight:500;user-select:none;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none}:is(a[data-is="button"],button[data-is="button"],input[type="button"],input[type="submit"],input[type="reset"]):not([role="switch"])>[data-button=inner]{width:100%;height:100%;padding-block:var(--_padding-block);padding-inline:var(--_padding-inline);display:inline-flex;justify-content:center;align-items:center;text-align:center;gap:1ch}:is(a[data-is="button"],button[data-is="button"],input[type="button"],input[type="submit"],input[type="reset"]):not([role="switch"])[data-hide-children=yes]>[data-button=inner]{visibility:hidden}:is(a[data-is="button"],button[data-is="button"],input[type="button"],input[type="submit"],input[type="reset"]):not([role="switch"])>[data-button=inner] :where(svg,[data-icon]){block-size:var(--_icon-size);inline-size:var(--_icon-size);color:var(--_icon-color, var(--_text));border-radius:0;flex-shrink:0;fill:none;stroke-linecap:round;stroke-linejoin:round}:is(a[data-is="button"],button[data-is="button"],input[type="button"],input[type="submit"],input[type="reset"])>[data-is=spinner]{position:absolute;--_size: calc(var(--_height) - 12px);--_lineHeight: 1;left:calc(50% - (var(--_size) / 2));top:calc((var(--_height) / 2) - (var(--_size) / 2))}:is(a[data-is="button"],button,input):where(:not(:active)):focus-visible{outline-offset:5px}:where(a[data-is="button"],button[data-is="button"],input[type="button"],input[type="submit"],input[type="reset"]):where(:not(:active):hover){--_highlight-size: .5rem}:where(input[type="file"]){inline-size:100%;max-inline-size:max-content;background-color:var(--_input-well)}:where(input[type="button"]),:where(input[type="file"])::file-selector-button{appearance:none}:where(input[type="file"])::file-selector-button{margin-inline-end:var(--_padding-inline)}:is(a[data-is="button"],button[data-is="button"],input[type="button"],input[type="submit"],input[type="reset"]):is([disabled],[data-disabled]){--_cursor: not-allowed;--_onPrimaryColor: var(--gray500);--_primaryColor: var(--gray400);--_secondaryColor: var(--gray400);--_shadow-depth: none}:is(a[data-is="button"],button[data-is="button"],input[type="button"],input[type="submit"],input[type="reset"],input[type="file"])[data-btn-type=primary]{--_buttonBackground: var(--_primaryColor);--_border: 1px solid var(--_primaryColor);--_text: var(--_onPrimaryColor)}:is(a[data-is="button"],button[data-is="button"],input[type="button"],input[type="submit"],input[type="reset"],input[type="file"])[data-btn-type=primary]:is([disabled],[data-disabled]){--_shadow-depth: none;--_buttonBackground: transparent;--_border: none;--_text: var(--_secondaryColor)}:is(a[data-is="button"],button[data-is="button"],input[type="button"],input[type="submit"],input[type="reset"],input[type="file"])[data-btn-type=primary]:hover{--_buttonBackground: var(--_primaryHoverColor)}:is(a[data-is="button"],button[data-is="button"],input[type="button"],input[type="submit"],input[type="reset"],input[type="file"])[data-btn-type=secondary]{--_buttonBackground: transparent;--_border: 1px solid var(--_outlineColor);--_text: var(--_primaryColor);--_shadow-depth: none}:is(a[data-is="button"],button[data-is="button"],input[type="button"],input[type="submit"],input[type="reset"],input[type="file"]):not(a[data-dropdown="parent"],button[data-dropdown="parent"])[data-btn-type=secondary]:hover{--_buttonBackground: var(--_secondaryHoverColor)}:is(a[data-is="button"],button[data-is="button"],input[type="button"],input[type="submit"],input[type="reset"],input[type="file"])[data-btn-type=tertiary]{--_buttonBackground: transparent;--_border: none;--_text: var(--_primaryColor);--_padding-inline: 0;--_padding-block: 0;--_shadow-depth: none;--_height: auto}:is(a[data-is="button"],button[data-is="button"],input[type="button"],input[type="submit"],input[type="reset"],input[type="file"])[data-btn-type=menu-bar]{--_buttonBackground: transparent;--_border: none;--_text: var(--_primaryColor);--_padding-inline: 12px;--_padding-block: 0;--_shadow-depth: none;--_height: 100%;--_border-radius: 0;--_size: .86rem !important}:is(a[data-is="button"],button[data-is="button"],input[type="button"],input[type="submit"],input[type="reset"],input[type="file"])[data-btn-type=menu-bar]:hover{--_buttonBackground: var(--_primaryHoverColor)}:is(a[data-is="button"],button[data-is="button"],input[type="button"],input[type="submit"],input[type="reset"],input[type="file"])[data-fill-width]{--_width: 100%;min-width:fit-content}:is(a[data-is="button"],button[data-is="button"],input[type="button"],input[type="submit"],input[type="reset"],input[type="file"])[data-fill-width]:not([data-btn-align="center"])>[data-button=inner]{justify-content:flex-start}dialog[data-is=modal] :is(a[data-is="button"],button[data-is="button"],input[type="button"],input[type="submit"],input[type="reset"],input[type="file"])[data-fill-width]>[data-button=inner]{justify-content:center}:is(a[data-is="button"],button[data-is="button"],input[type="button"],input[type="submit"],input[type="reset"],input[type="file"])[data-btn-size=xs]{--_icon-size: 18px;--_height: 34px;--_size: .85rem;--_padding-inline: 1.5ch;--_padding-block: .5ch;font-size:small}:is(a[data-is="button"],button[data-is="button"],input[type="button"],input[type="submit"],input[type="reset"],input[type="file"])[data-btn-size=sm]{--_icon-size: 18px;--_height: 38px;--_padding-inline: 1.5ch;--_padding-block: .5ch}:is(a[data-is="button"],button[data-is="button"],input[type="button"],input[type="submit"],input[type="reset"],input[type="file"])[data-btn-size=md]{--_icon-size: 18px;--_height: 42px;--_size: 1rem}:is(a[data-is="button"],button[data-is="button"],input[type="button"],input[type="submit"],input[type="reset"],input[type="file"]):is([data-btn-size="lg"]){--_icon-size: 24px;--_height: 48px;--_size: 1.2rem}:is(a[data-is="button"],button[data-is="button"],input[type="button"],input[type="submit"],input[type="reset"],input[type="file"])[data-btn-size=xl]{--_icon-size: 28px;--_height: 56px;--_size: 1.4rem}:is(a[data-is="button"],button[data-is="button"],input[type="button"],input[type="submit"],input[type="reset"],input[type="file"])>span[data-button=inner]>span:not([data-btn-icon="end"]){display:inline-block;flex:1;min-width:0}div[data-is=button-group]{display:flex;flex-direction:row;gap:4px;overflow:hidden}div[data-is=button-group]>:is(a[data-is="button"],button[data-is="button"],input[type="button"],input[type="submit"],input[type="reset"]):not(:is([role="switch"],[hidden])),:is(input[type="file"])::file-selector-button{border:none!important;box-shadow:none!important;border-radius:0!important;--button-min-height: calc(var(--button-min-height) - 2px)}[data-tooltip]{position:relative}[data-tooltip] dialog{display:none;z-index:999999;visibility:hidden;position:absolute;background-color:transparent;border:0;transition:visibility .5s ease-in-out .5s;width:0}[data-tooltip] dialog>:first-child{display:flex;flex-direction:row;align-items:center;border-radius:var(--border-radius);background-color:#000;padding:8px var(--container-padding);box-sizing:border-box;color:var(--text-color-dark);box-shadow:var(--shadow-2);width:max-content;white-space:nowrap;word-break:keep-all}[data-tooltip][data-tooltip-placement=right] dialog{left:calc(100% + var(--ss-1));flex-direction:row;align-items:center;justify-content:flex-start}[data-tooltip][data-tooltip-placement=left] dialog{left:calc(-1 * var(--ss-1) - 100%);flex-direction:row;align-items:center;justify-content:flex-end}[data-tooltip][data-tooltip-placement=top] dialog{top:calc(-1 * (100% + var(--ss-1)))}[data-tooltip][data-tooltip-placement=bottom] dialog{top:calc(100% + var(--ss-1))}[data-tooltip] dialog[open]{display:flex;visibility:visible}[data-is=tabs]{display:flex;flex-direction:row;justify-content:start;padding:8px 0}[data-is=tabs][data-tabs-type=header]{padding:8px var(--page-content-spacing);box-sizing:border-box;border-bottom:var(--divider)}[data-is=tabs]>[data-tabs=tab]{padding:8px 12px;margin-right:8px;border-radius:6px;color:var(--gray500);font-size:var(--font-size-text-sm);font-weight:var(--font-weight-medium);cursor:pointer}[data-is=tabs]>[data-tabs=tab][data-tabs-active]{background-color:var(--primary500);color:var(--white)}[data-is=tabs]>[data-tabs=tab]:not([data-tabs-active]):hover{color:var(--primary500)}[data-is=input]:not([data-input-size]){--_minWidth: var(--inputMinWidth);--_height: var(--inputHeightBase);--_paddingVertical: var(--inputPaddingVertical);--_paddingHorizontal: var(--inputPaddingHorizontal)}[data-is=input][data-input-size=lg]{--_height: var(--inputHeightLg);--_paddingVertical: var(--inputPaddingVerticalLg);--_paddingHorizontal: var(--inputPaddingHorizontalLg)}[data-is=input][data-input-size=sm]{--_height: var(--inputHeightSm);--_paddingVertical: var(--inputPaddingVerticalSm);--_paddingHorizontal: var(--inputPaddingHorizontalSm)}[data-is=input]>:is(input,textarea){border:none;background-image:none;background:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}[data-is=input]{border-radius:var(--border-radius);width:auto;min-width:var(--_minWidth);height:var(--_height);display:flex;flex-direction:row}[data-is=input][data-textarea]{flex-direction:column;height:auto;min-height:calc(var(--_height) * var(--_minLines, 3))}[data-is=input][data-textarea]>textarea{display:block;resize:none;width:100%}[data-is=input]>.prefix{display:flex;flex-direction:row;align-items:center;justify-content:center;box-sizing:border-box;padding:0 12px;background-color:var(--gray50)}[data-is=input]>.prefix>svg{width:20px;height:20px;color:var(--gray600)}[data-is=input]>:is(input,textarea){flex:1;height:100%;box-sizing:border-box;background-color:#fff;padding-top:var(--_paddingVertical);padding-bottom:var(--_paddingVertical);padding-left:var(--_paddingHorizontal);padding-right:var(--_paddingHorizontal);color:var(--gray900);border-top:1px solid var(--border-color-base);border-bottom:1px solid var(--border-color-base);border-right:1px solid var(--border-color-base);border-left:1px solid var(--border-color-base)}[data-is=input][data-prefix=prefix]>input{flex:1;height:100%;box-sizing:border-box;background-color:#fff;padding-top:var(--_paddingVertical);padding-bottom:var(--_paddingVertical);padding-left:0;padding-right:var(--_paddingHorizontal);color:var(--gray900);border-top:1px solid var(--border-color-base);border-bottom:1px solid var(--border-color-base);border-right:1px solid var(--border-color-base);border-left:none!important}[data-is=input]:focus-within>:is(input,textarea,.prefix){outline:none;border:0}[data-is=input]:focus-within{border:1px solid var(--primary300)}[data-is=input]>:is(input,textarea)::placeholder{color:var(--gray300)}[data-is=input]>:is(input,textarea)[disabled]{background-color:var(--gray50);color:var(--gray500)}[data-is=input]>:first-child{border-top-left-radius:var(--border-radius);border-bottom-left-radius:var(--border-radius);border-left:1px solid var(--border-color-base);border-top:1px solid var(--border-color-base);border-bottom:1px solid var(--border-color-base)}[data-is=input]>:first-child:not(:is(input,textarea)){height:100%;border-top-right-radius:0;border-bottom-right-radius:0}[data-is=input]>:last-child{border-top-right-radius:var(--border-radius);border-bottom-right-radius:var(--border-radius);border-right:1px solid var(--border-color-base);border-top:1px solid var(--border-color-base);border-bottom:1px solid var(--border-color-base)}[data-is=input]>:last-child:not(:is(input,textarea)){height:100%;border-top-left-radius:0;border-bottom-left-radius:0}*[data-dropdown=parent]{position:relative}dialog[data-is=dropdown]{width:100%;min-width:0;display:none;border:0;flex-direction:column;min-height:0;padding:0;justify-content:flex-start;top:100%;z-index:10000}dialog[data-is=dropdown][data-dropdown-secondary=yes]{width:100%;display:none;border:0;flex-direction:column;min-height:0;padding:0;justify-content:flex-start;top:80%;bottom:100%;left:100%;z-index:10000}dialog[data-is=dropdown][data-dropdown-position=left]{align-items:flex-end}dialog[data-is=dropdown][data-dropdown-position=right]{align-items:flex-start}dialog[data-is=dropdown]>div{display:flex;width:max-content;min-width:100%;flex-direction:column;align-items:flex-end;justify-content:flex-start;background-color:var(--white);border:1px solid var(--_outlineColor);box-shadow:var(--shadow-sm);border-radius:var(--border-radius)}dialog[data-is=dropdown][open]{display:flex}dialog[data-is=dropdown]>div>:is(div,a)[data-is=dropdown-action]{width:max-content;min-width:100%;display:flex;flex-direction:row;gap:12px;align-items:center;min-height:var(--button-min-height);box-sizing:border-box;padding:0 16px;text-align:start;cursor:pointer}dialog[data-is=dropdown]>div>:is(div,a)[data-is=dropdown-action]{--_textColor: var(--gray900);--_iconSize: 16px;--_iconColor: var(--gray500)}dialog[data-is=dropdown]>div>:is(div,a)[data-is=dropdown-action]:hover{background-color:var(--gray100)}dialog[data-is=dropdown]>div>:is(div,a)[data-is=dropdown-action]{color:var(--_textColor)}dialog[data-is=dropdown]>div>:is(div,a)[data-is=dropdown-action] :is(svg,[data-icon]){block-size:var(--_iconSize);inline-size:var(--_iconSize);color:var(--_iconColor);flex-shrink:0;fill:none;stroke-linecap:round;stroke-linejoin:round}dialog[data-is=dropdown]>div>:is(div,a)[data-is=dropdown-action][data-disabled]{--_textColor: var(--disabled-color);--_iconColor: var(--disabled-color)}dialog[data-is=dropdown]>div>:is(div,a)[data-is=dropdown-action][data-action=danger]{--_textColor: var(--danger600);--_iconColor: var(--danger600)}[data-is=button-select]>[data-is=button]{border-radius:0;border-left:0;border-right:0}[data-is=button-select]>[data-is=button]:first-child{border-left:var(--_border);border-top-left-radius:var(--_border-radius);border-bottom-left-radius:var(--_border-radius)}[data-is=button-select]>[data-is=button]:last-child{border-right:var(--_border);border-top-right-radius:var(--_border-radius);border-bottom-right-radius:var(--_border-radius)}[data-is=button-select]>[data-is=button].ButtonSelect-selected{background:var(--primary50);border:1px solid var(--_primaryColor)}[data-is=select],.select-search-container{--_border: var(--border-color-base);--_arrowColor: var(--gray400);--_height: var(--inputHeightBase);--_fieldTextColor: var(--text-color);--_background: #fff}[data-is=select][data-input-size=lg],.select-search-container.lg{--_height: var(--inputHeightLg)}[data-is=select][data-input-size=sm],.select-search-container.sm{--_height: var(--inputHeightSm)}[data-is=select][data-select-height=fit-content]{--_height: max(max-content, var(--_selectItemMinHeight))}[data-is=select][data-on=dark]{--_border: var(--border-color-dark);--_fieldTextColor: var(--text-color-dark);--_background: rgba(0, 0, 0, .6)}[data-is=select],.select-search-container,[data-select=dialog]{--_iconSize: 24px;--_iconColor: var(--primary500);--_selectItemMinHeight: 48px;--_selectItemVerticalPadding: var(--ss-1);--_selectItemHorizontalPadding: var(--container-padding);--_selectItemGap: var(--ss-2);--_maxHeight: 220px}[data-is=select],.select-search-container{background-color:var(--_background);min-height:var(--inputHeightBase);border:1px solid var(--_border);border-radius:var(--border-radius);cursor:pointer;font-size:var(--font-size-text-sm);line-height:var(--line-height-text-sm);position:relative}.select-search-container{padding:0 8px;box-sizing:border-box;display:flex;flex-direction:row;align-items:center}.select-search-container>.select-search__control{flex:1}[data-is=select]>[data-select=field]{border-radius:var(--border-radius);border:none;height:var(--_height);font-family:inherit;font-size:inherit;cursor:inherit;line-height:inherit;outline:none;width:100%;min-width:fit-content;color:var(--_fieldTextColor);display:flex;flex-direction:row;align-items:center}[data-is=select]>[data-select=field]>:first-child{flex:1}[data-is=select]>[data-select=field]>svg{margin:0 8px;--_iconColor: var(--gray300)}[data-select=field][data-disabled=""]{background-color:var(--gray50);color:var(--gray500)}dialog[data-select=dialog]{width:100%;min-width:100%;display:none;border:0;flex-direction:column;min-height:0;padding:0;align-items:stretch;justify-content:flex-start;top:100%;z-index:10000;max-height:var(--_maxHeight);overflow-y:auto;box-shadow:var(--shadow-2);border-radius:0 0 var(--border-radius) var(--border-radius)}dialog[data-select=dialog][open]{display:flex}dialog[data-select=dialog]>[data-select=item]:hover{background-color:#0000000a}dialog[data-select=dialog]>[data-select=item],[data-is=select]>[data-select=field]>[data-select=item]{display:flex;width:100%;height:max-content;min-height:var(--_selectItemMinHeight);flex-direction:row;gap:var(--_selectItemGap);align-items:center;box-sizing:border-box;cursor:pointer;padding:var(--_selectItemVerticalPadding) var(--_selectItemHorizontalPadding)}[data-is=select]:not([data-select-height="fit-content"])>[data-select=field]>[data-select=item]{height:100%;padding:0 var(--_selectItemHorizontalPadding)}[data-select=item][data-disabled]{color:var(--disabled-color)}[data-select=item] :where(svg,[data-icon]){block-size:var(--_iconSize);inline-size:var(--_iconSize);color:var(--_iconColor);flex-shrink:0;fill:none;stroke-linecap:round;stroke-linejoin:round}[data-is=select] [dropdown-arrow]{width:24px;height:24px;margin-right:8px;pointer-events:none;color:var(--_arrowColor);grid-area:select;justify-self:end}.select-search-divider{align-items:center;display:flex;justify-content:space-between}.select-search-divider-option{background-color:#ebecf0;border-radius:2em;color:#172b4d;display:inline-block;font-size:12;font-weight:400;line-height:1;min-width:1;padding:.16666667em .5em;text-align:center}div[data-is=badge]{--_paddingVertical: 2px;--_paddingHorizontal: 8px;--_gap: 4px;--_height: 22px;--_borderRadius: 11px;--_textWeight: var(--font-weight-medium);--_textSize: var(--font-size-text-xs);--_lineHeight: var(--line-height-text-xs);--_iconSize: 12px}div[data-is=badge][data-look=strong]{--_textColor: var(--_onPrimaryColor, #ffffff);--_bg: var(--_primaryColor, var(--gray500))}div[data-is=badge][data-look=light]{--_textColor: var(--_primaryColor, var(--gray500));--_bg: var(--_secondaryColor, var(--gray100))}div[data-is=badge][data-look=transparent]{--_textColor: var(--_primaryColor, var(--gray500));--_bg: transparent}div[data-is=badge]{display:flex;width:fit-content;height:var(--_height);padding:var(--_paddingVertical) var(--_paddingHorizontal);border-radius:var(--_borderRadius);flex-direction:row;justify-content:center;align-items:center;gap:var(--_gap);color:var(--_textColor);font-weight:var(--_textWeight);font-size:var(--_textSize);line-height:var(--_lineHeight);background-color:var(--_bg);user-select:none}div[data-is=badge][data-padding="0"]{--_paddingVertical: 0;--_paddingHorizontal: 0}div[data-is=navigation-menu]{width:100%;height:var(--layout-navmenu-mobile-height);border-bottom:var(--divider);display:flex;flex-direction:row;align-items:center;background-color:var(--navigationMenuBackground);box-sizing:border-box;gap:16px;padding:0 var(--page-content-spacing)}div[data-is=navigation-menu]>[data-device=mobile]{display:flex}div[data-is=navigation-menu]>[data-device=desktop]{display:none}div[data-is=navigation-menu]>[data-layout-nav=logo]{--_logoSize: calc(var(--layout-navmenu-mobile-height) - 12px);width:var(--_logoSize);height:var(--_logoSize);background-color:var(--palette-600)}div[data-is=navigation-menu]>[data-layout-nav=logo]>svg{--_iconSize: var(--_logoSize);--_iconColor: var(--palette-dark-contrast)}div[data-is=navigation-menu] [data-nav-menu=divider]{display:none}div[data-is=navigation-menu]>nav{display:flex;flex-direction:row;align-items:center;gap:12px}div[data-is=navigation-menu]>nav:last-child{flex:1;justify-content:flex-end}div[data-is=navigation-menu]>nav[data-device=desktop] a{--_background: transparent;--_borderColor: var(--divider-color);--_opacity: 1;--__color: var(--gray600);--_textColor: var(--__color);--_iconColor: var(--__color)}div[data-is=navigation-menu]>nav[data-device=desktop] a{width:38px;height:38px;border-radius:var(--border-radius);border:1px solid var(--_borderColor);background:var(--_background);display:flex;flex-direction:row;align-items:center;justify-content:center;color:var(--__color);cursor:pointer}div[data-is=navigation-menu]>nav[data-device=desktop] a:has(img){--border-radius: 48px}div[data-is=navigation-menu]>nav[data-device=desktop] a>svg{width:24px;height:24px}div[data-is=navigation-menu]>nav[data-device=desktop] a.avatar :is(img,svg){width:100%;height:100%;border-radius:var(--border-radius);opacity:var(--_opacity)}div[data-is=navigation-menu]>nav[data-device=desktop] *.active{--_background: var(--palette-600);--__color: var(--palette-dark-contrast);--_borderColor: transparent;--_opacity: .7}@media (min-width: 560px){div[data-is=navigation-menu]{width:var(--navigationMenuWidth);height:100%;flex-direction:column;border-bottom:none;border-right:var(--divider);padding:0;gap:0}div[data-is=navigation-menu]>[data-layout-nav=logo]{--_logoSize: var(--page-header-topbar-height);width:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;border-bottom:var(--divider)}div[data-is=navigation-menu]>[data-layout-nav=logo]>svg{--_iconSize: 48px}div[data-is=navigation-menu]>nav{flex-direction:column;padding:var(--container-padding) 0;box-sizing:border-box}div[data-is=navigation-menu] [data-nav-menu=divider]{display:block;height:1px;width:var(--navigationMenuWidth);background-color:var(--gray100);margin:8px 0}div[data-is=navigation-menu]>nav:last-child{flex:unset}div[data-is=navigation-menu]>nav>a{width:42px;height:42px}div[data-is=navigation-menu]>[data-device=mobile]{display:none}div[data-is=navigation-menu]>[data-device=desktop]{display:flex}}div[data-is=switch]{--_width: 36px;--_borderWidth: 1px;--_baseHeight: 20px;--_height: calc(2 * var(--_borderWidth) + var(--_baseHeight));--_color: var(--gray300);--_circleOffset: 2px;--_circleSize: calc(var(--_baseHeight) - (2 * var(--_circleOffset)))}div[data-is=switch]{width:var(--_width);height:var(--_height);box-sizing:border-box;border-radius:calc(var(--_height) / 2);border:var(--_borderWidth) solid var(--gray200);position:relative;cursor:pointer;background-color:var(--_color)}div[data-switch]:before{position:absolute;content:"";display:block;width:var(--_circleSize);height:var(--_circleSize);border-radius:calc(var(--_circleSize) / 2);top:var(--_circleOffset);left:var(--_circleOffset);transition:left .15s ease-in-out;background-color:var(--white)}div[data-switch=on]{--_color: var(--primary500)}div[data-switch=on]:before{left:calc(var(--_width) - var(--_circleOffset) - var(--_circleSize) - (2 * var(--_borderWidth)))}div[data-switch=off]{--_color: var(--gray200)}div[data-switch=off]:before{left:var(--_circleOffset)}.Table{--_cell-padding: 16px;--_cell-gap: 8px;--_divider: 1px solid var(--divider-color)}.Table{display:flex;flex-direction:column;align-items:stretch;width:100%;border-radius:var(--border-radius);background-color:#fff;border:var(--border-width-base) var(--border-style-base) var(--divider-color)}.Table-header{grid-column:1 / -1;display:flex;flex-direction:row;align-items:center;min-height:var(--container-header-min-height);padding:0 var(--_cell-padding);border-bottom:var(--_divider)}.Table-header-title{flex:1;min-width:0}.Table-body{display:grid}.Table-headerCell,.Table-cell{display:flex;flex-direction:row;align-items:center;justify-content:none;padding:0 var(--_cell-padding);gap:var(--_cell-gap);--_iconSize: 38px}.Table-cell>[data-flex]:first-child{width:100%}.Table-headerCell{min-height:44px;border-bottom:var(--_divider);font-weight:var(--font-weight-medium);font-size:var(--font-size-text-sm);color:var(--gray500)}.Table-filtersAppliedRow{display:flex;flex-direction:row;align-items:center;background-color:var(--primary25);box-sizing:border-box;padding:0 var(--_cell-padding);min-height:56px}.Table-filtersAppliedRow>:first-child{flex:1;min-width:0;font-weight:500}.Table-cell{min-height:64px}.Table-cell.cellAlign-start,.Table-headerCell.cellAlign-start{text-align:start;justify-content:flex-start}.Table-cell.cellAlign-center,.Table-headerCell.cellAlign-center{text-align:center;justify-content:center}.Table-cell.cellAlign-end,.Table-headerCell.cellAlign-end{text-align:end;justify-content:flex-end}.Table-cell.clickable{cursor:pointer}.Table-emptyContent{width:100%;display:flex;flex-direction:column;align-items:center;padding:40px 0}.Table-emptyContent-body{width:352px;display:flex;flex-direction:column;align-items:center}.LinkedRobots.Table-emptyContent-body{min-width:500px}.Table-emptyContent-body>svg{--_iconSize: 128px}.Table-emptyContent-body>.title{margin-top:16px}.Table-emptyContent-body>.text{margin-top:4px}.Table-emptyContent-actions{width:100%;display:flex;flex-direction:row;align-items:center;justify-content:center;margin-top:16px}[data-is=card]{--_contentGap: var(--container-padding);--_paddingVertical: var(--container-padding);--_paddingHorizontal: var(--container-padding);--_backgroundColor: var(--white);--_cursor: "default";--_width: 100%;--_minWidth: 0;--_height: auto;--_minHeight: 0}[data-is=card]{display:flex;flex-direction:column;width:var(--_width);min-width:var(--_minWidth);height:var(--_height);min-height:var(--_minHeight);background-color:var(--_backgroundColor);border:var(--_divider, var(--divider));cursor:var(--_cursor);box-sizing:border-box;border-radius:var(--border-radius)}[data-is=card][data-color]{--_divider: 1px solid var(--palette-200)}[data-is=card][data-card-padding]{padding:0}[data-is=card][data-card-padding=none]{--_paddingHorizontal: 0;--_paddingVertical: 0}[data-is=card][data-card-padding=horizontal]{--_paddingVertical: 0}[data-is=card][data-card-padding=vertical]{--_paddingHorizontal: 0}[data-is=card]>[data-card=header]{display:flex;flex-direction:row;align-items:center;width:100%;min-height:var(--container-header-min-height);border-bottom:1px solid var(--divider-color);border-radius:var(--border-radius) var(--border-radius) 0 0;padding:var(--container-padding)}[data-is=card]>[data-card=header]>[data-card=header-text]{flex:1;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:4px}[data-is=card]>[data-card=header]>[data-card=header-text]>[data-card=title]{margin:0}[data-is=card]>[data-card=content]{box-sizing:border-box;padding:var(--_paddingVertical) var(--_paddingHorizontal);display:flex;flex-direction:column;align-items:stretch;gap:var(--_contentGap);height:100%}[data-is=card]>[data-card=content][data-card-divided]>*:not(:last-child){border-bottom:1px solid var(--divider-color)}[data-is=card]>[data-card=actions]{display:flex;flex-direction:row;align-items:center;flex-wrap:wrap;width:100%;gap:var(--ss-3);padding:calc(var(--container-padding) / 2) var(--container-padding);border-top:1px solid var(--gray100)}[data-is=cards-grid]{--_columnWidth: 410px;--_columnTemplate: repeat(auto-fill, minmax(0, var(--_columnWidth)));--_gap: var(--page-content-spacing)}[data-is=cards-grid]{display:grid;grid-template-columns:var(--_columnTemplate);column-gap:var(--_gap);row-gap:var(--_gap);grid-auto-flow:dense;align-items:start}[data-is=cards-grid]>*{width:100%;height:var(--_height, auto)}[data-is=cards-grid]>[data-cards-grid-column="1"]{grid-column:1}[data-is=cards-grid]>[data-cards-grid-column="2"]{grid-column:2}[data-is=cards-grid]>[data-cards-grid-column="3"]{grid-column:3}[data-is=cards-grid]>[data-cards-grid-column=all]{grid-column:1 / -1}[data-is=cards-grid]>[data-cards-grid=column]{display:flex;flex-direction:column;gap:var(--_gap)}[data-is=cards-grid]>[data-cards-grid=column]>*{width:100%}div[data-is=list-row]{--_prefixWidth: 56px;--_prefixIconSize: 40px;--_prefixImageSize: 40px;--_spacing: 16px;--_sideSpacing: var(--_spacing);--_minHeight: 56px;--_rowGap: 2px}div[data-is=list-row]{width:100%;height:var(--_minHeight);display:inline-grid;row-gap:var(--_rowGap);box-sizing:border-box;padding:0 var(--_sideSpacing);column-gap:var(--_spacing);align-items:center;align-content:center;grid-template-rows:max-content max-content}div[data-is=list-row][data-disabled]{opacity:.7}div[data-is=list-row][data-narrow]{--_minHeight: 48px}div[data-is=list-row][data-padding="0"]{--_sideSpacing: 0}div[data-is=list-row]:not([data-lr-prefix]){grid-template-columns:1fr max-content}div[data-is=list-row][data-lr-prefix]{grid-template-columns:calc(var(--_prefixWidth) - var(--_spacing)) 1fr max-content}div[data-is=list-row][data-lr-prefix]>:nth-child(1){grid-column:1 / 1;grid-row:1 / -1}div[data-is=list-row][data-lr-prefix=square]>:nth-child(1):is(svg,[data-icon]){width:var(--_prefixIconSize);height:var(--_prefixIconSize)}div[data-is=list-row][data-lr-prefix=square]>:nth-child(1):is(img){width:var(--_prefixImageSize);height:var(--_prefixImageSize)}div[data-is=list-row][data-lr-prefix=rect]{--_prefixWidth: 120px;--_minHeight: 72px}div[data-is=list-row][data-lr-prefix=rect]>:nth-child(1):is(img,div){width:100%;height:var(--_minHeight);border-radius:4px;object-fit:cover}div[data-is=list-row][data-lr-prefix=circle]>:is(svg,[data-icon]){width:var(--_prefixIconSize);height:var(--_prefixIconSize);border-radius:50px;border:1px solid var(--gray200)}div[data-is=list-row] [data-list-row=title]{font-size:var(--font-size-text-sm);font-weight:var(--font-weight-normal);color:var(--gray900);width:100%;display:inline-flex;flex-direction:row;align-self:var(--_alignTitle, center)}div[data-is=list-row] [data-list-row=subtitle]{font-size:var(--font-size-text-xs);font-weight:var(--font-weight-normal);color:var(--gray500);width:100%;display:inline-flex;flex-direction:row;align-self:var(--_alignSubtitle, center)}div[data-is=list-row][data-lr-type=dual-row]{--_alignTitle: end;--_alignSubtitle: start}div[data-is=list-row] [data-list-row=suffix]{font-size:var(--font-size-text-sm);font-weight:var(--font-weight-normal);color:var(--gray500);display:inline-flex;flex-direction:row;align-items:center;gap:4px}div[data-is=list-row] [data-list-row=suffix] :is(svg,[data-icon]){width:16px;height:16px}div[data-is=list-row][data-list-row-type=simple][data-suffix=no] :is([data-list-row="title"],[data-list-row="subtitle"]){grid-column:1 / -1}div[data-is=list-row][data-list-row-type=prefixed][data-suffix=no] :is([data-list-row="title"],[data-list-row="subtitle"]){grid-column:2 / -1}div[data-is=list-row][data-list-row-type=simple]:not([data-suffix="no"]) :is([data-list-row="title"],[data-list-row="subtitle"]){grid-column:1 / 1}div[data-is=list-row][data-list-row-type=prefixed]:not([data-suffix="no"]) :is([data-list-row="title"],[data-list-row="subtitle"]){grid-column:2 / 2}div[data-is=list-row][data-subtitle=no] [data-list-row=title]{grid-row:1 / -1}div[data-is=list-row]:not([data-subtitle="no"]) [data-list-row=title]{grid-row:1 / 1}div[data-is=list-row]:not([data-subtitle="no"]) [data-list-row=subtitle]{grid-row:2 / 2}div[data-is=list-row] [data-list-row=suffix]{grid-row:1 / -1}div[data-is=list-row][data-list-row-type=simple] [data-list-row=suffix]{grid-column:2 / 2}div[data-is=list-row][data-list-row-type=prefixed] [data-list-row=suffix]{grid-column:3 / 3}div[data-is=empty]{width:100%;display:flex;flex-direction:column;align-items:center;text-align:center;gap:16px;box-sizing:border-box;padding:2.5px 0}div[data-is=empty]>:is(svg,[data-icon]){width:auto;height:64px;opacity:.5}div[data-is=code-block]{display:flex;gap:32px;align-items:center;border:1px solid var(--gray200);border-radius:8px;padding:16px;margin:8px 0 0;background-color:var(--gray100);color:var(--pink700);min-width:0;max-width:100%;word-break:break-all;font-family:Roboto Mono,monospace;font-style:normal;font-weight:500;font-size:12px;line-height:18px}div[data-is=kv-attribute]{display:flex;flex-direction:column;align-items:stretch;gap:8px;box-sizing:border-box;padding:0 16px}div[data-is=kv-attribute]>[data-kv-attribute=value]{display:flex;flex-direction:column;align-items:stretch;gap:0;font-size:var(--font-size-text-sm);line-height:var(--line-height-text-sm);font-weight:var(--font-weight-normal);color:var(--text-color-secondary)}div[data-is=kv-attribute]>[data-kv-attribute=value]>div[data-kv-attribute=entry]{display:inline;word-wrap:break-word}div[data-is=kv-attribute]>[data-kv-attribute=actions]{display:flex;flex-direction:column;align-items:stretch;gap:16px;margin-top:12px}div[data-is=row-suffix]{background-color:var(--gray200);border-radius:10px;padding:2px 8px;color:#000!important;font-size:12px!important;font-weight:500!important}form[data-is=form]{--_padding: 32px;--_itemSpacing: 12px}form[data-is=form]{padding:var(--_padding) 0;width:100%}@media (min-width: 560px){form[data-is=form][data-min-width]{min-width:minmax(100%,var(--form-max-width))}}form[data-is=form][data-padding=none]{--_padding: 0}form[data-is=form]>[data-is=divider]{margin:12px 0 24px}form[data-is=form]:where([data-form-style="compact"],[data-form-style="regular"]){display:flex;flex-direction:column;align-items:stretch;gap:var(--_itemSpacing)}form[data-is=form]:where([data-form-style="compact"],[data-form-style="regular"]) [data-form=error]{margin:0 0 24px}form[data-is=form]:where([data-form-style="compact"],[data-form-style="regular"]) [data-form=label]{margin:0 0 8px}form[data-is=form]:where([data-form-style="compact"],[data-form-style="regular"])>[data-form=field-error]{display:inline-block;height:12px;margin:4px 0 0}form[data-is=form] :is([data-form="field"]){display:flex;flex-direction:column;align-items:stretch;max-width:var(--form-max-width)}form[data-is=form] [data-form=label]{display:flex;flex-direction:column;align-items:flex-start;gap:2px}form[data-is=form]:where([data-form-style="regular"])>[data-form=item]{display:flex;flex-direction:column;align-items:stretch}form[data-is=form]:where([data-form-style="regular"])>[data-form=item]>[data-form=field-wrapper]{display:grid;grid-template-columns:1fr}[data-form=field-description]>*{width:100%}@media (min-width: 720px){form[data-is=form]:where([data-form-style="regular"])>[data-form=item]>[data-form=field-wrapper]{grid-template-columns:60% 1fr;column-gap:32px}form[data-is=form]:where([data-form-style="regular"])>[data-form=item]>[data-form=field-wrapper]>[data-form=field]{grid-column:1 / 2}form[data-is=form]:where([data-form-style="regular"])>[data-form=item]>[data-form=field-wrapper]>[data-form=field-description]{grid-column:2 / 3}[data-form=field-description]>*{max-width:560px}}@media (max-width: 990px){form[data-is=form]:where([data-form-style="regular"])>[data-form=item]{display:flex;flex-direction:column;align-items:stretch;justify-content:space-between}form[data-is=form] :is([data-form="field"]){display:flex;flex-direction:column;align-items:stretch;max-width:380px}}@media (max-width: 560px){form[data-is=form] :is([data-form="field"]){max-width:100%}}form[data-is=form]:where([data-form-style="regular"])>[data-form=actions]{display:flex;flex-direction:row;width:100%;align-items:flex-start;justify-content:flex-end;gap:16px;margin-top:24px}form[data-is=form]:where([data-form-style="compact"])>[data-form=actions]{display:flex;flex-direction:column;align-items:stretch;gap:16px;margin-top:24px}form[data-is=form]:where([data-form-style="compact"])>[data-form=actions]>*{width:100%}form[data-is=form][data-form-style=inline]{--_padding: 0;display:flex;flex-direction:row;align-items:center;position:relative}form[data-is=form][data-form-style=inline]>[data-form=error]{position:absolute;top:100%;left:0;z-index:999;background-color:var(--content-background);border-radius:var(--border-radius);padding:var(--ss-1)}form[data-is=form]>[data-form=links]{display:flex;flex-direction:column;align-items:center;gap:var(--ss-2);margin-top:var(--margin-4)}input[type=checkbox]{--_size: 16px;--_backgroundColor: transparent;--_borderColor: var(--gray300)}input[type=checkbox]{display:inline-block;width:var(--_size);height:var(--_size);border-radius:calc(var(--_size) / 2);background-color:var(--_backgroundColor);border:1px solid var(--_borderColor)}[data-is=checkbox-group]{display:flex;flex-direction:column;width:100%;gap:var(--ss-2)}[data-checkbox-group=item]{display:flex;flex-direction:row;padding:14px;border-radius:8px;background-color:var(--white);border:1px solid var(--gray200);align-items:center;cursor:pointer;gap:var(--ss-3);user-select:none}[data-checkbox-group=item][data-checked]{background-color:var(--primary50);color:var(--primary800);border:1px solid var(--primary300)}[data-checkbox-group=item][data-disabled]{background-color:transparent;opacity:.7;border:1px solid var(--gray100);cursor:not-allowed}div[data-is=slider]{--_width: 100%;--_height: 38px;--_padSize: 24px;--_leftPadOffset: 0;--_legendHeight: var(--font-size-text-sm)}div[data-is=slider]{width:var(--_width);height:var(--_height);position:relative;display:flex;flex-direction:row;align-items:center}div[data-is=slider]>div[data-slider=track]{cursor:pointer;width:100%;height:8px;background-color:var(--gray200);position:relative;border-radius:var(--border-radius)}div[data-is=slider]>div[data-slider=track]:before{content:"";display:block;position:absolute;width:calc(var(--_leftPadOffset) + (var(--_padSize) / 2) + 1px);height:100%;left:-1px;top:0;background-color:var(--primary600);border-radius:var(--border-radius)}div[data-is=slider]>:is([data-slider="min-value"],[data-slider="max-value"]){display:inline-block;position:absolute;top:calc(var(--_height) - (var(--font-size-text-sm) / 2));color:var(--gray400);font-size:var(--font-size-text-sm);font-weight:var(--font-weight-medium);width:1px;display:flex;align-items:center;justify-content:center;text-align:center;user-select:none}div[data-is=slider]>[data-slider=min-value]{left:0}div[data-is=slider]>[data-slider=max-value]{left:100%}div[data-is=slider]>:is([data-slider="left-pad-value"],[data-slider="right-pad-value"]){position:absolute;width:var(--_padSize);height:var(--_legendHeight);top:calc(-1 * var(--_legendHeight));color:var(--primary600);font-size:var(--font-size-text-sm);font-weight:var(--font-weight-medium);display:flex;align-items:center;justify-content:center;text-align:center;user-select:none}div[data-is=slider]>:is(div[data-slider="left-pad"],div[data-slider="right-pad"]){width:var(--_padSize);height:var(--_padSize);border-radius:calc(var(--_padSize) / 2);box-sizing:border-box;position:absolute;top:calc((var(--_height) - var(--_padSize)) / 2);border:1px solid var(--primary600);background-color:#fff;cursor:pointer}div[data-is=slider]>:is(div[data-slider="left-pad"],[data-slider="left-pad-value"],[data-slider="left-pad-legend"]){left:calc(var(--_leftPadOffset) - (var(--_padSize) / 2))}div[data-is=pagination]{width:100%;display:grid;grid-template-columns:max-content 1fr max-content}div[data-is=pagination]>[data-pagination=numbers]{display:flex;flex-direction:row;align-items:center;justify-content:center;gap:var(--ss-1)}div[data-is=pagination]>[data-pagination=numbers]>[data-is=button]{--__size: var(--button-min-height);width:var(--__size);height:var(--__size)}div[data-is=pagination] [data-device=mobile]{display:flex}div[data-is=pagination] [data-device=desktop]{display:none}@media (min-width: 768px){div[data-is=pagination] [data-device=mobile]{display:none}div[data-is=pagination] [data-device=desktop]{display:flex}}div[data-is=stepper]{--_progressColumn: 32px;--_progressLineWidth: 2px}div[data-is=stepper][data-stepper-dir=v]{width:100%;display:grid;grid-template-columns:var(--_progressColumn) 1fr;row-gap:var(--ss-4);column-gap:var(--ss-4);position:relative}div[data-is=stepper][data-stepper-dir=v]:after{content:"";position:absolute;top:0;left:calc((var(--_progressColumn) / 2) - (var(--_progressLineWidth) / 2));width:var(--_progressLineWidth);height:100%;background-color:var(--gray100)}div[data-is=stepper][data-stepper-dir=v] :is([data-stepper="bullet"],[data-stepper="step"]){min-height:var(--_progressColumn);--_crossAxisAlign: flex-start;--_mainAxisAlign: flex-start}div[data-is=stepper][data-stepper-dir=h]{width:100%;display:flex;flex-direction:row;align-items:center;min-width:0;overflow:hidden;gap:12px}div[data-is=stepper] [data-stepper=bullet]{--__bulletColor: var(--gray100);display:flex;flex-direction:column;align-items:center;justify-content:flex-start;position:relative}div[data-is=stepper][data-stepper-dir=v] [data-stepper=bullet]:after{position:absolute;top:0;left:0}div[data-is=stepper][data-stepper-dir=h] [data-stepper=bullet]:after{position:relative}div[data-is=stepper][data-stepper-dir=h] [data-stepper=bullet]>*{color:var(--__bulletInnerColor, transparent);margin:0;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}div[data-is=stepper] [data-stepper=bullet]:after{content:"";z-index:4;width:var(--_progressColumn);height:var(--_progressColumn);border-radius:calc(var(--_progressColumn) / 2);background-color:var(--__bulletColor);z-index:1}div[data-is=stepper] [data-stepper=bullet][data-bullet-state=pending]{--__bulletInnerColor: var(--gray300)}div[data-is=stepper] [data-stepper=bullet][data-bullet-state=pending]:after{--__bulletColor: var(--gray100)}div[data-is=stepper] [data-stepper=bullet][data-bullet-state=in-progress]:before{content:"";position:absolute;z-index:5;top:0;left:0;width:var(--_progressColumn);height:var(--_progressColumn);border-radius:50%;border:6px solid var(--primary500);border-color:var(--primary500) transparent transparent transparent;animation:in-progress-step 1.2s linear infinite}div[data-is=stepper] [data-stepper=bullet][data-bullet-state=in-progress]:after{--__bulletColor: var(--primary100);border:1px solid var(--primary100)}div[data-is=stepper] [data-stepper=bullet][data-bullet-state=complete]{--__bulletInnerColor: var(--success500)}div[data-is=stepper] [data-stepper=bullet][data-bullet-state=complete]:after{--__bulletColor: var(--success100)}div[data-is=stepper] [data-stepper=bullet][data-bullet-state=failed]{--__bulletInnerColor: var(--error500)}div[data-is=stepper] [data-stepper=bullet][data-bullet-state=failed]:after{--__bulletColor: var(--error100)}div[data-is=stepper] [data-stepper=bullet][data-bullet-state=highlighted]{--__bulletInnerColor: var(--primary500)}div[data-is=stepper] [data-stepper=bullet][data-bullet-state=highlighted]:after{--__bulletColor: var(--primary100)}div[data-is=stepper] [data-stepper=bullet]>:first-child{width:var(--_progressColumn);height:var(--_progressColumn);text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:2}div[data-is=stepper][data-stepper-dir=v] [data-stepper=step]{padding:8px 0 0}div[data-is=stepper][data-stepper-dir=h] [data-stepper=step]{min-width:0}div[data-is=stepper][data-stepper-dir=h] [data-stepper=arrow-to-next]{height:1px;flex:1;background-color:var(--divider-color)}@keyframes in-progress-step{0%{transform:rotate(0)}to{transform:rotate(360deg)}}[data-is=editable-text]{display:inline-flex;flex-direction:row;align-items:center}[data-is=editable-text] div[data-form=field]{flex-direction:row}[data-is=editable-text] [data-is=button]{margin-left:4px}dialog[data-is=modal]>[data-is=video-player]{--_maxWidth: 90vw}@media (min-width: 768px){dialog[data-is=modal]>[data-is=video-player]{--_maxWidth: 700px}}@media (min-width: 1024px){dialog[data-is=modal]>[data-is=video-player]{--_maxWidth: 900px}}[data-is=video-player]{border-radius:var(--border-radius);overflow:hidden;width:100%;max-width:var(--_maxWidth);height:auto;background-color:transparent;outline:unset;margin:0 -1px -1px 0;position:relative;background-color:#000;display:flex;justify-content:center;align-items:center}[data-is=video-player]>[data-video-player=overlay]{position:absolute;top:0;left:0;z-index:10;width:100%;height:100%;display:flex;flex-direction:row;align-items:center;justify-content:center}[data-is=video-player]>video{width:100%;height:auto;border-radius:var(--border-radius);display:none}[data-is=video-player]>canvas{width:100%;height:auto;border-radius:var(--border-radius)}[data-is=video-controls]{width:100%;height:100%;position:absolute;top:0;left:0;z-index:19}[data-is=video-controls]:hover>[data-panel]{opacity:1}[data-is=video-controls]>[data-panel]{position:absolute;left:0;height:60px;width:100%;opacity:0;transition:opacity .3s ease-in-out;display:flex;flex-direction:row;align-items:center;justify-content:space-between;padding:0 var(--padding-side-default);z-index:20}[data-is=video-controls]>[data-panel=top]{top:0;background:linear-gradient(180deg,rgba(0,0,0,.5) 0%,rgba(0,0,0,0) 100%);border-radius:var(--border-radius) var(--border-radius) 0 0}[data-is=video-controls]>[data-panel=top]>:first-child{flex:1}[data-is=video-controls]>[data-panel=bottom]{bottom:0;background:linear-gradient(180deg,rgba(0,0,0,.5) 100%,rgba(0,0,0,0) 0%);border-radius:0 0 var(--border-radius) var(--border-radius)}[data-is=video-controls]>[data-panel]>[data-is=video-controls-slot]{height:100%;display:flex;justify-content:center;align-items:center}[data-is=video-controls]>[data-panel]>[data-is=video-controls-slot]:first-child{justify-content:start}[data-is=video-controls]>[data-panel]>[data-is=video-controls-slot]:last-child{justify-content:end}[data-is=video-controls]>[data-panel]>[data-is=video-controls-slot]:has([data-is="video-progressbar"]){width:100%;margin:0 var(--padding-side-default);justify-content:normal}[data-is=video-controls]>[data-panel]>[data-is=video-controls-slot]>[data-is=video-progressbar]{width:100%;display:flex;align-items:center;justify-content:space-around}[data-is=video-controls]>[data-panel]>[data-is=video-controls-slot]>[data-is=video-progressbar]>[data-is=slider]{width:80%}[data-is=radio-group]{--_borderColor: transparent}[data-is=radio-group]{display:flex}[data-is=radio-group][data-radio-group=inline]{flex-direction:row;align-items:stretch;height:var(--button-min-height);max-height:var(--button-min-height)}[data-is=radio-group][data-radio-group=inline]>div:not([data-selected]){--_borderColor: var(--divider-color)}[data-is=radio-group][data-radio-group=inline]>div[data-selected]{--_borderColor: var(--primary50)}[data-is=radio-group][data-radio-group=inline]>div{display:flex;flex-direction:row;align-items:center;gap:var(--ss-1);height:100%;cursor:pointer;padding:0 var(--ss-1);border-color:var(--_borderColor);background-color:#fff;color:var(--text-color);--_iconColor: var(--text-color-secondary);--_iconSize: 16px}[data-is=radio-group][data-radio-group=inline]>div[data-selected]{background-color:var(--primary25);color:var(--primary600);--_iconColor: var(--primary600)}[data-is=radio-group][data-radio-group=inline]>div:first-child{border-radius:var(--border-radius) 0 0 var(--border-radius);border-left:1px solid var(--_borderColor);border-top:1px solid var(--_borderColor);border-bottom:1px solid var(--_borderColor)}[data-is=radio-group][data-radio-group=inline]>div:not(:last-child){border-right:1px solid var(--_borderColor)}[data-is=radio-group][data-radio-group=inline]>div:last-child{border-radius:0 var(--border-radius) var(--border-radius) 0;border-right:1px solid var(--_borderColor);border-top:1px solid var(--_borderColor);border-bottom:1px solid var(--_borderColor)}[data-is=radio-group][data-radio-group=column]{display:flex;flex-direction:column;width:100%;gap:var(--ss-2)}[data-is=radio-group][data-radio-group=column]>div:not([data-selected]){--_borderColor: var(--divider-color)}[data-is=radio-group][data-radio-group=column]>div[data-selected]{--_borderColor: var(--primary300)}[data-is=radio-group][data-radio-group=column]>div{display:flex;flex-direction:row;padding:14px;border-radius:8px;background-color:var(--white);border:1px solid;border-color:var(--_borderColor);align-items:center;cursor:pointer;gap:var(--ss-3);user-select:none}[data-is=radio-group][data-radio-group=column]>div[data-selected]{background-color:var(--primary30);color:var(--primary600);--_iconColor: var(--primary600);--_borderColor: var(--primary300)}[data-radio-group=icon]{color:var(--_iconColor);display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px}[data-is=alert]{--_background: var(--_secondaryColor);--_textColor: var(--_primaryColor);--_borderColor: var(--_outlineColor)}[data-is=alert]{width:100%;display:flex;flex-direction:column;align-items:stretch;gap:var(--ss-2);background:var(--_background);color:var(--_textColor);border-radius:var(--border-radius);border:1px solid var(--_borderColor);box-sizing:border-box;padding:var(--ss-3)}[data-is=alert][data-borderless]{--_borderColor: transparent;--_background: var(--_borderlessBgColor, var(--gray100))}[data-is=alert]>[data-alert=actions]{display:flex;flex-direction:row;gap:var(--ss-3)}[data-is=alert]>[data-alert=actions]>*{flex:1}dialog[data-notification=container]{z-index:9999;width:min(280px,90vw);display:none;flex-direction:column;align-items:stretch;height:max-content;position:fixed;gap:var(--ss-3);left:unset;right:var(--ss-4);top:var(--ss-4);bottom:unset;border:0;background-color:transparent;padding:0}dialog[data-notification=container][open]{display:flex}dialog[data-notification=container]>div{width:100%;display:flex;flex-direction:row;align-items:center;gap:var(--ss-3);text-align:start;background-color:var(--_primaryColor);border:1px solid rgba(0,0,0,.1);border-radius:var(--border-radius);box-shadow:var(--shadow-2);box-sizing:border-box;padding:var(--ss-3);--color: var(--_onPrimaryColor)}dialog[data-notification=container]>div>div{flex:1;display:flex;flex-direction:column;align-items:stretch;text-align:start;gap:var(--ss-2)}dialog[data-notification=container]>div>:is(svg,[data-icon]){--_iconSize: 32px;--_iconColor: var(--_onPrimaryColor)}[data-is=breadcrumbs]{display:flex;flex-direction:row;align-items:center;gap:16px}.UserIdentifier{display:flex;flex-direction:row;align-items:center;min-width:0;width:auto;gap:8px}.UserIdentifier .UserIdentifier-avatar{width:32px;height:32px;border-radius:16px;border:1px solid var(--divider-color)}div[data-is=logs-container]{width:100%;display:flex;flex-direction:column;align-items:stretch;padding:16px;box-sizing:border-box;background-color:#111;border-radius:var(--border-radius);height:400px;overflow:auto;position:relative;font-family:monospace}div[data-is=logs-container][data-disabled]{opacity:var(--disabled-opacity)}div[data-is=logs-container]>.centered{position:absolute;left:0;top:0;width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center}div[data-is=logs-container]>.centered>.placeholder-off{font-size:var(--font-size-text-md);color:var(--gray400)}div[data-is=logs-container]>[data-logs-container=item]{display:flex;flex-direction:row;margin-bottom:4px}div[data-is=logs-container]>[data-logs-container=item]>[data-logs-container=timestamp]{opacity:.64;margin-right:24px}div[data-is=logs-panel]{position:relative}div[data-is=logs-panel]>div[data-is=logs-toolbar]{position:absolute;top:16px;left:16px;right:32px;z-index:1;text-align:right}div[data-is=logs-panel]>div[data-is=logs-toolbar]>div{display:grid;grid-column:1;gap:8px;align-items:right;justify-items:right}div[data-is=logs-panel]>div[data-is=logs-toolbar]>div>a{width:135px}div[data-is=logs-button]{display:flex;flex-direction:row;gap:8px;width:100px}[data-is=source-code]{overflow:hidden;border-radius:var(--border-radius)}div[data-is=tiles]{--_columnWidth: 260px;--_gap: var(--page-content-spacing)}div[data-is=tiles]{display:grid;grid-template-columns:repeat(auto-fill,minmax(0,var(--_columnWidth)));column-gap:var(--_gap);row-gap:var(--_gap);grid-auto-flow:dense;align-items:start}div[data-is=tiles]>[data-tiles=tile]{width:100%;min-width:0;height:320px;background-color:#fff;border:var(--divider);display:flex;flex-direction:column;align-items:center;justify-content:center;box-sizing:border-box;border-radius:var(--border-radius);cursor:pointer;gap:24px}div[data-is=tiles]>[data-tiles=tile]>[data-tiles=icon]{width:60%;aspect-ratio:1 / 1;border-radius:var(--border-radius);display:flex;align-items:center;justify-content:center;background-color:var(--gray50);box-sizing:border-box;padding:24px;color:var(--gray400)}div[data-is=tiles]>[data-tiles=tile]>[data-tiles=icon]>*{width:100%;height:100%}span.rdrStaticRangeLabel{font-family:var(--font-family);font-size:var(--font-size-text-sm);line-height:var(--line-height-text-sm);width:max-content;min-width:100%;display:flex;flex-direction:row;gap:12px;align-items:center;min-height:var(--button-min-height);box-sizing:border-box;padding:0 16px;text-align:start;cursor:pointer}div.rdrDefinedRangesWrapper{font-family:var(--font-family);font-size:var(--font-size-text-xs);line-height:var(--line-height-text-xs);width:unset;min-width:130px}[data-is=options]{display:flex;flex-direction:column;align-items:stretch;width:100%;min-width:0;gap:16px}[data-is=options]>[data-options=option]{--_borderColor: var(--divider-color);--_textColor: var(--text-color);--_iconSize: 22px;width:100%;display:flex;flex-direction:row;align-items:center;padding:16px;box-sizing:border-box;border:1px solid var(--_borderColor);border-radius:var(--border-radius);gap:12px;cursor:pointer;color:var(--_textColor)}[data-is=options]>[data-options=option]>:nth-child(2){flex:1}[data-is=options]>[data-options=option]:hover{--_borderColor: var(--primary600);--_textColor: var(--primary600)}[data-is=launcher]{min-height:calc(100% - 58px)}[data-entries-width=default]{width:234px}[data-app-content-width="200"]{width:200px;height:200px}[data-login-button=short]{width:100%!important;background-color:#fff!important;color:#667085!important;font-size:16px!important;font-weight:500!important;border:1px solid #eaecf0!important;justify-self:center;align-self:center;margin-bottom:28px;max-width:232px}[data-login-button=long]{width:100%!important;background-color:#fff!important;color:#667085!important;font-size:16px!important;font-weight:500!important;border:1px solid #eaecf0!important;justify-self:center;align-self:center;margin-bottom:28px;max-width:496px}[data-logo=robothub]{width:122px;height:auto;position:relative;left:50%;transform:translate(-50%);margin-bottom:32px}@media (max-width: 556px){[data-login-button=long]{max-width:232px}}[data-detection=grid]{--_childBaseSize: 220px;--_labelHeight: 56px}[data-detection=grid]{width:100%;display:grid;grid-template-columns:repeat(auto-fill,minmax(var(--_childBaseSize),1fr));grid-auto-rows:calc(var(--_childBaseSize) + var(--_labelHeight));column-gap:28px;row-gap:28px;grid-auto-flow:dense}[data-detection=grid]>*{width:100%}[data-detection=cell]{width:100%;height:100%;display:flex;flex-direction:column;justify-content:flex-end;align-items:stretch;overflow:hidden;cursor:pointer;position:relative;box-sizing:border-box;border-radius:var(--border-radius)}[data-detection=cell]:hover{box-shadow:var(--shadow-md);background-color:#fff}[data-detection=cell]>:first-child{width:100%;height:calc(100% - var(--_labelHeight));border-radius:var(--border-radius);background:white;border:1px solid var(--border-color-base);transition:background 1s ease-in-out}[data-detection=cell]>:nth-child(2){height:var(--_labelHeight);box-sizing:border-box;padding:0 var(--ss-3)}[data-detection=frame-panel]{width:100%;max-width:min(90vw,900px);height:auto}[data-detection=frame-panel]>:where(canvas,div){border-radius:var(--border-radius);width:100%;height:auto}.react-time-picker{display:inline-flex;position:relative}.react-time-picker,.react-time-picker *,.react-time-picker *:before,.react-time-picker *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.react-time-picker--disabled{background-color:#f0f0f0;color:#6d6d6d}.react-time-picker__wrapper{border-radius:var(--border-radius);width:auto;min-width:var(--inputMinWidth);height:var(--inputHeightBase);display:flex;border-top:1px solid var(--border-color-base);border-bottom:1px solid var(--border-color-base);border-right:1px solid var(--border-color-base);border-left:1px solid var(--border-color-base)}.react-time-picker__inputGroup{min-width:calc((4px * 3) + .54em * 6 + .217em * 2);flex-grow:1;padding:0 2px;box-sizing:content-box}.react-time-picker__inputGroup__divider{padding:1px 0;white-space:pre}.react-time-picker__inputGroup__input{min-width:.54em;height:100%;position:relative;padding:0 1px;border:0;background:none;font:inherit;box-sizing:content-box;-moz-appearance:textfield}.react-time-picker__inputGroup__input::-webkit-outer-spin-button,.react-time-picker__inputGroup__input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.react-time-picker__inputGroup__input:invalid{background:rgba(255,0,0,.1)}.react-time-picker__inputGroup__input--hasLeadingZero{margin-left:-.54em;padding-left:calc(1px + .54em)}.react-time-picker__inputGroup__amPm{font:inherit;-moz-appearance:menulist}.react-time-picker__button{border:0;background:transparent;padding:4px 6px}.react-time-picker__button:enabled{cursor:pointer}.react-time-picker__button:enabled:hover .react-time-picker__button__icon,.react-time-picker__button:enabled:focus .react-time-picker__button__icon{stroke:#0078d7}.react-time-picker__button:disabled .react-time-picker__button__icon{stroke:#6d6d6d}.react-time-picker__button svg{display:inherit}.react-time-picker__clock{width:200px;height:200px;max-width:100vw;padding:25px;background-color:#fff;border:thin solid #a0a096;position:absolute;top:100%;left:0;z-index:1}.react-time-picker__clock--closed{display:none}.ReactMarkdown h1{margin:.67em 0}.ReactMarkdown h2{margin:.75em 0}.ReactMarkdown h3{margin:.83em 0}.ReactMarkdown h4{margin:1.12em 0}.ReactMarkdown h5{margin:1.5em 0}.ReactMarkdown h6{margin:1.67em 0}@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/inter/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa2JL7W0Q5n-wU.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/inter/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa0ZL7W0Q5n-wU.woff2) format("woff2");unicode-range:U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/inter/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa2ZL7W0Q5n-wU.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/inter/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa1pL7W0Q5n-wU.woff2) format("woff2");unicode-range:U+0370-03FF}@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/inter/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa2pL7W0Q5n-wU.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/inter/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa25L7W0Q5n-wU.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/inter/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa1ZL7W0Q5nw.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/inter/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa2JL7W0Q5n-wU.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/inter/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa0ZL7W0Q5n-wU.woff2) format("woff2");unicode-range:U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/inter/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa2ZL7W0Q5n-wU.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/inter/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa1pL7W0Q5n-wU.woff2) format("woff2");unicode-range:U+0370-03FF}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/inter/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa2pL7W0Q5n-wU.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/inter/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa25L7W0Q5n-wU.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/inter/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa1ZL7W0Q5nw.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/inter/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa2JL7W0Q5n-wU.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/inter/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa0ZL7W0Q5n-wU.woff2) format("woff2");unicode-range:U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/inter/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa2ZL7W0Q5n-wU.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/inter/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa1pL7W0Q5n-wU.woff2) format("woff2");unicode-range:U+0370-03FF}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/inter/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa2pL7W0Q5n-wU.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/inter/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa25L7W0Q5n-wU.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/inter/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa1ZL7W0Q5nw.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/inter/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa2JL7W0Q5n-wU.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/inter/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa0ZL7W0Q5n-wU.woff2) format("woff2");unicode-range:U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/inter/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa2ZL7W0Q5n-wU.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/inter/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa1pL7W0Q5n-wU.woff2) format("woff2");unicode-range:U+0370-03FF}@font-face{font-family:Inter;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/inter/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa2pL7W0Q5n-wU.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/inter/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa25L7W0Q5n-wU.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/inter/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa1ZL7W0Q5nw.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Roboto Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/roboto/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSV0me8iUI0lkQ.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Roboto Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/roboto/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSx0me8iUI0lkQ.woff2) format("woff2");unicode-range:U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Roboto Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/roboto/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSt0me8iUI0lkQ.woff2) format("woff2");unicode-range:U+0370-03FF}@font-face{font-family:Roboto Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/roboto/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSd0me8iUI0lkQ.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB}@font-face{font-family:Roboto Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/roboto/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSZ0me8iUI0lkQ.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Roboto Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/roboto/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSh0me8iUI0.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Roboto Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/roboto/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSV0me8iUI0lkQ.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Roboto Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/roboto/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSx0me8iUI0lkQ.woff2) format("woff2");unicode-range:U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Roboto Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/roboto/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSt0me8iUI0lkQ.woff2) format("woff2");unicode-range:U+0370-03FF}@font-face{font-family:Roboto Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/roboto/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSd0me8iUI0lkQ.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB}@font-face{font-family:Roboto Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/roboto/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSZ0me8iUI0lkQ.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Roboto Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/roboto/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSh0me8iUI0.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Roboto Mono;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/roboto/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSV0me8iUI0lkQ.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Roboto Mono;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/roboto/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSx0me8iUI0lkQ.woff2) format("woff2");unicode-range:U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Roboto Mono;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/roboto/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSt0me8iUI0lkQ.woff2) format("woff2");unicode-range:U+0370-03FF}@font-face{font-family:Roboto Mono;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/roboto/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSd0me8iUI0lkQ.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB}@font-face{font-family:Roboto Mono;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/roboto/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSZ0me8iUI0lkQ.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Roboto Mono;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/roboto/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSh0me8iUI0.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Roboto Mono;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/roboto/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSV0me8iUI0lkQ.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Roboto Mono;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/roboto/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSx0me8iUI0lkQ.woff2) format("woff2");unicode-range:U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Roboto Mono;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/roboto/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSt0me8iUI0lkQ.woff2) format("woff2");unicode-range:U+0370-03FF}@font-face{font-family:Roboto Mono;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/roboto/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSd0me8iUI0lkQ.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB}@font-face{font-family:Roboto Mono;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/roboto/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSZ0me8iUI0lkQ.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Roboto Mono;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/roboto/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSh0me8iUI0.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--card-size: 230px;--icon-size: 30px;--general-spacer: 25px}.flex{display:flex}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.spread{justify-content:space-between}.space{padding:var(--general-spacer)}.gap{gap:var(--general-spacer)}.h-full{height:100%}.w-full{width:100%}.wrapper{flex-wrap:wrap}@media (max-width: 560px){.wrapper{flex-wrap:nowrap;flex-direction:column;justify-content:center;align-items:center}}.centered{align-items:center;justify-content:center}.base-border{border-radius:12px}.more{position:absolute;right:5px;top:5px}.icon{width:var(--icon-size);height:var(--icon-size)}.relative{position:relative}.absolute{position:absolute}.secondary-stream{position:absolute;z-index:999;width:30%;cursor:grab;top:6%;left:4%}.mini-map{backdrop-filter:blur(10px);overflow:hidden;z-index:1000;min-width:300px;bottom:6%;left:4%}.crop{overflow:hidden}.mini-map-button{padding:5px 0}.mini-map-bg{transition:.2s;background:rgba(200,200,200,.3)}.mini-map-bg:hover{background:rgba(200,200,200,.4)}.bg-white{background:#ffffff}.clickable{cursor:pointer}.card{position:relative;cursor:pointer;background-color:#fff;width:var(--card-size);height:var(--card-size);box-shadow:#00000017 0 3px 12px;transition:box-shadow .2s ease-out}.card:hover{box-shadow:#0000000d 0 0 0 1px,#d1d5db 0 0 0 1px inset}.controller{position:absolute;z-index:999;bottom:6%;right:4%}.grow{flex:1}.lock{position:absolute;z-index:999;top:10px;right:10px}.horn{position:absolute;z-index:999;left:4%;bottom:6%}.handle{cursor:pointer}.top{top:0}.option-menu{background:#ffffff;border-radius:0 0 12px 12px;bottom:auto;left:auto;z-index:1001;min-width:80px}.color-picker{background-color:#0000001a;border-radius:12px}#root{height:100%}@media (max-width: 559px){.page-header{display:none}}.img-container{position:relative;display:inline-block;border:.8px solid #4e38ed;border-radius:5px}.img-container:hover{transform:scale(1.05);transition:transform .3s ease-in-out;border:3px solid #4e38ed;border-radius:15px;cursor:pointer} diff --git a/Working with RAE/RAE Default App/frontend/assets/luxonis_logo-d1be00fb.svg b/Working with RAE/RAE Default App/frontend/assets/luxonis_logo-d1be00fb.svg new file mode 100644 index 0000000..3e0e061 --- /dev/null +++ b/Working with RAE/RAE Default App/frontend/assets/luxonis_logo-d1be00fb.svg @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + diff --git a/Working with RAE/RAE Default App/frontend/assets/main-638d2ebc.js b/Working with RAE/RAE Default App/frontend/assets/main-638d2ebc.js new file mode 100644 index 0000000..1e0fed5 --- /dev/null +++ b/Working with RAE/RAE Default App/frontend/assets/main-638d2ebc.js @@ -0,0 +1,172 @@ +var Dx=Object.defineProperty;var Ix=(e,t,n)=>t in e?Dx(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var H=(e,t,n)=>(Ix(e,typeof t!="symbol"?t+"":t,n),n),x0=(e,t,n)=>{if(!t.has(e))throw TypeError("Cannot "+n)};var Ni=(e,t,n)=>(x0(e,t,"read from private field"),n?n.call(e):t.get(e)),S0=(e,t,n)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,n)},_0=(e,t,n,r)=>(x0(e,t,"write to private field"),r?r.call(e,n):t.set(e,n),n);function jx(e,t){for(var n=0;nr[a]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const a of document.querySelectorAll('link[rel="modulepreload"]'))r(a);new MutationObserver(a=>{for(const i of a)if(i.type==="childList")for(const o of i.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&r(o)}).observe(document,{childList:!0,subtree:!0});function n(a){const i={};return a.integrity&&(i.integrity=a.integrity),a.referrerPolicy&&(i.referrerPolicy=a.referrerPolicy),a.crossOrigin==="use-credentials"?i.credentials="include":a.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function r(a){if(a.ep)return;a.ep=!0;const i=n(a);fetch(a.href,i)}})();var ir=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function ra(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function Fx(e){if(e.__esModule)return e;var t=e.default;if(typeof t=="function"){var n=function r(){if(this instanceof r){var a=[null];a.push.apply(a,arguments);var i=Function.bind.apply(t,a);return new i}return t.apply(this,arguments)};n.prototype=t.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach(function(r){var a=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(n,r,a.get?a:{enumerable:!0,get:function(){return e[r]}})}),n}var bv={exports:{}},Ou={},xv={exports:{}},oe={};/** + * @license React + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var il=Symbol.for("react.element"),Bx=Symbol.for("react.portal"),zx=Symbol.for("react.fragment"),Ux=Symbol.for("react.strict_mode"),Hx=Symbol.for("react.profiler"),Wx=Symbol.for("react.provider"),Vx=Symbol.for("react.context"),Gx=Symbol.for("react.forward_ref"),Yx=Symbol.for("react.suspense"),Zx=Symbol.for("react.memo"),qx=Symbol.for("react.lazy"),C0=Symbol.iterator;function Xx(e){return e===null||typeof e!="object"?null:(e=C0&&e[C0]||e["@@iterator"],typeof e=="function"?e:null)}var Sv={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},_v=Object.assign,Cv={};function bi(e,t,n){this.props=e,this.context=t,this.refs=Cv,this.updater=n||Sv}bi.prototype.isReactComponent={};bi.prototype.setState=function(e,t){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")};bi.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function Ev(){}Ev.prototype=bi.prototype;function Qd(e,t,n){this.props=e,this.context=t,this.refs=Cv,this.updater=n||Sv}var Jd=Qd.prototype=new Ev;Jd.constructor=Qd;_v(Jd,bi.prototype);Jd.isPureReactComponent=!0;var E0=Array.isArray,kv=Object.prototype.hasOwnProperty,ep={current:null},Tv={key:!0,ref:!0,__self:!0,__source:!0};function Ov(e,t,n){var r,a={},i=null,o=null;if(t!=null)for(r in t.ref!==void 0&&(o=t.ref),t.key!==void 0&&(i=""+t.key),t)kv.call(t,r)&&!Tv.hasOwnProperty(r)&&(a[r]=t[r]);var l=arguments.length-2;if(l===1)a.children=n;else if(1"u")throw new Error(t)}function rp(e,t){if(!e){typeof console<"u"&&console.warn(t);try{throw new Error(t)}catch{}}}function s3(){return Math.random().toString(36).substr(2,8)}function $0(e,t){return{usr:e.state,key:e.key,idx:t}}function wf(e,t,n,r){return n===void 0&&(n=null),Po({pathname:typeof e=="string"?e:e.pathname,search:"",hash:""},typeof t=="string"?xi(t):t,{state:n,key:t&&t.key||r||s3()})}function Os(e){let{pathname:t="/",search:n="",hash:r=""}=e;return n&&n!=="?"&&(t+=n.charAt(0)==="?"?n:"?"+n),r&&r!=="#"&&(t+=r.charAt(0)==="#"?r:"#"+r),t}function xi(e){let t={};if(e){let n=e.indexOf("#");n>=0&&(t.hash=e.substr(n),e=e.substr(0,n));let r=e.indexOf("?");r>=0&&(t.search=e.substr(r),e=e.substr(0,r)),e&&(t.pathname=e)}return t}function u3(e,t,n,r){r===void 0&&(r={});let{window:a=document.defaultView,v5Compat:i=!1}=r,o=a.history,l=or.Pop,s=null,u=c();u==null&&(u=0,o.replaceState(Po({},o.state,{idx:u}),""));function c(){return(o.state||{idx:null}).idx}function f(){l=or.Pop;let x=c(),p=x==null?null:x-u;u=x,s&&s({action:l,location:b.location,delta:p})}function d(x,p){l=or.Push;let g=wf(b.location,x,p);n&&n(g,x),u=c()+1;let w=$0(g,u),S=b.createHref(g);try{o.pushState(w,"",S)}catch{a.location.assign(S)}i&&s&&s({action:l,location:b.location,delta:1})}function v(x,p){l=or.Replace;let g=wf(b.location,x,p);n&&n(g,x),u=c();let w=$0(g,u),S=b.createHref(g);o.replaceState(w,"",S),i&&s&&s({action:l,location:b.location,delta:0})}function y(x){let p=a.location.origin!=="null"?a.location.origin:a.location.href,g=typeof x=="string"?x:Os(x);return He(p,"No window.location.(origin|href) available to create URL for href: "+g),new URL(g,p)}let b={get action(){return l},get location(){return e(a,o)},listen(x){if(s)throw new Error("A history only accepts one active listener");return a.addEventListener(O0,f),s=x,()=>{a.removeEventListener(O0,f),s=null}},createHref(x){return t(a,x)},createURL:y,encodeLocation(x){let p=y(x);return{pathname:p.pathname,search:p.search,hash:p.hash}},push:d,replace:v,go(x){return o.go(x)}};return b}var P0;(function(e){e.data="data",e.deferred="deferred",e.redirect="redirect",e.error="error"})(P0||(P0={}));function c3(e,t,n){n===void 0&&(n="/");let r=typeof t=="string"?xi(t):t,a=ap(r.pathname||"/",n);if(a==null)return null;let i=Pv(e);f3(i);let o=null;for(let l=0;o==null&&l{let s={relativePath:l===void 0?i.path||"":l,caseSensitive:i.caseSensitive===!0,childrenIndex:o,route:i};s.relativePath.startsWith("/")&&(He(s.relativePath.startsWith(r),'Absolute route path "'+s.relativePath+'" nested under path '+('"'+r+'" is not valid. An absolute child route path ')+"must start with the combined path of all its parent routes."),s.relativePath=s.relativePath.slice(r.length));let u=cr([r,s.relativePath]),c=n.concat(s);i.children&&i.children.length>0&&(He(i.index!==!0,"Index routes must not have child routes. Please remove "+('all child routes from route path "'+u+'".')),Pv(i.children,t,c,u)),!(i.path==null&&!i.index)&&t.push({path:u,score:y3(u,i.index),routesMeta:c})};return e.forEach((i,o)=>{var l;if(i.path===""||!((l=i.path)!=null&&l.includes("?")))a(i,o);else for(let s of Mv(i.path))a(i,o,s)}),t}function Mv(e){let t=e.split("/");if(t.length===0)return[];let[n,...r]=t,a=n.endsWith("?"),i=n.replace(/\?$/,"");if(r.length===0)return a?[i,""]:[i];let o=Mv(r.join("/")),l=[];return l.push(...o.map(s=>s===""?i:[i,s].join("/"))),a&&l.push(...o),l.map(s=>e.startsWith("/")&&s===""?"/":s)}function f3(e){e.sort((t,n)=>t.score!==n.score?n.score-t.score:w3(t.routesMeta.map(r=>r.childrenIndex),n.routesMeta.map(r=>r.childrenIndex)))}const d3=/^:\w+$/,p3=3,h3=2,g3=1,m3=10,v3=-2,M0=e=>e==="*";function y3(e,t){let n=e.split("/"),r=n.length;return n.some(M0)&&(r+=v3),t&&(r+=h3),n.filter(a=>!M0(a)).reduce((a,i)=>a+(d3.test(i)?p3:i===""?g3:m3),r)}function w3(e,t){return e.length===t.length&&e.slice(0,-1).every((r,a)=>r===t[a])?e[e.length-1]-t[t.length-1]:0}function b3(e,t){let{routesMeta:n}=e,r={},a="/",i=[];for(let o=0;o{if(c==="*"){let d=l[f]||"";o=i.slice(0,i.length-d.length).replace(/(.)\/+$/,"$1")}return u[c]=C3(l[f]||"",c),u},{}),pathname:i,pathnameBase:o,pattern:e}}function S3(e,t,n){t===void 0&&(t=!1),n===void 0&&(n=!0),rp(e==="*"||!e.endsWith("*")||e.endsWith("/*"),'Route path "'+e+'" will be treated as if it were '+('"'+e.replace(/\*$/,"/*")+'" because the `*` character must ')+"always follow a `/` in the pattern. To get rid of this warning, "+('please change the route path to "'+e.replace(/\*$/,"/*")+'".'));let r=[],a="^"+e.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^$?{}|()[\]]/g,"\\$&").replace(/\/:(\w+)/g,(o,l)=>(r.push(l),"/([^\\/]+)"));return e.endsWith("*")?(r.push("*"),a+=e==="*"||e==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):n?a+="\\/*$":e!==""&&e!=="/"&&(a+="(?:(?=\\/|$))"),[new RegExp(a,t?void 0:"i"),r]}function _3(e){try{return decodeURI(e)}catch(t){return rp(!1,'The URL path "'+e+'" could not be decoded because it is is a malformed URL segment. This is probably due to a bad percent '+("encoding ("+t+").")),e}}function C3(e,t){try{return decodeURIComponent(e)}catch(n){return rp(!1,'The value for the URL param "'+t+'" will not be decoded because'+(' the string "'+e+'" is a malformed URL segment. This is probably')+(" due to a bad percent encoding ("+n+").")),e}}function ap(e,t){if(t==="/")return e;if(!e.toLowerCase().startsWith(t.toLowerCase()))return null;let n=t.endsWith("/")?t.length-1:t.length,r=e.charAt(n);return r&&r!=="/"?null:e.slice(n)||"/"}function E3(e,t){t===void 0&&(t="/");let{pathname:n,search:r="",hash:a=""}=typeof e=="string"?xi(e):e;return{pathname:n?n.startsWith("/")?n:k3(n,t):t,search:O3(r),hash:$3(a)}}function k3(e,t){let n=t.replace(/\/+$/,"").split("/");return e.split("/").forEach(a=>{a===".."?n.length>1&&n.pop():a!=="."&&n.push(a)}),n.length>1?n.join("/"):"/"}function Ec(e,t,n,r){return"Cannot include a '"+e+"' character in a manually specified "+("`to."+t+"` field ["+JSON.stringify(r)+"]. Please separate it out to the ")+("`to."+n+"` field. Alternatively you may provide the full path as ")+'a string in and the router will parse it for you.'}function Rv(e){return e.filter((t,n)=>n===0||t.route.path&&t.route.path.length>0)}function Av(e,t,n,r){r===void 0&&(r=!1);let a;typeof e=="string"?a=xi(e):(a=Po({},e),He(!a.pathname||!a.pathname.includes("?"),Ec("?","pathname","search",a)),He(!a.pathname||!a.pathname.includes("#"),Ec("#","pathname","hash",a)),He(!a.search||!a.search.includes("#"),Ec("#","search","hash",a)));let i=e===""||a.pathname==="",o=i?"/":a.pathname,l;if(r||o==null)l=n;else{let f=t.length-1;if(o.startsWith("..")){let d=o.split("/");for(;d[0]==="..";)d.shift(),f-=1;a.pathname=d.join("/")}l=f>=0?t[f]:"/"}let s=E3(a,l),u=o&&o!=="/"&&o.endsWith("/"),c=(i||o===".")&&n.endsWith("/");return!s.pathname.endsWith("/")&&(u||c)&&(s.pathname+="/"),s}const cr=e=>e.join("/").replace(/\/\/+/g,"/"),T3=e=>e.replace(/\/+$/,"").replace(/^\/*/,"/"),O3=e=>!e||e==="?"?"":e.startsWith("?")?e:"?"+e,$3=e=>!e||e==="#"?"":e.startsWith("#")?e:"#"+e;function Lv(e){return e!=null&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.internal=="boolean"&&"data"in e}const Nv=["post","put","patch","delete"];new Set(Nv);const P3=["get",...Nv];new Set(P3);/** + * React Router v6.11.2 + * + * Copyright (c) Remix Software Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE.md file in the root directory of this source tree. + * + * @license MIT + */function $s(){return $s=Object.assign?Object.assign.bind():function(e){for(var t=1;ts.pathnameBase)),o=k.useRef(!1);return Fv(()=>{o.current=!0}),k.useCallback(function(s,u){if(u===void 0&&(u={}),!o.current)return;if(typeof s=="number"){n.go(s);return}let c=Av(s,JSON.parse(i),a,u.relative==="path");e==null&&t!=="/"&&(c.pathname=c.pathname==="/"?t:cr([t,c.pathname])),(u.replace?n.replace:n.push)(c,u.state,u)},[t,n,i,a,e])}function op(e,t){let{relative:n}=t===void 0?{}:t,{matches:r}=k.useContext(ia),{pathname:a}=Cr(),i=JSON.stringify(Rv(r).map(o=>o.pathnameBase));return k.useMemo(()=>Av(e,JSON.parse(i),a,n==="path"),[e,i,a,n])}function R3(e,t){return A3(e,t)}function A3(e,t,n){ol()||He(!1);let{navigator:r}=k.useContext(aa),{matches:a}=k.useContext(ia),i=a[a.length-1],o=i?i.params:{};i&&i.pathname;let l=i?i.pathnameBase:"/";i&&i.route;let s=Cr(),u;if(t){var c;let b=typeof t=="string"?xi(t):t;l==="/"||(c=b.pathname)!=null&&c.startsWith(l)||He(!1),u=b}else u=s;let f=u.pathname||"/",d=l==="/"?f:f.slice(l.length)||"/",v=c3(e,{pathname:d}),y=j3(v&&v.map(b=>Object.assign({},b,{params:Object.assign({},o,b.params),pathname:cr([l,r.encodeLocation?r.encodeLocation(b.pathname).pathname:b.pathname]),pathnameBase:b.pathnameBase==="/"?l:cr([l,r.encodeLocation?r.encodeLocation(b.pathnameBase).pathname:b.pathnameBase])})),a,n);return t&&y?k.createElement($u.Provider,{value:{location:$s({pathname:"/",search:"",hash:"",state:null,key:"default"},u),navigationType:or.Pop}},y):y}function L3(){let e=Uv(),t=Lv(e)?e.status+" "+e.statusText:e instanceof Error?e.message:JSON.stringify(e),n=e instanceof Error?e.stack:null,a={padding:"0.5rem",backgroundColor:"rgba(200,200,200, 0.5)"},i=null;return k.createElement(k.Fragment,null,k.createElement("h2",null,"Unexpected Application Error!"),k.createElement("h3",{style:{fontStyle:"italic"}},t),n?k.createElement("pre",{style:a},n):null,i)}const N3=k.createElement(L3,null);class D3 extends k.Component{constructor(t){super(t),this.state={location:t.location,revalidation:t.revalidation,error:t.error}}static getDerivedStateFromError(t){return{error:t}}static getDerivedStateFromProps(t,n){return n.location!==t.location||n.revalidation!=="idle"&&t.revalidation==="idle"?{error:t.error,location:t.location,revalidation:t.revalidation}:{error:t.error||n.error,location:n.location,revalidation:t.revalidation||n.revalidation}}componentDidCatch(t,n){console.error("React Router caught the following error during render",t,n)}render(){return this.state.error?k.createElement(ia.Provider,{value:this.props.routeContext},k.createElement(Iv.Provider,{value:this.state.error,children:this.props.component})):this.props.children}}function I3(e){let{routeContext:t,match:n,children:r}=e,a=k.useContext(ip);return a&&a.static&&a.staticContext&&(n.route.errorElement||n.route.ErrorBoundary)&&(a.staticContext._deepestRenderedBoundaryId=n.route.id),k.createElement(ia.Provider,{value:t},r)}function j3(e,t,n){var r;if(t===void 0&&(t=[]),n===void 0&&(n=null),e==null){var a;if((a=n)!=null&&a.errors)e=n.matches;else return null}let i=e,o=(r=n)==null?void 0:r.errors;if(o!=null){let l=i.findIndex(s=>s.route.id&&(o==null?void 0:o[s.route.id]));l>=0||He(!1),i=i.slice(0,Math.min(i.length,l+1))}return i.reduceRight((l,s,u)=>{let c=s.route.id?o==null?void 0:o[s.route.id]:null,f=null;n&&(f=s.route.errorElement||N3);let d=t.concat(i.slice(0,u+1)),v=()=>{let y;return c?y=f:s.route.Component?y=k.createElement(s.route.Component,null):s.route.element?y=s.route.element:y=l,k.createElement(I3,{match:s,routeContext:{outlet:l,matches:d,isDataRoute:n!=null},children:y})};return n&&(s.route.ErrorBoundary||s.route.errorElement||u===0)?k.createElement(D3,{location:n.location,revalidation:n.revalidation,component:f,error:c,children:v(),routeContext:{outlet:null,matches:d,isDataRoute:!0}}):v()},null)}var bf;(function(e){e.UseBlocker="useBlocker",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate"})(bf||(bf={}));var Mo;(function(e){e.UseBlocker="useBlocker",e.UseLoaderData="useLoaderData",e.UseActionData="useActionData",e.UseRouteError="useRouteError",e.UseNavigation="useNavigation",e.UseRouteLoaderData="useRouteLoaderData",e.UseMatches="useMatches",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e.UseRouteId="useRouteId"})(Mo||(Mo={}));function F3(e){let t=k.useContext(ip);return t||He(!1),t}function B3(e){let t=k.useContext(Dv);return t||He(!1),t}function z3(e){let t=k.useContext(ia);return t||He(!1),t}function zv(e){let t=z3(),n=t.matches[t.matches.length-1];return n.route.id||He(!1),n.route.id}function Uv(){var e;let t=k.useContext(Iv),n=B3(Mo.UseRouteError),r=zv(Mo.UseRouteError);return t||((e=n.errors)==null?void 0:e[r])}function U3(){let{router:e}=F3(bf.UseNavigateStable),t=zv(Mo.UseNavigateStable),n=k.useRef(!1);return Fv(()=>{n.current=!0}),k.useCallback(function(a,i){i===void 0&&(i={}),n.current&&(typeof a=="number"?e.navigate(a):e.navigate(a,$s({fromRouteId:t},i)))},[e,t])}function ts(e){He(!1)}function H3(e){let{basename:t="/",children:n=null,location:r,navigationType:a=or.Pop,navigator:i,static:o=!1}=e;ol()&&He(!1);let l=t.replace(/^\/*/,"/"),s=k.useMemo(()=>({basename:l,navigator:i,static:o}),[l,i,o]);typeof r=="string"&&(r=xi(r));let{pathname:u="/",search:c="",hash:f="",state:d=null,key:v="default"}=r,y=k.useMemo(()=>{let b=ap(u,l);return b==null?null:{location:{pathname:b,search:c,hash:f,state:d,key:v},navigationType:a}},[l,u,c,f,d,v,a]);return y==null?null:k.createElement(aa.Provider,{value:s},k.createElement($u.Provider,{children:n,value:y}))}function W3(e){let{children:t,location:n}=e;return R3(xf(t),n)}var R0;(function(e){e[e.pending=0]="pending",e[e.success=1]="success",e[e.error=2]="error"})(R0||(R0={}));new Promise(()=>{});function xf(e,t){t===void 0&&(t=[]);let n=[];return k.Children.forEach(e,(r,a)=>{if(!k.isValidElement(r))return;let i=[...t,a];if(r.type===k.Fragment){n.push.apply(n,xf(r.props.children,i));return}r.type!==ts&&He(!1),!r.props.index||!r.props.children||He(!1);let o={id:r.props.id||i.join("-"),caseSensitive:r.props.caseSensitive,element:r.props.element,Component:r.props.Component,index:r.props.index,path:r.props.path,loader:r.props.loader,action:r.props.action,errorElement:r.props.errorElement,ErrorBoundary:r.props.ErrorBoundary,hasErrorBoundary:r.props.ErrorBoundary!=null||r.props.errorElement!=null,shouldRevalidate:r.props.shouldRevalidate,handle:r.props.handle,lazy:r.props.lazy};r.props.children&&(o.children=xf(r.props.children,i)),n.push(o)}),n}/** + * React Router DOM v6.11.2 + * + * Copyright (c) Remix Software Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE.md file in the root directory of this source tree. + * + * @license MIT + */function Ps(){return Ps=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0)&&(n[a]=e[a]);return n}function V3(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function G3(e,t){return e.button===0&&(!t||t==="_self")&&!V3(e)}const Y3=["onClick","relative","reloadDocument","replace","state","target","to","preventScrollReset"],Z3=["aria-current","caseSensitive","className","end","style","to","children"];function q3(e){let{basename:t,children:n,window:r}=e,a=k.useRef();a.current==null&&(a.current=l3({window:r,v5Compat:!0}));let i=a.current,[o,l]=k.useState({action:i.action,location:i.location});return k.useLayoutEffect(()=>i.listen(l),[i]),k.createElement(H3,{basename:t,children:n,location:o.location,navigationType:o.action,navigator:i})}const X3=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",K3=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,Wv=k.forwardRef(function(t,n){let{onClick:r,relative:a,reloadDocument:i,replace:o,state:l,target:s,to:u,preventScrollReset:c}=t,f=Hv(t,Y3),{basename:d}=k.useContext(aa),v,y=!1;if(typeof u=="string"&&K3.test(u)&&(v=u,X3))try{let g=new URL(window.location.href),w=u.startsWith("//")?new URL(g.protocol+u):new URL(u),S=ap(w.pathname,d);w.origin===g.origin&&S!=null?u=S+w.search+w.hash:y=!0}catch{}let b=jv(u,{relative:a}),x=Vv(u,{replace:o,state:l,target:s,preventScrollReset:c,relative:a});function p(g){r&&r(g),g.defaultPrevented||x(g)}return k.createElement("a",Ps({},f,{href:v||b,onClick:y||i?r:p,ref:n,target:s}))}),Q3=k.forwardRef(function(t,n){let{"aria-current":r="page",caseSensitive:a=!1,className:i="",end:o=!1,style:l,to:s,children:u}=t,c=Hv(t,Z3),f=op(s,{relative:c.relative}),d=Cr(),v=k.useContext(Dv),{navigator:y}=k.useContext(aa),b=y.encodeLocation?y.encodeLocation(f).pathname:f.pathname,x=d.pathname,p=v&&v.navigation&&v.navigation.location?v.navigation.location.pathname:null;a||(x=x.toLowerCase(),p=p?p.toLowerCase():null,b=b.toLowerCase());let g=x===b||!o&&x.startsWith(b)&&x.charAt(b.length)==="/",w=p!=null&&(p===b||!o&&p.startsWith(b)&&p.charAt(b.length)==="/"),S=g?r:void 0,E;typeof i=="function"?E=i({isActive:g,isPending:w}):E=[i,g?"active":null,w?"pending":null].filter(Boolean).join(" ");let T=typeof l=="function"?l({isActive:g,isPending:w}):l;return k.createElement(Wv,Ps({},c,{"aria-current":S,className:E,ref:n,style:T,to:s}),typeof u=="function"?u({isActive:g,isPending:w}):u)});var A0;(function(e){e.UseScrollRestoration="useScrollRestoration",e.UseSubmitImpl="useSubmitImpl",e.UseFetcher="useFetcher"})(A0||(A0={}));var L0;(function(e){e.UseFetchers="useFetchers",e.UseScrollRestoration="useScrollRestoration"})(L0||(L0={}));function Vv(e,t){let{target:n,replace:r,state:a,preventScrollReset:i,relative:o}=t===void 0?{}:t,l=Bv(),s=Cr(),u=op(e,{relative:o});return k.useCallback(c=>{if(G3(c,n)){c.preventDefault();let f=r!==void 0?r:Os(s)===Os(u);l(e,{replace:f,state:a,preventScrollReset:i,relative:o})}},[s,l,u,r,a,n,e,i,o])}var Sf={},Gv={exports:{}},jt={},Yv={exports:{}},Zv={};/** + * @license React + * scheduler.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */(function(e){function t(A,N){var F=A.length;A.push(N);e:for(;0>>1,_=A[K];if(0>>1;Ka(O,F))D<_&&0>a(Y,O)?(A[K]=Y,A[D]=F,K=D):(A[K]=O,A[L]=F,K=L);else if(D<_&&0>a(Y,F))A[K]=Y,A[D]=F,K=D;else break e}}return N}function a(A,N){var F=A.sortIndex-N.sortIndex;return F!==0?F:A.id-N.id}if(typeof performance=="object"&&typeof performance.now=="function"){var i=performance;e.unstable_now=function(){return i.now()}}else{var o=Date,l=o.now();e.unstable_now=function(){return o.now()-l}}var s=[],u=[],c=1,f=null,d=3,v=!1,y=!1,b=!1,x=typeof setTimeout=="function"?setTimeout:null,p=typeof clearTimeout=="function"?clearTimeout:null,g=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function w(A){for(var N=n(u);N!==null;){if(N.callback===null)r(u);else if(N.startTime<=A)r(u),N.sortIndex=N.expirationTime,t(s,N);else break;N=n(u)}}function S(A){if(b=!1,w(A),!y)if(n(s)!==null)y=!0,Q(E);else{var N=n(u);N!==null&&G(S,N.startTime-A)}}function E(A,N){y=!1,b&&(b=!1,p($),$=-1),v=!0;var F=d;try{for(w(N),f=n(s);f!==null&&(!(f.expirationTime>N)||A&&!ee());){var K=f.callback;if(typeof K=="function"){f.callback=null,d=f.priorityLevel;var _=K(f.expirationTime<=N);N=e.unstable_now(),typeof _=="function"?f.callback=_:f===n(s)&&r(s),w(N)}else r(s);f=n(s)}if(f!==null)var M=!0;else{var L=n(u);L!==null&&G(S,L.startTime-N),M=!1}return M}finally{f=null,d=F,v=!1}}var T=!1,C=null,$=-1,j=5,U=-1;function ee(){return!(e.unstable_now()-UA||125K?(A.sortIndex=F,t(u,A),n(s)===null&&A===n(u)&&(b?(p($),$=-1):b=!0,G(S,F-K))):(A.sortIndex=_,t(s,A),y||v||(y=!0,Q(E))),A},e.unstable_shouldYield=ee,e.unstable_wrapCallback=function(A){var N=d;return function(){var F=d;d=N;try{return A.apply(this,arguments)}finally{d=F}}}})(Zv);Yv.exports=Zv;var J3=Yv.exports;/** + * @license React + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var qv=k,Nt=J3;function I(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),_f=Object.prototype.hasOwnProperty,e5=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,N0={},D0={};function t5(e){return _f.call(D0,e)?!0:_f.call(N0,e)?!1:e5.test(e)?D0[e]=!0:(N0[e]=!0,!1)}function n5(e,t,n,r){if(n!==null&&n.type===0)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return r?!1:n!==null?!n.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function r5(e,t,n,r){if(t===null||typeof t>"u"||n5(e,t,n,r))return!0;if(r)return!1;if(n!==null)switch(n.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function mt(e,t,n,r,a,i,o){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=r,this.attributeNamespace=a,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=i,this.removeEmptyString=o}var et={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){et[e]=new mt(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];et[t]=new mt(t,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){et[e]=new mt(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){et[e]=new mt(e,2,!1,e,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){et[e]=new mt(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){et[e]=new mt(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){et[e]=new mt(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){et[e]=new mt(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){et[e]=new mt(e,5,!1,e.toLowerCase(),null,!1,!1)});var lp=/[\-:]([a-z])/g;function sp(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(lp,sp);et[t]=new mt(t,1,!1,e,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(lp,sp);et[t]=new mt(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(lp,sp);et[t]=new mt(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){et[e]=new mt(e,1,!1,e.toLowerCase(),null,!1,!1)});et.xlinkHref=new mt("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){et[e]=new mt(e,1,!1,e.toLowerCase(),null,!0,!0)});function up(e,t,n,r){var a=et.hasOwnProperty(t)?et[t]:null;(a!==null?a.type!==0:r||!(2l||a[o]!==i[l]){var s=` +`+a[o].replace(" at new "," at ");return e.displayName&&s.includes("")&&(s=s.replace("",e.displayName)),s}while(1<=o&&0<=l);break}}}finally{Tc=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?to(e):""}function a5(e){switch(e.tag){case 5:return to(e.type);case 16:return to("Lazy");case 13:return to("Suspense");case 19:return to("SuspenseList");case 0:case 2:case 15:return e=Oc(e.type,!1),e;case 11:return e=Oc(e.type.render,!1),e;case 1:return e=Oc(e.type,!0),e;default:return""}}function Tf(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case Ba:return"Fragment";case Fa:return"Portal";case Cf:return"Profiler";case cp:return"StrictMode";case Ef:return"Suspense";case kf:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case Qv:return(e.displayName||"Context")+".Consumer";case Kv:return(e._context.displayName||"Context")+".Provider";case fp:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case dp:return t=e.displayName||null,t!==null?t:Tf(e.type)||"Memo";case Jn:t=e._payload,e=e._init;try{return Tf(e(t))}catch{}}return null}function i5(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return Tf(t);case 8:return t===cp?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function br(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function ey(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function o5(e){var t=ey(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var a=n.get,i=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return a.call(this)},set:function(o){r=""+o,i.call(this,o)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(o){r=""+o},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function Tl(e){e._valueTracker||(e._valueTracker=o5(e))}function ty(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=ey(e)?e.checked?"true":"false":e.value),e=r,e!==n?(t.setValue(e),!0):!1}function Ms(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function Of(e,t){var n=t.checked;return Le({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function j0(e,t){var n=t.defaultValue==null?"":t.defaultValue,r=t.checked!=null?t.checked:t.defaultChecked;n=br(t.value!=null?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function ny(e,t){t=t.checked,t!=null&&up(e,"checked",t,!1)}function $f(e,t){ny(e,t);var n=br(t.value),r=t.type;if(n!=null)r==="number"?(n===0&&e.value===""||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if(r==="submit"||r==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?Pf(e,t.type,n):t.hasOwnProperty("defaultValue")&&Pf(e,t.type,br(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function F0(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!(r!=="submit"&&r!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}n=e.name,n!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,n!==""&&(e.name=n)}function Pf(e,t,n){(t!=="number"||Ms(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var no=Array.isArray;function ei(e,t,n,r){if(e=e.options,t){t={};for(var a=0;a"+t.valueOf().toString()+"",t=Ol.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function Ao(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var so={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},l5=["Webkit","ms","Moz","O"];Object.keys(so).forEach(function(e){l5.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),so[t]=so[e]})});function oy(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||so.hasOwnProperty(e)&&so[e]?(""+t).trim():t+"px"}function ly(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var r=n.indexOf("--")===0,a=oy(n,t[n],r);n==="float"&&(n="cssFloat"),r?e.setProperty(n,a):e[n]=a}}var s5=Le({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function Af(e,t){if(t){if(s5[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(I(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(I(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(I(61))}if(t.style!=null&&typeof t.style!="object")throw Error(I(62))}}function Lf(e,t){if(e.indexOf("-")===-1)return typeof t.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var Nf=null;function pp(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var Df=null,ti=null,ni=null;function U0(e){if(e=ul(e)){if(typeof Df!="function")throw Error(I(280));var t=e.stateNode;t&&(t=Lu(t),Df(e.stateNode,e.type,t))}}function sy(e){ti?ni?ni.push(e):ni=[e]:ti=e}function uy(){if(ti){var e=ti,t=ni;if(ni=ti=null,U0(e),t)for(e=0;e>>=0,e===0?32:31-(w5(e)/b5|0)|0}var $l=64,Pl=4194304;function ro(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function Ns(e,t){var n=e.pendingLanes;if(n===0)return 0;var r=0,a=e.suspendedLanes,i=e.pingedLanes,o=n&268435455;if(o!==0){var l=o&~a;l!==0?r=ro(l):(i&=o,i!==0&&(r=ro(i)))}else o=n&~a,o!==0?r=ro(o):i!==0&&(r=ro(i));if(r===0)return 0;if(t!==0&&t!==r&&!(t&a)&&(a=r&-r,i=t&-t,a>=i||a===16&&(i&4194240)!==0))return t;if(r&4&&(r|=n&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=r;0n;n++)t.push(e);return t}function ll(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-an(t),e[t]=n}function C5(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0=co),K0=String.fromCharCode(32),Q0=!1;function $y(e,t){switch(e){case"keyup":return Q5.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Py(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var za=!1;function e4(e,t){switch(e){case"compositionend":return Py(t);case"keypress":return t.which!==32?null:(Q0=!0,K0);case"textInput":return e=t.data,e===K0&&Q0?null:e;default:return null}}function t4(e,t){if(za)return e==="compositionend"||!xp&&$y(e,t)?(e=Ty(),rs=yp=lr=null,za=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=ng(n)}}function Ly(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Ly(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Ny(){for(var e=window,t=Ms();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=Ms(e.document)}return t}function Sp(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}function c4(e){var t=Ny(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&Ly(n.ownerDocument.documentElement,n)){if(r!==null&&Sp(n)){if(t=r.start,e=r.end,e===void 0&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if(e=(t=n.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var a=n.textContent.length,i=Math.min(r.start,a);r=r.end===void 0?i:Math.min(r.end,a),!e.extend&&i>r&&(a=r,r=i,i=a),a=rg(n,i);var o=rg(n,r);a&&o&&(e.rangeCount!==1||e.anchorNode!==a.node||e.anchorOffset!==a.offset||e.focusNode!==o.node||e.focusOffset!==o.offset)&&(t=t.createRange(),t.setStart(a.node,a.offset),e.removeAllRanges(),i>r?(e.addRange(t),e.extend(o.node,o.offset)):(t.setEnd(o.node,o.offset),e.addRange(t)))}}for(t=[],e=n;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n=document.documentMode,Ua=null,Uf=null,po=null,Hf=!1;function ag(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Hf||Ua==null||Ua!==Ms(r)||(r=Ua,"selectionStart"in r&&Sp(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),po&&Fo(po,r)||(po=r,r=js(Uf,"onSelect"),0Va||(e.current=qf[Va],qf[Va]=null,Va--)}function Se(e,t){Va++,qf[Va]=e.current,e.current=t}var xr={},st=kr(xr),xt=kr(!1),Zr=xr;function fi(e,t){var n=e.type.contextTypes;if(!n)return xr;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var a={},i;for(i in n)a[i]=t[i];return r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=a),a}function St(e){return e=e.childContextTypes,e!=null}function Bs(){ke(xt),ke(st)}function fg(e,t,n){if(st.current!==xr)throw Error(I(168));Se(st,t),Se(xt,n)}function Wy(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,typeof r.getChildContext!="function")return n;r=r.getChildContext();for(var a in r)if(!(a in t))throw Error(I(108,i5(e)||"Unknown",a));return Le({},n,r)}function zs(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||xr,Zr=st.current,Se(st,e),Se(xt,xt.current),!0}function dg(e,t,n){var r=e.stateNode;if(!r)throw Error(I(169));n?(e=Wy(e,t,Zr),r.__reactInternalMemoizedMergedChildContext=e,ke(xt),ke(st),Se(st,e)):ke(xt),Se(xt,n)}var Rn=null,Nu=!1,Uc=!1;function Vy(e){Rn===null?Rn=[e]:Rn.push(e)}function S4(e){Nu=!0,Vy(e)}function Tr(){if(!Uc&&Rn!==null){Uc=!0;var e=0,t=ye;try{var n=Rn;for(ye=1;e>=o,a-=o,Nn=1<<32-an(t)+a|n<$?(j=C,C=null):j=C.sibling;var U=d(p,C,w[$],S);if(U===null){C===null&&(C=j);break}e&&C&&U.alternate===null&&t(p,C),g=i(U,g,$),T===null?E=U:T.sibling=U,T=U,C=j}if($===w.length)return n(p,C),Pe&&Rr(p,$),E;if(C===null){for(;$$?(j=C,C=null):j=C.sibling;var ee=d(p,C,U.value,S);if(ee===null){C===null&&(C=j);break}e&&C&&ee.alternate===null&&t(p,C),g=i(ee,g,$),T===null?E=ee:T.sibling=ee,T=ee,C=j}if(U.done)return n(p,C),Pe&&Rr(p,$),E;if(C===null){for(;!U.done;$++,U=w.next())U=f(p,U.value,S),U!==null&&(g=i(U,g,$),T===null?E=U:T.sibling=U,T=U);return Pe&&Rr(p,$),E}for(C=r(p,C);!U.done;$++,U=w.next())U=v(C,p,$,U.value,S),U!==null&&(e&&U.alternate!==null&&C.delete(U.key===null?$:U.key),g=i(U,g,$),T===null?E=U:T.sibling=U,T=U);return e&&C.forEach(function(Be){return t(p,Be)}),Pe&&Rr(p,$),E}function x(p,g,w,S){if(typeof w=="object"&&w!==null&&w.type===Ba&&w.key===null&&(w=w.props.children),typeof w=="object"&&w!==null){switch(w.$$typeof){case kl:e:{for(var E=w.key,T=g;T!==null;){if(T.key===E){if(E=w.type,E===Ba){if(T.tag===7){n(p,T.sibling),g=a(T,w.props.children),g.return=p,p=g;break e}}else if(T.elementType===E||typeof E=="object"&&E!==null&&E.$$typeof===Jn&&wg(E)===T.type){n(p,T.sibling),g=a(T,w.props),g.ref=zi(p,T,w),g.return=p,p=g;break e}n(p,T);break}else t(p,T);T=T.sibling}w.type===Ba?(g=Wr(w.props.children,p.mode,S,w.key),g.return=p,p=g):(S=fs(w.type,w.key,w.props,null,p.mode,S),S.ref=zi(p,g,w),S.return=p,p=S)}return o(p);case Fa:e:{for(T=w.key;g!==null;){if(g.key===T)if(g.tag===4&&g.stateNode.containerInfo===w.containerInfo&&g.stateNode.implementation===w.implementation){n(p,g.sibling),g=a(g,w.children||[]),g.return=p,p=g;break e}else{n(p,g);break}else t(p,g);g=g.sibling}g=Xc(w,p.mode,S),g.return=p,p=g}return o(p);case Jn:return T=w._init,x(p,g,T(w._payload),S)}if(no(w))return y(p,g,w,S);if(Di(w))return b(p,g,w,S);Il(p,w)}return typeof w=="string"&&w!==""||typeof w=="number"?(w=""+w,g!==null&&g.tag===6?(n(p,g.sibling),g=a(g,w),g.return=p,p=g):(n(p,g),g=qc(w,p.mode,S),g.return=p,p=g),o(p)):n(p,g)}return x}var pi=Jy(!0),e2=Jy(!1),cl={},xn=kr(cl),Ho=kr(cl),Wo=kr(cl);function Ur(e){if(e===cl)throw Error(I(174));return e}function Mp(e,t){switch(Se(Wo,t),Se(Ho,e),Se(xn,cl),e=t.nodeType,e){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:Rf(null,"");break;default:e=e===8?t.parentNode:t,t=e.namespaceURI||null,e=e.tagName,t=Rf(t,e)}ke(xn),Se(xn,t)}function hi(){ke(xn),ke(Ho),ke(Wo)}function t2(e){Ur(Wo.current);var t=Ur(xn.current),n=Rf(t,e.type);t!==n&&(Se(Ho,e),Se(xn,n))}function Rp(e){Ho.current===e&&(ke(xn),ke(Ho))}var Re=kr(0);function Ys(e){for(var t=e;t!==null;){if(t.tag===13){var n=t.memoizedState;if(n!==null&&(n=n.dehydrated,n===null||n.data==="$?"||n.data==="$!"))return t}else if(t.tag===19&&t.memoizedProps.revealOrder!==void 0){if(t.flags&128)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var Hc=[];function Ap(){for(var e=0;en?n:4,e(!0);var r=Wc.transition;Wc.transition={};try{e(!1),t()}finally{ye=n,Wc.transition=r}}function v2(){return Zt().memoizedState}function k4(e,t,n){var r=vr(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},y2(e))w2(t,n);else if(n=qy(e,t,n,r),n!==null){var a=pt();on(n,e,r,a),b2(n,t,r)}}function T4(e,t,n){var r=vr(e),a={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(y2(e))w2(t,a);else{var i=e.alternate;if(e.lanes===0&&(i===null||i.lanes===0)&&(i=t.lastRenderedReducer,i!==null))try{var o=t.lastRenderedState,l=i(o,n);if(a.hasEagerState=!0,a.eagerState=l,ln(l,o)){var s=t.interleaved;s===null?(a.next=a,$p(t)):(a.next=s.next,s.next=a),t.interleaved=a;return}}catch{}finally{}n=qy(e,t,a,r),n!==null&&(a=pt(),on(n,e,r,a),b2(n,t,r))}}function y2(e){var t=e.alternate;return e===Ae||t!==null&&t===Ae}function w2(e,t){ho=Zs=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function b2(e,t,n){if(n&4194240){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,gp(e,n)}}var qs={readContext:Yt,useCallback:tt,useContext:tt,useEffect:tt,useImperativeHandle:tt,useInsertionEffect:tt,useLayoutEffect:tt,useMemo:tt,useReducer:tt,useRef:tt,useState:tt,useDebugValue:tt,useDeferredValue:tt,useTransition:tt,useMutableSource:tt,useSyncExternalStore:tt,useId:tt,unstable_isNewReconciler:!1},O4={readContext:Yt,useCallback:function(e,t){return dn().memoizedState=[e,t===void 0?null:t],e},useContext:Yt,useEffect:xg,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,ls(4194308,4,d2.bind(null,t,e),n)},useLayoutEffect:function(e,t){return ls(4194308,4,e,t)},useInsertionEffect:function(e,t){return ls(4,2,e,t)},useMemo:function(e,t){var n=dn();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=dn();return t=n!==void 0?n(t):t,r.memoizedState=r.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},r.queue=e,e=e.dispatch=k4.bind(null,Ae,e),[r.memoizedState,e]},useRef:function(e){var t=dn();return e={current:e},t.memoizedState=e},useState:bg,useDebugValue:jp,useDeferredValue:function(e){return dn().memoizedState=e},useTransition:function(){var e=bg(!1),t=e[0];return e=E4.bind(null,e[1]),dn().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=Ae,a=dn();if(Pe){if(n===void 0)throw Error(I(407));n=n()}else{if(n=t(),Ze===null)throw Error(I(349));Xr&30||a2(r,t,n)}a.memoizedState=n;var i={value:n,getSnapshot:t};return a.queue=i,xg(o2.bind(null,r,i,e),[e]),r.flags|=2048,Yo(9,i2.bind(null,r,i,n,t),void 0,null),n},useId:function(){var e=dn(),t=Ze.identifierPrefix;if(Pe){var n=Dn,r=Nn;n=(r&~(1<<32-an(r)-1)).toString(32)+n,t=":"+t+"R"+n,n=Vo++,0<\/script>",e=e.removeChild(e.firstChild)):typeof r.is=="string"?e=o.createElement(n,{is:r.is}):(e=o.createElement(n),n==="select"&&(o=e,r.multiple?o.multiple=!0:r.size&&(o.size=r.size))):e=o.createElementNS(e,n),e[vn]=t,e[Uo]=r,$2(e,t,!1,!1),t.stateNode=e;e:{switch(o=Lf(n,r),n){case"dialog":_e("cancel",e),_e("close",e),a=r;break;case"iframe":case"object":case"embed":_e("load",e),a=r;break;case"video":case"audio":for(a=0;ami&&(t.flags|=128,r=!0,Ui(i,!1),t.lanes=4194304)}else{if(!r)if(e=Ys(o),e!==null){if(t.flags|=128,r=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),Ui(i,!0),i.tail===null&&i.tailMode==="hidden"&&!o.alternate&&!Pe)return nt(t),null}else 2*Ie()-i.renderingStartTime>mi&&n!==1073741824&&(t.flags|=128,r=!0,Ui(i,!1),t.lanes=4194304);i.isBackwards?(o.sibling=t.child,t.child=o):(n=i.last,n!==null?n.sibling=o:t.child=o,i.last=o)}return i.tail!==null?(t=i.tail,i.rendering=t,i.tail=t.sibling,i.renderingStartTime=Ie(),t.sibling=null,n=Re.current,Se(Re,r?n&1|2:n&1),t):(nt(t),null);case 22:case 23:return Wp(),r=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(t.flags|=8192),r&&t.mode&1?Pt&1073741824&&(nt(t),t.subtreeFlags&6&&(t.flags|=8192)):nt(t),null;case 24:return null;case 25:return null}throw Error(I(156,t.tag))}function D4(e,t){switch(Cp(t),t.tag){case 1:return St(t.type)&&Bs(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return hi(),ke(xt),ke(st),Ap(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 5:return Rp(t),null;case 13:if(ke(Re),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(I(340));di()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return ke(Re),null;case 4:return hi(),null;case 10:return Op(t.type._context),null;case 22:case 23:return Wp(),null;case 24:return null;default:return null}}var Fl=!1,lt=!1,I4=typeof WeakSet=="function"?WeakSet:Set,V=null;function qa(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(r){Ne(e,t,r)}else n.current=null}function ld(e,t,n){try{n()}catch(r){Ne(e,t,r)}}var Pg=!1;function j4(e,t){if(Wf=Ds,e=Ny(),Sp(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var a=r.anchorOffset,i=r.focusNode;r=r.focusOffset;try{n.nodeType,i.nodeType}catch{n=null;break e}var o=0,l=-1,s=-1,u=0,c=0,f=e,d=null;t:for(;;){for(var v;f!==n||a!==0&&f.nodeType!==3||(l=o+a),f!==i||r!==0&&f.nodeType!==3||(s=o+r),f.nodeType===3&&(o+=f.nodeValue.length),(v=f.firstChild)!==null;)d=f,f=v;for(;;){if(f===e)break t;if(d===n&&++u===a&&(l=o),d===i&&++c===r&&(s=o),(v=f.nextSibling)!==null)break;f=d,d=f.parentNode}f=v}n=l===-1||s===-1?null:{start:l,end:s}}else n=null}n=n||{start:0,end:0}}else n=null;for(Vf={focusedElem:e,selectionRange:n},Ds=!1,V=t;V!==null;)if(t=V,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,V=e;else for(;V!==null;){t=V;try{var y=t.alternate;if(t.flags&1024)switch(t.tag){case 0:case 11:case 15:break;case 1:if(y!==null){var b=y.memoizedProps,x=y.memoizedState,p=t.stateNode,g=p.getSnapshotBeforeUpdate(t.elementType===t.type?b:Jt(t.type,b),x);p.__reactInternalSnapshotBeforeUpdate=g}break;case 3:var w=t.stateNode.containerInfo;w.nodeType===1?w.textContent="":w.nodeType===9&&w.documentElement&&w.removeChild(w.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(I(163))}}catch(S){Ne(t,t.return,S)}if(e=t.sibling,e!==null){e.return=t.return,V=e;break}V=t.return}return y=Pg,Pg=!1,y}function go(e,t,n){var r=t.updateQueue;if(r=r!==null?r.lastEffect:null,r!==null){var a=r=r.next;do{if((a.tag&e)===e){var i=a.destroy;a.destroy=void 0,i!==void 0&&ld(t,n,i)}a=a.next}while(a!==r)}}function ju(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function sd(e){var t=e.ref;if(t!==null){var n=e.stateNode;switch(e.tag){case 5:e=n;break;default:e=n}typeof t=="function"?t(e):t.current=e}}function R2(e){var t=e.alternate;t!==null&&(e.alternate=null,R2(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[vn],delete t[Uo],delete t[Zf],delete t[b4],delete t[x4])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function A2(e){return e.tag===5||e.tag===3||e.tag===4}function Mg(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||A2(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function ud(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.nodeType===8?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(n.nodeType===8?(t=n.parentNode,t.insertBefore(e,n)):(t=n,t.appendChild(e)),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=Fs));else if(r!==4&&(e=e.child,e!==null))for(ud(e,t,n),e=e.sibling;e!==null;)ud(e,t,n),e=e.sibling}function cd(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(e=e.child,e!==null))for(cd(e,t,n),e=e.sibling;e!==null;)cd(e,t,n),e=e.sibling}var Xe=null,en=!1;function qn(e,t,n){for(n=n.child;n!==null;)L2(e,t,n),n=n.sibling}function L2(e,t,n){if(bn&&typeof bn.onCommitFiberUnmount=="function")try{bn.onCommitFiberUnmount(Pu,n)}catch{}switch(n.tag){case 5:lt||qa(n,t);case 6:var r=Xe,a=en;Xe=null,qn(e,t,n),Xe=r,en=a,Xe!==null&&(en?(e=Xe,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):Xe.removeChild(n.stateNode));break;case 18:Xe!==null&&(en?(e=Xe,n=n.stateNode,e.nodeType===8?zc(e.parentNode,n):e.nodeType===1&&zc(e,n),Io(e)):zc(Xe,n.stateNode));break;case 4:r=Xe,a=en,Xe=n.stateNode.containerInfo,en=!0,qn(e,t,n),Xe=r,en=a;break;case 0:case 11:case 14:case 15:if(!lt&&(r=n.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){a=r=r.next;do{var i=a,o=i.destroy;i=i.tag,o!==void 0&&(i&2||i&4)&&ld(n,t,o),a=a.next}while(a!==r)}qn(e,t,n);break;case 1:if(!lt&&(qa(n,t),r=n.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(l){Ne(n,t,l)}qn(e,t,n);break;case 21:qn(e,t,n);break;case 22:n.mode&1?(lt=(r=lt)||n.memoizedState!==null,qn(e,t,n),lt=r):qn(e,t,n);break;default:qn(e,t,n)}}function Rg(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new I4),t.forEach(function(r){var a=Y4.bind(null,e,r);n.has(r)||(n.add(r),r.then(a,a))})}}function Xt(e,t){var n=t.deletions;if(n!==null)for(var r=0;ra&&(a=o),r&=~i}if(r=a,r=Ie()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*B4(r/1960))-r,10e?16:e,sr===null)var r=!1;else{if(e=sr,sr=null,Qs=0,ce&6)throw Error(I(331));var a=ce;for(ce|=4,V=e.current;V!==null;){var i=V,o=i.child;if(V.flags&16){var l=i.deletions;if(l!==null){for(var s=0;sIe()-Up?Hr(e,0):zp|=n),_t(e,t)}function U2(e,t){t===0&&(e.mode&1?(t=Pl,Pl<<=1,!(Pl&130023424)&&(Pl=4194304)):t=1);var n=pt();e=Un(e,t),e!==null&&(ll(e,t,n),_t(e,n))}function G4(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),U2(e,n)}function Y4(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,a=e.memoizedState;a!==null&&(n=a.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(I(314))}r!==null&&r.delete(t),U2(e,n)}var H2;H2=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||xt.current)bt=!0;else{if(!(e.lanes&n)&&!(t.flags&128))return bt=!1,L4(e,t,n);bt=!!(e.flags&131072)}else bt=!1,Pe&&t.flags&1048576&&Gy(t,Hs,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;ss(e,t),e=t.pendingProps;var a=fi(t,st.current);ai(t,n),a=Np(null,t,r,e,a,n);var i=Dp();return t.flags|=1,typeof a=="object"&&a!==null&&typeof a.render=="function"&&a.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,St(r)?(i=!0,zs(t)):i=!1,t.memoizedState=a.state!==null&&a.state!==void 0?a.state:null,Pp(t),a.updater=Du,t.stateNode=a,a._reactInternals=t,ed(t,r,e,n),t=rd(null,t,r,!0,i,n)):(t.tag=0,Pe&&i&&_p(t),ft(null,t,a,n),t=t.child),t;case 16:r=t.elementType;e:{switch(ss(e,t),e=t.pendingProps,a=r._init,r=a(r._payload),t.type=r,a=t.tag=q4(r),e=Jt(r,e),a){case 0:t=nd(null,t,r,e,n);break e;case 1:t=Tg(null,t,r,e,n);break e;case 11:t=Eg(null,t,r,e,n);break e;case 14:t=kg(null,t,r,Jt(r.type,e),n);break e}throw Error(I(306,r,""))}return t;case 0:return r=t.type,a=t.pendingProps,a=t.elementType===r?a:Jt(r,a),nd(e,t,r,a,n);case 1:return r=t.type,a=t.pendingProps,a=t.elementType===r?a:Jt(r,a),Tg(e,t,r,a,n);case 3:e:{if(k2(t),e===null)throw Error(I(387));r=t.pendingProps,i=t.memoizedState,a=i.element,Xy(e,t),Gs(t,r,null,n);var o=t.memoizedState;if(r=o.element,i.isDehydrated)if(i={element:r,isDehydrated:!1,cache:o.cache,pendingSuspenseBoundaries:o.pendingSuspenseBoundaries,transitions:o.transitions},t.updateQueue.baseState=i,t.memoizedState=i,t.flags&256){a=gi(Error(I(423)),t),t=Og(e,t,r,n,a);break e}else if(r!==a){a=gi(Error(I(424)),t),t=Og(e,t,r,n,a);break e}else for(Mt=hr(t.stateNode.containerInfo.firstChild),Rt=t,Pe=!0,tn=null,n=e2(t,null,r,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(di(),r===a){t=Hn(e,t,n);break e}ft(e,t,r,n)}t=t.child}return t;case 5:return t2(t),e===null&&Kf(t),r=t.type,a=t.pendingProps,i=e!==null?e.memoizedProps:null,o=a.children,Gf(r,a)?o=null:i!==null&&Gf(r,i)&&(t.flags|=32),E2(e,t),ft(e,t,o,n),t.child;case 6:return e===null&&Kf(t),null;case 13:return T2(e,t,n);case 4:return Mp(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=pi(t,null,r,n):ft(e,t,r,n),t.child;case 11:return r=t.type,a=t.pendingProps,a=t.elementType===r?a:Jt(r,a),Eg(e,t,r,a,n);case 7:return ft(e,t,t.pendingProps,n),t.child;case 8:return ft(e,t,t.pendingProps.children,n),t.child;case 12:return ft(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,a=t.pendingProps,i=t.memoizedProps,o=a.value,Se(Ws,r._currentValue),r._currentValue=o,i!==null)if(ln(i.value,o)){if(i.children===a.children&&!xt.current){t=Hn(e,t,n);break e}}else for(i=t.child,i!==null&&(i.return=t);i!==null;){var l=i.dependencies;if(l!==null){o=i.child;for(var s=l.firstContext;s!==null;){if(s.context===r){if(i.tag===1){s=jn(-1,n&-n),s.tag=2;var u=i.updateQueue;if(u!==null){u=u.shared;var c=u.pending;c===null?s.next=s:(s.next=c.next,c.next=s),u.pending=s}}i.lanes|=n,s=i.alternate,s!==null&&(s.lanes|=n),Qf(i.return,n,t),l.lanes|=n;break}s=s.next}}else if(i.tag===10)o=i.type===t.type?null:i.child;else if(i.tag===18){if(o=i.return,o===null)throw Error(I(341));o.lanes|=n,l=o.alternate,l!==null&&(l.lanes|=n),Qf(o,n,t),o=i.sibling}else o=i.child;if(o!==null)o.return=i;else for(o=i;o!==null;){if(o===t){o=null;break}if(i=o.sibling,i!==null){i.return=o.return,o=i;break}o=o.return}i=o}ft(e,t,a.children,n),t=t.child}return t;case 9:return a=t.type,r=t.pendingProps.children,ai(t,n),a=Yt(a),r=r(a),t.flags|=1,ft(e,t,r,n),t.child;case 14:return r=t.type,a=Jt(r,t.pendingProps),a=Jt(r.type,a),kg(e,t,r,a,n);case 15:return _2(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,a=t.pendingProps,a=t.elementType===r?a:Jt(r,a),ss(e,t),t.tag=1,St(r)?(e=!0,zs(t)):e=!1,ai(t,n),Qy(t,r,a),ed(t,r,a,n),rd(null,t,r,!0,e,n);case 19:return O2(e,t,n);case 22:return C2(e,t,n)}throw Error(I(156,t.tag))};function W2(e,t){return my(e,t)}function Z4(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Wt(e,t,n,r){return new Z4(e,t,n,r)}function Gp(e){return e=e.prototype,!(!e||!e.isReactComponent)}function q4(e){if(typeof e=="function")return Gp(e)?1:0;if(e!=null){if(e=e.$$typeof,e===fp)return 11;if(e===dp)return 14}return 2}function yr(e,t){var n=e.alternate;return n===null?(n=Wt(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&14680064,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function fs(e,t,n,r,a,i){var o=2;if(r=e,typeof e=="function")Gp(e)&&(o=1);else if(typeof e=="string")o=5;else e:switch(e){case Ba:return Wr(n.children,a,i,t);case cp:o=8,a|=8;break;case Cf:return e=Wt(12,n,t,a|2),e.elementType=Cf,e.lanes=i,e;case Ef:return e=Wt(13,n,t,a),e.elementType=Ef,e.lanes=i,e;case kf:return e=Wt(19,n,t,a),e.elementType=kf,e.lanes=i,e;case Jv:return Bu(n,a,i,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case Kv:o=10;break e;case Qv:o=9;break e;case fp:o=11;break e;case dp:o=14;break e;case Jn:o=16,r=null;break e}throw Error(I(130,e==null?e:typeof e,""))}return t=Wt(o,n,t,a),t.elementType=e,t.type=r,t.lanes=i,t}function Wr(e,t,n,r){return e=Wt(7,e,r,t),e.lanes=n,e}function Bu(e,t,n,r){return e=Wt(22,e,r,t),e.elementType=Jv,e.lanes=n,e.stateNode={isHidden:!1},e}function qc(e,t,n){return e=Wt(6,e,null,t),e.lanes=n,e}function Xc(e,t,n){return t=Wt(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function X4(e,t,n,r,a){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=Pc(0),this.expirationTimes=Pc(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Pc(0),this.identifierPrefix=r,this.onRecoverableError=a,this.mutableSourceEagerHydrationData=null}function Yp(e,t,n,r,a,i,o,l,s){return e=new X4(e,t,n,l,s),t===1?(t=1,i===!0&&(t|=8)):t=0,i=Wt(3,null,null,t),e.current=i,i.stateNode=e,i.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},Pp(i),e}function K4(e,t,n){var r=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(Z2)}catch(e){console.error(e)}}Z2(),Gv.exports=jt;var Kp=Gv.exports,Bg=Kp;Sf.createRoot=Bg.createRoot,Sf.hydrateRoot=Bg.hydrateRoot;const nS=e=>z("svg",{"data-icon":!0,viewBox:"0 0 176 32",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:[m("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M17.5849 16.7737C18.0226 16.7737 18.3774 16.4273 18.3774 16C18.3774 15.5727 18.0226 15.2263 17.5849 15.2263C17.1473 15.2263 16.7925 15.5727 16.7925 16C16.7925 16.4273 17.1473 16.7737 17.5849 16.7737ZM17.5849 18.3211C18.8979 18.3211 19.9623 17.2819 19.9623 16C19.9623 14.7181 18.8979 13.6789 17.5849 13.6789C16.2719 13.6789 15.2076 14.7181 15.2076 16C15.2076 17.2819 16.2719 18.3211 17.5849 18.3211Z",fill:"currentColor"}),m("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M30 16C30 22.6944 24.4416 28.1212 17.5849 28.1212C11.6163 28.1212 6.63145 24.0091 5.44029 18.5283H2V13.546H5.42438C6.58643 8.02813 11.5894 3.87878 17.5849 3.87878C24.4416 3.87878 30 9.30564 30 16ZM17.5849 23.3071C21.7184 23.3071 25.0692 20.0356 25.0692 16C25.0692 11.9644 21.7184 8.69288 17.5849 8.69288C13.4515 8.69288 10.1006 11.9644 10.1006 16C10.1006 20.0356 13.4515 23.3071 17.5849 23.3071Z",fill:"currentColor"}),m("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M17.5849 18.3211C18.8979 18.3211 19.9623 17.2819 19.9623 16C19.9623 14.7181 18.8979 13.6789 17.5849 13.6789C16.2719 13.6789 15.2076 14.7181 15.2076 16C15.2076 17.2819 16.2719 18.3211 17.5849 18.3211ZM17.5849 16.7737C18.0226 16.7737 18.3774 16.4273 18.3774 16C18.3774 15.5727 18.0226 15.2263 17.5849 15.2263C17.1473 15.2263 16.7925 15.5727 16.7925 16C16.7925 16.4273 17.1473 16.7737 17.5849 16.7737Z",fill:"currentColor"}),m("path",{d:"M56.6136 26.6331H61.2961L55.4217 18.504C58.8272 18.0242 60.9556 15.7944 60.9556 12.8024C60.9556 9.44355 58.288 7.01613 54.0596 7.01613H46V26.6331H50.1717V18.5887H50.9947L56.6136 26.6331ZM50.1717 10.6855H53.946C55.7907 10.6855 56.8407 11.6452 56.8407 13.1694C56.8407 14.6653 55.7907 15.625 53.946 15.625H50.1717V10.6855Z",fill:"currentColor"}),m("path",{d:"M69.404 27C74.1149 27 77.4919 23.6411 77.4919 19.2097C77.4919 14.75 74.1149 11.4194 69.404 11.4194C64.6648 11.4194 61.3161 14.75 61.3161 19.2097C61.3161 23.6411 64.6648 27 69.404 27ZM69.4324 23.2742C67.1053 23.2742 65.5445 21.5806 65.5445 19.2097C65.5445 16.8105 67.1053 15.1452 69.4324 15.1452C71.7594 15.1452 73.2919 16.8105 73.2919 19.1815C73.2919 21.5806 71.7027 23.2742 69.4324 23.2742Z",fill:"currentColor"}),m("path",{d:"M87.8211 11.4194C86.0333 11.4194 84.5292 12.0121 83.4224 13.0565V6H79.2224V26.6331H83.1103V25.0806C84.217 26.2944 85.7779 27 87.7076 27C92.0212 27 95.1428 23.6411 95.1428 19.2097C95.1428 14.75 92.1347 11.4194 87.8211 11.4194ZM87.14 23.3024C84.813 23.3024 83.2522 21.6371 83.2522 19.2097C83.2522 16.7823 84.813 15.0887 87.14 15.0887C89.3536 15.0887 90.9712 16.8387 90.9712 19.2097C90.9712 21.5806 89.3536 23.3024 87.14 23.3024Z",fill:"currentColor"}),m("path",{d:"M104.269 27C108.98 27 112.357 23.6411 112.357 19.2097C112.357 14.75 108.98 11.4194 104.269 11.4194C99.5296 11.4194 96.1809 14.75 96.1809 19.2097C96.1809 23.6411 99.5296 27 104.269 27ZM104.297 23.2742C101.97 23.2742 100.409 21.5806 100.409 19.2097C100.409 16.8105 101.97 15.1452 104.297 15.1452C106.624 15.1452 108.157 16.8105 108.157 19.1815C108.157 21.5806 106.567 23.2742 104.297 23.2742Z",fill:"currentColor"}),m("path",{d:"M120.736 26.6331H123.205V22.9919H121.616C120.14 22.9919 119.317 22.1452 119.317 20.5645V15.3145H123.091V11.7581H119.459V7.83468H115.372V10.1492C115.372 11.2218 114.861 11.7581 113.84 11.7581H112.563V15.3145H115.117V21.0726C115.117 24.4314 117.018 26.6331 120.736 26.6331Z",fill:"currentColor"}),m("path",{d:"M136.694 7.01613V14.75H129.173V7.01613H124.945V26.6331H129.173V18.504H136.694V26.6331H140.922V7.01613H136.694Z",fill:"currentColor"}),m("path",{d:"M153.449 11.7581V20.5645C153.449 22.1169 152.314 23.2742 150.582 23.2742C148.823 23.2742 147.745 22.1169 147.745 20.4798V11.7581H143.545V21.0161C143.545 24.4032 145.531 27 149.334 27C151.122 27 152.654 26.2944 153.704 25.2218V26.6331H157.649V11.7581H153.449Z",fill:"currentColor"}),m("path",{d:"M168.678 11.4194C166.89 11.4194 165.386 12.0121 164.28 13.0565V6H160.08V26.6331H163.967V25.0806C165.074 26.2944 166.635 27 168.565 27C172.878 27 176 23.6411 176 19.2097C176 14.75 172.992 11.4194 168.678 11.4194ZM167.997 23.3024C165.67 23.3024 164.109 21.6371 164.109 19.2097C164.109 16.7823 165.67 15.0887 167.997 15.0887C170.211 15.0887 171.828 16.8387 171.828 19.2097C171.828 21.5806 170.211 23.3024 167.997 23.3024Z",fill:"currentColor"})]}),rS=e=>z("svg",{"data-icon":!0,viewBox:"0 0 48 48",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:[m("path",{fillRule:"evenodd",clipRule:"evenodd",shapeRendering:"geometricPrecision",d:"M26.3774 25.1606C27.0339 25.1606 27.566 24.641 27.566 24C27.566 23.3591 27.0339 22.8395 26.3774 22.8395C25.7209 22.8395 25.1887 23.3591 25.1887 24C25.1887 24.641 25.7209 25.1606 26.3774 25.1606ZM26.3774 27.4817C28.3468 27.4817 29.9434 25.9229 29.9434 24C29.9434 22.0772 28.3468 20.5184 26.3774 20.5184C24.4079 20.5184 22.8113 22.0772 22.8113 24C22.8113 25.9229 24.4079 27.4817 26.3774 27.4817Z",fill:"currentColor"}),m("path",{fillRule:"evenodd",clipRule:"evenodd",shapeRendering:"geometricPrecision",d:"M45 24.0001C45 34.0416 36.6624 42.1819 26.3774 42.1819C17.4245 42.1819 9.94718 36.0137 8.16043 27.7926H3V20.3191H8.13657C9.87965 12.0423 17.384 5.81824 26.3774 5.81824C36.6624 5.81824 45 13.9585 45 24.0001ZM26.3774 34.9607C32.5775 34.9607 37.6038 30.0535 37.6038 24.0001C37.6038 17.9466 32.5775 13.0394 26.3774 13.0394C20.1772 13.0394 15.1509 17.9466 15.1509 24.0001C15.1509 30.0535 20.1772 34.9607 26.3774 34.9607Z",fill:"currentColor"}),m("path",{fillRule:"evenodd",clipRule:"evenodd",shapeRendering:"geometricPrecision",d:"M26.3774 27.4817C28.3468 27.4817 29.9434 25.9229 29.9434 24C29.9434 22.0772 28.3468 20.5184 26.3774 20.5184C24.4079 20.5184 22.8113 22.0772 22.8113 24C22.8113 25.9229 24.4079 27.4817 26.3774 27.4817ZM26.3774 25.1606C27.0339 25.1606 27.566 24.641 27.566 24C27.566 23.3591 27.0339 22.8395 26.3774 22.8395C25.7209 22.8395 25.1887 23.3591 25.1887 24C25.1887 24.641 25.7209 25.1606 26.3774 25.1606Z",fill:"currentColor"})]}),q2=e=>m("svg",{"data-icon":!0,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:m("path",{d:"M9 22V12H15V22M3 9L12 2L21 9V20C21 20.5304 20.7893 21.0391 20.4142 21.4142C20.0391 21.7893 19.5304 22 19 22H5C4.46957 22 3.96086 21.7893 3.58579 21.4142C3.21071 21.0391 3 20.5304 3 20V9Z",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})}),aS=e=>z("svg",{"data-icon":!0,viewBox:"0 0 512 512",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:[m("path",{d:"m247.277 293.602 21.785-.483 2.636 60.247-21.786.482-2.635-60.246Z",fill:"#111",stroke:"#000",strokeWidth:"2"}),m("path",{d:"m245.198 351.724-31.881-57.983 12.942-.446 28.751 57.314h13.258l21.752-58.206 14.52-.446-27.462 59.767h-31.88Z",fill:"#B84200",stroke:"#000",strokeWidth:"2"}),m("path",{d:"m233.449 353.611-9.122 25.165 7.235.629 10.066-19.817 14.155-1.573.943 26.423 8.179-.629-.629-25.794 15.728.629 8.179 25.794 8.493-2.516-8.493-30.198-.629-14.47-54.105 1.573v14.784Z",fill:"#D9D9D9"}),m("path",{d:"m233.449 353.611-9.122 25.165 7.235.629 10.066-19.817m-8.179-5.977v-14.784l54.105-1.573.629 14.47m-54.734 1.887 8.179 5.977m0 0 14.155-1.573m0 0 .943 26.423 8.179-.629-.629-25.794m-8.493 0h8.493m0 0 15.728.629m0 0 8.179 25.794 8.493-2.516-8.493-30.198m-8.179 6.92 8.179-6.92",stroke:"#000",strokeWidth:"2"}),m("path",{d:"m161.1 223.323 190.973-6.86 3.426 79.328-194.399 6.861v-79.329Z",fill:"#333",stroke:"#000",strokeWidth:"2"}),m("circle",{cx:"204.509",cy:"259.872",r:"28.569",fill:"#555",stroke:"#000",strokeWidth:"2"}),m("circle",{cx:"312.089",cy:"257.356",r:"27.94",fill:"#555",stroke:"#000",strokeWidth:"2"}),m("path",{d:"m310.202 387.584 3.202-35.86 1.517-16.986 47.184 3.145-1.038 17.93-2.422 41.837-48.443-5.662v-4.404Z",fill:"url(#a)"}),m("path",{d:"m313.404 351.724-3.202 35.86v4.404l48.443 5.662 2.422-41.837m-47.663-4.089 1.517-16.986 47.184 3.145-1.038 17.93m-47.663-4.089 47.663 4.089",stroke:"#000",strokeWidth:"2"}),m("path",{d:"M228.47 259.872c0 13.203-10.856 23.907-24.248 23.907-13.392 0-24.248-10.704-24.248-23.907s10.856-23.907 24.248-23.907c13.392 0 24.248 10.704 24.248 23.907Z",fill:"#111"}),m("path",{d:"M204.222 275.342c7.387 0 14.856-6.151 14.856-15.47s-7.469-15.47-14.856-15.47-14.856 6.151-14.856 15.47 7.469 15.47 14.856 15.47Zm23.248-15.47c0 12.638-10.395 22.907-23.248 22.907-12.853 0-23.248-10.269-23.248-22.907s10.395-22.907 23.248-22.907c12.853 0 23.248 10.269 23.248 22.907Z",fill:"#FFBF1B",stroke:"#000",strokeWidth:"2"}),m("path",{d:"M335.996 257.356c0 13.203-10.563 23.906-23.592 23.906-13.03 0-23.592-10.703-23.592-23.906 0-13.204 10.562-23.907 23.592-23.907 13.029 0 23.592 10.703 23.592 23.907Z",fill:"#111"}),m("path",{d:"M312.404 272.825c7 0 14.335-6.04 14.335-15.469 0-9.43-7.335-15.47-14.335-15.47-7 0-14.335 6.04-14.335 15.47 0 9.429 7.335 15.469 14.335 15.469Zm22.592-15.469c0 12.663-10.127 22.906-22.592 22.906-12.465 0-22.592-10.243-22.592-22.906 0-12.664 10.127-22.907 22.592-22.907 12.465 0 22.592 10.243 22.592 22.907Z",fill:"#FFBF1B",stroke:"#000",strokeWidth:"2"}),m("path",{d:"m235.112 297.819 48.472-1.682.296 8.531-48.472 1.682-.296-8.531Z",fill:"#A50000",stroke:"#000",strokeWidth:"2"}),m("path",{d:"m151.663 378.147 44.668-3.46h117.331l55.363 6.92-2.831 52.532-214.531-1.258v-54.734Z",fill:"#CFCFCF",stroke:"#000",strokeWidth:"2"}),m("path",{d:"m224.327 468.426-5.977-93.425h78.011l-6.605 93.425h-65.429Z",fill:"#D9D9D9",stroke:"#000",strokeWidth:"2"}),m("path",{d:"m180.917 223.697-7.864-17.615 50.645-3.775 3.145 18.559-45.926 2.831ZM286.924 218.979l-2.201-19.188 50.329 2.516-1.572 18.559-46.556-1.887ZM296.047 297.619l2.202 8.179 39.949-4.718-5.977-5.977-36.174 2.516ZM190.669 301.08l-9.437 6.92 41.522 1.573 6.92-8.493h-39.005Z",fill:"#111"}),m("path",{d:"m180.917 223.697-7.864-17.615 50.645-3.775 3.145 18.559-45.926 2.831ZM286.924 218.979l-2.201-19.188 50.329 2.516-1.572 18.559-46.556-1.887ZM296.047 297.619l2.202 8.179 39.949-4.718-5.977-5.977-36.174 2.516ZM190.669 301.08l-9.437 6.92 41.522 1.573 6.92-8.493h-39.005Z",stroke:"#000",strokeWidth:"2"}),m("path",{d:"m240.999 222.754 3.46 44.667 26.108-1.258-1.572-44.668-27.996 1.259Z",fill:"#111",stroke:"#000",strokeWidth:"2"}),m("path",{d:"m270.253 387.899-2.831 44.353 18.244.943 2.202-45.296h-17.615Z",fill:"#4B4B4B",stroke:"#000",strokeWidth:"2"}),m("path",{d:"M150.758 432c-6.364-4.554-55.682-85.269-78.788-123.728L73.94 172.5c10.163-13.437 17.874-9.05 38.06-7.5l5.045 129.608L175 376.967c-25.556 26.838-26.583 39.866-24.242 55.033Z",fill:"#D9D9D9"}),m("path",{d:"M71.97 308.272C95.076 346.731 144.394 427.446 150.758 432c-2.341-15.167-1.314-28.195 24.242-55.033l-57.955-82.359M71.97 308.272 73.94 172.5c10.163-13.437 17.874-9.05 38.06-7.5l5.045 129.608M71.97 308.272c7.817-12.965 18.663-15.195 45.075-13.664",stroke:"#000",strokeWidth:"2"}),m("path",{d:"M58.333 78.399 50 117.87l23.53 46.63 24.5 4.5 20.5 20.5 54.5-20.5-10-16-44.5 16-16-26.5-8-33 30-46.5-17-4-30 43.5 10.5 44.5-19.5-29.13L76.03 82l-17.697-3.601Z",fill:"#484848",stroke:"#000",strokeWidth:"2"}),m("path",{d:"M361.387 381.221c-10.204 29.416-7.997 40.223 5.301 52.779l76.108-87.332c-23.025-16.857-30.551-26.511-25.369-44.426l-56.04 78.979Z",fill:"#D9D9D9"}),m("path",{d:"M417.427 302.242c-5.182 17.915 2.344 27.569 25.369 44.426L464 202c-10.861 5.644-17.324 7.103-29.913 4.936l-16.66 95.306Z",fill:"#D9D9D9"}),m("path",{d:"M442.796 346.668 366.688 434c-13.298-12.556-15.505-23.363-5.301-52.779l56.04-78.979m25.369 44.426c-23.025-16.857-30.551-26.511-25.369-44.426m25.369 44.426L464 202c-10.861 5.644-17.324 7.103-29.913 4.936l-16.66 95.306",stroke:"#000",strokeWidth:"2"}),m("path",{d:"m435.145 209.347-14.005-16.36L406.5 181l14.64-10.5 21.575 13.736L459.5 188.5l7.061-44.214-2.112-23.589L476.561 107 487 150l-20.439 65-31.416-5.653Z",fill:"#444",stroke:"#000",strokeWidth:"2"}),m("defs",{children:z("linearGradient",{id:"a",x1:"336.153",y1:"334.738",x2:"336.153",y2:"397.65",gradientUnits:"userSpaceOnUse",children:[m("stop",{stopColor:"#0877C8"}),m("stop",{offset:"1",stopColor:"#1794EF"})]})})]});var gd={exports:{}};(function(e,t){const{hasOwnProperty:n}=Object.prototype,r=x();r.configure=x,r.stringify=r,r.default=r,t.stringify=r,t.configure=x,e.exports=r;const a=/[\u0000-\u001f\u0022\u005c\ud800-\udfff]|[\ud800-\udbff](?![\udc00-\udfff])|(?:[^\ud800-\udbff]|^)[\udc00-\udfff]/;function i(p){return p.length<5e3&&!a.test(p)?`"${p}"`:JSON.stringify(p)}function o(p){if(p.length>200)return p.sort();for(let g=1;gw;)p[S]=p[S-1],S--;p[S]=w}return p}const l=Object.getOwnPropertyDescriptor(Object.getPrototypeOf(Object.getPrototypeOf(new Int8Array)),Symbol.toStringTag).get;function s(p){return l.call(p)!==void 0&&p.length!==0}function u(p,g,w){p.length= 1`)}return w===void 0?1/0:w}function v(p){return p===1?"1 item":`${p} items`}function y(p){const g=new Set;for(const w of p)(typeof w=="string"||typeof w=="number")&&g.add(String(w));return g}function b(p){if(n.call(p,"strict")){const g=p.strict;if(typeof g!="boolean")throw new TypeError('The "strict" argument must be of type boolean');if(g)return w=>{let S=`Object can not safely be stringified. Received type ${typeof w}`;throw typeof w!="function"&&(S+=` (${w.toString()})`),new Error(S)}}}function x(p){p={...p};const g=b(p);g&&(p.bigint===void 0&&(p.bigint=!1),"circularValue"in p||(p.circularValue=Error));const w=c(p),S=f(p,"bigint"),E=f(p,"deterministic"),T=d(p,"maximumDepth"),C=d(p,"maximumBreadth");function $(se,P,W,Q,G,A){let N=P[se];switch(typeof N=="object"&&N!==null&&typeof N.toJSON=="function"&&(N=N.toJSON(se)),N=Q.call(P,se,N),typeof N){case"string":return i(N);case"object":{if(N===null)return"null";if(W.indexOf(N)!==-1)return w;let F="",K=",";const _=A;if(Array.isArray(N)){if(N.length===0)return"[]";if(TC){const cn=N.length-C-1;F+=`${K}"... ${v(cn)} not stringified"`}return G!==""&&(F+=` +${_}`),W.pop(),`[${F}]`}let M=Object.keys(N);const L=M.length;if(L===0)return"{}";if(TC){const J=L-C;F+=`${D}"...":${O}"${v(J)} not stringified"`,D=K}return G!==""&&D.length>1&&(F=` +${A}${F} +${_}`),W.pop(),`{${F}}`}case"number":return isFinite(N)?String(N):g?g(N):"null";case"boolean":return N===!0?"true":"false";case"undefined":return;case"bigint":if(S)return String(N);default:return g?g(N):void 0}}function j(se,P,W,Q,G,A){switch(typeof P=="object"&&P!==null&&typeof P.toJSON=="function"&&(P=P.toJSON(se)),typeof P){case"string":return i(P);case"object":{if(P===null)return"null";if(W.indexOf(P)!==-1)return w;const N=A;let F="",K=",";if(Array.isArray(P)){if(P.length===0)return"[]";if(TC){const Y=P.length-C-1;F+=`${K}"... ${v(Y)} not stringified"`}return G!==""&&(F+=` +${N}`),W.pop(),`[${F}]`}W.push(P);let _="";G!==""&&(A+=G,K=`, +${A}`,_=" ");let M="";for(const L of Q){const O=j(L,P[L],W,Q,G,A);O!==void 0&&(F+=`${M}${i(L)}:${_}${O}`,M=K)}return G!==""&&M.length>1&&(F=` +${A}${F} +${N}`),W.pop(),`{${F}}`}case"number":return isFinite(P)?String(P):g?g(P):"null";case"boolean":return P===!0?"true":"false";case"undefined":return;case"bigint":if(S)return String(P);default:return g?g(P):void 0}}function U(se,P,W,Q,G){switch(typeof P){case"string":return i(P);case"object":{if(P===null)return"null";if(typeof P.toJSON=="function"){if(P=P.toJSON(se),typeof P!="object")return U(se,P,W,Q,G);if(P===null)return"null"}if(W.indexOf(P)!==-1)return w;const A=G;if(Array.isArray(P)){if(P.length===0)return"[]";if(TC){const ie=P.length-C-1;O+=`${D}"... ${v(ie)} not stringified"`}return O+=` +${A}`,W.pop(),`[${O}]`}let N=Object.keys(P);const F=N.length;if(F===0)return"{}";if(TC){const O=F-C;_+=`${M}"...": "${v(O)} not stringified"`,M=K}return M!==""&&(_=` +${G}${_} +${A}`),W.pop(),`{${_}}`}case"number":return isFinite(P)?String(P):g?g(P):"null";case"boolean":return P===!0?"true":"false";case"undefined":return;case"bigint":if(S)return String(P);default:return g?g(P):void 0}}function ee(se,P,W){switch(typeof P){case"string":return i(P);case"object":{if(P===null)return"null";if(typeof P.toJSON=="function"){if(P=P.toJSON(se),typeof P!="object")return ee(se,P,W);if(P===null)return"null"}if(W.indexOf(P)!==-1)return w;let Q="";if(Array.isArray(P)){if(P.length===0)return"[]";if(TC){const L=P.length-C-1;Q+=`,"... ${v(L)} not stringified"`}return W.pop(),`[${Q}]`}let G=Object.keys(P);const A=G.length;if(A===0)return"{}";if(TC){const K=A-C;Q+=`${N}"...":"${v(K)} not stringified"`}return W.pop(),`{${Q}}`}case"number":return isFinite(P)?String(P):g?g(P):"null";case"boolean":return P===!0?"true":"false";case"undefined":return;case"bigint":if(S)return String(P);default:return g?g(P):void 0}}function Be(se,P,W){if(arguments.length>1){let Q="";if(typeof W=="number"?Q=" ".repeat(Math.min(W,10)):typeof W=="string"&&(Q=W.slice(0,10)),P!=null){if(typeof P=="function")return $("",{"":se},[],P,Q,"");if(Array.isArray(P))return j("",se,[],y(P),Q,"")}if(Q.length!==0)return U("",se,[],Q,"")}return ee("",se,[])}return Be}})(gd,gd.exports);var iS=gd.exports;const X2=ra(iS);X2.configure;const K2=X2,oS=K2,lS=e=>Object.entries(e).filter(([t])=>t.startsWith("data")).reduce((t,n)=>Object.assign(t,{[n[0]]:n[1]}),{});function Q2(e){var t,n,r="";if(typeof e=="string"||typeof e=="number")r+=e;else if(typeof e=="object")if(Array.isArray(e))for(t=0;th.useContext(cS);class dS{constructor(t,n,r){H(this,"_navigate");H(this,"_urlPrefix");H(this,"_location");this._navigate=t,this._urlPrefix=n,this._location=r}set navigate(t){this._navigate=t}set urlPrefix(t){this._urlPrefix=t}set location(t){this._location=t}get currentSearchParams(){return new URLSearchParams(typeof window<"u"?window.location.search:this._location.search)}navigateTo(t){var n;this._navigate(this.assemblePath(t),{replace:(n=t.opts)==null?void 0:n.replace})}removeQueryParams(t){this._navigate(this.assemblePath({path:this._location.pathname,opts:{preserveQuery:!1,query:Array.from(this.currentSearchParams.entries()).filter(([n])=>!t.includes(n)).reduce((n,[r,a])=>{if(typeof n[r]>"u")Object.assign(n,{[r]:a});else{const i=n[r];n[r]=[...Array.isArray(i)?i:[i],a]}return n},{})}}),{replace:!0})}assemblePath(t){const{path:n,opts:r}=t,{appendToPrefix:a=!1,preserveQuery:i=!1,query:o}=r??{};let l=a?uS(this._urlPrefix,n):n;if(i||o){const s=new URLSearchParams;if(i){const u=Array.from(this.currentSearchParams.entries()).filter(([c])=>!Object.keys(o??{}).includes(c));for(const[c,f]of u)s.append(c,f)}if(o)for(const[u,c]of Object.entries(o))if(Array.isArray(c))for(const f of c)s.append(u,f);else s.append(u,c);l+=`?${s.toString()}`}return l}isActive(t,n){const r=this._location.pathname.endsWith("/")?t:t.endsWith("/")?t.substring(0,t.length-1):t;return this._location.pathname===r||!n&&this._location.pathname.startsWith(t)&&this._location.pathname.charAt(t.length)==="/"}}const pS=()=>{const e=Bv(),t=fS(),n=Cr(),r=h.useRef();return r.current?(r.current.navigate=e,r.current.urlPrefix=t,r.current.location=n):r.current=new dS(e,t,n),r.current},J2=e=>{const{path:t,appendToPrefix:n,preserveQuery:r,query:a,children:i,exact:o=!1,...l}=e,s=h.useMemo(()=>ew({path:t,appendToPrefix:n,preserveQuery:r,query:a,exact:o}),[n,o,t,r,a]),[u,c,f]=tw(s);return m("a",{...l,href:u,className:tu(f?"active":void 0,l.className),onClick:c,children:i})};J2.displayName="NavigateTo";const ew=e=>{const{path:t,appendToPrefix:n,preserveQuery:r,query:a,exact:i}=e;return{path:t,opts:{appendToPrefix:n,preserveQuery:r,query:a,exact:i}}},tw=e=>{var i;const t=pS(),n=h.useCallback(o=>{e&&(o.preventDefault(),t.navigateTo(e))},[e,t]),r=e?t.assemblePath(e):void 0,a=r?t.isActive(r,((i=e==null?void 0:e.opts)==null?void 0:i.exact)??!1):!1;return[r,n,a]},Cn=h.forwardRef((e,t)=>{const{what:n="div",children:r,flexChild:a,...i}=e;return h.createElement(n,{...i,...a?{"data-flex-child":a}:{},ref:t},r)});Object.assign(Cn,{displayName:"Box"});const nw=e=>{const{className:t,onDark:n,onLight:r,centered:a,...i}=e,o=m(Cn,{"data-is":"spinner","data-on":n?"dark":"light",...i,className:t});return a?m(Cn,{"data-is":"spinner-wrapper",children:o}):o};Object.assign(nw,{displayName:"Spinner"});function hS(e){return typeof e.onClick<"u"}function gS(e){return typeof e.href<"u"}const Qp=e=>{const{disabled:t,what:n="div",children:r,...a}=e;let i=null,o=null,l,s;hS(a)?(i=a.onClick,delete a.onClick):gS(a)?(l=a.href,delete a.href,s=a.newTab===!0?"_blank":void 0,delete a.newTab):(o=ew(a),delete a.path,delete a.appendToPrefix,delete a.preserveQuery,delete a.query,delete a.exact);const[u,c]=tw(o);u&&(l=u,i=c);const f=l&&!u?"noreferrer noopener":void 0,d=h.useCallback(y=>{t||i&&i(y)},[t,i]),v=h.useMemo(()=>{const y={...a};return delete y.appendToPrefix,delete y.newTab,y},[a]);return m(Cn,{what:n,...v,rel:f,...n==="button"||n==="input"?{disabled:t}:t?{["data-disabled"]:""}:{},...n==="a"?{href:t?void 0:l,target:s}:{},onClick:t?void 0:d,children:r})},Dt=e=>{const t=h.useContext(md),{component:n=t.component,className:r,title:a,on:i=t.on,color:o=t.color,colorMode:l=t.colorMode,type:s=t.type,size:u=t.size,disabled:c=t.disabled,fillWidth:f=t.fillWidth,submit:d,loading:v=t.loading,centered:y=t.centered,style:b,iconEnd:x,children:p,box:g={},...w}=e,S=z(Qe,{children:[m(nw,{onDark:!0,"data-visible":v?"yes":"no"}),z("span",{"data-button":"inner",children:[mS(p),x&&m("span",{"data-btn-icon":"end",children:x})]})]});return m(Qp,{...w,...g,what:n,className:r,title:a,"data-is":"button","data-on":i,"data-color":o,"data-component-color":l,"data-btn-type":s,"data-btn-size":u,disabled:c,"data-fill-width":f?"":void 0,type:d&&n==="input"?"submit":void 0,"data-hide-children":v?"yes":void 0,"data-btn-align":y?"center":void 0,style:b,...lS(w),children:n==="input"?void 0:S})};Object.assign(Dt,{displayName:"Button"});const md=h.createContext({component:"a",on:"light",colorMode:"data-color",color:"primary",type:"secondary",size:"md",disabled:!1,fillWidth:!1,loading:!1,centered:!1}),rw=e=>{const{children:t,...n}=e,r=h.useContext(md),a=h.useMemo(()=>({...r,...e}),[Object.values(r),Object.values(n)]);return m(md.Provider,{value:a,children:e.children})};Object.assign(rw,{displayName:"SetDefaultButtonProps"});function mS(e){return Array.isArray(e)?e.map((t,n)=>typeof t=="string"?m("span",{children:t},n):t):typeof e=="string"?m("span",{children:e}):e}const vS=e=>{const{children:t}=e;return m(Cn,{"data-is":"button-group",children:t.map((n,r)=>h.cloneElement(n,{key:`btn-${r}`}))})};Object.assign(vS,{displayName:"ButtonGroup"});const ds=e=>{const{children:t,noPadding:n,noGaps:r,limitContentWidth:a,sidePanel:i}=e;return z("div",{"data-is":"page-content","data-padding":n?"0":void 0,"data-flex-gap":r?"0":void 0,"data-content":a?"limit-width":void 0,children:[m("div",{"data-page-content":"main",children:t}),i&&m("div",{"data-page-content":"side-panel",children:i})]})};ds.displayName="PageContent";const ge=e=>{const{className:t,style:n,weight:r,color:a,align:i,maxLines:o,underline:l=!1,font:s,onClick:u,children:c,Component:f="span",cssStyles:d,disabled:v,header:y,...b}=e,x=h.useMemo(()=>{const p={};return a!==void 0&&typeof a!="string"&&(p["--color"]=a.custom),l&&(p.textDecoration="underline",p.textUnderlineOffset="3px"),{...p,...d}},[a,l,d]);return h.createElement(f,{className:t,onClick:u,"data-text":n,"data-text-color":typeof a=="string"?a:"true","data-text-weight":r,"data-text-align":i,"data-font":s,"data-clamp-text":o,style:x,disabled:v?"true":void 0,...y?{"data-header":""}:{},...b},c)};ge.displayName="StyledText";const vd=e=>{const{type:t="data-color",on:n="light",title:r,text:a,actions:i,borderless:o,color:l="primary"}=e;return z(Cn,{"data-is":"alert","data-borderless":o,"data-on":n,"data-color":l,"data-component-color":t,children:[r&&m(ge,{style:"text-md",weight:"medium",color:"inherit",children:r}),a&&m(ge,{style:"text-sm",color:"inherit",children:a}),i&&m(Cn,{"data-alert":"actions",children:i.map((s,u)=>{const{text:c,icon:f,...d}=s;return z(Dt,{...d,color:l,colorMode:t,children:[f,c]},`btn-action-${u}`)})})]})};Object.assign(vd,{displayName:"Alert"});const Vu=e=>{const{direction:t="row",crossAlign:n="center",mainAlign:r="center",gap:a,wrap:i,children:o,...l}=e;return m(Cn,{what:"div","data-flex":t,"data-flex-cross-align":n,"data-flex-main-align":r,"data-flex-gap":a,"data-flex-wrap":i,...l,children:o})};Object.assign(Vu,{displayName:"Flex"});const aw=()=>{const e=Uv();return e instanceof Error?m(ds,{children:m(vd,{color:"error",title:`Unexpected Error: ${e.name}`,text:z(Vu,{direction:"column",crossAlign:"start",mainAlign:"start",children:[m("span",{children:e.message}),m("pre",{children:e.stack})]})})}):Lv(e)?m(ds,{children:z("div",{className:"ErrorPage",children:[m(nS,{width:64,height:64}),z("h1",{children:[e.status," ",e.statusText]}),m("pre",{children:e.data?oS(e.data,void 0,2):""}),m("br",{}),m("br",{}),z(Dt,{path:"/",children:[m(q2,{}),"Go to Dashboard"]}),m("br",{}),m("br",{}),m(aS,{})]})}):m(ds,{children:m(vd,{color:"error",title:"Unknown Unexpected Error"})})};Object.assign(aw,{displayName:"ErrorBoundary"});const yS=e=>m("svg",{"data-icon":!0,viewBox:"0 0 10 10",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:m("circle",{cx:"5",cy:"5",r:"4",fill:"currentColor"})}),wS=[EvalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError,globalThis.DOMException,globalThis.AssertionError,globalThis.SystemError].filter(Boolean).map(e=>[e.name,e]),bS=new Map(wS),xS=[{property:"name",enumerable:!1},{property:"message",enumerable:!1},{property:"stack",enumerable:!1},{property:"code",enumerable:!0},{property:"cause",enumerable:!1}],yd=Symbol(".toJSON was called"),SS=e=>{e[yd]=!0;const t=e.toJSON();return delete e[yd],t},_S=e=>bS.get(e)??Error,iw=({from:e,seen:t,to:n,forceEnumerable:r,maxDepth:a,depth:i,useToJSON:o,serialize:l})=>{if(!n)if(Array.isArray(e))n=[];else if(!l&&zg(e)){const u=_S(e.name);n=new u}else n={};if(t.push(e),i>=a)return n;if(o&&typeof e.toJSON=="function"&&e[yd]!==!0)return SS(e);const s=u=>iw({from:u,seen:[...t],forceEnumerable:r,maxDepth:a,depth:i,useToJSON:o,serialize:l});for(const[u,c]of Object.entries(e)){if(typeof Buffer=="function"&&Buffer.isBuffer(c)){n[u]="[object Buffer]";continue}if(c!==null&&typeof c=="object"&&typeof c.pipe=="function"){n[u]="[object Stream]";continue}if(typeof c!="function"){if(!c||typeof c!="object"){n[u]=c;continue}if(!t.includes(e[u])){i++,n[u]=s(e[u]);continue}n[u]="[Circular]"}}for(const{property:u,enumerable:c}of xS)typeof e[u]<"u"&&e[u]!==null&&Object.defineProperty(n,u,{value:zg(e[u])?s(e[u]):e[u],enumerable:r?!0:c,configurable:!0,writable:!0});return n};function ow(e,t={}){const{maxDepth:n=Number.POSITIVE_INFINITY,useToJSON:r=!0}=t;return typeof e=="object"&&e!==null?iw({from:e,seen:[],forceEnumerable:!0,maxDepth:n,depth:0,useToJSON:r,serialize:!0}):typeof e=="function"?`[Function: ${e.name??"anonymous"}]`:e}function zg(e){return!!e&&typeof e=="object"&&"name"in e&&"message"in e&&"stack"in e}const Kc=10,Ug=(e=0)=>t=>`\x1B[${t+e}m`,Hg=(e=0)=>t=>`\x1B[${38+e};5;${t}m`,Wg=(e=0)=>(t,n,r)=>`\x1B[${38+e};2;${t};${n};${r}m`,Te={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};Object.keys(Te.modifier);const CS=Object.keys(Te.color),ES=Object.keys(Te.bgColor);[...CS,...ES];function kS(){const e=new Map;for(const[t,n]of Object.entries(Te)){for(const[r,a]of Object.entries(n))Te[r]={open:`\x1B[${a[0]}m`,close:`\x1B[${a[1]}m`},n[r]=Te[r],e.set(a[0],a[1]);Object.defineProperty(Te,t,{value:n,enumerable:!1})}return Object.defineProperty(Te,"codes",{value:e,enumerable:!1}),Te.color.close="\x1B[39m",Te.bgColor.close="\x1B[49m",Te.color.ansi=Ug(),Te.color.ansi256=Hg(),Te.color.ansi16m=Wg(),Te.bgColor.ansi=Ug(Kc),Te.bgColor.ansi256=Hg(Kc),Te.bgColor.ansi16m=Wg(Kc),Object.defineProperties(Te,{rgbToAnsi256:{value(t,n,r){return t===n&&n===r?t<8?16:t>248?231:Math.round((t-8)/247*24)+232:16+36*Math.round(t/255*5)+6*Math.round(n/255*5)+Math.round(r/255*5)},enumerable:!1},hexToRgb:{value(t){const n=/[a-f\d]{6}|[a-f\d]{3}/i.exec(t.toString(16));if(!n)return[0,0,0];let[r]=n;r.length===3&&(r=[...r].map(i=>i+i).join(""));const a=Number.parseInt(r,16);return[a>>16&255,a>>8&255,a&255]},enumerable:!1},hexToAnsi256:{value:t=>Te.rgbToAnsi256(...Te.hexToRgb(t)),enumerable:!1},ansi256ToAnsi:{value(t){if(t<8)return 30+t;if(t<16)return 90+(t-8);let n,r,a;if(t>=232)n=((t-232)*10+8)/255,r=n,a=n;else{t-=16;const l=t%36;n=Math.floor(t/36)/5,r=Math.floor(l/6)/5,a=l%6/5}const i=Math.max(n,r,a)*2;if(i===0)return 30;let o=30+(Math.round(a)<<2|Math.round(r)<<1|Math.round(n));return i===2&&(o+=60),o},enumerable:!1},rgbToAnsi:{value:(t,n,r)=>Te.ansi256ToAnsi(Te.rgbToAnsi256(t,n,r)),enumerable:!1},hexToAnsi:{value:t=>Te.ansi256ToAnsi(Te.hexToAnsi256(t)),enumerable:!1}}),Te}const pn=kS(),Ul=(()=>{if(navigator.userAgentData){const e=navigator.userAgentData.brands.find(({brand:t})=>t==="Chromium");if(e&&e.version>93)return 3}return/\b(Chrome|Chromium)\//.test(navigator.userAgent)?1:0})(),Vg=Ul!==0&&{level:Ul,hasBasic:!0,has256:Ul>=2,has16m:Ul>=3},TS={stdout:Vg,stderr:Vg};function OS(e,t,n){let r=e.indexOf(t);if(r===-1)return e;const a=t.length;let i=0,o="";do o+=e.slice(i,r)+t+n,i=r+a,r=e.indexOf(t,i);while(r!==-1);return o+=e.slice(i),o}function $S(e,t,n,r){let a=0,i="";do{const o=e[r-1]==="\r";i+=e.slice(a,o?r-1:r)+t+(o?`\r +`:` +`)+n,a=r+1,r=e.indexOf(` +`,a)}while(r!==-1);return i+=e.slice(a),i}const{stdout:Gg,stderr:Yg}=TS,wd=Symbol("GENERATOR"),vi=Symbol("STYLER"),qo=Symbol("IS_EMPTY"),Zg=["ansi","ansi","ansi256","ansi16m"],yi=Object.create(null),PS=(e,t={})=>{if(t.level&&!(Number.isInteger(t.level)&&t.level>=0&&t.level<=3))throw new Error("The `level` option should be an integer from 0 to 3");const n=Gg?Gg.level:0;e.level=t.level===void 0?n:t.level},MS=e=>{const t=(...n)=>n.join(" ");return PS(t,e),Object.setPrototypeOf(t,fl.prototype),t};function fl(e){return MS(e)}Object.setPrototypeOf(fl.prototype,Function.prototype);for(const[e,t]of Object.entries(pn))yi[e]={get(){const n=nu(this,xd(t.open,t.close,this[vi]),this[qo]);return Object.defineProperty(this,e,{value:n}),n}};yi.visible={get(){const e=nu(this,this[vi],!0);return Object.defineProperty(this,"visible",{value:e}),e}};const bd=(e,t,n,...r)=>e==="rgb"?t==="ansi16m"?pn[n].ansi16m(...r):t==="ansi256"?pn[n].ansi256(pn.rgbToAnsi256(...r)):pn[n].ansi(pn.rgbToAnsi(...r)):e==="hex"?bd("rgb",t,n,...pn.hexToRgb(...r)):pn[n][e](...r),RS=["rgb","hex","ansi256"];for(const e of RS){yi[e]={get(){const{level:n}=this;return function(...r){const a=xd(bd(e,Zg[n],"color",...r),pn.color.close,this[vi]);return nu(this,a,this[qo])}}};const t="bg"+e[0].toUpperCase()+e.slice(1);yi[t]={get(){const{level:n}=this;return function(...r){const a=xd(bd(e,Zg[n],"bgColor",...r),pn.bgColor.close,this[vi]);return nu(this,a,this[qo])}}}}const AS=Object.defineProperties(()=>{},{...yi,level:{enumerable:!0,get(){return this[wd].level},set(e){this[wd].level=e}}}),xd=(e,t,n)=>{let r,a;return n===void 0?(r=e,a=t):(r=n.openAll+e,a=t+n.closeAll),{open:e,close:t,openAll:r,closeAll:a,parent:n}},nu=(e,t,n)=>{const r=(...a)=>LS(r,a.length===1?""+a[0]:a.join(" "));return Object.setPrototypeOf(r,AS),r[wd]=e,r[vi]=t,r[qo]=n,r},LS=(e,t)=>{if(e.level<=0||!t)return e[qo]?"":t;let n=e[vi];if(n===void 0)return t;const{openAll:r,closeAll:a}=n;if(t.includes("\x1B"))for(;n!==void 0;)t=OS(t,n.close,n.open),n=n.parent;const i=t.indexOf(` +`);return i!==-1&&(t=$S(t,a,r,i)),r+t+a};Object.defineProperties(fl.prototype,yi);const qe=fl();fl({level:Yg?Yg.level:0});function ru(e){"@babel/helpers - typeof";return ru=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},ru(e)}function Jr(e){if(e===null||e===!0||e===!1)return NaN;var t=Number(e);return isNaN(t)?t:t<0?Math.ceil(t):Math.floor(t)}function vt(e,t){if(t.length1?"s":"")+" required, but only "+t.length+" present")}function En(e){vt(1,arguments);var t=Object.prototype.toString.call(e);return e instanceof Date||ru(e)==="object"&&t==="[object Date]"?new Date(e.getTime()):typeof e=="number"||t==="[object Number]"?new Date(e):((typeof e=="string"||t==="[object String]")&&typeof console<"u"&&(console.warn("Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments"),console.warn(new Error().stack)),new Date(NaN))}function NS(e,t){vt(2,arguments);var n=En(e).getTime(),r=Jr(t);return new Date(n+r)}var DS={};function Gu(){return DS}function IS(e){var t=new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds()));return t.setUTCFullYear(e.getFullYear()),e.getTime()-t.getTime()}function jS(e){return vt(1,arguments),e instanceof Date||ru(e)==="object"&&Object.prototype.toString.call(e)==="[object Date]"}function FS(e){if(vt(1,arguments),!jS(e)&&typeof e!="number")return!1;var t=En(e);return!isNaN(Number(t))}function BS(e,t){vt(2,arguments);var n=Jr(t);return NS(e,-n)}var zS=864e5;function US(e){vt(1,arguments);var t=En(e),n=t.getTime();t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0);var r=t.getTime(),a=n-r;return Math.floor(a/zS)+1}function au(e){vt(1,arguments);var t=1,n=En(e),r=n.getUTCDay(),a=(r=a.getTime()?n+1:t.getTime()>=o.getTime()?n:n-1}function HS(e){vt(1,arguments);var t=lw(e),n=new Date(0);n.setUTCFullYear(t,0,4),n.setUTCHours(0,0,0,0);var r=au(n);return r}var WS=6048e5;function VS(e){vt(1,arguments);var t=En(e),n=au(t).getTime()-HS(t).getTime();return Math.round(n/WS)+1}function iu(e,t){var n,r,a,i,o,l,s,u;vt(1,arguments);var c=Gu(),f=Jr((n=(r=(a=(i=t==null?void 0:t.weekStartsOn)!==null&&i!==void 0?i:t==null||(o=t.locale)===null||o===void 0||(l=o.options)===null||l===void 0?void 0:l.weekStartsOn)!==null&&a!==void 0?a:c.weekStartsOn)!==null&&r!==void 0?r:(s=c.locale)===null||s===void 0||(u=s.options)===null||u===void 0?void 0:u.weekStartsOn)!==null&&n!==void 0?n:0);if(!(f>=0&&f<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var d=En(e),v=d.getUTCDay(),y=(v=1&&v<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var y=new Date(0);y.setUTCFullYear(f+1,0,v),y.setUTCHours(0,0,0,0);var b=iu(y,t),x=new Date(0);x.setUTCFullYear(f,0,v),x.setUTCHours(0,0,0,0);var p=iu(x,t);return c.getTime()>=b.getTime()?f+1:c.getTime()>=p.getTime()?f:f-1}function GS(e,t){var n,r,a,i,o,l,s,u;vt(1,arguments);var c=Gu(),f=Jr((n=(r=(a=(i=t==null?void 0:t.firstWeekContainsDate)!==null&&i!==void 0?i:t==null||(o=t.locale)===null||o===void 0||(l=o.options)===null||l===void 0?void 0:l.firstWeekContainsDate)!==null&&a!==void 0?a:c.firstWeekContainsDate)!==null&&r!==void 0?r:(s=c.locale)===null||s===void 0||(u=s.options)===null||u===void 0?void 0:u.firstWeekContainsDate)!==null&&n!==void 0?n:1),d=sw(e,t),v=new Date(0);v.setUTCFullYear(d,0,f),v.setUTCHours(0,0,0,0);var y=iu(v,t);return y}var YS=6048e5;function ZS(e,t){vt(1,arguments);var n=En(e),r=iu(n,t).getTime()-GS(n,t).getTime();return Math.round(r/YS)+1}function me(e,t){for(var n=e<0?"-":"",r=Math.abs(e).toString();r.length0?r:1-r;return me(n==="yy"?a%100:a,n.length)},M:function(t,n){var r=t.getUTCMonth();return n==="M"?String(r+1):me(r+1,2)},d:function(t,n){return me(t.getUTCDate(),n.length)},a:function(t,n){var r=t.getUTCHours()/12>=1?"pm":"am";switch(n){case"a":case"aa":return r.toUpperCase();case"aaa":return r;case"aaaaa":return r[0];case"aaaa":default:return r==="am"?"a.m.":"p.m."}},h:function(t,n){return me(t.getUTCHours()%12||12,n.length)},H:function(t,n){return me(t.getUTCHours(),n.length)},m:function(t,n){return me(t.getUTCMinutes(),n.length)},s:function(t,n){return me(t.getUTCSeconds(),n.length)},S:function(t,n){var r=n.length,a=t.getUTCMilliseconds(),i=Math.floor(a*Math.pow(10,r-3));return me(i,n.length)}};const Xn=qS;var wa={am:"am",pm:"pm",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},XS={G:function(t,n,r){var a=t.getUTCFullYear()>0?1:0;switch(n){case"G":case"GG":case"GGG":return r.era(a,{width:"abbreviated"});case"GGGGG":return r.era(a,{width:"narrow"});case"GGGG":default:return r.era(a,{width:"wide"})}},y:function(t,n,r){if(n==="yo"){var a=t.getUTCFullYear(),i=a>0?a:1-a;return r.ordinalNumber(i,{unit:"year"})}return Xn.y(t,n)},Y:function(t,n,r,a){var i=sw(t,a),o=i>0?i:1-i;if(n==="YY"){var l=o%100;return me(l,2)}return n==="Yo"?r.ordinalNumber(o,{unit:"year"}):me(o,n.length)},R:function(t,n){var r=lw(t);return me(r,n.length)},u:function(t,n){var r=t.getUTCFullYear();return me(r,n.length)},Q:function(t,n,r){var a=Math.ceil((t.getUTCMonth()+1)/3);switch(n){case"Q":return String(a);case"QQ":return me(a,2);case"Qo":return r.ordinalNumber(a,{unit:"quarter"});case"QQQ":return r.quarter(a,{width:"abbreviated",context:"formatting"});case"QQQQQ":return r.quarter(a,{width:"narrow",context:"formatting"});case"QQQQ":default:return r.quarter(a,{width:"wide",context:"formatting"})}},q:function(t,n,r){var a=Math.ceil((t.getUTCMonth()+1)/3);switch(n){case"q":return String(a);case"qq":return me(a,2);case"qo":return r.ordinalNumber(a,{unit:"quarter"});case"qqq":return r.quarter(a,{width:"abbreviated",context:"standalone"});case"qqqqq":return r.quarter(a,{width:"narrow",context:"standalone"});case"qqqq":default:return r.quarter(a,{width:"wide",context:"standalone"})}},M:function(t,n,r){var a=t.getUTCMonth();switch(n){case"M":case"MM":return Xn.M(t,n);case"Mo":return r.ordinalNumber(a+1,{unit:"month"});case"MMM":return r.month(a,{width:"abbreviated",context:"formatting"});case"MMMMM":return r.month(a,{width:"narrow",context:"formatting"});case"MMMM":default:return r.month(a,{width:"wide",context:"formatting"})}},L:function(t,n,r){var a=t.getUTCMonth();switch(n){case"L":return String(a+1);case"LL":return me(a+1,2);case"Lo":return r.ordinalNumber(a+1,{unit:"month"});case"LLL":return r.month(a,{width:"abbreviated",context:"standalone"});case"LLLLL":return r.month(a,{width:"narrow",context:"standalone"});case"LLLL":default:return r.month(a,{width:"wide",context:"standalone"})}},w:function(t,n,r,a){var i=ZS(t,a);return n==="wo"?r.ordinalNumber(i,{unit:"week"}):me(i,n.length)},I:function(t,n,r){var a=VS(t);return n==="Io"?r.ordinalNumber(a,{unit:"week"}):me(a,n.length)},d:function(t,n,r){return n==="do"?r.ordinalNumber(t.getUTCDate(),{unit:"date"}):Xn.d(t,n)},D:function(t,n,r){var a=US(t);return n==="Do"?r.ordinalNumber(a,{unit:"dayOfYear"}):me(a,n.length)},E:function(t,n,r){var a=t.getUTCDay();switch(n){case"E":case"EE":case"EEE":return r.day(a,{width:"abbreviated",context:"formatting"});case"EEEEE":return r.day(a,{width:"narrow",context:"formatting"});case"EEEEEE":return r.day(a,{width:"short",context:"formatting"});case"EEEE":default:return r.day(a,{width:"wide",context:"formatting"})}},e:function(t,n,r,a){var i=t.getUTCDay(),o=(i-a.weekStartsOn+8)%7||7;switch(n){case"e":return String(o);case"ee":return me(o,2);case"eo":return r.ordinalNumber(o,{unit:"day"});case"eee":return r.day(i,{width:"abbreviated",context:"formatting"});case"eeeee":return r.day(i,{width:"narrow",context:"formatting"});case"eeeeee":return r.day(i,{width:"short",context:"formatting"});case"eeee":default:return r.day(i,{width:"wide",context:"formatting"})}},c:function(t,n,r,a){var i=t.getUTCDay(),o=(i-a.weekStartsOn+8)%7||7;switch(n){case"c":return String(o);case"cc":return me(o,n.length);case"co":return r.ordinalNumber(o,{unit:"day"});case"ccc":return r.day(i,{width:"abbreviated",context:"standalone"});case"ccccc":return r.day(i,{width:"narrow",context:"standalone"});case"cccccc":return r.day(i,{width:"short",context:"standalone"});case"cccc":default:return r.day(i,{width:"wide",context:"standalone"})}},i:function(t,n,r){var a=t.getUTCDay(),i=a===0?7:a;switch(n){case"i":return String(i);case"ii":return me(i,n.length);case"io":return r.ordinalNumber(i,{unit:"day"});case"iii":return r.day(a,{width:"abbreviated",context:"formatting"});case"iiiii":return r.day(a,{width:"narrow",context:"formatting"});case"iiiiii":return r.day(a,{width:"short",context:"formatting"});case"iiii":default:return r.day(a,{width:"wide",context:"formatting"})}},a:function(t,n,r){var a=t.getUTCHours(),i=a/12>=1?"pm":"am";switch(n){case"a":case"aa":return r.dayPeriod(i,{width:"abbreviated",context:"formatting"});case"aaa":return r.dayPeriod(i,{width:"abbreviated",context:"formatting"}).toLowerCase();case"aaaaa":return r.dayPeriod(i,{width:"narrow",context:"formatting"});case"aaaa":default:return r.dayPeriod(i,{width:"wide",context:"formatting"})}},b:function(t,n,r){var a=t.getUTCHours(),i;switch(a===12?i=wa.noon:a===0?i=wa.midnight:i=a/12>=1?"pm":"am",n){case"b":case"bb":return r.dayPeriod(i,{width:"abbreviated",context:"formatting"});case"bbb":return r.dayPeriod(i,{width:"abbreviated",context:"formatting"}).toLowerCase();case"bbbbb":return r.dayPeriod(i,{width:"narrow",context:"formatting"});case"bbbb":default:return r.dayPeriod(i,{width:"wide",context:"formatting"})}},B:function(t,n,r){var a=t.getUTCHours(),i;switch(a>=17?i=wa.evening:a>=12?i=wa.afternoon:a>=4?i=wa.morning:i=wa.night,n){case"B":case"BB":case"BBB":return r.dayPeriod(i,{width:"abbreviated",context:"formatting"});case"BBBBB":return r.dayPeriod(i,{width:"narrow",context:"formatting"});case"BBBB":default:return r.dayPeriod(i,{width:"wide",context:"formatting"})}},h:function(t,n,r){if(n==="ho"){var a=t.getUTCHours()%12;return a===0&&(a=12),r.ordinalNumber(a,{unit:"hour"})}return Xn.h(t,n)},H:function(t,n,r){return n==="Ho"?r.ordinalNumber(t.getUTCHours(),{unit:"hour"}):Xn.H(t,n)},K:function(t,n,r){var a=t.getUTCHours()%12;return n==="Ko"?r.ordinalNumber(a,{unit:"hour"}):me(a,n.length)},k:function(t,n,r){var a=t.getUTCHours();return a===0&&(a=24),n==="ko"?r.ordinalNumber(a,{unit:"hour"}):me(a,n.length)},m:function(t,n,r){return n==="mo"?r.ordinalNumber(t.getUTCMinutes(),{unit:"minute"}):Xn.m(t,n)},s:function(t,n,r){return n==="so"?r.ordinalNumber(t.getUTCSeconds(),{unit:"second"}):Xn.s(t,n)},S:function(t,n){return Xn.S(t,n)},X:function(t,n,r,a){var i=a._originalDate||t,o=i.getTimezoneOffset();if(o===0)return"Z";switch(n){case"X":return Xg(o);case"XXXX":case"XX":return Lr(o);case"XXXXX":case"XXX":default:return Lr(o,":")}},x:function(t,n,r,a){var i=a._originalDate||t,o=i.getTimezoneOffset();switch(n){case"x":return Xg(o);case"xxxx":case"xx":return Lr(o);case"xxxxx":case"xxx":default:return Lr(o,":")}},O:function(t,n,r,a){var i=a._originalDate||t,o=i.getTimezoneOffset();switch(n){case"O":case"OO":case"OOO":return"GMT"+qg(o,":");case"OOOO":default:return"GMT"+Lr(o,":")}},z:function(t,n,r,a){var i=a._originalDate||t,o=i.getTimezoneOffset();switch(n){case"z":case"zz":case"zzz":return"GMT"+qg(o,":");case"zzzz":default:return"GMT"+Lr(o,":")}},t:function(t,n,r,a){var i=a._originalDate||t,o=Math.floor(i.getTime()/1e3);return me(o,n.length)},T:function(t,n,r,a){var i=a._originalDate||t,o=i.getTime();return me(o,n.length)}};function qg(e,t){var n=e>0?"-":"+",r=Math.abs(e),a=Math.floor(r/60),i=r%60;if(i===0)return n+String(a);var o=t||"";return n+String(a)+o+me(i,2)}function Xg(e,t){if(e%60===0){var n=e>0?"-":"+";return n+me(Math.abs(e)/60,2)}return Lr(e,t)}function Lr(e,t){var n=t||"",r=e>0?"-":"+",a=Math.abs(e),i=me(Math.floor(a/60),2),o=me(a%60,2);return r+i+n+o}const KS=XS;var Kg=function(t,n){switch(t){case"P":return n.date({width:"short"});case"PP":return n.date({width:"medium"});case"PPP":return n.date({width:"long"});case"PPPP":default:return n.date({width:"full"})}},uw=function(t,n){switch(t){case"p":return n.time({width:"short"});case"pp":return n.time({width:"medium"});case"ppp":return n.time({width:"long"});case"pppp":default:return n.time({width:"full"})}},QS=function(t,n){var r=t.match(/(P+)(p+)?/)||[],a=r[1],i=r[2];if(!i)return Kg(t,n);var o;switch(a){case"P":o=n.dateTime({width:"short"});break;case"PP":o=n.dateTime({width:"medium"});break;case"PPP":o=n.dateTime({width:"long"});break;case"PPPP":default:o=n.dateTime({width:"full"});break}return o.replace("{{date}}",Kg(a,n)).replace("{{time}}",uw(i,n))},JS={p:uw,P:QS};const e_=JS;var t_=["D","DD"],n_=["YY","YYYY"];function r_(e){return t_.indexOf(e)!==-1}function a_(e){return n_.indexOf(e)!==-1}function Qg(e,t,n){if(e==="YYYY")throw new RangeError("Use `yyyy` instead of `YYYY` (in `".concat(t,"`) for formatting years to the input `").concat(n,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"));if(e==="YY")throw new RangeError("Use `yy` instead of `YY` (in `".concat(t,"`) for formatting years to the input `").concat(n,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"));if(e==="D")throw new RangeError("Use `d` instead of `D` (in `".concat(t,"`) for formatting days of the month to the input `").concat(n,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"));if(e==="DD")throw new RangeError("Use `dd` instead of `DD` (in `".concat(t,"`) for formatting days of the month to the input `").concat(n,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"))}var i_={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}},o_=function(t,n,r){var a,i=i_[t];return typeof i=="string"?a=i:n===1?a=i.one:a=i.other.replace("{{count}}",n.toString()),r!=null&&r.addSuffix?r.comparison&&r.comparison>0?"in "+a:a+" ago":a};const l_=o_;function Qc(e){return function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=t.width?String(t.width):e.defaultWidth,r=e.formats[n]||e.formats[e.defaultWidth];return r}}var s_={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},u_={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},c_={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},f_={date:Qc({formats:s_,defaultWidth:"full"}),time:Qc({formats:u_,defaultWidth:"full"}),dateTime:Qc({formats:c_,defaultWidth:"full"})};const d_=f_;var p_={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"},h_=function(t,n,r,a){return p_[t]};const g_=h_;function Wi(e){return function(t,n){var r=n!=null&&n.context?String(n.context):"standalone",a;if(r==="formatting"&&e.formattingValues){var i=e.defaultFormattingWidth||e.defaultWidth,o=n!=null&&n.width?String(n.width):i;a=e.formattingValues[o]||e.formattingValues[i]}else{var l=e.defaultWidth,s=n!=null&&n.width?String(n.width):e.defaultWidth;a=e.values[s]||e.values[l]}var u=e.argumentCallback?e.argumentCallback(t):t;return a[u]}}var m_={narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},v_={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},y_={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},w_={narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},b_={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},x_={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},S_=function(t,n){var r=Number(t),a=r%100;if(a>20||a<10)switch(a%10){case 1:return r+"st";case 2:return r+"nd";case 3:return r+"rd"}return r+"th"},__={ordinalNumber:S_,era:Wi({values:m_,defaultWidth:"wide"}),quarter:Wi({values:v_,defaultWidth:"wide",argumentCallback:function(t){return t-1}}),month:Wi({values:y_,defaultWidth:"wide"}),day:Wi({values:w_,defaultWidth:"wide"}),dayPeriod:Wi({values:b_,defaultWidth:"wide",formattingValues:x_,defaultFormattingWidth:"wide"})};const C_=__;function Vi(e){return function(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=n.width,a=r&&e.matchPatterns[r]||e.matchPatterns[e.defaultMatchWidth],i=t.match(a);if(!i)return null;var o=i[0],l=r&&e.parsePatterns[r]||e.parsePatterns[e.defaultParseWidth],s=Array.isArray(l)?k_(l,function(f){return f.test(o)}):E_(l,function(f){return f.test(o)}),u;u=e.valueCallback?e.valueCallback(s):s,u=n.valueCallback?n.valueCallback(u):u;var c=t.slice(o.length);return{value:u,rest:c}}}function E_(e,t){for(var n in e)if(e.hasOwnProperty(n)&&t(e[n]))return n}function k_(e,t){for(var n=0;n1&&arguments[1]!==void 0?arguments[1]:{},r=t.match(e.matchPattern);if(!r)return null;var a=r[0],i=t.match(e.parsePattern);if(!i)return null;var o=e.valueCallback?e.valueCallback(i[0]):i[0];o=n.valueCallback?n.valueCallback(o):o;var l=t.slice(a.length);return{value:o,rest:l}}}var O_=/^(\d+)(th|st|nd|rd)?/i,$_=/\d+/i,P_={narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},M_={any:[/^b/i,/^(a|c)/i]},R_={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},A_={any:[/1/i,/2/i,/3/i,/4/i]},L_={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},N_={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},D_={narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},I_={narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},j_={narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},F_={any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},B_={ordinalNumber:T_({matchPattern:O_,parsePattern:$_,valueCallback:function(t){return parseInt(t,10)}}),era:Vi({matchPatterns:P_,defaultMatchWidth:"wide",parsePatterns:M_,defaultParseWidth:"any"}),quarter:Vi({matchPatterns:R_,defaultMatchWidth:"wide",parsePatterns:A_,defaultParseWidth:"any",valueCallback:function(t){return t+1}}),month:Vi({matchPatterns:L_,defaultMatchWidth:"wide",parsePatterns:N_,defaultParseWidth:"any"}),day:Vi({matchPatterns:D_,defaultMatchWidth:"wide",parsePatterns:I_,defaultParseWidth:"any"}),dayPeriod:Vi({matchPatterns:j_,defaultMatchWidth:"any",parsePatterns:F_,defaultParseWidth:"any"})};const z_=B_;var U_={code:"en-US",formatDistance:l_,formatLong:d_,formatRelative:g_,localize:C_,match:z_,options:{weekStartsOn:0,firstWeekContainsDate:1}};const H_=U_;var W_=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,V_=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,G_=/^'([^]*?)'?$/,Y_=/''/g,Z_=/[a-zA-Z]/;function q_(e,t,n){var r,a,i,o,l,s,u,c,f,d,v,y,b,x,p,g,w,S;vt(2,arguments);var E=String(t),T=Gu(),C=(r=(a=n==null?void 0:n.locale)!==null&&a!==void 0?a:T.locale)!==null&&r!==void 0?r:H_,$=Jr((i=(o=(l=(s=n==null?void 0:n.firstWeekContainsDate)!==null&&s!==void 0?s:n==null||(u=n.locale)===null||u===void 0||(c=u.options)===null||c===void 0?void 0:c.firstWeekContainsDate)!==null&&l!==void 0?l:T.firstWeekContainsDate)!==null&&o!==void 0?o:(f=T.locale)===null||f===void 0||(d=f.options)===null||d===void 0?void 0:d.firstWeekContainsDate)!==null&&i!==void 0?i:1);if(!($>=1&&$<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var j=Jr((v=(y=(b=(x=n==null?void 0:n.weekStartsOn)!==null&&x!==void 0?x:n==null||(p=n.locale)===null||p===void 0||(g=p.options)===null||g===void 0?void 0:g.weekStartsOn)!==null&&b!==void 0?b:T.weekStartsOn)!==null&&y!==void 0?y:(w=T.locale)===null||w===void 0||(S=w.options)===null||S===void 0?void 0:S.weekStartsOn)!==null&&v!==void 0?v:0);if(!(j>=0&&j<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");if(!C.localize)throw new RangeError("locale must contain localize property");if(!C.formatLong)throw new RangeError("locale must contain formatLong property");var U=En(e);if(!FS(U))throw new RangeError("Invalid time value");var ee=IS(U),Be=BS(U,ee),se={firstWeekContainsDate:$,weekStartsOn:j,locale:C,_originalDate:U},P=E.match(V_).map(function(W){var Q=W[0];if(Q==="p"||Q==="P"){var G=e_[Q];return G(W,C.formatLong)}return W}).join("").match(W_).map(function(W){if(W==="''")return"'";var Q=W[0];if(Q==="'")return X_(W);var G=KS[Q];if(G)return!(n!=null&&n.useAdditionalWeekYearTokens)&&a_(W)&&Qg(W,t,String(e)),!(n!=null&&n.useAdditionalDayOfYearTokens)&&r_(W)&&Qg(W,t,String(e)),G(Be,W,C.localize,se);if(Q.match(Z_))throw new RangeError("Format string contains an unescaped latin alphabet character `"+Q+"`");return W}).join("");return P}function X_(e){var t=e.match(G_);return t?t[1].replace(Y_,"'"):e}function Sd(e,t){switch(t){case"iso":return e.toISOString();case"time-dayofyear":return q_(e,"D HH:mm:ss",{useAdditionalDayOfYearTokens:!0})}}typeof process<"u"&&(globalThis.ENV=process.env,Buffer.prototype.toJSON=function(){return this.toString("base64")});var An;(function(e){e[e.trace=10]="trace",e[e.debug=20]="debug",e[e.info=30]="info",e[e.warn=40]="warn",e[e.error=50]="error",e[e.fatal=60]="fatal"})(An=An||(An={}));function Jg(e){return typeof e[0]!="string"&&typeof e[1]=="string"}function K_(e){switch(e){case"pretty":case"plain":case"json":return e;default:return"json"}}function cw(e){switch(e){case 10:return" T ";case 20:return" D ";case 30:return" I ";case 40:return" W ";case 50:return" E ";case 60:return" F "}return"?????"}function Q_(e){switch(e){case 10:return{color:qe.gray,bgcolor:qe.bgGray.black};case 20:return{color:qe.gray,bgcolor:qe.bgGray.black};case 30:return{color:qe.white,bgcolor:qe.bgWhite.black};case 40:return{color:qe.yellow,bgcolor:qe.bgYellow.black};case 50:return{color:qe.red,bgcolor:qe.bgRed.black};case 60:return{color:qe.red,bgcolor:qe.bgRed.black}}return{color:qe.gray,bgcolor:qe.bgGray.black}}function ou(e,t=!0){return K2(e,(n,r)=>typeof Buffer<"u"&&r instanceof Buffer?r.toString("base64"):r,t?2:void 0)??""}function J_(e){const t=e.level??30,{color:n,bgcolor:r}=Q_(t),a=e.component?`/${e.component}`:"",i=[qe.gray(Sd(new Date(e.when),"time-dayofyear")),r(cw(t)),n(`${e.logger.name}${a}`),n(":"),n(e.message)];if(Object.keys(e.context).length>0){for(const[o,l]of Object.entries(e.context))if(l instanceof Error){try{i.push(` + +[key = ${o} contains Error] + +${ou(ow(l))}`)}catch{i.push(` + +[key = ${o} contains Error] + +${l.name} +${l.message}`)}delete e.context[o]}i.push(qe.gray(` +${ou(e.context)}`))}return i.join(" ")}function e1(e){if(e.format==="pretty"||e.runtime==="development")return qe.level=typeof document<"u"?0:3,J_;if(e.format==="json")return t=>ou({...t,when:Sd(t.when,"iso")},!1);if(e.format==="plain")return t=>{const n=t.context.logLevel??30,r=t.context.component?`/${t.context.component}`:"",a=[Sd(t.when,"time-dayofyear"),cw(n),`${t.logger.name}${r}`,":",t.message];return Object.keys(t.context).length>0&&a.push(` +${ou(t.context)}`),a.join(" ")};throw new Error(`invalid configuration provided ${JSON.stringify(e,void 0,2)}`)}const e6=e=>{if(e.level{const n={...t};let r=e1(n);const a=c=>{Object.assign(n,c),r=e1(n)},i=c=>{const{component:f}=c;return{trace:o.bind({level:An.trace,component:f}),debug:o.bind({level:An.debug,component:f}),info:o.bind({level:An.info,component:f}),warn:o.bind({level:An.warn,component:f}),error:o.bind({level:An.error,component:f}),fatal:o.bind({level:An.fatal,component:f})}};function o(...c){const f=Jg(c)?c[1]:c[0];e6({logger:u,when:new Date,level:this.level,context:Jg(c)?c[0]:{},component:this.component,message:f})}const u={get config(){return n},get name(){return n.rootComponent},serializeMessage:c=>{if(n.format!=="pretty"){const f={...c.context};for(const d of Object.entries(c.context)){let v=c.context[d[0]];if(v instanceof Error)try{v=ow(v,{maxDepth:3})}catch(y){u.warn({error:y},"serialize of error failed")}f[d[0]]=v}Object.assign(c,{context:f})}return r(c)},child:c=>({...u,...i({component:c})}),configure:a,canLogLevel:c=>n.level<=c,...i({component:null})};return u};var mv;const Jc=((mv=globalThis.ENV)==null?void 0:mv.LOG_LEVEL)??"info";var vv,yv,wv;const Jp=t6("default",{level:(typeof Jc=="string"?parseInt(Jc):Jc)??10,rootComponent:((vv=globalThis.ENV)==null?void 0:vv.LOG_ROOT_COMPONENT)??"logger",format:K_((yv=globalThis.ENV)==null?void 0:yv.LOG_FORMAT),runtime:((wv=globalThis.ENV)==null?void 0:wv.RUNTIME)??"development"}),n6=Jp.configure,xe=Jp;globalThis.log=Jp;globalThis.__logConfigure=n6;const r6=e=>{const{children:t,icon:n,onIconClick:r,onClick:a,className:i,colorMode:o="data-color",color:l="primary",look:s="light",pulse:u,style:c,...f}=e;return z(Cn,{"data-is":"badge","data-on":"light","data-component-color":o,"data-color":l,"data-look":s,style:c,className:i,onClick:a,...f,children:[n&&m(n,{onClick:r,"data-animate":u?"pulse":void 0}),t]})},_d=Object.assign(r6,{displayName:"Badge"}),a6=e=>m("svg",{"data-icon":!0,viewBox:"0 0 24 24",...e,children:m("path",{fill:"currentColor",d:"M7.41,8.58L12,13.17L16.59,8.58L18,10L12,16L6,10L7.41,8.58Z"})}),i6=e=>m("svg",{"data-icon":!0,viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:m("path",{d:"M12.5 15L7.5 10L12.5 5",stroke:"currentcolor",strokeWidth:"1.67",strokeLinecap:"round",strokeLinejoin:"round"})}),fw=e=>{const{children:t,className:n,on:r,withMargin:a}=e;return m("div",{"data-is":"divider","data-use-margin":a===!0?"yes":void 0,"data-on":r,"data-divider":t!==void 0?"with-label":void 0,className:n,style:typeof a=="number"?{"--_margin":`${a}px`}:void 0,children:m("span",{children:t})})};Object.assign(fw,{displayName:"Divider"});class lu{constructor(){H(this,"shown",!1);H(this,"listeners",[])}attachDropdown(t){this.listeners.push(t)}detachDropdown(t){const n=this.listeners.indexOf(t);n!==-1&&this.listeners.splice(n,1)}open(){this.shown=!0;for(const t of this.listeners)t(!0)}close(){this.shown=!1;for(const t of this.listeners)t(!1)}}const Xo=h.createContext(new lu),o6=e=>{const{children:t,className:n,secondary:r,style:a,...i}=e,o=h.useRef(),l=h.useContext(Xo);return h.useEffect(()=>{const s=c=>{if(!l.shown)return;let f=c.target;for(;f&&f!==document.body;){if(f===o.current)return;f=f.parentElement}l.close()},u=c=>{l.shown&&!c.defaultPrevented&&(c.key==="Esc"||c.key==="Escape")&&l.close()};return document.body.addEventListener("mousedown",s),document.body.addEventListener("keydown",u),()=>{document.body.removeEventListener("mousedown",s),document.body.removeEventListener("keydown",u)}},[l]),h.useEffect(()=>{const s=u=>{var c,f;u?(c=o.current)==null||c.show():(f=o.current)==null||f.close()};return l.attachDropdown(s),()=>l.detachDropdown(s)},[l]),m("dialog",{ref:s=>{s&&(o.current=s)},"data-is":"dropdown","data-dropdown-secondary":r?"yes":void 0,className:n,...i,style:a,children:m("div",{children:t})})};function t1(e){return typeof e.onClick<"u"}const dw=e=>{let t=null,n,r,a,i,o;const l=h.useContext(Xo);t1(e)?t=e.onClick:(n=e.reloadDocument,r=e.replace,a=e.to,i=e.target);const s=jv(a??"/"),u=Vv(a??"/",{replace:r,state:o,target:i}),c=typeof a=="string"&&a.startsWith("http")?a:s,f=typeof a=="string"&&a.startsWith("http")?"noreferrer noopener":void 0,d=h.useCallback(()=>null,[]);c!==s&&(t=d);const v=h.useCallback(y=>{e.disabled||(y.stopPropagation(),l.close(),t?t(y):!y.defaultPrevented&&!n&&u(y))},[e.disabled,l,t,n,u]);return h.createElement(t1(e)?"div":"a",{"data-is":"dropdown-action","data-disabled":e.disabled?"":void 0,"data-action":e.danger?"danger":void 0,onClick:v,href:c,target:i,rel:f},z(Qe,{children:[e.icon&&m("span",{style:{"--border-radius":"0px"},children:e.icon}),m(ge,{style:e.size??"text-sm",weight:e.weight??"medium","data-flex-child":"stretch",cssStyles:e.styles,children:e.text})]}))};Object.assign(dw,{displayName:"Dropdown.Item"});const pw=e=>{const t=h.useRef(new lu),n=h.useCallback(r=>{t.current.open(),r.stopPropagation(),r.preventDefault()},[]);return z(Dt,{...e.button,type:"secondary","data-dropdown":"parent",onClick:n,children:[e.text,e.icon,m(Xo.Provider,{value:t.current,children:m(ur,{"data-dropdown-position":e.dropdownPosition,...e.dropdown,children:e.items})})]})};Object.assign(pw,{displayName:"Dropdown.Button"});const hw=e=>{const t=h.useRef({0:new lu}),n=e.items;for(let a=0;a{t.current[0].open(),a.stopPropagation(),a.preventDefault()},[t]);return m(Qe,{children:z(Dt,{...e.button,"data-dropdown":"parent",onClick:r,children:[e.text,e.icon,m(Xo.Provider,{value:t.current[0],children:m(ur,{"data-dropdown-position":e.dropdownPosition,...e.dropdown,children:n.map((a,i)=>m(ur.Item,{text:a.text,icon:a.icon,onClick:()=>a.children?t.current[i+1].open():a.onClick?a.onClick():void 0},a.text))})}),n.map((a,i)=>{if(a.children)return m(Xo.Provider,{value:t.current[i+1],children:z(ur,{"data-dropdown-position":e.dropdownPosition,...e.dropdown,children:[m(ur.Item,{text:a.text,icon:m(i6,{style:{background:"transparent"}}),onClick:()=>{t.current[i+1].close(),t.current[0].open()}},`return${i}`),m(fw,{}),a.children]})},`${a.text}${i}`)})]})})};Object.assign(hw,{displayName:"Dropdown.Multilevel"});const ur=Object.assign(o6,{Item:dw,Button:pw,Multilevel:hw,displayName:"Dropdown"}),gw=e=>{const{noMouseOver:t,visible:n,wrap:r=!1,placement:a="right"}=e,i=h.useRef(!1),o=h.useRef(n??!1),l=h.useRef(null),s=h.useCallback(()=>{if(l.current)if(o.current||i.current){if(l.current.open)return;l.current.show()}else{if(!l.current.open)return;l.current.close()}},[]);h.useEffect(()=>{s()},[s,n]);const u=h.useMemo(()=>({"data-tooltip":"","data-tooltip-placement":a,onMouseOver:t?void 0:()=>{i.current=!0,s()},onMouseOut:t?void 0:()=>{i.current=!1,s()}}),[t,a,s]),c=m("dialog",{ref:l,children:m("div",{children:e.content})});return r?h.createElement("div",u,z(Qe,{children:[e.children,c]})):h.cloneElement(e.children,u,z(Qe,{children:[e.children.props.children,c]}))};gw.displayName="Tooltip";const mw=e=>{const{items:t,placement:n="left",color:r="primary",forceDesktop:a=!1}=e,i=Cr(),o=h.useMemo(()=>{const l=t.find(s=>s!=="separator"&&(s.exact?i.pathname===s.to:s.to!==void 0&&i.pathname.startsWith(s.to)));return(l==null?void 0:l.nameOnMobile)??(l==null?void 0:l.name)??"Unknown"},[t,i.pathname]);return z(Cn,{"data-is":"navigation-menu","data-color":r,"data-navigation-menu-placement":n,children:[m(Wv,{"data-layout-nav":"logo",to:"/",children:m(rS,{})}),a?m(n1,{items:t,placement:n}):z(Qe,{children:[m("nav",{"data-device":"desktop",children:m(n1,{items:t,placement:n})}),m("nav",{"data-device":"mobile",children:m(l6,{currentRouteName:o,items:t})})]})]})};mw.displayName="NavigationMenu";const n1=e=>{const{items:t,placement:n}=e;return m(Qe,{children:t.map((r,a)=>{if(r==="separator")return m("span",{"data-nav-menu":"divider"},a);const i=h.createElement(r.icon);return m(gw,{placement:n==="left"?"right":"left",content:r.name,children:r.to!==void 0?m(Q3,{to:r.to,end:r.exact,children:i}):m("span",{onClick:r.onClick,children:i})},a)})})},l6=e=>{const{currentRouteName:t,items:n}=e;return m(ur.Button,{button:{component:"button",type:"tertiary",color:"primary",size:"lg"},dropdown:{},dropdownPosition:"right",icon:m(a6,{}),text:t,items:m(Qe,{children:n.map((r,a)=>{if(r==="separator")return m("span",{},a);const i={key:a,icon:h.createElement(r.icon),text:r.nameOnMobile??r.name};return r.to!==void 0?m(ur.Item,{...i,to:r.to}):m(ur.Item,{...i,onClick:r.onClick})})})})},s6=e=>{const{children:t,showMainMenu:n,mainMenu:r}=e,[a,i]=h.useState(Date.now()),o=h.useRef();o.current||(o.current=new vw(()=>{i(Date.now())}));const l=Cr(),s=n&&o.current.allowNavigation&&!l.pathname.startsWith("/_test"),u=c6();return z(u6.Provider,{value:o.current,children:[!u&&z("div",{"data-layout":"unsupported",children:[m(ge,{style:"display-md",color:"inherit",children:"Outdated Browser"}),m(ge,{style:"text-md",color:"inherit",children:"While we work to support many modern browsers, you seem to be running an outdated version of yours. Please update to the latest version to use Robot Hub."}),m(ge,{style:"text-md",color:"inherit",children:"If you decide to stay on current version, you might encounter problems and crashes."}),z(ge,{style:"text-md",color:"inherit",children:["Known supported browsers:",z("ul",{"data-is":"list",children:[m("li",{children:"Chrome 37+"}),m("li",{children:"Firefox 98+"}),m("li",{children:"Safari 15.4+"}),m("li",{children:"Edge 79+"}),m("li",{children:"Opera 24+"})]})]})]}),z("div",{"data-layout":"root",children:[s&&m(mw,{items:r}),z("div",{"data-layout":"body",children:[m("div",{"data-layout":"content",children:t}),e.statusLine]})]})]})};class vw{constructor(t){H(this,"forceRerender");H(this,"_allowNavigation",!0);this.forceRerender=t}get body(){const t=document.querySelector('[data-layout="body"]');if(!t||!(t instanceof HTMLDivElement))throw new Error("Missing body element");return t}get allowNavigation(){return this._allowNavigation}scrollToTop(){this.body.scrollTop=0}scrollToElement(t,n){const r=n?document.querySelector(n):this.body;if(r){const a=document.getElementById(t);a&&a instanceof HTMLElement?setTimeout(()=>{r.scrollTop=a.offsetTop},0):xe.warn(`invalid element ID: '${t}'`)}}showNavigation(){this._allowNavigation=!0,this.forceRerender()}hideNavigation(){this._allowNavigation=!1,this.forceRerender()}}const u6=h.createContext(new vw(()=>{}));function c6(){return typeof document>"u"?!0:typeof HTMLDialogElement=="function"}const f6=e=>{const{primaryBadge:t,deployment:n,hostname:r,isConnected:a,sessionName:i,fwVersion:o,platform:l,links:s}=e;return z("div",{"data-layout":"status",children:[t&&m(_d,{color:"error",children:t}),m(ge,{style:"text-xs",color:"secondary",title:"Deployment",children:n}),s&&m(ge,{style:"text-xs",color:"secondary",children:m(Vu,{direction:"row",gap:"3",children:s.map((u,c)=>{const{children:f,...d}=u;return m(Qp,{...d,children:f},c)})})}),o&&m(ge,{style:"text-xs",color:"secondary",title:"fwVersion",children:o}),l&&m(ge,{style:"text-xs",color:"secondary",title:"Platform",children:l}),m("div",{"data-flex-child":"stretch"}),i&&m(ge,{style:"text-xs",color:"secondary",title:"Current Team",children:i}),z(_d,{color:a?"success":"gray",pulse:!0,children:[r,m(yS,{"data-animate":"pulse","data-size-override":"6"})]})]})},d6=e=>{const{type:t,message:n,href:r}=e,a="inverse-primary";return z(Vu,{"data-padding-y":"3",gap:"4",style:{backgroundColor:t==="warning"?"var(--warning600)":"green"},children:[m(ge,{style:"text-xs",weight:"medium",color:a,children:n}),r&&m(ge,{style:"text-xs",color:a,underline:!0,children:m(Qp,{what:"a",href:r,children:"Learn more"})})]})},yw=e=>{const{banner:t,image:n,titlesStyles:r="in-row",title:a,subtitle:i,extra:o,pageMenu:l,primary:s,smallStartPadding:u,infoBar:c}=e;return z("header",{"data-is":"page-header","data-page-header-small-start-padding":u,"data-page-header-level":s?"primary":"secondary",children:[t&&m("div",{"data-page-header":"banner",children:t}),z("div",{"data-page-header":"topbar",children:[n,z("div",{"data-page-header":"left-side","data-flex":r==="in-row"?"row":"column","data-flex-gap":r==="in-row"?"md":"none","data-flex-cross-align":r==="in-row"?void 0:"start","data-flex-main-align":r==="in-row"?"start":void 0,children:[m(ge,{style:"display-xs",weight:"medium",children:a}),i&&m(ge,{style:"text-sm",children:i})]}),o&&m(rw,{size:"sm",type:"primary",children:m("div",{"data-page-header":"right-side",children:o})})]}),l,c&&c.message!==""&&m(d6,{type:"warning",message:c.message,href:c.href})]})};yw.displayName="PageHeader";var ww={exports:{}},p6="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED",h6=p6,g6=h6;function bw(){}function xw(){}xw.resetWarningCache=bw;var m6=function(){function e(r,a,i,o,l,s){if(s!==g6){var u=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw u.name="Invariant Violation",u}}e.isRequired=e;function t(){return e}var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:xw,resetWarningCache:bw};return n.PropTypes=n,n};ww.exports=m6();var eh=ww.exports;const R=ra(eh);function v6(e){return e&&typeof e=="object"&&"default"in e?e.default:e}var Sw=k,y6=v6(Sw);function r1(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function w6(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}var b6=!!(typeof window<"u"&&window.document&&window.document.createElement);function x6(e,t,n){if(typeof e!="function")throw new Error("Expected reducePropsToState to be a function.");if(typeof t!="function")throw new Error("Expected handleStateChangeOnClient to be a function.");if(typeof n<"u"&&typeof n!="function")throw new Error("Expected mapStateOnServer to either be undefined or a function.");function r(a){return a.displayName||a.name||"Component"}return function(i){if(typeof i!="function")throw new Error("Expected WrappedComponent to be a React component.");var o=[],l;function s(){l=e(o.map(function(c){return c.props})),u.canUseDOM?t(l):n&&(l=n(l))}var u=function(c){w6(f,c);function f(){return c.apply(this,arguments)||this}f.peek=function(){return l},f.rewind=function(){if(f.canUseDOM)throw new Error("You may only call rewind() on the server. Call peek() to read the current state.");var y=l;return l=void 0,o=[],y};var d=f.prototype;return d.UNSAFE_componentWillMount=function(){o.push(this),s()},d.componentDidUpdate=function(){s()},d.componentWillUnmount=function(){var y=o.indexOf(this);o.splice(y,1),s()},d.render=function(){return y6.createElement(i,this.props)},f}(Sw.PureComponent);return r1(u,"displayName","SideEffect("+r(i)+")"),r1(u,"canUseDOM",b6),u}}var S6=x6;const _6=ra(S6);var C6=typeof Element<"u",E6=typeof Map=="function",k6=typeof Set=="function",T6=typeof ArrayBuffer=="function"&&!!ArrayBuffer.isView;function ps(e,t){if(e===t)return!0;if(e&&t&&typeof e=="object"&&typeof t=="object"){if(e.constructor!==t.constructor)return!1;var n,r,a;if(Array.isArray(e)){if(n=e.length,n!=t.length)return!1;for(r=n;r--!==0;)if(!ps(e[r],t[r]))return!1;return!0}var i;if(E6&&e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;for(i=e.entries();!(r=i.next()).done;)if(!t.has(r.value[0]))return!1;for(i=e.entries();!(r=i.next()).done;)if(!ps(r.value[1],t.get(r.value[0])))return!1;return!0}if(k6&&e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;for(i=e.entries();!(r=i.next()).done;)if(!t.has(r.value[0]))return!1;return!0}if(T6&&ArrayBuffer.isView(e)&&ArrayBuffer.isView(t)){if(n=e.length,n!=t.length)return!1;for(r=n;r--!==0;)if(e[r]!==t[r])return!1;return!0}if(e.constructor===RegExp)return e.source===t.source&&e.flags===t.flags;if(e.valueOf!==Object.prototype.valueOf&&typeof e.valueOf=="function"&&typeof t.valueOf=="function")return e.valueOf()===t.valueOf();if(e.toString!==Object.prototype.toString&&typeof e.toString=="function"&&typeof t.toString=="function")return e.toString()===t.toString();if(a=Object.keys(e),n=a.length,n!==Object.keys(t).length)return!1;for(r=n;r--!==0;)if(!Object.prototype.hasOwnProperty.call(t,a[r]))return!1;if(C6&&e instanceof Element)return!1;for(r=n;r--!==0;)if(!((a[r]==="_owner"||a[r]==="__v"||a[r]==="__o")&&e.$$typeof)&&!ps(e[a[r]],t[a[r]]))return!1;return!0}return e!==e&&t!==t}var O6=function(t,n){try{return ps(t,n)}catch(r){if((r.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw r}};const $6=ra(O6);/* +object-assign +(c) Sindre Sorhus +@license MIT +*/var a1=Object.getOwnPropertySymbols,P6=Object.prototype.hasOwnProperty,M6=Object.prototype.propertyIsEnumerable;function R6(e){if(e==null)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}function A6(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de",Object.getOwnPropertyNames(e)[0]==="5")return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;var r=Object.getOwnPropertyNames(t).map(function(i){return t[i]});if(r.join("")!=="0123456789")return!1;var a={};return"abcdefghijklmnopqrst".split("").forEach(function(i){a[i]=i}),Object.keys(Object.assign({},a)).join("")==="abcdefghijklmnopqrst"}catch{return!1}}var L6=A6()?Object.assign:function(e,t){for(var n,r=R6(e),a,i=1;i=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n},U6=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t&&(typeof t=="object"||typeof t=="function")?t:e},Cd=function(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return n===!1?String(t):String(t).replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")},H6=function(t){var n=oi(t,re.TITLE),r=oi(t,Ko.TITLE_TEMPLATE);if(r&&n)return r.replace(/%s/g,function(){return Array.isArray(n)?n.join(""):n});var a=oi(t,Ko.DEFAULT_TITLE);return n||a||void 0},W6=function(t){return oi(t,Ko.ON_CHANGE_CLIENT_STATE)||function(){}},ef=function(t,n){return n.filter(function(r){return typeof r[t]<"u"}).map(function(r){return r[t]}).reduce(function(r,a){return yt({},r,a)},{})},V6=function(t,n){return n.filter(function(r){return typeof r[re.BASE]<"u"}).map(function(r){return r[re.BASE]}).reverse().reduce(function(r,a){if(!r.length)for(var i=Object.keys(a),o=0;o=0;r--){var a=t[r];if(a.hasOwnProperty(n))return a[n]}return null},G6=function(t){return{baseTag:V6([Oe.HREF,Oe.TARGET],t),bodyAttributes:ef(Vr.BODY,t),defer:oi(t,Ko.DEFER),encode:oi(t,Ko.ENCODE_SPECIAL_CHARACTERS),htmlAttributes:ef(Vr.HTML,t),linkTags:Gi(re.LINK,[Oe.REL,Oe.HREF],t),metaTags:Gi(re.META,[Oe.NAME,Oe.CHARSET,Oe.HTTPEQUIV,Oe.PROPERTY,Oe.ITEM_PROP],t),noscriptTags:Gi(re.NOSCRIPT,[Oe.INNER_HTML],t),onChangeClientState:W6(t),scriptTags:Gi(re.SCRIPT,[Oe.SRC,Oe.INNER_HTML],t),styleTags:Gi(re.STYLE,[Oe.CSS_TEXT],t),title:H6(t),titleAttributes:ef(Vr.TITLE,t)}},Ed=function(){var e=Date.now();return function(t){var n=Date.now();n-e>16?(e=n,t(n)):setTimeout(function(){Ed(t)},0)}}(),o1=function(t){return clearTimeout(t)},Y6=typeof window<"u"?window.requestAnimationFrame&&window.requestAnimationFrame.bind(window)||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||Ed:global.requestAnimationFrame||Ed,Z6=typeof window<"u"?window.cancelAnimationFrame||window.webkitCancelAnimationFrame||window.mozCancelAnimationFrame||o1:global.cancelAnimationFrame||o1,q6=function(t){return console&&typeof console.warn=="function"&&console.warn(t)},Yi=null,X6=function(t){Yi&&Z6(Yi),t.defer?Yi=Y6(function(){l1(t,function(){Yi=null})}):(l1(t),Yi=null)},l1=function(t,n){var r=t.baseTag,a=t.bodyAttributes,i=t.htmlAttributes,o=t.linkTags,l=t.metaTags,s=t.noscriptTags,u=t.onChangeClientState,c=t.scriptTags,f=t.styleTags,d=t.title,v=t.titleAttributes;kd(re.BODY,a),kd(re.HTML,i),K6(d,v);var y={baseTag:ba(re.BASE,r),linkTags:ba(re.LINK,o),metaTags:ba(re.META,l),noscriptTags:ba(re.NOSCRIPT,s),scriptTags:ba(re.SCRIPT,c),styleTags:ba(re.STYLE,f)},b={},x={};Object.keys(y).forEach(function(p){var g=y[p],w=g.newTags,S=g.oldTags;w.length&&(b[p]=w),S.length&&(x[p]=y[p].oldTags)}),n&&n(),u(t,b,x)},_w=function(t){return Array.isArray(t)?t.join(""):t},K6=function(t,n){typeof t<"u"&&document.title!==t&&(document.title=_w(t)),kd(re.TITLE,n)},kd=function(t,n){var r=document.getElementsByTagName(t)[0];if(r){for(var a=r.getAttribute(nn),i=a?a.split(","):[],o=[].concat(i),l=Object.keys(n),s=0;s=0;d--)r.removeAttribute(o[d]);i.length===o.length?r.removeAttribute(nn):r.getAttribute(nn)!==l.join(",")&&r.setAttribute(nn,l.join(","))}},ba=function(t,n){var r=document.head||document.querySelector(re.HEAD),a=r.querySelectorAll(t+"["+nn+"]"),i=Array.prototype.slice.call(a),o=[],l=void 0;return n&&n.length&&n.forEach(function(s){var u=document.createElement(t);for(var c in s)if(s.hasOwnProperty(c))if(c===Oe.INNER_HTML)u.innerHTML=s.innerHTML;else if(c===Oe.CSS_TEXT)u.styleSheet?u.styleSheet.cssText=s.cssText:u.appendChild(document.createTextNode(s.cssText));else{var f=typeof s[c]>"u"?"":s[c];u.setAttribute(c,f)}u.setAttribute(nn,"true"),i.some(function(d,v){return l=v,u.isEqualNode(d)})?i.splice(l,1):o.push(u)}),i.forEach(function(s){return s.parentNode.removeChild(s)}),o.forEach(function(s){return r.appendChild(s)}),{oldTags:i,newTags:o}},Cw=function(t){return Object.keys(t).reduce(function(n,r){var a=typeof t[r]<"u"?r+'="'+t[r]+'"':""+r;return n?n+" "+a:a},"")},Q6=function(t,n,r,a){var i=Cw(r),o=_w(n);return i?"<"+t+" "+nn+'="true" '+i+">"+Cd(o,a)+"":"<"+t+" "+nn+'="true">'+Cd(o,a)+""},J6=function(t,n,r){return n.reduce(function(a,i){var o=Object.keys(i).filter(function(u){return!(u===Oe.INNER_HTML||u===Oe.CSS_TEXT)}).reduce(function(u,c){var f=typeof i[c]>"u"?c:c+'="'+Cd(i[c],r)+'"';return u?u+" "+f:f},""),l=i.innerHTML||i.cssText||"",s=I6.indexOf(t)===-1;return a+"<"+t+" "+nn+'="true" '+o+(s?"/>":">"+l+"")},"")},Ew=function(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return Object.keys(t).reduce(function(r,a){return r[su[a]||a]=t[a],r},n)},eC=function(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return Object.keys(t).reduce(function(r,a){return r[D6[a]||a]=t[a],r},n)},tC=function(t,n,r){var a,i=(a={key:n},a[nn]=!0,a),o=Ew(r,i);return[h.createElement(re.TITLE,o,n)]},nC=function(t,n){return n.map(function(r,a){var i,o=(i={key:a},i[nn]=!0,i);return Object.keys(r).forEach(function(l){var s=su[l]||l;if(s===Oe.INNER_HTML||s===Oe.CSS_TEXT){var u=r.innerHTML||r.cssText;o.dangerouslySetInnerHTML={__html:u}}else o[s]=r[l]}),h.createElement(t,o)})},$n=function(t,n,r){switch(t){case re.TITLE:return{toComponent:function(){return tC(t,n.title,n.titleAttributes)},toString:function(){return Q6(t,n.title,n.titleAttributes,r)}};case Vr.BODY:case Vr.HTML:return{toComponent:function(){return Ew(n)},toString:function(){return Cw(n)}};default:return{toComponent:function(){return nC(t,n)},toString:function(){return J6(t,n,r)}}}},kw=function(t){var n=t.baseTag,r=t.bodyAttributes,a=t.encode,i=t.htmlAttributes,o=t.linkTags,l=t.metaTags,s=t.noscriptTags,u=t.scriptTags,c=t.styleTags,f=t.title,d=f===void 0?"":f,v=t.titleAttributes;return{base:$n(re.BASE,n,a),bodyAttributes:$n(Vr.BODY,r,a),htmlAttributes:$n(Vr.HTML,i,a),link:$n(re.LINK,o,a),meta:$n(re.META,l,a),noscript:$n(re.NOSCRIPT,s,a),script:$n(re.SCRIPT,u,a),style:$n(re.STYLE,c,a),title:$n(re.TITLE,{title:d,titleAttributes:v},a)}},rC=function(t){var n,r;return r=n=function(a){z6(i,a);function i(){return F6(this,i),U6(this,a.apply(this,arguments))}return i.prototype.shouldComponentUpdate=function(l){return!$6(this.props,l)},i.prototype.mapNestedChildrenToProps=function(l,s){if(!s)return null;switch(l.type){case re.SCRIPT:case re.NOSCRIPT:return{innerHTML:s};case re.STYLE:return{cssText:s}}throw new Error("<"+l.type+" /> elements are self-closing and can not contain children. Refer to our API for more information.")},i.prototype.flattenArrayTypeChildren=function(l){var s,u=l.child,c=l.arrayTypeChildren,f=l.newChildProps,d=l.nestedChildren;return yt({},c,(s={},s[u.type]=[].concat(c[u.type]||[],[yt({},f,this.mapNestedChildrenToProps(u,d))]),s))},i.prototype.mapObjectTypeChildren=function(l){var s,u,c=l.child,f=l.newProps,d=l.newChildProps,v=l.nestedChildren;switch(c.type){case re.TITLE:return yt({},f,(s={},s[c.type]=v,s.titleAttributes=yt({},d),s));case re.BODY:return yt({},f,{bodyAttributes:yt({},d)});case re.HTML:return yt({},f,{htmlAttributes:yt({},d)})}return yt({},f,(u={},u[c.type]=yt({},d),u))},i.prototype.mapArrayTypeChildrenToProps=function(l,s){var u=yt({},s);return Object.keys(l).forEach(function(c){var f;u=yt({},u,(f={},f[c]=l[c],f))}),u},i.prototype.warnOnInvalidChildren=function(l,s){return!0},i.prototype.mapChildrenToProps=function(l,s){var u=this,c={};return h.Children.forEach(l,function(f){if(!(!f||!f.props)){var d=f.props,v=d.children,y=i1(d,["children"]),b=eC(y);switch(u.warnOnInvalidChildren(f,v),f.type){case re.LINK:case re.META:case re.NOSCRIPT:case re.SCRIPT:case re.STYLE:c=u.flattenArrayTypeChildren({child:f,arrayTypeChildren:c,newChildProps:b,nestedChildren:v});break;default:s=u.mapObjectTypeChildren({child:f,newProps:s,newChildProps:b,nestedChildren:v});break}}}),s=this.mapArrayTypeChildrenToProps(c,s),s},i.prototype.render=function(){var l=this.props,s=l.children,u=i1(l,["children"]),c=yt({},u);return s&&(c=this.mapChildrenToProps(s,c)),h.createElement(t,c)},B6(i,null,[{key:"canUseDOM",set:function(l){t.canUseDOM=l}}]),i}(h.Component),n.propTypes={base:R.object,bodyAttributes:R.object,children:R.oneOfType([R.arrayOf(R.node),R.node]),defaultTitle:R.string,defer:R.bool,encodeSpecialCharacters:R.bool,htmlAttributes:R.object,link:R.arrayOf(R.object),meta:R.arrayOf(R.object),noscript:R.arrayOf(R.object),onChangeClientState:R.func,script:R.arrayOf(R.object),style:R.arrayOf(R.object),title:R.string,titleAttributes:R.object,titleTemplate:R.string},n.defaultProps={defer:!0,encodeSpecialCharacters:!0},n.peek=t.peek,n.rewind=function(){var a=t.rewind();return a||(a=kw({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}})),a},r},aC=function(){return null},iC=_6(G6,X6,kw)(aC),uu=rC(iC);uu.renderStatic=uu.rewind;function oC(e,t,n="dark"){switch(e){case"primary":return t==="strong"?["var(--text-color-dark)","var(--primary600)"]:["var(--primary600)","var(--primary25)"];case"error":return t==="strong"?["var(--text-color-dark)","var(--error600)"]:["var(--error600)","var(--error50)"];case"warning":return t==="strong"?["var(--text-color-dark)","var(--warning600)"]:["var(--warning600)","var(--warning50)"];case"success":return t==="strong"?["var(--text-color-dark)","var(--success600)"]:["var(--success600)","var(--success50)"];case"gray":return["var(--gray500)","var(--gray50)"];case"light-gray":return["var(--gray300)","var(--gray50)"];case"white":return n==="light"?["var(--white)","transparent"]:["var(--text-color)","var(--white)"]}}const lC={simpleToCss:oC},Tw=e=>{const{color:t,data:n,className:r,highlight:a,onClick:i,background:o,animate:l}=e,s=h.useMemo(()=>{const c={};let f=0;if(t!=="inherit"){const[d,v]=lC.simpleToCss(t,"light");if(c["--_iconColor"]=d??"inherit",o){c["--_bg"]=v;const y=6;c["--_iconPadding"]=`${y}px`,f+=y*2}}return sC(e)?c["--_iconSize"]=tf(e.size,f):e.width&&e.height&&(c.width=tf(e.width,f),c.height=tf(e.height,f)),c},[t,o,e]);let u=h.createElement("span",{className:r,"data-cursor":i?"pointer":void 0,onClick:i,style:s,...l?{"data-animate":"pulse"}:null},typeof n!="string"?m(n,{}):n);return a&&(u=z("span",{"data-is":"icon-glow",children:[m("span",{}),m("span",{}),u]})),u};Tw.displayName="RobotHubIcon";function sC(e){return typeof e.size<"u"}function tf(e,t){return typeof e=="number"?`${e+(t??0)}px`:e}const uC=""+new URL("raetest02-8e37e8aa.png",import.meta.url).href,Ow=e=>m("span",{style:{color:e.color},onClick:e.onClick,children:m("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 -3.5 24 24",children:z("g",{fill:"none",children:[m("path",{stroke:"currentColor",strokeLinecap:"round",strokeWidth:"1.5",d:"M21.22 8c-.689-2.184-1.792-3.365-3.13-3.84c-.38-.135-.788-.16-1.193-.16h-.612a4.24 4.24 0 0 0-2.45.78l-.502.354a2.308 2.308 0 0 1-2.666 0l-.502-.355A4.241 4.241 0 0 0 7.715 4h-.612c-.405 0-.813.025-1.194.16c-2.383.846-4.022 3.935-3.903 10.943c.024 1.412.354 2.972 1.628 3.581A3.2 3.2 0 0 0 5.027 19a2.74 2.74 0 0 0 1.53-.437c.915-.599 1.584-1.6 2.554-2.102a4.106 4.106 0 0 1 1.89-.461H13c.658 0 1.306.158 1.89.46c.97.504 1.64 1.504 2.553 2.103c.39.256.895.437 1.531.437a3.2 3.2 0 0 0 1.393-.316c1.274-.609 1.604-2.17 1.628-3.581A34.554 34.554 0 0 0 21.918 12M7.5 9v3M6 10.5h3"}),m("path",{fill:"currentColor",d:"M19 10.25a.75.75 0 1 1-1.5 0a.75.75 0 0 1 1.5 0Zm-3 0a.75.75 0 1 1-1.5 0a.75.75 0 0 1 1.5 0ZM16.75 8a.75.75 0 1 1 0 1.5a.75.75 0 0 1 0-1.5Zm0 3a.75.75 0 1 1 0 1.5a.75.75 0 0 1 0-1.5Z"})]})})}),s1=["Switch between cameras by clicking the smaller stream to focus on a different angle.","Customize RAE's LCD display with a unique face and color to add a personal touch.","Control the color and effects of RAE's LEDs for a vibrant and dynamic appearance.","Try arrow controls for a simpler way to navigate RAE."],cC=()=>{const[e,t]=k.useState("");return k.useEffect(()=>{const n=Math.floor(Math.random()*s1.length);t(s1[n])},[]),z("div",{className:"flex flex-col centered",children:[m(ge,{style:"display-md",weight:"bold",color:"primary",children:"Welcome!"}),z(ge,{style:"text-sm",weight:"medium",color:"secondary",align:"center",children:["Tip: ",e]}),m("img",{src:uC,alt:"Rae robot",loading:"lazy"}),m(J2,{path:"/control",children:m(Dt,{href:"control",iconEnd:m(Tw,{color:"inherit",data:Ow}),on:"light",type:"secondary",color:"primary",size:"lg",children:"Take Control of your rae"})})]})};function fC(){return z("div",{children:[m(uu,{children:m("title",{children:"Home"})}),m("header",{className:"page-header",children:m(yw,{primary:!0,title:"Home"})}),m("div",{className:"flex flex-col space gap",children:m(cC,{})})]})}const dC=e=>m("svg",{viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:m("path",{d:"M4.99998 12.55C6.97655 10.9037 9.46759 10.0022 12.04 10.0022C14.6124 10.0022 17.1034 10.9037 19.08 12.55M1.41998 9.00004C4.34241 6.424 8.10428 5.00269 12 5.00269C15.8957 5.00269 19.6576 6.424 22.58 9.00004M8.52998 16.11C9.54518 15.3888 10.7597 15.0013 12.005 15.0013C13.2503 15.0013 14.4648 15.3888 15.48 16.11M12 20H12.01",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})}),pC=e=>m("svg",{viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:m("path",{d:"M5 12.5501C6.97656 10.9037 9.46761 10.0022 12.04 10.0022C14.6124 10.0022 17.1034 10.9037 19.08 12.5501M8.53 16.1101C9.5452 15.3888 10.7597 15.0013 12.005 15.0013C13.2503 15.0013 14.4648 15.3888 15.48 16.1101M12 20.0001H12.01",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})}),hC=e=>m("svg",{viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:m("path",{d:"M8.53003 16.11C9.54523 15.3887 10.7597 15.0012 12.005 15.0012C13.2504 15.0012 14.4648 15.3887 15.48 16.11M12 20H12.01",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})}),gC=e=>m("svg",{viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:m("path",{d:"M1 1L23 23M16.72 11.06C17.5391 11.4598 18.305 11.9603 19 12.55M5 12.55C6.48208 11.3108 8.26587 10.4862 10.17 10.16M10.71 5.05C12.8524 4.87737 15.0076 5.13816 17.047 5.81682C19.0865 6.49548 20.9682 7.57808 22.58 9M1.42 9C2.80717 7.77385 4.3977 6.79923 6.12 6.12M8.53 16.11C9.5452 15.3887 10.7597 15.0013 12.005 15.0013C13.2503 15.0013 14.4648 15.3887 15.48 16.11M12 20H12.01",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})}),mC=e=>z("svg",{"data-icon":!0,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:[m("path",{d:"M12 22C17.5228 22 22 17.5228 22 12C22 6.47715 17.5228 2 12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22Z",stroke:"currentcolor",strokeLinecap:"round",strokeLinejoin:"round"}),m("path",{d:"M16.24 7.76L14.12 14.12L7.76 16.24L9.88 9.88L16.24 7.76Z",stroke:"currentcolor",strokeLinecap:"round",strokeLinejoin:"round"})]}),vC=e=>m("span",{style:{color:e.color},onClick:e.onClick,children:z("svg",{xmlns:"http://www.w3.org/2000/svg",width:e.size,height:e.size,viewBox:"0 -2 24 24",children:[m("path",{xmlns:"http://www.w3.org/2000/svg",fillRule:"evenodd",d:"M21,9 C22.1045695,9 23,9.8954305 23,11 L23,13 C23,14.1045695 22.1045695,15 21,15 L21,16 C21,17.1045695 20.1045695,18 19,18 L3,18 C1.8954305,18 1,17.1045695 1,16 L1,8 C1,6.8954305 1.8954305,6 3,6 L19,6 C20.1045695,6 21,6.8954305 21,8 L21,9 Z M3,8 L3,16 L19,16 L19,8 L3,8 Z"})," "]})}),yC=e=>m("span",{style:{color:e.color},onClick:e.onClick,children:z("svg",{xmlns:"http://www.w3.org/2000/svg",width:e.size,height:e.size,viewBox:"0 -2 24 24",children:[m("path",{xmlns:"http://www.w3.org/2000/svg",fillRule:"evenodd",d:"M21,9 C22.1045695,9 23,9.8954305 23,11 L23,13 C23,14.1045695 22.1045695,15 21,15 L21,16 C21,17.1045695 20.1045695,18 19,18 L3,18 C1.8954305,18 1,17.1045695 1,16 L1,8 C1,6.8954305 1.8954305,6 3,6 L19,6 C20.1045695,6 21,6.8954305 21,8 L21,9 Z M3,8 L3,16 L19,16 L19,8 L3,8 Z M4.078125,9.07373047 L6.078125,9.07373047 L6.078125,15.2611964 L4.078125,15.2611964 L4.078125,9.07373047 Z"})," "]})}),wC=e=>m("span",{style:{color:e.color},onClick:e.onClick,children:z("svg",{xmlns:"http://www.w3.org/2000/svg",width:e.size,height:e.size,viewBox:"0 -2 24 24",children:[m("path",{xmlns:"http://www.w3.org/2000/svg",fillRule:"evenodd",d:"M21,9 C22.1045695,9 23,9.8954305 23,11 L23,13 C23,14.1045695 22.1045695,15 21,15 L21,16 C21,17.1045695 20.1045695,18 19,18 L3,18 C1.8954305,18 1,17.1045695 1,16 L1,8 C1,6.8954305 1.8954305,6 3,6 L19,6 C20.1045695,6 21,6.8954305 21,8 L21,9 Z M3,8 L3,16 L19,16 L19,8 L3,8 Z M4.078125,9.07373047 L6.078125,9.07373047 L6.078125,15.2611964 L4.078125,15.2611964 L4.078125,9.07373047 Z M7.078125,9.07373047 L9.078125,9.07373047 L9.078125,15.2611964 L7.078125,15.2611964 L7.078125,9.07373047 Z"})," "]})}),bC=e=>m("span",{style:{color:e.color},onClick:e.onClick,children:z("svg",{xmlns:"http://www.w3.org/2000/svg",width:e.size,height:e.size,viewBox:"0 -2 24 24",children:[m("path",{xmlns:"http://www.w3.org/2000/svg",fillRule:"evenodd",d:"M21,9 C22.1045695,9 23,9.8954305 23,11 L23,13 C23,14.1045695 22.1045695,15 21,15 L21,16 C21,17.1045695 20.1045695,18 19,18 L3,18 C1.8954305,18 1,17.1045695 1,16 L1,8 C1,6.8954305 1.8954305,6 3,6 L19,6 C20.1045695,6 21,6.8954305 21,8 L21,9 Z M3,8 L3,16 L19,16 L19,8 L3,8 Z M4.078125,9.07373047 L6.078125,9.07373047 L6.078125,15.2611964 L4.078125,15.2611964 L4.078125,9.07373047 Z M7.078125,9.07373047 L9.078125,9.07373047 L9.078125,15.2611964 L7.078125,15.2611964 L7.078125,9.07373047 Z M10.078125,9.07373047 L12.078125,9.07373047 L12.078125,15.2611964 L10.078125,15.2611964 L10.078125,9.07373047 Z"})," "]})}),xC=e=>m("span",{style:{color:e.color},onClick:e.onClick,children:z("svg",{xmlns:"http://www.w3.org/2000/svg",width:e.size,height:e.size,viewBox:"0 -2 24 24",children:[m("path",{xmlns:"http://www.w3.org/2000/svg",fillRule:"evenodd",d:"M21,9 C22.1045695,9 23,9.8954305 23,11 L23,13 C23,14.1045695 22.1045695,15 21,15 L21,16 C21,17.1045695 20.1045695,18 19,18 L3,18 C1.8954305,18 1,17.1045695 1,16 L1,8 C1,6.8954305 1.8954305,6 3,6 L19,6 C20.1045695,6 21,6.8954305 21,8 L21,9 Z M3,8 L3,16 L19,16 L19,8 L3,8 Z M4.078125,9.07373047 L6.078125,9.07373047 L6.078125,15.2611964 L4.078125,15.2611964 L4.078125,9.07373047 Z M7.078125,9.07373047 L9.078125,9.07373047 L9.078125,15.2611964 L7.078125,15.2611964 L7.078125,9.07373047 Z M10.078125,9.07373047 L12.078125,9.07373047 L12.078125,15.2611964 L10.078125,15.2611964 L10.078125,9.07373047 Z M13.078125,9.07373047 L15.078125,9.07373047 L15.078125,15.2611964 L13.078125,15.2611964 L13.078125,9.07373047 Z"})," "]})}),SC=e=>m("span",{style:{color:e.color},onClick:e.onClick,children:z("svg",{xmlns:"http://www.w3.org/2000/svg",width:e.size,height:e.size,viewBox:"0 -2 24 24",children:[m("path",{xmlns:"http://www.w3.org/2000/svg",fillRule:"evenodd",d:"M21,9 C22.1045695,9 23,9.8954305 23,11 L23,13 C23,14.1045695 22.1045695,15 21,15 L21,16 C21,17.1045695 20.1045695,18 19,18 L3,18 C1.8954305,18 1,17.1045695 1,16 L1,8 C1,6.8954305 1.8954305,6 3,6 L19,6 C20.1045695,6 21,6.8954305 21,8 L21,9 Z M3,8 L3,16 L19,16 L19,8 L3,8 Z M4.078125,9.07373047 L6.078125,9.07373047 L6.078125,15.2611964 L4.078125,15.2611964 L4.078125,9.07373047 Z M7.078125,9.07373047 L9.078125,9.07373047 L9.078125,15.2611964 L7.078125,15.2611964 L7.078125,9.07373047 Z M10.078125,9.07373047 L12.078125,9.07373047 L12.078125,15.2611964 L10.078125,15.2611964 L10.078125,9.07373047 Z M13.078125,9.07373047 L15.078125,9.07373047 L15.078125,15.2611964 L13.078125,15.2611964 L13.078125,9.07373047 Z M16.078125,9.07373047 L18.078125,9.07373047 L18.078125,15.2611964 L16.078125,15.2611964 L16.078125,9.07373047 Z"})," "]})});function Td(){return Td=Object.assign?Object.assign.bind():function(e){for(var t=1;t0?Ke(Ci,--Ct):0,wi--,ze===10&&(wi=1,Zu--),ze}function At(){return ze=Ct2||Jo(ze)>3?"":" "}function jC(e,t){for(;--t&&At()&&!(ze<48||ze>102||ze>57&&ze<65||ze>70&&ze<97););return dl(e,hs()+(t<6&&Sn()==32&&At()==32))}function $d(e){for(;At();)switch(ze){case e:return Ct;case 34:case 39:e!==34&&e!==39&&$d(ze);break;case 40:e===41&&$d(e);break;case 92:At();break}return Ct}function FC(e,t){for(;At()&&e+ze!==47+10;)if(e+ze===42+42&&Sn()===47)break;return"/*"+dl(t,Ct-1)+"*"+Yu(e===47?e:At())}function BC(e){for(;!Jo(Sn());)At();return dl(e,Ct)}function zC(e){return Nw(ms("",null,null,null,[""],e=Lw(e),0,[0],e))}function ms(e,t,n,r,a,i,o,l,s){for(var u=0,c=0,f=o,d=0,v=0,y=0,b=1,x=1,p=1,g=0,w="",S=a,E=i,T=r,C=w;x;)switch(y=g,g=At()){case 40:if(y!=108&&Ke(C,f-1)==58){Od(C+=he(gs(g),"&","&\f"),"&\f")!=-1&&(p=-1);break}case 34:case 39:case 91:C+=gs(g);break;case 9:case 10:case 13:case 32:C+=IC(y);break;case 92:C+=jC(hs()-1,7);continue;case 47:switch(Sn()){case 42:case 47:Hl(UC(FC(At(),hs()),t,n),s);break;default:C+="/"}break;case 123*b:l[u++]=hn(C)*p;case 125*b:case 59:case 0:switch(g){case 0:case 125:x=0;case 59+c:p==-1&&(C=he(C,/\f/g,"")),v>0&&hn(C)-f&&Hl(v>32?c1(C+";",r,n,f-1):c1(he(C," ","")+";",r,n,f-2),s);break;case 59:C+=";";default:if(Hl(T=u1(C,t,n,u,c,a,l,w,S=[],E=[],f),i),g===123)if(c===0)ms(C,t,T,T,S,i,f,l,E);else switch(d===99&&Ke(C,3)===110?100:d){case 100:case 108:case 109:case 115:ms(e,T,T,r&&Hl(u1(e,T,T,0,0,a,l,w,a,S=[],f),E),a,E,f,l,r?S:E);break;default:ms(C,T,T,T,[""],E,0,l,E)}}u=c=v=0,b=p=1,w=C="",f=o;break;case 58:f=1+hn(C),v=y;default:if(b<1){if(g==123)--b;else if(g==125&&b++==0&&DC()==125)continue}switch(C+=Yu(g),g*b){case 38:p=c>0?1:(C+="\f",-1);break;case 44:l[u++]=(hn(C)-1)*p,p=1;break;case 64:Sn()===45&&(C+=gs(At())),d=Sn(),c=f=hn(w=C+=BC(hs())),g++;break;case 45:y===45&&hn(C)==2&&(b=0)}}return i}function u1(e,t,n,r,a,i,o,l,s,u,c){for(var f=a-1,d=a===0?i:[""],v=rh(d),y=0,b=0,x=0;y0?d[p]+" "+g:he(g,/&\f/g,d[p])))&&(s[x++]=w);return qu(e,t,n,a===0?th:l,s,u,c)}function UC(e,t,n){return qu(e,t,n,Pw,Yu(NC()),Qo(e,2,-2),0)}function c1(e,t,n,r){return qu(e,t,n,nh,Qo(e,0,r),Qo(e,r+1,-1),r)}function li(e,t){for(var n="",r=rh(e),a=0;a6)switch(Ke(e,t+1)){case 109:if(Ke(e,t+4)!==45)break;case 102:return he(e,/(.+:)(.+)-([^]+)/,"$1"+pe+"$2-$3$1"+cu+(Ke(e,t+3)==108?"$3":"$2-$3"))+e;case 115:return~Od(e,"stretch")?Dw(he(e,"stretch","fill-available"),t)+e:e}break;case 4949:if(Ke(e,t+1)!==115)break;case 6444:switch(Ke(e,hn(e)-3-(~Od(e,"!important")&&10))){case 107:return he(e,":",":"+pe)+e;case 101:return he(e,/(.+:)([^;!]+)(;|!.+)?/,"$1"+pe+(Ke(e,14)===45?"inline-":"")+"box$3$1"+pe+"$2$3$1"+at+"$2box$3")+e}break;case 5936:switch(Ke(e,t+11)){case 114:return pe+e+at+he(e,/[svh]\w+-[tblr]{2}/,"tb")+e;case 108:return pe+e+at+he(e,/[svh]\w+-[tblr]{2}/,"tb-rl")+e;case 45:return pe+e+at+he(e,/[svh]\w+-[tblr]{2}/,"lr")+e}return pe+e+at+e+e}return e}var KC=function(t,n,r,a){if(t.length>-1&&!t.return)switch(t.type){case nh:t.return=Dw(t.value,t.length);break;case Mw:return li([Zi(t,{value:he(t.value,"@","@"+pe)})],a);case th:if(t.length)return LC(t.props,function(i){switch(AC(i,/(::plac\w+|:read-\w+)/)){case":read-only":case":read-write":return li([Zi(t,{props:[he(i,/:(read-\w+)/,":"+cu+"$1")]})],a);case"::placeholder":return li([Zi(t,{props:[he(i,/:(plac\w+)/,":"+pe+"input-$1")]}),Zi(t,{props:[he(i,/:(plac\w+)/,":"+cu+"$1")]}),Zi(t,{props:[he(i,/:(plac\w+)/,at+"input-$1")]})],a)}return""})}},QC=[KC],JC=function(t){var n=t.key;if(n==="css"){var r=document.querySelectorAll("style[data-emotion]:not([data-s])");Array.prototype.forEach.call(r,function(b){var x=b.getAttribute("data-emotion");x.indexOf(" ")!==-1&&(document.head.appendChild(b),b.setAttribute("data-s",""))})}var a=t.stylisPlugins||QC,i={},o,l=[];o=t.container||document.head,Array.prototype.forEach.call(document.querySelectorAll('style[data-emotion^="'+n+' "]'),function(b){for(var x=b.getAttribute("data-emotion").split(" "),p=1;p=4;++r,a-=4)n=e.charCodeAt(r)&255|(e.charCodeAt(++r)&255)<<8|(e.charCodeAt(++r)&255)<<16|(e.charCodeAt(++r)&255)<<24,n=(n&65535)*1540483477+((n>>>16)*59797<<16),n^=n>>>24,t=(n&65535)*1540483477+((n>>>16)*59797<<16)^(t&65535)*1540483477+((t>>>16)*59797<<16);switch(a){case 3:t^=(e.charCodeAt(r+2)&255)<<16;case 2:t^=(e.charCodeAt(r+1)&255)<<8;case 1:t^=e.charCodeAt(r)&255,t=(t&65535)*1540483477+((t>>>16)*59797<<16)}return t^=t>>>13,t=(t&65535)*1540483477+((t>>>16)*59797<<16),((t^t>>>15)>>>0).toString(36)}var a7={animationIterationCount:1,aspectRatio:1,borderImageOutset:1,borderImageSlice:1,borderImageWidth:1,boxFlex:1,boxFlexGroup:1,boxOrdinalGroup:1,columnCount:1,columns:1,flex:1,flexGrow:1,flexPositive:1,flexShrink:1,flexNegative:1,flexOrder:1,gridRow:1,gridRowEnd:1,gridRowSpan:1,gridRowStart:1,gridColumn:1,gridColumnEnd:1,gridColumnSpan:1,gridColumnStart:1,msGridRow:1,msGridRowSpan:1,msGridColumn:1,msGridColumnSpan:1,fontWeight:1,lineHeight:1,opacity:1,order:1,orphans:1,tabSize:1,widows:1,zIndex:1,zoom:1,WebkitLineClamp:1,fillOpacity:1,floodOpacity:1,stopOpacity:1,strokeDasharray:1,strokeDashoffset:1,strokeMiterlimit:1,strokeOpacity:1,strokeWidth:1},i7=/[A-Z]|^ms/g,o7=/_EMO_([^_]+?)_([^]*?)_EMO_/g,jw=function(t){return t.charCodeAt(1)===45},d1=function(t){return t!=null&&typeof t!="boolean"},nf=$w(function(e){return jw(e)?e:e.replace(i7,"-$&").toLowerCase()}),p1=function(t,n){switch(t){case"animation":case"animationName":if(typeof n=="string")return n.replace(o7,function(r,a,i){return gn={name:a,styles:i,next:gn},a})}return a7[t]!==1&&!jw(t)&&typeof n=="number"&&n!==0?n+"px":n};function el(e,t,n){if(n==null)return"";if(n.__emotion_styles!==void 0)return n;switch(typeof n){case"boolean":return"";case"object":{if(n.anim===1)return gn={name:n.name,styles:n.styles,next:gn},n.name;if(n.styles!==void 0){var r=n.next;if(r!==void 0)for(;r!==void 0;)gn={name:r.name,styles:r.styles,next:gn},r=r.next;var a=n.styles+";";return a}return l7(e,t,n)}case"function":{if(e!==void 0){var i=gn,o=n(e);return gn=i,el(e,t,o)}break}}if(t==null)return n;var l=t[n];return l!==void 0?l:n}function l7(e,t,n){var r="";if(Array.isArray(n))for(var a=0;a96?h7:g7},m1=function(t,n,r){var a;if(n){var i=n.shouldForwardProp;a=t.__emotion_forwardProp&&i?function(o){return t.__emotion_forwardProp(o)&&i(o)}:i}return typeof a!="function"&&r&&(a=t.__emotion_forwardProp),a},m7=function(t){var n=t.cache,r=t.serialized,a=t.isStringTag;return Iw(n,r,a),f7(function(){return n7(n,r,a)}),null},v7=function e(t,n){var r=t.__emotion_real===t,a=r&&t.__emotion_base||t,i,o;n!==void 0&&(i=n.label,o=n.target);var l=m1(t,n,r),s=l||g1(a),u=!s("as");return function(){var c=arguments,f=r&&t.__emotion_styles!==void 0?t.__emotion_styles.slice(0):[];if(i!==void 0&&f.push("label:"+i+";"),c[0]==null||c[0].raw===void 0)f.push.apply(f,c);else{f.push(c[0][0]);for(var d=c.length,v=1;v{const[t,n]=k.useState(!1);return z(w7,{onMouseEnter:()=>{n(!0)},onMouseLeave:()=>{n(!1)},isHovered:t,children:[m("span",{style:{marginRight:"10px"},children:e.icon}),m("div",{className:`text ${t?"visible":""}`,children:e.text})]})},w7=Pd.div` + display: flex; + flex-direction: row; + justify-content: center; + align-items: center; + + .text { + margin-top: 5px; + opacity: 0; + transition: opacity 0.3s ease-in-out, transform 0.3s ease-in-out; + transform: translateX(-10px); + } + + .visible { + opacity: 1; + transform: translateX(0); + } +`,b7=[m(gC,{color:"black",style:{width:"31px",height:"31px"}},"wifi-icon-0"),m(hC,{color:"black",style:{width:"31px",height:"31px"}},"wifi-icon-1"),m(pC,{color:"black",style:{width:"31px",height:"31px"}},"wifi-icon-2"),m(dC,{color:"black",style:{width:"31px",height:"31px"}},"wifi-icon-3")],x7=[m(vC,{size:35,color:"black"},"battery-icon-0"),m(yC,{size:35,color:"black"},"battery-icon-1"),m(wC,{size:35,color:"black"},"battery-icon-2"),m(bC,{size:35,color:"black"},"battery-icon-3"),m(xC,{size:35,color:"black"},"battery-icon-4"),m(SC,{size:35,color:"black"},"battery-icon-5")],y1=(e,t,n)=>{if(e<=0)return n[0];if(e>=t)return n[n.length-1];const r=n.length,a=Math.floor(e/t*(r-2))+1;return n[a]},S7=({wifi:e,wifiUnit:t,battery:n,isOnline:r,status:a})=>m(f6,{deployment:(o=>o?z(_d,{pulse:!0,color:"success",colorMode:"data-color",look:"light",children:[m(mC,{})," Mapping"]}):m("div",{}))(a),hostname:"Connected",isConnected:r,sessionName:m(Qe,{children:"Session ID"}),fwVersion:m(v1,{icon:y1(n,100,x7),text:`${n}%`}),platform:m(v1,{icon:y1(e,20,b7),text:`${e} ${t}`})}),Gt=window.robothubApi;function ah(e){setTimeout(e,2e3)}const _7=async()=>new Promise((e,t)=>{ah(()=>{Gt.request({},"robot_status",15e3).then(n=>{n.payload||t(new Error("Robot is not initialized!"));const r=n.payload.diskTotal-n.payload.diskUsage,a=n.payload.batteryCapacity,i=navigator.connection.downlink;e({memory:r,battery:a,wifi:i,mappingPaused:n.payload.mappingPaused,mappingRunning:n.payload.mappingRunning})}).catch(t)})}),C7=async()=>new Promise((e,t)=>{ah(()=>{Gt.onRcvStatus(n=>{const r=n.map(a=>({...a,linkEditor:a.hasEditor?`/editor/${a.robotAppId}`:null,linkFrontend:a.hasFrontend?`/app/${a.robotAppId}`:null}));e(r)})})}),E7=async()=>new Promise((e,t)=>{ah(()=>{Gt.request({},"apps_get_list",15e3).then(n=>e(n.payload.map(r=>(console.log(r),{id:r.globalIdentifier,title:r.name,text:r.description,isVisible:!0,identifier:r.globalIdentifier})))).catch(t)})}),k7={loadStatus:_7,getInstalledApps:C7,getRobothubApps:E7},T7=e=>m("svg",{"data-icon":!0,viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:m("path",{d:"M15.8333 10.0001H4.16663M4.16663 10.0001L9.99996 15.8334M4.16663 10.0001L9.99996 4.16675",stroke:"currentcolor",strokeWidth:"1.67",strokeLinecap:"round",strokeLinejoin:"round"})}),O7=e=>m("svg",{"data-icon":!0,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e,children:m("path",{d:"M18 6L6 18M6 6L18 18",stroke:"currentcolor",strokeLinecap:"round",strokeLinejoin:"round"})});var ar;class $7{constructor(){S0(this,ar,null)}open(){if(!Ni(this,ar))throw new Error("No Modal component");Ni(this,ar).showModal()}close(){if(!Ni(this,ar))throw new Error("No Modal component");Ni(this,ar).close()}updateRef(t){_0(this,ar,t)}}ar=new WeakMap;const Bw=h.createContext(null),P7=()=>{const e=h.useRef();return e.current||(e.current=new $7),e.current},M7=e=>m(Bw.Provider,{value:e.context,children:e.children}),zw=()=>h.useContext(Bw),Uw=e=>{const{onClose:t,className:n,customWidthPx:r,customStyles:a,size:i="auto",align:o="center",noPadding:l,noScroll:s,visible:u,background:c,onBecameVisible:f,children:d,closable:v,stickToTop:y,...b}=e,x=h.useRef(!1),p=h.useRef(null),g=h.useRef(null),w=P7(),S=h.useCallback(()=>{if(p.current&&u!==void 0){if(x.current===u)return;x.current=u,u?(f==null||f(),p.current.showModal()):p.current.close()}},[f,u]);h.useEffect(()=>{S()},[S]);const E=h.useCallback($=>{$.oncancel=()=>{p.current&&t()},$.onclose=()=>{p.current&&t()};const j=(U,ee)=>ee.top<=U.clientY&&U.clientY<=ee.top+ee.height&&ee.left<=U.clientX&&U.clientX<=ee.left+ee.width;$.addEventListener("mousedown",U=>{p.current&&(g.current=U)}),$.addEventListener("mouseup",U=>{if(!p.current)return;const ee=$.getBoundingClientRect();g.current!==null&&!j(U,ee)&&!j(g.current,ee)&&$.close()})},[]),T=h.useCallback($=>{p.current=$,w.updateRef($),$&&(E($),S())},[w,E,S]),C=h.useMemo(()=>{const $={};return r&&($["--_width"]=`${r}px`),a&&Object.assign($,a),$},[a,r]);return m(M7,{context:w,children:h.createElement("dialog",{ref:T,"data-is":"modal",className:tu("Modal",n),style:C,"data-modal-stick":y?"top":void 0,"data-padding":l?"0":void 0,"data-modal-width":i,"data-modal-align":o,"data-scroll":s?"none":void 0,"data-bg":c,...b},d)})};Uw.displayName="Modal";const Hw=e=>{const{className:t,title:n,subtitle:r,actions:a,closeAction:i,backAction:o}=e,l=zw();return z("header",{className:t,style:{display:"flex",justifyContent:"space-between"},children:[o&&m(Dt,{onClick:()=>e.goBack?e.goBack():null,type:"tertiary",color:"gray","data-modal-back-button":"true",children:m(T7,{"data-size":"22"})}),z("div",{"data-flex":"column","data-modal-first":o?"back":"default",children:[m(ge,{style:"text-xl",weight:"medium",color:"primary",children:n}),r&&m(ge,{style:"text-sm",color:"secondary",children:r})]}),z("div",{"data-flex":"row","data-flex-main-align":"end",children:[a,i&&m(Dt,{onClick:()=>e.onClose?e.onClose():l==null?void 0:l.close(),type:"tertiary",color:"gray",children:m(O7,{"data-size":"22"})})]})]})};Hw.displayName="Modal.Header";const Xu=Object.assign(Uw,{Header:Hw,useCurrent:zw});h.createContext(null);const w1="turn-server-cache",R7=864e5,vs=["us-east.turn.robothub.cloud","eu-central.turn.robothub.cloud"],A7=5;async function L7(e){let t=0;for(let n=0;n{const[e,t]=k.useState(vs);return k.useEffect(()=>{const n=localStorage.getItem(w1);if(n){const{date:a,bestServer:i,secondServer:o}=JSON.parse(n);if(Date.now()-new Date(a).getTime()<=R7){t([i,o]);return}}(async()=>{const[a,i]=await N7();t([a,i]),localStorage.setItem(w1,JSON.stringify({date:new Date().toISOString(),bestServer:a,secondServer:i}))})()},[]),e.map(n=>({hostname:n,port:3478,username:"robothub",password:"c02677ed-6f46-44d9-a3c9-ada0007c4d7b"}))},I7=e=>m("svg",{xmlns:"http://www.w3.org/2000/svg",width:e.size,height:e.size,viewBox:"0 0 24 24",children:m("path",{fill:"white",d:"M9 1H3a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2m0 14H3V3h6v12m12-2h-8v2h8v6H9v-1H6v1a2 2 0 0 0 2 2h13a2 2 0 0 0 2-2v-6a2 2 0 0 0-2-2m2-3l-4-2l1.91-.91A7.516 7.516 0 0 0 14 2.5V1a9 9 0 0 1 9 9Z"})}),j7=e=>{const{color:t,size:n,opacity:r,className:a,onClick:i}=e;return m("span",{className:a,onClick:i,children:m("svg",{fill:t,width:n,height:n,version:"1.0",viewBox:"0 0 1019 1020",xmlns:"http://www.w3.org/2000/svg",opacity:r,children:z("g",{transform:"translate(0 1020) scale(.1 -.1)",children:[m("path",{d:"m2210 9820c-876-5-896-6-960-26-267-87-425-184-596-367-128-137-216-292-290-514l-35-103 4-3717 3-3718 22-85c73-272 211-496 414-665 145-122 308-206 495-256 76-21 108-22 1090-30 557-5 2231-8 3720-7l2708 3 120 38c482 153 800 494 901 967 15 68 17 385 21 3185 2 1711 0 3373-5 3695-9 580-9 586-34 680-111 414-418 737-839 882l-94 32-1245 7c-1372 8-4008 7-5400-1zm6446-600c32-11 101-41 153-66 81-40 108-60 191-143 100-99 146-172 192-298 19-55 21-88 28-613 11-715 11-5314 1-6040l-8-555-33-84c-91-232-280-402-520-468-62-17-235-18-3500-18-3555 0-3639 1-3750 40-70 25-184 101-250 167-74 73-129 153-178 255-33 71-37 86-43 202-11 201-19 5166-10 6151 9 991 6 950 76 1075 106 191 252 310 469 382 74 25 541 28 4107 31 3006 2 3016 2 3075-18z"}),m("path",{d:"m4908 8159c-167-20-349-80-505-165-325-177-582-505-674-862-42-164-49-256-49-703v-427l-282-5c-156-3-303-10-328-16-220-55-412-247-460-461-6-29-10-580-10-1540 0-1310 2-1503 15-1554 43-163 173-321 326-394 46-22 109-45 139-52 40-8 578-10 2025-8l1970 3 72 26c86 32 181 97 250 172 59 65 126 191 142 265 15 70 15 3016 1 3082-47 211-244 410-455 460-28 6-172 14-332 17l-282 5-4 477c-3 438-5 483-25 569-30 134-57 213-117 337-187 388-549 668-977 755-117 24-327 33-440 19zm302-623c209-34 421-179 529-360 19-31 50-103 70-159l36-102 3-457 3-458h-776-775v418c1 459 5 509 59 648 31 80 119 212 177 265 72 66 172 131 247 160 147 57 274 70 427 45zm1725-3556v-1395h-1860-1860l-3 1385c-1 762 0 1391 3 1398 3 10 381 12 1862 10l1858-3v-1395z"}),m("path",{d:"m4963 4734c-63-23-131-89-164-159l-29-60v-535-535l28-60c72-151 253-218 402-149 73 34 116 76 151 149l29 60v535 535l-29 60c-34 72-102 137-168 159-57 20-164 19-220 0z"})]})})})},F7=e=>{const{color:t,size:n,opacity:r,className:a,onClick:i}=e;return m("span",{className:a,onClick:i,children:m("svg",{width:n,height:n,fill:t,opacity:r,viewBox:"0 0 1019 1020",xmlns:"http://www.w3.org/2000/svg",children:z("g",{transform:"translate(0 1017) scale(.1 -.1)",children:[m("path",{d:"m2210 9800-895-5-85-29c-130-44-271-108-349-160-82-55-255-223-325-316-60-80-145-256-192-395l-35-105 4-3722 3-3723 26-95c31-113 54-172 107-277 181-358 567-625 946-655 61-4 1737-11 3725-14l3615-6 114 32c384 108 665 327 829 647 57 113 93 213 119 333 17 81 18 243 18 3745v3660l-23 104c-58 265-167 459-366 649-143 136-295 228-489 294l-92 32-1245 7c-1362 8-4002 7-5410-1zm6503-620c124-49 178-80 260-151 104-89 180-201 229-339 19-52 21-98 30-750 11-813 2-6282-11-6410-10-107-37-177-111-289-98-149-247-260-420-312l-75-23-3170-4c-3272-4-3857 1-3995 34-86 20-185 80-277 168-86 81-139 154-190 262-33 70-36 85-44 207-11 195-20 5128-10 6162l8 890 27 80c30 89 48 122 115 210 99 131 198 199 385 268l61 22 1445 5c795 3 2389 6 3543 8l2099 2 101-40z"}),m("path",{d:"m6615 8230c-489-50-931-361-1139-800-54-114-90-219-118-343-18-84-21-134-25-584l-5-493h-1392c-1542 0-1449 4-1596-67-99-48-231-177-278-273-66-138-62-27-62-1720 0-1704-4-1598 68-1734 40-77 135-181 215-235 27-18 85-47 130-64l82-32h2040 2040l75 29c201 76 353 239 407 437 17 60 18 164 18 1604v1540l-28 80c-39 110-83 178-169 261-83 80-187 138-290 160-44 9-145 13-340 14h-278v451c0 490 3 520 59 659 91 223 312 410 549 464 101 23 286 21 382-4 268-69 487-285 572-565 20-67 21-94 27-735l6-665 24-53c30-66 104-134 177-161 154-58 322 12 394 165l31 64-3 682c-3 659-4 686-25 778-97 421-335 753-688 957-248 143-573 213-860 183zm-175-4285v-1435l-1902 2-1903 3-3 1433-2 1432h1905 1905v-1435z"}),m("path",{d:"m4472 4680c-113-23-219-125-242-233-8-36-10-213-8-582 3-529 3-530 26-580 49-106 172-185 287-185s238 79 287 185c23 50 23 50 26 589 3 607 3 604-68 694-69 87-199 134-308 112z"})]})})})},B7=e=>{const{color:t,size:n,opacity:r,className:a,onClick:i}=e,[o,l]=k.useState(!1),s=()=>{l(!0)},u=()=>{l(!1)},c=()=>{l(!1)};return m("span",{className:a,onClick:i,onMouseDown:s,onMouseUp:u,onMouseLeave:c,onTouchStart:s,onTouchEnd:u,onTouchCancel:c,children:m("svg",{fill:t,width:n,height:n,version:"1.0",viewBox:"0 0 512 512",xmlns:"http://www.w3.org/2000/svg",opacity:o?.5:r||.2,children:m("g",{children:m("path",{d:`M479.486,163.011c-3.128,1.925-9.888,5.27-19.633,8.735c-16.572,5.892-34.944,9.434-54.52,9.434H249.323 + c-14.516,0-30.635-2.093-51.087-6.296c-7.64-1.57-14.78-3.176-27.088-6.044c-20.417-4.757-27.478-6.354-36.69-8.143l-90.028-40.31 + c-15.358-7.358-30.022,0.077-37.747,13.471C2.343,141.381,0,151.054,0,159.846v170.667c0,8.782,2.344,18.453,6.68,25.976 + c7.723,13.399,22.384,20.845,38.241,13.256l75.796-33.927c8.826-3.954,17.863-6.926,27.001-8.862 + c3.59-0.76,7.332-1.567,12.246-2.639c6.202-1.355,9.793-2.141,12.454-2.719c8.349-1.816,14.889-3.202,20.997-4.432 + c-0.92,4.308-1.415,8.771-1.415,13.347c0,35.249,28.751,64,64,64h106.667c35.249,0,64-28.751,64-64 + c0-7.104-1.185-13.936-3.339-20.331c12.896,1.442,25.136,4.382,36.525,8.431c9.745,3.465,16.505,6.81,19.633,8.735 + C493.7,336.095,512,325.869,512,309.179v-128C512,164.49,493.7,154.264,479.486,163.011z M362.667,351.846H256 + c-11.685,0-21.333-9.649-21.333-21.333c0-11.685,9.649-21.333,21.333-21.333h106.667c11.685,0,21.333,9.649,21.333,21.333 + C384,342.197,374.351,351.846,362.667,351.846z M469.333,276.766c-19.642-6.448-41.125-10.254-64-10.254h-42.667H256 + c-18.796,0-39.728,2.689-66.218,7.874c-7.831,1.533-15.71,3.187-26.431,5.519c-2.69,0.585-6.31,1.377-12.479,2.725 + c-4.836,1.055-8.499,1.845-11.993,2.585c-12.14,2.572-24.056,6.492-35.601,11.663l-60.612,27.136V166.339l76.615,34.311 + c1.513,0.678,3.101,1.177,4.73,1.487c9.748,1.855,15.902,3.235,37.455,8.257c12.65,2.947,20.076,4.618,28.18,6.283 + c23.036,4.734,41.792,7.17,59.676,7.17h156.011c22.875,0,44.358-3.806,64-10.254V276.766z`})})})})},Ww=e=>{const{streamKey:t,timeZone:n,servers:r=[],streamEnabled:a=!0,onPlay:i,onLoadStart:o,onLoadedData:l,onWaiting:s,onError:u,onEnded:c,noStreamMeansLoading:f=!1,controls:d,fullScreen:v=!1,onFullScreenExited:y,className:b,refetch:x,videoStreamRendererFactory:p,...g}=e,w=h.useRef(null),S=h.useRef(!1);let E=null,T=null;const[C,$]=h.useState(null),j=h.useMemo(()=>p(),[p]),[U,ee]=h.useState(!1);h.useEffect(()=>{const O=()=>{document.fullscreenElement===null&&S.current&&(y==null||y());const D=w.current;S.current=document.fullscreenElement===D};return document.addEventListener("fullscreenchange",O),()=>document.removeEventListener("fullscreenchange",O)},[y]);const Be=h.useCallback(O=>{var D;O!==S.current&&w.current&&(S.current?document.exitFullscreen():(D=w.current)==null||D.requestFullscreen(),S.current=O)},[]);Be(v);const se=h.useCallback(O=>{w.current=O,Be(v)},[v,Be]),P=h.useCallback(O=>{xe.trace("[VideoPlayer] play"),$("loading"),i&&i(O),j.clear()},[i,j]),W=h.useCallback(()=>{xe.trace("[VideoPlayer] playing"),$("playing")},[]),Q=h.useCallback(O=>{xe.trace("[VideoPlayer] loadstart"),$("loading"),o&&o(O)},[o]),G=h.useCallback(O=>{xe.trace("[VideoPlayer] loadeddata"),$("first_frame_ready"),l&&l(O),E&&E.play()},[l,E]),A=h.useCallback(O=>{xe.trace("[VideoPlayer] waiting"),$("waiting"),s&&s(O)},[s]),N=h.useCallback(O=>{xe.trace("[VideoPlayer] ended"),$("ended"),c&&c(O)},[c]),F=h.useCallback(O=>{xe.warn({event:O},"VideoPlayer Error!"),u&&u(O)},[u]),K=O=>{T=O,!j.initialized&&E&&T&&!U&&(j.init({video:E,canvas:T,timeZone:n}),xe.debug(`VideoPlayer ${j.id} > create new renderer`))},_=O=>{E=O,E&&(E.addEventListener("play",P),E.addEventListener("playing",W),E.addEventListener("loadstart",Q),E.addEventListener("loadeddata",G),E.addEventListener("waiting",A),E.addEventListener("ended",N),E.addEventListener("error",F),typeof E.requestVideoFrameCallback>"u"?ee(!0):!j.initialized&&E&&T&&(j.init({video:E,canvas:T}),xe.debug(`VideoPlayer ${j.id} > create new renderer`)))};h.useEffect(()=>()=>{xe.debug(`VideoPlayer ${j.id} > final dispose`),j.dispose()},[j]),h.useEffect(()=>{(!t||t&&!j.containsStream(t)||!a)&&j.rendering&&(xe.debug(`VideoPlayer ${j.id} > dispose current state`),j.dispose()),t&&a&&r!==null&&!j.containsStream(t)&&(xe.debug(`VideoPlayer ${j.id} > render`),$("initializing"),j.render({streamKey:t,...g,servers:r,onStreamStart:()=>$("playing")}))},[t,j,a,r]);const M=h.useMemo(()=>C&&C!=="playing"||!a||U,[C,a,U]),L=h.useMemo(()=>{if(U)return"Unsupported browser. To enable live streaming use recent version of Chrome, Edge or Safari.";if(!a)return f?"Opening connection…":"No streams available.";switch(C){case"initializing":return"Waiting for a stream…";case"loading":return"Opening connection…";case"first_frame_ready":return"Just a sec…";case"ended":return"Stream ended.";case"waiting":return"Slow connection, please wait…"}return`[${C}]`},[f,U,C,a]);return z("div",{"data-is":"video-player",ref:O=>se(O),className:e.className,children:[m("div",{"data-video-player":"overlay","data-visible":M?"yes":"no",children:m(ge,{style:"text-lg",color:"inverse-primary",children:L})}),d,m("video",{ref:_,autoPlay:!0,muted:!0}),m("canvas",{ref:K})]})};Ww.displayName="VideoPlayer";function ea(e){throw new Error}const Vw=e=>{const t={};for(const n of e)t[n]=n;return t},z7=e=>{const t=mn(e).filter(r=>typeof e[e[r]]!="number"),n={};for(const r of t)n[r]=e[r];return Md(n)},Md=e=>mn(e).map(function(t){return e[t]}),mn=typeof Object.keys=="function"?e=>Object.keys(e):e=>{const t=[];for(const n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.push(n);return t},b1=typeof Number.isInteger=="function"?e=>Number.isInteger(e):e=>typeof e=="number"&&isFinite(e)&&Math.floor(e)===e;function yo(e,t=" | "){return e.map(n=>typeof n=="string"?`'${n}'`:n).join(t)}const Gw=(e,t)=>typeof t=="bigint"?t.toString():t,X=Vw(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),Ir=e=>{switch(typeof e){case"undefined":return X.undefined;case"string":return X.string;case"number":return isNaN(e)?X.nan:X.number;case"boolean":return X.boolean;case"function":return X.function;case"bigint":return X.bigint;case"symbol":return X.symbol;case"object":return Array.isArray(e)?X.array:e===null?X.null:e.then&&typeof e.then=="function"&&e.catch&&typeof e.catch=="function"?X.promise:typeof Map<"u"&&e instanceof Map?X.map:typeof Set<"u"&&e instanceof Set?X.set:typeof Date<"u"&&e instanceof Date?X.date:X.object;default:return X.unknown}},B=Vw(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]),n0=class extends Error{constructor(n){super();H(this,"issues",[]);H(this,"addIssue",n=>{this.issues=[...this.issues,n]});H(this,"addIssues",(n=[])=>{this.issues=[...this.issues,...n]});const r=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,r):this.__proto__=r,this.name="ZodError",this.issues=n}get errors(){return this.issues}format(n){const r=n||function(o){return o.message},a={_errors:[]},i=o=>{for(const l of o.issues)if(l.code==="invalid_union")l.unionErrors.map(i);else if(l.code==="invalid_return_type")i(l.returnTypeError);else if(l.code==="invalid_arguments")i(l.argumentsError);else if(l.path.length===0)a._errors.push(r(l));else{let s=a,u=0;for(;ur.message){const r={},a=[];for(const i of this.issues)i.path.length>0?(r[i.path[0]]=r[i.path[0]]||[],r[i.path[0]].push(n(i))):a.push(n(i));return{formErrors:a,fieldErrors:r}}get formErrors(){return this.flatten()}};let wr=n0;H(wr,"create",n=>new n0(n));const Yw=(e,t)=>{let n;switch(e.code){case B.invalid_type:e.received===X.undefined?n="Required":n=`Expected ${e.expected}, received ${e.received}`;break;case B.invalid_literal:n=`Invalid literal value, expected ${JSON.stringify(e.expected,Gw)}`;break;case B.unrecognized_keys:n=`Unrecognized key(s) in object: ${yo(e.keys,", ")}`;break;case B.invalid_union:n="Invalid input";break;case B.invalid_union_discriminator:n=`Invalid discriminator value. Expected ${yo(e.options)}`;break;case B.invalid_enum_value:n=`Invalid enum value. Expected ${yo(e.options)}, received '${e.received}'`;break;case B.invalid_arguments:n="Invalid function arguments";break;case B.invalid_return_type:n="Invalid function return type";break;case B.invalid_date:n="Invalid date";break;case B.invalid_string:typeof e.validation=="object"?"includes"in e.validation?(n=`Invalid input: must include "${e.validation.includes}"`,typeof e.validation.position=="number"&&(n=`${n} at one or more positions greater than or equal to ${e.validation.position}`)):"startsWith"in e.validation?n=`Invalid input: must start with "${e.validation.startsWith}"`:"endsWith"in e.validation?n=`Invalid input: must end with "${e.validation.endsWith}"`:ea(e.validation):e.validation!=="regex"?n=`Invalid ${e.validation}`:n="Invalid";break;case B.too_small:e.type==="array"?n=`Array must contain ${e.exact?"exactly":e.inclusive?"at least":"more than"} ${e.minimum} element(s)`:e.type==="string"?n=`String must contain ${e.exact?"exactly":e.inclusive?"at least":"over"} ${e.minimum} character(s)`:e.type==="number"?n=`Number must be ${e.exact?"exactly equal to ":e.inclusive?"greater than or equal to ":"greater than "}${e.minimum}`:e.type==="date"?n=`Date must be ${e.exact?"exactly equal to ":e.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(e.minimum))}`:n="Invalid input";break;case B.too_big:e.type==="array"?n=`Array must contain ${e.exact?"exactly":e.inclusive?"at most":"less than"} ${e.maximum} element(s)`:e.type==="string"?n=`String must contain ${e.exact?"exactly":e.inclusive?"at most":"under"} ${e.maximum} character(s)`:e.type==="number"?n=`Number must be ${e.exact?"exactly":e.inclusive?"less than or equal to":"less than"} ${e.maximum}`:e.type==="bigint"?n=`BigInt must be ${e.exact?"exactly":e.inclusive?"less than or equal to":"less than"} ${e.maximum}`:e.type==="date"?n=`Date must be ${e.exact?"exactly":e.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(e.maximum))}`:n="Invalid input";break;case B.custom:n="Invalid input";break;case B.invalid_intersection_types:n="Intersection results could not be merged";break;case B.not_multiple_of:n=`Number must be a multiple of ${e.multipleOf}`;break;case B.not_finite:n="Number must be finite";break;default:n=t.defaultError,ea()}return{message:n}};let U7=Yw;function H7(){return U7}const W7=e=>{const{data:t,path:n,errorMaps:r,issueData:a}=e,i=[...n,...a.path||[]],o={...a,path:i};let l="";const s=r.filter(u=>!!u).slice().reverse();for(const u of s)l=u(o,{data:t,defaultError:l}).message;return{...a,path:i,message:a.message||l}};function q(e,t){const n=W7({issueData:t,data:e.data,path:e.path,errorMaps:[e.common.contextualErrorMap,e.schemaErrorMap,H7(),Yw].filter(r=>!!r)});e.common.issues.push(n)}class ht{constructor(){H(this,"value","valid")}dirty(){this.value==="valid"&&(this.value="dirty")}abort(){this.value!=="aborted"&&(this.value="aborted")}static mergeArray(t,n){const r=[];for(const a of n){if(a.status==="aborted")return fe;a.status==="dirty"&&t.dirty(),r.push(a.value)}return{status:t.value,value:r}}static async mergeObjectAsync(t,n){const r=[];for(const a of n)r.push({key:await a.key,value:await a.value});return ht.mergeObjectSync(t,r)}static mergeObjectSync(t,n){const r={};for(const a of n){const{key:i,value:o}=a;if(i.status==="aborted"||o.status==="aborted")return fe;i.status==="dirty"&&t.dirty(),o.status==="dirty"&&t.dirty(),(typeof o.value<"u"||a.alwaysSet)&&(r[i.value]=o.value)}return{status:t.value,value:r}}}const fe=Object.freeze({status:"aborted"}),V7=e=>({status:"dirty",value:e}),Vn=e=>({status:"valid",value:e}),x1=e=>e.status==="aborted",S1=e=>e.status==="dirty",Rd=e=>e.status==="valid",Ad=e=>typeof Promise<"u"&&e instanceof Promise,We=e=>typeof e=="string"?{message:e}:e||{},ve=e=>typeof e=="string"?e:e==null?void 0:e.message;class ta{constructor(t,n,r,a){H(this,"parent");H(this,"data");H(this,"_path");H(this,"_key");H(this,"_cachedPath",[]);this.parent=t,this.data=n,this._path=r,this._key=a}get path(){return this._cachedPath.length||(this._key instanceof Array?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}}const _1=(e,t)=>{if(Rd(t))return{success:!0,data:t.value};if(!e.common.issues.length)throw new Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;const n=new wr(e.common.issues);return this._error=n,this._error}}};function ue(e){if(!e)return{};const{errorMap:t,invalid_type_error:n,required_error:r,description:a}=e;if(t&&(n||r))throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return t?{errorMap:t,description:a}:{errorMap:(o,l)=>o.code!=="invalid_type"?{message:l.defaultError}:typeof l.data>"u"?{message:r??l.defaultError}:{message:n??l.defaultError},description:a}}class we{constructor(t){H(this,"_type");H(this,"_output");H(this,"_input");H(this,"_def");H(this,"spa",this.safeParseAsync);this._def=t,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this)}get description(){return this._def.description}openapi(t){return this._def.openapi=t,this}_getType(t){return Ir(t.data)}_getOrReturnCtx(t,n){return n||{common:t.parent.common,data:t.data,parsedType:Ir(t.data),schemaErrorMap:this._def.errorMap,path:t.path,parent:t.parent}}_processInputParams(t){return{status:new ht,ctx:{common:t.parent.common,data:t.data,parsedType:Ir(t.data),schemaErrorMap:this._def.errorMap,path:t.path,parent:t.parent}}}_parseSync(t){const n=this._parse(t);if(Ad(n))throw new Error("Synchronous parse encountered promise.");return n}_parseAsync(t){const n=this._parse(t);return Promise.resolve(n)}parse(t,n){const r=this.safeParse(t,n);if(r.success)return r.data;throw r.error}safeParse(t,n){const r={common:{issues:[],async:(n==null?void 0:n.async)??!1,contextualErrorMap:n==null?void 0:n.errorMap},path:(n==null?void 0:n.path)||[],schemaErrorMap:this._def.errorMap,parent:null,data:t,parsedType:Ir(t)},a=this._parseSync({data:t,path:r.path,parent:r});return _1(r,a)}async parseAsync(t,n){const r=await this.safeParseAsync(t,n);if(r.success)return r.data;throw r.error}async safeParseAsync(t,n){const r={common:{issues:[],contextualErrorMap:n==null?void 0:n.errorMap,async:!0},path:(n==null?void 0:n.path)||[],schemaErrorMap:this._def.errorMap,parent:null,data:t,parsedType:Ir(t)},a=this._parse({data:t,path:r.path,parent:r}),i=await(Ad(a)?a:Promise.resolve(a));return _1(r,i)}refine(t,n){const r=a=>typeof n=="string"||typeof n>"u"?{message:n}:typeof n=="function"?n(a):n;return this._refinement((a,i)=>{const o=t(a),l=()=>i.addIssue({code:B.custom,...r(a)});return typeof Promise<"u"&&o instanceof Promise?o.then(s=>s?!0:(l(),!1)):o?!0:(l(),!1)})}refinement(t,n){return this._refinement((r,a)=>t(r)?!0:(a.addIssue(typeof n=="function"?n(r,a):n),!1))}_refinement(t){return new In({schema:this,typeName:ae.ZodEffects,effect:{type:"refinement",refinement:t}})}superRefine(t){return this._refinement(t)}optional(){return Fn.create(this,this._def)}nullable(){return Yr.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return Gr.create(this,this._def)}promise(){return Es.create(this,this._def)}or(t){return So.create([this,t],this._def)}and(t){return Cs.create(this,t,this._def)}transform(t){return new In({...ue(this._def),schema:this,typeName:ae.ZodEffects,effect:{type:"transform",transform:t}})}default(t){const n=typeof t=="function"?t:()=>t;return new ko({...ue(this._def),innerType:this,defaultValue:n,typeName:ae.ZodDefault})}brand(){return new r9({typeName:ae.ZodBranded,type:this,...ue(this._def)})}catch(t){const n=typeof t=="function"?t:()=>t;return new ks({...ue(this._def),innerType:this,catchValue:n,typeName:ae.ZodCatch})}describe(t){const n=this.constructor;return new n({...this._def,description:t})}pipe(t){return oh.create(this,t)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}const G7=/^c[^\s-]{8,}$/i,Y7=/^[a-z][a-z0-9]*$/,Z7=/[0-9A-HJKMNP-TV-Z]{26}/,q7=/^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i,X7=/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\])|(\[IPv6:(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))\])|([A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])*(\.[A-Za-z]{2,})+))$/,K7=/^(\p{Extended_Pictographic}|\p{Emoji_Component})+$/u,Q7=/^(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))$/,J7=/^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/,e9=e=>e.precision?e.offset?new RegExp(`^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{${e.precision}}(([+-]\\d{2}(:?\\d{2})?)|Z)$`):new RegExp(`^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{${e.precision}}Z$`):e.precision===0?e.offset?new RegExp("^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(([+-]\\d{2}(:?\\d{2})?)|Z)$"):new RegExp("^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$"):e.offset?new RegExp("^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(([+-]\\d{2}(:?\\d{2})?)|Z)$"):new RegExp("^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?Z$");function t9(e,t){return!!((t==="v4"||!t)&&Q7.test(e)||(t==="v6"||!t)&&J7.test(e))}const Fr=class extends we{constructor(){super(...arguments);H(this,"_regex",(n,r,a)=>this.refinement(i=>n.test(i),{validation:r,code:B.invalid_string,...We(a)}));H(this,"nonempty",n=>this.min(1,We(n)));H(this,"trim",()=>new Fr({...this._def,checks:[...this._def.checks,{kind:"trim"}]}));H(this,"toLowerCase",()=>new Fr({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]}));H(this,"toUpperCase",()=>new Fr({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]}))}_parse(n){if(this._def.coerce&&(n.data=String(n.data)),this._getType(n)!==X.string){const o=this._getOrReturnCtx(n);return q(o,{code:B.invalid_type,expected:X.string,received:o.parsedType}),fe}const a=new ht;let i;for(const o of this._def.checks)if(o.kind==="min")n.data.lengtho.value&&(i=this._getOrReturnCtx(n,i),q(i,{code:B.too_big,maximum:o.value,type:"string",inclusive:!0,exact:!1,message:o.message}),a.dirty());else if(o.kind==="length"){const l=n.data.length>o.value,s=n.data.length"u"?null:n==null?void 0:n.precision,offset:(n==null?void 0:n.offset)??!1,...We(n==null?void 0:n.message)})}regex(n,r){return this._addCheck({kind:"regex",regex:n,...We(r)})}includes(n,r){return this._addCheck({kind:"includes",value:n,position:r==null?void 0:r.position,...We(r==null?void 0:r.message)})}startsWith(n,r){return this._addCheck({kind:"startsWith",value:n,...We(r)})}endsWith(n,r){return this._addCheck({kind:"endsWith",value:n,...We(r)})}min(n,r){return this._addCheck({kind:"min",value:n,...We(r)})}max(n,r){return this._addCheck({kind:"max",value:n,...We(r)})}length(n,r){return this._addCheck({kind:"length",value:n,...We(r)})}get isDatetime(){return!!this._def.checks.find(n=>n.kind==="datetime")}get isEmail(){return!!this._def.checks.find(n=>n.kind==="email")}get isURL(){return!!this._def.checks.find(n=>n.kind==="url")}get isEmoji(){return!!this._def.checks.find(n=>n.kind==="emoji")}get isUUID(){return!!this._def.checks.find(n=>n.kind==="uuid")}get isCUID(){return!!this._def.checks.find(n=>n.kind==="cuid")}get isCUID2(){return!!this._def.checks.find(n=>n.kind==="cuid2")}get isULID(){return!!this._def.checks.find(n=>n.kind==="ulid")}get isIP(){return!!this._def.checks.find(n=>n.kind==="ip")}get minLength(){let n=null;for(const r of this._def.checks)r.kind==="min"&&(n===null||r.value>n)&&(n=r.value);return n}get maxLength(){let n=null;for(const r of this._def.checks)r.kind==="max"&&(n===null||r.valuenew Fr({checks:[],typeName:ae.ZodString,coerce:(n==null?void 0:n.coerce)??!1,...ue(n)}));function n9(e,t){const n=(e.toString().split(".")[1]||"").length,r=(t.toString().split(".")[1]||"").length,a=n>r?n:r,i=parseInt(e.toFixed(a).replace(".","")),o=parseInt(t.toFixed(a).replace(".",""));return i%o/Math.pow(10,a)}const Oo=class extends we{constructor(){super(...arguments);H(this,"min",this.gte);H(this,"max",this.lte);H(this,"step",this.multipleOf)}_parse(n){if(this._def.coerce&&(n.data=Number(n.data)),this._getType(n)!==X.number){const o=this._getOrReturnCtx(n);return q(o,{code:B.invalid_type,expected:X.number,received:o.parsedType}),fe}let a;const i=new ht;for(const o of this._def.checks)o.kind==="int"?b1(n.data)||(a=this._getOrReturnCtx(n,a),q(a,{code:B.invalid_type,expected:"integer",received:"float",message:o.message}),i.dirty()):o.kind==="min"?(o.inclusive?n.datao.value:n.data>=o.value)&&(a=this._getOrReturnCtx(n,a),q(a,{code:B.too_big,maximum:o.value,type:"number",inclusive:o.inclusive,exact:!1,message:o.message}),i.dirty()):o.kind==="multipleOf"?n9(n.data,o.value)!==0&&(a=this._getOrReturnCtx(n,a),q(a,{code:B.not_multiple_of,multipleOf:o.value,message:o.message}),i.dirty()):o.kind==="finite"?Number.isFinite(n.data)||(a=this._getOrReturnCtx(n,a),q(a,{code:B.not_finite,message:o.message}),i.dirty()):ea();return{status:i.value,value:n.data}}gte(n,r){return this.setLimit("min",n,!0,ve(r))}gt(n,r){return this.setLimit("min",n,!1,ve(r))}lte(n,r){return this.setLimit("max",n,!0,ve(r))}lt(n,r){return this.setLimit("max",n,!1,ve(r))}setLimit(n,r,a,i){return new Oo({...this._def,checks:[...this._def.checks,{kind:n,value:r,inclusive:a,message:ve(i)}]})}_addCheck(n){return new Oo({...this._def,checks:[...this._def.checks,n]})}int(n){return this._addCheck({kind:"int",message:ve(n)})}positive(n){return this._addCheck({kind:"min",value:0,inclusive:!1,message:ve(n)})}negative(n){return this._addCheck({kind:"max",value:0,inclusive:!1,message:ve(n)})}nonpositive(n){return this._addCheck({kind:"max",value:0,inclusive:!0,message:ve(n)})}nonnegative(n){return this._addCheck({kind:"min",value:0,inclusive:!0,message:ve(n)})}multipleOf(n,r){return this._addCheck({kind:"multipleOf",value:n,message:ve(r)})}finite(n){return this._addCheck({kind:"finite",message:ve(n)})}safe(n){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:ve(n)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:ve(n)})}get minValue(){let n=null;for(const r of this._def.checks)r.kind==="min"&&(n===null||r.value>n)&&(n=r.value);return n}get maxValue(){let n=null;for(const r of this._def.checks)r.kind==="max"&&(n===null||r.valuen.kind==="int"||n.kind==="multipleOf"&&b1(n.value))}get isFinite(){let n=null,r=null;for(const a of this._def.checks){if(a.kind==="finite"||a.kind==="int"||a.kind==="multipleOf")return!0;a.kind==="min"?(r===null||a.value>r)&&(r=a.value):a.kind==="max"&&(n===null||a.valuenew Oo({checks:[],typeName:ae.ZodNumber,coerce:(n==null?void 0:n.coerce)||!1,...ue(n)}));const $o=class extends we{constructor(){super(...arguments);H(this,"min",this.gte);H(this,"max",this.lte)}_parse(n){if(this._def.coerce&&(n.data=BigInt(n.data)),this._getType(n)!==X.bigint){const o=this._getOrReturnCtx(n);return q(o,{code:B.invalid_type,expected:X.bigint,received:o.parsedType}),fe}let a;const i=new ht;for(const o of this._def.checks)o.kind==="min"?(o.inclusive?n.datao.value:n.data>=o.value)&&(a=this._getOrReturnCtx(n,a),q(a,{code:B.too_big,type:"bigint",maximum:o.value,inclusive:o.inclusive,message:o.message}),i.dirty()):o.kind==="multipleOf"?n.data%o.value!==BigInt(0)&&(a=this._getOrReturnCtx(n,a),q(a,{code:B.not_multiple_of,multipleOf:o.value,message:o.message}),i.dirty()):ea();return{status:i.value,value:n.data}}gte(n,r){return this.setLimit("min",n,!0,ve(r))}gt(n,r){return this.setLimit("min",n,!1,ve(r))}lte(n,r){return this.setLimit("max",n,!0,ve(r))}lt(n,r){return this.setLimit("max",n,!1,ve(r))}setLimit(n,r,a,i){return new $o({...this._def,checks:[...this._def.checks,{kind:n,value:r,inclusive:a,message:ve(i)}]})}_addCheck(n){return new $o({...this._def,checks:[...this._def.checks,n]})}positive(n){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:ve(n)})}negative(n){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:ve(n)})}nonpositive(n){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:ve(n)})}nonnegative(n){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:ve(n)})}multipleOf(n,r){return this._addCheck({kind:"multipleOf",value:n,message:ve(r)})}get minValue(){let n=null;for(const r of this._def.checks)r.kind==="min"&&(n===null||r.value>n)&&(n=r.value);return n}get maxValue(){let n=null;for(const r of this._def.checks)r.kind==="max"&&(n===null||r.valuenew $o({checks:[],typeName:ae.ZodBigInt,coerce:(n==null?void 0:n.coerce)??!1,...ue(n)}));const r0=class extends we{_parse(t){if(this._def.coerce&&(t.data=!!t.data),this._getType(t)!==X.boolean){const r=this._getOrReturnCtx(t);return q(r,{code:B.invalid_type,expected:X.boolean,received:r.parsedType}),fe}return Vn(t.data)}};let bs=r0;H(bs,"create",t=>new r0({typeName:ae.ZodBoolean,coerce:(t==null?void 0:t.coerce)||!1,...ue(t)}));const Cu=class extends we{_parse(t){if(this._def.coerce&&(t.data=new Date(t.data)),this._getType(t)!==X.date){const i=this._getOrReturnCtx(t);return q(i,{code:B.invalid_type,expected:X.date,received:i.parsedType}),fe}if(isNaN(t.data.getTime())){const i=this._getOrReturnCtx(t);return q(i,{code:B.invalid_date}),fe}const r=new ht;let a;for(const i of this._def.checks)i.kind==="min"?t.data.getTime()i.value&&(a=this._getOrReturnCtx(t,a),q(a,{code:B.too_big,message:i.message,inclusive:!0,exact:!1,maximum:i.value,type:"date"}),r.dirty()):ea();return{status:r.value,value:new Date(t.data.getTime())}}_addCheck(t){return new Cu({...this._def,checks:[...this._def.checks,t]})}min(t,n){return this._addCheck({kind:"min",value:t.getTime(),message:ve(n)})}max(t,n){return this._addCheck({kind:"max",value:t.getTime(),message:ve(n)})}get minDate(){let t=null;for(const n of this._def.checks)n.kind==="min"&&(t===null||n.value>t)&&(t=n.value);return t!=null?new Date(t):null}get maxDate(){let t=null;for(const n of this._def.checks)n.kind==="max"&&(t===null||n.valuenew Cu({checks:[],coerce:(t==null?void 0:t.coerce)||!1,typeName:ae.ZodDate,...ue(t)}));const a0=class extends we{constructor(){super(...arguments);H(this,"params")}_parse(n){if(this._getType(n)!==X.undefined){const a=this._getOrReturnCtx(n);return q(a,{code:B.invalid_type,expected:X.undefined,received:a.parsedType}),fe}return Vn(n.data)}};let bo=a0;H(bo,"create",n=>new a0({typeName:ae.ZodUndefined,...ue(n)}));const i0=class extends we{_parse(t){if(this._getType(t)!==X.null){const r=this._getOrReturnCtx(t);return q(r,{code:B.invalid_type,expected:X.null,received:r.parsedType}),fe}return Vn(t.data)}};let xo=i0;H(xo,"create",t=>new i0({typeName:ae.ZodNull,...ue(t)}));const o0=class extends we{constructor(){super(...arguments);H(this,"_any",!0)}_parse(n){return Vn(n.data)}};let Ss=o0;H(Ss,"create",n=>new o0({typeName:ae.ZodAny,...ue(n)}));const l0=class extends we{_parse(t){const n=this._getOrReturnCtx(t);return q(n,{code:B.invalid_type,expected:X.never,received:n.parsedType}),fe}};let Ln=l0;H(Ln,"create",t=>new l0({typeName:ae.ZodNever,...ue(t)}));const Ja=class extends we{_parse(t){const{ctx:n,status:r}=this._processInputParams(t),a=this._def;if(n.parsedType!==X.array)return q(n,{code:B.invalid_type,expected:X.array,received:n.parsedType}),fe;if(a.exactLength!==null){const o=n.data.length>a.exactLength.value,l=n.data.lengtha.maxLength.value&&(q(n,{code:B.too_big,maximum:a.maxLength.value,type:"array",inclusive:!0,exact:!1,message:a.maxLength.message}),r.dirty()),n.common.async)return Promise.all([...n.data].map((o,l)=>a.type._parseAsync(new ta(n,o,n.path,l)))).then(o=>ht.mergeArray(r,o));const i=[...n.data].map((o,l)=>a.type._parseSync(new ta(n,o,n.path,l)));return ht.mergeArray(r,i)}get element(){return this._def.type}min(t,n){return new Ja({...this._def,minLength:{value:t,message:ve(n)}})}max(t,n){return new Ja({...this._def,maxLength:{value:t,message:ve(n)}})}length(t,n){return new Ja({...this._def,exactLength:{value:t,message:ve(n)}})}nonempty(t){return this.min(1,t)}};let Gr=Ja;H(Gr,"create",(t,n)=>new Ja({type:t,minLength:null,maxLength:null,exactLength:null,typeName:ae.ZodArray,...ue(n)}));function xa(e){if(e instanceof yn){const t={};for(const n in e.shape){const r=e.shape[n];t[n]=Fn.create(xa(r))}return new yn({...e._def,shape:()=>t})}else return e instanceof Gr?new Gr({...e._def,type:xa(e.element)}):e instanceof Fn?Fn.create(xa(e.unwrap())):e instanceof Yr?Yr.create(xa(e.unwrap())):e instanceof si?si.create(e.items.map(t=>xa(t))):e}const ut=class extends we{constructor(){super(...arguments);H(this,"_cached",null);H(this,"nonstrict",this.passthrough);H(this,"augment",this.extend)}_getCached(){if(this._cached!==null)return this._cached;const n=this._def.shape(),r=mn(n);return this._cached={shape:n,keys:r}}_parse(n){if(this._getType(n)!==X.object){const c=this._getOrReturnCtx(n);return q(c,{code:B.invalid_type,expected:X.object,received:c.parsedType}),fe}const{status:a,ctx:i}=this._processInputParams(n),{shape:o,keys:l}=this._getCached(),s=[];if(!(this._def.catchall instanceof Ln&&this._def.unknownKeys==="strip"))for(const c in i.data)l.includes(c)||s.push(c);const u=[];for(const c of l){const f=o[c],d=i.data[c];u.push({key:{status:"valid",value:c},value:f._parse(new ta(i,d,i.path,c)),alwaysSet:c in i.data})}if(this._def.catchall instanceof Ln){const c=this._def.unknownKeys;if(c==="passthrough")for(const f of s)u.push({key:{status:"valid",value:f},value:{status:"valid",value:i.data[f]}});else if(c==="strict")s.length>0&&(q(i,{code:B.unrecognized_keys,keys:s}),a.dirty());else if(c!=="strip")throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{const c=this._def.catchall;for(const f of s){const d=i.data[f];u.push({key:{status:"valid",value:f},value:c._parse(new ta(i,d,i.path,f)),alwaysSet:f in i.data})}}return i.common.async?Promise.resolve().then(async()=>{const c=[];for(const f of u){const d=await f.key;c.push({key:d,value:await f.value,alwaysSet:f.alwaysSet})}return c}).then(c=>ht.mergeObjectSync(a,c)):ht.mergeObjectSync(a,u)}get shape(){return this._def.shape()}strict(n){return new ut({...this._def,unknownKeys:"strict",...n!==void 0?{errorMap:(r,a)=>{var o,l;const i=((l=(o=this._def).errorMap)==null?void 0:l.call(o,r,a).message)??a.defaultError;return r.code==="unrecognized_keys"?{message:We(n).message??i}:{message:i}}}:{}})}strip(){return new ut({...this._def,unknownKeys:"strip"})}passthrough(){return new ut({...this._def,unknownKeys:"passthrough"})}extend(n){return new ut({...this._def,shape:()=>({...this._def.shape(),...n})})}merge(n){return new ut({unknownKeys:n._def.unknownKeys,catchall:n._def.catchall,shape:()=>({...this._def.shape(),...n._def.shape()}),typeName:ae.ZodObject})}setKey(n,r){return this.augment({[n]:r})}catchall(n){return new ut({...this._def,catchall:n})}pick(n){const r={};return mn(n).forEach(a=>{n[a]&&this.shape[a]&&(r[a]=this.shape[a])}),new ut({...this._def,shape:()=>r})}omit(n){const r={};return mn(this.shape).forEach(a=>{n[a]||(r[a]=this.shape[a])}),new ut({...this._def,shape:()=>r})}deepPartial(){return xa(this)}partial(n){const r={};return mn(this.shape).forEach(a=>{const i=this.shape[a];n&&!n[a]?r[a]=i:r[a]=i.optional()}),new ut({...this._def,shape:()=>r})}required(n){const r={};return mn(this.shape).forEach(a=>{if(n&&!n[a])r[a]=this.shape[a];else{let o=this.shape[a];for(;o instanceof Fn;)o=o._def.innerType;r[a]=o}}),new ut({...this._def,shape:()=>r})}keyof(){return Zw(mn(this.shape))}};let yn=ut;H(yn,"create",(n,r)=>new ut({shape:()=>n,unknownKeys:"strip",catchall:Ln.create(),typeName:ae.ZodObject,...ue(r)})),H(yn,"strictCreate",(n,r)=>new ut({shape:()=>n,unknownKeys:"strict",catchall:Ln.create(),typeName:ae.ZodObject,...ue(r)})),H(yn,"lazycreate",(n,r)=>new ut({shape:n,unknownKeys:"strip",catchall:Ln.create(),typeName:ae.ZodObject,...ue(r)}));const s0=class extends we{_parse(t){const{ctx:n}=this._processInputParams(t),r=this._def.options;function a(i){for(const l of i)if(l.result.status==="valid")return l.result;for(const l of i)if(l.result.status==="dirty")return n.common.issues.push(...l.ctx.common.issues),l.result;const o=i.map(l=>new wr(l.ctx.common.issues));return q(n,{code:B.invalid_union,unionErrors:o}),fe}if(n.common.async)return Promise.all(r.map(async i=>{const o={...n,common:{...n.common,issues:[]},parent:null};return{result:await i._parseAsync({data:n.data,path:n.path,parent:o}),ctx:o}})).then(a);{let i;const o=[];for(const s of r){const u={...n,common:{...n.common,issues:[]},parent:null},c=s._parseSync({data:n.data,path:n.path,parent:u});if(c.status==="valid")return c;c.status==="dirty"&&!i&&(i={result:c,ctx:u}),u.common.issues.length&&o.push(u.common.issues)}if(i)return n.common.issues.push(...i.ctx.common.issues),i.result;const l=o.map(s=>new wr(s));return q(n,{code:B.invalid_union,unionErrors:l}),fe}}get options(){return this._def.options}};let So=s0;H(So,"create",(t,n)=>new s0({options:t,typeName:ae.ZodUnion,...ue(n)}));const _s=e=>e instanceof _o?_s(e.schema):e instanceof In?_s(e.innerType()):e instanceof Co?[e.value]:e instanceof ui?e.options:e instanceof Eo?Object.keys(e.enum):e instanceof ko?_s(e._def.innerType):e instanceof bo?[void 0]:e instanceof xo?[null]:null;class ih extends we{_parse(t){const{ctx:n}=this._processInputParams(t);if(n.parsedType!==X.object)return q(n,{code:B.invalid_type,expected:X.object,received:n.parsedType}),fe;const r=this.discriminator,a=n.data[r],i=this.optionsMap.get(a);return i?n.common.async?i._parseAsync({data:n.data,path:n.path,parent:n}):i._parseSync({data:n.data,path:n.path,parent:n}):(q(n,{code:B.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[r]}),fe)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(t,n,r){const a=new Map;for(const i of n){const o=_s(i.shape[t]);if(!o)throw new Error(`A discriminator value for key \`${t}\` could not be extracted from all schema options`);for(const l of o){if(a.has(l))throw new Error(`Discriminator property ${String(t)} has duplicate value ${String(l)}`);a.set(l,i)}}return new ih({typeName:ae.ZodDiscriminatedUnion,discriminator:t,options:n,optionsMap:a,...ue(r)})}}function Ld(e,t){const n=Ir(e),r=Ir(t);if(e===t)return{valid:!0,data:e};if(n===X.object&&r===X.object){const a=mn(t),i=mn(e).filter(l=>a.indexOf(l)!==-1),o={...e,...t};for(const l of i){const s=Ld(e[l],t[l]);if(!s.valid)return{valid:!1};o[l]=s.data}return{valid:!0,data:o}}else if(n===X.array&&r===X.array){if(e.length!==t.length)return{valid:!1};const a=[];for(let i=0;i{if(x1(i)||x1(o))return fe;const l=Ld(i.value,o.value);return l.valid?((S1(i)||S1(o))&&n.dirty(),{status:n.value,value:l.data}):(q(r,{code:B.invalid_intersection_types}),fe)};return r.common.async?Promise.all([this._def.left._parseAsync({data:r.data,path:r.path,parent:r}),this._def.right._parseAsync({data:r.data,path:r.path,parent:r})]).then(([i,o])=>a(i,o)):a(this._def.left._parseSync({data:r.data,path:r.path,parent:r}),this._def.right._parseSync({data:r.data,path:r.path,parent:r}))}};let Cs=u0;H(Cs,"create",(t,n,r)=>new u0({left:t,right:n,typeName:ae.ZodIntersection,...ue(r)}));const Eu=class extends we{_parse(t){const{status:n,ctx:r}=this._processInputParams(t);if(r.parsedType!==X.array)return q(r,{code:B.invalid_type,expected:X.array,received:r.parsedType}),fe;if(r.data.lengththis._def.items.length&&(q(r,{code:B.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),n.dirty());const i=[...r.data].map((o,l)=>{const s=this._def.items[l]||this._def.rest;return s?s._parse(new ta(r,o,r.path,l)):null}).filter(o=>!!o);return r.common.async?Promise.all(i).then(o=>ht.mergeArray(n,o)):ht.mergeArray(n,i)}get items(){return this._def.items}rest(t){return new Eu({...this._def,rest:t})}};let si=Eu;H(si,"create",(t,n)=>{if(!Array.isArray(t))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new Eu({items:t,typeName:ae.ZodTuple,rest:null,...ue(n)})});class fu extends we{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(t){const{status:n,ctx:r}=this._processInputParams(t);if(r.parsedType!==X.object)return q(r,{code:B.invalid_type,expected:X.object,received:r.parsedType}),fe;const a=[],i=this._def.keyType,o=this._def.valueType;for(const l in r.data)a.push({key:i._parse(new ta(r,l,r.path,l)),value:o._parse(new ta(r,r.data[l],r.path,l))});return r.common.async?ht.mergeObjectAsync(n,a):ht.mergeObjectSync(n,a)}get element(){return this._def.valueType}static create(t,n,r){return n instanceof we?new fu({keyType:t,valueType:n,typeName:ae.ZodRecord,...ue(r)}):new fu({keyType:wo.create(),valueType:t,typeName:ae.ZodRecord,...ue(n)})}}const c0=class extends we{get schema(){return this._def.getter()}_parse(t){const{ctx:n}=this._processInputParams(t);return this._def.getter()._parse({data:n.data,path:n.path,parent:n})}};let _o=c0;H(_o,"create",(t,n)=>new c0({getter:t,typeName:ae.ZodLazy,...ue(n)}));const f0=class extends we{_parse(t){if(t.data!==this._def.value){const n=this._getOrReturnCtx(t);return q(n,{received:n.data,code:B.invalid_literal,expected:this._def.value}),fe}return{status:"valid",value:t.data}}get value(){return this._def.value}};let Co=f0;H(Co,"create",(t,n)=>new f0({value:t,typeName:ae.ZodLiteral,...ue(n)}));function Zw(e,t){return new ui({values:e,typeName:ae.ZodEnum,...ue(t)})}const ku=class extends we{_parse(t){if(typeof t.data!="string"){const n=this._getOrReturnCtx(t),r=this._def.values;return q(n,{expected:yo(r),received:n.parsedType,code:B.invalid_type}),fe}if(this._def.values.indexOf(t.data)===-1){const n=this._getOrReturnCtx(t),r=this._def.values;return q(n,{received:n.data,code:B.invalid_enum_value,options:r}),fe}return Vn(t.data)}get options(){return this._def.values}get enum(){const t={};for(const n of this._def.values)t[n]=n;return t}get Values(){const t={};for(const n of this._def.values)t[n]=n;return t}get Enum(){const t={};for(const n of this._def.values)t[n]=n;return t}extract(t){return ku.create(t)}exclude(t){return ku.create(this.options.filter(n=>!t.includes(n)))}};let ui=ku;H(ui,"create",Zw);const d0=class extends we{_parse(t){const n=z7(this._def.values),r=this._getOrReturnCtx(t);if(r.parsedType!==X.string&&r.parsedType!==X.number){const a=Md(n);return q(r,{expected:yo(a),received:r.parsedType,code:B.invalid_type}),fe}if(n.indexOf(t.data)===-1){const a=Md(n);return q(r,{received:r.data,code:B.invalid_enum_value,options:a}),fe}return Vn(t.data)}get enum(){return this._def.values}};let Eo=d0;H(Eo,"create",(t,n)=>new d0({values:t,typeName:ae.ZodNativeEnum,...ue(n)}));const p0=class extends we{unwrap(){return this._def.type}_parse(t){const{ctx:n}=this._processInputParams(t);if(n.parsedType!==X.promise&&n.common.async===!1)return q(n,{code:B.invalid_type,expected:X.promise,received:n.parsedType}),fe;const r=n.parsedType===X.promise?n.data:Promise.resolve(n.data);return Vn(r.then(a=>this._def.type.parseAsync(a,{path:n.path,errorMap:n.common.contextualErrorMap})))}};let Es=p0;H(Es,"create",(t,n)=>new p0({type:t,typeName:ae.ZodPromise,...ue(n)}));const Tu=class extends we{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===ae.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(t){const{status:n,ctx:r}=this._processInputParams(t),a=this._def.effect||null;if(a.type==="preprocess"){const o=a.transform(r.data);return r.common.async?Promise.resolve(o).then(l=>this._def.schema._parseAsync({data:l,path:r.path,parent:r})):this._def.schema._parseSync({data:o,path:r.path,parent:r})}const i={addIssue:o=>{q(r,o),o.fatal?n.abort():n.dirty()},get path(){return r.path}};if(i.addIssue=i.addIssue.bind(i),a.type==="refinement"){const o=l=>{const s=a.refinement(l,i);if(r.common.async)return Promise.resolve(s);if(s instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return l};if(r.common.async===!1){const l=this._def.schema._parseSync({data:r.data,path:r.path,parent:r});return l.status==="aborted"?fe:(l.status==="dirty"&&n.dirty(),o(l.value),{status:n.value,value:l.value})}else return this._def.schema._parseAsync({data:r.data,path:r.path,parent:r}).then(l=>l.status==="aborted"?fe:(l.status==="dirty"&&n.dirty(),o(l.value).then(()=>({status:n.value,value:l.value}))))}if(a.type==="transform")if(r.common.async===!1){const o=this._def.schema._parseSync({data:r.data,path:r.path,parent:r});if(!Rd(o))return o;const l=a.transform(o.value,i);if(l instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:n.value,value:l}}else return this._def.schema._parseAsync({data:r.data,path:r.path,parent:r}).then(o=>Rd(o)?Promise.resolve(a.transform(o.value,i)).then(l=>({status:n.value,value:l})):o);ea()}};let In=Tu;H(In,"create",(t,n,r)=>new Tu({schema:t,typeName:ae.ZodEffects,effect:n,...ue(r)})),H(In,"createWithPreprocess",(t,n,r)=>new Tu({schema:n,effect:{type:"preprocess",transform:t},typeName:ae.ZodEffects,...ue(r)}));const h0=class extends we{_parse(t){return this._getType(t)===X.undefined?Vn(void 0):this._def.innerType._parse(t)}unwrap(){return this._def.innerType}};let Fn=h0;H(Fn,"create",(t,n)=>new h0({innerType:t,typeName:ae.ZodOptional,...ue(n)}));const g0=class extends we{_parse(t){return this._getType(t)===X.null?Vn(null):this._def.innerType._parse(t)}unwrap(){return this._def.innerType}};let Yr=g0;H(Yr,"create",(t,n)=>new g0({innerType:t,typeName:ae.ZodNullable,...ue(n)}));const m0=class extends we{_parse(t){const{ctx:n}=this._processInputParams(t);let r=n.data;return n.parsedType===X.undefined&&(r=this._def.defaultValue()),this._def.innerType._parse({data:r,path:n.path,parent:n})}removeDefault(){return this._def.innerType}};let ko=m0;H(ko,"create",(t,n)=>new m0({innerType:t,typeName:ae.ZodDefault,defaultValue:typeof n.default=="function"?n.default:()=>n.default,...ue(n)}));const v0=class extends we{_parse(t){const{ctx:n}=this._processInputParams(t),r={...n,common:{...n.common,issues:[]}},a=this._def.innerType._parse({data:r.data,path:r.path,parent:{...r}});return Ad(a)?a.then(i=>({status:"valid",value:i.status==="valid"?i.value:this._def.catchValue({get error(){return new wr(r.common.issues)},input:r.data})})):{status:"valid",value:a.status==="valid"?a.value:this._def.catchValue({get error(){return new wr(r.common.issues)},input:r.data})}}removeCatch(){return this._def.innerType}};let ks=v0;H(ks,"create",(t,n)=>new v0({innerType:t,typeName:ae.ZodCatch,catchValue:typeof n.catch=="function"?n.catch:()=>n.catch,...ue(n)}));class r9 extends we{_parse(t){const{ctx:n}=this._processInputParams(t),r=n.data;return this._def.type._parse({data:r,path:n.path,parent:n})}unwrap(){return this._def.type}}class oh extends we{_parse(t){const{status:n,ctx:r}=this._processInputParams(t);if(r.common.async)return(async()=>{const i=await this._def.in._parseAsync({data:r.data,path:r.path,parent:r});return i.status==="aborted"?fe:i.status==="dirty"?(n.dirty(),V7(i.value)):this._def.out._parseAsync({data:i.value,path:r.path,parent:r})})();{const a=this._def.in._parseSync({data:r.data,path:r.path,parent:r});return a.status==="aborted"?fe:a.status==="dirty"?(n.dirty(),{status:"dirty",value:a.value}):this._def.out._parseSync({data:a.value,path:r.path,parent:r})}}static create(t,n){return new oh({in:t,out:n,typeName:ae.ZodPipeline})}}yn.lazycreate;var ae;(function(e){e.ZodString="ZodString",e.ZodNumber="ZodNumber",e.ZodNaN="ZodNaN",e.ZodBigInt="ZodBigInt",e.ZodBoolean="ZodBoolean",e.ZodDate="ZodDate",e.ZodSymbol="ZodSymbol",e.ZodUndefined="ZodUndefined",e.ZodNull="ZodNull",e.ZodAny="ZodAny",e.ZodUnknown="ZodUnknown",e.ZodNever="ZodNever",e.ZodVoid="ZodVoid",e.ZodArray="ZodArray",e.ZodObject="ZodObject",e.ZodUnion="ZodUnion",e.ZodDiscriminatedUnion="ZodDiscriminatedUnion",e.ZodIntersection="ZodIntersection",e.ZodTuple="ZodTuple",e.ZodRecord="ZodRecord",e.ZodMap="ZodMap",e.ZodSet="ZodSet",e.ZodFunction="ZodFunction",e.ZodLazy="ZodLazy",e.ZodLiteral="ZodLiteral",e.ZodEnum="ZodEnum",e.ZodEffects="ZodEffects",e.ZodNativeEnum="ZodNativeEnum",e.ZodOptional="ZodOptional",e.ZodNullable="ZodNullable",e.ZodDefault="ZodDefault",e.ZodCatch="ZodCatch",e.ZodPromise="ZodPromise",e.ZodBranded="ZodBranded",e.ZodPipeline="ZodPipeline"})(ae=ae||(ae={}));const ne=wo.create,je=ys.create,a9=ws.create,wn=bs.create,i9=xs.create;bo.create;const o9=xo.create,Nd=Ss.create;Ln.create;const Me=Gr.create,Fe=yn.create;yn.strictCreate;const qw=So.create,l9=ih.create;si.create;const Dd=fu.create,Xw=_o.create,Ku=Co.create,Or=ui.create;Eo.create;In.create;Fn.create;Yr.create;const ct=In.createWithPreprocess,s9=qw([ne(),je(),wn(),o9()]),Id=Xw(()=>qw([s9,Me(Id),Dd(Id)])),ot={jsonSchema:Id,numberOrString:()=>ct(e=>{if(typeof e=="string")return Number(e);if(typeof e=="number")return e},je()).openapi({type:"number"}),dateOrString:()=>i9().or(ne().transform(e=>new Date(e))).openapi({type:"string",examples:["2022-07-26T18:30:49+00:00","2022-07-26T18:30:49Z"]}),parseStringAsJson:e=>ct(t=>typeof t=="string"?JSON.parse(t):t,e),objectOrJson:e=>ct(t=>typeof t=="string"?JSON.parse(t):t,Fe(e)),arrayOrJson:e=>ct(t=>typeof t=="string"?JSON.parse(t):t,Me(e)),booleanOrString:()=>ct(e=>{if(typeof e=="string"){if(e==="true"||e==="t")return!0;if(e==="false"||e==="f")return!1}if(typeof e=="boolean")return e},wn()),bigintOrString:()=>ct(e=>{if(typeof e=="string"||typeof e=="number")return BigInt(e);if(typeof e=="bigint")return e},a9()).openapi({type:"integer",format:"int64"}),boolean:()=>ct(e=>typeof e!="boolean"?e===1:e,wn()),objectOrJsonString:e=>ct(t=>{if(typeof t=="string")return t==="unchanged_toast"?null:JSON.parse(t);if(typeof t=="object")return t},e).openapi({type:"object"}),jsonArrayOrPgString:e=>ct(t=>{if(Array.isArray(t))return typeof t[0]=="string"?t.map(n=>JSON.parse(n)):t;if(typeof t=="string")return t==="{}"?[]:t.startsWith('{"{')?t.slice(2,-2).split('","').map(n=>JSON.parse(n.replaceAll('\\"','"'))):JSON.parse(t)},Me(e)).openapi({type:"array"}),stringArrayOrPgString:()=>ct(e=>{if(typeof e=="string"&&e.charAt(0)==="{"&&e.charAt(e.length-1)==="}")return e.slice(1,-1).split(",");if(Array.isArray(e))return e},Me(ne())).openapi({type:"array"}),queryStringArray:()=>ct(e=>Array.isArray(e)?e:[String(e)],Me(ne()))},u9=Or(["uploaded","beta","stable"]);Or(["regular","realtime"]);const c9=Or(["offline","connected"]),f9=Or(["offline","online"]),d9=Or(["compatible","upgradable","obsolete"]),p9=Me(Fe({httpPort:je().nullish(),interface:ne(),addresses:Me(Fe({address:ne(),netmask:ne(),family:ct(e=>{if(typeof e=="number"){if(e===6)return"IPv6";if(e===4)return"IPv4"}return e},Or(["IPv4","IPv6"])),mac:ne(),internal:wn(),cidr:ne().nullable()}))}));Or(["cgroupsv2"]);const C1=Fe({id:ne(),createdAt:ot.dateOrString(),updatedAt:ot.dateOrString(),authorized:ot.booleanOrString(),connectedAt:ot.dateOrString().nullable(),disconnectedAt:ot.dateOrString().nullable(),agentVersion:ne(),fwVersion:ne().nullable(),agentGitCommit:ne().nullable(),agentCompatibility:d9,hostname:ne().nullable(),status:c9,mode:f9,platform:ne().nullable(),cpu:ne().nullable(),name:ne().nullable(),parentRobotId:ne().nullable(),teamId:ne().uuid(),configuredCorrectly:ot.booleanOrString(),configurationIssues:ot.stringArrayOrPgString().default([]),network:ct(e=>typeof e=="string"?JSON.parse(e):e,p9).nullable().optional(),deleted:ot.booleanOrString().default(!1),updateTargetStage:u9}),tl=Me(je().min(0).max(255)).length(3),h9=Fe({thickness:je().default(1),fill_transparency:je().default(.15),box_roundness:je().default(1),color:tl.default([255,255,255])}).default({}),Kw=Fe({font_color:tl.default([0,0,0]),font_transparency:je().default(.5),font_scale:je().default(1),font_thickness:je().default(1),bg_transparency:je().default(.5),bg_color:tl.default([255,255,255])}).default({}),g9=Fe({line_thickness:je().default(1),line_color:tl.default([255,255,255])}).default({}),Qw=Fe({img_scale:je().default(1),detection:h9,text:Kw,tracking:g9}),Qu={children:Xw(()=>Me(lh).default([]))},m9=Fe({type:Ku("detections"),detections:Me(Fe({bbox:Me(je()).length(4),label:ne().optional(),color:tl.optional()}))}),v9=m9.extend(Qu),y9=Fe({type:Ku("line"),pt1:Me(je()).length(2),pt2:Me(je()).length(2)}),w9=y9.extend(Qu),b9=Fe({type:Ku("trail")}),x9=b9.extend(Qu),S9=Fe({type:Ku("text"),text:ne(),coords:Me(je()).length(2)}),Jw=S9.extend(Qu),lh=l9("type",[v9,w9,x9,Jw]),Wl=Fe({path:ne(),metadata:wn(),metadataExtension:ne().optional()});Fe({id:ne(),createdAt:ot.dateOrString(),teamId:ne(),robotId:ne().nullable(),robot:C1.partial().nullish(),appId:ne().nullable(),app:C1.partial().nullish(),title:ne(),tags:ot.stringArrayOrPgString().nullish().default([]),frames:ct(e=>{const t=()=>ot.stringArrayOrPgString().nullish().default(null).parse(e);try{const n=ot.jsonArrayOrPgString(Wl).nullish().default([]).safeParse(e);return n.success?n.data:t()}catch(n){return xe.warn({error:n},"Cannot parse frames, probably legacy"),t()}},Me(Wl).or(Me(ne()).nullable())).openapi({type:"array"}),video:ct(e=>{const t=()=>ne().nullable().parse(e);try{const n=ot.objectOrJsonString(Wl).nullish().default(null).safeParse(e);return n.success?n.data:t()}catch(n){return xe.warn({error:n},"Cannot parse video, probably legacy"),t()}},Wl.or(ne()).nullable()).openapi({type:"object"}),files:ot.stringArrayOrPgString().nullish().default(null),data:ot.objectOrJsonString(Dd(Nd()).or(Me(Dd(Nd()).or(ne()).or(je()))).or(ne()).or(je())).nullable(),pendingDelete:ot.booleanOrString().default(!1),classification:Or(["correct","false"]).nullish().default(null)});const _9=Fe({objects:Me(lh),config:Qw}),C9=_9.extend({timestamp:je().optional()});Fe({frame_number:je(),objects:Me(Me(lh)),config:Qw});Fe({id:ne(),title:ne(),createdAt:ne(),data:Nd().optional(),frames:Me(Fe({path:ne(),name:ne(),camera_serial:ne().nullish(),metadata:wn().default(!1)})).max(10).nullish(),video:Me(Fe({path:ne(),name:ne(),camera_serial:ne().nullish(),metadata:wn().default(!1)})).max(1).nullish(),files:Me(Fe({path:ne(),name:ne()})).max(10).nullish(),tags:Me(ne().max(100)).max(10).optional(),keep_after_upload:wn(),no_upload_by_default:wn(),keep_when_space_low:wn()});const eb=()=>{},nl=(e,t=1)=>`rgba(${e[0]}, ${e[1]}, ${e[2]}, ${t})`;function tb(e){const t=[];for(const n of e)if(t.push(n),n.children&&n.children.length>0){const r=tb(n.children);t.push(...r),n.children=[]}return t}const nb=20,E9="monospace",k9=e=>{const{context:t,detections:n,settings:r}=e;for(const a of n){a.label&&a.color&&rb({context:t,text:{type:"text",text:a.label,coords:[a.bbox[0],a.bbox[1]-nb],children:[]},settings:Kw.parse({font_color:a.color,bg_color:r.color,bg_transparency:r.fill_transparency})}),t.lineWidth=r.thickness,t.strokeStyle=nl(r.color);const[i,o,l,s]=a.bbox;$9(t,i,o,l-i,s-o,r.box_roundness),r.fill_transparency>0&&(t.fillStyle=nl(r.color,r.fill_transparency),P9(t,i,o,l-i,s-o,r.box_roundness))}},T9=e=>{const{context:t,line:n,settings:r}=e;t.lineWidth=r.line_thickness,t.strokeStyle=nl(r.line_color),t.beginPath(),t.moveTo(n.pt1[0],n.pt1[1]),t.lineTo(n.pt2[0],n.pt2[1]),t.stroke()},rb=e=>{const{context:t,text:n,settings:r}=e;if(t.scale(r.font_scale,r.font_scale),t.font=`${r.font_thickness*100} ${nb}px ${E9}`,r.bg_color){const{width:a,actualBoundingBoxAscent:i,actualBoundingBoxDescent:o}=t.measureText(n.text),l=i+o;t.fillStyle=nl(r.bg_color,r.bg_transparency);const s=5;t.fillRect(n.coords[0]-s,n.coords[1]-s-l,a+s*2,l+s*2)}t.fillStyle=nl(r.font_color,r.font_transparency),t.fillText(n.text,n.coords[0],n.coords[1])},O9=(e,t,n)=>{const r=tb(t);for(const a of r)switch(a.type){case"detections":{k9({context:e,detections:a.detections,settings:n.detection});break}case"line":{T9({context:e,line:a,settings:n.tracking});break}case"text":{rb({context:e,text:a,settings:n.text});break}}},$9=(e,t,n,r,a,i)=>{e.beginPath(),e.moveTo(t,n+i),e.lineTo(t,n+a-i),e.arcTo(t,n+a,t+i,n+a,i),e.lineTo(t+r-i,n+a),e.arcTo(t+r,n+a,t+r,n+a-i,i),e.lineTo(t+r,n+i),e.arcTo(t+r,n,t+r-i,n,i),e.lineTo(t+i,n),e.arcTo(t,n,t,n+i,i),e.stroke()},P9=(e,t,n,r,a,i)=>{e.beginPath(),e.moveTo(t,n+i),e.lineTo(t,n+a-i),e.arcTo(t,n+a,t+i,n+a,i),e.lineTo(t+r-i,n+a),e.arcTo(t+r,n+a,t+r,n+a-i,i),e.lineTo(t+r,n+i),e.arcTo(t+r,n,t+r-i,n,i),e.lineTo(t+i,n),e.arcTo(t,n,t,n+i,i),e.fill()};function ab(e){const t={method:e.method,headers:{"Content-Type":"application/json"},body:void 0,signal:e.signal};return e.method==="POST"&&(t.body=JSON.stringify(e.body)),fetch(e.path,t)}const dt=(e,t,n)=>xe.debug(n??{},`[WebRTC][${e}] ${t}`);function M9(e){e.addEventListener("icegatheringstatechange",()=>{dt("iceGatheringLog",` -> ${e.iceGatheringState}`)},!1),e.addEventListener("iceconnectionstatechange",()=>{dt("iceConnectionLog",` -> ${e.iceConnectionState}`)},!1),e.addEventListener("signalingstatechange",()=>{dt("signalingLog",` -> ${e.signalingState}`)},!1)}function R9(e){return()=>{var t;for(const n of e.dataChannels)n.close();if(e.connection.getTransceivers)for(const n of e.connection.getTransceivers())n.stop&&n.stop();for(const n of e.connection.getSenders())n.track!==null&&((t=n.track)==null||t.stop());e.connection.close()}}function A9(e){var s;e.servers??(e.servers=[]);const t={sdpSemantics:"unified-plan",bundlePolicy:"max-bundle",iceServers:[],iceTransportPolicy:window.__overrideIceTransportPolicy??"all"};for(const u of e.servers)dt("createPeerConnection",`adding TURN server -> ${u.hostname}:${u.port}`),(s=t.iceServers)==null||s.push({urls:[`turn:${u.hostname}:${u.port}`],username:u.username,credential:u.password});const n=new RTCPeerConnection(t);M9(n),n.addEventListener("track",u=>e.onStream(u.streams[0]));let r=0;const a=()=>{const u=performance.now();if(r){const c=u-r;return r=u,c}else return r=u,0},i=[];let o=null;n.ondatachannel=u=>{const c=u.channel;i.push(c),c.label==="ping-pong"&&(c.onopen=()=>{dt("dataChannelLog","open")},c.onmessage=f=>{dt("dataChannelLog",`| ${c.label} < ${f.data} +`),o=setTimeout(()=>{if(c.readyState==="open"){const d=`Pong ${a()}`;dt("dataChannelLog",`| ${c.label} > ${d} +`),c.send(d)}},1e3)},c.onclose=function(){o&&clearTimeout(o),o=null,dt("dataChannelLog",`- close +`)}),c.label.includes("metadata")&&(c.onopen=()=>{dt("dataChannelLog",` - open +`)},c.onmessage=f=>{const d=f.data;let v=null;try{v=JSON.parse(d)}catch{dt("dataChannelLog",`| ${c.label} < Cannot parse metadata +`)}v&&e.onMetadata(v)},c.onclose=function(){dt("dataChannelLog",`- close +`)})};const l=R9({dataChannels:i,connection:n});return{rtc:n,close:l}}async function L9(e,t){const n=await ab({method:"GET",path:e,signal:t});if(n.status!==200)throw xe.error({response:n},"WebRTC request failed"),new Error("WebRTC request failed");return n.json()}async function N9(e,t,n,r){const a=await ab({method:"POST",path:e,body:{streamId:n,sdp:t},signal:r});if(a.status!==200)throw xe.error({response:a},"WebRTC signal failed"),new Error("WebRTC signal failed");return a.json()}async function D9(e){var n,r;let t=()=>eb();try{dt("watchWebRtcStream","requesting agent SDP");const a=await(e.signalingUrl!==void 0?L9(e.signalingUrl,e.signal):e.requestSdp());if(!a||!a.sdp)throw new Error("no SDP received!");if(e.signal.aborted)throw new Error("WebRTC request aborted!");dt("watchWebRtcStream","received agent SDP",{sdp:a.sdp,streamId:a.streamId});const{rtc:i,close:o}=A9(e);t=o,await i.setRemoteDescription({type:"offer",sdp:a.sdp});const l=await i.createAnswer();for(dt("watchWebRtcStream","created answer",{sdp:l.sdp}),await i.setLocalDescription(l);!e.signal.aborted&&i.iceGatheringState!=="complete";)await new Promise(s=>setTimeout(s,100));if(e.signal.aborted)throw new Error("WebRTC request aborted!");if(dt("watchWebRtcStream","sending SDP over"),await(e.signalingUrl!==void 0?N9(e.signalingUrl,((n=i.localDescription)==null?void 0:n.sdp)??"",a.streamId,e.signal):e.submitSdp(((r=i.localDescription)==null?void 0:r.sdp)??"",a.streamId)),e.signal.aborted)throw new Error("WebRTC request aborted!")}finally{e.signal.aborted&&t()}return t}const I9=()=>new F9;class j9{constructor(){H(this,"video");H(this,"canvas");H(this,"context",null);H(this,"renderState",null);H(this,"_id");H(this,"_initialized");this._id=Math.random().toFixed(5),this._initialized=!1}get id(){return this._id}get rendering(){return this.renderState!==null}get initialized(){return this._initialized}disposeState(){this.renderState&&(!this.renderState.finished&&!this.renderState.abort.signal.aborted&&this.renderState.abort.abort(),this.renderState.initialized&&this.renderState.close&&this.renderState.close()),this.renderState=null}dispose(){if(this.disposeState(),this.video){this.video.paused||this.video.pause(),this.video.srcObject=null;let n=this.video.requestVideoFrameCallback(eb);for(;n;)this.video.cancelVideoFrameCallback(n--)}const t=this.canvas.getContext("2d");t&&(t.fillStyle="black",t.fillRect(0,0,this.canvas.width,this.canvas.height))}drawFrameWithMetadata(t,n,r){if(this.context===null&&(this.context=this.canvas.getContext("2d")),this.context&&this.video){const a=this.canvas;a.width=t.width,a.height=t.height,this.context.drawImage(this.video,0,0,a.width,a.height),n&&r&&O9(this.context,n,r)}}}class F9 extends j9{constructor(){super(...arguments);H(this,"metadata",[]);H(this,"timeZone")}init(n){this.video=n.video,this.canvas=n.canvas,this.timeZone=n.timeZone,this._initialized=!0}containsStream(n){return this.renderState?this.renderState.key===n:!1}addTimestampMetadata(n,r,a){const i={type:"text",text:new Date(r).toLocaleString("en-US",{day:"2-digit",month:"2-digit",year:"2-digit",hour:"2-digit",minute:"2-digit",timeZone:a}),coords:[10,20],children:[]};n.push(Jw.parse(i))}appendMetadata(n){if(n.metadata)try{const r=JSON.parse(n.metadata),a=C9.parse(r);a.timestamp&&this.timeZone&&this.addTimestampMetadata(a.objects,a.timestamp,this.timeZone);const i={...n,metadata:a};this.metadata.push(i)}catch(r){xe.error({error:r},"cannot parse stream metadata");return}}findMetadata(n){if(!n)return xe.error("invalid frame timestamp, cannot find any metadata"),this.metadata=[],null;for(;this.metadata.length>0&&this.metadata[0].rtpTimestamp0){const r=this.metadata[0];return r.rtpTimestamp>n?null:r.rtpTimestamp!==n?(xe.error({rtpTimestamp:n},"invalid metadata for timestamp: "),null):(this.metadata.shift(),r)}else xe.debug(`no metadata found for timestamp ${n}`);return null}clear(){this.metadata=[]}drawFrame(n,r){if(this.video&&this.canvas){this.video.requestVideoFrameCallback(this.drawFrame.bind(this));const a=this.findMetadata(r.rtpTimestamp);this.drawFrameWithMetadata(r,(a==null?void 0:a.metadata.objects)??null,(a==null?void 0:a.metadata.config)??null)}}watchWebRtcStream(n){const{rendererState:r,servers:a,onStreamStart:i,onPlayError:o,...l}=n;return D9({signal:r.abort.signal,...l,servers:a,onStream:s=>{r.abort.signal.aborted||(s&&this.video?(this.video.srcObject=s,this.video.play().then(()=>{var u;this.video&&this.video.requestVideoFrameCallback(this.drawFrame.bind(this)),(u=n.onStreamStart)==null||u.call(n)}).catch(n.onPlayError)):xe.error("can't find stream"))},onMetadata:s=>{r.abort.signal.aborted||this.appendMetadata(s)}})}render(n){if(!this.initialized){xe.error("Renderer is not initialized!");return}this.dispose();const r=async a=>{for(;!a.abort.signal.aborted;)try{const i=await this.watchWebRtcStream({...n,rendererState:a});a.close=i,a.initialized=!0;break}catch(i){xe.error({error:i},"Unexpected error while creating RTC connection"),await new Promise(o=>setTimeout(o,2e3))}a.finished=!0};this.renderState={key:n.streamKey,abort:new AbortController,close:null,initialized:!1,finished:!1},r(this.renderState)}}var Ju={exports:{}},ib={};const B9=Fx(sS);var De={},kn={};Object.defineProperty(kn,"__esModule",{value:!0});kn.dontSetMe=V9;kn.findInArray=z9;kn.int=W9;kn.isFunction=U9;kn.isNum=H9;function z9(e,t){for(var n=0,r=e.length;n0&&arguments[0]!==void 0?arguments[0]:"transform";if(typeof window>"u")return"";var r=(e=window.document)===null||e===void 0||(t=e.documentElement)===null||t===void 0?void 0:t.style;if(!r||n in r)return"";for(var a=0;a: Unmounted during event!");return t}var ec={},tc={};Object.defineProperty(tc,"__esModule",{value:!0});tc.default=y8;function y8(){}function du(e){"@babel/helpers - typeof";return du=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},du(e)}Object.defineProperty(ec,"__esModule",{value:!0});ec.default=void 0;var af=b8(k),Tt=ch(eh),w8=ch(Kp),rt=De,Kn=Tn,of=kn,qi=ch(tc);function ch(e){return e&&e.__esModule?e:{default:e}}function hb(e){if(typeof WeakMap!="function")return null;var t=new WeakMap,n=new WeakMap;return(hb=function(a){return a?n:t})(e)}function b8(e,t){if(!t&&e&&e.__esModule)return e;if(e===null||du(e)!=="object"&&typeof e!="function")return{default:e};var n=hb(t);if(n&&n.has(e))return n.get(e);var r={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if(i!=="default"&&Object.prototype.hasOwnProperty.call(e,i)){var o=a?Object.getOwnPropertyDescriptor(e,i):null;o&&(o.get||o.set)?Object.defineProperty(r,i,o):r[i]=e[i]}return r.default=e,n&&n.set(e,r),r}function T1(e,t){return C8(e)||_8(e,t)||S8(e,t)||x8()}function x8(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function S8(e,t){if(e){if(typeof e=="string")return O1(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(n==="Object"&&e.constructor&&(n=e.constructor.name),n==="Map"||n==="Set")return Array.from(e);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return O1(e,t)}}function O1(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function pu(e){return pu=Object.setPrototypeOf?Object.getPrototypeOf:function(n){return n.__proto__||Object.getPrototypeOf(n)},pu(e)}function Bt(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var Kt={touch:{start:"touchstart",move:"touchmove",stop:"touchend"},mouse:{start:"mousedown",move:"mousemove",stop:"mouseup"}},Qn=Kt.mouse,nc=function(e){T8(n,e);var t=O8(n);function n(){var r;E8(this,n);for(var a=arguments.length,i=new Array(a),o=0;o not mounted on DragStart!");var u=s.ownerDocument;if(!(r.props.disabled||!(l.target instanceof u.defaultView.Node)||r.props.handle&&!(0,rt.matchesSelectorAndParentsTo)(l.target,r.props.handle,s)||r.props.cancel&&(0,rt.matchesSelectorAndParentsTo)(l.target,r.props.cancel,s))){l.type==="touchstart"&&l.preventDefault();var c=(0,rt.getTouchIdentifier)(l);r.setState({touchIdentifier:c});var f=(0,Kn.getControlPosition)(l,c,it(r));if(f!=null){var d=f.x,v=f.y,y=(0,Kn.createCoreData)(it(r),d,v);(0,qi.default)("DraggableCore: handleDragStart: %j",y),(0,qi.default)("calling",r.props.onStart);var b=r.props.onStart(l,y);b===!1||r.mounted===!1||(r.props.enableUserSelectHack&&(0,rt.addUserSelectStyles)(u),r.setState({dragging:!0,lastX:d,lastY:v}),(0,rt.addEvent)(u,Qn.move,r.handleDrag),(0,rt.addEvent)(u,Qn.stop,r.handleDragStop))}}}),Bt(it(r),"handleDrag",function(l){var s=(0,Kn.getControlPosition)(l,r.state.touchIdentifier,it(r));if(s!=null){var u=s.x,c=s.y;if(Array.isArray(r.props.grid)){var f=u-r.state.lastX,d=c-r.state.lastY,v=(0,Kn.snapToGrid)(r.props.grid,f,d),y=T1(v,2);if(f=y[0],d=y[1],!f&&!d)return;u=r.state.lastX+f,c=r.state.lastY+d}var b=(0,Kn.createCoreData)(it(r),u,c);(0,qi.default)("DraggableCore: handleDrag: %j",b);var x=r.props.onDrag(l,b);if(x===!1||r.mounted===!1){try{r.handleDragStop(new MouseEvent("mouseup"))}catch{var p=document.createEvent("MouseEvents");p.initMouseEvent("mouseup",!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null),r.handleDragStop(p)}return}r.setState({lastX:u,lastY:c})}}),Bt(it(r),"handleDragStop",function(l){if(r.state.dragging){var s=(0,Kn.getControlPosition)(l,r.state.touchIdentifier,it(r));if(s!=null){var u=s.x,c=s.y;if(Array.isArray(r.props.grid)){var f=u-r.state.lastX||0,d=c-r.state.lastY||0,v=(0,Kn.snapToGrid)(r.props.grid,f,d),y=T1(v,2);f=y[0],d=y[1],u=r.state.lastX+f,c=r.state.lastY+d}var b=(0,Kn.createCoreData)(it(r),u,c),x=r.props.onStop(l,b);if(x===!1||r.mounted===!1)return!1;var p=r.findDOMNode();p&&r.props.enableUserSelectHack&&(0,rt.removeUserSelectStyles)(p.ownerDocument),(0,qi.default)("DraggableCore: handleDragStop: %j",b),r.setState({dragging:!1,lastX:NaN,lastY:NaN}),p&&((0,qi.default)("DraggableCore: Removing handlers"),(0,rt.removeEvent)(p.ownerDocument,Qn.move,r.handleDrag),(0,rt.removeEvent)(p.ownerDocument,Qn.stop,r.handleDragStop))}}}),Bt(it(r),"onMouseDown",function(l){return Qn=Kt.mouse,r.handleDragStart(l)}),Bt(it(r),"onMouseUp",function(l){return Qn=Kt.mouse,r.handleDragStop(l)}),Bt(it(r),"onTouchStart",function(l){return Qn=Kt.touch,r.handleDragStart(l)}),Bt(it(r),"onTouchEnd",function(l){return Qn=Kt.touch,r.handleDragStop(l)}),r}return k8(n,[{key:"componentDidMount",value:function(){this.mounted=!0;var a=this.findDOMNode();a&&(0,rt.addEvent)(a,Kt.touch.start,this.onTouchStart,{passive:!1})}},{key:"componentWillUnmount",value:function(){this.mounted=!1;var a=this.findDOMNode();if(a){var i=a.ownerDocument;(0,rt.removeEvent)(i,Kt.mouse.move,this.handleDrag),(0,rt.removeEvent)(i,Kt.touch.move,this.handleDrag),(0,rt.removeEvent)(i,Kt.mouse.stop,this.handleDragStop),(0,rt.removeEvent)(i,Kt.touch.stop,this.handleDragStop),(0,rt.removeEvent)(a,Kt.touch.start,this.onTouchStart,{passive:!1}),this.props.enableUserSelectHack&&(0,rt.removeUserSelectStyles)(i)}}},{key:"findDOMNode",value:function(){var a,i,o;return(a=this.props)!==null&&a!==void 0&&a.nodeRef?(i=this.props)===null||i===void 0||(o=i.nodeRef)===null||o===void 0?void 0:o.current:w8.default.findDOMNode(this)}},{key:"render",value:function(){return af.cloneElement(af.Children.only(this.props.children),{onMouseDown:this.onMouseDown,onMouseUp:this.onMouseUp,onTouchEnd:this.onTouchEnd})}}]),n}(af.Component);ec.default=nc;Bt(nc,"displayName","DraggableCore");Bt(nc,"propTypes",{allowAnyClick:Tt.default.bool,disabled:Tt.default.bool,enableUserSelectHack:Tt.default.bool,offsetParent:function(t,n){if(t[n]&&t[n].nodeType!==1)throw new Error("Draggable's offsetParent must be a DOM Node.")},grid:Tt.default.arrayOf(Tt.default.number),handle:Tt.default.string,cancel:Tt.default.string,nodeRef:Tt.default.object,onStart:Tt.default.func,onDrag:Tt.default.func,onStop:Tt.default.func,onMouseDown:Tt.default.func,scale:Tt.default.number,className:of.dontSetMe,style:of.dontSetMe,transform:of.dontSetMe});Bt(nc,"defaultProps",{allowAnyClick:!1,disabled:!1,enableUserSelectHack:!0,onStart:function(){},onDrag:function(){},onStop:function(){},onMouseDown:function(){},scale:1});(function(e){function t(_){"@babel/helpers - typeof";return t=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(M){return typeof M}:function(M){return M&&typeof Symbol=="function"&&M.constructor===Symbol&&M!==Symbol.prototype?"symbol":typeof M},t(_)}Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"DraggableCore",{enumerable:!0,get:function(){return u.default}}),e.default=void 0;var n=y(k),r=d(eh),a=d(Kp),i=d(B9),o=De,l=Tn,s=kn,u=d(ec),c=d(tc),f=["axis","bounds","children","defaultPosition","defaultClassName","defaultClassNameDragging","defaultClassNameDragged","position","positionOffset","scale"];function d(_){return _&&_.__esModule?_:{default:_}}function v(_){if(typeof WeakMap!="function")return null;var M=new WeakMap,L=new WeakMap;return(v=function(D){return D?L:M})(_)}function y(_,M){if(!M&&_&&_.__esModule)return _;if(_===null||t(_)!=="object"&&typeof _!="function")return{default:_};var L=v(M);if(L&&L.has(_))return L.get(_);var O={},D=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var Y in _)if(Y!=="default"&&Object.prototype.hasOwnProperty.call(_,Y)){var J=D?Object.getOwnPropertyDescriptor(_,Y):null;J&&(J.get||J.set)?Object.defineProperty(O,Y,J):O[Y]=_[Y]}return O.default=_,L&&L.set(_,O),O}function b(){return b=Object.assign||function(_){for(var M=1;M=0)&&Object.prototype.propertyIsEnumerable.call(_,O)&&(L[O]=_[O])}return L}function p(_,M){if(_==null)return{};var L={},O=Object.keys(_),D,Y;for(Y=0;Y=0)&&(L[D]=_[D]);return L}function g(_,M){var L=Object.keys(_);if(Object.getOwnPropertySymbols){var O=Object.getOwnPropertySymbols(_);M&&(O=O.filter(function(D){return Object.getOwnPropertyDescriptor(_,D).enumerable})),L.push.apply(L,O)}return L}function w(_){for(var M=1;M_.length)&&(M=_.length);for(var L=0,O=new Array(M);L"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function N(_){return N=Object.setPrototypeOf?Object.getPrototypeOf:function(L){return L.__proto__||Object.getPrototypeOf(L)},N(_)}function F(_,M,L){return M in _?Object.defineProperty(_,M,{value:L,enumerable:!0,configurable:!0,writable:!0}):_[M]=L,_}var K=function(_){se(L,_);var M=W(L);function L(O){var D;return U(this,L),D=M.call(this,O),F(G(D),"onDragStart",function(Y,J){(0,c.default)("Draggable: onDragStart: %j",J);var de=D.props.onStart(Y,(0,l.createDraggableData)(G(D),J));if(de===!1)return!1;D.setState({dragging:!0,dragged:!0})}),F(G(D),"onDrag",function(Y,J){if(!D.state.dragging)return!1;(0,c.default)("Draggable: onDrag: %j",J);var de=(0,l.createDraggableData)(G(D),J),ie={x:de.x,y:de.y};if(D.props.bounds){var cn=ie.x,ma=ie.y;ie.x+=D.state.slackX,ie.y+=D.state.slackY;var va=(0,l.getBoundPosition)(G(D),ie.x,ie.y),Pr=S(va,2),_c=Pr[0],_l=Pr[1];ie.x=_c,ie.y=_l,ie.slackX=D.state.slackX+(cn-ie.x),ie.slackY=D.state.slackY+(ma-ie.y),de.x=ie.x,de.y=ie.y,de.deltaX=ie.x-D.state.x,de.deltaY=ie.y-D.state.y}var Cl=D.props.onDrag(Y,de);if(Cl===!1)return!1;D.setState(ie)}),F(G(D),"onDragStop",function(Y,J){if(!D.state.dragging)return!1;var de=D.props.onStop(Y,(0,l.createDraggableData)(G(D),J));if(de===!1)return!1;(0,c.default)("Draggable: onDragStop: %j",J);var ie={dragging:!1,slackX:0,slackY:0},cn=!!D.props.position;if(cn){var ma=D.props.position,va=ma.x,Pr=ma.y;ie.x=va,ie.y=Pr}D.setState(ie)}),D.state={dragging:!1,dragged:!1,x:O.position?O.position.x:O.defaultPosition.x,y:O.position?O.position.y:O.defaultPosition.y,prevPropsPosition:w({},O.position),slackX:0,slackY:0,isElementSVG:!1},O.position&&!(O.onDrag||O.onStop)&&console.warn("A `position` was applied to this , without drag handlers. This will make this component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the `position` of this element."),D}return Be(L,[{key:"componentDidMount",value:function(){typeof window.SVGElement<"u"&&this.findDOMNode()instanceof window.SVGElement&&this.setState({isElementSVG:!0})}},{key:"componentWillUnmount",value:function(){this.setState({dragging:!1})}},{key:"findDOMNode",value:function(){var D,Y,J;return(D=(Y=this.props)===null||Y===void 0||(J=Y.nodeRef)===null||J===void 0?void 0:J.current)!==null&&D!==void 0?D:a.default.findDOMNode(this)}},{key:"render",value:function(){var D,Y=this.props;Y.axis,Y.bounds;var J=Y.children,de=Y.defaultPosition,ie=Y.defaultClassName,cn=Y.defaultClassNameDragging,ma=Y.defaultClassNameDragged,va=Y.position,Pr=Y.positionOffset;Y.scale;var _c=x(Y,f),_l={},Cl=null,Lx=!!va,y0=!Lx||this.state.dragging,w0=va||de,b0={x:(0,l.canDragX)(this)&&y0?this.state.x:w0.x,y:(0,l.canDragY)(this)&&y0?this.state.y:w0.y};this.state.isElementSVG?Cl=(0,o.createSVGTransform)(b0,Pr):_l=(0,o.createCSSTransform)(b0,Pr);var Nx=(0,i.default)(J.props.className||"",ie,(D={},F(D,cn,this.state.dragging),F(D,ma,this.state.dragged),D));return n.createElement(u.default,b({},_c,{onStart:this.onDragStart,onDrag:this.onDrag,onStop:this.onDragStop}),n.cloneElement(n.Children.only(J),{className:Nx,style:w(w({},J.props.style),_l),transform:Cl}))}}],[{key:"getDerivedStateFromProps",value:function(D,Y){var J=D.position,de=Y.prevPropsPosition;return J&&(!de||J.x!==de.x||J.y!==de.y)?((0,c.default)("Draggable: getDerivedStateFromProps %j",{position:J,prevPropsPosition:de}),{x:J.x,y:J.y,prevPropsPosition:w({},J)}):null}}]),L}(n.Component);e.default=K,F(K,"displayName","Draggable"),F(K,"propTypes",w(w({},u.default.propTypes),{},{axis:r.default.oneOf(["both","x","y","none"]),bounds:r.default.oneOfType([r.default.shape({left:r.default.number,right:r.default.number,top:r.default.number,bottom:r.default.number}),r.default.string,r.default.oneOf([!1])]),defaultClassName:r.default.string,defaultClassNameDragging:r.default.string,defaultClassNameDragged:r.default.string,defaultPosition:r.default.shape({x:r.default.number,y:r.default.number}),positionOffset:r.default.shape({x:r.default.oneOfType([r.default.number,r.default.string]),y:r.default.oneOfType([r.default.number,r.default.string])}),position:r.default.shape({x:r.default.number,y:r.default.number}),className:s.dontSetMe,style:s.dontSetMe,transform:s.dontSetMe})),F(K,"defaultProps",w(w({},u.default.defaultProps),{},{axis:"both",bounds:!1,defaultClassName:"react-draggable",defaultClassNameDragging:"react-draggable-dragging",defaultClassNameDragged:"react-draggable-dragged",defaultPosition:{x:0,y:0},scale:1}))})(ib);var gb=ib,mb=gb.default,M8=gb.DraggableCore;Ju.exports=mb;Ju.exports.default=mb;Ju.exports.DraggableCore=M8;var R8=Ju.exports;const A8=ra(R8),P1=e=>{const{streamKey:t,servers:n,draggable:r,onClick:a,className:i}=e,[o,l]=k.useState(0),s=async()=>{const v=await Gt.webrtcRequest(t);if(v.result==="not found")throw new Error("Stream not found!");return v.data},u=()=>{l(Date.now())},c=()=>{Date.now()-o<100&&a()},d=m("div",{className:i,children:m(Ww,{streamKey:t,requestSdp:s,submitSdp:(v,y)=>Gt.webrtcSignal(v,y),servers:n,streamEnabled:!0,videoStreamRendererFactory:I9})});return r&&a?m(A8,{onStart:u,onStop:c,bounds:"parent",children:d}):d};var vb={},rc={},pl={};(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.JoystickShape=void 0,function(t){t.Circle="circle",t.Square="square",t.AxisY="axisY",t.AxisX="axisX"}(e.JoystickShape||(e.JoystickShape={}))})(pl);var ac={};Object.defineProperty(ac,"__esModule",{value:!0});ac.shapeFactory=void 0;var M1=pl,L8=function(e,t){switch(e){case M1.JoystickShape.Square:return{borderRadius:Math.sqrt(t)};case M1.JoystickShape.Circle:default:return{borderRadius:t}}};ac.shapeFactory=L8;var ic={};Object.defineProperty(ic,"__esModule",{value:!0});ic.shapeBoundsFactory=void 0;var lf=pl,N8=function(e,t,n,r,a,i,o,l,s){switch(e){case lf.JoystickShape.Square:return r=Gl(t-s.left-l/2,l),a=Gl(n-s.top-l/2,l),{relativeX:r,relativeY:a};case lf.JoystickShape.AxisX:return r=Gl(t-s.left-l/2,l),a=0,{relativeX:r,relativeY:a};case lf.JoystickShape.AxisY:return r=0,a=Gl(n-s.top-l/2,l),{relativeX:r,relativeY:a};default:return i>o&&(r*=o/i,a*=o/i),{relativeX:r,relativeY:a}}};ic.shapeBoundsFactory=N8;var Gl=function(e,t){var n=t/2;return e>n?n:e<-n?n*-1:e},D8=ir&&ir.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,a){r.__proto__=a}||function(r,a){for(var i in a)Object.prototype.hasOwnProperty.call(a,i)&&(r[i]=a[i])},e(t,n)};return function(t,n){if(typeof n!="function"&&n!==null)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");e(t,n);function r(){this.constructor=t}t.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}(),Qa=ir&&ir.__assign||function(){return Qa=Object.assign||function(e){for(var t,n=1,r=arguments.length;njr.TopRight||njr.BottomRight?"RIGHT":n100?100:r},t.prototype.getBaseShapeStyle=function(){var n=this.props.baseShape||R1.JoystickShape.Circle;return(0,A1.shapeFactory)(n,this._baseSize)},t.prototype.getStickShapeStyle=function(){var n=this.props.stickShape||R1.JoystickShape.Circle;return(0,A1.shapeFactory)(n,this._baseSize)},t.prototype._getBaseStyle=function(){var n=this.props.baseColor!==void 0?this.props.baseColor:"#000033",r="".concat(this._baseSize,"px"),a=Qa(Qa({},this.getBaseShapeStyle()),{height:r,width:r,background:n,display:"flex",justifyContent:"center",alignItems:"center"});return this.props.baseImage&&(a.background="url(".concat(this.props.baseImage,")"),a.backgroundSize="100%"),a},t.prototype._getStickStyle=function(){var n=this.props.stickColor!==void 0?this.props.stickColor:"#3D59AB",r=this._stickSize?"".concat(this._stickSize,"px"):"".concat(this._baseSize/1.5,"px"),a=Qa(Qa({},this.getStickShapeStyle()),{background:n,cursor:"move",height:r,width:r,border:"none",flexShrink:0,touchAction:"none"});return this.props.stickImage&&(a.background="url(".concat(this.props.stickImage,")"),a.backgroundSize="100%"),this.props.pos&&(a=Object.assign({},a,{position:"absolute",transform:"translate3d(".concat(this.props.pos.x*this._baseSize/2,"px, ").concat(-(this.props.pos.y*this._baseSize)/2,"px, 0)")})),this.state.coordinates!==void 0&&(a=Object.assign({},a,{position:"absolute",transform:"translate3d(".concat(this.state.coordinates.relativeX,"px, ").concat(this.state.coordinates.relativeY,"px, 0)")})),a},t.prototype.render=function(){var n=this;this._baseSize=this.props.size||100,this._stickSize=this.props.stickSize,this._radius=this._baseSize/2;var r=this._getBaseStyle(),a=this._getStickStyle();return Xi.createElement("div",{"data-testid":"joystick-base",className:this.props.disabled?"joystick-base-disabled":"",ref:this._baseRef,style:r},Xi.createElement("button",{ref:this._stickRef,disabled:this.props.disabled,onPointerDown:function(i){return n._pointerDown(i)},className:this.props.disabled?"joystick-disabled":"",style:a}))},t}(Xi.Component);rc.Joystick=j8;(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.JoystickShape=e.Joystick=void 0;var t=rc;Object.defineProperty(e,"Joystick",{enumerable:!0,get:function(){return t.Joystick}});var n=pl;Object.defineProperty(e,"JoystickShape",{enumerable:!0,get:function(){return n.JoystickShape}})})(vb);const F8=e=>{const{x:t,y:n,handleMove:r,handleStop:a}=e;return m(vb.Joystick,{size:150,stickSize:100,baseColor:"rgba(200, 200, 200, 0.3)",stickColor:"rgba(200, 200, 200, 0.4)",move:r,stop:a,pos:{x:t,y:n}})},B8=e=>{const{color:t,rotation:n,size:r,opacity:a,onMouseDown:i,onMouseUp:o}=e;return m("span",{onTouchStart:i,onTouchEnd:o,onMouseDown:i,onMouseUp:o,children:z("svg",{version:"1.0",xmlns:"http://www.w3.org/2000/svg",width:r,height:r,viewBox:"0 0 680 680",fill:t,opacity:a,style:{transform:`rotate(${n}deg)`},children:[m("path",{d:"M97 21.7c-7.9 1.3-18.5 5-26.4 9-7.5 3.9-10.9 6.4-19.2 14.7-8.2 8.3-10.8 11.7-14.6 19.1-2.6 5-5.7 12.4-7 16.5l-2.3 7.5-.3 244.5c-.2 170.7.1 246.5.8 251 5.5 33.5 30.4 60 63.5 67.7 7.7 1.7 18.2 1.8 252.5 1.8h244.5l8.5-2.2c33-8.7 57.2-35.6 62-68.8 1.4-10 1.4-479.7-.1-490.2-4.4-32.7-27.4-58.9-60.4-68.9-5.7-1.8-17.2-1.9-252.5-2-135.6-.1-247.6.1-249 .3zm488 41.2c16.5 5.6 29.1 19 33.5 35.8 2.2 8.4 2.3 468.9 0 477.2-4.9 18.5-20.1 33.2-38.3 37-3.8.8-71.7 1.1-237 1.1-255 0-238.1.4-250.3-6.1C82 602.1 71.4 588.5 68 576c-1-3.5-1.3-55.9-1.3-238.5 0-219.9.1-234.4 1.7-240 2.2-7.5 3.8-10.7 8.8-17.3 7.7-10.4 20.8-17.7 33.8-19 3.6-.4 110.2-.6 237-.6l230.5.1 6.5 2.2z"}),m("path",{d:"M338.3 218.9c-1.7.5-4.9 1.9-7 3.2-2.1 1.3-47.7 46.5-101.4 100.4C150.6 402 132 421.2 131 424.4c-.7 2.1-1 6.4-.8 9.6 1.1 15.5 16 25.3 30.9 20.5 5.1-1.6 9.6-6 93.9-90.1l88.5-88.4 87.5 87.6c49.6 49.6 89.1 88.4 91.2 89.5 9.6 5 19.5 3.3 27.4-4.5 7.8-7.9 9.5-17.8 4.5-27.4-2.9-5.4-196.7-198.7-201.1-200.6-4.8-1.9-10.8-2.6-14.7-1.7z"})]})})},z8={ArrowUp:0,ArrowLeft:270,ArrowDown:180,ArrowRight:90},Yl=e=>{const{name:t,keys:n,handler:r}=e;return m("span",{className:"clickable",children:m(B8,{color:"#FFFFFF",size:70,rotation:z8[t]||0,opacity:n[t]?.4:.2,onMouseDown:()=>r(t,!0),onMouseUp:()=>r(t,!1)})})},U8=e=>{const{keys:t,handler:n}=e;return z("div",{className:"flex flex-col centered",children:[m(Yl,{name:"ArrowUp",keys:t,handler:n}),z("div",{className:"flex flex-row",children:[m(Yl,{name:"ArrowLeft",keys:t,handler:n}),m(Yl,{name:"ArrowDown",keys:t,handler:n}),m(Yl,{name:"ArrowRight",keys:t,handler:n})]})]})},Zl={ArrowUp:{x:0,y:1},ArrowDown:{x:0,y:-1},ArrowLeft:{x:-1,y:0},ArrowRight:{x:1,y:0}},H8=e=>{const{front:t,type:n}=e,[r,a]=k.useState(0),[i,o]=k.useState(0),[l,s]=k.useState({ArrowUp:!1,ArrowLeft:!1,ArrowDown:!1,ArrowRight:!1}),u=d=>{a(d.x),o(d.y)},c=()=>{a(0),o(0)},f=(d,v)=>{d in Zl&&v!==l[d]&&s(y=>({...y,[d]:v}))};return k.useEffect(()=>{const d=y=>f(y.key,!0),v=y=>f(y.key,!1);return window.addEventListener("keydown",d),window.addEventListener("keyup",v),()=>{window.removeEventListener("keydown",d),window.removeEventListener("keyup",v)}}),k.useEffect(()=>{let d=0,v=0;for(const y in Zl)l[y]&&(d+=Zl[y].x,v+=Zl[y].y);a(d),o(v)},[l]),k.useEffect(()=>{const d=t?1:-1,v=i*2*d,y=-r*5,b=()=>{(Math.abs(v)>.1||Math.abs(y)>.1)&&Gt.notify("cmd_vel",{linear:v,angular:y})};if(r===0&&i===0)Gt.notify("cmd_vel",{linear:0,angular:0}),setTimeout(()=>{Gt.notify("cmd_vel",{linear:0,angular:0})},100);else{b();const x=setInterval(b,30);return()=>{clearInterval(x)}}},[r,i,t]),m("div",{className:"controller",children:n==="joystick"?m(F8,{x:r,y:i,handleMove:u,handleStop:c}):m(U8,{keys:l,handler:f})})},W8=e=>m("svg",{"data-icon":!0,viewBox:"0 0 17 4",fill:"none",...e,children:m("path",{fill:"currentColor",stroke:"currentColor",strokeLinecap:"round",strokeWidth:"3",d:"M2.49 2h.01m6 0h.01m5.99 0h.01"})}),oc=({value:e,options:t,onValueChange:n})=>m("div",{"data-is":"button-select",children:t.map((r,a)=>m(Dt,{className:e===r.value?"ButtonSelect-selected":"",onClick:()=>n(r.value),title:r.label,children:r.label},`ButtonSelect-Button-${a}`))});Object.assign(oc,{displayName:"ButtonSelect"});var Ht={},hl={},V8=typeof ir=="object"&&ir&&ir.Object===Object&&ir,yb=V8,G8=yb,Y8=typeof self=="object"&&self&&self.Object===Object&&self,Z8=G8||Y8||Function("return this")(),On=Z8,q8=On,X8=q8.Symbol,gl=X8,L1=gl,wb=Object.prototype,K8=wb.hasOwnProperty,Q8=wb.toString,Ki=L1?L1.toStringTag:void 0;function J8(e){var t=K8.call(e,Ki),n=e[Ki];try{e[Ki]=void 0;var r=!0}catch{}var a=Q8.call(e);return r&&(t?e[Ki]=n:delete e[Ki]),a}var eE=J8,tE=Object.prototype,nE=tE.toString;function rE(e){return nE.call(e)}var aE=rE,N1=gl,iE=eE,oE=aE,lE="[object Null]",sE="[object Undefined]",D1=N1?N1.toStringTag:void 0;function uE(e){return e==null?e===void 0?sE:lE:D1&&D1 in Object(e)?iE(e):oE(e)}var ua=uE,cE=Array.isArray,sn=cE;function fE(e){return e!=null&&typeof e=="object"}var Gn=fE,dE=ua,pE=sn,hE=Gn,gE="[object String]";function mE(e){return typeof e=="string"||!pE(e)&&hE(e)&&dE(e)==gE}var vE=mE;function yE(e){return function(t,n,r){for(var a=-1,i=Object(t),o=r(t),l=o.length;l--;){var s=o[e?l:++a];if(n(i[s],s,i)===!1)break}return t}}var wE=yE,bE=wE,xE=bE(),SE=xE;function _E(e,t){for(var n=-1,r=Array(e);++n-1&&e%1==0&&e-1&&e%1==0&&e<=FE}var dh=BE,zE=ua,UE=dh,HE=Gn,WE="[object Arguments]",VE="[object Array]",GE="[object Boolean]",YE="[object Date]",ZE="[object Error]",qE="[object Function]",XE="[object Map]",KE="[object Number]",QE="[object Object]",JE="[object RegExp]",ek="[object Set]",tk="[object String]",nk="[object WeakMap]",rk="[object ArrayBuffer]",ak="[object DataView]",ik="[object Float32Array]",ok="[object Float64Array]",lk="[object Int8Array]",sk="[object Int16Array]",uk="[object Int32Array]",ck="[object Uint8Array]",fk="[object Uint8ClampedArray]",dk="[object Uint16Array]",pk="[object Uint32Array]",Ce={};Ce[ik]=Ce[ok]=Ce[lk]=Ce[sk]=Ce[uk]=Ce[ck]=Ce[fk]=Ce[dk]=Ce[pk]=!0;Ce[WE]=Ce[VE]=Ce[rk]=Ce[GE]=Ce[ak]=Ce[YE]=Ce[ZE]=Ce[qE]=Ce[XE]=Ce[KE]=Ce[QE]=Ce[JE]=Ce[ek]=Ce[tk]=Ce[nk]=!1;function hk(e){return HE(e)&&UE(e.length)&&!!Ce[zE(e)]}var gk=hk;function mk(e){return function(t){return e(t)}}var ph=mk,gu={exports:{}};gu.exports;(function(e,t){var n=yb,r=t&&!t.nodeType&&t,a=r&&!0&&e&&!e.nodeType&&e,i=a&&a.exports===r,o=i&&n.process,l=function(){try{var s=a&&a.require&&a.require("util").types;return s||o&&o.binding&&o.binding("util")}catch{}}();e.exports=l})(gu,gu.exports);var hh=gu.exports,vk=gk,yk=ph,j1=hh,F1=j1&&j1.isTypedArray,wk=F1?yk(F1):vk,_b=wk,bk=CE,xk=xb,Sk=sn,_k=fh,Ck=Sb,Ek=_b,kk=Object.prototype,Tk=kk.hasOwnProperty;function Ok(e,t){var n=Sk(e),r=!n&&xk(e),a=!n&&!r&&_k(e),i=!n&&!r&&!a&&Ek(e),o=n||r||a||i,l=o?bk(e.length,String):[],s=l.length;for(var u in e)(t||Tk.call(e,u))&&!(o&&(u=="length"||a&&(u=="offset"||u=="parent")||i&&(u=="buffer"||u=="byteLength"||u=="byteOffset")||Ck(u,s)))&&l.push(u);return l}var Cb=Ok,$k=Object.prototype;function Pk(e){var t=e&&e.constructor,n=typeof t=="function"&&t.prototype||$k;return e===n}var gh=Pk;function Mk(e,t){return function(n){return e(t(n))}}var Eb=Mk,Rk=Eb,Ak=Rk(Object.keys,Object),Lk=Ak,Nk=gh,Dk=Lk,Ik=Object.prototype,jk=Ik.hasOwnProperty;function Fk(e){if(!Nk(e))return Dk(e);var t=[];for(var n in Object(e))jk.call(e,n)&&n!="constructor"&&t.push(n);return t}var Bk=Fk;function zk(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}var Ei=zk,Uk=ua,Hk=Ei,Wk="[object AsyncFunction]",Vk="[object Function]",Gk="[object GeneratorFunction]",Yk="[object Proxy]";function Zk(e){if(!Hk(e))return!1;var t=Uk(e);return t==Vk||t==Gk||t==Wk||t==Yk}var kb=Zk,qk=kb,Xk=dh;function Kk(e){return e!=null&&Xk(e.length)&&!qk(e)}var lc=Kk,Qk=Cb,Jk=Bk,eT=lc;function tT(e){return eT(e)?Qk(e):Jk(e)}var ml=tT,nT=SE,rT=ml;function aT(e,t){return e&&nT(e,t,rT)}var Tb=aT;function iT(e){return e}var Ob=iT,oT=Ob;function lT(e){return typeof e=="function"?e:oT}var sT=lT,uT=Tb,cT=sT;function fT(e,t){return e&&uT(e,cT(t))}var mh=fT,dT=Eb,pT=dT(Object.getPrototypeOf,Object),vh=pT,hT=ua,gT=vh,mT=Gn,vT="[object Object]",yT=Function.prototype,wT=Object.prototype,$b=yT.toString,bT=wT.hasOwnProperty,xT=$b.call(Object);function ST(e){if(!mT(e)||hT(e)!=vT)return!1;var t=gT(e);if(t===null)return!0;var n=bT.call(t,"constructor")&&t.constructor;return typeof n=="function"&&n instanceof n&&$b.call(n)==xT}var _T=ST;function CT(e,t){for(var n=-1,r=e==null?0:e.length,a=Array(r);++n-1}var BT=FT,zT=sc;function UT(e,t){var n=this.__data__,r=zT(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this}var HT=UT,WT=kT,VT=LT,GT=IT,YT=BT,ZT=HT;function ki(e){var t=-1,n=e==null?0:e.length;for(this.clear();++tl))return!1;var u=i.get(e),c=i.get(t);if(u&&c)return u==t&&c==e;var f=-1,d=!0,v=n&oP?new nP:void 0;for(i.set(e,t),i.set(t,e);++f0&&arguments[0]!==void 0?arguments[0]:[],n=[];return(0,XA.default)(t,function(r){Array.isArray(r)?e(r).map(function(a){return n.push(a)}):(0,ZA.default)(r)?(0,GA.default)(r,function(a,i){a===!0&&n.push(i),n.push(i+"-"+a)}):(0,WA.default)(r)&&n.push(r)}),n};hl.default=KA;var vl={};function QA(e,t){for(var n=-1,r=e==null?0:e.length;++n1&&arguments[1]!==void 0?arguments[1]:[],r=t.default&&(0,yI.default)(t.default)||{};return n.map(function(a){var i=t[a];return i&&(0,mI.default)(i,function(o,l){r[l]||(r[l]={}),r[l]=wI({},r[l],i[l])}),a}),r};vl.default=bI;var yl={};Object.defineProperty(yl,"__esModule",{value:!0});yl.autoprefix=void 0;var xI=mh,wm=_I(xI),SI=Object.assign||function(e){for(var t=1;t1&&arguments[1]!==void 0?arguments[1]:"span";return function(r){PI(a,r);function a(){var i,o,l,s;$I(this,a);for(var u=arguments.length,c=Array(u),f=0;f1&&arguments[1]!==void 0?arguments[1]:"span";return function(r){DI(a,r);function a(){var i,o,l,s;NI(this,a);for(var u=arguments.length,c=Array(u),f=0;f1&&arguments[1]!==void 0?arguments[1]:!0;r[o]=l};return t===0&&a("first-child"),t===n-1&&a("last-child"),(t===0||t%2===0)&&a("even"),Math.abs(t%2)===1&&a("odd"),a("nth-child",t),r};Oh.default=jI;Object.defineProperty(Ht,"__esModule",{value:!0});Ht.ReactCSS=Ht.loop=Ht.handleActive=$h=Ht.handleHover=Ht.hover=void 0;var FI=hl,BI=Mi(FI),zI=vl,UI=Mi(zI),HI=yl,WI=Mi(HI),VI=wl,ex=Mi(VI),GI=bl,YI=Mi(GI),ZI=Oh,qI=Mi(ZI);function Mi(e){return e&&e.__esModule?e:{default:e}}Ht.hover=ex.default;var $h=Ht.handleHover=ex.default;Ht.handleActive=YI.default;Ht.loop=qI.default;var XI=Ht.ReactCSS=function(t){for(var n=arguments.length,r=Array(n>1?n-1:0),a=1;al?d=1:d=Math.round(f*100/l)/100,n.a!==d)return{h:n.h,s:n.s,l:n.l,a:d,source:"rgb"}}else{var v=void 0;if(c<0?v=0:c>o?v=1:v=Math.round(c*100/o)/100,a!==v)return{h:n.h,s:n.s,l:n.l,a:v,source:"rgb"}}return null},pf={},QI=function(t,n,r,a){if(typeof document>"u"&&!a)return null;var i=a?new a:document.createElement("canvas");i.width=r*2,i.height=r*2;var o=i.getContext("2d");return o?(o.fillStyle=t,o.fillRect(0,0,i.width,i.height),o.fillStyle=n,o.fillRect(0,0,r,r),o.translate(r,r),o.fillRect(0,0,r,r),i.toDataURL()):null},JI=function(t,n,r,a){var i=t+"-"+n+"-"+r+(a?"-server":"");if(pf[i])return pf[i];var o=QI(t,n,r,a);return pf[i]=o,o},Sm=Object.assign||function(e){for(var t=1;t-1},pj=function(t){return Number(String(t).replace(/%/g,""))},hj=1,le=function(e){sj(t,e);function t(n){oj(this,t);var r=lj(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return r.handleBlur=function(){r.state.blurValue&&r.setState({value:r.state.blurValue,blurValue:null})},r.handleChange=function(a){r.setUpdatedValue(a.target.value,a)},r.handleKeyDown=function(a){var i=pj(a.target.value);if(!isNaN(i)&&dj(a.keyCode)){var o=r.getArrowOffset(),l=a.keyCode===tx?i+o:i-o;r.setUpdatedValue(l,a)}},r.handleDrag=function(a){if(r.props.dragLabel){var i=Math.round(r.props.value+a.movementX);i>=0&&i<=r.props.dragMax&&r.props.onChange&&r.props.onChange(r.getValueObjectWithLabel(i),a)}},r.handleMouseDown=function(a){r.props.dragLabel&&(a.preventDefault(),r.handleDrag(a),window.addEventListener("mousemove",r.handleDrag),window.addEventListener("mouseup",r.handleMouseUp))},r.handleMouseUp=function(){r.unbindEventListeners()},r.unbindEventListeners=function(){window.removeEventListener("mousemove",r.handleDrag),window.removeEventListener("mouseup",r.handleMouseUp)},r.state={value:String(n.value).toUpperCase(),blurValue:String(n.value).toUpperCase()},r.inputId="rc-editable-input-"+hj++,r}return aj(t,[{key:"componentDidUpdate",value:function(r,a){this.props.value!==this.state.value&&(r.value!==this.props.value||a.value!==this.state.value)&&(this.input===document.activeElement?this.setState({blurValue:String(this.props.value).toUpperCase()}):this.setState({value:String(this.props.value).toUpperCase(),blurValue:!this.state.blurValue&&String(this.props.value).toUpperCase()}))}},{key:"componentWillUnmount",value:function(){this.unbindEventListeners()}},{key:"getValueObjectWithLabel",value:function(r){return ij({},this.props.label,r)}},{key:"getArrowOffset",value:function(){return this.props.arrowOffset||uj}},{key:"setUpdatedValue",value:function(r,a){var i=this.props.label?this.getValueObjectWithLabel(r):r;this.props.onChange&&this.props.onChange(i,a),this.setState({value:r})}},{key:"render",value:function(){var r=this,a=te({default:{wrap:{position:"relative"}},"user-override":{wrap:this.props.style&&this.props.style.wrap?this.props.style.wrap:{},input:this.props.style&&this.props.style.input?this.props.style.input:{},label:this.props.style&&this.props.style.label?this.props.style.label:{}},"dragLabel-true":{label:{cursor:"ew-resize"}}},{"user-override":!0},this.props);return h.createElement("div",{style:a.wrap},h.createElement("input",{id:this.inputId,style:a.input,ref:function(o){return r.input=o},value:this.state.value,onKeyDown:this.handleKeyDown,onChange:this.handleChange,onBlur:this.handleBlur,placeholder:this.props.placeholder,spellCheck:"false"}),this.props.label&&!this.props.hideLabel?h.createElement("label",{htmlFor:this.inputId,style:a.label,onMouseDown:this.handleMouseDown},this.props.label):null)}}]),t}(k.PureComponent||k.Component),gj=function(t,n,r,a){var i=a.clientWidth,o=a.clientHeight,l=typeof t.pageX=="number"?t.pageX:t.touches[0].pageX,s=typeof t.pageY=="number"?t.pageY:t.touches[0].pageY,u=l-(a.getBoundingClientRect().left+window.pageXOffset),c=s-(a.getBoundingClientRect().top+window.pageYOffset);if(n==="vertical"){var f=void 0;if(c<0)f=359;else if(c>o)f=0;else{var d=-(c*100/o)+100;f=360*d/100}if(r.h!==f)return{h:f,s:r.s,l:r.l,a:r.a,source:"hsl"}}else{var v=void 0;if(u<0)v=0;else if(u>i)v=359;else{var y=u*100/i;v=360*y/100}if(r.h!==v)return{h:v,s:r.s,l:r.l,a:r.a,source:"hsl"}}return null},mj=function(){function e(t,n){for(var r=0;r-1}function Ej(e,t){var n=this.__data__,r=mc(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this}function Yn(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t-1&&e%1==0&&e<=VF}function Li(e){return e!=null&&Lh(e.length)&&!Mh(e)}function GF(e){return _r(e)&&Li(e)}function YF(){return!1}var ux=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Rm=ux&&typeof module=="object"&&module&&!module.nodeType&&module,ZF=Rm&&Rm.exports===ux,Am=ZF?un.Buffer:void 0,qF=Am?Am.isBuffer:void 0,XF=qF||YF;const xu=XF;var KF="[object Object]",QF=Function.prototype,JF=Object.prototype,cx=QF.toString,eB=JF.hasOwnProperty,tB=cx.call(Object);function nB(e){if(!_r(e)||fa(e)!=KF)return!1;var t=lx(e);if(t===null)return!0;var n=eB.call(t,"constructor")&&t.constructor;return typeof n=="function"&&n instanceof n&&cx.call(n)==tB}var rB="[object Arguments]",aB="[object Array]",iB="[object Boolean]",oB="[object Date]",lB="[object Error]",sB="[object Function]",uB="[object Map]",cB="[object Number]",fB="[object Object]",dB="[object RegExp]",pB="[object Set]",hB="[object String]",gB="[object WeakMap]",mB="[object ArrayBuffer]",vB="[object DataView]",yB="[object Float32Array]",wB="[object Float64Array]",bB="[object Int8Array]",xB="[object Int16Array]",SB="[object Int32Array]",_B="[object Uint8Array]",CB="[object Uint8ClampedArray]",EB="[object Uint16Array]",kB="[object Uint32Array]",Ee={};Ee[yB]=Ee[wB]=Ee[bB]=Ee[xB]=Ee[SB]=Ee[_B]=Ee[CB]=Ee[EB]=Ee[kB]=!0;Ee[rB]=Ee[aB]=Ee[mB]=Ee[iB]=Ee[vB]=Ee[oB]=Ee[lB]=Ee[sB]=Ee[uB]=Ee[cB]=Ee[fB]=Ee[dB]=Ee[pB]=Ee[hB]=Ee[gB]=!1;function TB(e){return _r(e)&&Lh(e.length)&&!!Ee[fa(e)]}function OB(e){return function(t){return e(t)}}var fx=typeof exports=="object"&&exports&&!exports.nodeType&&exports,To=fx&&typeof module=="object"&&module&&!module.nodeType&&module,$B=To&&To.exports===fx,gf=$B&&nx.process,PB=function(){try{var e=To&&To.require&&To.require("util").types;return e||gf&&gf.binding&&gf.binding("util")}catch{}}();const Lm=PB;var Nm=Lm&&Lm.isTypedArray,MB=Nm?OB(Nm):TB;const Nh=MB;function Gd(e,t){if(!(t==="constructor"&&typeof e[t]=="function")&&t!="__proto__")return e[t]}var RB=Object.prototype,AB=RB.hasOwnProperty;function LB(e,t,n){var r=e[t];(!(AB.call(e,t)&&xl(r,n))||n===void 0&&!(t in e))&&Rh(e,t,n)}function NB(e,t,n,r){var a=!n;n||(n={});for(var i=-1,o=t.length;++i-1&&e%1==0&&e0){if(++t>=QB)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}var nz=tz(KB);const rz=nz;function az(e,t){return rz(ZB(e,t,yc),e+"")}function iz(e,t,n){if(!qt(n))return!1;var r=typeof t;return(r=="number"?Li(n)&&Dh(t,n.length):r=="string"&&t in n)?xl(n[t],e):!1}function oz(e){return az(function(t,n){var r=-1,a=n.length,i=a>1?n[a-1]:void 0,o=a>2?n[2]:void 0;for(i=e.length>3&&typeof i=="function"?(a--,i):void 0,o&&iz(n[0],n[1],o)&&(i=a<3?void 0:i,a=1),t=Object(t);++r=t||C<0||f&&$>=i}function p(){var T=mf();if(x(T))return g(T);l=setTimeout(p,b(T))}function g(T){return l=void 0,d&&r?v(T):(r=a=void 0,o)}function w(){l!==void 0&&clearTimeout(l),u=0,r=s=a=l=void 0}function S(){return l===void 0?o:g(mf())}function E(){var T=mf(),C=x(T);if(r=arguments,a=this,s=T,C){if(l===void 0)return y(s);if(f)return clearTimeout(l),l=setTimeout(p,t),v(s)}return l===void 0&&(l=setTimeout(p,t)),o}return E.cancel=w,E.flush=S,E}var xz="Expected a function";function Sz(e,t,n){var r=!0,a=!0;if(typeof e!="function")throw new TypeError(xz);return qt(n)&&(r="leading"in n?!!n.leading:r,a="trailing"in n?!!n.trailing:a),gx(e,t,{leading:r,maxWait:t,trailing:a})}var _z=function(t,n,r){var a=r.getBoundingClientRect(),i=a.width,o=a.height,l=typeof t.pageX=="number"?t.pageX:t.touches[0].pageX,s=typeof t.pageY=="number"?t.pageY:t.touches[0].pageY,u=l-(r.getBoundingClientRect().left+window.pageXOffset),c=s-(r.getBoundingClientRect().top+window.pageYOffset);u<0?u=0:u>i&&(u=i),c<0?c=0:c>o&&(c=o);var f=u/i,d=1-c/o;return{h:n.h,s:f,v:d,a:n.a,source:"hsv"}},Cz=function(){function e(t,n){for(var r=0;r=0,i=!n&&a&&(t==="hex"||t==="hex6"||t==="hex3"||t==="hex4"||t==="hex8"||t==="name");return i?t==="name"&&this._a===0?this.toName():this.toRgbString():(t==="rgb"&&(r=this.toRgbString()),t==="prgb"&&(r=this.toPercentageRgbString()),(t==="hex"||t==="hex6")&&(r=this.toHexString()),t==="hex3"&&(r=this.toHexString(!0)),t==="hex4"&&(r=this.toHex8String(!0)),t==="hex8"&&(r=this.toHex8String()),t==="name"&&(r=this.toName()),t==="hsl"&&(r=this.toHslString()),t==="hsv"&&(r=this.toHsvString()),r||this.toHexString())},clone:function(){return Z(this.toString())},_applyModification:function(t,n){var r=t.apply(null,[this].concat([].slice.call(n)));return this._r=r._r,this._g=r._g,this._b=r._b,this.setAlpha(r._a),this},lighten:function(){return this._applyModification(qz,arguments)},brighten:function(){return this._applyModification(Xz,arguments)},darken:function(){return this._applyModification(Kz,arguments)},desaturate:function(){return this._applyModification(Gz,arguments)},saturate:function(){return this._applyModification(Yz,arguments)},greyscale:function(){return this._applyModification(Zz,arguments)},spin:function(){return this._applyModification(Qz,arguments)},_applyCombination:function(t,n){return t.apply(null,[this].concat([].slice.call(n)))},analogous:function(){return this._applyCombination(tU,arguments)},complement:function(){return this._applyCombination(Jz,arguments)},monochromatic:function(){return this._applyCombination(nU,arguments)},splitcomplement:function(){return this._applyCombination(eU,arguments)},triad:function(){return this._applyCombination(Hm,[3])},tetrad:function(){return this._applyCombination(Hm,[4])}};Z.fromRatio=function(e,t){if(Su(e)=="object"){var n={};for(var r in e)e.hasOwnProperty(r)&&(r==="a"?n[r]=e[r]:n[r]=io(e[r]));e=n}return Z(e,t)};function zz(e){var t={r:0,g:0,b:0},n=1,r=null,a=null,i=null,o=!1,l=!1;return typeof e=="string"&&(e=lU(e)),Su(e)=="object"&&(Pn(e.r)&&Pn(e.g)&&Pn(e.b)?(t=Uz(e.r,e.g,e.b),o=!0,l=String(e.r).substr(-1)==="%"?"prgb":"rgb"):Pn(e.h)&&Pn(e.s)&&Pn(e.v)?(r=io(e.s),a=io(e.v),t=Wz(e.h,r,a),o=!0,l="hsv"):Pn(e.h)&&Pn(e.s)&&Pn(e.l)&&(r=io(e.s),i=io(e.l),t=Hz(e.h,r,i),o=!0,l="hsl"),e.hasOwnProperty("a")&&(n=e.a)),n=vx(n),{ok:o,format:e.format||l,r:Math.min(255,Math.max(t.r,0)),g:Math.min(255,Math.max(t.g,0)),b:Math.min(255,Math.max(t.b,0)),a:n}}function Uz(e,t,n){return{r:$e(e,255)*255,g:$e(t,255)*255,b:$e(n,255)*255}}function Fm(e,t,n){e=$e(e,255),t=$e(t,255),n=$e(n,255);var r=Math.max(e,t,n),a=Math.min(e,t,n),i,o,l=(r+a)/2;if(r==a)i=o=0;else{var s=r-a;switch(o=l>.5?s/(2-r-a):s/(r+a),r){case e:i=(t-n)/s+(t1&&(f-=1),f<1/6?u+(c-u)*6*f:f<1/2?c:f<2/3?u+(c-u)*(2/3-f)*6:u}if(t===0)r=a=i=n;else{var l=n<.5?n*(1+t):n+t-n*t,s=2*n-l;r=o(s,l,e+1/3),a=o(s,l,e),i=o(s,l,e-1/3)}return{r:r*255,g:a*255,b:i*255}}function Bm(e,t,n){e=$e(e,255),t=$e(t,255),n=$e(n,255);var r=Math.max(e,t,n),a=Math.min(e,t,n),i,o,l=r,s=r-a;if(o=r===0?0:s/r,r==a)i=0;else{switch(r){case e:i=(t-n)/s+(t>1)+720)%360;--t;)r.h=(r.h+a)%360,i.push(Z(r));return i}function nU(e,t){t=t||6;for(var n=Z(e).toHsv(),r=n.h,a=n.s,i=n.v,o=[],l=1/t;t--;)o.push(Z({h:r,s:a,v:i})),i=(i+l)%1;return o}Z.mix=function(e,t,n){n=n===0?0:n||50;var r=Z(e).toRgb(),a=Z(t).toRgb(),i=n/100,o={r:(a.r-r.r)*i+r.r,g:(a.g-r.g)*i+r.g,b:(a.b-r.b)*i+r.b,a:(a.a-r.a)*i+r.a};return Z(o)};Z.readability=function(e,t){var n=Z(e),r=Z(t);return(Math.max(n.getLuminance(),r.getLuminance())+.05)/(Math.min(n.getLuminance(),r.getLuminance())+.05)};Z.isReadable=function(e,t,n){var r=Z.readability(e,t),a,i;switch(i=!1,a=sU(n),a.level+a.size){case"AAsmall":case"AAAlarge":i=r>=4.5;break;case"AAlarge":i=r>=3;break;case"AAAsmall":i=r>=7;break}return i};Z.mostReadable=function(e,t,n){var r=null,a=0,i,o,l,s;n=n||{},o=n.includeFallbackColors,l=n.level,s=n.size;for(var u=0;ua&&(a=i,r=Z(t[u]));return Z.isReadable(e,r,{level:l,size:s})||!o?r:(n.includeFallbackColors=!1,Z.mostReadable(e,["#fff","#000"],n))};var Yd=Z.names={aliceblue:"f0f8ff",antiquewhite:"faebd7",aqua:"0ff",aquamarine:"7fffd4",azure:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"000",blanchedalmond:"ffebcd",blue:"00f",blueviolet:"8a2be2",brown:"a52a2a",burlywood:"deb887",burntsienna:"ea7e5d",cadetblue:"5f9ea0",chartreuse:"7fff00",chocolate:"d2691e",coral:"ff7f50",cornflowerblue:"6495ed",cornsilk:"fff8dc",crimson:"dc143c",cyan:"0ff",darkblue:"00008b",darkcyan:"008b8b",darkgoldenrod:"b8860b",darkgray:"a9a9a9",darkgreen:"006400",darkgrey:"a9a9a9",darkkhaki:"bdb76b",darkmagenta:"8b008b",darkolivegreen:"556b2f",darkorange:"ff8c00",darkorchid:"9932cc",darkred:"8b0000",darksalmon:"e9967a",darkseagreen:"8fbc8f",darkslateblue:"483d8b",darkslategray:"2f4f4f",darkslategrey:"2f4f4f",darkturquoise:"00ced1",darkviolet:"9400d3",deeppink:"ff1493",deepskyblue:"00bfff",dimgray:"696969",dimgrey:"696969",dodgerblue:"1e90ff",firebrick:"b22222",floralwhite:"fffaf0",forestgreen:"228b22",fuchsia:"f0f",gainsboro:"dcdcdc",ghostwhite:"f8f8ff",gold:"ffd700",goldenrod:"daa520",gray:"808080",green:"008000",greenyellow:"adff2f",grey:"808080",honeydew:"f0fff0",hotpink:"ff69b4",indianred:"cd5c5c",indigo:"4b0082",ivory:"fffff0",khaki:"f0e68c",lavender:"e6e6fa",lavenderblush:"fff0f5",lawngreen:"7cfc00",lemonchiffon:"fffacd",lightblue:"add8e6",lightcoral:"f08080",lightcyan:"e0ffff",lightgoldenrodyellow:"fafad2",lightgray:"d3d3d3",lightgreen:"90ee90",lightgrey:"d3d3d3",lightpink:"ffb6c1",lightsalmon:"ffa07a",lightseagreen:"20b2aa",lightskyblue:"87cefa",lightslategray:"789",lightslategrey:"789",lightsteelblue:"b0c4de",lightyellow:"ffffe0",lime:"0f0",limegreen:"32cd32",linen:"faf0e6",magenta:"f0f",maroon:"800000",mediumaquamarine:"66cdaa",mediumblue:"0000cd",mediumorchid:"ba55d3",mediumpurple:"9370db",mediumseagreen:"3cb371",mediumslateblue:"7b68ee",mediumspringgreen:"00fa9a",mediumturquoise:"48d1cc",mediumvioletred:"c71585",midnightblue:"191970",mintcream:"f5fffa",mistyrose:"ffe4e1",moccasin:"ffe4b5",navajowhite:"ffdead",navy:"000080",oldlace:"fdf5e6",olive:"808000",olivedrab:"6b8e23",orange:"ffa500",orangered:"ff4500",orchid:"da70d6",palegoldenrod:"eee8aa",palegreen:"98fb98",paleturquoise:"afeeee",palevioletred:"db7093",papayawhip:"ffefd5",peachpuff:"ffdab9",peru:"cd853f",pink:"ffc0cb",plum:"dda0dd",powderblue:"b0e0e6",purple:"800080",rebeccapurple:"663399",red:"f00",rosybrown:"bc8f8f",royalblue:"4169e1",saddlebrown:"8b4513",salmon:"fa8072",sandybrown:"f4a460",seagreen:"2e8b57",seashell:"fff5ee",sienna:"a0522d",silver:"c0c0c0",skyblue:"87ceeb",slateblue:"6a5acd",slategray:"708090",slategrey:"708090",snow:"fffafa",springgreen:"00ff7f",steelblue:"4682b4",tan:"d2b48c",teal:"008080",thistle:"d8bfd8",tomato:"ff6347",turquoise:"40e0d0",violet:"ee82ee",wheat:"f5deb3",white:"fff",whitesmoke:"f5f5f5",yellow:"ff0",yellowgreen:"9acd32"},rU=Z.hexNames=aU(Yd);function aU(e){var t={};for(var n in e)e.hasOwnProperty(n)&&(t[e[n]]=n);return t}function vx(e){return e=parseFloat(e),(isNaN(e)||e<0||e>1)&&(e=1),e}function $e(e,t){iU(e)&&(e="100%");var n=oU(e);return e=Math.min(t,Math.max(0,parseFloat(e))),n&&(e=parseInt(e*t,10)/100),Math.abs(e-t)<1e-6?1:e%t/parseFloat(t)}function xc(e){return Math.min(1,Math.max(0,e))}function $t(e){return parseInt(e,16)}function iU(e){return typeof e=="string"&&e.indexOf(".")!=-1&&parseFloat(e)===1}function oU(e){return typeof e=="string"&&e.indexOf("%")!=-1}function rn(e){return e.length==1?"0"+e:""+e}function io(e){return e<=1&&(e=e*100+"%"),e}function yx(e){return Math.round(parseFloat(e)*255).toString(16)}function Wm(e){return $t(e)/255}var Qt=function(){var e="[-\\+]?\\d+%?",t="[-\\+]?\\d*\\.\\d+%?",n="(?:"+t+")|(?:"+e+")",r="[\\s|\\(]+("+n+")[,|\\s]+("+n+")[,|\\s]+("+n+")\\s*\\)?",a="[\\s|\\(]+("+n+")[,|\\s]+("+n+")[,|\\s]+("+n+")[,|\\s]+("+n+")\\s*\\)?";return{CSS_UNIT:new RegExp(n),rgb:new RegExp("rgb"+r),rgba:new RegExp("rgba"+a),hsl:new RegExp("hsl"+r),hsla:new RegExp("hsla"+a),hsv:new RegExp("hsv"+r),hsva:new RegExp("hsva"+a),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/}}();function Pn(e){return!!Qt.CSS_UNIT.exec(e)}function lU(e){e=e.replace(Fz,"").replace(Bz,"").toLowerCase();var t=!1;if(Yd[e])e=Yd[e],t=!0;else if(e=="transparent")return{r:0,g:0,b:0,a:0,format:"name"};var n;return(n=Qt.rgb.exec(e))?{r:n[1],g:n[2],b:n[3]}:(n=Qt.rgba.exec(e))?{r:n[1],g:n[2],b:n[3],a:n[4]}:(n=Qt.hsl.exec(e))?{h:n[1],s:n[2],l:n[3]}:(n=Qt.hsla.exec(e))?{h:n[1],s:n[2],l:n[3],a:n[4]}:(n=Qt.hsv.exec(e))?{h:n[1],s:n[2],v:n[3]}:(n=Qt.hsva.exec(e))?{h:n[1],s:n[2],v:n[3],a:n[4]}:(n=Qt.hex8.exec(e))?{r:$t(n[1]),g:$t(n[2]),b:$t(n[3]),a:Wm(n[4]),format:t?"name":"hex8"}:(n=Qt.hex6.exec(e))?{r:$t(n[1]),g:$t(n[2]),b:$t(n[3]),format:t?"name":"hex"}:(n=Qt.hex4.exec(e))?{r:$t(n[1]+""+n[1]),g:$t(n[2]+""+n[2]),b:$t(n[3]+""+n[3]),a:Wm(n[4]+""+n[4]),format:t?"name":"hex8"}:(n=Qt.hex3.exec(e))?{r:$t(n[1]+""+n[1]),g:$t(n[2]+""+n[2]),b:$t(n[3]+""+n[3]),format:t?"name":"hex"}:!1}function sU(e){var t,n;return e=e||{level:"AA",size:"small"},t=(e.level||"AA").toUpperCase(),n=(e.size||"small").toLowerCase(),t!=="AA"&&t!=="AAA"&&(t="AA"),n!=="small"&&n!=="large"&&(n="small"),{level:t,size:n}}var Vm=function(t){var n=["r","g","b","a","h","s","l","v"],r=0,a=0;return jz(n,function(i){if(t[i]&&(r+=1,isNaN(t[i])||(a+=1),i==="s"||i==="l")){var o=/^\d+%$/;o.test(t[i])&&(a+=1)}}),r===a?t:!1},oo=function(t,n){var r=t.hex?Z(t.hex):Z(t),a=r.toHsl(),i=r.toHsv(),o=r.toRgb(),l=r.toHex();a.s===0&&(a.h=n||0,i.h=n||0);var s=l==="000000"&&o.a===0;return{hsl:a,hex:s?"transparent":"#"+l,rgb:o,hsv:i,oldHue:t.h||n||a.h,source:t.source}},$r=function(t){if(t==="transparent")return!0;var n=String(t).charAt(0)==="#"?1:0;return t.length!==4+n&&t.length<7+n&&Z(t).isValid()},jh=function(t){if(!t)return"#fff";var n=oo(t);if(n.hex==="transparent")return"rgba(0,0,0,0.4)";var r=(n.rgb.r*299+n.rgb.g*587+n.rgb.b*114)/1e3;return r>=128?"#000":"#fff"},vf=function(t,n){var r=t.replace("°","");return Z(n+" ("+r+")")._ok},Ji=Object.assign||function(e){for(var t=1;t1&&arguments[1]!==void 0?arguments[1]:"span";return function(r){mU(a,r);function a(){var i,o,l,s;gU(this,a);for(var u=arguments.length,c=Array(u),f=0;fl))return!1;var u=i.get(e),c=i.get(t);if(u&&c)return u==t&&c==e;var f=-1,d=!0,v=n&OU?new _u:void 0;for(i.set(e,t),i.set(t,e);++f=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}var Kl=24,XH=$x.default=function(e){var t=e.fill,n=t===void 0?"currentColor":t,r=e.width,a=r===void 0?Kl:r,i=e.height,o=i===void 0?Kl:i,l=e.style,s=l===void 0?{}:l,u=qH(e,["fill","width","height","style"]);return cv.default.createElement("svg",uv({viewBox:"0 0 "+Kl+" "+Kl,style:uv({fill:n,width:a,height:o},s)},u),cv.default.createElement("path",{d:"M12,18.17L8.83,15L7.42,16.41L12,21L16.59,16.41L15.17,15M12,5.83L15.17,9L16.58,7.59L12,3L7.41,7.59L8.83,9L12,5.83Z"}))},KH=function(){function e(t,n){for(var r=0;r1&&(a.a=1),r.props.onChange({h:r.props.hsl.h,s:r.props.hsl.s,l:r.props.hsl.l,a:Math.round(a.a*100)/100,source:"rgb"},i)):(a.h||a.s||a.l)&&(typeof a.s=="string"&&a.s.includes("%")&&(a.s=a.s.replace("%","")),typeof a.l=="string"&&a.l.includes("%")&&(a.l=a.l.replace("%","")),a.s==1?a.s=.01:a.l==1&&(a.l=.01),r.props.onChange({h:a.h||r.props.hsl.h,s:Number(sv(a.s)?r.props.hsl.s:a.s),l:Number(sv(a.l)?r.props.hsl.l:a.l),source:"hsl"},i))},r.showHighlight=function(a){a.currentTarget.style.background="#eee"},r.hideHighlight=function(a){a.currentTarget.style.background="transparent"},n.hsl.a!==1&&n.view==="hex"?r.state={view:"rgb"}:r.state={view:n.view},r}return KH(t,[{key:"render",value:function(){var r=this,a=te({default:{wrap:{paddingTop:"16px",display:"flex"},fields:{flex:"1",display:"flex",marginLeft:"-6px"},field:{paddingLeft:"6px",width:"100%"},alpha:{paddingLeft:"6px",width:"100%"},toggle:{width:"32px",textAlign:"right",position:"relative"},icon:{marginRight:"-4px",marginTop:"12px",cursor:"pointer",position:"relative"},iconHighlight:{position:"absolute",width:"24px",height:"28px",background:"#eee",borderRadius:"4px",top:"10px",left:"12px",display:"none"},input:{fontSize:"11px",color:"#333",width:"100%",borderRadius:"2px",border:"none",boxShadow:"inset 0 0 0 1px #dadada",height:"21px",textAlign:"center"},label:{textTransform:"uppercase",fontSize:"11px",lineHeight:"11px",color:"#969696",textAlign:"center",display:"block",marginTop:"12px"},svg:{fill:"#333",width:"24px",height:"24px",border:"1px transparent solid",borderRadius:"5px"}},disableAlpha:{alpha:{display:"none"}}},this.props,this.state),i=void 0;return this.state.view==="hex"?i=h.createElement("div",{style:a.fields,className:"flexbox-fix"},h.createElement("div",{style:a.field},h.createElement(le,{style:{input:a.input,label:a.label},label:"hex",value:this.props.hex,onChange:this.handleChange}))):this.state.view==="rgb"?i=h.createElement("div",{style:a.fields,className:"flexbox-fix"},h.createElement("div",{style:a.field},h.createElement(le,{style:{input:a.input,label:a.label},label:"r",value:this.props.rgb.r,onChange:this.handleChange})),h.createElement("div",{style:a.field},h.createElement(le,{style:{input:a.input,label:a.label},label:"g",value:this.props.rgb.g,onChange:this.handleChange})),h.createElement("div",{style:a.field},h.createElement(le,{style:{input:a.input,label:a.label},label:"b",value:this.props.rgb.b,onChange:this.handleChange})),h.createElement("div",{style:a.alpha},h.createElement(le,{style:{input:a.input,label:a.label},label:"a",value:this.props.rgb.a,arrowOffset:.01,onChange:this.handleChange}))):this.state.view==="hsl"&&(i=h.createElement("div",{style:a.fields,className:"flexbox-fix"},h.createElement("div",{style:a.field},h.createElement(le,{style:{input:a.input,label:a.label},label:"h",value:Math.round(this.props.hsl.h),onChange:this.handleChange})),h.createElement("div",{style:a.field},h.createElement(le,{style:{input:a.input,label:a.label},label:"s",value:Math.round(this.props.hsl.s*100)+"%",onChange:this.handleChange})),h.createElement("div",{style:a.field},h.createElement(le,{style:{input:a.input,label:a.label},label:"l",value:Math.round(this.props.hsl.l*100)+"%",onChange:this.handleChange})),h.createElement("div",{style:a.alpha},h.createElement(le,{style:{input:a.input,label:a.label},label:"a",value:this.props.hsl.a,arrowOffset:.01,onChange:this.handleChange})))),h.createElement("div",{style:a.wrap,className:"flexbox-fix"},i,h.createElement("div",{style:a.toggle},h.createElement("div",{style:a.icon,onClick:this.toggleViews,ref:function(l){return r.icon=l}},h.createElement(XH,{style:a.svg,onMouseOver:this.showHighlight,onMouseEnter:this.showHighlight,onMouseOut:this.hideHighlight}))))}}],[{key:"getDerivedStateFromProps",value:function(r,a){return r.hsl.a!==1&&a.view==="hex"?{view:"rgb"}:null}}]),t}(h.Component);Px.defaultProps={view:"hex"};var fv=function(){var t=te({default:{picker:{width:"12px",height:"12px",borderRadius:"6px",transform:"translate(-6px, -1px)",backgroundColor:"rgb(248, 248, 248)",boxShadow:"0 1px 4px 0 rgba(0, 0, 0, 0.37)"}}});return h.createElement("div",{style:t.picker})},tW=function(){var t=te({default:{picker:{width:"12px",height:"12px",borderRadius:"6px",boxShadow:"inset 0 0 0 1px #fff",transform:"translate(-6px, -6px)"}}});return h.createElement("div",{style:t.picker})},Wh=function(t){var n=t.width,r=t.onChange,a=t.disableAlpha,i=t.rgb,o=t.hsl,l=t.hsv,s=t.hex,u=t.renderers,c=t.styles,f=c===void 0?{}:c,d=t.className,v=d===void 0?"":d,y=t.defaultView,b=te(Et({default:{picker:{width:n,background:"#fff",borderRadius:"2px",boxShadow:"0 0 2px rgba(0,0,0,.3), 0 4px 8px rgba(0,0,0,.3)",boxSizing:"initial",fontFamily:"Menlo"},saturation:{width:"100%",paddingBottom:"55%",position:"relative",borderRadius:"2px 2px 0 0",overflow:"hidden"},Saturation:{radius:"2px 2px 0 0"},body:{padding:"16px 16px 12px"},controls:{display:"flex"},color:{width:"32px"},swatch:{marginTop:"6px",width:"16px",height:"16px",borderRadius:"8px",position:"relative",overflow:"hidden"},active:{absolute:"0px 0px 0px 0px",borderRadius:"8px",boxShadow:"inset 0 0 0 1px rgba(0,0,0,.1)",background:"rgba("+i.r+", "+i.g+", "+i.b+", "+i.a+")",zIndex:"2"},toggles:{flex:"1"},hue:{height:"10px",position:"relative",marginBottom:"8px"},Hue:{radius:"2px"},alpha:{height:"10px",position:"relative"},Alpha:{radius:"2px"}},disableAlpha:{color:{width:"22px"},alpha:{display:"none"},hue:{marginBottom:"0px"},swatch:{width:"10px",height:"10px",marginTop:"0px"}}},f),{disableAlpha:a});return h.createElement("div",{style:b.picker,className:"chrome-picker "+v},h.createElement("div",{style:b.saturation},h.createElement(bc,{style:b.Saturation,hsl:o,hsv:l,pointer:tW,onChange:r})),h.createElement("div",{style:b.body},h.createElement("div",{style:b.controls,className:"flexbox-fix"},h.createElement("div",{style:b.color},h.createElement("div",{style:b.swatch},h.createElement("div",{style:b.active}),h.createElement(Ri,{renderers:u}))),h.createElement("div",{style:b.toggles},h.createElement("div",{style:b.hue},h.createElement(Ai,{style:b.Hue,hsl:o,pointer:fv,onChange:r})),h.createElement("div",{style:b.alpha},h.createElement(Ph,{style:b.Alpha,rgb:i,hsl:o,pointer:fv,renderers:u,onChange:r})))),h.createElement(Px,{rgb:i,hsl:o,hex:s,view:y,onChange:r,disableAlpha:a})))};Wh.propTypes={width:R.oneOfType([R.string,R.number]),disableAlpha:R.bool,styles:R.object,defaultView:R.oneOf(["hex","rgb","hsl"])};Wh.defaultProps={width:225,disableAlpha:!1,styles:{}};kt(Wh);var nW=function(t){var n=t.color,r=t.onClick,a=r===void 0?function(){}:r,i=t.onSwatchHover,o=t.active,l=te({default:{color:{background:n,width:"15px",height:"15px",float:"left",marginRight:"5px",marginBottom:"5px",position:"relative",cursor:"pointer"},dot:{absolute:"5px 5px 5px 5px",background:jh(n),borderRadius:"50%",opacity:"0"}},active:{dot:{opacity:"1"}},"color-#FFFFFF":{color:{boxShadow:"inset 0 0 0 1px #ddd"},dot:{background:"#000"}},transparent:{dot:{background:"#000"}}},{active:o,"color-#FFFFFF":n==="#FFFFFF",transparent:n==="transparent"});return h.createElement(ha,{style:l.color,color:n,onClick:a,onHover:i,focusStyle:{boxShadow:"0 0 4px "+n}},h.createElement("div",{style:l.dot}))},rW=function(t){var n=t.hex,r=t.rgb,a=t.onChange,i=te({default:{fields:{display:"flex",paddingBottom:"6px",paddingRight:"5px",position:"relative"},active:{position:"absolute",top:"6px",left:"5px",height:"9px",width:"9px",background:n},HEXwrap:{flex:"6",position:"relative"},HEXinput:{width:"80%",padding:"0px",paddingLeft:"20%",border:"none",outline:"none",background:"none",fontSize:"12px",color:"#333",height:"16px"},HEXlabel:{display:"none"},RGBwrap:{flex:"3",position:"relative"},RGBinput:{width:"70%",padding:"0px",paddingLeft:"30%",border:"none",outline:"none",background:"none",fontSize:"12px",color:"#333",height:"16px"},RGBlabel:{position:"absolute",top:"3px",left:"0px",lineHeight:"16px",textTransform:"uppercase",fontSize:"12px",color:"#999"}}}),o=function(s,u){s.r||s.g||s.b?a({r:s.r||r.r,g:s.g||r.g,b:s.b||r.b,source:"rgb"},u):a({hex:s.hex,source:"hex"},u)};return h.createElement("div",{style:i.fields,className:"flexbox-fix"},h.createElement("div",{style:i.active}),h.createElement(le,{style:{wrap:i.HEXwrap,input:i.HEXinput,label:i.HEXlabel},label:"hex",value:n,onChange:o}),h.createElement(le,{style:{wrap:i.RGBwrap,input:i.RGBinput,label:i.RGBlabel},label:"r",value:r.r,onChange:o}),h.createElement(le,{style:{wrap:i.RGBwrap,input:i.RGBinput,label:i.RGBlabel},label:"g",value:r.g,onChange:o}),h.createElement(le,{style:{wrap:i.RGBwrap,input:i.RGBinput,label:i.RGBlabel},label:"b",value:r.b,onChange:o}))},Vh=function(t){var n=t.onChange,r=t.onSwatchHover,a=t.colors,i=t.hex,o=t.rgb,l=t.styles,s=l===void 0?{}:l,u=t.className,c=u===void 0?"":u,f=te(Et({default:{Compact:{background:"#f6f6f6",radius:"4px"},compact:{paddingTop:"5px",paddingLeft:"5px",boxSizing:"initial",width:"240px"},clear:{clear:"both"}}},s)),d=function(y,b){y.hex?$r(y.hex)&&n({hex:y.hex,source:"hex"},b):n(y,b)};return h.createElement(Sl,{style:f.Compact,styles:s},h.createElement("div",{style:f.compact,className:"compact-picker "+c},h.createElement("div",null,ga(a,function(v){return h.createElement(nW,{key:v,color:v,active:v.toLowerCase()===i,onClick:d,onSwatchHover:r})}),h.createElement("div",{style:f.clear})),h.createElement(rW,{hex:i,rgb:o,onChange:d})))};Vh.propTypes={colors:R.arrayOf(R.string),styles:R.object};Vh.defaultProps={colors:["#4D4D4D","#999999","#FFFFFF","#F44E3B","#FE9200","#FCDC00","#DBDF00","#A4DD00","#68CCCA","#73D8FF","#AEA1FF","#FDA1FF","#333333","#808080","#cccccc","#D33115","#E27300","#FCC400","#B0BC00","#68BC00","#16A5A5","#009CE0","#7B64FF","#FA28FF","#000000","#666666","#B3B3B3","#9F0500","#C45100","#FB9E00","#808900","#194D33","#0C797D","#0062B1","#653294","#AB149E"],styles:{}};kt(Vh);var aW=function(t){var n=t.hover,r=t.color,a=t.onClick,i=t.onSwatchHover,o={position:"relative",zIndex:"2",outline:"2px solid #fff",boxShadow:"0 0 5px 2px rgba(0,0,0,0.25)"},l=te({default:{swatch:{width:"25px",height:"25px",fontSize:"0"}},hover:{swatch:o}},{hover:n});return h.createElement("div",{style:l.swatch},h.createElement(ha,{color:r,onClick:a,onHover:i,focusStyle:o}))};const iW=$h(aW);var Gh=function(t){var n=t.width,r=t.colors,a=t.onChange,i=t.onSwatchHover,o=t.triangle,l=t.styles,s=l===void 0?{}:l,u=t.className,c=u===void 0?"":u,f=te(Et({default:{card:{width:n,background:"#fff",border:"1px solid rgba(0,0,0,0.2)",boxShadow:"0 3px 12px rgba(0,0,0,0.15)",borderRadius:"4px",position:"relative",padding:"5px",display:"flex",flexWrap:"wrap"},triangle:{position:"absolute",border:"7px solid transparent",borderBottomColor:"#fff"},triangleShadow:{position:"absolute",border:"8px solid transparent",borderBottomColor:"rgba(0,0,0,0.15)"}},"hide-triangle":{triangle:{display:"none"},triangleShadow:{display:"none"}},"top-left-triangle":{triangle:{top:"-14px",left:"10px"},triangleShadow:{top:"-16px",left:"9px"}},"top-right-triangle":{triangle:{top:"-14px",right:"10px"},triangleShadow:{top:"-16px",right:"9px"}},"bottom-left-triangle":{triangle:{top:"35px",left:"10px",transform:"rotate(180deg)"},triangleShadow:{top:"37px",left:"9px",transform:"rotate(180deg)"}},"bottom-right-triangle":{triangle:{top:"35px",right:"10px",transform:"rotate(180deg)"},triangleShadow:{top:"37px",right:"9px",transform:"rotate(180deg)"}}},s),{"hide-triangle":o==="hide","top-left-triangle":o==="top-left","top-right-triangle":o==="top-right","bottom-left-triangle":o==="bottom-left","bottom-right-triangle":o==="bottom-right"}),d=function(y,b){return a({hex:y,source:"hex"},b)};return h.createElement("div",{style:f.card,className:"github-picker "+c},h.createElement("div",{style:f.triangleShadow}),h.createElement("div",{style:f.triangle}),ga(r,function(v){return h.createElement(iW,{color:v,key:v,onClick:d,onSwatchHover:i})}))};Gh.propTypes={width:R.oneOfType([R.string,R.number]),colors:R.arrayOf(R.string),triangle:R.oneOf(["hide","top-left","top-right","bottom-left","bottom-right"]),styles:R.object};Gh.defaultProps={width:200,colors:["#B80000","#DB3E00","#FCCB00","#008B02","#006B76","#1273DE","#004DCF","#5300EB","#EB9694","#FAD0C3","#FEF3BD","#C1E1C5","#BEDADC","#C4DEF6","#BED3F3","#D4C4FB"],triangle:"top-left",styles:{}};kt(Gh);var oW=function(t){var n=t.direction,r=te({default:{picker:{width:"18px",height:"18px",borderRadius:"50%",transform:"translate(-9px, -1px)",backgroundColor:"rgb(248, 248, 248)",boxShadow:"0 1px 4px 0 rgba(0, 0, 0, 0.37)"}},vertical:{picker:{transform:"translate(-3px, -9px)"}}},{vertical:n==="vertical"});return h.createElement("div",{style:r.picker})},lW=Object.assign||function(e){for(var t=1;t.5});return h.createElement("div",{style:r.picker})},fW=function(){var t=te({default:{triangle:{width:0,height:0,borderStyle:"solid",borderWidth:"4px 0 4px 6px",borderColor:"transparent transparent transparent #fff",position:"absolute",top:"1px",left:"1px"},triangleBorder:{width:0,height:0,borderStyle:"solid",borderWidth:"5px 0 5px 8px",borderColor:"transparent transparent transparent #555"},left:{Extend:"triangleBorder",transform:"translate(-13px, -4px)"},leftInside:{Extend:"triangle",transform:"translate(-8px, -5px)"},right:{Extend:"triangleBorder",transform:"translate(20px, -14px) rotate(180deg)"},rightInside:{Extend:"triangle",transform:"translate(-8px, -5px)"}}});return h.createElement("div",{style:t.pointer},h.createElement("div",{style:t.left},h.createElement("div",{style:t.leftInside})),h.createElement("div",{style:t.right},h.createElement("div",{style:t.rightInside})))},dv=function(t){var n=t.onClick,r=t.label,a=t.children,i=t.active,o=te({default:{button:{backgroundImage:"linear-gradient(-180deg, #FFFFFF 0%, #E6E6E6 100%)",border:"1px solid #878787",borderRadius:"2px",height:"20px",boxShadow:"0 1px 0 0 #EAEAEA",fontSize:"14px",color:"#000",lineHeight:"20px",textAlign:"center",marginBottom:"10px",cursor:"pointer"}},active:{button:{boxShadow:"0 0 0 1px #878787"}}},{active:i});return h.createElement("div",{style:o.button,onClick:n},r||a)},dW=function(t){var n=t.rgb,r=t.currentColor,a=te({default:{swatches:{border:"1px solid #B3B3B3",borderBottom:"1px solid #F0F0F0",marginBottom:"2px",marginTop:"1px"},new:{height:"34px",background:"rgb("+n.r+","+n.g+", "+n.b+")",boxShadow:"inset 1px 0 0 #000, inset -1px 0 0 #000, inset 0 1px 0 #000"},current:{height:"34px",background:r,boxShadow:"inset 1px 0 0 #000, inset -1px 0 0 #000, inset 0 -1px 0 #000"},label:{fontSize:"14px",color:"#000",textAlign:"center"}}});return h.createElement("div",null,h.createElement("div",{style:a.label},"new"),h.createElement("div",{style:a.swatches},h.createElement("div",{style:a.new}),h.createElement("div",{style:a.current})),h.createElement("div",{style:a.label},"current"))},pW=function(){function e(t,n){for(var r=0;r100&&(c.a=100),c.a/=100,n({h:a.h,s:a.s,l:a.l,a:c.a,source:"rgb"},f))};return h.createElement("div",{style:l.fields,className:"flexbox-fix"},h.createElement("div",{style:l.double},h.createElement(le,{style:{input:l.input,label:l.label},label:"hex",value:i.replace("#",""),onChange:s})),h.createElement("div",{style:l.single},h.createElement(le,{style:{input:l.input,label:l.label},label:"r",value:r.r,onChange:s,dragLabel:"true",dragMax:"255"})),h.createElement("div",{style:l.single},h.createElement(le,{style:{input:l.input,label:l.label},label:"g",value:r.g,onChange:s,dragLabel:"true",dragMax:"255"})),h.createElement("div",{style:l.single},h.createElement(le,{style:{input:l.input,label:l.label},label:"b",value:r.b,onChange:s,dragLabel:"true",dragMax:"255"})),h.createElement("div",{style:l.alpha},h.createElement(le,{style:{input:l.input,label:l.label},label:"a",value:Math.round(r.a*100),onChange:s,dragLabel:"true",dragMax:"100"})))},yW=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}var Ql=24,EW=Rx.default=function(e){var t=e.fill,n=t===void 0?"currentColor":t,r=e.width,a=r===void 0?Ql:r,i=e.height,o=i===void 0?Ql:i,l=e.style,s=l===void 0?{}:l,u=CW(e,["fill","width","height","style"]);return hv.default.createElement("svg",pv({viewBox:"0 0 "+Ql+" "+Ql,style:pv({fill:n,width:a,height:o},s)},u),hv.default.createElement("path",{d:"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"}))},kW=function(t){var n=t.color,r=t.onClick,a=r===void 0?function(){}:r,i=t.onSwatchHover,o=t.first,l=t.last,s=t.active,u=te({default:{color:{width:"40px",height:"24px",cursor:"pointer",background:n,marginBottom:"1px"},check:{color:jh(n),marginLeft:"8px",display:"none"}},first:{color:{overflow:"hidden",borderRadius:"2px 2px 0 0"}},last:{color:{overflow:"hidden",borderRadius:"0 0 2px 2px"}},active:{check:{display:"block"}},"color-#FFFFFF":{color:{boxShadow:"inset 0 0 0 1px #ddd"},check:{color:"#333"}},transparent:{check:{color:"#333"}}},{first:o,last:l,active:s,"color-#FFFFFF":n==="#FFFFFF",transparent:n==="transparent"});return h.createElement(ha,{color:n,style:u.color,onClick:a,onHover:i,focusStyle:{boxShadow:"0 0 4px "+n}},h.createElement("div",{style:u.check},h.createElement(EW,null)))},TW=function(t){var n=t.onClick,r=t.onSwatchHover,a=t.group,i=t.active,o=te({default:{group:{paddingBottom:"10px",width:"40px",float:"left",marginRight:"10px"}}});return h.createElement("div",{style:o.group},ga(a,function(l,s){return h.createElement(kW,{key:l,color:l,active:l.toLowerCase()===i,first:s===0,last:s===a.length-1,onClick:n,onSwatchHover:r})}))},Kh=function(t){var n=t.width,r=t.height,a=t.onChange,i=t.onSwatchHover,o=t.colors,l=t.hex,s=t.styles,u=s===void 0?{}:s,c=t.className,f=c===void 0?"":c,d=te(Et({default:{picker:{width:n,height:r},overflow:{height:r,overflowY:"scroll"},body:{padding:"16px 0 6px 16px"},clear:{clear:"both"}}},u)),v=function(b,x){return a({hex:b,source:"hex"},x)};return h.createElement("div",{style:d.picker,className:"swatches-picker "+f},h.createElement(Sl,null,h.createElement("div",{style:d.overflow},h.createElement("div",{style:d.body},ga(o,function(y){return h.createElement(TW,{key:y.toString(),group:y,active:l,onClick:v,onSwatchHover:i})}),h.createElement("div",{style:d.clear})))))};Kh.propTypes={width:R.oneOfType([R.string,R.number]),height:R.oneOfType([R.string,R.number]),colors:R.arrayOf(R.arrayOf(R.string)),styles:R.object};Kh.defaultProps={width:320,height:240,colors:[[Sa[900],Sa[700],Sa[500],Sa[300],Sa[100]],[_a[900],_a[700],_a[500],_a[300],_a[100]],[Ca[900],Ca[700],Ca[500],Ca[300],Ca[100]],[Ea[900],Ea[700],Ea[500],Ea[300],Ea[100]],[ka[900],ka[700],ka[500],ka[300],ka[100]],[Ta[900],Ta[700],Ta[500],Ta[300],Ta[100]],[Oa[900],Oa[700],Oa[500],Oa[300],Oa[100]],[$a[900],$a[700],$a[500],$a[300],$a[100]],[Pa[900],Pa[700],Pa[500],Pa[300],Pa[100]],["#194D33",lo[700],lo[500],lo[300],lo[100]],[Ma[900],Ma[700],Ma[500],Ma[300],Ma[100]],[Ra[900],Ra[700],Ra[500],Ra[300],Ra[100]],[Aa[900],Aa[700],Aa[500],Aa[300],Aa[100]],[La[900],La[700],La[500],La[300],La[100]],[Na[900],Na[700],Na[500],Na[300],Na[100]],[Da[900],Da[700],Da[500],Da[300],Da[100]],[Ia[900],Ia[700],Ia[500],Ia[300],Ia[100]],[ja[900],ja[700],ja[500],ja[300],ja[100]],["#000000","#525252","#969696","#D9D9D9","#FFFFFF"]],styles:{}};kt(Kh);var Qh=function(t){var n=t.onChange,r=t.onSwatchHover,a=t.hex,i=t.colors,o=t.width,l=t.triangle,s=t.styles,u=s===void 0?{}:s,c=t.className,f=c===void 0?"":c,d=te(Et({default:{card:{width:o,background:"#fff",border:"0 solid rgba(0,0,0,0.25)",boxShadow:"0 1px 4px rgba(0,0,0,0.25)",borderRadius:"4px",position:"relative"},body:{padding:"15px 9px 9px 15px"},label:{fontSize:"18px",color:"#fff"},triangle:{width:"0px",height:"0px",borderStyle:"solid",borderWidth:"0 9px 10px 9px",borderColor:"transparent transparent #fff transparent",position:"absolute"},triangleShadow:{width:"0px",height:"0px",borderStyle:"solid",borderWidth:"0 9px 10px 9px",borderColor:"transparent transparent rgba(0,0,0,.1) transparent",position:"absolute"},hash:{background:"#F0F0F0",height:"30px",width:"30px",borderRadius:"4px 0 0 4px",float:"left",color:"#98A1A4",display:"flex",alignItems:"center",justifyContent:"center"},input:{width:"100px",fontSize:"14px",color:"#666",border:"0px",outline:"none",height:"28px",boxShadow:"inset 0 0 0 1px #F0F0F0",boxSizing:"content-box",borderRadius:"0 4px 4px 0",float:"left",paddingLeft:"8px"},swatch:{width:"30px",height:"30px",float:"left",borderRadius:"4px",margin:"0 6px 6px 0"},clear:{clear:"both"}},"hide-triangle":{triangle:{display:"none"},triangleShadow:{display:"none"}},"top-left-triangle":{triangle:{top:"-10px",left:"12px"},triangleShadow:{top:"-11px",left:"12px"}},"top-right-triangle":{triangle:{top:"-10px",right:"12px"},triangleShadow:{top:"-11px",right:"12px"}}},u),{"hide-triangle":l==="hide","top-left-triangle":l==="top-left","top-right-triangle":l==="top-right"}),v=function(b,x){$r(b)&&n({hex:b,source:"hex"},x)};return h.createElement("div",{style:d.card,className:"twitter-picker "+f},h.createElement("div",{style:d.triangleShadow}),h.createElement("div",{style:d.triangle}),h.createElement("div",{style:d.body},ga(i,function(y,b){return h.createElement(ha,{key:b,color:y,hex:y,style:d.swatch,onClick:v,onHover:r,focusStyle:{boxShadow:"0 0 4px "+y}})}),h.createElement("div",{style:d.hash},"#"),h.createElement(le,{label:null,style:{input:d.input},value:a.replace("#",""),onChange:v}),h.createElement("div",{style:d.clear})))};Qh.propTypes={width:R.oneOfType([R.string,R.number]),triangle:R.oneOf(["hide","top-left","top-right"]),colors:R.arrayOf(R.string),styles:R.object};Qh.defaultProps={width:276,colors:["#FF6900","#FCB900","#7BDCB5","#00D084","#8ED1FC","#0693E3","#ABB8C3","#EB144C","#F78DA7","#9900EF"],triangle:"top-left",styles:{}};kt(Qh);var Jh=function(t){var n=te({default:{picker:{width:"20px",height:"20px",borderRadius:"22px",border:"2px #fff solid",transform:"translate(-12px, -13px)",background:"hsl("+Math.round(t.hsl.h)+", "+Math.round(t.hsl.s*100)+"%, "+Math.round(t.hsl.l*100)+"%)"}}});return h.createElement("div",{style:n.picker})};Jh.propTypes={hsl:R.shape({h:R.number,s:R.number,l:R.number,a:R.number})};Jh.defaultProps={hsl:{a:1,h:249.94,l:.2,s:.5}};var e0=function(t){var n=te({default:{picker:{width:"20px",height:"20px",borderRadius:"22px",transform:"translate(-10px, -7px)",background:"hsl("+Math.round(t.hsl.h)+", 100%, 50%)",border:"2px white solid"}}});return h.createElement("div",{style:n.picker})};e0.propTypes={hsl:R.shape({h:R.number,s:R.number,l:R.number,a:R.number})};e0.defaultProps={hsl:{a:1,h:249.94,l:.2,s:.5}};var OW=function(t){var n=t.onChange,r=t.rgb,a=t.hsl,i=t.hex,o=t.hsv,l=function(v,y){if(v.hex)$r(v.hex)&&n({hex:v.hex,source:"hex"},y);else if(v.rgb){var b=v.rgb.split(",");vf(v.rgb,"rgb")&&n({r:b[0],g:b[1],b:b[2],a:1,source:"rgb"},y)}else if(v.hsv){var x=v.hsv.split(",");vf(v.hsv,"hsv")&&(x[2]=x[2].replace("%",""),x[1]=x[1].replace("%",""),x[0]=x[0].replace("°",""),x[1]==1?x[1]=.01:x[2]==1&&(x[2]=.01),n({h:Number(x[0]),s:Number(x[1]),v:Number(x[2]),source:"hsv"},y))}else if(v.hsl){var p=v.hsl.split(",");vf(v.hsl,"hsl")&&(p[2]=p[2].replace("%",""),p[1]=p[1].replace("%",""),p[0]=p[0].replace("°",""),f[1]==1?f[1]=.01:f[2]==1&&(f[2]=.01),n({h:Number(p[0]),s:Number(p[1]),v:Number(p[2]),source:"hsl"},y))}},s=te({default:{wrap:{display:"flex",height:"100px",marginTop:"4px"},fields:{width:"100%"},column:{paddingTop:"10px",display:"flex",justifyContent:"space-between"},double:{padding:"0px 4.4px",boxSizing:"border-box"},input:{width:"100%",height:"38px",boxSizing:"border-box",padding:"4px 10% 3px",textAlign:"center",border:"1px solid #dadce0",fontSize:"11px",textTransform:"lowercase",borderRadius:"5px",outline:"none",fontFamily:"Roboto,Arial,sans-serif"},input2:{height:"38px",width:"100%",border:"1px solid #dadce0",boxSizing:"border-box",fontSize:"11px",textTransform:"lowercase",borderRadius:"5px",outline:"none",paddingLeft:"10px",fontFamily:"Roboto,Arial,sans-serif"},label:{textAlign:"center",fontSize:"12px",background:"#fff",position:"absolute",textTransform:"uppercase",color:"#3c4043",width:"35px",top:"-6px",left:"0",right:"0",marginLeft:"auto",marginRight:"auto",fontFamily:"Roboto,Arial,sans-serif"},label2:{left:"10px",textAlign:"center",fontSize:"12px",background:"#fff",position:"absolute",textTransform:"uppercase",color:"#3c4043",width:"32px",top:"-6px",fontFamily:"Roboto,Arial,sans-serif"},single:{flexGrow:"1",margin:"0px 4.4px"}}}),u=r.r+", "+r.g+", "+r.b,c=Math.round(a.h)+"°, "+Math.round(a.s*100)+"%, "+Math.round(a.l*100)+"%",f=Math.round(o.h)+"°, "+Math.round(o.s*100)+"%, "+Math.round(o.v*100)+"%";return h.createElement("div",{style:s.wrap,className:"flexbox-fix"},h.createElement("div",{style:s.fields},h.createElement("div",{style:s.double},h.createElement(le,{style:{input:s.input,label:s.label},label:"hex",value:i,onChange:l})),h.createElement("div",{style:s.column},h.createElement("div",{style:s.single},h.createElement(le,{style:{input:s.input2,label:s.label2},label:"rgb",value:u,onChange:l})),h.createElement("div",{style:s.single},h.createElement(le,{style:{input:s.input2,label:s.label2},label:"hsv",value:f,onChange:l})),h.createElement("div",{style:s.single},h.createElement(le,{style:{input:s.input2,label:s.label2},label:"hsl",value:c,onChange:l})))))},t0=function(t){var n=t.width,r=t.onChange,a=t.rgb,i=t.hsl,o=t.hsv,l=t.hex,s=t.header,u=t.styles,c=u===void 0?{}:u,f=t.className,d=f===void 0?"":f,v=te(Et({default:{picker:{width:n,background:"#fff",border:"1px solid #dfe1e5",boxSizing:"initial",display:"flex",flexWrap:"wrap",borderRadius:"8px 8px 0px 0px"},head:{height:"57px",width:"100%",paddingTop:"16px",paddingBottom:"16px",paddingLeft:"16px",fontSize:"20px",boxSizing:"border-box",fontFamily:"Roboto-Regular,HelveticaNeue,Arial,sans-serif"},saturation:{width:"70%",padding:"0px",position:"relative",overflow:"hidden"},swatch:{width:"30%",height:"228px",padding:"0px",background:"rgba("+a.r+", "+a.g+", "+a.b+", 1)",position:"relative",overflow:"hidden"},body:{margin:"auto",width:"95%"},controls:{display:"flex",boxSizing:"border-box",height:"52px",paddingTop:"22px"},color:{width:"32px"},hue:{height:"8px",position:"relative",margin:"0px 16px 0px 16px",width:"100%"},Hue:{radius:"2px"}}},c));return h.createElement("div",{style:v.picker,className:"google-picker "+d},h.createElement("div",{style:v.head},s),h.createElement("div",{style:v.swatch}),h.createElement("div",{style:v.saturation},h.createElement(bc,{hsl:i,hsv:o,pointer:Jh,onChange:r})),h.createElement("div",{style:v.body},h.createElement("div",{style:v.controls,className:"flexbox-fix"},h.createElement("div",{style:v.hue},h.createElement(Ai,{style:v.Hue,hsl:i,radius:"4px",pointer:e0,onChange:r}))),h.createElement(OW,{rgb:a,hsl:i,hex:l,hsv:o,onChange:r})))};t0.propTypes={width:R.oneOfType([R.string,R.number]),styles:R.object,header:R.string};t0.defaultProps={width:652,styles:{},header:"Color picker"};kt(t0);const $W=[{value:"happy",label:"Happy"},{value:"sad",label:"Sad"},{value:"angry",label:"Angry"},{value:"suspicious",label:"Suspicious"}],PW=["#f2167c","#f216d9","#c016f2","#5216f2","#1682f2","#16f2ef","#16f261","#9ef216","#ebf216","#f2b116","#f26516","#ffffff"],MW=()=>{const[e,t]=k.useState(!1),[n,r]=k.useState(null),[a,i]=k.useState("#FFFFFF"),o=()=>{t(!0)};return k.useEffect(()=>{if(n){const l=[{cmd:"fill",color:a},{cmd:"img",name:`face_${n}`,x:0,y:0}];Gt.request(l,"rae_control_lcd",15e3)}},[n,a]),z(Qe,{children:[m(Dt,{type:"secondary",color:"gray",onClick:o,children:"Edit face"}),m(Xu,{visible:e,onClose:()=>{t(!1)},children:z("div",{className:"flex flex-col space gap centered edit-menu",children:[m(ge,{style:"display-xs",weight:"semibold",color:"primary",children:"Edit face"}),m(oc,{value:n,options:$W,onValueChange:r}),m(ge,{style:"text-sm",weight:"semibold",color:"secondary",children:"Pick a color"}),m("div",{className:"flex color-picker space",children:m(Ox,{colors:PW,color:a,onChangeComplete:l=>{i(l.hex)}})})]})})]})},Ax=e=>{const{step:t,min:n,max:r,value:a,onChange:i,showRangeValues:o=!0,showCurrentValue:l=!0}=e,s=h.useRef(!1),u=h.useRef(null),c=h.useRef(!1),f=h.useRef(null),d=h.useRef(null),v=h.useRef(a??null);a&&!s.current&&(i(a),s.current=!0);const y=Math.abs(r-n),b=h.useCallback($=>{if(!f.current||!u.current)return[n,0];let j;if($){const Be=u.current.clientWidth,se=u.current.getBoundingClientRect(),P=$.clientX,G=(Math.min(Math.max(se.left,P),se.right)-se.left)/Be,A=y/t;j=Math.round((Math.round(A*G)*t+Number.EPSILON)*100)/100}else j=(a??n)-n;const U=Math.floor(j/y*100);return[Math.min(Math.max(j+n,n),r),U]},[r,n,y,t,a]),[[x,p],g]=h.useState(()=>b()),w=h.useCallback($=>{$.button===0&&(c.current=!0)},[]);h.useEffect(()=>{const $=()=>{c.current&&v.current!==null&&(c.current=!1,i(v.current))},j=ee=>{if(c.current&&u.current&&d.current){const[Be,se]=b(ee);d.current.innerText=`${Be}`,v.current=Be,u.current.style.setProperty("--_leftPadOffset",`${se}%`)}},U=()=>{if(c.current){const ee=window.getSelection();ee!=null&&ee.empty?ee.empty():ee!=null&&ee.removeAllRanges&&ee.removeAllRanges()}};return document.addEventListener("selectionchange",U),window.addEventListener("mouseup",$),window.addEventListener("mousemove",j),()=>{document.removeEventListener("selectionchange",U),window.removeEventListener("mouseup",$),window.removeEventListener("mousemove",j)}},[b,r,n,i,y,t]);const S=h.useCallback($=>{if($.button!==0||!d.current||!u.current)return;const[j,U]=b($.nativeEvent);d.current.innerText=`${j}`,v.current=j,i(j),u.current.style.setProperty("--_leftPadOffset",`${U}%`)},[b,i]),E=h.useCallback($=>{u.current=$,$!==null&&f.current!==null&&g(b())},[b]),T=h.useCallback($=>{f.current=$,$!==null&&u.current!==null&&g(b())},[b]),C=h.useCallback($=>{d.current=$},[]);return m(RW,{min:n,max:r,value:a,leftPadOffset:p,handleTrackMouseClick:S,handlePadMouseDown:w,onSliderRefChange:E,onLeftPadRefChange:T,onLeftPadValueRefChange:C,showRangeValues:o,showCurrentValue:l})};Ax.displayName="Slider";const RW=h.memo(e=>{const{onSliderRefChange:t,onLeftPadRefChange:n,onLeftPadValueRefChange:r,handleTrackMouseClick:a,handlePadMouseDown:i,min:o,max:l,value:s,leftPadOffset:u,showRangeValues:c,showCurrentValue:f}=e,d=h.useMemo(()=>({"--_leftPadOffset":`${u}%`}),[u]);return z("div",{ref:t,"data-is":"slider",style:d,children:[m("div",{"data-slider":"track",onClick:a}),c&&z(Qe,{children:[m("span",{"data-slider":"min-value",children:o}),m("span",{"data-slider":"max-value",children:l})]}),m("div",{ref:n,"data-slider":"left-pad",onMouseDown:i}),m("span",{ref:r,"data-slider":"left-pad-value",style:{opacity:f?1:0},children:s})]})}),AW=["#0000FF","#800080","#C71585","#8A2BE2","#008000","#008B8B","#FF0000","#FF4500","#FFA500","#FFD700","#ADFF2F","#FFFFFF"],LW=[{value:"car",label:"Car"},{value:"solid",label:"Solid"},{value:"spinner",label:"Spinner"},{value:"fan",label:"Fan"},{value:"pulse",label:"Pulse"},{value:"blink",label:"Blink"}],Mr=e=>{const{text:t,min:n,max:r,value:a,setter:i}=e;return z("div",{className:"flex flex-col gap centered w-full",children:[m(ge,{style:"text-sm",weight:"semibold",color:"secondary",children:t}),m(Ax,{showRangeValues:!1,step:1,min:n,max:r,value:a,onChange:i})]})},NW=()=>{const[e,t]=k.useState(!1),[n,r]=k.useState("#FFFFFF"),[a,i]=k.useState("none"),[o,l]=k.useState(50),[s,u]=k.useState(5),[c,f]=k.useState(2),[d,v]=k.useState(3),[y,b]=k.useState(5),[x,p]=k.useState(25),[g,w]=k.useState(75),S=()=>{t(!0)};return k.useEffect(()=>{const j={color:n,effect:a,brightness:o};switch(a){case"spinner":j.size=d,j.blades=s;break;case"fan":j.blades=c,j.opening=1;break;case"pulse":j.interval=y;break;case"blink":j.high=g,j.low=x;break}a!=="none"&&Gt.request(j,"rae_control_leds",15e3)},[n,a,o,s,c,d,y,x,g]),z(Qe,{children:[m(Dt,{type:"secondary",color:"gray",href:"",onClick:S,children:"Edit Lights"}),m(Xu,{visible:e,onClose:()=>{t(!1)},children:z("div",{className:"flex flex-col space gap centered",children:[m(ge,{style:"display-xs",weight:"semibold",color:"primary",children:"Edit Lights"}),m(oc,{value:a,options:LW,onValueChange:i}),m("div",{className:"flex w-full centered color-picker space",children:m(Ox,{colors:AW,color:n,onChangeComplete:j=>{r(j.hex)}})}),m(Mr,{text:"Brightness",min:0,max:100,value:o,setter:l}),a==="spinner"&&m(()=>z(Qe,{children:[m(Mr,{text:"Number of blades",min:1,max:10,value:s,setter:u}),m(Mr,{text:"Size of each blade",min:1,max:5,value:d,setter:v})]}),{}),a==="fan"&&m(()=>m(Mr,{text:"Number of blades",min:1,max:4,value:c,setter:f}),{}),a==="pulse"&&m(()=>m(Mr,{text:"Interval",min:1,max:10,value:y,setter:b}),{}),a==="blink"&&m(()=>z(Qe,{children:[m(Mr,{text:"Off timer",min:0,max:100,value:x,setter:p}),m(Mr,{text:"On timer",min:0,max:100,value:g,setter:w})]}),{})]})})]})},DW=e=>m("svg",{"data-icon":!0,width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",...e,children:m("path",{fill:"currentColor",d:"M 15.324219 4.445313 C 13.496094 3.640625 11.433594 3.515625 9.515625 4.121094 C 5.871094 5.269531 3.507813 8.726563 3.753906 12.53125 L 1.265625 12.695313 C 0.945313 7.738281 4.027344 3.238281 8.765625 1.742188 C 11.539063 0.867188 14.546875 1.171875 17.097656 2.550781 L 19.484375 0 L 20.121094 7.074219 L 12.628906 7.324219 Z M 15.230469 22.257813 C 14.179688 22.585938 13.089844 22.753906 12.007813 22.753906 C 10.242188 22.753906 8.488281 22.296875 6.90625 21.445313 L 4.515625 24 L 3.882813 16.925781 L 11.371094 16.675781 L 8.679688 19.554688 C 10.5 20.355469 12.5625 20.484375 14.480469 19.878906 C 18.125 18.726563 20.492188 15.265625 20.246094 11.46875 L 22.730469 11.304688 C 23.058594 16.253906 19.972656 20.757813 15.230469 22.257813 Z"})}),IW=[{value:"manual",label:"Manual"},{value:"follow_me",label:"Follow me"}],jW=({controls:e,controlsHandler:t,mode:n,setMode:r})=>{const[a,i]=k.useState(!1),o=()=>{i(!0)};return k.useEffect(()=>{const l={mode:n};Gt.request(l,"change_mode",15e3)},[n]),z(Qe,{children:[m(Dt,{type:"secondary",color:"gray",onClick:o,children:"Edit mode"}),m(Xu,{visible:a,onClose:()=>{i(!1)},children:z("div",{className:"flex flex-col space gap centered edit-menu",children:[m(ge,{style:"display-xs",weight:"semibold",color:"primary",children:"Edit mode"}),m(oc,{value:n,options:IW,onValueChange:r}),n==="manual"&&z(Qe,{children:[m(ge,{style:"text-sm",weight:"semibold",color:"secondary",children:"Set a controller"}),m(Dt,{type:"secondary",color:"gray",href:"",onClick:t,iconEnd:m(DW,{}),style:{textTransform:"capitalize"},children:e})]})]})})]})},FW=({controls:e,controlsHandler:t,mode:n,setMode:r})=>{const[a,i]=k.useState(!1);return z("div",{className:"flex flex-col centered absolute top option-menu",children:[!a&&z("div",{className:"flex space flex-row gap",children:[m(jW,{controls:e,controlsHandler:t,mode:n,setMode:r}),m(MW,{}),m(NW,{})]}),m("div",{onClick:()=>{i(!a)},className:"flex centered handle",children:m(W8,{})})]})},gv=()=>{const e=window.innerHeight,t=window.innerWidth;return e>t},BW=()=>{const[e,t]=k.useState("stream_front"),[n,r]=k.useState("stream_back"),[a,i]=k.useState("joystick"),[o,l]=k.useState(gv),[s,u]=k.useState(!1),c=k.useRef(null),f=D7(),[d,v]=k.useState("manual"),y=()=>{t(n),r(n==="stream_front"?"stream_back":"stream_front")},b=()=>{i(a==="joystick"?"arrows":"joystick")},x=()=>{Gt.notify("rae_control_horn",{})};return k.useEffect(()=>{const p=()=>{const S=c.current.parentNode.clientHeight,E=c.current.parentNode.clientWidth,T=E/S>1.6;c.current.style.height=`${T?S:E/1.6}px`,c.current.style.width=`${T?S*1.6:E}px`},g=()=>{l(gv)};return p(),window.addEventListener("resize",p),window.addEventListener("resize",g),()=>{window.removeEventListener("resize",p),window.removeEventListener("resize",g)}},[]),z("div",{className:"flex flex-col centered grow relative",style:{overflow:"hidden",backgroundColor:"#44444F"},children:[m(Xu,{visible:o,onClose:null,background:"black",children:z("div",{className:"flex flex-col centered gap w-full h-full",children:[m(ge,{style:"display-xs",color:"inverse-primary",children:"Rotate your phone"}),m(I7,{size:250}),m(ge,{style:"display-xs",color:"inverse-primary",children:"for best experience"})]})}),!s&&m(FW,{controls:a,controlsHandler:b,mode:d,setMode:v}),m("div",{className:"flex h-full w-full centered",children:z("div",{ref:c,className:"flex relative",children:[s?m(F7,{className:"lock",opacity:.4,size:70,color:"#FFFFFF",onClick:()=>u(!1)}):m(j7,{className:"lock",opacity:.2,size:70,color:"#FFFFFF",onClick:()=>u(!0)}),m(B7,{className:"horn",size:120,color:"#FFFFFF",onClick:()=>x()}),m(P1,{className:"flex grow",streamKey:e,servers:f}),d==="manual"&&!s&&m(H8,{type:a,front:e==="stream_front"})]})}),!s&&m(P1,{streamKey:n,servers:f,draggable:!0,onClick:y,className:"flex secondary-stream"})]})};function zW(){return z(Qe,{children:[m(uu,{children:m("title",{children:"Control"})}),m(BW,{})]})}function UW(){const e=[{to:"/",icon:q2,name:"Home"},{to:"/control",icon:Ow,name:"Control"}],[t,n]=k.useState();return k.useEffect(()=>{const r=()=>{k7.loadStatus().then(i=>n(i)).catch(console.error)};r();const a=setInterval(r,3e4);return()=>clearInterval(a)},[]),m(s6,{mainMenu:e,showMainMenu:!0,statusLine:t&&m(S7,{status:t.mappingRunning,memory:t.memory,memoryUnit:"GB",isOnline:!0,battery:t.battery,wifi:t.wifi,wifiUnit:"MB/s"}),children:z(W3,{children:[m(ts,{path:"/",element:m(fC,{})}),m(ts,{path:"/control",element:m(zW,{})}),m(ts,{path:"*",element:m(aw,{})})]})})}const HW=window.ROBOT_APP_ID??"00000000-0000-0000-0000-000000000000",WW=`/app/${HW}`;Sf.createRoot(document.getElementById("root")).render(m(h.StrictMode,{children:m(q3,{basename:WW,children:m(UW,{})})})); diff --git a/Working with RAE/RAE Default App/frontend/assets/raetest02-8e37e8aa.png b/Working with RAE/RAE Default App/frontend/assets/raetest02-8e37e8aa.png new file mode 100644 index 0000000..0a2ac0f Binary files /dev/null and b/Working with RAE/RAE Default App/frontend/assets/raetest02-8e37e8aa.png differ diff --git a/Working with RAE/RAE Default App/frontend/index.html b/Working with RAE/RAE Default App/frontend/index.html new file mode 100644 index 0000000..8c88d58 --- /dev/null +++ b/Working with RAE/RAE Default App/frontend/index.html @@ -0,0 +1,15 @@ + + + + + + Rae - Robotics Access for Everyone + + + + + +
+ + + diff --git a/Working with RAE/RAE Default App/logs/app.log b/Working with RAE/RAE Default App/logs/app.log new file mode 100644 index 0000000..e69de29 diff --git a/Working with RAE/RAE Default App/robotapp.toml b/Working with RAE/RAE Default App/robotapp.toml new file mode 100644 index 0000000..b0c7a6d --- /dev/null +++ b/Working with RAE/RAE Default App/robotapp.toml @@ -0,0 +1,19 @@ +config_version = "2.0" +configuration = [] + +[info] +name = "RAE Default Application" +description = "RAE Default Application" + +[runtime] +application = "src/follow_me.py#Application" +workdir = "/app" +pre_launch = "export ROS_DOMAIN_ID=30\n. /opt/ros/$ROS_DISTRO/setup.sh\n. /ws/install/setup.sh && export LD_LIBRARY_PATH=/usr/local/lib/python3.10/dist-packages${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}" +permissions = ["rae-peripherals"] + +[runtime.frontend] +redirectToIndex = true + +[runtime.runs_on] +type = "image" +name = "luxonis/rae-ros-robot:dai_ros_py_sound" diff --git a/Working with RAE/RAE Default App/src/__init__.py b/Working with RAE/RAE Default App/src/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Working with RAE/RAE Default App/src/api/__init__.py b/Working with RAE/RAE Default App/src/api/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Working with RAE/RAE Default App/src/api/performance.py b/Working with RAE/RAE Default App/src/api/performance.py new file mode 100644 index 0000000..6cf95eb --- /dev/null +++ b/Working with RAE/RAE Default App/src/api/performance.py @@ -0,0 +1,127 @@ +import logging as log +import logging +import tracemalloc +from collections import defaultdict +from time import perf_counter +from typing import Any, Callable + + +def measure_performance(func: Callable[..., Any]) -> Callable[..., Any]: + def wrapper(*args: Any, **kwargs: Any) -> Any: + start_time = perf_counter() + value = func(*args, **kwargs) + end_time = perf_counter() + run_time = end_time - start_time + print(f"Execution of {func.__name__} took {run_time:.5f} seconds,") + return value + + return wrapper + + +def default_value_10_000_000() -> float: + return 10_000_000. + + +# lock = Lock() +list_of_durations = defaultdict(list) +maximum_duration: dict[Any, float] = defaultdict(float) +minimum_duration: dict[Any, float] = defaultdict(default_value_10_000_000) +last_report_at: dict[Any, float] = defaultdict(float) +# maximum_duration = 0 # in seconds +# minimum_duration = 10_000_000 # in seconds +# last_report_at = perf_counter() + + +def measure_average_performance(func: Callable[..., Any]) -> Callable[..., Any]: + """Report once every 5 minutes what the averages function duration is and what the max and min durations are.""" + + def wrapper(*args: Any, **kwargs: Any) -> Any: + global maximum_duration, minimum_duration, last_report_at + start_time = perf_counter() + value = func(*args, **kwargs) + end_time = perf_counter() + try: + run_time = end_time - start_time + if run_time > maximum_duration[func]: + maximum_duration[func] = run_time + if run_time < minimum_duration[func]: + minimum_duration[func] = run_time + list_of_durations[func].append(run_time) + list_of_durations[func].append(run_time) + + now = perf_counter() + if now - last_report_at[func] > 1 * 60 * 5 and list_of_durations[func]: + average_duration = sum(list_of_durations[func]) / len(list_of_durations[func]) + log.info("*" * 30) + log.info(f"Performance stats for {func.__name__}:") + log.info(f"Avarage duration: {average_duration * 1000} ms, Maximum duration: {maximum_duration[func] * 1000} ms, Minimal duration: {minimum_duration[func] * 1000} ms") + log.info("*" * 30) + list_of_durations[func].clear() + maximum_duration[func], minimum_duration[func] = 0, 10_000_000 + last_report_at[func] = perf_counter() + except Exception: + pass + return value + + return wrapper + + +last_call_at = perf_counter() +last_report_call_frequency_at = perf_counter() +call_frequency_memory = defaultdict(list) + + +def measure_call_frequency(func: Callable[..., Any]) -> Callable[..., Any]: + """Measure how often a given function is called.""" + + def wrapper(*args: Any, **kwargs: Any) -> Any: + global call_frequency_memory, last_call_at, last_report_call_frequency_at + start_time = perf_counter() + # time from last call + time_from_last_call = start_time - last_call_at + last_call_at = start_time + call_frequency_memory[func].append(time_from_last_call) + if start_time - last_report_call_frequency_at > 1 * 60 * 1 and call_frequency_memory[func]: + average_call_time = sum(call_frequency_memory[func]) / len(call_frequency_memory[func]) + maximal_call_time = max(call_frequency_memory[func]) + print("*" * 50) + print(f"Calls per second stats for {func.__name__}:") + print(f"Average calls per second (CPS): {1 / average_call_time}, Minimal CPS: {1 / maximal_call_time}") + print("*" * 50) + call_frequency_memory[func].clear() + last_report_call_frequency_at = start_time + + value = func(*args, **kwargs) + return value + + return wrapper + + +def with_sql_exception_handling(func: Callable[..., Any]) -> Callable[..., Any]: + """Try sql operation command, catch exception and finally close the cursor and the connection.""" + def wrapper(*args, **kwargs): + try: + result = func(*args, **kwargs) + return result + except Exception as e: + log.critical(f"Couldn't perform sql operation: {repr(e)}") + return None + + return wrapper + + +def trace_memory(func: Callable[..., Any]) -> Callable[..., Any]: + """Trace RAM usage.""" + def wrapper(*args: Any, **kwargs: Any) -> Any: + tracemalloc.start() + value = func(*args, **kwargs) + snapshot = tracemalloc.take_snapshot() + top_stats = snapshot.statistics('lineno') + log.info("*" * 50) + log.info(f"TOP 10 RAM usage for {func.__name__}:") + for stat in top_stats[:10]: + log.info(stat) + log.info("*" * 50) + return value + + return wrapper diff --git a/Working with RAE/RAE Default App/src/api/ros/__init__.py b/Working with RAE/RAE Default App/src/api/ros/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Working with RAE/RAE Default App/src/api/ros/ros2_manager.py b/Working with RAE/RAE Default App/src/api/ros/ros2_manager.py new file mode 100644 index 0000000..6383b68 --- /dev/null +++ b/Working with RAE/RAE Default App/src/api/ros/ros2_manager.py @@ -0,0 +1,198 @@ +import logging as log +import os +import threading +import rclpy +import time +import math +import subprocess +from time import sleep +import signal + +from typing import Any, Callable, Dict, Type +from rclpy.executors import Executor, MultiThreadedExecutor, SingleThreadedExecutor +from rclpy.publisher import Publisher +from rclpy.subscription import Subscription +from rclpy.client import Client +from rclpy.timer import Timer + + +QOS_PROFILE = 10 +ROS2_NAMESPACE = '/rae' + + +class ROS2Manager: + """ + A class that manages ROS2 functionalities for a robot or a system. It includes initializing ROS2 context, + creating and managing nodes, publishers, and subscribers. It also handles the startup and shutdown processes + for ROS2. + + Attributes: + ros_proc: Process for running ROS2 hardware-related commands. + _name (str): Name of the ROS2 node. + _context (rclpy.context.Context | None): The ROS2 context. + _node (rclpy.node.Node | None): The ROS2 node. + _publishers (dict[str, Publisher]): Dictionary of ROS2 publishers. + _subscribers (dict[str, Subscription]): Dictionary of ROS2 subscribers. + + Methods: + get_node(): Returns the current ROS2 node. + start_hardware_process(): Starts the hardware process for ROS2. + start(): Initializes and starts the ROS2 node and executor. + stop_ros_process(): Stops the ROS2 hardware process. + stop(): Shuts down the ROS2 node and context. + create_publisher(topic_name, msg_type, qos_profile): Creates a publisher for a given topic. + publish(topic_name, msg): Publishes a message on a given topic. + create_subscriber(topic_name, msg_type, callback, qos_profile): Creates a subscriber for a given topic. + """ + def __init__(self, name: str) -> None: + """ + Initializes the ROS2Manager instance. + + Args: + name (str): The name of the ROS2 node. + """ + + self.ros_proc = None + self._name = name + self._context: rclpy.context.Context | None = None + self._node: rclpy.node.Node | None = None + self._publishers: dict[str, Publisher] = {} + self._subscribers: dict[str, Subscription] = {} + self._service_clients: dict[str, Client] = {} + self._timers: dict[str, Timer] = {} + + def get_node(self): + return self._node + + def start_hardware_process(self): + """ + Starts RAE hardware drivers in a separate process. + """ + env = dict(os.environ) + self.ros_proc = subprocess.Popen( + "bash -c 'chmod +x /app/start_ros.sh ; /app/start_ros.sh'", shell=True, env=env, preexec_fn=os.setsid + ) + + def start(self) -> None: + """ + Runs RAE hardware drivers process.Initializes and starts the ROS2 node and executor. It sets up the ROS2 context and starts the ROS2 spin. + """ + self.start_hardware_process() + sleep(2) + self._context = rclpy.Context() + self._context.init() + log.info("ROS2 context initialized.") + + self._node = rclpy.create_node(self._name, context=self._context, namespace=ROS2_NAMESPACE) + log.info(f"Created ROS2 node with name: {self._name}...") + self._executor = SingleThreadedExecutor(context=self._context) + self._executor.add_node(self._node) + self._executor_thread = threading.Thread(target=self._spin) + self._executor_thread.start() + log.info(f"Node started!") + + def _spin(self): + log.info("rlcpy thread> Start") + try: + self._executor.spin() + except Exception as e: + log.info("rlcpy thread> failed") + log.error(e) + log.info("rlcpy thread> Done") + + def stop_ros_process(self): + """ + Stops the ROS2 hardware process by terminating the related subprocess. + """ + + if self.ros_proc is not None: + pgid = os.getpgid(self.ros_proc.pid) + os.killpg(pgid, signal.SIGTERM) + + def stop(self) -> None: + """ + Shuts down RAE drivers, ROS2 node and context. This includes stopping the executor, destroying publishers and subscribers, + and shutting down the ROS2 context. + """ + self.stop_ros_process() + if not self._context: + log.info("ROS2 context is already stopped") + return + + if self._executor_thread: + self._executor.shutdown() + self._executor_thread.join() + self._executor_thread = None + + if self._node: + log.info("Destroying ROS2 node...") + self._destroy_publishers_and_subscribers() + self._node.destroy_node() + self._node = None + + if self._context: + log.info("Shutting down ROS2 context...") + self._context.try_shutdown() + self._context.destroy() + self._context = None + + def _destroy_publishers_and_subscribers(self): + for topic_name, publisher in self._publishers.items(): + log.info(f"Destroying {topic_name} publisher...") + self._node.destroy_publisher(publisher) + + for topic_name, subscriber in self._subscribers.items(): + log.info(f"Destroying {topic_name} subscriber...") + self._node.destroy_subscription(subscriber) + + self._publishers.clear() + self._subscribers.clear() + + def create_publisher(self, topic_name: str, msg_type:Any, qos_profile: int = QOS_PROFILE) -> None: + if topic_name not in self._publishers: + if msg_type is not None: + log.info(f"Creating {topic_name} publisher") + self._publishers[topic_name] = self._node.create_publisher(msg_type, topic_name, qos_profile) + else: + log.warning(f"Unknown message type '{msg_typer}'") + + def create_service_client(self, srv_name: str, srv_type: Any) -> None: + if srv_name not in self._service_clients: + if srv_type is not None: + log.info(f"Creating {srv_name} service client") + self._service_clients[srv_name] = self._node.create_client(srv_type, srv_name) + else: + log.warning(f"Unknown service type '{srv_type}") + def call_async_srv(self, srv_name: str, req: Any) -> None: + log.info(f"Calling service {srv_name}") + future = self._service_clients[srv_name].call_async(req) + return future.result() + + def publish(self, topic_name: str, msg: Any) -> None: + if topic_name in self._publishers: + publisher = self._publishers[topic_name] + publisher.publish(msg) + else: + log.warning(f"No publisher found for topic '{topic_name}'") + + def create_subscriber(self, topic_name: str, msg_type: Any, callback=None, qos_profile: int = QOS_PROFILE) -> None: + if topic_name not in self._subscribers: + if msg_type is not None: + if callback is None: + callback = self._default_callback + + log.info(f"Creating {topic_name} subscriber") + self._subscribers[topic_name] = self._node.create_subscription(msg_type, topic_name, callback, qos_profile) + else: + log.warning(f"Unknown message type '{msg_type_str}'") + + def _default_callback(self, msg) -> None: + log.info(f"[Default callback] Received message: {msg}") + + def create_timer(self, timer_name, period, callback) -> None: + if timer_name not in self._timers: + if callback is not None: + log.info(f"Creating {timer_name} timer") + self._timers[timer_name] = self._node.create_timer(period, callback) + else: + log.error(f"No callback function given for timer {timer_name}") diff --git a/Working with RAE/RAE Default App/src/follow_me.py b/Working with RAE/RAE Default App/src/follow_me.py new file mode 100644 index 0000000..ff63ba6 --- /dev/null +++ b/Working with RAE/RAE Default App/src/follow_me.py @@ -0,0 +1,248 @@ +from time import sleep +from dataclasses import dataclass, field +from enum import Enum +from typing import Optional, List, Tuple +from datetime import datetime, timedelta + +import robothub +import time +import depthai as dai +import os +import signal + +from src.robot.robot import Robot +from src.robot.perception.camera import Camera +from src.robot.perception.detections import Detections, labelMap, create_detection_metadata +from src.robot.perception.pipeline import build_pipeline +from src.api.performance import measure_call_frequency +from src.utilities.logging import Log + +EXPECTED_TARGET_WIDTH = 0.4 +WAIT_BEFORE_STARTING_TO_ROTATE = timedelta(seconds=2) +FOLLOWED_OBJECT_TYPES = [labelMap.index("person")] +RESOLUTION_WIDTH = 1280 +RESOLUTION_HEIGHT = 800 +FRONT_STREAM_NAME = "stream_front" +REAR_STREAM_NAME = "stream_back" +STREAM_NAMES = [FRONT_STREAM_NAME, REAR_STREAM_NAME] +OTHER_DIRECTIONS = {FRONT_STREAM_NAME: REAR_STREAM_NAME, + REAR_STREAM_NAME: FRONT_STREAM_NAME} + + +class AppMode(Enum): + manual = "manual" + follow_me = "follow_me" + + +class Application(robothub.RobotHubApplication): + def __init__(self): + super().__init__() + self.logger = Log() + self.robot = Robot(self.logger) + self.camera = Camera(self.logger) + self.available_apps = [] + self.robot_status = None + self.latest_detections = { + FRONT_STREAM_NAME: Detections(), REAR_STREAM_NAME: Detections()} + self.mode = AppMode.manual + self.folow_me_direction = None + self.last_detection_timestamp = datetime.now() + + def on_start(self): + if not robothub.DEVICES: + self.logger.error( + "The default app requires an assigned device to run. " + "Please go to RobotHub, navigate to the app's page, " + "click the \"Reassign devices\" button and select a device." + ) + self._stop(1) + + self.logger.info("Starting the app...") + + self.logger.info("Starting Robot") + self.robot.start() + sleep(2) + self.logger.info("Starting robothub communicator...") + self.init_robothub_communicator() + sleep(2) + self.logger.info("Starting streams...") + self.init_streams() + + + def on_stop(self): + self.logger.info("Stopping the app...") + self.robot.stop() + self.camera.stop() + + def init_robothub_communicator(self): + robothub.COMMUNICATOR.on_frontend( + notification=self.on_fe_notification, request=self.on_fe_request) + + def init_streams(self): + pipeline = build_pipeline( + dai.CameraBoardSocket.CAM_B, FRONT_STREAM_NAME, dai.CameraBoardSocket.CAM_D, REAR_STREAM_NAME + ) + self.camera.add_imu_ros_stream("imu") + for stream_name in STREAM_NAMES: + self.camera.add_rh_stream(stream_name) + self.camera.add_ros_stream(stream_name) + + self.camera.start_pipeline(pipeline) + for stream_name in STREAM_NAMES: + self.camera.add_queue(f"{stream_name}", self.stream_callback_rh) + self.camera.add_queue( + f"{stream_name}_mjpeg", self.stream_callback_ros) + self.camera.add_queue(f"{stream_name}_nn", + self.control_callback_front) + self.camera.add_queue("imu", self.stream_callback_imu) + + def stream_callback_rh(self, name: str, msg: dai.ImgFrame): + detections = self.latest_detections[name] + metadata = create_detection_metadata( + detections, RESOLUTION_WIDTH, RESOLUTION_HEIGHT) + color_frame = msg.getFrame() + timestamp = int(time.time() * 1_000) + self.camera.publish_rh(name, color_frame, timestamp, metadata) + + def stream_callback_ros(self, name: str, msg: dai.ImgFrame): + self.camera.publish_ros(name, msg) + + def stream_callback_imu(self, name: str, msg: dai.IMUData): + self.camera.publish_ros(name, msg) + + def on_fe_notification(self, session_id, unique_key, payload): + if unique_key == "cmd_vel" and self.mode == AppMode.manual: + self.robot.move(payload['linear'], payload['angular']) + elif unique_key == "app_install": + print("Received notification to app installation") + elif unique_key == "rae_control_horn": + self.robot.play_random_sfx() + else: + self.logger.info(f"Unique key: {unique_key}, payload: {payload}") + + def on_fe_request(self, session_id, unique_key, payload): + if unique_key == "apps_get_list": + return self.available_apps + elif unique_key == "robot_status": + print("Received notification to load robot status") + if self.robot.get_battery() is None: + return None + return { + "downloadSpeed": None, + "diskTotal": None, + "diskUsage": None, + "batteryCapacity": self.robot.get_battery().capacity, + "mappingPaused": False, + "mappingRunning": False, + } + elif unique_key == "rae_control_leds": + self.robot.set_leds(payload) + elif unique_key == "rae_control_lcd": + self.robot.display_face(payload) + elif unique_key == "change_mode": + self.last_detection_timestamp = datetime.now() + self.folow_me_direction = None + try: + self.mode = AppMode[payload.get("mode")] + self.logger.info(f'Robot mode set to "{self.mode.value}"') + except KeyError: + self.logger.error( + f"Unexpected mode \"{payload.get('mode')}\" was requested, ignoring") + else: + self.logger.info(f"Unique key: {unique_key}, payload: {payload}") + + def store_available_apps(self, data): + self.available_apps = data["body"]["availableApps"] + print(self.available_apps) + + def load_robot_info(self, data): + self.robot_status = data["body"] + print(self.robot_status) + + @measure_call_frequency + def control_callback_front(self, name, msg): + self.control_callback(name, msg) + + def control_callback_rear(self, name, msg): + self.control_callback(name, msg) + + def control_callback(self, name, msg: dai.ImgDetections): + direction = name[:-3] + latest_detections = pick_detection(msg.detections) + self.latest_detections[direction] = latest_detections + if self.mode == AppMode.follow_me: + self.navigate_follow_me(direction) + + def navigate_follow_me(self, detection_direction: str): + current_detections = self.latest_detections[detection_direction] + + if not self.folow_me_direction and current_detections.target: + self.logger.info( + f'Spotted target in direction "{detection_direction}", following') + self.folow_me_direction = detection_direction + + if self.folow_me_direction == detection_direction and not current_detections.target: + other_detections = self.latest_detections[detection_direction] + if other_detections.target: + self.logger.info( + f'Lost target in direction "{self.folow_me_direction}", following in opposite direction') + self.folow_me_direction = other_detections(detection_direction) + else: + self.logger.info( + f'Lost target in direction "{self.folow_me_direction}", searching for new target') + self.folow_me_direction = None + self.last_detection_timestamp = datetime.now() + + velocity = None + if not self.folow_me_direction: + velocity = self.get_search_velocity() + + if self.folow_me_direction == detection_direction and current_detections.target: + velocity = self.get_velocity_to_target( + current_detections.target, self.folow_me_direction) + + if velocity: + angular_velocity, linear_velocity = velocity + self.robot.move(linear_velocity, angular_velocity) + + def get_search_velocity(self) -> Tuple[float, float]: + linear_velocity = 0 + angular_velocity = 0 + if datetime.now() > self.last_detection_timestamp + WAIT_BEFORE_STARTING_TO_ROTATE: + linear_velocity = 0 + angular_velocity = 1.5 + return angular_velocity, linear_velocity + + @staticmethod + def get_velocity_to_target(target_detection: dai.ImgDetection, direction: str) -> Tuple[float, float]: + multiplier = 1 if direction == FRONT_STREAM_NAME else -1 + detection_xcenter = (target_detection.xmax + target_detection.xmin) / 2 + detection_center_distance = 0.5 - detection_xcenter + angular_velocity = detection_center_distance * \ + abs(detection_center_distance) * 50 + detection_width = target_detection.xmax - target_detection.xmin + detection_width_difference = EXPECTED_TARGET_WIDTH - detection_width + linear_velocity = multiplier * detection_width_difference * \ + abs(detection_width_difference) * 50 + return angular_velocity, linear_velocity + + +def other_direction(direction: str) -> Optional[str]: + return OTHER_DIRECTIONS.get(direction) + + +def pick_detection(detections: List[dai.ImgDetection]) -> Detections: + closest_detection = None + closest_detection_size = -1 + other_detections = [] + for detection in detections: + detection_size = detection.xmax - detection.xmin + if detection.label in FOLLOWED_OBJECT_TYPES: + if detection_size > closest_detection_size: + other_detections.append(closest_detection) + closest_detection = detection + closest_detection_size = detection_size + else: + other_detections.append(detection) + + return Detections(other=[detection for detection in other_detections if detection], target=closest_detection) diff --git a/Working with RAE/RAE Default App/src/robot/__init__.py b/Working with RAE/RAE Default App/src/robot/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Working with RAE/RAE Default App/src/robot/assets/img/face_angry.png b/Working with RAE/RAE Default App/src/robot/assets/img/face_angry.png new file mode 100644 index 0000000..4e5a1a1 Binary files /dev/null and b/Working with RAE/RAE Default App/src/robot/assets/img/face_angry.png differ diff --git a/Working with RAE/RAE Default App/src/robot/assets/img/face_happy.png b/Working with RAE/RAE Default App/src/robot/assets/img/face_happy.png new file mode 100644 index 0000000..d81d04d Binary files /dev/null and b/Working with RAE/RAE Default App/src/robot/assets/img/face_happy.png differ diff --git a/Working with RAE/RAE Default App/src/robot/assets/img/face_sad.png b/Working with RAE/RAE Default App/src/robot/assets/img/face_sad.png new file mode 100644 index 0000000..e27caf8 Binary files /dev/null and b/Working with RAE/RAE Default App/src/robot/assets/img/face_sad.png differ diff --git a/Working with RAE/RAE Default App/src/robot/assets/img/face_suspicious.png b/Working with RAE/RAE Default App/src/robot/assets/img/face_suspicious.png new file mode 100644 index 0000000..10ecf69 Binary files /dev/null and b/Working with RAE/RAE Default App/src/robot/assets/img/face_suspicious.png differ diff --git a/Working with RAE/RAE Default App/src/robot/assets/img/rae-logo-white.jpg b/Working with RAE/RAE Default App/src/robot/assets/img/rae-logo-white.jpg new file mode 100644 index 0000000..079e8f9 Binary files /dev/null and b/Working with RAE/RAE Default App/src/robot/assets/img/rae-logo-white.jpg differ diff --git a/Working with RAE/RAE Default App/src/robot/assets/sfx/horn.mp3 b/Working with RAE/RAE Default App/src/robot/assets/sfx/horn.mp3 new file mode 100644 index 0000000..369a437 Binary files /dev/null and b/Working with RAE/RAE Default App/src/robot/assets/sfx/horn.mp3 differ diff --git a/Working with RAE/RAE Default App/src/robot/assets/sfx/horn_cucaracha.mp3 b/Working with RAE/RAE Default App/src/robot/assets/sfx/horn_cucaracha.mp3 new file mode 100644 index 0000000..0b68556 Binary files /dev/null and b/Working with RAE/RAE Default App/src/robot/assets/sfx/horn_cucaracha.mp3 differ diff --git a/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/0.mp3 b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/0.mp3 new file mode 100644 index 0000000..39f7ab1 Binary files /dev/null and b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/0.mp3 differ diff --git a/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/1.mp3 b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/1.mp3 new file mode 100644 index 0000000..95f3043 Binary files /dev/null and b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/1.mp3 differ diff --git a/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/10.mp3 b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/10.mp3 new file mode 100644 index 0000000..117c3df Binary files /dev/null and b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/10.mp3 differ diff --git a/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/11.mp3 b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/11.mp3 new file mode 100644 index 0000000..72e701b Binary files /dev/null and b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/11.mp3 differ diff --git a/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/12.mp3 b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/12.mp3 new file mode 100644 index 0000000..de6332d Binary files /dev/null and b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/12.mp3 differ diff --git a/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/13.mp3 b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/13.mp3 new file mode 100644 index 0000000..792a4c1 Binary files /dev/null and b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/13.mp3 differ diff --git a/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/14.mp3 b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/14.mp3 new file mode 100644 index 0000000..0f740f5 Binary files /dev/null and b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/14.mp3 differ diff --git a/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/15.mp3 b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/15.mp3 new file mode 100644 index 0000000..ce85ffe Binary files /dev/null and b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/15.mp3 differ diff --git a/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/16.mp3 b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/16.mp3 new file mode 100644 index 0000000..cf65dcc Binary files /dev/null and b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/16.mp3 differ diff --git a/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/17.mp3 b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/17.mp3 new file mode 100644 index 0000000..5764ed2 Binary files /dev/null and b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/17.mp3 differ diff --git a/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/18.mp3 b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/18.mp3 new file mode 100644 index 0000000..3c90c43 Binary files /dev/null and b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/18.mp3 differ diff --git a/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/19.mp3 b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/19.mp3 new file mode 100644 index 0000000..0c51023 Binary files /dev/null and b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/19.mp3 differ diff --git a/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/2.mp3 b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/2.mp3 new file mode 100644 index 0000000..5b8c3b8 Binary files /dev/null and b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/2.mp3 differ diff --git a/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/20.mp3 b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/20.mp3 new file mode 100644 index 0000000..12f6d42 Binary files /dev/null and b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/20.mp3 differ diff --git a/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/21.mp3 b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/21.mp3 new file mode 100644 index 0000000..1bffe65 Binary files /dev/null and b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/21.mp3 differ diff --git a/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/22.mp3 b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/22.mp3 new file mode 100644 index 0000000..b72bb18 Binary files /dev/null and b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/22.mp3 differ diff --git a/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/23.mp3 b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/23.mp3 new file mode 100644 index 0000000..1dbc490 Binary files /dev/null and b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/23.mp3 differ diff --git a/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/24.mp3 b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/24.mp3 new file mode 100644 index 0000000..ab4d834 Binary files /dev/null and b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/24.mp3 differ diff --git a/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/25.mp3 b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/25.mp3 new file mode 100644 index 0000000..8565a6f Binary files /dev/null and b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/25.mp3 differ diff --git a/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/26.mp3 b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/26.mp3 new file mode 100644 index 0000000..1251ead Binary files /dev/null and b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/26.mp3 differ diff --git a/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/27.mp3 b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/27.mp3 new file mode 100644 index 0000000..a70aaf9 Binary files /dev/null and b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/27.mp3 differ diff --git a/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/28.mp3 b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/28.mp3 new file mode 100644 index 0000000..905dbf6 Binary files /dev/null and b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/28.mp3 differ diff --git a/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/29.mp3 b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/29.mp3 new file mode 100644 index 0000000..8565a6f Binary files /dev/null and b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/29.mp3 differ diff --git a/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/3.mp3 b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/3.mp3 new file mode 100644 index 0000000..e1916a2 Binary files /dev/null and b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/3.mp3 differ diff --git a/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/30.mp3 b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/30.mp3 new file mode 100644 index 0000000..8565a6f Binary files /dev/null and b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/30.mp3 differ diff --git a/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/31.mp3 b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/31.mp3 new file mode 100644 index 0000000..c5fbc25 Binary files /dev/null and b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/31.mp3 differ diff --git a/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/32.mp3 b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/32.mp3 new file mode 100644 index 0000000..8565a6f Binary files /dev/null and b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/32.mp3 differ diff --git a/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/33.mp3 b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/33.mp3 new file mode 100644 index 0000000..467b532 Binary files /dev/null and b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/33.mp3 differ diff --git a/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/34.mp3 b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/34.mp3 new file mode 100644 index 0000000..e768c1b Binary files /dev/null and b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/34.mp3 differ diff --git a/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/35.mp3 b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/35.mp3 new file mode 100644 index 0000000..d522814 Binary files /dev/null and b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/35.mp3 differ diff --git a/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/36.mp3 b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/36.mp3 new file mode 100644 index 0000000..95b2fb5 Binary files /dev/null and b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/36.mp3 differ diff --git a/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/37.mp3 b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/37.mp3 new file mode 100644 index 0000000..1ab5bf3 Binary files /dev/null and b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/37.mp3 differ diff --git a/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/38.mp3 b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/38.mp3 new file mode 100644 index 0000000..f09d49f Binary files /dev/null and b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/38.mp3 differ diff --git a/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/39.mp3 b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/39.mp3 new file mode 100644 index 0000000..64a99d7 Binary files /dev/null and b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/39.mp3 differ diff --git a/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/4.mp3 b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/4.mp3 new file mode 100644 index 0000000..c19d147 Binary files /dev/null and b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/4.mp3 differ diff --git a/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/40.mp3 b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/40.mp3 new file mode 100644 index 0000000..8565a6f Binary files /dev/null and b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/40.mp3 differ diff --git a/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/5.mp3 b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/5.mp3 new file mode 100644 index 0000000..b68eb56 Binary files /dev/null and b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/5.mp3 differ diff --git a/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/6.mp3 b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/6.mp3 new file mode 100644 index 0000000..0084d8d Binary files /dev/null and b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/6.mp3 differ diff --git a/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/7.mp3 b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/7.mp3 new file mode 100644 index 0000000..4d0f3b4 Binary files /dev/null and b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/7.mp3 differ diff --git a/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/8.mp3 b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/8.mp3 new file mode 100644 index 0000000..9bc8e1d Binary files /dev/null and b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/8.mp3 differ diff --git a/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/9.mp3 b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/9.mp3 new file mode 100644 index 0000000..ac6a19f Binary files /dev/null and b/Working with RAE/RAE Default App/src/robot/assets/sfx/voices/9.mp3 differ diff --git a/Working with RAE/RAE Default App/src/robot/audio.py b/Working with RAE/RAE Default App/src/robot/audio.py new file mode 100644 index 0000000..b66c639 --- /dev/null +++ b/Working with RAE/RAE Default App/src/robot/audio.py @@ -0,0 +1,27 @@ +import os +import random + +from rae_msgs.srv import PlayAudio + +class AudioController: + def __init__(self, ros_manager): + self.ros_manager = ros_manager + self.audio_client = self.ros_manager.create_service_client('/play_audio', PlayAudio) + + def play_audio_file(self, audio_file_path): + req = PlayAudio.Request() + req.mp3_file = audio_file_path + res = self.ros_manager.call_async_srv('/play_audio', req) + + def honk(self): + req = PlayAudio.Request() + req.mp3_file = '/app/src/robot/assets/sfx/horn.mp3' + res = self.ros_manager.call_async_srv('/play_audio', req) + def play_random_sfx(self): + req = PlayAudio.Request() + dir = '/app/src/robot/assets/sfx/voices/' + file = random.choice(os.listdir(dir)) + file_path = dir+file + print(file_path) + req.mp3_file = file_path + res = self.ros_manager.call_async_srv('/play_audio', req) \ No newline at end of file diff --git a/Working with RAE/RAE Default App/src/robot/display.py b/Working with RAE/RAE Default App/src/robot/display.py new file mode 100644 index 0000000..5c8f74d --- /dev/null +++ b/Working with RAE/RAE Default App/src/robot/display.py @@ -0,0 +1,147 @@ +import cv2 +import numpy as np +from sensor_msgs.msg import Image +from cv_bridge import CvBridge + + +def quaternion_to_rotation_matrix(q): + """ + Convert a quaternion into a rotation matrix. + + Parameters: + q (tuple): A quaternion represented as (q_w, q_x, q_y, q_z). + + Returns: + numpy.ndarray: A 3x3 rotation matrix. + """ + q_w, q_x, q_y, q_z = q + sq_w, sq_x, sq_y, sq_z = q_w ** 2, q_x ** 2, q_y ** 2, q_z ** 2 + + # Rotation matrix + rot_matrix = np.array([ + [1 - 2 * sq_y - 2 * sq_z, 2 * q_x * q_y - 2 * + q_z * q_w, 2 * q_x * q_z + 2 * q_y * q_w], + [2 * q_x * q_y + 2 * q_z * q_w, 1 - 2 * sq_x - + 2 * sq_z, 2 * q_y * q_z - 2 * q_x * q_w], + [2 * q_x * q_z - 2 * q_y * q_w, 2 * q_y * + q_z + 2 * q_x * q_w, 1 - 2 * sq_x - 2 * sq_y] + ]) + + return rot_matrix + + +class DisplayController: + def __init__(self, ros_manager): + self.ros_manager = ros_manager + self.ros_manager.create_publisher('/lcd', Image) + self.bridge = CvBridge() + self.screen_width = 160 + self.screen_height = 80 + + def stop(self): + self.display_default() + + def display_default(self): + image = cv2.imread('/app/src/robot/assets/img/rae-logo-white.jpg') + bgra_image = cv2.cvtColor(image, cv2.COLOR_BGR2BGRA) + ros_image = self.bridge.cv2_to_imgmsg(bgra_image, encoding='bgra8') + self.ros_manager.publish('/lcd', ros_image) + + def display_face(self, payload): + img_name = payload[1]['name'] + image_path = f'/app/src/robot/assets/img/{img_name}.png' + + image = cv2.imread(image_path, cv2.IMREAD_UNCHANGED) + + def hex_to_rgb(hex): + value = hex.lstrip('#') + lv = len(value) + return tuple(int(value[i:i + lv // 3], 16) for i in range(0, lv, lv // 3)) + r, g, b = hex_to_rgb(payload[0]['color']) + + # Check if the image has an alpha channel + + if image.shape[2] == 4: + + # Split the image into its channels + b_channel, g_channel, r_channel, alpha_channel = cv2.split(image) + # Define the color to replace the transparent parts (purple in this case) + # OpenCV uses BGR format, so purple is (128, 0, 128) + replacement_color = [r, g, b] + # Find all pixels where the alpha channel is zero + transparent_mask = alpha_channel < 150 + # Set the color of these pixels to the replacement color + image[transparent_mask] = replacement_color + \ + [255] # Add full opacity to the color + ros_image = self.bridge.cv2_to_imgmsg(image, encoding='bgra8') + self.ros_manager.publish('/lcd', ros_image) + + def display_image(self, image_data): + ros_image = self.bridge.cv2_to_imgmsg(image_data, encoding='bgra8') + self.ros_manager.publish('/lcd', ros_image) + + def display_imu_data(self, imu_data): + axis_length = 20 + + packets = imu_data.packets + for packet in packets: + rotation = packet.rotationVector + # Get rotation matrix + rotation_matrix = quaternion_to_rotation_matrix( + (rotation.i, rotation.j, rotation.k, rotation.real)) + + # Define 3D axes + axes = np.float32([[axis_length, 0, 0], [0, axis_length, 0], [ + 0, 0, axis_length], [0, 0, 0]]).reshape(-1, 3) + + # Project 3D points to 2D + focal_length = self.screen_width + camera_matrix = np.array([[focal_length, 0, self.screen_width / 2], + [0, focal_length, self.screen_height / 2], + [0, 0, 1]], dtype='double') + dist_coeffs = np.zeros((4, 1)) # Assuming no lens distortion + axes_2d, _ = cv2.projectPoints( + axes, rotation_matrix, np.zeros((3, 1)), camera_matrix, dist_coeffs) + + # Create image and draw the axes + image = np.zeros( + (self.screen_height, self.screen_width, 3), dtype=np.uint8) + axes_2d = np.int32(axes_2d).reshape(-1, 2) + cv2.line(image, tuple(axes_2d[3]), tuple( + axes_2d[0]), (0, 0, 255), 3) # X-axis in red + cv2.line(image, tuple(axes_2d[3]), tuple( + axes_2d[1]), (0, 255, 0), 3) # Y-axis in green + cv2.line(image, tuple(axes_2d[3]), tuple( + axes_2d[2]), (255, 0, 0), 3) # Z-axis in blue + bgra_image = cv2.cvtColor(image, cv2.COLOR_BGR2BGRA) + ros_image = self.bridge.cv2_to_imgmsg(bgra_image, encoding='bgra8') + self.ros_manager.publish('/lcd', ros_image) + + def display_animation(self): + # Ball properties + self.ball_size = 20 + self.ball_color = (255, 0, 255) # Red in BGR format + + # Ball initial position and velocity + self.x, self.y = self.screen_width // 2, self.screen_height // 2 + self.vx, self.vy = 2, 3 # Speed of the ball in x and y direction + self.ros_manager.create_timer('animation', 0.05, self.ball_callback) + def ball_callback(self): + + image = np.zeros((self.screen_height, self.screen_width, 3), dtype=np.uint8) + + # Draw the ball + cv2.circle(image, (self.x, self.y), self.ball_size // 2, self.ball_color, -1) + + # Update the ball's position + self.x += self.vx + self.y += self.vy + + # Bounce off the walls + if self.x <= self.ball_size // 2 or self.x >= self.screen_width - self.ball_size // 2: + self.vx = -self.vx + if self.y <= self.ball_size // 2 or self.y >= self.screen_height - self.ball_size // 2: + self.vy = -self.vy + bgra_image = cv2.cvtColor(image, cv2.COLOR_BGR2BGRA) + ros_image = self.bridge.cv2_to_imgmsg(bgra_image, encoding='bgra8') + self.ros_manager.publish('/lcd', ros_image) diff --git a/Working with RAE/RAE Default App/src/robot/led.py b/Working with RAE/RAE Default App/src/robot/led.py new file mode 100644 index 0000000..50fcd6a --- /dev/null +++ b/Working with RAE/RAE Default App/src/robot/led.py @@ -0,0 +1,28 @@ +from rae_msgs.msg import LEDControl +from std_msgs.msg import ColorRGBA +class LEDController: + def __init__(self, ros_manager): + self.ros_manager = ros_manager + self.ros_manager.create_publisher("/leds", LEDControl) + def set_leds(self, payload): + def hex_to_rgb(hex): + value = hex.lstrip('#') + lv = len(value) + return tuple(int(value[i:i + lv // 3], 16) for i in range(0, lv, lv // 3)) + def normalize(num): + if num == 0: + return float(num) + else: + return float(num)/255.0 + led_msg = LEDControl() + + r,g,b = hex_to_rgb(payload['color']) + + color_msg = ColorRGBA() + color_msg.a = 1.0 + color_msg.r = normalize(r) + color_msg.g = normalize(g) + color_msg.b = normalize(b) + led_msg.data = [color_msg] + led_msg.control_type = led_msg.CTRL_TYPE_ALL + self.ros_manager.publish("/leds", led_msg) \ No newline at end of file diff --git a/Working with RAE/RAE Default App/src/robot/movement.py b/Working with RAE/RAE Default App/src/robot/movement.py new file mode 100644 index 0000000..b6edd91 --- /dev/null +++ b/Working with RAE/RAE Default App/src/robot/movement.py @@ -0,0 +1,14 @@ +from geometry_msgs.msg import Twist +class MovementController: + def __init__(self, ros_manager): + self.ros_manager = ros_manager + self.ros_manager.create_publisher("/cmd_vel", Twist) + def move(self, linear, angular): + twist_msg = Twist() + twist_msg.linear.x = float(linear) + twist_msg.linear.y = 0.0 + twist_msg.linear.z = 0.0 + twist_msg.angular.x = 0.0 + twist_msg.angular.y = 0.0 + twist_msg.angular.z = float(angular) + self.ros_manager.publish('/cmd_vel', twist_msg) \ No newline at end of file diff --git a/Working with RAE/RAE Default App/src/robot/perception/__init__.py b/Working with RAE/RAE Default App/src/robot/perception/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Working with RAE/RAE Default App/src/robot/perception/camera.py b/Working with RAE/RAE Default App/src/robot/perception/camera.py new file mode 100644 index 0000000..5263d62 --- /dev/null +++ b/Working with RAE/RAE Default App/src/robot/perception/camera.py @@ -0,0 +1,141 @@ +import depthai as dai +import robothub + + +class Camera: + """ + A class for managing camera functionalities in a robot, interfacing with both depthai and robothub libraries. + It includes initialization and management of camera streams, publishing capabilities, and camera device control. + + Attributes: + logger: Logger for logging messages and errors. + ros_context_manager (dai.ros.ROSContextManager): Manager for ROS context. + dai_node (dai.ros.ROSNode): ROS node for depthai operations. + device_mxid (str): The serial number of the depthai device. + device_info (dai.DeviceInfo): Information about the depthai device. + device (dai.Device): The depthai device instance. + cal_handler: Calibration handler for the depthai device. + pipeline: The pipeline for camera data processing. + rh_stream_handles (dict): Handles for RobotHub video streams. + ros_stream_handles (dict): Handles for ROS video streams. + + Methods: + stop(): Closes the depthai device connection. + add_rh_stream(stream_name): Adds a RobotHub stream with the given name. + add_ros_stream(stream_name): Adds a ROS stream with the given name. + add_queue(name, callback): Adds a queue to the device for handling callbacks. + start_pipeline(pipeline): Starts the camera pipeline and initializes ROS node and context. + publish_rh(name, color_frame, timestamp, metadata): Publishes video data to RobotHub. + publish_ros(name, msg): Publishes a message to a ROS topic. + """ + def __init__(self, logger): + """ + Initializes the Camera instance. + + Args: + logger: An instance used for logging messages and errors. + """ + + self.logger = logger + self.ros_context_manager = dai.ros.ROSContextManager() + self.ros_context_manager.init([""]) + self.dai_node = dai.ros.ROSNode("dai", dai.ros.ROSNodeOptions(False)) + self.device_mxid = robothub.DEVICES[0].oak["serialNumber"] + self.device_info = dai.DeviceInfo(self.device_mxid) + self.device = dai.Device(self.device_info) + self.cal_handler = self.device.readCalibration() + + self.pipeline = None + self.rh_stream_handles = {} + self.ros_stream_handles = {} + def stop(self): + """ + Closes the connection to the depthai device, ensuring a clean shutdown. + """ + + if self.device: + self.device.close() + + def add_rh_stream(self, stream_name): + """ + Adds a video stream to RobotHub with the specified name. + + Args: + stream_name (str): The name of the stream to be added. + """ + + self.rh_stream_handles[f"{stream_name}"] = robothub.STREAMS.create_video( + self.device_mxid, f"{stream_name}", f"{stream_name}" + ) + + def add_ros_stream(self, stream_name): + """ + Adds a ROS video stream with the specified name and sets up the necessary configurations. + + Args: + stream_name (str): The name of the ROS stream to be added. + """ + + self.ros_stream_handles[f"{stream_name}_mjpeg"] = dai.ros.ImgStreamer(self.dai_node, self.cal_handler, self.stream_name_to_socket(stream_name), stream_name, f"{stream_name}_frame", False, False) + self.ros_stream_handles[f"{stream_name}_mjpeg"].convertFromBitStream(dai.RawImgFrame.Type.BGR888i) + def add_imu_ros_stream(self, stream_name): + """ + Adds a ROS IMU stream with the specified name and sets up the necessary configurations. + + Args: + stream_name (str): The name of the ROS stream to be added. + """ + self.ros_stream_handles[stream_name] = dai.ros.ImuStreamer(self.dai_node, stream_name, "imu_frame", dai.ros.ImuSyncMethod.COPY, 0.0, 0.0, 0.0, 0.0, True, False, False) + + + def add_queue(self, name, callback): + """ + Adds a queue to the depthai device for processing callbacks. + + Args: + name (str): The name of the queue. + callback (callable): The callback function to be added to the queue. + """ + + self.device.getOutputQueue(name, 1, False).addCallback(callback) + + def start_pipeline(self, pipeline): + """ + Starts the camera pipeline, initializes the ROS node, and spins the ROS context manager. + + Args: + pipeline: The pipeline configuration for the camera. + """ + + self.device.startPipeline(pipeline) + self.ros_context_manager.add_node(self.dai_node) + self.ros_context_manager.spin() + + def publish_rh(self, name, color_frame, timestamp, metadata): + """ + Publishes video data to a RobotHub stream. + + Args: + name (str): The name of the RobotHub stream. + color_frame: The color frame data to be published. + timestamp: The timestamp associated with the frame. + metadata: Additional metadata for the frame. + """ + self.rh_stream_handles[name].publish_video_data(bytes(color_frame), timestamp, metadata) + + def publish_ros(self, name, msg): + """ + Publishes a message to a ROS topic. + + Args: + name (str): The name of the ROS topic. + msg: The message to be published. + """ + self.ros_stream_handles[name].publish(name, msg) + + def stream_name_to_socket(self, stream_name): + if stream_name == 'stream_front': + return dai.CameraBoardSocket.CAM_C + elif stream_name == 'stream_back': + return dai.CameraBoardSocket.CAM_D + \ No newline at end of file diff --git a/Working with RAE/RAE Default App/src/robot/perception/detections.py b/Working with RAE/RAE Default App/src/robot/perception/detections.py new file mode 100644 index 0000000..c9fd484 --- /dev/null +++ b/Working with RAE/RAE Default App/src/robot/perception/detections.py @@ -0,0 +1,141 @@ +from dataclasses import dataclass, field +from typing import Optional, List, Tuple +import depthai as dai +labelMap = [ + "person", + "bicycle", + "car", + "motorbike", + "aeroplane", + "bus", + "train", + "truck", + "boat", + "traffic light", + "fire hydrant", + "stop sign", + "parking meter", + "bench", + "bird", + "cat", + "dog", + "horse", + "sheep", + "cow", + "elephant", + "bear", + "zebra", + "giraffe", + "backpack", + "umbrella", + "handbag", + "tie", + "suitcase", + "frisbee", + "skis", + "snowboard", + "sports ball", + "kite", + "baseball bat", + "baseball glove", + "skateboard", + "surfboard", + "tennis racket", + "bottle", + "wine glass", + "cup", + "fork", + "knife", + "spoon", + "bowl", + "banana", + "apple", + "sandwich", + "orange", + "broccoli", + "carrot", + "hot dog", + "pizza", + "donut", + "cake", + "chair", + "sofa", + "pottedplant", + "bed", + "diningtable", + "toilet", + "tvmonitor", + "laptop", + "mouse", + "remote", + "keyboard", + "cell phone", + "microwave", + "oven", + "toaster", + "sink", + "refrigerator", + "book", + "clock", + "vase", + "scissors", + "teddy bear", + "hair drier", + "toothbrush", + ] +@dataclass(frozen=True) +class Detections: + target: Optional[dai.ImgDetection] = None + other: List[dai.ImgDetection] = field(default_factory=list) + + +def create_detection_metadata(detections, width, height): + def build_detection_metadata(detection, color): + return { + "bbox": [ + detection.xmin * width, + detection.ymin * height, + detection.xmax * width, + detection.ymax * height, + ], + "label": f"{labelMap[detection.label]} ({int(detection.confidence * 10000) / 100}%)", + "color": color, + } + + + metadata = { + "platform": "robothub", + "frame_shape": [width, height], + "config": { + "output": {"img_scale": 1.0, "show_fps": True, "clickable": True}, + "detection": { + "thickness": 1, + "fill_transparency": 0.05, + "box_roundness": 0, + "color": [0, 255, 255], + "bbox_style": 0, + "line_width": 0.5, + "line_height": 0.5, + "hide_label": False, + "label_position": 0, + "label_padding": 10, + }, + "text": { + "font_color": [255, 255, 0], + "font_transparency": 0.5, + "font_scale": 1.0, + "font_thickness": 2, + "bg_transparency": 0.5, + "bg_color": [0, 0, 0], + }, + }, + "objects": [ + { + "type": "detections", + "detections": [build_detection_metadata(detection, [0, 255, 255]) for detection in detections.other] + + ([build_detection_metadata(detections.target, [255, 0, 0])] if detections.target else []), + } + ], + } + return metadata + diff --git a/Working with RAE/RAE Default App/src/robot/perception/pipeline.py b/Working with RAE/RAE Default App/src/robot/perception/pipeline.py new file mode 100644 index 0000000..cde5aed --- /dev/null +++ b/Working with RAE/RAE Default App/src/robot/perception/pipeline.py @@ -0,0 +1,73 @@ +from pathlib import Path + +import depthai as dai + +BLOB_PATH = Path("/app/yolov6n_416x416_openvino2022.1_vpux.blob") + + +def build_pipeline(front_socket: dai.CameraBoardSocket, front_stream_name, rear_socket, rear_stream_name)-> dai.Pipeline: + pipeline = dai.Pipeline() + imu = pipeline.create(dai.node.IMU) + imu.enableIMUSensor(dai.IMUSensor.ACCELEROMETER_RAW, 400) + imu.enableIMUSensor(dai.IMUSensor.GYROSCOPE_RAW, 400) + imu.enableIMUSensor(dai.IMUSensor.ROTATION_VECTOR, 400) + imu.setBatchReportThreshold(1) + imu.setMaxBatchReports(10) + xout_imu = pipeline.create(dai.node.XLinkOut) + xout_imu.setStreamName("imu") + imu.out.link(xout_imu.input) + + def add_side(socket: dai.CameraBoardSocket, stream_name): + rgb = pipeline.create(dai.node.ColorCamera) + rgb.setBoardSocket(socket) + rgb.setResolution(dai.ColorCameraProperties.SensorResolution.THE_800_P) + rgb.setInterleaved(False) + rgb.setPreviewSize(416, 416) + rgb.setColorOrder(dai.ColorCameraProperties.ColorOrder.BGR) + rgb.setFps(8) # Limitation of the current preview source at 416x416 resolution + + h264_encoder = pipeline.create(dai.node.VideoEncoder) + h264_encoder.setDefaultProfilePreset(8, dai.VideoEncoderProperties.Profile.H264_MAIN) + h264_encoder.setQuality(50) + h264_encoder.setKeyframeFrequency(30) + h264_encoder.setBitrateKbps(1800) + h264_encoder.input.setQueueSize(1) + rgb.video.link(h264_encoder.input) + + xout_color_h264 = pipeline.create(dai.node.XLinkOut) + xout_color_h264.setStreamName(f"{stream_name}") + xout_color_h264.input.setBlocking(False) + h264_encoder.bitstream.link(xout_color_h264.input) + + mjpeg_encoder = pipeline.create(dai.node.VideoEncoder) + mjpeg_encoder.setDefaultProfilePreset(8, dai.VideoEncoderProperties.Profile.MJPEG) + mjpeg_encoder.setQuality(50) + mjpeg_encoder.setKeyframeFrequency(30) + mjpeg_encoder.setBitrateKbps(1800) + mjpeg_encoder.input.setQueueSize(1) + rgb.video.link(mjpeg_encoder.input) + + mjpeg_xout_color = pipeline.create(dai.node.XLinkOut) + mjpeg_xout_color.setStreamName(f"{stream_name}_mjpeg") + mjpeg_xout_color.input.setBlocking(False) + mjpeg_encoder.bitstream.link(mjpeg_xout_color.input) + + detectionNetwork = pipeline.createYoloDetectionNetwork() + detectionNetwork.setConfidenceThreshold(0.6) + detectionNetwork.setNumClasses(80) + detectionNetwork.setCoordinateSize(4) + detectionNetwork.setIouThreshold(0.5) + detectionNetwork.setBlobPath(BLOB_PATH) + detectionNetwork.setNumInferenceThreads(8) + detectionNetwork.input.setBlocking(False) + detectionNetwork.input.setQueueSize(1) + rgb.preview.link(detectionNetwork.input) + + xout_nn = pipeline.create(dai.node.XLinkOut) + xout_nn.input.setBlocking(False) + xout_nn.setStreamName(f"{stream_name}_nn") + detectionNetwork.out.link(xout_nn.input) + + add_side(front_socket, front_stream_name) + add_side(rear_socket, rear_stream_name) + return pipeline diff --git a/Working with RAE/RAE Default App/src/robot/robot.py b/Working with RAE/RAE Default App/src/robot/robot.py new file mode 100644 index 0000000..beee95c --- /dev/null +++ b/Working with RAE/RAE Default App/src/robot/robot.py @@ -0,0 +1,135 @@ +from typing import Optional, List, Tuple + +from src.api.ros.ros2_manager import ROS2Manager +from src.robot.display import DisplayController +from src.robot.led import LEDController +from src.robot.movement import MovementController +from src.robot.audio import AudioController +from sensor_msgs.msg import BatteryState + + +class Robot: + """ + A class representing a robot, integrating various controllers for movement, display, and LED management, + and interfacing with ROS2 for communication and control. + + Attributes: + logger: An instance used for logging messages and errors. + ros_manager (ROS2Manager): An object for managing ROS2 communications and functionalities. + battery_state (BatteryState): Stores the current state of the robot's battery. + led_controller (LEDController): Controls the robot's LEDs. + display_controller (DisplayController): Manages the robot's display. + movement_controller (MovementController): Handles the robot's movement. + + Methods: + battery_state_cb(data): Callback method for updating battery state. + start(): Initializes the robot's components and starts ROS2 communications. + stop(): Stops the ROS2 communications and shuts down the robot's components. + move(velocity): Commands the robot to move at a specified velocity. + display_face(image_data): Displays an image on the robot's face. + set_leds(led_data): Sets the LED configuration on the robot. + get_battery(): Retrieves the current battery state. + """ + + def __init__(self, logger): + """ + Initializes the Robot instance. + + Args: + logger: An instance used for logging messages and errors. + """ + + self.logger = logger + self.ros_manager = None + self.battery_state = None + self.led_controller = None + self.display_controller = None + self.movement_controller = None + self.audio_controller = None + + def battery_state_cb(self, data): + self.battery_state = data + + def start(self): + """ + Initializes and starts the robot's components and ROS2 communications. + Sets up necessary controllers and subscribers for the robot's functionalities. + """ + self.ros_manager = ROS2Manager("base_container") + self.ros_manager.start() + self.led_controller = LEDController(self.ros_manager) + self.display_controller = DisplayController(self.ros_manager) + self.movement_controller = MovementController(self.ros_manager) + self.audio_controller = AudioController(self.ros_manager) + self.ros_manager.create_subscriber( + "/battery_status", BatteryState, self.battery_state_cb) + + def stop(self): + """ + Stops the ROS2 communications and deactivates the robot's controllers. + Ensures a clean shutdown of all components. + """ + self.display_controller.stop() + self.ros_manager.stop() + + def move(self, linear, angular): + """ + Commands the robot to move at the specified velocity. + + Args: + linear: Linear velocity. + angular: Angular velocity. + """ + self.movement_controller.move(linear, angular) + + def display_face(self, payload): + """ + Displays face based on given payload. + + Args: + payload: Data representing the image to be displayed. + """ + + self.display_controller.display_face(payload) + + def display_image(self, image): + """ + Displays given image in OpenCV format + + Args: + image: An OpenCV mat + """ + self.display_controller.display_image(image) + + def display_imu_data(self, imu_data): + """ + Displays IMU data as 3D axes + + Args: + imu_data: dai.IMUData + """ + self.display_controller.display_imu_data(imu_data) + + def set_leds(self, led_data): + """ + Sets the robot's LEDs based on the provided LED configuration. + + Args: + led_data: Data or instructions to set the LED configuration. + """ + self.led_controller.set_leds(led_data) + + def get_battery(self): + """ + Retrieves the current state of the robot's battery. + + Returns: + BatteryState: The current state of the battery. + """ + return self.battery_state + def honk(self): + self.audio_controller.honk() + def display_animation(self): + self.display_controller.display_animation() + def play_random_sfx(self): + self.audio_controller.play_random_sfx() \ No newline at end of file diff --git a/Working with RAE/RAE Default App/src/utilities/__init__.py b/Working with RAE/RAE Default App/src/utilities/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Working with RAE/RAE Default App/src/utilities/logging.py b/Working with RAE/RAE Default App/src/utilities/logging.py new file mode 100644 index 0000000..ba433be --- /dev/null +++ b/Working with RAE/RAE Default App/src/utilities/logging.py @@ -0,0 +1,14 @@ +import logging + +class Log: + def __init__(self): + self.logger = logging.getLogger(__name__) + self.handler = logging.FileHandler("./logs/app.log") + self.formatter = logging.Formatter("%(asctime)s %(name)s %(levelname)s: %(message)s") + self.handler.setFormatter(self.formatter) + self.logger.addHandler(self.handler) + + def info(self, msg: str): + self.logger.info(msg) + def error(self, msg: str): + self.logger.error(msg) \ No newline at end of file diff --git a/Working with RAE/RAE Default App/start_ros.sh b/Working with RAE/RAE Default App/start_ros.sh new file mode 100644 index 0000000..57d583d --- /dev/null +++ b/Working with RAE/RAE Default App/start_ros.sh @@ -0,0 +1,9 @@ +#!/bin/bash +set -e + +# setup ros environment +source "/opt/ros/$ROS_DISTRO/setup.bash" +source "/ws/install/setup.bash" + +export ROS_DOMAIN_ID=30 # setup domain id +ros2 launch rae_hw control.launch.py enable_battery_status:=false # spustil launch diff --git a/Working with RAE/RAE Default App/tsconfig.json b/Working with RAE/RAE Default App/tsconfig.json new file mode 100644 index 0000000..e9d3985 --- /dev/null +++ b/Working with RAE/RAE Default App/tsconfig.json @@ -0,0 +1,3 @@ +{ + "extends": "./frontend-src/tsconfig.json", +} diff --git a/Working with RAE/RAE Default App/yolov6n_416x416_openvino2022.1_vpux.blob b/Working with RAE/RAE Default App/yolov6n_416x416_openvino2022.1_vpux.blob new file mode 100644 index 0000000..fa4d9f5 Binary files /dev/null and b/Working with RAE/RAE Default App/yolov6n_416x416_openvino2022.1_vpux.blob differ diff --git a/Working with ROS/README.md b/Working with ROS/README.md new file mode 100644 index 0000000..ecd4933 --- /dev/null +++ b/Working with ROS/README.md @@ -0,0 +1,14 @@ +# Working with ROS + +This application demonstrates how to set up ROS working environment. + +## Setup + +Application should use Docker image that has ROS preinstalled (or installs it as specified in custom Dockerfile). This can be for example one of the official ROS images. +To enable visibility of ROS system libraries while running the App, you can update `pre_launch` configuration in `robotapp.toml` in following way: +`pre_launch = "export ROS_DOMAIN_ID=30\n. /opt/ros/$ROS_DISTRO/setup.sh\n. /ws/install/setup.sh"` +- `export ROS_DOMAIN_ID=30` - setting up correct ROS domaind ID when running +- `. /opt/ros/$ROS_DISTRO/setup.sh` - sourcing main ROS install +- `. /ws/install/setup.sh` - sourcing custom ROS package + +In the App itself you can either create your own Python nodes via rclpy, or launch other nodes, for example via using separate bash script. \ No newline at end of file diff --git a/Working with ROS/app.py b/Working with ROS/app.py new file mode 100644 index 0000000..916b116 --- /dev/null +++ b/Working with ROS/app.py @@ -0,0 +1,19 @@ +import os +import signal +import subprocess +from robothub import BaseApplication + +class Application(BaseApplication): + def __init__(self): + super().__init__() + self.ros_proc = None + def on_start(self): + env = dict(os.environ) + self.ros_proc = subprocess.Popen( + "bash -c 'chmod +x /app/start_ros.sh ; /app/start_ros.sh'", shell=True, env=env, preexec_fn=os.setsid + ) + def on_stop(self): + if self.ros_proc is not None: + pgid = os.getpgid(self.ros_proc.pid) + os.killpg(pgid, signal.SIGTERM) + \ No newline at end of file diff --git a/Working with ROS/robotapp.toml b/Working with ROS/robotapp.toml new file mode 100644 index 0000000..33530e5 --- /dev/null +++ b/Working with ROS/robotapp.toml @@ -0,0 +1,19 @@ +config_version = "2.0" +configuration = [] + +[info] +name = "ROS App" +description = "ROS App environment" + +[runtime] +application = "app.py#Application" +workdir = "/app" +pre_launch = "export ROS_DOMAIN_ID=30\n. /opt/ros/$ROS_DISTRO/setup.sh\n. /ws/install/setup.sh" + + +[runtime.frontend] +redirectToIndex = true + +[runtime.runs_on] +type = "image" +name = "ros:humble-ros-base" diff --git a/Working with ROS/start_ros.sh b/Working with ROS/start_ros.sh new file mode 100644 index 0000000..4f05856 --- /dev/null +++ b/Working with ROS/start_ros.sh @@ -0,0 +1,10 @@ +#!/bin/bash +set -e + +# setup ros environment +source "/opt/ros/$ROS_DISTRO/setup.bash" +source "/ws/install/setup.bash" + +export ROS_DOMAIN_ID=30 # setup domain id +# Add your custom launch file here +# ros2 launch demo_nodes_cpp talker_listener.launch.py \ No newline at end of file