local l_script_FirstAncestor_0 = script:FindFirstAncestor("AnimationClipEditor");
local v1 = require(l_script_FirstAncestor_0.Packages.Roact);
local v2 = require(l_script_FirstAncestor_0.Src.Util.DoubleClickDetector);
local l_ContextServices_0 = require(l_script_FirstAncestor_0.Packages.Framework).ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local v5 = require(l_script_FirstAncestor_0.Src.Components.TrackList.TrackListEntry);
local v6 = require(l_script_FirstAncestor_0.Src.Components.TrackList.NumberBox);
local v7 = require(l_script_FirstAncestor_0.Src.Components.ContextButton);
local v8 = require(l_script_FirstAncestor_0.Src.Util.Constants);
local v9 = v1.PureComponent:extend("Track");
v9.init = function(v10)
    local v11 = v2.new();
    v10.onExpandToggled = function()
        if v10.props.OnExpandToggled then
            v10.props.OnExpandToggled(not v10.props.Expanded);
        end;
    end;
    v10.onTrackSelected = function()
        if v11:isDoubleClick() then
            v10.onExpandToggled();
        end;
        if v10.props.OnTrackSelected then
            v10.props.OnTrackSelected();
        end;
    end;
    v10.onContextButtonClick = function()
        if not (v10.props.ReadOnly or not v10.props.OnContextButtonClick) then
            v10.props.OnContextButtonClick();
        end;
    end;
    v10.onItemChanged = function(v12, v13)
        if not v10.props.OnItemChanged then
            return ;
        else
            return v10.props.OnItemChanged(v12, v13);
        end;
    end;
end;
v9.render = function(v14)
    local l_props_0 = v14.props;
    local l_Stylizer_0 = l_props_0.Stylizer;
    local l_LayoutOrder_0 = l_props_0.LayoutOrder;
    local v18 = l_props_0.Indent or 0;
    local l_Name_0 = l_props_0.Name;
    local v20 = l_props_0.Items or {};
    local v21 = l_props_0.DragMultiplier or v8.NUMBERBOX_DRAG_MULTIPLIER;
    local l_ReadOnly_0 = l_props_0.ReadOnly;
    local l_trackTheme_0 = l_Stylizer_0.trackTheme;
    local l_arrow_0 = l_trackTheme_0.arrow;
    local v25 = l_props_0.Expanded or false;
    local v26 = l_props_0.Selected or false;
    local v27 = {
        Arrow = not not (v14.props.OnExpandToggled ~= nil) and v1.createElement("ImageButton", {
            Size = UDim2.new(0, v8.ARROW_SIZE, 0, v8.ARROW_SIZE),
            AnchorPoint = Vector2.new(0, 0.5),
            Position = UDim2.new(0, v8.ARROW_SIZE / 2, 0.5, 0),
            BackgroundTransparency = 1,
            ZIndex = 2,
            Image = not not v25 and l_arrow_0.expanded or l_arrow_0.collapsed,
            ImageColor3 = not not v26 and l_trackTheme_0.selectedTextColor or l_trackTheme_0.textColor,
            ScaleType = Enum.ScaleType.Fit,
            [v1.Event.Activated] = v14.onExpandToggled
        }) or nil,
        NameLabel = v1.createElement("TextButton", {
            Size = UDim2.new(1, 0, 1, 0),
            Position = UDim2.new(0, v8.ARROW_SIZE * 2, 0, 0),
            BackgroundTransparency = 1,
            AutoButtonColor = false,
            Text = l_Name_0,
            Font = l_Stylizer_0.font,
            TextSize = l_trackTheme_0.textSize,
            TextColor3 = not not v26 and l_trackTheme_0.selectedTextColor or l_trackTheme_0.textColor,
            TextXAlignment = Enum.TextXAlignment.Left,
            [v1.Event.Activated] = v14.onTrackSelected
        }),
        ContextButton = not not (v14.props.OnContextButtonClick ~= nil) and v1.createElement(v7, {
            AnchorPoint = Vector2.new(1, 0.5),
            Position = UDim2.new(1, -v8.TRACKLIST_RIGHT_PADDING, 0.5, 0),
            ZIndex = 2,
            TrackSelected = v26,
            OnActivated = v14.onContextButtonClick
        }) or nil
    };
    for v28, v29 in ipairs(v20) do
        v27[v29.Key .. "_Entry"] = v1.createElement(v6, {
            Size = UDim2.new(0, v8.NUMBERBOX_WIDTH, 1, -v8.NUMBERBOX_PADDING),
            Position = UDim2.new(1, (((v28 - #v20) - 1) * (v8.NUMBERBOX_WIDTH + v8.NUMBERBOX_PADDING) - v8.TRACKLIST_BUTTON_SIZE) - v8.TRACKLIST_RIGHT_PADDING, 0.5, 0),
            AnchorPoint = Vector2.new(0, 0.5),
            Number = v29.Value,
            Name = v29.Name,
            Color = l_Stylizer_0.curveTheme[not not v8.TRACK_THEME_MAPPING[v29.Type] and v8.TRACK_THEME_MAPPING[v29.Type][v29.Name] or "Default"],
            Precision = if v29.Type == v8.TRACK_TYPES.Facs then v8.NUMBER_FACS_PRECISION else v8.NUMBER_PRECISION,
            ReadOnly = l_ReadOnly_0,
            SetNumber = function(v30)
                l_props_0.OnChangeBegan();
                return v14.onItemChanged(v29.Key, v30);
            end,
            OnDragMoved = function(v31)
                v14.onItemChanged(v29.Key, v29.Value + v31.Delta.X * v21);
            end,
            OnDragBegan = l_props_0.OnChangeBegan
        });
    end;
    return v1.createElement(v5, {
        Selected = v26,
        Height = v8.TRACK_HEIGHT,
        Indent = v18,
        LayoutOrder = l_LayoutOrder_0
    }, v27);
end;
return (l_withContext_0({
    Stylizer = l_ContextServices_0.Stylizer
})(v9));


local l_script_FirstAncestor_0 = script:FindFirstAncestor("AnimationClipEditor");
local v1 = require(l_script_FirstAncestor_0.Packages.Roact);
local v2 = require(l_script_FirstAncestor_0.Src.Util.TrackUtils);
local l_ContextServices_0 = require(l_script_FirstAncestor_0.Packages.Framework).ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local v5 = require(l_script_FirstAncestor_0.Src.Util.Constants);
local v6 = v1.PureComponent:extend("TrackColors");
v6.renderTracks = function(v7, v8)
    local l_props_0 = v7.props;
    local l_Tracks_0 = l_props_0.Tracks;
    local l_TopTrackIndex_0 = l_props_0.TopTrackIndex;
    local l_MaxHeight_0 = l_props_0.MaxHeight;
    local l_l_TopTrackIndex_0_0 = l_TopTrackIndex_0;
    local v14 = 0;
    local v15 = {
        Layout = v1.createElement("UIListLayout", {
            SortOrder = Enum.SortOrder.LayoutOrder,
            FillDirection = Enum.FillDirection.Vertical
        })
    };
    for v16 = l_TopTrackIndex_0, #l_Tracks_0 do
        if l_MaxHeight_0 >= v14 then
            local v17 = v16 % 2 == 0;
            local v18 = l_Tracks_0[v16];
            local v19 = 1;
            if not (not v18 or not v18.Expanded) then
                v19 = v2.getExpandedSize(v18);
            end;
            for _ = 1, v19 do
                if l_MaxHeight_0 >= v14 then
                    table.insert(v15, v1.createElement("Frame", {
                        Size = UDim2.new(1, 0, 0, v5.TRACK_HEIGHT),
                        BackgroundColor3 = not not v17 and v8.trackTheme.shadedBackgroundColor or v8.trackTheme.backgroundColor,
                        BorderSizePixel = 0,
                        LayoutOrder = l_l_TopTrackIndex_0_0
                    }));
                    l_l_TopTrackIndex_0_0 = l_l_TopTrackIndex_0_0 + 1;
                    v14 = v14 + v5.TRACK_HEIGHT;
                else
                    break;
                end;
            end;
        else
            break;
        end;
    end;
    return v15;
end;
v6.render = function(v21)
    local l_props_1 = v21.props;
    return v1.createElement("Frame", {
        Size = UDim2.new(1, 0, 1, 0),
        Position = l_props_1.Position,
        BackgroundTransparency = 1,
        ZIndex = 0
    }, (v21:renderTracks(l_props_1.Stylizer)));
end;
return (l_withContext_0({
    Stylizer = l_ContextServices_0.Stylizer
})(v6));


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.Cryo);
local v3 = require(l_script_FirstAncestor_0.Packages.RoactRodux);
local v4 = require(l_script_FirstAncestor_0.Src.Util.TrackUtils);
local v5 = require(l_script_FirstAncestor_0.Src.Util.StringUtils);
local v6 = require(l_script_FirstAncestor_0.Src.Context.Signals);
local l_ContextServices_0 = require(l_script_FirstAncestor_0.Packages.Framework).ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local v9 = require(l_script_FirstAncestor_0.Src.Util.Constants);
local v10 = require(l_script_FirstAncestor_0.Src.Util.isEmpty);
local v11 = require(l_script_FirstAncestor_0.Src.Util.PathUtils);
local v12 = require(l_script_FirstAncestor_0.Src.Components.TrackList.SummaryTrack);
local v13 = require(l_script_FirstAncestor_0.Src.Components.TrackList.TrackListEntry);
local v14 = require(l_script_FirstAncestor_0.Src.Components.TrackList.Track);
local v15 = require(l_script_FirstAncestor_0.Src.Components.TrackList.WideScrollingFrame);
local v16 = v1.PureComponent:extend("TrackList");
v16.init = function(v17)
    v17.maxTrackWidth = 0;
    v17.trackCount = 1;
    v17.resetTrackCount = function()
        v17.trackCount = 1;
    end;
    v17.incrementTrackCount = function()
        v17.trackCount = v17.trackCount + 1;
    end;
    v17.state = {
        AbsoluteSize = Vector2.new()
    };
    v17.getTextWidth = function(v18, v19)
        return v5.getTextWidth(v18, v19.trackTheme.textSize, v19.font);
    end;
    v17.sizeChanged = function(v20)
        v17:setState({
            AbsoluteSize = v20.AbsoluteSize
        });
    end;
    v17.inputChanged = function(_, v22)
        if not (not (v22.UserInputType == Enum.UserInputType.MouseWheel) or not v17.props.OnScroll) then
            v17.props.OnScroll(v22.Position.Z);
        end;
    end;
    v17.onTrackExpandToggled = function(v23, v24)
        if v17.props.ToggleTrackExpanded then
            v17.props.ToggleTrackExpanded({
                v23
            }, v24);
        end;
    end;
    v17.onContextButtonClick = function(v25, v26, v27, v28)
        if v17.props.OpenContextMenu then
            v17.props.OpenContextMenu(v25, v26, v27, v28);
        end;
    end;
    v17.onTrackAdded = function(v29, v30, v31)
        if v17.props.OnTrackAdded then
            v17.props.OnTrackAdded(v29, v30, v31);
        end;
    end;
    v17.onTrackSelected = function(v32)
        if v17.props.OnTrackSelected then
            v17.props.OnTrackSelected(v32);
        end;
    end;
    v17.onValueChanged = function(v33, v34, v35, v36, v37, v38)
        if v17.props.OnValueChanged then
            v17.props.OnValueChanged(v33, v34, v35, v36, v37, v38);
        end;
    end;
    v17.getTrackWidth = function(v39, v40)
        return (v9.INDENT_PADDING * v39 + v40) + v9.TRACKLIST_RIGHT_PADDING;
    end;
end;
v16.renderSummaryTrack = function(v41, v42, v43, v44)
    v41.maxTrackWidth = math.max(v41.maxTrackWidth, (v41.getTrackWidth(1, v41.getTextWidth(v42, v44) + v9.TRACKLIST_BUTTON_SIZE)));
    v43.SummaryTrack = v1.createElement(v12, {
        LayoutOrder = v41.trackCount,
        Name = v42,
        UnusedTracks = v41.props.UnusedTracks,
        OnTrackAdded = v41.onTrackAdded,
        UnusedFacs = v41.props.UnusedFacs,
        OnFacsAdded = v41.onFacsAdded
    });
    v41.incrementTrackCount();
end;
v16.renderExpandedCFrameTrack = function(v45, v46, v47, v48)
    local l_props_0 = v45.props;
    local l_Depth_0 = v46.Depth;
    local l_Instance_0 = v46.Instance;
    local l_Name_0 = v46.Name;
    local l_PROPERTY_KEYS_0 = v9.PROPERTY_KEYS;
    local l_AnimationData_0 = l_props_0.AnimationData;
    local l_Playhead_0 = l_props_0.Playhead;
    local v56 = v45.props.PlayState ~= v9.PLAY_STATE.Pause;
    local v57 = math.max(v45.getTextWidth(l_PROPERTY_KEYS_0.Position, v48), v45.getTextWidth(l_PROPERTY_KEYS_0.Rotation, v48));
    local v58 = v45.getTrackWidth(l_Depth_0, v57);
    local v59 = v4.getItemsForProperty(v46, v4.getCurrentValue(v46, l_Playhead_0, l_AnimationData_0, l_props_0.DefaultEulerAnglesOrder), nil, l_props_0.DefaultEulerAnglesOrder);
    v45.maxTrackWidth = math.max(v45.maxTrackWidth, v58 + #v59.Position * (v9.NUMBERBOX_WIDTH + v9.NUMBERTRACK_PADDING * 2));
    local v60 = if v46.Type == v9.TRACK_TYPES.Facs then v9.NUMBERBOX_FACS_DRAG_MULTIPLIER else v9.NUMBERBOX_DRAG_MULTIPLIER;
    local function v67(v61, v62)
        v47[v61 .. "_" .. v62] = v1.createElement(v14, {
            LayoutOrder = v45.trackCount,
            Name = v62,
            NameWidth = v57,
            Items = v59[v62],
            Height = v9.TRACK_HEIGHT,
            Indent = l_Depth_0,
            ReadOnly = v56,
            DragMultiplier = v60,
            OnItemChanged = function(v63, v64)
                if v46.Type == v9.TRACK_TYPES.Facs then
                    v64 = math.clamp(math.floor(0.5 + v64 * 100) / 100, 0, 1);
                end;
                for _, v66 in ipairs(v59[v62]) do
                    if v66.Key == v63 then
                        v66.Value = v64;
                    end;
                end;
                v45.onValueChanged(l_Instance_0, {
                    v61
                }, v46.Type, nil, l_Playhead_0, (v4.getPropertyForItems(v46, v59, l_props_0.DefaultEulerAnglesOrder)));
                return v64;
            end,
            OnChangeBegan = l_props_0.OnChangeBegan
        });
        v45.incrementTrackCount();
    end;
    v67(l_Name_0, l_PROPERTY_KEYS_0.Position);
    v67(l_Name_0, l_PROPERTY_KEYS_0.Rotation);
end;
v16.renderExpandedGenericTrack = function(v68, v69, v70, _)
    v70["Expanded_" .. v69.Name] = v1.createElement(v13, {
        LayoutOrder = v68.trackCount,
        Height = v9.TRACK_HEIGHT,
        Indent = v69.Depth
    });
    v68.incrementTrackCount();
end;
v16.renderExpandedTracks = function(v72, v73, v74, v75)
    if v73.Type == v9.TRACK_TYPES.CFrame then
        v72:renderExpandedCFrameTrack(v73, v74, v75);
        return ;
    else
        v72:renderExpandedGenericTrack(v73, v74, v75);
        return ;
    end;
end;
v16.isSelected = function(v76, v77)
    if v76.props.SelectedTracks then
        for _, v79 in ipairs(v76.props.SelectedTracks) do
            if v77 == v79 then
                return true;
            end;
        end;
    end;
    return false;
end;
v16.renderTrack = function(v80, v81, v82, v83, v84, _, v86)
    local l_props_1 = v80.props;
    local l_SelectedTracks_0 = l_props_1.SelectedTracks;
    local l_Name_1 = v81.Name;
    local l_Instance_1 = v81.Instance;
    local l_Depth_1 = v81.Depth;
    local l_Type_0 = v81.Type;
    local v93 = v86 or v4.getRotationType(v81);
    local l_Expanded_0 = v81.Expanded;
    local l_Playhead_1 = l_props_1.Playhead;
    local l_AnimationData_1 = l_props_1.AnimationData;
    local v97 = l_props_1.PlayState ~= v9.PLAY_STATE.Pause;
    local l_ReadOnly_0 = l_props_1.ReadOnly;
    local v99 = (l_AnimationData_1 and l_AnimationData_1.Metadata) and l_AnimationData_1.Metadata.IsChannelAnimation;
    local v100 = nil;
    v100 = if not v99 then l_Type_0 == v9.TRACK_TYPES.CFrame else v81.Components and not v10(v81.Components);
    local v101 = v80.getTextWidth(l_Name_1, v83);
    local v102 = v80.getTrackWidth(0, v101) + (v9.NUMBERBOX_WIDTH + v9.NUMBERTRACK_PADDING * 2);
    local v103 = v2.List.join(v84 or {}, {
        l_Name_1
    });
    local v104 = table.concat(v103, "_");
    local v105 = nil;
    v105 = if l_Type_0 ~= v9.TRACK_TYPES.CFrame then (not not v99 and l_Expanded_0) and {} or v4.getItemsForProperty(v81, v4.getCurrentValueForPath(v103, l_Instance_1, l_Playhead_1, l_AnimationData_1, l_Type_0, l_props_1.DefaultEulerAnglesOrder), l_Name_1, l_props_1.DefaultEulerAnglesOrder) else {};
    local v106 = v11.findPath(l_SelectedTracks_0, v103) ~= nil;
    v80.maxTrackWidth = math.max(v80.maxTrackWidth, v102);
    v82["Track_" .. v104] = v1.createElement(v14, {
        LayoutOrder = v80.trackCount,
        Name = l_Name_1,
        NameWidth = v101,
        Items = v105,
        Height = v9.TRACK_HEIGHT,
        Indent = l_Depth_1,
        ReadOnly = v97 or l_ReadOnly_0,
        Expanded = l_Expanded_0,
        Selected = v106,
        DragMultiplier = if v81.Type == v9.TRACK_TYPES.Facs then v9.NUMBERBOX_FACS_DRAG_MULTIPLIER else v9.NUMBERBOX_DRAG_MULTIPLIER,
        OnItemChanged = function(v107, v108)
            if v81.Type == v9.TRACK_TYPES.Facs then
                v108 = math.clamp(v108, 0, 1);
            end;
            for _, v110 in ipairs(v105) do
                if v110.Key == v107 then
                    v110.Value = v108;
                end;
            end;
            v80.onValueChanged(l_Instance_1, v103, l_Type_0, v93, l_Playhead_1, (v4.getPropertyForItems(v81, v105, l_props_1.DefaultEulerAnglesOrder)));
            return v108;
        end,
        OnExpandToggled = not not v100 and function(v111)
            v80.onTrackExpandToggled(v103, v111);
        end or nil,
        OnChangeBegan = l_props_1.OnChangeBegan,
        OnContextButtonClick = function()
            v80.onContextButtonClick(l_Instance_1, v103, l_Type_0, v93);
        end,
        OnTrackSelected = function()
            v80.onTrackSelected(v103);
        end
    });
    v80.incrementTrackCount();
    if l_Expanded_0 then
        if not v99 then
            v80:renderExpandedTracks(v81, v82, v83);
        else
            for _, v113 in ipairs(v9.COMPONENT_TRACK_TYPES[v81.Type]._Order) do
                v80:renderTrack(v81.Components[v113], v82, v83, v103, v81.Type, v93);
            end;
        end;
    end;
end;
v16.renderTracks = function(v114, v115, v116, v117)
    local l_props_2 = v114.props;
    local l_Tracks_0 = l_props_2.Tracks;
    local l_RootName_0 = l_props_2.RootName;
    local v121 = {
        Layout = v1.createElement("UIListLayout", {
            FillDirection = Enum.FillDirection.Vertical,
            SortOrder = Enum.SortOrder.LayoutOrder
        })
    };
    v114:renderSummaryTrack(l_RootName_0, v121, v117);
    for v122, v123 in ipairs(l_Tracks_0) do
        if v115 <= v122 and v114.trackCount <= v116 then
            v114:renderTrack(v123, v121, v117);
        end;
    end;
    return v121;
end;
v16.render = function(v124)
    v124.resetTrackCount();
    v124.maxTrackWidth = 0;
    local l_props_3 = v124.props;
    local l_Stylizer_0 = l_props_3.Stylizer;
    local l_state_0 = v124.state;
    local l_Size_0 = l_props_3.Size;
    local l_TopTrackIndex_0 = l_props_3.TopTrackIndex;
    local l_Y_0 = l_state_0.AbsoluteSize.Y;
    local l_X_0 = l_state_0.AbsoluteSize.X;
    local l_LayoutOrder_0 = l_props_3.LayoutOrder;
    local _ = nil;
    return v1.createElement(v15, {
        Size = l_Size_0,
        Width = l_X_0,
        LayoutOrder = l_LayoutOrder_0,
        BackgroundTransparency = 1,
        CanvasSize = UDim2.new(0, v124.maxTrackWidth + v9.TRACKLIST_RIGHT_PADDING, 0, 0),
        ZIndex = 2,
        OnInputChanged = v124.inputChanged,
        OnSizeChanged = v124.sizeChanged
    }, (v124:renderTracks(l_TopTrackIndex_0, if l_TopTrackIndex_0 == 0 then math.ceil((l_Y_0 - v9.SUMMARY_TRACK_HEIGHT) / v9.TRACK_HEIGHT) + 1 else (l_TopTrackIndex_0 + math.ceil(l_Y_0 / v9.TRACK_HEIGHT)) - 1, l_Stylizer_0)));
end;
return v3.connect(function(v134, _)
    local l_Status_0 = v134.Status;
    return {
        DefaultEulerAnglesOrder = l_Status_0.DefaultEulerAnglesOrder,
        IsPlaying = l_Status_0.IsPlaying,
        PlayState = l_Status_0.PlayState,
        ReadOnly = l_Status_0.ReadOnly
    };
end, function(_)
    return {};
end)((l_withContext_0({
    Stylizer = l_ContextServices_0.Stylizer,
    Analytics = l_ContextServices_0.Analytics,
    Signals = v6
})(v16)));


local l_script_FirstAncestor_0 = script:FindFirstAncestor("AnimationClipEditor");
local v1 = require(l_script_FirstAncestor_0.Packages.Roact);
local v2 = require(l_script_FirstAncestor_0.Src.Components.DragListenerArea);
local l_ContextServices_0 = require(l_script_FirstAncestor_0.Packages.Framework).ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local v5 = v1.PureComponent:extend("TrackListBorder");
v5.render = function(v6)
    local l_props_0 = v6.props;
    return v1.createElement("Frame", {
        Size = UDim2.new(0, 2, 1, 0),
        LayoutOrder = 1,
        BackgroundColor3 = l_props_0.Stylizer.borderColor,
        BorderSizePixel = 0,
        ZIndex = l_props_0.ZIndex
    }, {
        DragArea = v1.createElement(v2, {
            AnchorPoint = Vector2.new(1, 0),
            Size = UDim2.new(0, 5, 1, 0),
            ZIndex = 2,
            Cursor = "SplitEW",
            OnDragMoved = l_props_0.OnDragMoved
        })
    });
end;
return (l_withContext_0({
    Stylizer = l_ContextServices_0.Stylizer
})(v5));


local l_script_FirstAncestor_0 = script:FindFirstAncestor("AnimationClipEditor");
local v1 = require(l_script_FirstAncestor_0.Packages.Roact);
local l_ContextServices_0 = require(l_script_FirstAncestor_0.Packages.Framework).ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local v4 = require(l_script_FirstAncestor_0.Src.Util.Constants);
local v5 = v1.PureComponent:extend("TrackListEntry");
v5.render = function(v6)
    local l_props_0 = v6.props;
    local l_Stylizer_0 = l_props_0.Stylizer;
    local l_LayoutOrder_0 = l_props_0.LayoutOrder;
    local v10 = l_props_0.Indent or 0;
    local l_Height_0 = l_props_0.Height;
    local l_Primary_0 = l_props_0.Primary;
    local l_ShowBackground_0 = l_props_0.ShowBackground;
    local l_Selected_0 = l_props_0.Selected;
    local l_trackTheme_0 = l_Stylizer_0.trackTheme;
    local v16 = nil;
    if not l_Primary_0 then
        if not l_ShowBackground_0 then
            if l_Selected_0 then
                v16 = l_trackTheme_0.selectedBackgroundColor;
            end;
        else
            v16 = l_trackTheme_0.titleBackgroundColor;
        end;
    else
        v16 = l_trackTheme_0.primaryBackgroundColor;
    end;
    local v17 = l_props_0[v1.Children] or {};
    v17.Padding = v1.createElement("UIPadding", {
        PaddingLeft = UDim.new(0, v4.INDENT_PADDING * v10)
    });
    return v1.createElement("Frame", {
        Size = UDim2.new(1, 0, 0, l_Height_0),
        BorderSizePixel = 0,
        BackgroundColor3 = v16,
        BackgroundTransparency = not v16 and 1 or 0,
        LayoutOrder = l_LayoutOrder_0
    }, v17);
end;
return (l_withContext_0({
    Stylizer = l_ContextServices_0.Stylizer
})(v5));


local l_script_FirstAncestor_0 = script:FindFirstAncestor("AnimationClipEditor");
local v1 = require(l_script_FirstAncestor_0.Packages.Roact);
local v2 = require(l_script_FirstAncestor_0.Src.Util.Constants);
local v3 = require(l_script_FirstAncestor_0.Packages.Framework);
local l_ContextServices_0 = v3.ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local l_DragListener_0 = v3.UI.DragListener;
local v7 = require(l_script_FirstAncestor_0.Src.Components.ArrowButton);
local v8 = v1.PureComponent:extend("TrackScrollbar");
v8.init = function(v9)
    v9.scrollArea = v1.createRef();
    v9.state = {
        dragging = false,
        hovering = false
    };
    v9.onDragStarted = function()
        v9:setState({
            dragging = true
        });
    end;
    v9.onDragEnded = function()
        v9:setState({
            dragging = false
        });
    end;
    v9.mouseEnter = function()
        v9:setState({
            hovering = true
        });
    end;
    v9.mouseLeave = function()
        v9:setState({
            hovering = false
        });
    end;
    v9.scroll = function(v10)
        local l_props_0 = v9.props;
        local l_current_0 = v9.scrollArea.current;
        l_props_0.SetTopTrackIndex((math.floor(((v10.Position.Y - l_current_0.AbsolutePosition.Y) / l_current_0.AbsoluteSize.Y) * l_props_0.NumTracks + 0.5)));
    end;
end;
v8.render = function(v13)
    local l_props_1 = v13.props;
    local l_Stylizer_0 = l_props_1.Stylizer;
    local l_state_0 = v13.state;
    local l_Size_0 = l_props_1.Size;
    local l_AnchorPoint_0 = l_props_1.AnchorPoint;
    local l_Position_0 = l_props_1.Position;
    local l_TopTrackIndex_0 = l_props_1.TopTrackIndex;
    local l_NumTracks_0 = l_props_1.NumTracks;
    local l_dragging_0 = l_state_0.dragging;
    local l_hovering_0 = l_state_0.hovering;
    local l_scrollBarTheme_0 = l_Stylizer_0.scrollBarTheme;
    local v25 = l_TopTrackIndex_0 and l_NumTracks_0 > 1;
    local _ = nil;
    return v1.createElement("Frame", {
        Size = l_Size_0,
        Position = l_Position_0,
        AnchorPoint = l_AnchorPoint_0,
        BackgroundColor3 = l_scrollBarTheme_0.backgroundColor,
        BorderColor3 = l_scrollBarTheme_0.borderColor
    }, {
        ScrollArea = v1.createElement("Frame", {
            Position = UDim2.new(0, 0, 0.5, 0),
            AnchorPoint = Vector2.new(0, 0.5),
            Size = UDim2.new(1, 0, 1, -v2.SCROLL_BAR_SIZE * 2 - v2.SCROLL_BAR_PADDING),
            BackgroundTransparency = 1,
            [v1.Change.AbsoluteSize] = v13.recalculateExtents,
            [v1.Ref] = v13.scrollArea,
            [v1.Event.InputBegan] = function(_, v28)
                if v28.UserInputType == Enum.UserInputType.MouseButton1 then
                    v13.scroll(v28);
                    return ;
                else
                    if v28.UserInputType == Enum.UserInputType.MouseWheel then
                        l_props_1.OnScroll(v28.Position.Z);
                    end;
                    return ;
                end;
            end,
            [v1.Event.InputChanged] = function(_, v30)
                if v30.UserInputType == Enum.UserInputType.MouseWheel then
                    l_props_1.OnScroll(v30.Position.Z);
                end;
            end
        }, {
            ScrollBar = v25 and v1.createElement("Frame", {
                Size = UDim2.new(1, 0, 1 / l_NumTracks_0, 0),
                Position = UDim2.new(0, 0, (l_TopTrackIndex_0 - 1) / l_NumTracks_0, 0),
                BorderSizePixel = 1,
                BorderColor3 = l_scrollBarTheme_0.borderColor,
                BackgroundColor3 = if not l_dragging_0 then if l_hovering_0 then l_scrollBarTheme_0.hoverColor else l_scrollBarTheme_0.controlColor else l_scrollBarTheme_0.pressedColor,
                [v1.Event.MouseEnter] = v13.mouseEnter,
                [v1.Event.mouseLeave] = v13.mouseLeave,
                [v1.Event.InputBegan] = function(_, v32)
                    if v32.UserInputType == Enum.UserInputType.MouseButton1 then
                        v13.onDragStarted();
                    end;
                end
            })
        }),
        UpButton = v25 and v1.createElement(v7, {
            Rotation = 0,
            OnActivated = function()
                l_props_1.SetTopTrackIndex(l_TopTrackIndex_0 - 1);
            end
        }),
        DownButton = v25 and v1.createElement(v7, {
            Rotation = 180,
            Position = UDim2.new(0, 0, 1, 0),
            AnchorPoint = Vector2.new(0, 1),
            OnActivated = function()
                l_props_1.SetTopTrackIndex(l_TopTrackIndex_0 + 1);
            end
        }),
        DragTarget = l_dragging_0 and v1.createElement(l_DragListener_0, {
            OnDragMoved = v13.scroll,
            OnDragEnded = v13.onDragEnded
        })
    });
end;
return (l_withContext_0({
    Stylizer = l_ContextServices_0.Stylizer
})(v8));


local l_script_FirstAncestor_0 = script:FindFirstAncestor("AnimationClipEditor");
local v1 = require(l_script_FirstAncestor_0.Packages.Roact);
local v2 = require(l_script_FirstAncestor_0.Src.Util.Constants);
local v3 = require(l_script_FirstAncestor_0.Packages.Framework);
local l_ContextServices_0 = v3.ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local l_DragListener_0 = v3.UI.DragListener;
local v7 = require(l_script_FirstAncestor_0.Src.Components.ArrowButton);
local v8 = v1.PureComponent:extend("WideScrollingFrame");
v8.init = function(v9)
    v9.scrollArea = v1.createRef();
    v9.state = {
        CanvasPosition = Vector2.new(),
        dragging = false,
        mouseXOffset = 0,
        hovering = false
    };
    v9.onSizeChanged = function(v10)
        if v9.props.OnSizeChanged then
            v9.props.OnSizeChanged(v10);
        end;
    end;
    v9.onCanvasPositionChanged = function(v11)
        if v11.CanvasPosition ~= v9.state.CanvasPosition then
            v9:setState({
                CanvasPosition = v11.CanvasPosition
            });
        end;
    end;
    v9.onDragStarted = function(v12, v13)
        if v13.UserInputType == Enum.UserInputType.MouseButton1 then
            v9:setState({
                mouseXOffset = v13.Position.X - v12.AbsolutePosition.X,
                dragging = true
            });
        end;
    end;
    v9.setCanvasPosition = function(v14)
        v9:setState({
            CanvasPosition = Vector2.new(math.floor(v14 * v9.props.CanvasSize.X.Offset + 0.5), 0)
        });
    end;
    v9.onDragMoved = function(v15)
        local l_mouseXOffset_0 = v9.state.mouseXOffset;
        local l_current_0 = v9.scrollArea.current;
        v9.setCanvasPosition((math.clamp(((v15.Position.X - l_current_0.AbsolutePosition.X) - l_mouseXOffset_0) / l_current_0.AbsoluteSize.X, 0, 1)));
    end;
    v9.onDragEnded = function()
        v9:setState({
            dragging = false
        });
    end;
    v9.scroll = function(v18, v19)
        local l_props_0 = v9.props;
        v9:setState({
            mouseXOffset = ((l_props_0.Width / l_props_0.CanvasSize.X.Offset) * v18.AbsoluteSize.X) / 2
        });
        v9.onDragMoved(v19);
    end;
    v9.mouseEnter = function()
        v9:setState({
            hovering = true
        });
    end;
    v9.mouseLeave = function()
        v9:setState({
            hovering = false
        });
    end;
end;
v8.render = function(v21)
    local l_props_1 = v21.props;
    local l_Stylizer_0 = l_props_1.Stylizer;
    local l_state_0 = v21.state;
    local l_Size_0 = l_props_1.Size;
    local l_AnchorPoint_0 = l_props_1.AnchorPoint;
    local l_Position_0 = l_props_1.Position;
    local l_CanvasSize_0 = l_props_1.CanvasSize;
    local l_LayoutOrder_0 = l_props_1.LayoutOrder;
    local l_ZIndex_0 = l_props_1.ZIndex;
    local l_Width_0 = l_props_1.Width;
    local v32 = l_props_1.BackgroundTransparency or 0;
    local l_dragging_0 = l_state_0.dragging;
    local l_hovering_0 = l_state_0.hovering;
    local l_CanvasPosition_0 = l_state_0.CanvasPosition;
    local l_scrollBarTheme_0 = l_Stylizer_0.scrollBarTheme;
    local v37 = l_CanvasSize_0.X.Offset > 0 and l_CanvasSize_0.X.Offset or 1;
    local v38 = l_Width_0 < v37;
    local v39 = math.min(l_CanvasPosition_0.X, v37 - l_Width_0);
    local _ = nil;
    return v1.createElement("Frame", {
        Size = l_Size_0,
        Position = l_Position_0,
        LayoutOrder = l_LayoutOrder_0,
        AnchorPoint = l_AnchorPoint_0,
        BackgroundColor3 = l_Stylizer_0.backgroundColor,
        BorderColor3 = l_Stylizer_0.borderColor,
        BackgroundTransparency = v32,
        ZIndex = l_ZIndex_0
    }, {
        Canvas = v1.createElement("ScrollingFrame", {
            Size = UDim2.new(1, 0, 1, -v2.SCROLL_BAR_SIZE),
            CanvasSize = l_CanvasSize_0,
            CanvasPosition = l_CanvasPosition_0,
            ScrollBarThickness = 0,
            BackgroundTransparency = 1,
            [v1.Change.AbsoluteSize] = v21.onSizeChanged,
            [v1.Change.CanvasPosition] = v21.onCanvasPositionChanged,
            [v1.Event.InputBegan] = l_props_1.OnInputChanged,
            [v1.Event.InputChanged] = l_props_1.OnInputChanged
        }, l_props_1[v1.Children]),
        Footer = v1.createElement("Frame", {
            Size = UDim2.new(1, 0, 0, v2.SCROLL_BAR_SIZE),
            Position = UDim2.new(0, 0, 1, 0),
            AnchorPoint = Vector2.new(0, 1),
            BackgroundColor3 = l_scrollBarTheme_0.backgroundColor,
            BorderColor3 = l_scrollBarTheme_0.borderColor
        }, {
            ScrollArea = v38 and v1.createElement("Frame", {
                Position = UDim2.new(0.5, 0, 0, 0),
                AnchorPoint = Vector2.new(0.5, 0),
                Size = UDim2.new(1, -v2.SCROLL_BAR_SIZE * 2 - v2.SCROLL_BAR_PADDING, 1, 0),
                BackgroundTransparency = 1,
                [v1.Change.AbsoluteSize] = v21.recalculateExtents,
                [v1.Ref] = v21.scrollArea,
                [v1.Event.InputBegan] = function(v41, v42)
                    if not l_dragging_0 and v42.UserInputType == Enum.UserInputType.MouseButton1 then
                        v21.scroll(v41, v42);
                    end;
                end
            }, {
                ScrollBar = v1.createElement("Frame", {
                    Size = UDim2.new(l_Width_0 / v37, 0, 1, 0),
                    Position = UDim2.new(v39 / v37, 0, 0, 0),
                    BorderSizePixel = 0,
                    BackgroundColor3 = if not l_dragging_0 then if l_hovering_0 then l_scrollBarTheme_0.hoverColor else l_scrollBarTheme_0.controlColor else l_scrollBarTheme_0.pressedColor,
                    [v1.Event.MouseEnter] = v21.mouseEnter,
                    [v1.Event.mouseLeave] = v21.mouseLeave,
                    [v1.Event.InputBegan] = v21.onDragStarted
                })
            }),
            LeftButton = v38 and v1.createElement(v7, {
                Rotation = 270,
                OnActivated = function()
                    v21.setCanvasPosition(0);
                end
            }),
            RightButton = v38 and v1.createElement(v7, {
                Rotation = 90,
                Position = UDim2.new(1, 0, 0, 0),
                AnchorPoint = Vector2.new(1, 0),
                OnActivated = function()
                    v21.setCanvasPosition(1);
                end
            }),
            DragTarget = l_dragging_0 and v1.createElement(l_DragListener_0, {
                OnDragMoved = v21.onDragMoved,
                OnDragEnded = v21.onDragEnded
            })
        })
    });
end;
return (l_withContext_0({
    Stylizer = l_ContextServices_0.Stylizer
})(v8));


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 v3 = require(l_script_FirstAncestor_0.Src.Util.Constants);
local l_ContextServices_0 = v2.ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local l_DragListener_0 = v2.UI.DragListener;
local v7 = require(l_script_FirstAncestor_0.Src.Components.ArrowButton);
local v8 = v1.PureComponent:extend("ZoomBar");
v8.HORIZONTAL = "Horizontal";
v8.VERTICAL = "Vertical";
v8.calculateScrollAndZoom = function(v9)
    local v10 = math.clamp(1 - (v9.MaxValue - v9.MinValue), 0, 1);
    local v11 = 0;
    if v10 > 0 then
        v11 = v9.MinValue / v10;
    end;
    if v9.props.AdjustScrollZoom then
        v9.props.AdjustScrollZoom(v11, v10);
    end;
end;
v8.getDraggableSize = function(v12)
    if v12.props.Direction == v8.HORIZONTAL then
        return (v12.props.ContainerSize.X - v3.SCROLL_BAR_PADDING) - v3.SCROLL_BAR_SIZE * 4;
    else
        return (v12.props.ContainerSize.Y - v3.SCROLL_BAR_PADDING) - v3.SCROLL_BAR_SIZE * 4;
    end;
end;
v8.isDragging = function(v13)
    return v13.state.Zooming or v13.state.Scrolling;
end;
v8.calculateMinAndMax = function(v14)
    local l_props_0 = v14.props;
    local v16 = l_props_0.Scroll or 0;
    local v17 = l_props_0.Zoom or 0;
    v14.MinValue = v16 * v17;
    v14.MaxValue = (1 - v17) + v16 * v17;
end;
v8.init = function(v18)
    v18.state = {
        Scrolling = false,
        Zooming = false,
        Hovering = false
    };
    v18.MinValue = 0;
    v18.MaxValue = 1;
    v18.updateMin = function(v19)
        v18.MinValue = math.clamp((((v19 - v18.props.Min) - v18.ClickOffset) + v3.SCROLL_BAR_SIZE) / v18:getDraggableSize(), 0, v18.MaxValue);
    end;
    v18.updateMax = function(v20)
        v18.MaxValue = math.clamp(((v20 - v18.props.Min) - v18.ClickOffset) / v18:getDraggableSize(), v18.MinValue, 1);
    end;
    v18.updateMiddle = function(v21)
        local l_MinValue_0 = v18.MinValue;
        v18.MinValue = math.clamp(v21, 0, l_MinValue_0 + (1 - v18.MaxValue));
        v18.MaxValue = v18.MaxValue + (v18.MinValue - l_MinValue_0);
        v18:calculateScrollAndZoom();
    end;
    v18.dragMiddle = function(v23)
        v18.updateMiddle(((v23 - v18.props.Min) - v18.ClickOffset) / v18:getDraggableSize());
    end;
    v18.onZoomBegan = function(v24, v25, v26)
        if Enum.UserInputType.MouseButton1 == v25.UserInputType then
            v18:setState({
                Zooming = true
            });
            if v18.props.Direction == v8.HORIZONTAL then
                v18.ClickOffset = (v25.Position.X - v24.AbsolutePosition.X) + v3.SCROLL_BAR_SIZE * 2;
            else
                v18.ClickOffset = (v25.Position.Y - v24.AbsolutePosition.Y) + v3.SCROLL_BAR_SIZE * 2;
            end;
            v18.ZoomFunc = v26;
        end;
    end;
    v18.onScrollBegan = function(v27, v28)
        if Enum.UserInputType.MouseButton1 == v28.UserInputType then
            v18:setState({
                Scrolling = true
            });
            if v18.props.Direction == v8.HORIZONTAL then
                v18.ClickOffset = (v28.Position.X - v27.AbsolutePosition.X) + v3.SCROLL_BAR_SIZE * 2;
                return ;
            else
                v18.ClickOffset = (v28.Position.Y - v27.AbsolutePosition.Y) + v3.SCROLL_BAR_SIZE * 2;
            end;
        end;
    end;
    v18.onInputChanged = function(v29)
        if v18:isDragging() then
            local v30 = v18.props.Direction == v8.HORIZONTAL and v29.Position.X or v29.Position.Y;
            if not v18.state.Zooming then
                if v18.state.Scrolling then
                    v18.dragMiddle(v30);
                end;
            else
                v18.ZoomFunc(v30);
                v18:calculateScrollAndZoom();
                return ;
            end;
        end;
    end;
    v18.onInputEnded = function()
        v18:setState({
            Zooming = false,
            Scrolling = false
        });
    end;
    v18.mouseEnter = function()
        v18:setState({
            Hovering = true
        });
    end;
    v18.mouseLeave = function()
        v18:setState({
            Hovering = false
        });
    end;
end;
v8.render = function(v31)
    local l_props_1 = v31.props;
    local l_state_0 = v31.state;
    local l_zoomBarTheme_0 = l_props_1.Stylizer.zoomBarTheme;
    local l_Position_0 = l_props_1.Position;
    local l_Size_0 = l_props_1.Size;
    local l_LayoutOrder_0 = l_props_1.LayoutOrder;
    local l_ZIndex_0 = l_props_1.ZIndex;
    local l_Hovering_0 = l_state_0.Hovering;
    local v40 = v31:isDragging();
    if not v40 then
        v31:calculateMinAndMax();
    end;
    local v41 = (v31.MinValue * v31:getDraggableSize() + v3.SCROLL_BAR_SIZE) + 1;
    local v42 = v3.SCROLL_BAR_SIZE * 2 + v31.MaxValue * v31:getDraggableSize();
    local v43 = v41 + v3.SCROLL_BAR_SIZE;
    local v44 = (v42 - v41) - v3.SCROLL_BAR_SIZE;
    local v45 = v31.props.Direction == v8.HORIZONTAL;
    local _ = nil;
    return v1.createElement("ImageButton", {
        Position = l_Position_0,
        Size = l_Size_0,
        BackgroundColor3 = l_zoomBarTheme_0.backgroundColor,
        BorderColor3 = l_zoomBarTheme_0.borderColor,
        LayoutOrder = l_LayoutOrder_0,
        ZIndex = l_ZIndex_0,
        AutoButtonColor = false,
        ImageTransparency = 1,
        [v1.Event.InputBegan] = function(_, v48)
            if not v31:isDragging() and v48.UserInputType == Enum.UserInputType.MouseButton1 then
                v31.ClickOffset = v44 / 2 + v3.SCROLL_BAR_SIZE * 2;
                v31.dragMiddle(not not v45 and v48.Position.X or v48.Position.Y);
            end;
        end
    }, {
        DragTarget = v31:isDragging() and v1.createElement(l_DragListener_0, {
            OnDragMoved = v31.onInputChanged,
            OnDragEnded = v31.onInputEnded
        }),
        MinZoomControl = v1.createElement("ImageLabel", {
            Position = not not v45 and UDim2.new(0, v41, 0, 0) or UDim2.new(0, 0, 0, v41),
            Size = UDim2.new(0, v3.SCROLL_BAR_SIZE, 0, v3.SCROLL_BAR_SIZE),
            BackgroundColor3 = l_zoomBarTheme_0.controlColor,
            BorderSizePixel = l_zoomBarTheme_0.borderSize,
            BorderColor3 = l_zoomBarTheme_0.borderColor,
            Image = l_zoomBarTheme_0.controlImage,
            Rotation = not v45 and 90 or 0,
            ScaleType = Enum.ScaleType.Fit,
            ImageColor3 = l_zoomBarTheme_0.imageColor,
            ZIndex = l_ZIndex_0,
            [v1.Event.InputBegan] = function(v49, v50)
                v31.onZoomBegan(v49, v50, v31.updateMin);
            end
        }),
        ScrollControl = v1.createElement("Frame", {
            Position = not not v45 and UDim2.new(0, v43, 0, 0) or UDim2.new(0, 0, 0, v43),
            Size = not not v45 and UDim2.new(0, v44, 1, 0) or UDim2.new(1, 0, 0, v44),
            BackgroundColor3 = if not v40 then if l_Hovering_0 then l_zoomBarTheme_0.hoverColor else l_zoomBarTheme_0.controlColor else l_zoomBarTheme_0.pressedColor,
            BorderColor3 = l_zoomBarTheme_0.borderColor,
            BorderSizePixel = l_zoomBarTheme_0.borderSize,
            ZIndex = l_ZIndex_0,
            [v1.Event.InputBegan] = v31.onScrollBegan,
            [v1.Event.MouseEnter] = v31.mouseEnter,
            [v1.Event.MouseLeave] = v31.mouseLeave
        }),
        MaxZoomControl = v1.createElement("ImageLabel", {
            Position = not not v45 and UDim2.new(0, v42, 0, 0) or UDim2.new(0, 0, 0, v42),
            Size = UDim2.new(0, v3.SCROLL_BAR_SIZE, 0, v3.SCROLL_BAR_SIZE),
            BackgroundColor3 = l_zoomBarTheme_0.controlColor,
            BorderSizePixel = l_zoomBarTheme_0.borderSize,
            BorderColor3 = l_zoomBarTheme_0.borderColor,
            Image = l_zoomBarTheme_0.controlImage,
            Rotation = not v45 and 90 or 0,
            ScaleType = Enum.ScaleType.Fit,
            ImageColor3 = l_zoomBarTheme_0.imageColor,
            ZIndex = l_ZIndex_0,
            [v1.Event.InputBegan] = function(v51, v52)
                v31.onZoomBegan(v51, v52, v31.updateMax);
            end
        }),
        MinButton = v1.createElement(v7, {
            Rotation = not v45 and 0 or 270,
            OnActivated = function()
                v31.updateMiddle(v31.MinValue - v3.ZOOM_INCREMENT);
            end
        }),
        MaxButton = v1.createElement(v7, {
            Rotation = not v45 and 180 or 90,
            Position = not not v45 and UDim2.new(1, 0, 0, 0) or UDim2.new(0, 0, 1, 0),
            AnchorPoint = not not v45 and Vector2.new(1, 0) or Vector2.new(0, 1),
            OnActivated = function()
                v31.updateMiddle(v31.MinValue + v3.ZOOM_INCREMENT);
            end
        })
    });
end;
v8 = l_withContext_0({
    Stylizer = l_ContextServices_0.Stylizer
})(v8);
return v8;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("AnimationClipEditor");
local v1 = require(l_script_FirstAncestor_0.Packages.Roact);
local _ = require(l_script_FirstAncestor_0.Packages.RoactRodux);
local v3 = require(l_script_FirstAncestor_0.Packages.Framework);
local _ = require(l_script_FirstAncestor_0.Src.Util.Constants);
local l_ContextServices_0 = v3.ContextServices;
local _ = require(l_script_FirstAncestor_0.Src.Util.DebugFlags);
local v7 = v1.PureComponent:extend("MainProvider");
v7.render = function(v8)
    return l_ContextServices_0.provide({
        v8.props.analytics,
        v8.props.focusGui and l_ContextServices_0.Focus.new(v8.props.focusGui),
        v8.props.plugin and l_ContextServices_0.Plugin.new(v8.props.plugin),
        v8.props.localization,
        v8.props.theme,
        v8.props.store and l_ContextServices_0.Store.new(v8.props.store),
        v8.props.mouse and l_ContextServices_0.Mouse.new(v8.props.mouse),
        v8.props.pluginActions,
        v8.props.signals,
        v8.props.calloutController
    }, v8.props[v1.Children]);
end;
return v7;


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.Rodux);
local v3 = require(l_script_FirstAncestor_0.Packages.Framework);
local l_ContextServices_0 = v3.ContextServices;
local l_ServiceWrapper_0 = v3.TestHelpers.ServiceWrapper;
local l_MockPlugin_0 = v3.TestHelpers.Instances.MockPlugin;
local v7 = require(l_script_FirstAncestor_0.Src.Context.MainProvider);
local v8 = require(l_script_FirstAncestor_0.Src.Util.Theme);
local v9 = require(l_script_FirstAncestor_0.Src.Reducers.MainReducer);
local l_Localization_0 = l_ContextServices_0.Localization;
local v11 = require(l_script_FirstAncestor_0.Src.Context.Signals);
local v12 = require(l_script_FirstAncestor_0.Src.Util.Constants);
local v13 = require(l_script_FirstAncestor_0.Src.Util.CalloutController);
local v14 = v1.Component:extend("MockWrapper");
v14.getMockGlobals = function(v15)
    if not v15 then
        v15 = {};
    end;
    local v16 = v15.localization or l_Localization_0.mock();
    local v17 = v15.focusGui or Instance.new("ScreenGui");
    v17.Name = "FocusGuiMock";
    if v15.Container then
        v17.Parent = v15.Container;
    end;
    local v18 = v15.plugin or l_MockPlugin_0.new();
    return {
        focusGui = v17,
        plugin = v18,
        localization = v16,
        theme = v15.theme or v8(true),
        mouse = v15.mouse or v18:GetMouse(),
        store = v2.Store.new(v9, v15.storeState, {
            v2.thunkMiddleware
        }),
        analytics = l_ContextServices_0.Analytics.mock(),
        pluginActions = l_ContextServices_0.PluginActions.new(v18, {
            {
                id = "rerunLastStory",
                text = "MOCK"
            }
        }),
        signals = v11.new(v12.SIGNAL_KEYS),
        calloutController = v13.new(l_ServiceWrapper_0.new("CalloutService", true):asService())
    };
end;
v14.render = function(v19)
    return v1.createElement(v7, v14.getMockGlobals(v19.props), v19.props[v1.Children]);
end;
return v14;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("AnimationClipEditor");
local v1 = require(l_script_FirstAncestor_0.Packages.DraggerFramework.Utility.Signal);
local v2 = require(l_script_FirstAncestor_0.Packages.Framework).ContextServices.ContextItem:extend("Signals");
v2.new = function(v3)
    local v4 = {
        signals = v2:__mapSignalIDs(v3)
    };
    setmetatable(v4, v2);
    return v4;
end;
v2.__mapSignalIDs = function(_, v6)
    local v7 = {};
    for _, v9 in pairs(v6) do
        assert(v7[v9] == nil, "Duplicate action, ID: " .. v9);
        v7[v9] = v1.new();
    end;
    return v7;
end;
v2.get = function(v10, v11)
    return v10.signals[v11];
end;
return v2;


return require(script:FindFirstAncestor("AnimationClipEditor").Packages.Rodux).createReducer(nil, {
    SetAnimationData = function(_, v1)
        return v1.animationData;
    end
});


local l_script_FirstAncestor_0 = script:FindFirstAncestor("AnimationClipEditor");
local v1 = require(l_script_FirstAncestor_0.Packages.Rodux);
local v2 = require(l_script_FirstAncestor_0.Packages.Cryo);
return v1.createReducer({
    Past = {},
    Future = {},
    MaxWaypointSize = require(l_script_FirstAncestor_0.Src.Util.Constants).MAX_WAYPOINT_SIZE
}, {
    SetPast = function(v3, v4)
        return v2.Dictionary.join(v3, {
            Past = v4.past
        });
    end,
    SetFuture = function(v5, v6)
        return v2.Dictionary.join(v5, {
            Future = v6.future
        });
    end,
    SetMaxWaypointSize = function(v7, v8)
        return v2.Dictionary.join(v7, {
            MaxWaypointSize = v8.maxSize
        });
    end
});


local l_script_FirstAncestor_0 = script:FindFirstAncestor("AnimationClipEditor");
return require(l_script_FirstAncestor_0.Packages.Rodux).combineReducers({
    Status = require(l_script_FirstAncestor_0.Src.Reducers.Status),
    AnimationData = require(l_script_FirstAncestor_0.Src.Reducers.AnimationData),
    History = require(l_script_FirstAncestor_0.Src.Reducers.History),
    Notifications = require(l_script_FirstAncestor_0.Src.Reducers.Notifications)
});


local l_script_FirstAncestor_0 = script:FindFirstAncestor("AnimationClipEditor");
local v1 = require(l_script_FirstAncestor_0.Packages.Rodux);
local v2 = require(l_script_FirstAncestor_0.Packages.Cryo);
return v1.createReducer({
    QuantizeWarning = false,
    Saved = false,
    Loaded = false,
    ClippedWarning = false,
    InvalidAnimation = false,
    CannotPasteError = false
}, {
    SetNotification = function(v3, v4)
        assert(v3[v4.notification] ~= nil, "Notification " .. v4.notification .. " does not exist in Notifications.");
        local v5 = v2.Dictionary.join(v3, {
            [v4.notification] = v4.value
        });
        if not (not (v4.notification == "Loaded") or not v4.value) then
            v5.Saved = false;
        end;
        return v5;
    end
});


local l_script_FirstAncestor_0 = script:FindFirstAncestor("AnimationClipEditor");
local v1 = require(l_script_FirstAncestor_0.Packages.Rodux);
local v2 = require(l_script_FirstAncestor_0.Packages.Cryo);
local l_join_0 = v2.Dictionary.join;
local v4 = require(l_script_FirstAncestor_0.Src.Util.Constants);
local v5 = require(l_script_FirstAncestor_0.LuaFlags.GetFFlagAnimationConstraints);
local _ = require(l_script_FirstAncestor_0.LuaFlags.GetFFlagSelectFromViewport);
local v7 = require(l_script_FirstAncestor_0.LuaFlags.GetFFlagTimelineUnitSeconds);
return v1.createReducer({
    Active = false,
    AnimationFromVideoErroredOut = false,
    AnimationFromVideoUploadStartTime = nil,
    AnimationImportProgress = 0,
    AnimationImportStatus = v4.ANIMATION_FROM_VIDEO_STATUS.Initializing,
    AutoFocusFaceEnabled = false,
    Clipboard = {},
    ClipboardType = nil,
    CreatingAnimationFromVideo = false,
    DefaultEulerAnglesOrder = Enum.RotationOrder.XYZ,
    DefaultRotationType = v4.DEFAULT_ROTATION_TYPE,
    EditingLength = 0,
    EditorMode = v4.EDITOR_MODE.DopeSheet,
    EditorModeSwitchTime = nil,
    EventEditingTick = nil,
    FaceControlsEditorOpenedTimestamp = nil,
    FrameRate = v4.DEFAULT_FRAMERATE,
    GridSpeed = 0,
    haveToSetBackToNotLooping = false,
    HorizontalScroll = 0,
    HorizontalZoom = 0,
    IKEnabled = false,
    IKMode = v4.IK_MODE.FullBody,
    IKOpenedTimestamp = nil,
    inReviewState = false,
    IsDirty = false,
    IsLegacyAnimSaves = false,
    LastSelectedPath = nil,
    LegacyAnimationInstances = {},
    PinnedParts = {},
    PlaybackSpeed = 1,
    PlaybackStartInfo = {},
    Playhead = 0,
    PlayState = v4.PLAY_STATE.Pause,
    ReadOnly = false,
    ReduceKeyframesDialogMode = v4.REDUCE_KEYFRAMES_DIALOG_MODE.Hidden,
    RightClickContextInfo = {},
    RootInstance = nil,
    SelectedEvents = {},
    SelectedKeyframes = {},
    SelectedTracks = nil,
    ShowAsSeconds = not v7() and true or nil,
    ShowEvents = true,
    ShowFaceControlsEditorPanel = false,
    ShowTree = false,
    SnapMode = v4.SNAP_MODES.Frames,
    SymmetryEnabled = false,
    TimelineUnit = v4.TIMELINE_UNITS.SecondsDecimal,
    Tool = Enum.RibbonTool.Rotate,
    TopTrackIndex = 1,
    Tracks = {},
    UnusedFacs = {},
    UnusedTracks = {},
    VerticalScroll = 0,
    VerticalZoom = 0,
    VisualizeBones = true,
    WorldSpace = false
}, {
    SetActive = function(v8, v9)
        return l_join_0(v8, {
            Active = v9.active
        });
    end,
    SetAnimationFromVideoErroredOut = function(v10, v11)
        return l_join_0(v10, {
            AnimationFromVideoErroredOut = v11.animationFromVideoErroredOut
        });
    end,
    SetAnimationFromVideoUploadStartTime = function(v12, v13)
        return l_join_0(v12, {
            AnimationFromVideoUploadStartTime = v13.animationFromVideoUploadStartTime
        });
    end,
    SetAnimationImportProgress = function(v14, v15)
        return l_join_0(v14, {
            AnimationImportProgress = v15.animationImportProgress
        });
    end,
    SetAnimationImportStatus = function(v16, v17)
        return l_join_0(v16, {
            AnimationImportStatus = v17.animationImportStatus
        });
    end,
    SetAutoFocusFaceEnabled = function(v18, v19)
        return l_join_0(v18, {
            AutoFocusFaceEnabled = v19.autoFocusFaceEnabled
        });
    end,
    SetBoneVisualization = function(v20, v21)
        return l_join_0(v20, {
            VisualizeBones = v21.visualizeBones
        });
    end,
    SetClipboard = function(v22, v23)
        return l_join_0(v22, {
            Clipboard = v23.clipboard,
            ClipboardType = v23.clipboardType
        });
    end,
    SetCreatingAnimationFromVideo = function(v24, v25)
        return l_join_0(v24, {
            CreatingAnimationFromVideo = v25.creatingAnimationFromVideo
        });
    end,
    SetDefaultEulerAnglesOrder = function(v26, v27)
        return l_join_0(v26, {
            DefaultEulerAnglesOrder = v27.defaultEulerAnglesOrder
        });
    end,
    SetDefaultRotationType = function(v28, v29)
        return l_join_0(v28, {
            DefaultRotationType = v29.defaultRotationType
        });
    end,
    SetEditingLength = function(v30, v31)
        return l_join_0(v30, {
            EditingLength = v31.editingLength
        });
    end,
    SetEditorMode = function(v32, v33)
        return l_join_0(v32, {
            EditorMode = v33.editorMode,
            EditorModeSwitchTime = v33.editorModeSwitchTime
        });
    end,
    SetEventEditingTick = function(v34, v35)
        return l_join_0(v34, {
            EventEditingTick = v35.eventEditingTick or v2.None
        });
    end or nil,
    SetFaceControlsEditorOpenedTimestamp = function(v36, v37)
        return l_join_0(v36, {
            FaceControlsEditorOpenedTimestamp = v37.FaceControlsEditorOpenedTimestamp
        });
    end,
    SetFrameRate = function(v38, v39)
        return l_join_0(v38, {
            FrameRate = v39.frameRate
        });
    end,
    SetGridSpeed = function(v40, v41)
        return l_join_0(v40, {
            GridSpeed = v41.gridSpeed
        });
    end,
    SetHaveToSetBackToNotLooping = function(v42, v43)
        return l_join_0(v42, {
            haveToSetBackToNotLooping = v43.haveToSetBackToNotLooping
        });
    end,
    SetHorizontalScrollZoom = function(v44, v45)
        return l_join_0(v44, {
            HorizontalScroll = v45.horizontalScroll,
            HorizontalZoom = v45.horizontalZoom
        });
    end,
    SetIKEnabled = function(v46, v47)
        return l_join_0(v46, {
            IKEnabled = v47.ikEnabled
        });
    end,
    SetIKMode = function(v48, v49)
        return l_join_0(v48, {
            IKMode = v49.ikMode
        });
    end,
    SetIKOpenedTimestamp = function(v50, v51)
        return l_join_0(v50, {
            IKOpenedTimestamp = v51.iKOpenedTimestamp
        });
    end,
    SetInReviewState = function(v52, v53)
        return l_join_0(v52, {
            inReviewState = v53.inReviewState
        });
    end,
    SetIsDirty = function(v54, v55)
        return l_join_0(v54, {
            IsDirty = v55.isDirty
        });
    end,
    SetIsLegacyAnimSaves = function(v56, v57)
        return l_join_0(v56, {
            IsLegacyAnimSaves = v57.isLegacyAnimSaves
        });
    end,
    SetLastSelectedPath = function(v58, v59)
        return l_join_0(v58, {
            LastSelectedPath = v59.lastSelectedPath or v2.None
        });
    end,
    SetLegacyAnimationInstances = function(v60, v61)
        return l_join_0(v60, {
            LegacyAnimationInstances = v61.legacyAnimationInstances
        });
    end,
    SetMotorData = not v5() and function(v62, v63)
        return l_join_0(v62, {
            MotorData = v63.motorData
        });
    end or nil,
    SetPinnedParts = function(v64, v65)
        return l_join_0(v64, {
            PinnedParts = v65.pinnedParts
        });
    end,
    SetPlaybackSpeed = function(v66, v67)
        return l_join_0(v66, {
            PlaybackSpeed = v67.playbackSpeed
        });
    end,
    SetPlaybackStartInfo = function(v68, v69)
        return l_join_0(v68, {
            PlaybackStartInfo = v69.playbackStartInfo
        });
    end,
    SetPlayhead = function(v70, v71)
        return l_join_0(v70, {
            Playhead = v71.playhead
        });
    end,
    SetPlayState = function(v72, v73)
        return l_join_0(v72, {
            PlayState = v73.playState
        });
    end,
    SetReadOnly = function(v74, v75)
        return l_join_0(v74, {
            ReadOnly = v75.readOnly
        });
    end,
    SetReduceKeyframesDialogMode = function(v76, v77)
        return l_join_0(v76, {
            ReduceKeyframesDialogMode = v77.reduceKeyframesDialogMode
        });
    end,
    SetRightClickContextInfo = function(v78, v79)
        return l_join_0(v78, {
            RightClickContextInfo = v79.rightClickContextInfo
        });
    end,
    SetRootInstance = function(v80, v81)
        return l_join_0(v80, {
            RootInstance = v81.rootInstance or v2.None
        });
    end,
    SetSelectedEvents = function(v82, v83)
        return l_join_0(v82, {
            SelectedEvents = v83.selected
        });
    end,
    SetSelectedKeyframes = function(v84, v85)
        return l_join_0(v84, {
            SelectedKeyframes = v85.selected
        });
    end,
    SetSelectedTrackInstances = function(v86, v87)
        return l_join_0(v86, {
            SelectedTrackInstances = v87.selectedTrackInstances or v2.None
        });
    end,
    SetSelectedTracks = function(v88, v89)
        return l_join_0(v88, {
            SelectedTracks = v89.selectedTracks or v2.None
        });
    end,
    SetShowAsSeconds = not v7() and function(v90, v91)
        return l_join_0(v90, {
            ShowAsSeconds = v91.showAsSeconds
        });
    end or nil,
    SetShowEvents = function(v92, v93)
        return l_join_0(v92, {
            ShowEvents = v93.showEvents
        });
    end,
    SetShowFaceControlsEditorPanel = function(v94, v95)
        return l_join_0(v94, {
            ShowFaceControlsEditorPanel = v95.showFaceControlsEditorPanel
        });
    end,
    SetShowTree = function(v96, v97)
        return l_join_0(v96, {
            ShowTree = v97.showTree
        });
    end,
    SetSnapMode = function(v98, v99)
        return l_join_0(v98, {
            SnapMode = v99.snapMode
        });
    end,
    SetStartingPose = function(v100, v101)
        return l_join_0(v100, {
            StartingPose = v101.startingPose or v2.None
        });
    end,
    SetSymmetryEnabled = function(v102, v103)
        return l_join_0(v102, {
            SymmetryEnabled = v103.symmetryEnabled
        });
    end,
    SetTimelineUnit = function(v104, v105)
        return l_join_0(v104, {
            TimelineUnit = v105.timelineUnit
        });
    end,
    SetTool = function(v106, v107)
        return l_join_0(v106, {
            Tool = v107.tool
        });
    end,
    SetTopTrackIndex = function(v108, v109)
        return l_join_0(v108, {
            TopTrackIndex = v109.topTrackIndex
        });
    end,
    SetTracks = function(v110, v111)
        return l_join_0(v110, {
            Tracks = v111.tracks,
            UnusedTracks = v111.unusedTracks,
            UnusedFacs = v111.unusedFacs
        });
    end,
    SetVerticalScrollZoom = function(v112, v113)
        return l_join_0(v112, {
            VerticalScroll = v113.verticalScroll,
            VerticalZoom = v113.verticalZoom
        });
    end,
    ToggleWorldSpace = function(v114, _)
        return l_join_0(v114, {
            WorldSpace = not v114.WorldSpace
        });
    end
});


local l_StudioService_0 = game:GetService("StudioService");
local v1 = require(script:FindFirstAncestor("AnimationClipEditor").Packages.Cryo);
local function _(v2)
    if not v2 then
        return nil;
    else
        return (string.lower(v2));
    end;
end;
return function(v4)
    local function v7(v5, v6)
        v4:SendEventDeferred("studio", "animationEditor", v5, (v1.Dictionary.join({
            studioSid = v4:GetSessionId(),
            clientId = v4:GetClientId(),
            placeId = game.PlaceId,
            userId = l_StudioService_0:GetUserId()
        }, v6 or {})));
    end;
    local function _(v8, v9)
        v4:ReportCounter(v8, v9 or 1);
    end;
    local function _(v11, v12)
        v4:ReportStats(v11, v12 or 1);
    end;
    local function _(v14)
        return "studio" .. "." .. "animationEditor" .. "." .. v14;
    end;
    return {
        onEditorOpened = function(_, v17, v18, v19)
            v7("toolOpened", {
                method = 1,
                timelineUnit = v17,
                keyframeSnap = v18,
                snapMode = v19
            });
            v4:ReportCounter("studio" .. "." .. "animationEditor" .. "." .. "EditorOpened", 1);
            v7("EditorOpened");
        end,
        onEditorClosed = function(_, v21)
            v7("toolClosed", {
                timeOpen = v21,
                method = 1
            });
        end,
        onImportAnimation = function(_, v23, v24)
            v7("importAnimation", {
                animationId = v23,
                guid = if not v24 then nil else string.lower(v24)
            });
        end,
        onImportFbxAnimation = function(_, v26)
            v7("importFbxAnimation", {
                guid = if not v26 then nil else string.lower(v26)
            });
            v4:ReportCounter("studio" .. "." .. "animationEditor" .. "." .. "FBXAnimationImported", 1);
            v7("FBXAnimationImported");
        end,
        onUserChoseFBXModelForAnimImport = function(_, v28)
            v4:ReportCounter("studio" .. "." .. "animationEditor" .. "." .. "UserChoseFBXModelForAnimImport", 1);
            v7("userChoseFBXModelForAnimImport", {
                guid = if not v28 then nil else string.lower(v28)
            });
        end,
        onUserChoseSelectedModelForAnimImport = function(_, v30)
            v4:ReportCounter("studio" .. "." .. "animationEditor" .. "." .. "UserChoseSelectedModelForAnimImport", 1);
            v7("userChoseSelectedModelForAnimImport", {
                guid = if not v30 then nil else string.lower(v30)
            });
        end,
        onExportAnimation = function(_, v32, v33, v34, v35)
            v7("exportAnimation", {
                animationType = v33,
                hasFacs = v32,
                assetId = v34,
                guid = if not v35 then nil else string.lower(v35)
            });
        end,
        onLoadAnimation = function(_, v37, v38, v39, v40, v41, v42)
            v7("loadAnimation", {
                animationType = v41,
                name = v37,
                numKeyframes = v38,
                numPoses = v39,
                numEvents = v40,
                guid = if not v42 then nil else string.lower(v42)
            });
        end,
        onSaveAnimation = function(_, v44, v45, v46, v47, v48, v49)
            v7("saveAnimation", {
                animationType = v48,
                name = v44,
                numKeyframes = v45,
                numPoses = v46,
                numEvents = v47,
                guid = if not v49 then nil else string.lower(v49)
            });
            v4:ReportStats("studio" .. "." .. "animationEditor" .. "." .. "ExportedKeyframes", v45 or 1);
            v4:ReportStats("studio" .. "." .. "animationEditor" .. "." .. "ExportedPoses", v46 or 1);
            v4:ReportStats("studio" .. "." .. "animationEditor" .. "." .. "ExportedEvents", v47 or 1);
        end,
        onCreateNewAnimation = function(_, v51, v52)
            v7("createNewAnimation", {
                name = v51,
                guid = if not v52 then nil else string.lower(v52)
            });
        end,
        onQuantizeSelection = function(_, v54)
            v7("quantizeSelection", {
                didQuantize = v54
            });
        end,
        onTimeUnitChanged = function(_, v56)
            v7("timeUnitChanged", {
                timeUnit = v56
            });
        end,
        onKeyframeSnapChanged = function(_, v58)
            v7("keyframeSnapChanged", {
                keyframeSnap = v58
            });
        end,
        onToolChanged = function(_, v60)
            v7("toolChanged", {
                tool = v60
            });
        end,
        onIkEnabled = function(_, v62)
            v7("ikEnabled", {
                guid = if not v62 then nil else string.lower(v62)
            });
            v4:ReportCounter("studio" .. "." .. "animationEditor" .. "." .. "IKEnabled", 1);
            v7("IKEnabled");
        end,
        onIkDisabled = function(_, v64, v65)
            v7("ikDisabled", {
                timeOpen = v64,
                guid = if not v65 then nil else string.lower(v65)
            });
        end,
        onControlPressed = function(_, v67)
            v7("controlPressed", {
                control = v67
            });
        end,
        onTrackAdded = function(_, v69, v70, v71)
            v7("trackAdded", {
                trackName = v69,
                editorMode = v70,
                guid = if not v71 then nil else string.lower(v71)
            });
        end,
        onTrackDeleted = function(_, v73, v74, v75, v76)
            v7("trackDeleted", {
                trackName = v73,
                hadKeyframes = v74,
                editorMode = v75,
                guid = if not v76 then nil else string.lower(v76)
            });
        end,
        onTrackSelected = function(_, v78, v79, v80, v81)
            v7("trackSelected", {
                trackName = v78,
                source = v79,
                editorMode = v80,
                guid = if not v81 then nil else string.lower(v81)
            });
        end,
        onRenameKeyframe = function(_, v83, v84)
            v7("renameKeyframe", {
                name = v83,
                guid = if not v84 then nil else string.lower(v84)
            });
        end,
        onAddEvent = function(_, v86, v87, v88, v89)
            v7("addEvent", {
                name = v86,
                parameter = v87,
                editorMode = v88,
                guid = if not v89 then nil else string.lower(v89)
            });
            v4:ReportCounter("studio" .. "." .. "animationEditor" .. "." .. "EventAdded", 1);
            v7("EventAdded");
        end,
        onAddKeyframe = function(_, v91, v92, v93)
            v7("addKeyframe", {
                trackName = v91,
                editorMode = v92,
                guid = if not v93 then nil else string.lower(v93)
            });
            v4:ReportCounter("studio" .. "." .. "animationEditor" .. "." .. "KeyframeAdded", 1);
            v7("KeyframeAdded");
        end,
        onDeleteKeyframe = function(_, v95, v96, v97)
            v7("deleteKeyframe", {
                trackName = v95,
                editorMode = v96,
                guid = if not v97 then nil else string.lower(v97)
            });
        end,
        onPromoteAnimation = function(_, v99, v100, v101, v102, v103)
            v7("promoteAnimation", {
                name = v99,
                numKeyframes = v101,
                numTracks = v100,
                numEvents = v102,
                guid = if not v103 then nil else string.lower(v103)
            });
        end,
        onAnimationEditorImportVideoCreate = function(_)
            v7("animationEditorImportVideoCreate", {});
        end,
        onAnimationEditorImportVideoUploadCancel = function(_, v106)
            v7("animationEditorImportVideoUploadCancel", {
                duration = v106
            });
        end,
        onAnimationEditorImportVideoUploadSucceed = function(_, v108)
            v7("animationEditorImportVideoUploadSucceed", {
                duration = v108
            });
        end,
        onAnimationEditorImportVideoError = function(_, v110, v111)
            v7("animationEditorImportVideoError", {
                errorMsg = v110,
                duration = v111
            });
        end,
        onFacialAnimationRecordingEnabled = function(_)
            v7("facialAnimationRecordingEnabled", {});
        end,
        onFacialAnimationRecordingStartRecording = function(_)
            v7("facialAnimationRecordingStartRecording", {});
        end,
        onFacialAnimationRecordingEndRecording = function(_, v115)
            v7("facialAnimationRecordingEndRecording", {
                duration = v115
            });
        end,
        onFacialAnimationRecordingReRecordPressed = function(_)
            v7("facialAnimationRecordingReRecordPressed", {});
        end,
        onEditorModeSwitch = function(_, v118, v119, v120, v121)
            v7("editorModeSwitch", {
                oldMode = v118,
                newMode = v119,
                duration = v120,
                guid = if not v121 then nil else string.lower(v121)
            });
        end,
        onKeyframeReductionApply = function(_, v123, v124, v125, v126, v127, v128)
            v7("keyframeReductionApply", {
                isChannelAnimation = v124,
                tracks = v123,
                before = v125,
                after = v126,
                hasMoved = v127,
                guid = if not v128 then nil else string.lower(v128)
            });
        end,
        onKeyframeReductionCancel = function(_, v130, v131, v132, v133)
            v7("keyframeReductionCancel", {
                isChannelAnimation = v131,
                tracks = v130,
                hasMoved = v132,
                guid = if not v133 then nil else string.lower(v133)
            });
        end,
        onCreateFromVideo = function(_, v135)
            v7("createFromVideo", {
                guid = if not v135 then nil else string.lower(v135)
            });
        end,
        onClipboardOperation = function(_, v137)
            v7("clipboardOperation", {
                operation = v137
            });
        end,
        onMigrateAnimations = function(_, v139, v140, v141, v142)
            v7("migrateAnimations", {
                migrate = v139,
                delete = v140,
                ignore = v141,
                skipped = v142
            });
        end
    };
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("AnimationClipEditor");
local v1 = require(l_script_FirstAncestor_0.Src.Util.deepCopy);
local v2 = require(l_script_FirstAncestor_0.Src.Util.Constants);
local v3 = require(l_script_FirstAncestor_0.Packages.Cryo);
local v4 = require(l_script_FirstAncestor_0.Src.Util.AnimationData);
local v5 = require(l_script_FirstAncestor_0.Src.Thunks.AddTrack);
local v6 = require(l_script_FirstAncestor_0.Src.Thunks.UpdateAnimationData);
return function(v7, v8, v9, v10, v11, v12, v13)
    return function(v14)
        local v15 = v14:getState();
        local l_AnimationData_0 = v15.AnimationData;
        local v17 = v15.Status and v15.Status.EditorMode;
        if l_AnimationData_0 and l_AnimationData_0.Instances[v7] then
            local v18 = v3.Dictionary.join({}, l_AnimationData_0);
            v18.Instances = v3.Dictionary.join({}, v18.Instances);
            v18.Instances[v7] = v3.Dictionary.join({}, v18.Instances[v7]);
            v18.Instances[v7].Tracks = v3.Dictionary.join({}, v18.Instances[v7].Tracks);
            v18.Instances[v7].Tracks[v8[1]] = v1(v18.Instances[v7].Tracks[v8[1]]);
            local l_Tracks_0 = v18.Instances[v7].Tracks;
            local v20 = v4.getTrack(v18, v7, v8);
            if v20 == nil then
                v10 = (v10 or v15.Status and v15.Status.DefaultRotationType) or v2.DEFAULT_ROTATION_TYPE;
                local v21 = not not v15.Status and v15.Status.DefaultEulerAnglesOrder or Enum.RotationOrder.XYZ;
                local l_CFrame_0 = v2.TRACK_TYPES.CFrame;
                if v9 == v2.TRACK_TYPES.Facs then
                    l_CFrame_0 = v2.TRACK_TYPES.Facs;
                end;
                v14:dispatch(v5(v7, v8[1], l_CFrame_0, v10, v21, v13));
                v4.addTrack(l_Tracks_0, v8[1], l_CFrame_0, v4.isChannelAnimation(v18), v10, v21);
                v20 = v4.getTrack(v18, v7, v8);
            end;
            local v23 = not not v20 and v20.Data or nil;
            if v23 and v23[v11] == nil then
                v4.addKeyframe(v20, v11, v12);
                if v11 ~= 0 and v23[0] == nil then
                    v4.addDefaultKeyframe(v20, 0, v9);
                end;
                v14:dispatch(v6(v18));
                if v13 then
                    v13:report("onAddKeyframe", v8[1], v17, if not v18.Metadata then nil else v18.Metadata.Guid);
                end;
            end;
            return ;
        else
            return ;
        end;
    end;
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("AnimationClipEditor");
local v1 = require(l_script_FirstAncestor_0.Packages.Cryo);
local v2 = require(l_script_FirstAncestor_0.Src.Util.Templates);
local v3 = require(l_script_FirstAncestor_0.Src.Util.Constants);
local v4 = require(l_script_FirstAncestor_0.Src.Util.TrackUtils);
local v5 = require(l_script_FirstAncestor_0.Src.Util.AnimationData);
local v6 = require(l_script_FirstAncestor_0.Src.Thunks.SortAndSetTracks);
return function(v7, v8, v9, v10, v11, v12)
    return function(v13)
        local v14 = v13:getState();
        local l_Status_0 = v14.Status;
        if l_Status_0 == nil then
            return ;
        else
            local l_EditorMode_0 = l_Status_0.EditorMode;
            local l_Tracks_0 = l_Status_0.Tracks;
            v10 = v10 or l_Status_0.DefaultRotationType;
            for _, v19 in ipairs(l_Tracks_0) do
                if v19.Name == v8 then
                    return ;
                end;
            end;
            local v20 = v2.trackListEntry(v9 or v3.TRACK_TYPES.CFrame);
            v20.Name = v8;
            v20.Instance = v7;
            v20.EulerAnglesOrder = v11;
            local l_AnimationData_0 = v14.AnimationData;
            if v5.isChannelAnimation(l_AnimationData_0) then
                v4.createTrackListEntryComponents(v20, v7, v10, v11);
            end;
            v13:dispatch(v6((v1.List.join(l_Tracks_0, {
                v20
            }))));
            if v12 then
                v12:report("onTrackAdded", v8, l_EditorMode_0, if not not l_AnimationData_0 and l_AnimationData_0.Metadata then l_AnimationData_0.Metadata.Guid else nil);
            end;
            return ;
        end;
    end;
end;


local l_ChangeHistoryService_0 = game:GetService("ChangeHistoryService");
local l_StudioService_0 = game:GetService("StudioService");
local l_script_FirstAncestor_0 = script:FindFirstAncestor("AnimationClipEditor");
local v3 = require(l_script_FirstAncestor_0.Packages.Cryo);
local v4 = require(l_script_FirstAncestor_0.Src.Thunks.Playback.StepAnimation);
local v5 = require(l_script_FirstAncestor_0.Src.Actions.SetRootInstance);
local v6 = require(l_script_FirstAncestor_0.Src.Actions.SetAnimationData);
local v7 = require(l_script_FirstAncestor_0.Src.Actions.SetSelectedKeyframes);
local v8 = require(l_script_FirstAncestor_0.Src.Thunks.AddTrack);
local v9 = require(l_script_FirstAncestor_0.Src.Thunks.SortAndSetTracks);
local v10 = require(l_script_FirstAncestor_0.Src.Actions.SetActive);
local _ = require(l_script_FirstAncestor_0.Src.Util.RigUtils);
local v12 = require(l_script_FirstAncestor_0.Src.Util.RigValidation);
local v13 = require(l_script_FirstAncestor_0.Src.Util.RigVisualization);
local v14 = require(l_script_FirstAncestor_0.Src.Util.TrackUtils);
return function(v15)
    return function(v16)
        local v17 = v16:getState();
        v16:dispatch(v10(true));
        local l_RootInstance_0 = v17.Status.RootInstance;
        local l_AnimationData_0 = v17.AnimationData;
        local l_Playhead_0 = v17.Status.Playhead;
        local l_VisualizeBones_0 = v17.Status.VisualizeBones;
        if l_ChangeHistoryService_0:GetCanUndo() then
            l_ChangeHistoryService_0:SetEnabled(false);
        end;
        l_StudioService_0:CopyToClipboard("");
        if (l_RootInstance_0 ~= nil and l_RootInstance_0:FindFirstAncestorOfClass("Workspace") ~= nil) and (not l_RootInstance_0 or not v12.rigHasErrors(l_RootInstance_0)) then
            if l_AnimationData_0 then
                v16:dispatch(v9({}));
                for v22, v23 in pairs(l_AnimationData_0.Instances) do
                    for v24, v25 in pairs(v23.Tracks) do
                        v16:dispatch(v8(v22, v24, v25.Type, v14.getRotationType(v25), v14.getEulerAnglesOrder(v25), v15));
                    end;
                end;
            end;
            v13.clearMicrobones();
            if not (not l_RootInstance_0 or l_AnimationData_0) then
                v13.updateMicrobones(l_RootInstance_0, l_VisualizeBones_0);
            end;
            v16:dispatch(v4(l_Playhead_0));
            return ;
        else
            v16:dispatch(v5(v3.None));
            v16:dispatch(v9({}));
            v16:dispatch(v7({}));
            v16:dispatch(v6(nil));
            return ;
        end;
    end;
end;


local v0 = require(script:FindFirstAncestor("AnimationClipEditor").Src.Actions.SetCreatingAnimationFromVideo);
return function(v1)
    return function(v2)
        v2:dispatch(v0(false));
        local v3 = v2:getState();
        if not v3.Status.AnimationFromVideoErroredOut then
            local l_AnimationFromVideoUploadStartTime_0 = v3.Status.AnimationFromVideoUploadStartTime;
            v1:report("onAnimationEditorImportVideoUploadCancel", l_AnimationFromVideoUploadStartTime_0 and os.clock() - l_AnimationFromVideoUploadStartTime_0);
        end;
    end;
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("AnimationClipEditor");
local v1 = require(l_script_FirstAncestor_0.Src.Util.deepCopy);
local v2 = require(l_script_FirstAncestor_0.Packages.Cryo);
local v3 = require(l_script_FirstAncestor_0.Src.Util.AnimationData);
local v4 = require(l_script_FirstAncestor_0.Src.Util.TrackUtils);
local v5 = require(l_script_FirstAncestor_0.Src.Thunks.UpdateAnimationData);
local _ = require(l_script_FirstAncestor_0.Src.Actions.SetAnimationData);
return function(v7, v8, _)
    return function(v10)
        local l_AnimationData_0 = v10:getState().AnimationData;
        if l_AnimationData_0 and l_AnimationData_0.Instances[v7] then
            local v12 = v2.Dictionary.join({}, l_AnimationData_0);
            v12.Instances = v2.Dictionary.join({}, v12.Instances);
            v12.Instances[v7] = v2.Dictionary.join({}, v12.Instances[v7]);
            v12.Instances[v7].Tracks = v2.Dictionary.join({}, v12.Instances[v7].Tracks);
            v12.Instances[v7].Tracks[v8[1]] = v1(v12.Instances[v7].Tracks[v8[1]]);
            local v13 = v3.getTrack(v12, v7, v8);
            if v13 ~= nil then
                v4.traverseTracks(nil, v13, function(v14)
                    v14.Keyframes = {};
                    v14.Data = {};
                end);
                v10:dispatch(v5(v12));
            end;
            return ;
        else
            return ;
        end;
    end;
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("AnimationClipEditor");
local v1 = require(l_script_FirstAncestor_0.Src.Util.deepCopy);
local v2 = require(l_script_FirstAncestor_0.Packages.Cryo);
local _ = require(l_script_FirstAncestor_0.Src.Actions.SetTracks);
local v4 = require(l_script_FirstAncestor_0.Src.Thunks.SortAndSetTracks);
local v5 = require(l_script_FirstAncestor_0.Src.Thunks.UpdateAnimationData);
local v6 = require(l_script_FirstAncestor_0.Src.Util.AnimationData);
local v7 = require(l_script_FirstAncestor_0.Src.Util.Constants);
local _ = require(l_script_FirstAncestor_0.Src.Util.PathUtils);
local _ = require(l_script_FirstAncestor_0.Src.Util.Templates);
local v10 = require(l_script_FirstAncestor_0.Src.Util.TrackUtils);
return function(v11, v12, v13, _)
    return function(v15)
        local v16 = v15:getState();
        local l_AnimationData_0 = v16.AnimationData;
        if l_AnimationData_0 and l_AnimationData_0.Instances[v11] then
            local v18 = v16.Status.DefaultEulerAnglesOrder or Enum.RotationOrder.XYZ;
            local v19 = v1(v16.Status.Tracks);
            local v20 = v10.findTrackEntry(v19, v12);
            local v21 = v2.Dictionary.join(l_AnimationData_0);
            v21.Instances = v2.Dictionary.join(v21.Instances);
            v21.Instances[v11] = v2.Dictionary.join({}, v21.Instances[v11]);
            v21.Instances[v11].Tracks = v2.Dictionary.join({}, v21.Instances[v11].Tracks);
            v21.Instances[v11].Tracks[v12[1]] = v1(v21.Instances[v11].Tracks[v12[1]]);
            local v22 = v6.getTrack(v21, v11, v12);
            if ((v22 ~= nil and v22.Data ~= nil) and v22.Type == v7.TRACK_TYPES.Quaternion) and v13 == v7.TRACK_TYPES.EulerAngles then
                v10.convertTrackToEulerAngles(v22, v18);
                v20.Type = v7.TRACK_TYPES.EulerAngles;
                v20.EulerAnglesOrder = v18;
                v10.createTrackListEntryComponents(v20, v20.Instance, v7.TRACK_TYPES.EulerAngles, v18);
                v15:dispatch(v5(v21));
                v15:dispatch(v4(v19));
            end;
            return ;
        else
            return ;
        end;
    end;
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("AnimationClipEditor");
local v1 = require(l_script_FirstAncestor_0.Packages.Cryo);
local v2 = require(l_script_FirstAncestor_0.Src.Util.deepCopy);
local v3 = require(l_script_FirstAncestor_0.Src.Util.isEmpty);
local v4 = require(l_script_FirstAncestor_0.Src.Thunks.SortAndSetTracks);
local v5 = require(l_script_FirstAncestor_0.Src.Actions.SetSelectedKeyframes);
local v6 = require(l_script_FirstAncestor_0.Src.Actions.SetSelectedTracks);
local v7 = require(l_script_FirstAncestor_0.Src.Thunks.SetSelectedTracks);
local v8 = require(l_script_FirstAncestor_0.Src.Thunks.UpdateAnimationData);
local v9 = require(l_script_FirstAncestor_0.LuaFlags.GetFFlagSelectFromViewport);
return function(v10, v11)
    return function(v12)
        local v13 = v12:getState();
        local l_Status_0 = v13.Status;
        local l_Tracks_0 = l_Status_0.Tracks;
        local l_SelectedTracks_0 = l_Status_0.SelectedTracks;
        local l_RootInstance_0 = l_Status_0.RootInstance;
        local l_EditorMode_0 = l_Status_0.EditorMode;
        if l_RootInstance_0 == nil then
            return ;
        else
            local v19 = nil;
            for v20, v21 in ipairs(l_Tracks_0) do
                if v21.Name == v10 then
                    v19 = v20;
                end;
            end;
            if l_SelectedTracks_0 then
                for v22, v23 in ipairs(l_SelectedTracks_0) do
                    if v10 == v23[1] then
                        table.remove(l_SelectedTracks_0, v22);
                        break;
                    end;
                end;
                if not v9() then
                    v12:dispatch(v6(v1.Dictionary.join(l_SelectedTracks_0)));
                else
                    v12:dispatch(v7(v1.Dictionary.join(l_SelectedTracks_0)));
                end;
            end;
            if v19 then
                v12:dispatch(v4((v1.List.removeIndex(l_Tracks_0, v19))));
                local l_AnimationData_0 = v13.AnimationData;
                if l_AnimationData_0 then
                    for v25, v26 in pairs(l_AnimationData_0.Instances) do
                        for v27, _ in pairs(v26.Tracks) do
                            if v27 == v10 then
                                local v29 = v27.Keyframes and not v3(v27.Keyframes);
                                local v30 = v2(l_AnimationData_0);
                                v30.Instances[v25].Tracks[v27] = nil;
                                v12:dispatch(v8(v30));
                                v12:dispatch(v5({}));
                                v11:report("onTrackDeleted", v10, v29, l_EditorMode_0, if not l_AnimationData_0.Metadata then nil else l_AnimationData_0.Metadata.Guid);
                                return ;
                            end;
                        end;
                    end;
                else
                    return ;
                end;
            end;
            return ;
        end;
    end;
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("AnimationClipEditor");
local v1 = require(l_script_FirstAncestor_0.Src.Util.isEmpty);
local v2 = require(l_script_FirstAncestor_0.Src.Util.deepCopy);
local v3 = require(l_script_FirstAncestor_0.Src.Actions.SetClipboard);
local v4 = require(l_script_FirstAncestor_0.Src.Util.Constants);
return function(v5)
    return function(v6)
        local l_AnimationData_0 = v6:getState().AnimationData;
        local l_SelectedEvents_0 = v6:getState().Status.SelectedEvents;
        if l_AnimationData_0 and l_SelectedEvents_0 then
            local l_Events_0 = l_AnimationData_0.Events;
            if l_Events_0 == nil then
                return ;
            else
                if not v1(l_SelectedEvents_0) then
                    local v10 = {};
                    for v11, _ in pairs(l_SelectedEvents_0) do
                        if not v5 or not next(v5) then
                            v10[v11] = v2(l_Events_0.Data[v11]);
                        else
                            v10[v11] = {};
                            for v13 in v5, nil, nil do
                                v10[v11][v13] = l_Events_0.Data[v11][v13];
                            end;
                        end;
                    end;
                    v6:dispatch(v3(v10, v4.CLIPBOARD_TYPE.Events));
                end;
                return ;
            end;
        else
            return ;
        end;
    end;
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("AnimationClipEditor");
local v1 = require(l_script_FirstAncestor_0.Src.Util.deepCopy);
local v2 = require(l_script_FirstAncestor_0.Src.Util.AnimationData);
local v3 = require(l_script_FirstAncestor_0.Src.Actions.SetSelectedEvents);
local v4 = require(l_script_FirstAncestor_0.Src.Thunks.UpdateAnimationData);
return function(v5)
    return function(v6)
        local l_AnimationData_0 = v6:getState().AnimationData;
        local l_SelectedEvents_0 = v6:getState().Status.SelectedEvents;
        if l_AnimationData_0 then
            local v9 = v1(l_AnimationData_0);
            local l_Events_0 = v9.Events;
            if l_Events_0 == nil then
                return ;
            else
                for v11, _ in pairs(l_SelectedEvents_0) do
                    if not v5 or not next(v5) then
                        v2.deleteEvents(l_Events_0, v11);
                    else
                        for v13 in v5, nil, nil do
                            v2.removeEvent(l_Events_0, v11, v13);
                        end;
                    end;
                end;
                v6:dispatch(v3({}));
                v6:dispatch(v4(v9));
                return ;
            end;
        else
            return ;
        end;
    end;
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("AnimationClipEditor");
local v1 = require(l_script_FirstAncestor_0.Packages.Cryo);
local v2 = require(l_script_FirstAncestor_0.Src.Actions.SetSelectedEvents);
return function(v3)
    return function(v4)
        local l_AnimationData_0 = v4:getState().AnimationData;
        local l_SelectedEvents_0 = v4:getState().Status.SelectedEvents;
        if l_AnimationData_0 and l_SelectedEvents_0 then
            local l_Events_0 = l_AnimationData_0.Events;
            if l_Events_0 == nil then
                return ;
            else
                if not (not l_Events_0.Data or not l_Events_0.Data[v3]) then
                    v4:dispatch(v2(v1.Dictionary.join(l_SelectedEvents_0, {
                        [v3] = v1.None
                    })));
                end;
                return ;
            end;
        else
            return ;
        end;
    end;
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("AnimationClipEditor");
local v1 = require(l_script_FirstAncestor_0.Packages.Cryo);
local v2 = require(l_script_FirstAncestor_0.Src.Util.deepCopy);
local v3 = require(l_script_FirstAncestor_0.Src.Util.AnimationData);
local v4 = require(l_script_FirstAncestor_0.Src.Actions.SetSelectedEvents);
local v5 = require(l_script_FirstAncestor_0.Src.Thunks.UpdateAnimationData);
local v6 = require(l_script_FirstAncestor_0.Src.Util.Constants);
local v7 = require(l_script_FirstAncestor_0.Src.Util.KeyframeUtils);
return function(v8)
    return function(v9)
        if v8 then
            local v10 = v9:getState();
            local v11 = v8.animationData or v9:getState().AnimationData;
            local v12 = v8.selectedEvents or v9:getState().Status.SelectedEvents;
            local l_FrameRate_0 = v10.Status.FrameRate;
            local l_SnapMode_0 = v10.Status.SnapMode;
            if v11 and v11.Events then
                local v15 = v1.Dictionary.join({}, v11);
                v15.Events = v2(v15.Events);
                local l_Events_0 = v15.Events;
                local v17 = v1.Dictionary.keys(v12);
                table.sort(v17);
                local v18 = v8.newTick - v8.pivotTick;
                local l_eventFilters_0 = v8.eventFilters;
                local v20 = v2(v12);
                local v21, v22 = v3.getEventBounds(v15, v12);
                local function v27(v23)
                    local v24 = v23 + v18;
                    if l_SnapMode_0 ~= v6.SNAP_MODES.None then
                        v24 = v7.getNearestFrame(v24, l_FrameRate_0);
                    end;
                    v24 = math.clamp(v24, v23 - v21, v6.MAX_ANIMATION_LENGTH - (v22 - v23));
                    if v23 ~= v24 then
                        if l_eventFilters_0 and next(l_eventFilters_0) then
                            for v25, v26 in l_Events_0.Data[v23], nil, nil do
                                if l_eventFilters_0[v25] then
                                    v3.removeEvent(l_Events_0, v23, v25);
                                    v3.addEvent(l_Events_0, v24, v25, v26);
                                end;
                            end;
                        else
                            v3.moveEvents(l_Events_0, v23, v24);
                        end;
                        v20[v23] = nil;
                        v20[v24] = true;
                    end;
                end;
                if v18 < 0 then
                    for _, v29 in ipairs(v17) do
                        v27(v29);
                    end;
                else
                    for v30 = #v17, 1, -1 do
                        v27(v17[v30]);
                    end;
                end;
                v9:dispatch(v4(v20));
                v9:dispatch(v5(v15));
                return ;
            else
                return ;
            end;
        else
            return ;
        end;
    end;
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("AnimationClipEditor");
local v1 = require(l_script_FirstAncestor_0.Packages.Cryo);
local v2 = require(l_script_FirstAncestor_0.Src.Util.isEmpty);
local v3 = require(l_script_FirstAncestor_0.Src.Util.deepCopy);
local v4 = require(l_script_FirstAncestor_0.Src.Util.AnimationData);
local v5 = require(l_script_FirstAncestor_0.Src.Thunks.UpdateAnimationData);
return function(v6)
    return function(v7)
        local l_AnimationData_0 = v7:getState().AnimationData;
        local l_Clipboard_0 = v7:getState().Status.Clipboard;
        if l_AnimationData_0 and l_Clipboard_0 then
            local v10 = v3(l_AnimationData_0);
            local l_Events_0 = v10.Events;
            if l_Events_0 == nil then
                return ;
            else
                local v12 = v1.Dictionary.keys(l_Clipboard_0);
                table.sort(v12);
                local v13 = v12[1];
                if not v2(l_Clipboard_0) then
                    for v14, v15 in pairs(l_Clipboard_0) do
                        local v16 = v6 + (v14 - v13);
                        v4.deleteEvents(l_Events_0, v16);
                        for v17, v18 in pairs(v15) do
                            v4.addEvent(l_Events_0, v16, v17, v18);
                        end;
                    end;
                    v7:dispatch(v5(v10));
                end;
                return ;
            end;
        else
            return ;
        end;
    end;
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("AnimationClipEditor");
local v1 = require(l_script_FirstAncestor_0.Packages.Cryo);
local v2 = require(l_script_FirstAncestor_0.Src.Actions.SetSelectedEvents);
return function(v3, v4)
    return function(v5)
        local l_AnimationData_0 = v5:getState().AnimationData;
        local l_SelectedEvents_0 = v5:getState().Status.SelectedEvents;
        if l_AnimationData_0 and l_SelectedEvents_0 then
            local l_Events_0 = l_AnimationData_0.Events;
            if l_Events_0 == nil then
                return ;
            else
                if not (not l_Events_0.Data or not l_Events_0.Data[v3]) then
                    if not v4 then
                        v5:dispatch(v2({
                            [v3] = true
                        }));
                    else
                        v5:dispatch(v2(v1.Dictionary.join(l_SelectedEvents_0, {
                            [v3] = true
                        })));
                        return ;
                    end;
                end;
                return ;
            end;
        else
            return ;
        end;
    end;
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("AnimationClipEditor");
local v1 = require(l_script_FirstAncestor_0.Src.Util.deepCopy);
local v2 = require(l_script_FirstAncestor_0.Src.Thunks.UpdateAnimationData);
return function(v3, v4)
    return function(v5)
        local v6 = v5:getState();
        local l_AnimationData_0 = v6.AnimationData;
        local l_EditorMode_0 = v6.Status.EditorMode;
        if l_AnimationData_0 then
            local v9 = v1(l_AnimationData_0);
            v9.Events = v3;
            v5:dispatch(v2(v9));
            local l_Data_0 = l_AnimationData_0.Events.Data;
            for v11, v12 in pairs(v3.Data) do
                for v13, v14 in pairs(v12) do
                    if not (l_Data_0[v11] ~= nil) or l_Data_0[v11][v13] == nil then
                        v4:report("onAddEvent", v13, v14, l_EditorMode_0, if not v9.Metadata then nil else v9.Metadata.Guid);
                    end;
                end;
            end;
            return ;
        else
            return ;
        end;
    end;
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("AnimationClipEditor");
local v1 = require(l_script_FirstAncestor_0.Src.Util.Constants);
local _ = require(l_script_FirstAncestor_0.Src.Util.RigUtils);
local v3 = require(l_script_FirstAncestor_0.Src.Util.RigSerialization);
local v4 = require(l_script_FirstAncestor_0.Src.Thunks.Exporting.ImportLoadedFBXAnimation);
local v5 = require(l_script_FirstAncestor_0.Src.Thunks.LoadAnimationData);
local v6 = require(l_script_FirstAncestor_0.Src.Actions.SetIsDirty);
local v7 = require(l_script_FirstAncestor_0.Src.Actions.SetIsLegacyAnimSaves);
local v8 = require(l_script_FirstAncestor_0.Src.Actions.SetAnimationImportProgress);
local v9 = require(l_script_FirstAncestor_0.Src.Actions.SetAnimationImportStatus);
local v10 = require(l_script_FirstAncestor_0.Src.Actions.SetCreatingAnimationFromVideo);
local v11 = require(l_script_FirstAncestor_0.Src.Actions.SetAnimationFromVideoUploadStartTime);
local v12 = require(l_script_FirstAncestor_0.Src.Actions.SetAnimationFromVideoErroredOut);
local function v23(v13, v14, v15, _, v17)
    local l_RootInstance_0 = v13:getState().Status.RootInstance;
    if l_RootInstance_0 then
        local function v19()
            v13:dispatch(v4(v15, true, v17));
        end;
        local l_status_0, l_result_0 = pcall(function()
            return game:GetService("AvatarImportService"):ImportFBXAnimationFromFilePathUserMayChooseModel(v14, l_RootInstance_0, v19);
        end);
        if not l_status_0 then
            warn(l_result_0);
            return ;
        else
            local v22 = v3.fromKeyframeSequence(l_result_0);
            v22.Metadata.Name = v1.DEFAULT_IMPORTED_NAME;
            v13:dispatch(v5(v22, v17));
            v13:dispatch(v6(false));
            v13:dispatch(v7(false));
            if l_result_0 then
                l_result_0:Destroy();
            end;
            v17:report("onCreateFromVideo", if not v22.Metadata then nil else v22.Metadata.Guid);
            return ;
        end;
    else
        return ;
    end;
end;
return function(v24, v25, v26)
    return function(v27)
        if not v27:getState().Status.CreatingAnimationFromVideo then
            v27:dispatch(v12(false));
            v27:dispatch(v9(v1.ANIMATION_FROM_VIDEO_STATUS.Initializing));
            v27:dispatch(v8(0));
            v27:dispatch(v10(true));
            local v28 = nil;
            local function v31(v29, v30)
                if not (not (v30 == v1.ANIMATION_FROM_VIDEO_STATUS.UploadingData) or v28) then
                    v28 = os.clock();
                    v27:dispatch(v11(v28));
                end;
                if v27:getState().Status.CreatingAnimationFromVideo then
                    v27:dispatch(v9(v30));
                    v27:dispatch(v8(v29));
                    return true;
                else
                    return false;
                end;
            end;
            local l_AnimationFromVideoCreatorStudioService_0 = game:GetService("AnimationFromVideoCreatorStudioService");
            local l_status_1, l_result_1 = pcall(function()
                return l_AnimationFromVideoCreatorStudioService_0:CreateAnimationByUploadingVideo(v31);
            end);
            local v35 = v28 and os.clock() - v28;
            if l_status_1 then
                local l_l_result_1_0 = l_result_1;
                v26:report("onAnimationEditorImportVideoUploadSucceed", v35);
                if l_l_result_1_0 ~= nil and v27:getState().Status.CreatingAnimationFromVideo then
                    v27:dispatch(v10(false));
                    v23(v27, l_l_result_1_0, v24, v25, v26);
                    return ;
                else
                    return ;
                end;
            else
                v27:dispatch(v12(true));
                if v27:getState().Status.AnimationImportStatus == v1.ANIMATION_FROM_VIDEO_STATUS.Initializing then
                    v27:dispatch(v10(false));
                end;
                if v27:getState().Status.AnimationImportStatus == v1.ANIMATION_FROM_VIDEO_STATUS.UploadingData then
                    v27:dispatch(v9(v1.ANIMATION_FROM_VIDEO_STATUS.ErrorUploadingData));
                    v27:dispatch(v8(0));
                    l_result_1 = l_result_1 or "Error while uploading video";
                end;
                v26:report("onAnimationEditorImportVideoError", l_result_1, v35);
                warn(l_result_1);
                return ;
            end;
        else
            return ;
        end;
    end;
end;