local l_script_FirstAncestor_0 = script:FindFirstAncestor("AnimationClipEditor");
local v1 = require(l_script_FirstAncestor_0.Packages.Roact);
local v2 = require(l_script_FirstAncestor_0.Packages.RoactRodux);
local v3 = require(l_script_FirstAncestor_0.Packages.Framework);
local l_DragListener_0 = v3.UI.DragListener;
local l_ContextServices_0 = v3.ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local l_KeyboardListener_0 = v3.UI.KeyboardListener;
local l_Dash_0 = v3.Dash;
local l_copy_0 = l_Dash_0.copy;
local l_keys_0 = l_Dash_0.keys;
local v11 = require(l_script_FirstAncestor_0.Src.Util.Constants);
local v12 = require(l_script_FirstAncestor_0.Src.Util.TrackUtils);
local v13 = require(l_script_FirstAncestor_0.Src.Util.KeyframeUtils);
local v14 = require(l_script_FirstAncestor_0.Src.Util.Input);
local v15 = require(l_script_FirstAncestor_0.Src.Util.DoubleClickDetector);
local v16 = require(l_script_FirstAncestor_0.Src.Util.compare);
local v17 = require(l_script_FirstAncestor_0.Src.Util.DragContext);
local v18 = require(l_script_FirstAncestor_0.Src.Components.EventTrack);
local v19 = require(l_script_FirstAncestor_0.Src.Components.SelectionBox);
local v20 = require(l_script_FirstAncestor_0.Src.Components.EventActions);
local v21 = require(l_script_FirstAncestor_0.Src.Thunks.History.AddWaypoint);
local v22 = require(l_script_FirstAncestor_0.Src.Thunks.Events.SetEvents);
local v23 = require(l_script_FirstAncestor_0.Src.Thunks.Events.SelectEvent);
local v24 = require(l_script_FirstAncestor_0.Src.Thunks.Events.DeselectEvent);
local _ = require(l_script_FirstAncestor_0.Src.Thunks.Events.DeleteSelectedEvents);
local v26 = require(l_script_FirstAncestor_0.Src.Thunks.Events.MoveSelectedEvents);
local v27 = require(l_script_FirstAncestor_0.Src.Actions.SetEventEditingTick);
local v28 = require(l_script_FirstAncestor_0.Src.Actions.SetPlayState);
local v29 = require(l_script_FirstAncestor_0.Src.Actions.SetRightClickContextInfo);
local v30 = require(l_script_FirstAncestor_0.Src.Actions.SetSelectedEvents);
local v31 = require(l_script_FirstAncestor_0.Src.Actions.SetSelectedKeyframes);
local v32 = require(l_script_FirstAncestor_0.Src.Components.EditEventsDialog.EditEventsDialog);
local v33 = v1.PureComponent:extend("EventsController");
v33.init = function(v34)
    v34.state = {
        dragging = false,
        draggingSelection = nil,
        dragTick = nil,
        showContextMenu = false,
        eventEditingTick = nil,
        hasDragWaypoint = false,
        availableEvents = {},
        eventFilters = {}
    };
    local v35, v36 = v1.createBinding(nil);
    v34.selectDragStart = v35;
    v34.updateSelectDragStart = v36;
    v35, v36 = v1.createBinding(nil);
    v34.selectDragEnd = v35;
    v34.updateSelectDragEnd = v36;
    v34.DragContext = nil;
    v34.isMultiSelecting = false;
    v34.mouseDownOnEvent = false;
    v34.mouseDownInTimeline = false;
    v34.doubleClickDetector = v15.new();
    v34.addDragWaypoint = function()
        if not v34.state.hasDragWaypoint then
            v34.props.AddWaypoint();
            v34:setState({
                hasDragWaypoint = true
            });
        end;
    end;
    v34.getTickFromPosition = function(v37, v38)
        local v39 = v12.getKeyframeFromPosition(v37, v34.props.StartTick, v34.props.EndTick, v34.props.AbsolutePosition.X + v34.props.TrackPadding / 2, v34.props.AbsoluteSize.X - v34.props.TrackPadding);
        if v38 and v34.props.SnapMode ~= v11.SNAP_MODES.None then
            v39 = v13.getNearestFrame(v39, v34.props.FrameRate);
        end;
        return v39;
    end;
    v34.onEventDragStarted = function(v40)
        v34.DragContext = v17.newEvents(v34.props.AnimationData, v34.props.SelectedEvents, v34.state.eventFilters, v40);
        v34:setState({
            dragging = true,
            dragTick = v40,
            hasDragWaypoint = false
        });
    end;
    v34.onEventDragMoved = function(v41)
        local v42 = v34.getTickFromPosition(v41.Position, true);
        if not (not (v34.state.dragTick ~= v42) or not v34.DragContext) then
            v34.addDragWaypoint();
            v34.DragContext:moveEvents(v42);
            v34.props.MoveSelectedEvents(v34.DragContext);
            v34:setState({
                dragTick = v42
            });
        end;
    end;
    v34.onEventDragEnded = function()
        v34:setState({
            dragging = false,
            dragTick = v1.None,
            hasDragWaypoint = false
        });
        v34.DragContext = nil;
    end;
    v34.onSelectDragStarted = function(v43)
        if not v34.state.showContextMenu then
            v34.updateSelectDragStart(Vector2.new(v43.Position.X, v11.TRACK_HEIGHT));
            v34.updateSelectDragEnd(Vector2.new(v43.Position.X, v11.TRACK_HEIGHT));
            v34:setState({
                draggingSelection = true
            });
        end;
    end;
    v34.onSelectDragMoved = function(v44)
        v34.props.DeselectAllEvents();
        local l_Position_0 = v44.Position;
        local v46 = v34.selectDragStart:getValue();
        local v47 = Vector2.new(math.min(l_Position_0.X, v46.X), 0);
        local v48 = Vector2.new(math.max(l_Position_0.X, v46.X), 0);
        local v49 = Vector2.new(((v34.props.AbsoluteSize.X - v34.props.TrackPadding) / (v34.props.EndTick - v34.props.StartTick)) / 2, 0);
        local v50 = v34.getTickFromPosition(v47 + v49, false);
        local v51 = v34.getTickFromPosition(v48 - v49, false);
        for _, v53 in ipairs(v34.props.AnimationData.Events.Keyframes) do
            if v50 <= v53 and v53 <= v51 then
                v34.props.SelectEvent(v53, true);
            end;
        end;
        v34.updateSelectDragEnd(Vector2.new(l_Position_0.X, v11.TRACK_HEIGHT * 2));
    end;
    v34.onSelectDragEnded = function()
        v34:setState({
            draggingSelection = v1.None
        });
        v34.updateSelectDragStart(nil);
        v34.updateSelectDragEnd(nil);
    end;
    v34.showMenu = function()
        v34.props.SetPlayState(v11.PLAY_STATE.Pause);
        v34:setState({
            showContextMenu = true
        });
    end;
    v34.hideMenu = function()
        v34:setState({
            showContextMenu = false
        });
    end;
    v34.setEventEditingTick = function(v54)
        v34:setState({
            eventEditingTick = v54 or v1.None
        });
    end;
    v34.setEventsHandler = function(v55)
        if not v34.props.Analytics then
            return ;
        else
            return v34.props.SetEvents(v55, v34.props.Analytics);
        end;
    end;
    v34.toggleEventFilter = function(v56)
        local v57 = nil;
        v57 = l_copy_0(v34.state.eventFilters);
        v57[v56] = not v57[v56] or nil;
        v34:setState({
            eventFilters = v57
        });
    end;
    v34.clearEventFilters = function()
        v34:setState({
            eventFilters = {}
        });
    end;
    v34.setAllEventFilters = function()
        local v58 = {};
        for _, v60 in v34.state.availableEvents, nil, nil do
            v58[v60] = true;
        end;
        v34:setState({
            eventFilters = v58
        });
    end;
end;
v33.handleTimelineInputBegan = function(v61, v62, _)
    if v62.UserInputType == Enum.UserInputType.Keyboard then
        if v14.isMultiSelectKey(v62.KeyCode) then
            v61.isMultiSelecting = true;
            return ;
        end;
    elseif v62.UserInputType == Enum.UserInputType.MouseButton1 then
        v61.props.DeselectAllEvents();
        v61.mouseDownInTimeline = true;
        v61.onSelectDragStarted(v62);
    end;
end;
v33.handleTimelineInputEnded = function(v64, v65, _)
    if v65.UserInputType == Enum.UserInputType.Keyboard then
        if v14.isMultiSelectKey(v65.KeyCode) then
            v64.isMultiSelecting = false;
            return ;
        end;
    elseif v65.UserInputType == Enum.UserInputType.MouseButton2 then
        local v67 = v64.getTickFromPosition(v65.Position, true);
        v64.props.SetRightClickContextInfo({
            Tick = v67
        });
        v64.props.SelectEvent(v67, false);
        v64.showMenu();
        return ;
    elseif v65.UserInputType == Enum.UserInputType.MouseButton1 then
        local v68 = v64.getTickFromPosition(v65.Position, true);
        if v64.doubleClickDetector:isDoubleClick() then
            v64.props.DeselectAllEvents();
            v64.props.SelectEvent(v68, false);
            v64.props.SetEventEditingTick(v68);
        end;
    end;
end;
v33.handleEventRightClick = function(v69, v70)
    v69.props.SelectEvent(v70, false);
    v69.props.SetRightClickContextInfo({
        OnEvent = true,
        Tick = v70
    });
    v69.showMenu();
end;
v33.handleEventInputBegan = function(v71, v72, v73, v74)
    if v74.UserInputType == Enum.UserInputType.MouseButton1 then
        v71.mouseDownOnEvent = true;
        if not v73 then
            v71.props.SelectEvent(v72, v71.isMultiSelecting);
        elseif v71.isMultiSelecting then
            v71.props.DeselectEvent(v72);
            return ;
        end;
    end;
end;
v33.handleEventInputEnded = function(v75, v76, v77, v78)
    if not ((not (v78.UserInputType == Enum.UserInputType.MouseMovement) or not v77) or not v75.mouseDownOnEvent) then
        v75.onEventDragStarted(v76);
        v75.mouseDownOnEvent = false;
    end;
    if v78.UserInputType == Enum.UserInputType.MouseButton1 then
        v75.mouseDownOnEvent = false;
        if not (not v77 or not v75.doubleClickDetector:isDoubleClick()) then
            v75.props.DeselectAllEvents();
            v75.props.SelectEvent(v76, false);
            v75.props.SetEventEditingTick(v76);
        end;
    end;
end;
v33.refreshEventNames = function(v79)
    local l_props_0 = v79.props;
    local l_state_0 = v79.state;
    local v82 = not not l_props_0.AnimationData and l_props_0.AnimationData.Events or nil;
    local v83 = {};
    if v82 then
        for _, v85 in v82.Data, nil, nil do
            for v86, _ in v85, nil, nil do
                v83[v86] = true;
            end;
        end;
    end;
    local v88 = l_keys_0(v83);
    table.sort(v88);
    local v89, v90 = v16(l_state_0.availableEvents, v88);
    local v91 = l_copy_0(l_state_0.eventFilters);
    for _, v93 in v89, nil, nil do
        v91[v93] = true;
    end;
    for _, v95 in v90, nil, nil do
        v91[v95] = nil;
    end;
    v79:setState({
        availableEvents = v88,
        eventFilters = v91
    });
end;
v33.didUpdate = function(v96, v97)
    local l_props_1 = v96.props;
    if l_props_1.EventEditingTick ~= v96.state.eventEditingTick then
        if l_props_1.EventEditingTick ~= nil then
            spawn(function()
                v96.setEventEditingTick(l_props_1.EventEditingTick);
            end);
        else
            v96.setEventEditingTick(l_props_1.EventEditingTick);
        end;
    end;
    local v99 = not not l_props_1.AnimationData and l_props_1.AnimationData.Events or nil;
    local v100 = not not v97.AnimationData and v97.AnimationData.Events or nil;
    if v99 ~= v100 then
        v96:refreshEventNames(v100);
    end;
end;
v33.didMount = function(v101)
    v101:refreshEventNames();
end;
v33.render = function(v102)
    local l_props_2 = v102.props;
    local l_state_1 = v102.state;
    local l_Active_0 = l_props_2.Active;
    local l_AbsolutePosition_0 = l_props_2.AbsolutePosition;
    local l_AbsoluteSize_0 = l_props_2.AbsoluteSize;
    local l_AnimationData_0 = l_props_2.AnimationData;
    local l_StartTick_0 = l_props_2.StartTick;
    local l_EndTick_0 = l_props_2.EndTick;
    local l_dragging_0 = l_state_1.dragging;
    local l_draggingSelection_0 = l_state_1.draggingSelection;
    local l_showContextMenu_0 = l_state_1.showContextMenu;
    local l_eventEditingTick_0 = l_state_1.eventEditingTick;
    return v1.createElement("Frame", {
        LayoutOrder = 0,
        Size = UDim2.new(1, 0, 0, v11.TRACK_HEIGHT),
        BackgroundTransparency = 1,
        [v1.Event.InputBegan] = function(_, v116)
            if v116.UserInputType ~= Enum.UserInputType.Keyboard then
                v102:handleTimelineInputBegan(v116);
            end;
        end,
        [v1.Event.InputEnded] = function(_, v118)
            if v118.UserInputType ~= Enum.UserInputType.Keyboard then
                v102:handleTimelineInputEnded(v118);
            end;
        end
    }, {
        Track = v1.createElement(v18, {
            Events = not not l_AnimationData_0 and l_AnimationData_0.Events or nil,
            SelectedEvents = l_props_2.SelectedEvents,
            EditingTick = l_eventEditingTick_0,
            Size = UDim2.new(1, 0, 0, v11.TRACK_HEIGHT),
            Width = l_AbsoluteSize_0.X - v102.props.TrackPadding,
            TrackPadding = v102.props.TrackPadding,
            StartTick = l_StartTick_0,
            EndTick = l_EndTick_0,
            ShowBackground = true,
            ZIndex = 1,
            AvailableEvents = v102.state.availableEvents,
            EventFilters = v102.state.eventFilters,
            ToggleEventFilter = v102.toggleEventFilter,
            ClearEventFilters = v102.clearEventFilters,
            SetAllEventFilters = v102.setAllEventFilters,
            OnEventRightClick = function(v119)
                v102:handleEventRightClick(v119);
            end,
            OnEventInputBegan = function(v120, v121, v122)
                v102:handleEventInputBegan(v120, v121, v122);
            end,
            OnEventInputEnded = function(v123, v124, v125)
                v102:handleEventInputEnded(v123, v124, v125);
            end
        }),
        KeyboardListener = v1.createElement(l_KeyboardListener_0, {
            OnKeyPressed = function(v126, v127)
                v102:handleTimelineInputBegan(v126, v127);
            end,
            OnKeyReleased = function(v128)
                v102:handleTimelineInputEnded(v128);
            end
        }),
        DragTarget = l_dragging_0 and v1.createElement(l_DragListener_0, {
            OnDragMoved = v102.onEventDragMoved,
            OnDragEnded = v102.onEventDragEnded
        }),
        MultiSelectBox = l_draggingSelection_0 and v1.createElement(v19, {
            OnDragMoved = v102.onSelectDragMoved,
            OnDragEnded = v102.onSelectDragEnded,
            SelectionStart = v102.selectDragStart,
            SelectionEnd = v102.selectDragEnd,
            SourceExtents = Rect.new(l_AbsolutePosition_0, l_AbsolutePosition_0 + l_AbsoluteSize_0)
        }),
        EventActions = (l_Active_0 and l_AnimationData_0) and v1.createElement(v20, {
            ShowMenu = l_showContextMenu_0,
            EventFilters = v102.state.eventFilters,
            OnMenuOpened = v102.hideMenu,
            OnEditEvents = l_props_2.SetEventEditingTick
        }),
        EditEventsDialog = (l_AnimationData_0 and l_eventEditingTick_0) and v1.createElement(v32, {
            Events = l_AnimationData_0.Events,
            Tick = l_eventEditingTick_0,
            OnSaved = v102.setEventsHandler,
            OnClose = l_props_2.SetEventEditingTick
        })
    });
end;
return (v2.connect(function(v129, _)
    return {
        AnimationData = v129.AnimationData,
        Active = v129.Status.Active,
        SelectedEvents = v129.Status.SelectedEvents,
        EventEditingTick = v129.Status.EventEditingTick,
        FrameRate = v129.Status.FrameRate,
        SnapMode = v129.Status.SnapMode
    };
end, function(v131)
    return {
        AddWaypoint = function()
            v131(v21());
        end,
        SetEvents = function(v132, v133)
            v131(v21());
            v131(v22(v132, v133));
        end,
        SelectEvent = function(v134, v135)
            v131(v31({}));
            v131(v23(v134, v135));
        end,
        DeselectEvent = function(v136)
            v131(v24(v136));
        end,
        MoveSelectedEvents = function(v137)
            v131(v26(v137));
        end,
        DeselectAllEvents = function()
            v131(v31({}));
            v131(v30({}));
        end,
        SetRightClickContextInfo = function(v138)
            v131(v29(v138));
        end,
        SetEventEditingTick = function(v139)
            v131(v27(v139));
        end or nil,
        SetPlayState = function(v140)
            v131(v28(v140));
        end
    };
end)((l_withContext_0({
    Analytics = l_ContextServices_0.Analytics
})(v33))));


local l_script_FirstAncestor_0 = script:FindFirstAncestor("AnimationClipEditor");
local v1 = require(l_script_FirstAncestor_0.Packages.Roact);
local v2 = require(l_script_FirstAncestor_0.Packages.RoactRodux);
local v3 = require(l_script_FirstAncestor_0.Packages.Framework);
local l_Button_0 = v3.UI.Button;
local l_ContextServices_0 = v3.ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local v7 = require(l_script_FirstAncestor_0.Src.Util.RigUtils);
local v8 = require(l_script_FirstAncestor_0.Src.Components.FaceControlsEditor.FaceControlsEditorWindow);
local v9 = require(l_script_FirstAncestor_0.Src.Thunks.ToggleFaceControlsEditorEnabled);
local v10 = require(l_script_FirstAncestor_0.Src.Thunks.ToggleShowFaceControlsEditorPanel);
local v11 = require(l_script_FirstAncestor_0.Src.Actions.SetFaceControlsEditorEnabled);
local v12 = require(l_script_FirstAncestor_0.Src.Actions.SetShowFaceControlsEditorPanel);
local v13 = require(l_script_FirstAncestor_0.Src.Actions.SetSelectedTracks);
local v14 = require(l_script_FirstAncestor_0.Src.Thunks.SetSelectedTracks);
local v15 = require(l_script_FirstAncestor_0.Src.Components.TeachingCallout);
local v16 = require(l_script_FirstAncestor_0.LuaFlags.GetFFlagSelectFromViewport);
local v17 = v1.PureComponent:extend("FaceControlsEditorController");
local l_GetTextSize_0 = v3.Util.GetTextSize;
v17.init = function(v19)
    v19.state = {
        showMenu = false,
        showFaceControlsEditorPanel = false
    };
    v19.showMenu = function()
        v19:setState({
            showMenu = true
        });
    end;
    v19.hideMenu = function()
        v19:setState({
            showMenu = false
        });
    end;
    v19.setShowFaceControlsEditorPanel = function(v20)
        v19:setState({
            showFaceControlsEditorPanel = v20
        });
    end;
    v19.getLastSelectedTrack = function()
        if not v19.props.SelectedTracks then
            return ;
        else
            return v19.props.SelectedTracks[#v19.props.SelectedTracks];
        end;
    end;
    v19.toggleFaceControlsEditorEnabledHandler = function()
        return v19.props.ToggleFaceControlsEditorEnabled(v19.props.Analytics);
    end;
end;
v17.didUpdate = function(v21)
    local l_props_0 = v21.props;
    if l_props_0.ShowFaceControlsEditorPanel ~= v21.state.showFaceControlsEditorPanel then
        if l_props_0.ShowFaceControlsEditorPanel ~= nil then
            spawn(function()
                v21.setShowFaceControlsEditorPanel(l_props_0.ShowFaceControlsEditorPanel);
            end);
            return ;
        else
            v21.setShowFaceControlsEditorPanel(l_props_0.ShowFaceControlsEditorPanel);
        end;
    end;
end;
v17.render = function(v23)
    local l_Localization_0 = v23.props.Localization;
    local l_props_1 = v23.props;
    local l_Stylizer_0 = l_props_1.Stylizer;
    local v27 = v23.getLastSelectedTrack();
    local l_button_0 = l_Stylizer_0.button;
    local l_state_0 = v23.state;
    return v23.props.RootInstance and v1.createElement("Frame", {
        Position = l_props_1.Position,
        Size = UDim2.new(0, l_GetTextSize_0(l_Localization_0:getText("Title", "FACE"), l_Stylizer_0.ikTheme.textSize, l_Stylizer_0.font, Vector2.new(1000, 1000)).X + 10, 0, 18),
        BackgroundTransparency = 1,
        AnchorPoint = Vector2.new(0, 0.5),
        LayoutOrder = 2
    }, {
        FaceControlsEditorButton = (l_props_1.RootInstance and v7.canUseFaceControlsEditor(l_props_1.RootInstance)) and v1.createElement(l_Button_0, {
            Style = not not l_state_0.showFaceControlsEditorPanel and l_button_0.FaceControlsEditorActive or l_button_0.FaceControlsEditorDefault,
            Size = UDim2.new(1, 0, 1, 0),
            OnClick = l_props_1.ToggleShowFaceControlsEditorPanel
        }, {
            Label = v1.createElement("TextLabel", {
                BackgroundTransparency = 1,
                Size = UDim2.new(1, 0, 1, 0),
                TextYAlignment = Enum.TextYAlignment.Center,
                TextSize = l_Stylizer_0.ikTheme.textSize,
                Text = l_Localization_0:getText("Title", "FACE"),
                Font = l_Stylizer_0.font,
                TextColor3 = l_Stylizer_0.ikTheme.textColor
            }, {
                TeachingCallout = v1.createElement(v15, {
                    Offset = Vector2.new(0, 6),
                    DefinitionId = "FaceControlsEditorCallout",
                    LocationId = "FaceControlsEditorButton"
                })
            })
        }),
        FaceControlsEditorWindow = (l_props_1.ShowFaceControlsEditorPanel and l_state_0.showFaceControlsEditorPanel) and v1.createElement(v8, {
            RootInstance = l_props_1.RootInstance,
            FaceControlsEditorEnabled = l_props_1.FaceControlsEditorEnabled,
            ShowFaceControlsEditorPanel = l_props_1.ShowFaceControlsEditorPanel,
            SelectedTrack = v27,
            SetSelectedTracks = l_props_1.SetSelectedTracks,
            ToggleFaceControlsEditorEnabled = v23.toggleFaceControlsEditorEnabledHandler,
            SetShowFaceControlsEditorPanel = l_props_1.SetShowFaceControlsEditorPanel,
            SetFaceControlsEditorEnabled = l_props_1.SetFaceControlsEditorEnabled
        })
    });
end;
return v2.connect(function(v30, _)
    return {
        ShowFaceControlsEditorPanel = v30.Status.ShowFaceControlsEditorPanel,
        FaceControlsEditorEnabled = v30.Status.FaceControlsEditorEnabled,
        RootInstance = v30.Status.RootInstance,
        SelectedTracks = v30.Status.SelectedTracks
    };
end, function(v32)
    return {
        ToggleShowFaceControlsEditorPanel = function()
            v32(v10());
        end,
        SetFaceControlsEditorEnabled = function(v33)
            v32(v11(v33));
        end,
        ToggleFaceControlsEditorEnabled = function(v34)
            v32(v9(v34));
        end,
        SetShowFaceControlsEditorPanel = function(v35)
            v32(v12(v35));
        end,
        SetSelectedTracks = function(v36)
            if not v16() then
                v32(v13(v36));
                return ;
            else
                v32(v14(v36));
                return ;
            end;
        end
    };
end)((l_withContext_0({
    Stylizer = l_ContextServices_0.Stylizer,
    Localization = l_ContextServices_0.Localization,
    Analytics = l_ContextServices_0.Analytics
})(v17)));


local _ = require(script:FindFirstAncestor("AnimationClipEditor").Src.Util.Constants);
return {
    FacsControlToFaceSliderInfoMap = {
        ChinRaiserUpperLip = {
            currentValue = 0,
            defaultValue = 0,
            position = UDim2.new(0, 98, 0, 283),
            rotation = -90
        },
        ChinRaiser = {
            currentValue = 0,
            defaultValue = 0,
            position = UDim2.new(0, 80, 0, 289),
            rotation = -90
        },
        FlatPucker = {
            currentValue = 0,
            defaultValue = 0,
            position = UDim2.new(0, 20, 0, 505),
            rotation = 180,
            customWidth = 50
        },
        Funneler = {
            currentValue = 0,
            defaultValue = 0,
            position = UDim2.new(0, 20, 0, 463),
            rotation = 180,
            customWidth = 50
        },
        LowerLipSuck = {
            currentValue = 0,
            defaultValue = 0,
            position = UDim2.new(0, 68, 0, 520),
            rotation = -25
        },
        LipPresser = {
            currentValue = 0,
            defaultValue = 0,
            position = UDim2.new(0, 71, 0, 485),
            rotation = 90
        },
        LipsTogether = {
            currentValue = 0,
            defaultValue = 0,
            position = UDim2.new(0, 93, 0, 220),
            rotation = 90,
            customWidth = 35
        },
        MouthLeft = {
            currentValue = 0.5,
            defaultValue = 0.5,
            position = UDim2.new(0, 106, 0, 240),
            rotation = 0,
            customWidth = 80,
            Tooltip = "Mouth"
        },
        MouthRight = {
            currentValue = 0.5,
            defaultValue = 0.5,
            position = UDim2.new(0, 70, 0, 240),
            rotation = 0,
            customWidth = 80,
            Tooltip = "Mouth"
        },
        Pucker = {
            currentValue = 0,
            defaultValue = 0,
            position = UDim2.new(0, 20, 0, 483),
            rotation = 180,
            customWidth = 50
        },
        UpperLipSuck = {
            currentValue = 0,
            defaultValue = 0,
            position = UDim2.new(0, 66, 0, 447),
            rotation = 36
        },
        LeftCheekPuff = {
            currentValue = 0,
            defaultValue = 0,
            position = UDim2.new(0, 175, 0, 213),
            rotation = 0
        },
        LeftDimpler = {
            currentValue = 0,
            defaultValue = 0,
            position = UDim2.new(0, 171, 0, 232),
            rotation = 0
        },
        LeftLipCornerDown = {
            currentValue = 0,
            defaultValue = 0,
            position = UDim2.new(0, 146, 0, 280),
            rotation = 55
        },
        LeftLowerLipDepressor = {
            currentValue = 0,
            defaultValue = 0,
            position = UDim2.new(0, 120, 0, 274),
            rotation = 65
        },
        LeftLipCornerPuller = {
            currentValue = 0,
            defaultValue = 0,
            position = UDim2.new(0, 138, 0, 216),
            rotation = -50
        },
        LeftLipStretcher = {
            currentValue = 0,
            defaultValue = 0,
            position = UDim2.new(0, 155, 0, 251),
            rotation = 0
        },
        LeftUpperLipRaiser = {
            currentValue = 0,
            defaultValue = 0,
            position = UDim2.new(0, 118, 0, 204),
            rotation = -65
        },
        RightCheekPuff = {
            currentValue = 0,
            defaultValue = 0,
            position = UDim2.new(0, 0, 0, 213),
            rotation = -180
        },
        RightDimpler = {
            currentValue = 0,
            defaultValue = 0,
            position = UDim2.new(0, 3, 0, 232),
            rotation = 180
        },
        RightLipCornerDown = {
            currentValue = 0,
            defaultValue = 0,
            position = UDim2.new(0, 28, 0, 280),
            rotation = 125
        },
        RightLowerLipDepressor = {
            currentValue = 0,
            defaultValue = 0,
            position = UDim2.new(0, 53, 0, 274),
            rotation = 114
        },
        RightLipCornerPuller = {
            currentValue = 0,
            defaultValue = 0,
            position = UDim2.new(0, 36, 0, 216),
            rotation = -130
        },
        RightLipStretcher = {
            currentValue = 0,
            defaultValue = 0,
            position = UDim2.new(0, 24, 0, 251),
            rotation = -180
        },
        RightUpperLipRaiser = {
            currentValue = 0,
            defaultValue = 0,
            position = UDim2.new(0, 58, 0, 204),
            rotation = -110
        },
        JawDrop = {
            currentValue = 0,
            defaultValue = 0,
            position = UDim2.new(0, 118, 0, 562),
            rotation = 90,
            customWidth = 40
        },
        JawLeft = {
            currentValue = 0.5,
            defaultValue = 0.5,
            position = UDim2.new(0, 64, 0, 554),
            rotation = 0,
            customWidth = 60,
            Tooltip = "Jaw"
        },
        JawRight = {
            currentValue = 0.5,
            defaultValue = 0.5,
            position = UDim2.new(0, 80, 0, 328),
            rotation = 0,
            customWidth = 60,
            Tooltip = "Jaw"
        },
        Corrugator = {
            currentValue = 0,
            defaultValue = 0,
            position = UDim2.new(0, 94, 0, 100),
            rotation = 0,
            customWidth = 36
        },
        LeftBrowLowerer = {
            currentValue = 0,
            defaultValue = 0,
            position = UDim2.new(0, 122, 0, 100),
            rotation = 100,
            customWidth = 36
        },
        LeftOuterBrowRaiser = {
            currentValue = 0,
            defaultValue = 0,
            position = UDim2.new(0, 145, 0, 58),
            rotation = -70
        },
        LeftNoseWrinkler = {
            currentValue = 0,
            defaultValue = 0,
            position = UDim2.new(0, 102, 0, 181),
            rotation = -90
        },
        LeftInnerBrowRaiser = {
            currentValue = 0,
            defaultValue = 0,
            position = UDim2.new(0, 105, 0, 58),
            rotation = -90
        },
        RightBrowLowerer = {
            currentValue = 0,
            defaultValue = 0,
            position = UDim2.new(0, 56, 0, 100),
            rotation = 80,
            customWidth = 36
        },
        RightOuterBrowRaiser = {
            currentValue = 0,
            defaultValue = 0,
            position = UDim2.new(0, 28, 0, 58),
            rotation = -110
        },
        RightInnerBrowRaiser = {
            currentValue = 0,
            defaultValue = 0,
            position = UDim2.new(0, 69, 0, 58),
            rotation = -90
        },
        RightNoseWrinkler = {
            currentValue = 0,
            defaultValue = 0,
            position = UDim2.new(0, 75, 0, 181),
            rotation = -90
        },
        LeftCheekRaiser = {
            currentValue = 0,
            defaultValue = 0,
            position = UDim2.new(0, 169, 0, 171),
            rotation = -115
        },
        LeftEyeUpperLidRaiser = {
            currentValue = 0.5,
            defaultValue = 0.5,
            position = UDim2.new(0, 111, 0, 125),
            rotation = -90,
            Tooltip = "LeftEye"
        },
        LeftEyeClosed = {
            currentValue = 0.5,
            defaultValue = 0.5,
            position = UDim2.new(0, 111, 0, 143),
            rotation = -90,
            customWidth = 44,
            Tooltip = "LeftEye"
        },
        RightCheekRaiser = {
            currentValue = 0,
            defaultValue = 0,
            position = UDim2.new(0, 5, 0, 171),
            rotation = -62
        },
        RightEyeUpperLidRaiser = {
            currentValue = 0.5,
            defaultValue = 0.5,
            position = UDim2.new(0, 67, 0, 125),
            rotation = -90,
            Tooltip = "RightEye"
        },
        RightEyeClosed = {
            currentValue = 0.5,
            defaultValue = 0.5,
            position = UDim2.new(0, 67, 0, 143),
            rotation = -90,
            customWidth = 44,
            Tooltip = "RightEye"
        },
        TongueDown = {
            currentValue = 0.5,
            defaultValue = 0.5,
            position = UDim2.new(0, 168, 0, 475),
            rotation = 90,
            customWidth = 50,
            Tooltip = "Tongue"
        },
        TongueUp = {
            currentValue = 0.5,
            defaultValue = 0.5,
            position = UDim2.new(0, 164, 0, 475),
            rotation = 90,
            customWidth = 50,
            Tooltip = "Tongue"
        },
        TongueOut = {
            currentValue = 0,
            defaultValue = 0,
            position = UDim2.new(0, 135, 0, 475),
            rotation = 180
        },
        EyesDragBox = {
            currentValue = Vector2.new(0, 0),
            defaultValue = Vector2.new(0, 0),
            position = UDim2.new(0, 110, 0, 145),
            customWidth = 30
        }
    }
};


local l_StudioFixPluginWidgetLocalizedIds_0 = game:GetFastFlag("StudioFixPluginWidgetLocalizedIds");
local l_script_FirstAncestor_0 = script:FindFirstAncestor("AnimationClipEditor");
local v2 = require(l_script_FirstAncestor_0.Packages.Roact);
local v3 = require(l_script_FirstAncestor_0.Packages.RoactRodux);
local v4 = require(l_script_FirstAncestor_0.Packages.Framework);
local l_DockWidget_0 = v4.UI.DockWidget;
local l_ContextServices_0 = v4.ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local v8 = require(l_script_FirstAncestor_0.Src.Util.Constants);
local v9 = require(l_script_FirstAncestor_0.Src.Util.RigUtils);
local v10 = require(l_script_FirstAncestor_0.Src.Util.RigInfo);
local v11 = v2.PureComponent:extend("FaceControlsEditorWindow");
local v12 = Vector2.new(v8.faceControlsEditorOriginalWidth, 310);
local v13 = Vector2.new(185, 110);
local l_Slider_0 = v4.UI.Slider;
local l_DragBox_0 = v4.UI.DragBox;
local l_Checkbox_0 = v4.UI.Checkbox;
local l_Pane_0 = v4.UI.Pane;
local l_Button_0 = v4.UI.Button;
local v19 = require(l_script_FirstAncestor_0.Src.Thunks.ValueChanged);
local v20 = require(l_script_FirstAncestor_0.Src.Thunks.History.AddWaypoint);
local v21 = require(l_script_FirstAncestor_0.Src.Actions.SetSymmetryEnabled);
local v22 = require(l_script_FirstAncestor_0.Src.Actions.SetAutoFocusFaceEnabled);
local v23 = require(l_script_FirstAncestor_0.Src.Util.KeyframeUtils);
local v24 = require(l_script_FirstAncestor_0.Src.Components.ContextMenu);
local v25 = require(l_script_FirstAncestor_0.Packages.Cryo);
local l_FaceControlsMapping_0 = require(script:WaitForChild("FaceControlsMapping"));
local l_StyleModifier_0 = v4.Util.StyleModifier;
local v28 = require(l_script_FirstAncestor_0.LuaFlags.GetFFlagFacialAnimationRecordingInStudio);
v11.init = function(v29)
    v29.state = {
        Tooltip = nil,
        treeArray = {},
        showContextMenu = false,
        currentlyEditedFacsProperties = {},
        scaleFactor = 1
    };
    v29.onAbsoluteSizeChange = function(v30)
        local l_X_0 = v30.AbsoluteSize.X;
        local l_Y_0 = v30.AbsoluteSize.Y;
        v29:setState({
            panelWidth = l_X_0,
            panelHeight = l_Y_0,
            scaleFactor = math.min(math.clamp(l_X_0 / v8.faceControlsEditorOriginalWidth, 0.05, 1.65), (l_Y_0 - (v8.faceControlsEditorTogglesContainerHeight + v8.faceControlsEditorDiagramPadding * 2)) / ((v8.faceControlsEditorDiagramPadding + (v8.faceControlsEditorFaceFrontDiagramHeight + v8.faceControlsEditorFaceSideDiagramHeight)) + v8.faceControlsEditoSpacingBetweenDiagrams))
        });
    end;
    v29.showContextMenu = function()
        v29:setState({
            showContextMenu = true
        });
    end;
    v29.hideContextMenu = function()
        v29:setState({
            showContextMenu = false
        });
    end;
    v29.setValues = function(v33, v34)
        v29:setState({
            currentMax = v34,
            currentMin = v33
        });
    end;
    v29.hideFaceControlsEditor = function()
        local l_props_0 = v29.props;
        if l_props_0.ShowFaceControlsEditorPanel then
            l_props_0.SetShowFaceControlsEditorPanel(false);
        end;
        if l_props_0.FaceControlsEditorEnabled then
            l_props_0.SetFaceControlsEditorEnabled(false);
        end;
    end;
    v29.onDockWidgetLoaded = function(v36)
        if v36:IsA("PluginGui") then
            v36:BindToClose(v29.hideFaceControlsEditor);
        end;
    end;
    v29.onTreeUpdated = function(v37)
        v29:setState({
            treeArray = v37
        });
    end;
    v29.changeSelectedTrack = function(v38)
        local l_state_0 = v29.state;
        local l_props_1 = v29.props;
        local l_treeArray_0 = l_state_0.treeArray;
        local l_SelectedTrack_0 = l_props_1.SelectedTrack;
        local l_SetSelectedTracks_0 = l_props_1.SetSelectedTracks;
        local v44 = 0;
        for v45, v46 in ipairs(l_treeArray_0) do
            if l_SelectedTrack_0 and l_SelectedTrack_0[1] == v46 then
                v44 = v45;
                break;
            end;
        end;
        l_SetSelectedTracks_0({
            {
                l_treeArray_0[math.clamp(v44 + v38, 1, #l_treeArray_0)]
            }
        });
    end;
end;
v11.addAction = function(v47, v48, v49)
    if v48 then
        v48.Enabled = false;
        table.insert(v47.Actions, v48);
        table.insert(v47.Connections, v48.Triggered:Connect(v49));
    end;
end;
v11.didMount = function(v50)
    local l_PluginActions_0 = v50.props.PluginActions;
    v50.Connections = {};
    v50.Actions = {};
    v50:addAction(l_PluginActions_0:get("FocusCamera"), function()
        if not v28() then
            focusFace(v50.props);
            return ;
        else
            v9.focusCameraOnFace(v50.props.RootInstance);
            return ;
        end;
    end);
end;
v11.willUnmount = function(v52)
    if v52.Connections then
        for _, v54 in ipairs(v52.Connections) do
            v54:Disconnect();
        end;
        v52.Connections = {};
    end;
    if v52.Actions then
        for _, v56 in ipairs(v52.Actions) do
            v56.Enabled = false;
        end;
    end;
    v52.hideFaceControlsEditor();
end;
getFacsListData = function()
    local v57 = {};
    for v58, _ in pairs(v8.FacsControlToRegionMap) do
        v57[v58] = {
            Name = v58,
            Instance = "Root",
            Type = v8.TRACK_TYPES.Facs
        };
    end;
    v57 = v25.Dictionary.values(v57);
    table.sort(v57, function(v60, v61)
        return v60.Name < v61.Name;
    end);
    return v57;
end;
formatNumber = function(v62)
    local l_NUMBER_PRECISION_0 = v8.NUMBER_PRECISION;
    return (tostring(math.floor(0.5 + v62 * l_NUMBER_PRECISION_0) / l_NUMBER_PRECISION_0));
end;
prepAndTriggerSliderContextMenu = function(v64, v65, v66, v67, v68, v69)
    local v70 = {
        v65.Name
    };
    if v69 then
        table.insert(v70, v69[1]);
        table.insert(v70, v69[2]);
        if v66.SymmetryEnabled then
            local l_symmetryPartner_0 = v8.FacsCrossMappings[v69[1]].symmetryPartner;
            if l_symmetryPartner_0 then
                table.insert(v70, l_symmetryPartner_0);
            end;
            l_symmetryPartner_0 = v8.FacsCrossMappings[v69[2]].symmetryPartner;
            if l_symmetryPartner_0 then
                table.insert(v70, l_symmetryPartner_0);
            end;
        end;
    end;
    if v66.SymmetryEnabled then
        v68 = v67.symmetryPartner;
        if v68 then
            table.insert(v70, v68);
        end;
    end;
    v64.state.currentlyEditedFacsProperties = v70;
    v64.state.showContextMenu = true;
    v64:showContextMenu();
end;
getSliderTooltipText = function(v72, v73)
    local l_Name_0 = v72.Name;
    local l_sliderGroup_0 = v8.FacsCrossMappings[v72.Name].sliderGroup;
    local v76 = formatNumber(v73.currentValue);
    if l_sliderGroup_0 then
        if v73.Tooltip and v73.currentValue == v73.defaultValue then
            l_Name_0 = v73.Tooltip;
            v76 = 0;
        elseif v73.currentValue < 0.5 then
            l_Name_0 = l_sliderGroup_0[1];
            v76 = formatNumber((math.clamp(1 - v73.currentValue * 2, 0, 1)));
        else
            l_Name_0 = l_sliderGroup_0[2];
            v76 = formatNumber((v73.currentValue - 0.5) * 2);
        end;
    end;
    return l_Name_0 .. ": " .. v76;
end;
handleSliderOnValueChanged = function(v77, v78, v79, v80, v81, v82, v83, v84, v85, v86)
    v82.currentValue = v79;
    v77:setState({
        Tooltip = getSliderTooltipText(v78, v82),
        Value = math.clamp(v82.currentValue, v80, v81)
    });
    local l_Name_1 = v78.Name;
    local l_props_2 = v77.props;
    local l_v79_0 = v79;
    if v84 and v83.indexInGroup == 1 then
        local v90 = nil;
        v90 = if v83.indexInGroup == 1 then v84[2] else v84[1];
        local v91 = l_FaceControlsMapping_0.FacsControlToFaceSliderInfoMap[v90];
        local v92 = 0;
        if v79 <= 0.5 then
            l_v79_0 = math.clamp(1 - v79 * 2, 0, 1);
            v92 = 0;
        else
            l_v79_0 = 0;
            v92 = (v79 - 0.5) * 2;
        end;
        local v93 = 0.5 + v92 * 0.5;
        v91.currentValue = v93;
        triggerValueChanged(l_props_2, v90, v92);
        if v77.props.SymmetryEnabled then
            local v94 = nil;
            local v95 = nil;
            v95 = v8.FacsCrossMappings[v90].symmetryPartner;
            if v95 then
                v94 = l_FaceControlsMapping_0.FacsControlToFaceSliderInfoMap[v95];
            end;
            if v94 then
                v94.currentValue = v93;
            end;
            if v95 then
                triggerValueChanged(l_props_2, v95, v92);
            end;
        end;
    end;
    if not v84 or v84 and v83.indexInGroup == 1 then
        triggerValueChanged(l_props_2, l_Name_1, l_v79_0);
    end;
    if not (not v77.props.SymmetryEnabled or not v86) then
        v86.currentValue = v79;
        triggerValueChanged(l_props_2, v85, l_v79_0);
    end;
end;
makeFacsOnFaceDiagramSliderUIItems = function(v96, _, _)
    local v99 = {};
    local l_Stylizer_0 = v96.props.Stylizer;
    for _, v102 in ipairs((getFacsListData())) do
        local v103 = "Facs_" .. v102.Name;
        local v104 = v8.FacsCrossMappings[v102.Name];
        local v105 = l_FaceControlsMapping_0.FacsControlToFaceSliderInfoMap[v102.Name];
        local l_sliderGroup_1 = v104.sliderGroup;
        if v105 and (not l_sliderGroup_1 or l_sliderGroup_1 and v104.indexInGroup == 1) then
            local v107 = nil;
            local v108 = nil;
            if v96.props.SymmetryEnabled then
                v108 = v104.symmetryPartner;
                if v108 then
                    v107 = l_FaceControlsMapping_0.FacsControlToFaceSliderInfoMap[v108];
                end;
            end;
            local v109 = 43;
            if v105.customWidth then
                v109 = v105.customWidth;
            end;
            local v110 = math.clamp(v105.currentValue, 0, 1);
            local v111 = l_sliderGroup_1 ~= nil;
            local l_faceSliderMaxValueTheme_0 = l_Stylizer_0.faceSliderMaxValueTheme;
            if l_faceSliderMaxValueTheme_0 then
                l_faceSliderMaxValueTheme_0 = true;
                if v110 ~= 0 then
                    l_faceSliderMaxValueTheme_0 = true;
                    if v110 ~= 1 then
                        l_faceSliderMaxValueTheme_0 = v111 and v110 == 0.5;
                    end;
                end;
            end;
            do
                local l_v107_0, l_v108_0 = v107, v108;
                v99[v103 .. "_rotatedSliderContainer"] = v2.createElement("Frame", {
                    BorderSizePixel = 0,
                    BackgroundTransparency = 1,
                    Position = UDim2.new(v105.position.X.Scale, v105.position.X.Offset * v96.state.scaleFactor, v105.position.Y.Scale, v105.position.Y.Offset * v96.state.scaleFactor),
                    Size = UDim2.new(0, v109 * v96.state.scaleFactor, 0, 2 * v96.state.scaleFactor),
                    Rotation = v105.rotation,
                    LayoutOrder = 2,
                    ZIndex = 100
                }, {
                    Scrubber = v2.createElement(l_Slider_0, {
                        Style = if not l_faceSliderMaxValueTheme_0 then l_Stylizer_0.faceSliderTheme else l_Stylizer_0.faceSliderMaxValueTheme,
                        Disabled = false,
                        Min = 0,
                        Max = 1,
                        Tooltip = getSliderTooltipText(v102, v105),
                        Value = v110,
                        FillFromCenter = v111,
                        OnRightClick = function()
                            prepAndTriggerSliderContextMenu(v96, v102, v96.props, v104, l_v108_0, l_sliderGroup_1);
                        end,
                        OnChangeBegan = function()
                            v96.props.AddWaypoint();
                            local v115 = {
                                {
                                    v102.Name
                                }
                            };
                            if l_v108_0 then
                                table.insert(v115, {
                                    l_v108_0
                                });
                            end;
                            if l_sliderGroup_1 then
                                local v116 = l_sliderGroup_1[2];
                                table.insert(v115, {
                                    v116
                                });
                                if l_v108_0 then
                                    table.insert(v115, {
                                        v8.FacsCrossMappings[v116].symmetryPartner
                                    });
                                end;
                            end;
                            v96.props.SetSelectedTracks(v115);
                        end,
                        OnValueChanged = function(v117)
                            handleSliderOnValueChanged(v96, v102, v117, 0, 1, v105, v104, l_sliderGroup_1, l_v108_0, l_v107_0);
                        end,
                        Position = UDim2.new(0.5, 0, 0.5, 0),
                        Size = UDim2.new(1, 0, 0, 8),
                        AnchorPoint = Vector2.new(0.5, 0.5)
                    })
                });
            end;
        end;
    end;
    return v2.createFragment(v99);
end;
triggerValueChanged = function(v118, v119, v120)
    if not v118.ReadOnly then
        v118.ValueChanged("Root", {
            v119
        }, v8.TRACK_TYPES.Facs, nil, v118.Playhead, v120, v118.Analytics);
    end;
end;
makeEyesControlDragBox = function(v121, _, _)
    local v124 = {};
    local l_Stylizer_1 = v121.props.Stylizer;
    local l_EyesDragBox_0 = l_FaceControlsMapping_0.FacsControlToFaceSliderInfoMap.EyesDragBox;
    local v127 = Vector2.new(math.clamp(l_EyesDragBox_0.currentValue.X, -1, 1), (math.clamp(l_EyesDragBox_0.currentValue.Y, -1, 1)));
    local v128 = true;
    if v127.X ~= -1 then
        v128 = true;
        if v127.X ~= 1 then
            v128 = true;
            if v127.Y ~= -1 then
                v128 = true;
                if v127.Y ~= 1 then
                    v128 = false;
                    if v127.X == 0 then
                        v128 = v127.Y == 0;
                    end;
                end;
            end;
        end;
    end;
    v124.EyesDragBox = v2.createElement(l_DragBox_0, {
        Style = if not v128 then l_Stylizer_1.faceDragBoxTheme else l_Stylizer_1.faceDragBoxMaxValueTheme,
        Disabled = false,
        MinX = -1,
        MaxX = 1,
        MinY = -1,
        MaxY = 1,
        Tooltip = "EyesLook",
        Value = v127,
        OnRightClick = function()
            local v129 = {};
            table.insert(v129, v8.FacsNames.EyesLookLeft);
            table.insert(v129, v8.FacsNames.EyesLookRight);
            table.insert(v129, v8.FacsNames.EyesLookUp);
            table.insert(v129, v8.FacsNames.EyesLookDown);
            v121.state.currentlyEditedFacsProperties = v129;
            v121.state.showContextMenu = true;
            v121:showContextMenu();
        end,
        OnChangeBegan = function()
            v121.props.AddWaypoint();
            v121.props.SetSelectedTracks({
                {
                    v8.FacsNames.EyesLookLeft
                },
                {
                    v8.FacsNames.EyesLookRight
                },
                {
                    v8.FacsNames.EyesLookUp
                },
                {
                    v8.FacsNames.EyesLookDown
                }
            });
        end,
        OnValueChanged = function(v130)
            l_EyesDragBox_0.currentValue = v130;
            v121:setState({
                Tooltip = "EyesLook",
                Value = Vector2.new(math.clamp(l_EyesDragBox_0.currentValue.X, -1, 1), (math.clamp(l_EyesDragBox_0.currentValue.Y, -1, 1)))
            });
            local l_props_3 = v121.props;
            local v132 = v130.X <= 0 and -v130.X or 0;
            local v133 = v130.X >= 0 and v130.X or 0;
            local v134 = v130.Y <= 0 and -v130.Y or 0;
            local v135 = v130.Y >= 0 and v130.Y or 0;
            triggerValueChanged(l_props_3, v8.FacsNames.EyesLookRight, v132);
            triggerValueChanged(l_props_3, v8.FacsNames.EyesLookLeft, v133);
            triggerValueChanged(l_props_3, v8.FacsNames.EyesLookUp, v134);
            triggerValueChanged(l_props_3, v8.FacsNames.EyesLookDown, v135);
        end,
        Position = UDim2.new(l_EyesDragBox_0.position.X.Scale, l_EyesDragBox_0.position.X.Offset * v121.state.scaleFactor, l_EyesDragBox_0.position.Y.Scale, l_EyesDragBox_0.position.Y.Offset * v121.state.scaleFactor),
        Size = UDim2.new(0, 36 * v121.state.scaleFactor, 0, 28 * v121.state.scaleFactor),
        AnchorPoint = Vector2.new(0.5, 0.5)
    });
    return v2.createFragment(v124);
end;
getTrackValuesForEyeDragBox = function(v136, v137)
    if v136 then
        local v138 = v136.Tracks[v8.FacsNames.EyesLookLeft];
        local v139 = v136.Tracks[v8.FacsNames.EyesLookRight];
        local v140 = v136.Tracks[v8.FacsNames.EyesLookUp];
        local v141 = v136.Tracks[v8.FacsNames.EyesLookDown];
        local l_EyesDragBox_1 = l_FaceControlsMapping_0.FacsControlToFaceSliderInfoMap.EyesDragBox;
        if not ((v138 or v139) or v140) and not v141 then
            l_EyesDragBox_1.currentValue = l_EyesDragBox_1.defaultValue;
            return ;
        else
            local v143 = not not v138 and v23.getValue(v138, v137) or 0;
            local v144 = not not v139 and v23.getValue(v139, v137) or 0;
            local v145 = not not v140 and v23.getValue(v140, v137) or 0;
            l_EyesDragBox_1.currentValue = Vector2.new(v143 ~= 0 and v143 or -v144, v145 ~= 0 and -v145 or (not not v141 and v23.getValue(v141, v137) or 0));
            return ;
        end;
    else
        return ;
    end;
end;
v11.makeContextMenuActions = function(v146, v147)
    local l_props_4 = v146.props;
    local v149 = {};
    table.insert(v149, {
        Text = v147:getText("ContextMenu", "ResetSelected"),
        OnItemClicked = function()
            if v146.state.currentlyEditedFacsProperties then
                for _, v151 in ipairs(v146.state.currentlyEditedFacsProperties) do
                    triggerValueChanged(l_props_4, v151, 0);
                end;
            end;
        end
    });
    return v149;
end;
v11.getCurrentValues = function(v152)
    local l_props_5 = v152.props;
    local l_Root_0 = l_props_5.AnimationData.Instances.Root;
    if l_Root_0 == nil then
        return ;
    else
        local l_Playhead_0 = l_props_5.Playhead;
        local v156 = v10.getFaceControls(l_props_5.RootInstance);
        if v156 ~= nil then
            for _, v158 in pairs(v8.FacsNames) do
                local v159 = l_FaceControlsMapping_0.FacsControlToFaceSliderInfoMap[v158];
                if l_Root_0 and l_Root_0.Tracks ~= nil then
                    local v160 = l_Root_0.Tracks[v158];
                    if not (v160 ~= nil) or v160.Type ~= v8.TRACK_TYPES.Facs then
                        v156[v158] = 0;
                        if v159 then
                            v159.currentValue = v159.defaultValue;
                        end;
                    end;
                else
                    v156[v158] = 0;
                end;
            end;
        end;
        if l_Root_0.Tracks == nil then
            return ;
        else
            getTrackValuesForEyeDragBox(l_Root_0, l_Playhead_0);
            for v161, v162 in pairs(l_Root_0.Tracks) do
                local v163 = l_FaceControlsMapping_0.FacsControlToFaceSliderInfoMap[v161];
                v162.Instance = "Root";
                local v164 = nil;
                if v163 ~= nil then
                    local v165 = v8.FacsCrossMappings[v161];
                    local l_sliderGroup_2 = v165.sliderGroup;
                    v163.currentValue = v163.defaultValue;
                    v164 = v23.getValue(v162, l_Playhead_0);
                    if v164 ~= nil then
                        if not l_sliderGroup_2 then
                            v163.currentValue = v164;
                        else
                            local v167 = nil;
                            v167 = if v165.indexInGroup == 1 then l_sliderGroup_2[2] else l_sliderGroup_2[1];
                            if v165.indexInGroup == 1 then
                                v163.currentValue = math.clamp(0.5 - v164 * 0.5, 0, 1);
                                if l_FaceControlsMapping_0.FacsControlToFaceSliderInfoMap[v167].currentValue > 0.5 then
                                    local v168 = 0;
                                    local v169 = l_Root_0.Tracks[v167];
                                    if v169 then
                                        v168 = v23.getValue(v169, l_Playhead_0);
                                    end;
                                    local v170 = 0.5 + v168 * 0.5;
                                    if v168 > 0 then
                                        v163.currentValue = v170;
                                    end;
                                end;
                            else
                                local _ = l_FaceControlsMapping_0.FacsControlToFaceSliderInfoMap[v167];
                                local v172 = 0.5 + v164 * 0.5;
                                if v164 > 0 then
                                    v163.currentValue = v172;
                                end;
                            end;
                        end;
                    end;
                end;
            end;
            return ;
        end;
    end;
end;
resetAllValuesInMapping = function()
    for _, v174 in ipairs((getFacsListData())) do
        local v175 = l_FaceControlsMapping_0.FacsControlToFaceSliderInfoMap[v174.Name];
        if v175 then
            v175.currentValue = v175.defaultValue;
        end;
    end;
    local l_EyesDragBox_2 = l_FaceControlsMapping_0.FacsControlToFaceSliderInfoMap.EyesDragBox;
    l_EyesDragBox_2.currentValue = l_EyesDragBox_2.defaultValue;
end;
v11.willUpdate = function(v177, v178)
    if v178.RootInstance ~= v177.props.RootInstance then
        local l_RootInstance_0 = v177.props.RootInstance;
        if l_RootInstance_0 ~= nil then
            v9.resetAllFacsValuesInFaceControls(l_RootInstance_0);
        end;
        resetAllValuesInMapping();
        handleFocusFace(v178);
    end;
    if v178.ShowFaceControlsEditorPanel ~= v177.ShowFaceControlsEditorPanel and v178.ShowFaceControlsEditorPanel == true then
        v177.ShowFaceControlsEditorPanel = true;
        handleFocusFace(v178);
    end;
end;
getFacsKeysWithNonZerovalueCount = function(v180, v181)
    local v182 = 0;
    if v180 then
        local l_Root_1 = v180.Instances.Root;
        if l_Root_1 then
            for _, v185 in pairs(v8.FacsNames) do
                local v186 = l_Root_1.Tracks[v185];
                if v186 then
                    local v187 = v23.getValue(v186, v181);
                    if v187 and v187 ~= 0 then
                        v182 = v182 + 1;
                    end;
                end;
            end;
            return v182;
        else
            return v182;
        end;
    else
        return v182;
    end;
end;
handleFocusFace = function(v188)
    if v188.AutoFocusFaceEnabled then
        if not v28() then
            focusFace(v188);
        else
            v9.focusCameraOnFace(v188.RootInstance);
            return ;
        end;
    end;
end;
focusFace = function(v189)
    local l_CurrentCamera_0 = game.Workspace.CurrentCamera;
    local v191 = v10.getFaceControls(v189.RootInstance);
    if v191 ~= nil then
        local l_Parent_0 = v191.Parent;
        if l_Parent_0 and l_Parent_0:IsA("BasePart") then
            local v193 = 0.75;
            v193 = 0.75;
            if l_CurrentCamera_0.FieldOfView ~= 70 then
                v193 = 0.75 / (l_CurrentCamera_0.FieldOfView / 70);
            end;
            l_CurrentCamera_0.CFrame = CFrame.new(l_Parent_0.Position + l_Parent_0.CFrame.LookVector * (v193 * 2), l_Parent_0.CFrame.Position);
            l_CurrentCamera_0.Focus = l_Parent_0.CFrame;
        else
            return ;
        end;
    end;
end;
v11.render = function(v194)
    local l_Localization_0 = v194.props.Localization;
    local l_props_6 = v194.props;
    if v9.canUseFaceControlsEditor(l_props_6.RootInstance) then
        local l_showContextMenu_0 = v194.state.showContextMenu;
        local l_Stylizer_2 = l_props_6.Stylizer;
        local l_Stylizer_3 = v194.props.Stylizer;
        local l_AnimationData_0 = l_props_6.AnimationData;
        local l_Playhead_1 = l_props_6.Playhead;
        l_props_6.PluginActions:get("FocusCamera").Enabled = true;
        if l_AnimationData_0 ~= nil then
            v194:getCurrentValues();
        end;
        local v202 = getFacsKeysWithNonZerovalueCount(l_AnimationData_0, l_Playhead_1);
        local v203 = nil;
        if v202 == 0 then
            v203 = l_StyleModifier_0.Disabled;
        end;
        return v2.createElement(l_DockWidget_0, {
            Id = if not l_StudioFixPluginWidgetLocalizedIds_0 then nil else "FaceControlsEditor",
            Title = l_Localization_0:getText("Title", "FaceControlsEditor"),
            Name = "FaceControlsEditor",
            ZIndexBehavior = Enum.ZIndexBehavior.Global,
            InitialDockState = Enum.InitialDockState.Left,
            InitialEnabled = true,
            InitialEnabledShouldOverrideRestore = true,
            Size = v12,
            MinSize = v13,
            OnClose = v194.hideFaceControlsEditor,
            Enabled = true,
            [v2.Ref] = v194.onDockWidgetLoaded
        }, {
            Container = v2.createElement(l_Pane_0, {
                BorderSizePixel = 0,
                BackgroundColor3 = l_Stylizer_2.backgroundColor,
                Size = UDim2.new(1, 0, 1, 0),
                ZIndex = -2,
                [v2.Change.AbsoluteSize] = v194.onAbsoluteSizeChange
            }, {
                FaceFrontContainer = v2.createElement("Frame", {
                    BorderSizePixel = 0,
                    BackgroundColor3 = l_Stylizer_2.backgroundColor,
                    Size = UDim2.new(1, 0, 0, 213),
                    Position = UDim2.new(0, v8.faceControlsEditorDiagramPadding, 0, v8.faceControlsEditorDiagramPadding),
                    ZIndex = -1
                }, {
                    FaceFrontViewImage = v2.createElement("ImageLabel", {
                        AnchorPoint = Vector2.new(0, 0),
                        Size = UDim2.new(0, v8.faceControlsEditorFaceFrontDiagramWidth * v194.state.scaleFactor, 0, v8.faceControlsEditorFaceFrontDiagramHeight * v194.state.scaleFactor),
                        Position = UDim2.new(0, 0, 0, 6),
                        Image = "rbxasset://textures/FaceControlsEditor/face_frontView.png",
                        BackgroundTransparency = 1,
                        ImageTransparency = 0,
                        ZIndex = 0
                    });
                    makeFacsOnFaceDiagramSliderUIItems(v194, l_Stylizer_3, l_Localization_0),
                    makeEyesControlDragBox(v194, l_Stylizer_3, l_Localization_0)
                }),
                FaceSideContainer = v2.createElement("Frame", {
                    BorderSizePixel = 0,
                    BackgroundColor3 = l_Stylizer_2.backgroundColor,
                    Size = UDim2.new(1, 0, 0, 213),
                    Position = UDim2.new(0, v8.faceControlsEditorDiagramPadding, 0, (v8.faceControlsEditoSpacingBetweenDiagrams + v8.faceControlsEditorFaceFrontDiagramHeight) * v194.state.scaleFactor),
                    BackgroundTransparency = 1
                }, {
                    SideviewImage = v2.createElement("ImageLabel", {
                        AnchorPoint = Vector2.new(0, 0),
                        Size = UDim2.new(0, v8.faceControlsEditorFaceSideDiagramWidth * v194.state.scaleFactor, 0, v8.faceControlsEditorFaceSideDiagramHeight * v194.state.scaleFactor),
                        Position = UDim2.new(0, 0, 0, 0),
                        Image = "rbxasset://textures/FaceControlsEditor/face_sideView.png",
                        BackgroundTransparency = 1,
                        LayoutOrder = 1
                    })
                }),
                ContextMenu = l_showContextMenu_0 and v2.createElement(v24, {
                    Actions = v194:makeContextMenuActions(l_Localization_0),
                    OnMenuOpened = v194.hideContextMenu
                }),
                AdditionalControlsContainer = v2.createElement("Frame", {
                    AnchorPoint = Vector2.new(0, 0),
                    BorderSizePixel = 0,
                    BackgroundTransparency = 1,
                    Position = UDim2.new(0, 10, 1, -v8.faceControlsEditorTogglesContainerHeight),
                    Size = UDim2.new(0, 200, 0, v8.faceControlsEditorTogglesContainerHeight),
                    ZIndex = 400
                }, {
                    CheckboxesList = v2.createElement("UIListLayout", {
                        SortOrder = Enum.SortOrder.LayoutOrder,
                        Padding = UDim.new(0, 5)
                    }),
                    CheckboxSymmetry = v2.createElement(l_Checkbox_0, {
                        Text = l_Localization_0:getText("Title", "Symmetry"),
                        Checked = v194.props.SymmetryEnabled,
                        size = v194.props.elementSize,
                        OnClick = function(_)
                            v194.props.SymmetryEnabled = not v194.props.SymmetryEnabled;
                            v194.props.SetSymmetryEnabled(v194.props.SymmetryEnabled);
                        end,
                        LayoutOrder = 1,
                        ZIndex = 401
                    }),
                    CheckboxAutoFocusFace = v2.createElement(l_Checkbox_0, {
                        Text = l_Localization_0:getText("Title", "AutoFocusFace"),
                        Checked = v194.props.AutoFocusFaceEnabled,
                        size = v194.props.elementSize,
                        LayoutOrder = 2,
                        OnClick = function(_)
                            v194.props.AutoFocusFaceEnabled = not v194.props.AutoFocusFaceEnabled;
                            v194.props.SetAutoFocusFaceEnabled(v194.props.AutoFocusFaceEnabled);
                            handleFocusFace(v194.props);
                        end
                    })
                }),
                BottomFrame = v2.createElement("Frame", {
                    Size = UDim2.new(1, 0, 0, 52),
                    Position = UDim2.new(0, 0, 1, 0),
                    AnchorPoint = Vector2.new(0, 1),
                    BackgroundColor3 = l_Stylizer_2.ikTheme.headerColor,
                    BorderSizePixel = 0
                }, {
                    WideResetAllButton = v2.createElement(l_Button_0, {
                        Text = l_Localization_0:getText("Title", "ResetAll"),
                        AnchorPoint = Vector2.new(0.5, 1),
                        Position = UDim2.new(0.5, 0, 1, -10),
                        IsRound = true,
                        Size = UDim2.new(1, -10, 0, 32),
                        StyleModifier = v203,
                        LayoutOrder = 3,
                        OnClick = function()
                            l_props_6.AddWaypoint();
                            v9.resetAllFacsValuesInFaceControls(l_props_6.RootInstance);
                            local l_Root_2 = l_AnimationData_0.Instances.Root;
                            resetAllValuesInMapping();
                            for _, v208 in pairs(v8.FacsNames) do
                                local v209 = l_Root_2.Tracks[v208];
                                if not (not v209 or not v23.getValue(v209, l_props_6.Playhead)) then
                                    triggerValueChanged(l_props_6, v208, 0);
                                end;
                            end;
                        end
                    })
                })
            })
        });
    else
        v194.hideFaceControlsEditor();
        return ;
    end;
end;
return v3.connect(function(v210, _)
    local l_Status_0 = v210.Status;
    return {
        Tool = v210.Status.Tool,
        SelectedTrackInstances = v210.Status.SelectedTrackInstances,
        RootInstance = v210.Status.RootInstance,
        faceControlsEditorEnabled = v210.Status.FaceControlsEditorEnabled,
        Playhead = v210.Status.Playhead,
        Tracks = v210.Status.Tracks,
        PlayState = l_Status_0.PlayState,
        AnimationData = v210.AnimationData,
        DefaultRotationType = l_Status_0.DefaultRotationType,
        SymmetryEnabled = l_Status_0.SymmetryEnabled,
        AutoFocusFaceEnabled = l_Status_0.AutoFocusFaceEnabled,
        ReadOnly = l_Status_0.ReadOnly
    };
end, function(v213)
    return {
        ValueChanged = function(v214, v215, v216, v217, v218, v219, v220)
            v213(v19(v214, v215, v216, v217, v218, v219, v220));
        end,
        AddWaypoint = function()
            v213(v20());
        end,
        SetSymmetryEnabled = function(v221)
            v213(v21(v221));
        end,
        SetAutoFocusFaceEnabled = function(v222)
            v213(v22(v222));
        end
    };
end)((l_withContext_0({
    Stylizer = l_ContextServices_0.Stylizer,
    Localization = l_ContextServices_0.Localization,
    Plugin = l_ContextServices_0.Plugin,
    PluginActions = l_ContextServices_0.PluginActions
})(v11)));


local v0 = require(script:FindFirstAncestor("AnimationClipEditor").Packages.Framework);
local l_UI_0 = v0.UI;
local l_Util_0 = v0.Util;
local l_Cryo_0 = l_Util_0.Cryo;
local l_StyleModifier_0 = l_Util_0.StyleModifier;
local l_deepCopy_0 = l_Util_0.deepCopy;
local _ = l_UI_0.RoundBox;
local l_Image_0 = l_UI_0.Image;
local l_StyleKey_0 = v0.Style.StyleKey;
local l_style_0 = l_UI_0.UIFolderData.RoundBox.style;
local v10 = l_deepCopy_0(l_style_0);
local function v12(v11)
    return {
        Size = UDim2.fromOffset(28, 28),
        Foreground = l_Image_0,
        ForegroundStyle = {
            Image = v11
        },
        Background = l_style_0,
        BackgroundStyle = l_Cryo_0.Dictionary.join(v10, {
            Color = l_StyleKey_0.ImageButtonBackground
        }),
        [l_StyleModifier_0.Hover] = {
            BackgroundStyle = l_Cryo_0.Dictionary.join(v10, {
                Transparency = 0.5,
                Color = l_StyleKey_0.ImageButtonHover
            })
        },
        [l_StyleModifier_0.Disabled] = {
            BackgroundStyle = l_Cryo_0.Dictionary.join(v10, {
                Color = l_StyleKey_0.ButtonDisabled,
                Transparency = 0.5
            })
        }
    };
end;
return {
    Controls = {
        Size = UDim2.new(1, 0, 0, 46),
        Padding = {
            Top = 5,
            Left = 11,
            Bottom = 11,
            Right = 11
        },
        PauseButton = v12("rbxasset://textures/DeveloperFramework/MediaPlayerControls/pause_button.png"),
        PlayButton = v12("rbxasset://textures/DeveloperFramework/MediaPlayerControls/play_button.png")
    }
};


return {
    buildTestRig = function()
        local l_Model_0 = Instance.new("Model");
        local v1 = Instance.new("Part", l_Model_0);
        v1.Name = "HumanoidRootPart";
        local v2 = Instance.new("Part", l_Model_0);
        v2.Name = "UpperTorso";
        local v3 = Instance.new("Part", l_Model_0);
        v3.Name = "Head";
        local v4 = Instance.new("Motor6D", v2);
        v4.Part0 = v1;
        v4.Part1 = v2;
        local v5 = Instance.new("Motor6D", v3);
        v5.Part0 = v2;
        v5.Part1 = v3;
        Instance.new("Attachment", v1).Name = "RootAttachment";
        Instance.new("Attachment", v2).Name = "RootAttachment";
        local v6 = Instance.new("Attachment", v2);
        v6.Name = "NeckAttachment";
        local v7 = Instance.new("Attachment", v3);
        v7.Name = "NeckAttachment";
        local v8 = Instance.new("BallSocketConstraint", l_Model_0);
        v8.Enabled = false;
        v8.Attachment0 = v6;
        v8.Attachment1 = v7;
        return l_Model_0;
    end
};


local l_script_FirstAncestor_0 = script:FindFirstAncestor("AnimationClipEditor");
local v1 = require(l_script_FirstAncestor_0.Packages.Roact);
local v2 = require(l_script_FirstAncestor_0.Packages.Framework);
local l_ContextServices_0 = v2.ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local l_UI_0 = v2.UI;
local _ = l_UI_0.DockWidget;
local l_SelectInput_0 = l_UI_0.SelectInput;
local l_Pane_0 = l_UI_0.Pane;
local l_TextLabel_0 = l_UI_0.TextLabel;
local l_GetTextSize_0 = v2.Util.GetTextSize;
local l_StyledDialog_0 = l_UI_0.StyledDialog;
local l_VideoCaptureService_0 = game:GetService("VideoCaptureService");
local v13 = v1.PureComponent:extend("CameraSelectionDialog");
v2.Util.Typecheck.wrap(v13, script);
v13.init = function(v14)
    local l_props_0 = v14.props;
    v14.onMessageBoxButtonClicked = function(_)
        l_props_0.OnClose();
    end;
end;
v13.render = function(v17)
    local l_props_1 = v17.props;
    local l_Localization_0 = l_props_1.Localization;
    if not l_props_1.Title then
        local _ = l_Localization_0:getText("Dialog", "DefaultTitle");
    end;
    local l_Stylizer_0 = l_props_1.Stylizer;
    local l_OnClose_0 = l_props_1.OnClose;
    local l_l_VideoCaptureService_0_CameraDevices_0 = l_VideoCaptureService_0:GetCameraDevices();
    local l_CameraID_0 = l_VideoCaptureService_0.CameraID;
    local v25 = {};
    local v26 = {};
    local v27 = nil;
    local v28 = 1;
    for v29, v30 in pairs(l_l_VideoCaptureService_0_CameraDevices_0) do
        table.insert(v25, v30);
        table.insert(v26, v29);
        if v29 == l_CameraID_0 then
            v27 = v28;
        end;
        v28 = v28 + 1;
    end;
    local v31 = l_Localization_0:getText("FaceCapture", "CameraSelectionTitle");
    local l_SourceSansBold_0 = Enum.Font.SourceSansBold;
    local v33 = l_GetTextSize_0(v31, 20, l_SourceSansBold_0, Vector2.new(450, 1000));
    local v34 = l_Localization_0:getText("FaceCapture", "CameraSelectionBody");
    local l_SourceSans_0 = Enum.Font.SourceSans;
    return v1.createElement(l_StyledDialog_0, {
        Title = v31,
        OnClose = l_OnClose_0,
        BorderPadding = 20,
        OnButtonPressed = v17.onMessageBoxButtonClicked,
        Buttons = {
            {
                Text = l_props_1.Localization:getText("Dialog", "Confirm"),
                Key = "Confirm",
                Style = "RoundPrimary"
            }
        },
        ButtonHorizontalAlignment = Enum.HorizontalAlignment.Center,
        MinContentSize = Vector2.new(450, ((v33.Y + l_GetTextSize_0(v34, 20, l_SourceSans_0, Vector2.new(450, 1000)).Y) + 20) + math.max(30 * v28, 40)),
        Modal = true
    }, {
        Content = v1.createElement(l_Pane_0, {
            Layout = Enum.FillDirection.Vertical,
            HorizontalAlignment = Enum.HorizontalAlignment.Left,
            AutomaticSize = Enum.AutomaticSize.XY,
            Spacing = 10
        }, {
            TitleLabel = v1.createElement(l_TextLabel_0, {
                AutomaticSize = Enum.AutomaticSize.XY,
                TextXAlignment = Enum.TextXAlignment.Left,
                Text = v31,
                Font = l_SourceSansBold_0,
                TextSize = 20,
                TextColor3 = l_Stylizer_0.TextColor,
                BackgroundTransparency = 1,
                TextWrapped = true,
                LayoutOrder = 1
            }),
            BodyLabel = v1.createElement(l_TextLabel_0, {
                AutomaticSize = Enum.AutomaticSize.XY,
                TextXAlignment = Enum.TextXAlignment.Left,
                Text = v34,
                Font = l_SourceSans_0,
                TextSize = 20,
                TextColor3 = l_Stylizer_0.TextColor,
                BackgroundTransparency = 1,
                TextWrapped = true,
                LayoutOrder = 2
            }),
            SelectInputWrapper = v1.createElement(l_Pane_0, {
                AutomaticSize = Enum.AutomaticSize.XY,
                LayoutOrder = 4
            }, {
                CameraSelection = v1.createElement(l_SelectInput_0, {
                    PlaceholderText = l_Localization_0:getText("FaceCapture", "CameraSelectionPlaceholder"),
                    Width = 450,
                    SelectedIndex = v27,
                    Items = v25,
                    OnItemActivated = function(_, v37)
                        local v38 = v26[v37];
                        l_VideoCaptureService_0.CameraID = v38;
                        v17:setState({
                            selectedGuid = v38
                        });
                    end
                })
            })
        })
    });
end;
return (l_withContext_0({
    Stylizer = l_ContextServices_0.Stylizer,
    Localization = l_ContextServices_0.Localization
})(v13));