{"id":13589672,"url":"https://github.com/jdcook/fresh_cooked_tweens","last_synced_at":"2026-03-13T02:38:55.631Z","repository":{"id":45725343,"uuid":"508077027","full_name":"jdcook/fresh_cooked_tweens","owner":"jdcook","description":"Tweens for Unreal Engine, with C++ API and Blueprint support","archived":false,"fork":false,"pushed_at":"2026-02-21T16:47:21.000Z","size":19149,"stargazers_count":352,"open_issues_count":0,"forks_count":39,"subscribers_count":5,"default_branch":"main","last_synced_at":"2026-02-21T23:07:06.743Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jdcook.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-06-27T22:15:40.000Z","updated_at":"2026-02-21T16:47:24.000Z","dependencies_parsed_at":"2025-04-08T09:41:39.223Z","dependency_job_id":"b134929f-cc07-46c1-a4e6-d0d7f98e1fa8","html_url":"https://github.com/jdcook/fresh_cooked_tweens","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jdcook/fresh_cooked_tweens","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jdcook%2Ffresh_cooked_tweens","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jdcook%2Ffresh_cooked_tweens/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jdcook%2Ffresh_cooked_tweens/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jdcook%2Ffresh_cooked_tweens/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jdcook","download_url":"https://codeload.github.com/jdcook/fresh_cooked_tweens/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jdcook%2Ffresh_cooked_tweens/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30456114,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-13T02:22:12.178Z","status":"ssl_error","status_checked_at":"2026-03-13T02:06:49.475Z","response_time":60,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-01T16:00:32.811Z","updated_at":"2026-03-13T02:38:55.618Z","avatar_url":"https://github.com/jdcook.png","language":"C++","funding_links":[],"categories":["Tweens / Object Movements","Game Development"],"sub_categories":["Unreal Engine: Resources"],"readme":"﻿## Purchase the Pro version on Fab\nhttps://www.fab.com/listings/8d37a3cd-b7d1-4796-9d9e-b160a52192f8\n\nExclusive to the pro version:\n- Easily add **lambda safety** by calling `Tween-\u003eBindTo(Object)`\n\t- No need to add manual safety checks, or to clean up on BeginDestroy anymore.\n- **TweenQueues** allow playing multiple tweens in a sequence.\n- **Spline** tweens\n\t- Tween actors along splines, or get spline values every frame with any easing equation.\n- Tween new types: **Vector4**, **Transform**, **Color**\n- **38 Shortcut functions** such as:\n    - *TweenActorLocation*\n    - *TweenMaterialScalar*\n    - *TweenWidgetOpacity*\n    - *TweenWidgetCanvasAnchor*\n    - And many others, with more to come.\n- Builtin C++ support for **dynamic Start and End values**, by passing lambdas.\n\t- No need to hold a reference to the tween instance.\n- Continued development and support.\n\n# Fresh Cooked Tweens\n![](FCTween/Resources/Icon128.png) \n\nA tweening library for Unreal Engine, by [Jared Cook](https://twitter.com/FreshCookedDev)\n\nUE4 and UE5 supported\n\n\n### C++:\n\n```c++\nFCTween::Play(\n    GetActorLocation(),\n    GetActorLocation() + FVector(0, 0, 50),\n    [\u0026](FVector t)\n    {\n        SetActorLocation(t);\n    },\n    2.0f,\n    EFCEase::OutCubic);\n```\n\n### Blueprints:\n![](./images/basic_usage_bp.png)\n\n## Table of Contents\n\u003e 1. [Plugin Setup](#plugin-setup)\n\u003e 1. [Blueprints](#blueprintsection)\n\u003e 1. [C++](#cppsection)\n\u003e 1. [Easing Functions](#easing-functions)\n\u003e 1. [Performance](#performance)\n\u003e 1. [Platforms](#platforms)\n\u003e 1. [References](#references)\n\u003e 1. [License](#license)\n\n## Why Tweens?\n\nTweening libraries provide convenient curve functions to ease a value be***tween*** a start and end, like a position, scale, color, anything you want to smoothly change. They are useful in small projects and large projects. Many polished UIs have some kind of tween operating.\n\nIt can be a large efficiency gain to let a programmer or designer quickly set up a tween with easily tunable values, instead of taking up the art department's precious time tweaking curves manually.\n\nIn big projects, they are great for those little polish items. Some small projects can find broader use for them:\n\n![](./images/penguin_demo.gif)\n\n```c++\nWaddleRotator = GetMesh()-\u003eGetRelativeRotation();\nWaddleTween = FCTween::Play(\n    -WADDLE_ANGLE, WADDLE_ANGLE,\n    [\u0026](float t)\n    {\n        WaddleRotator.Pitch = t;\n        GetMesh()-\u003eSetRelativeRotation(WaddleRotator);\n    },\n    WADDLE_SECS, EFCEase::InOutSine)\n                  -\u003eSetYoyo(true)\n                  -\u003eSetLoops(-1);\n```\n\n## Functionality already in Unreal Engine\n\nIt's good to know what is already available to you in-engine before installing other tools.\n- [Timelines](https://docs.unrealengine.com/4.27/en-US/ProgrammingAndScripting/Blueprints/UserGuide/Timelines/)\n  - Useful, but not as easy to tweak as tweens, or to set up in C++\n- Ease in/out/inout for sin, expo, circular, smoothstep - `FMath::InterpEaseIn()` lets you define your own exponent, which lets you do quad, cubic, quart, or more.\n- [Critically damped springs](https://www.alexisbacot.com/blog/the-art-of-damping)\n  - useful for a lot of things, especially cameras. Check out these functions if you haven't heard of that yet:\n\n```c++\nFMath::SpringDamper()\nFMath::CriticallyDampedSmoothing()\nUKismetMathLibrary::FloatSpringInterp()\nUKismetMathLibrary::QuaternionSpringInterp()\n```\n\n# Plugin Setup\n- If using Unreal 4.27, copy the contents of FCTween_4_27.uplugin into FCTween/FCTween.uplugin.\n- Copy the FCTween directory into your project's Plugins folder\n    - If there is no Plugins folder, create one in the same directory as your .uproject file\n\n![](./images/plugindir.png)\n\n- If you want to use the C++ API, add FCTween to the module names in your main module's Build.cs:\n```c#\nPublicDependencyModuleNames.AddRange(new[] {\"FCTween\"});\n```\n\n- Open the project\n- Click \"Yes\" when it asks if you would like to rebuild FCTween\n- Go to Edit/Plugins, search for FCTween and make sure it's enabled\n- Restart the project if needed\n- Verify everything is working by going to a blueprint, right clicking and looking for the \"Tween\" category\n- Package the project if you want to double-check it's installed correctly\n    - If you package the project and launch the .exe, and it says **Plugin 'FCTween' Failed to load because module 'FCTween' could not be found**, this probably means that you have a blueprint-only project. This is a current bug with UE, and the workaround is to turn it into a C++ project: make a dummy C++ file, and restart the project to recompile it.\n        - In UE5: Tools/New C++ Class\n        - In UE4: File/New C++ Class\n    - It could also mean you just need to force it to recompile by deleting the project and plugin's Intermediate/Build folders and restart.\n\n\u003ca name=\"blueprintsection\"\u003e\u003c/a\u003e\n# Blueprints\n\n## Basic Usage\nAdd a BP task from the \"Tween\" category.\n\n![](./images/bp_menu.png)\n\nGive it a start and end value, and hook up the Apply Easing pin to your update logic. The Value pin gives you the current value each frame. Here is an example of how to move an actor up 50 units:\n\n![](./images/basic_usage_bp.png)\n\nWhich looks like this:\n\n![](./images/basic_usage_demo.gif)\n\nHere is one that does an infinite bobbing animation:\n\n![](./images/bob_bp.png)\n\n![](./images/bob_demo.gif)\n\nIf you need to do something with the created tween later on, such as stopping it after an interaction, you can use the Async Task pin to operate on the tween.\n\n![](./images/pause_bp.png)\n\n## Custom Curve\n\nUse one of the versions under \"Tweens/Custom Curve\" to provide a UE curve as the easing function. These work best with a curve that goes from t=0 to t=1, and then adjust the duration in the tween, for design flexibility.\n\n![](./images/customcurve1.png)\n\n![](./images/customcurve2.png)\n\n## Ease\n\nEase a 0-1 float with the given easing function. This is similar to UE's default Ease node, but it has all the FCTween functions available.\n\n![](./images/ease_bp.png)\n\n## Ease with Params\n\nSame as ease, but you can override the baked in parameters for Elastic, Bounce, Back, and Smoothstep. 0 means no override provided. Default values are listed in the comments, if you hover over the param.\n\n![](./images/ease_params_bp.png)\n\n\n\u003ca name=\"cppsection\"\u003e\u003c/a\u003e\n# C++\n\n## Module Setup\n\nIf you would like to set up FCTween as a code module, instead of a plugin (for easily making code changes to FCTween), expand the section below:\n\n\u003cdetails\u003e\n\u003csummary\u003eExpand\u003c/summary\u003e\n\n- After downloading the code, go into FCTween/Source/, and copy the folder inside there into your Source folder.\n\n![](./images/srcdir.png)\n\n- Make sure you just grabbed the deepest FCTween folder, because you don't need the plugin files when dealing with a module. The FCTween folder you copied should look like this:\n\n![](./images/srcdir2.png)\n\n- Add FCTween to the module names in your main module's Build.cs:\n```c#\nPublicDependencyModuleNames.AddRange(new[] {\"FCTween\"});\n```\n\n- Add FCTween to your Modules list in your .uproject file\n```json\n\"Modules\": [\n    {\n        \"Name\": \"MyProject\",\n        \"Type\": \"Runtime\",\n        \"LoadingPhase\": \"Default\"\n    },\n    {\n        \"Name\": \"FCTween\",\n        \"Type\": \"Runtime\",\n        \"LoadingPhase\": \"Default\"\n    }\n],\n```\n\n- Close your IDE, right click on your project's .uproject file, and click \"Generate Visual Studio project files\" to add it to the solution\n\n![](./images/generatefiles.png)\n\n\u003c/details\u003e\n\n## Basic Usage\n\n- You can tween Floats, Vectors, Vector2Ds, and Quaternions\n- Pass a lambda expression to FCTween::Play() for the update functionality.\n\nBasic example:\n```c++\nFCTween::Play(0, 1, [\u0026](float t) { Foo = t; }, .5f);\n```\n\nWith options:\n```c++\nFCTween::Play(0, 1, [\u0026](float t) { Foo = t; }, .5f, EFCEase::OutElastic)\n    -\u003eSetLoops(2)\n    -\u003eSetYoyo(true)\n    -\u003eSetOnLoop([\u0026]() { /* on loop functionality */ });\n```\n\n## Using a custom curve\n\nFCTween won't take in a UCurve (outside of Blueprints, which has helpers that do this same thing), but it's just two extra lines to do the lerp yourself:\n```c++\nUPROPERTY(EditAnywhere)\nUCurveFloat* CustomCurve;\n\nFVector Start = FVector::ZeroVector;\nFVector End = FVector(0, 0, 150);\n\nFCTween::Play(\n    0, 1,\n    [\u0026](float t)\n    {\n        float EasedFloat = CustomCurve-\u003eGetFloatValue(t);\n        FVector EasedVector = FMath::Lerp(Start, End, EasedFloat);\n        SetActorLocation(OriginalPos + EasedVector);\n    },\n    10.0f, EFCEase::Linear);\n```\n\n## Setting start/end values during execution\nUse the specific derived class to set `StartValue` or `EndValue` during execution.\n\n```c++\nFCTweenInstanceVector* Tween = nullptr;\n\nvirtual void BeginPlay() override\n{\n    Tween = FCTween::Play(\n        Target1-\u003eGetActorLocation(), Target2-\u003eGetActorLocation(), [\u0026](FVector t) { SetActorLocation(t); }, 10.0f);\n    // the set functions return the base tween class, be aware you'll have to static_cast it \n    // if you include it in the same line\n    Tween-\u003eSetLoops(-1);\n}\nvirtual void Tick(float DeltaSeconds) override\n{\n    Tween-\u003eStartValue = Target1-\u003eGetActorLocation();\n    Tween-\u003eEndValue = Target2-\u003eGetActorLocation();\n}\n```\n\n## Safety / avoiding errors\n\nIf your tween's update is calling code on an actor, and that actor gets destroyed, but the tween system is still running the tween, your update lambda will throw an error.\n\nTo avoid this, you could:\n\n- **Manually keep track of the pointer and destroy it when you need to**\n  - You will need to do this with some tweens anyway, if your game's logic needs to interrupt it, or if it's infinitely looping. Examples for that in the next section.\n\n  \n- **Call `FCTween::ClearActiveTweens()`**\n  - This is useful for changing levels, if you know you want all tweens to stop executing.\n\n\n- **Make the lamda itself safe**\n  - This is useful for a non-looping tween that you just want to fire and forget, and there are some edge cases where the object is destroyed before it's finished - and you'd rather it just did its last few updates and cleaned itself up.\n```c++\nFCTween::Play(\n    GetActorLocation(), GetActorLocation() + FVector(0, 0, 50),\n    [\u0026](FVector t)\n    {\n        if (IsValid(this))\n        {\n            SetActorLocation(t);\n        }\n    },\n    2.0f);\n```\n\n## Tween Pointers\n\n```c++\n#pragma once\n\n#include \"FCTween.h\"\n#include \"FCTweenInstance.h\"\n\n#include \"TweenExample.generated.h\"\n\nUCLASS()\nclass ATweenExample : public AActor\n{\n\tGENERATED_BODY()\n\t\npublic:\n\tUPROPERTY()\n\tint Foo = 0;\n\n\t// raw pointer\n\tFCTweenInstance* Tween = nullptr;\n\n\tvirtual void BeginPlay() override\n\t{\n\t\tSuper::BeginPlay();\n\n\t\t// tween a float from 0 to 1, over .5 seconds, infinitely looping\n\t\tTween = FCTween::Play(0, 1, [\u0026](float t) { Foo = t; }, .5f)\n\t\t\t-\u003eSetLoops(-1);\n\t}\n\n\tvirtual void BeginDestroy() override\n\t{\n\t\tif (Tween != nullptr)\n\t\t{\n\t\t\t// tells FCTween to recycle this tween\n\t\t\tTween-\u003eDestroy();\n\t\t\tTween = nullptr;\n\t\t}\n\n\t\tSuper::BeginDestroy();\n\t}\n};\n```\n- If you keep a reference to an FCTweenInstance, do not mark it as a UPROPERTY(), since it's not a UObject.\n  - When using the recompile button (live coding), be aware that making changes to a header with a non-uproperty field can mess up your memory and cause an editor crash sometimes (usually in BeginDestroy), even if you're managing it properly in code. Close the editor and restart from your IDE when you want to be safe. Or make sure to save and commit your current changes to source control first.\n- Tweens will get recycled when they are finished. If you keep a pointer to it after it's been completed, the tween will just be idle or playing a different set of options/callbacks from who knows where, so you will end up with confusing bugs if you try to operate on it. If you don't want them to get recycled:\n  - set NumLoops to -1 (infinite) if you want it to infinitely replay, and you can pause/unpause it\n  - OR if you need to be able to restart a tween later on, after it is finished, call `Tween-\u003eSetAutoDestroy(false)` to make sure it doesn't get auto-recycled. This is how the BP tasks make sure their tweens are always valid.\n  - If you used one of the above cases, make sure to call Destroy on the tween when you are done with it, so that it gets recycled. Otherwise that memory will never get reclaimed.\n\n\n## Manual Memory Management\n\nIf you have a case that the recycling system doesn't work for, or need to do something custom, you can manage the memory and the update manually.\n  - The `new` operator is overridden in UE ([ModuleBoilerplate.h](https://github.com/EpicGames/UnrealEngine/blob/release/Engine/Source/Runtime/Core/Public/Modules/Boilerplate/ModuleBoilerplate.h)) to use FMemory calls (which uses the mimalloc library on Windows), so it's safe to use new/delete in this way in the UE ecosystem.\n```c++\n#pragma once\n\n#include \"FCTween.h\"\n#include \"FCTweenInstance.h\"\n\n#include \"TweenExample.generated.h\"\n\nUCLASS()\nclass ATweenExample : public AActor\n{\n\tGENERATED_BODY()\n\npublic:\n\tUPROPERTY()\n\tint Foo = 0;\n\n\tFCTweenInstanceVector* ManualTween = nullptr;\n\n\tvirtual void BeginPlay() override\n\t{\n\t\tSuper::BeginPlay();\n\n\t\tManualTween = new FCTweenInstanceVector();\n\t\tManualTween-\u003eInitialize( \n\t\t\tFVector::ZeroVector, FVector::OneVector, [\u0026](FVector t) { SetActorLocation(t); }, .5f, EFCEase::OutQuad);\n\t\tManualTween-\u003eSetYoyo(true)\n\t\t    -\u003eSetLoops(-1);\n\t}\n\n\tvirtual void BeginDestroy() override\n\t{\n\t\tif (ManualTween != nullptr)\n\t\t{\n\t\t\tdelete ManualTween;\n\t\t\tManualTween = nullptr;\n\t\t}\n\n\t\tSuper::BeginDestroy();\n\t}\n\n\tvirtual void Tick(float DeltaSeconds) override\n\t{\n\t\tSuper::Tick(DeltaSeconds);\n\t\t\n\t\tManualTween-\u003eUpdate(DeltaSeconds, false);\n\t}\n};\n```\n\n# Easing Functions\nUseful quick reference: https://easings.net/\n\n| Available  | Functions  |              |     |\n|------------|------------|--------------|-----|\n| Linear     | InCubic    | InExpo       | InBounce    |\n| Smoothstep | OutCubic   | OutExpo      | OutBounce   |\n| Stepped    | InOutCubic | InOutExpo    | InOutBounce |\n| InSine     | InQuart    | InCirc       | InBack      |\n| OutSine    | OutQuart   | OutCirc      | OutBack     |\n| InOutSine  | InOutQuart | InOutCirc    | InOutBack   |\n| InQuad     | InQuint    | InElastic    |             |\n| OutQuad    | OutQuint   | OutElastic   |             |\n| InOutQuad  | InOutQuint | InOutElastic |             |\n\n## In/Out explanation\nMost functions have an In, Out, and InOut version. This indicates which end of the function the easing takes place.\n\n\"In\" means the easing happens at the start:\n\n![](./images/in_cubic_demo.gif)\n\n\"Out\" means the easing happens at the end:\n\n![](./images/cubic_demo.gif)\n\n\"InOut\" means the easing happens at start and end:\n\n![](./images/inout_cubic_demo.gif)\n\n## Examples\n\nLinear\n- It's just a lerp\n\n![](./images/linear_demo.gif)\n\nSine\n- Quad is usually preferred, since this one uses a Sine operation and is more expensive. But it's more gradual than Quad is, so it can be useful in places where you need the smoothest ease possible.\n\n![](./images/sine_demo.gif)\n\nQuadratic\n- The bread and butter - cheap formula (t * t) and looks good\n\n![](./images/quad_demo.gif)\n\nCubic\n- A more drastic Quadratic (t * t * t)\n\n![](./images/cubic_demo.gif)\n\nQuartic\n- Even more drastic (t * t * t * t)\n\n![](./images/quartic_demo.gif)\n\nQuintic\n- Veeeery drastic (t * t * t * t * t)\n\n![](./images/quintic_demo.gif)\n\nExponential\n- Like Quintic but even sharper\n\n![](./images/exponential_demo.gif)\n\nCircular\n- The graph is a quarter circle. Makes it feel like the velocity changed suddenly. The start is faster than Quint but the end is slower than Quad. Use InCirc to be slow and then fast, instead\n\n![](./images/circular_demo.gif)\n\nSmoothstep\n- Pretty similar to InOutQuad\n\n![](./images/smoothstep_demo.gif)\n\nStepped\n- It's kind of like the opposite of easing, but here it is anyway\n- Change EaseParam1 to set how many steps to use. It's set to 10 by default\n\n![](./images/stepped_demo.gif)\n\nElastic\n- Cartoony \"boing\" effect. May take parameter tweaking to get it just how you want it in your game. Use EaseParam1 and EaseParam2 to tweak the amplitude and period. Looks good with scale, or menus transitioning on screen.\n- EaseParam1 (Amplitude) is set to 1.0 by default. Raise it to make it wobble farther, lower it to make it smaller.\n- EaseParam2 (Period) is set to 0.2 by default. Smaller is spazzier (more wave cycles in the same amount of time). Bigger means less cycles.\n\n![](./images/elastic_scale_demo.gif)\n\n![](./images/elastic_demo_2.gif)\n\nBounce\n- Bounces back from the target a couple of times\n\n![](./images/bounce_demo.gif)\n\nInBack\n- Anticipation; pull back a little before going forward\n- EaseParam1 (Overshoot) is set to 1.70158 by default. If you want to know why, here you go: https://github.com/Michaelangel007/easing#the-magic-of-170158\n\n![](./images/back_demo.gif)\n\nOutBack\n- It overshoots the target and then pulls back to meet it. You can tweak the overshoot amount with EaseParam1.\n\n![](./images/outback_demo.gif)\n\n\n# Performance\n\n- FCTween uses a LinkedList to keep track of tweens, for fast adding/removal\n- Recycles old tweens to avoid unnecessary memory allocations\n- Allows configuring how much memory is preallocated during game load\n    - also comes with console warnings when you stop PIE to let you know when you could increase your initial capacity for performance\n- Small memory footprint, using basic C++ classes outside of the UObject ecosystem\n\n# Supported Platforms\n\nWindows, Linux, and Android.\n\n# References\n- http://robertpenner.com/easing/\n  - The original easing functions.\n- https://github.com/Michaelangel007/easing\n  - Handier versions of those functions.\n- https://github.com/photonstorm/phaser/tree/master/src/math/easing\n  - The specific version of the Stepped and Elastic functions comes from Phaser.\n- https://easings.net/\n  - Useful visual reference\n\n# License\n\nMIT\n\nThe easing functions themselves are derivative of other people's work, and their licenses have been included in the ThirdParty directories.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjdcook%2Ffresh_cooked_tweens","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjdcook%2Ffresh_cooked_tweens","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjdcook%2Ffresh_cooked_tweens/lists"}