diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 772840341402c75c9455f01bca6b449960dc53df..7c23c39243400bc7ac669be1f6464e59e0688d6e 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -6909,7 +6909,7 @@
       <key>Type</key>
       <string>F32</string>
       <key>Value</key>
-      <real>48.0</real>
+      <real>65.0</real>
     </map>
     <key>MaxHeapSize</key>
     <map>
diff --git a/indra/newview/app_settings/settings_alchemy.xml b/indra/newview/app_settings/settings_alchemy.xml
index a6f9585b62969ff55b5e3ac8eee661dc0db56b7e..54ccb1e74f3e20e2bb0b1ffee84768b0a29cd7ce 100644
--- a/indra/newview/app_settings/settings_alchemy.xml
+++ b/indra/newview/app_settings/settings_alchemy.xml
@@ -653,6 +653,17 @@
       <key>Value</key>
       <integer>1</integer>
     </map>
+    <key>AlchemyNimble</key>
+    <map>
+      <key>Comment</key>
+      <string>If true, disables prejump animation flags</string>
+      <key>Persist</key>
+      <integer>1</integer>
+      <key>Type</key>
+      <string>Boolean</string>
+      <key>Value</key>
+      <integer>0</integer>
+    </map>
     <key>AlchemyNotifyIncomingMessage</key>
     <map>
       <key>Comment</key>
diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp
index 1233458b84acf0452036574c05989b5af46efbea..3916a4652e35883d408d757d507ec32130478327 100644
--- a/indra/newview/llagent.cpp
+++ b/indra/newview/llagent.cpp
@@ -444,6 +444,7 @@ LLAgent::LLAgent() :
 	mFrameAgent(),
 
 	mIsDoNotDisturb(false),
+	mIgnorePrejump(FALSE),
 
 	mControlFlags(0x00000000),
 	mbFlagsDirty(FALSE),
@@ -525,6 +526,9 @@ void LLAgent::init()
 	mLastKnownRequestMaturity = mLastKnownResponseMaturity;
 	mIsDoSendMaturityPreferenceToServer = true;
 
+	mIgnorePrejump = gSavedSettings.getBOOL("AlchemyNimble");
+	gSavedSettings.getControl("AlchemyNimble")->getSignal()->connect([this](LLControlVariable* control, const LLSD& new_val, const LLSD&) { mIgnorePrejump = new_val.asBoolean(); });
+
 	auto controlp = gSavedSettings.getControl("AlchemyMotionResetsCamera");
 	controlp->getSignal()->connect([&](LLControlVariable* control, const LLSD& new_val, const LLSD&) { mMovementResetCamera = new_val.asBoolean(); });
 	mMovementResetCamera = controlp->getValue().asBoolean();
@@ -1630,7 +1634,14 @@ LLQuaternion LLAgent::getQuat() const
 //-----------------------------------------------------------------------------
 U32 LLAgent::getControlFlags()
 {
-	return mControlFlags;
+	if (LLAgent::mIgnorePrejump)
+	{
+		return mControlFlags | AGENT_CONTROL_FINISH_ANIM;
+	}
+	else
+	{
+		return mControlFlags;
+	}
 }
 
 //-----------------------------------------------------------------------------
diff --git a/indra/newview/llagent.h b/indra/newview/llagent.h
index 89c65ba1779ace5e76611f931fed90dd32f97ad6..d960b575596f6481fd420205a966ab29c5f502bb 100644
--- a/indra/newview/llagent.h
+++ b/indra/newview/llagent.h
@@ -513,6 +513,7 @@ class LLAgent final : public LLOldEvents::LLObservable
 	BOOL 			mbFlagsDirty;
 	BOOL 			mbFlagsNeedReset;				// ! HACK ! For preventing incorrect flags sent when crossing region boundaries
 	
+	BOOL			mIgnorePrejump;
 	//--------------------------------------------------------------------
 	// Animations
 	//--------------------------------------------------------------------
diff --git a/indra/newview/llfloaterreporter.cpp b/indra/newview/llfloaterreporter.cpp
index 22d23d6b3070a33227f2d0eb55e68ec6ec2a8585..6e39fbe8fcac72837ad764b4218c586271e4d242 100644
--- a/indra/newview/llfloaterreporter.cpp
+++ b/indra/newview/llfloaterreporter.cpp
@@ -208,6 +208,9 @@ BOOL LLFloaterReporter::postBuild()
 	std::string reporter = LLSLURL("agent", gAgent.getID(), "inspect").getSLURLString();
 	getChild<LLUICtrl>("reporter_field")->setValue(reporter);
 
+	getChild<LLButton>("refresh_screenshot")->setCommitCallback([this](LLUICtrl*, const LLSD&) 
+		{doAfterInterval(boost::bind(&LLFloaterReporter::takeNewSnapshot, this, true), gSavedSettings.getF32("AbuseReportScreenshotDelay")); });
+
 	// request categories
 	if (gAgent.getRegion()
 		&& gAgent.getRegion()->capabilitiesReceived())
@@ -263,7 +266,7 @@ void LLFloaterReporter::onIdle(void* user_data)
 		if (floater_reporter->mSnapshotTimer.getStarted() && floater_reporter->mSnapshotTimer.getElapsedTimeF32() > screenshot_delay)
 		{
 			floater_reporter->mSnapshotTimer.stop();
-			floater_reporter->takeNewSnapshot();
+			floater_reporter->takeNewSnapshot(false);
 		}
 	}
 }
@@ -937,7 +940,7 @@ void LLFloaterReporter::takeScreenshot(bool use_prev_screenshot)
 	}
 }
 
-void LLFloaterReporter::takeNewSnapshot()
+void LLFloaterReporter::takeNewSnapshot(bool refresh)
 {
 	childSetEnabled("send_btn", true);
 	mImageRaw = new LLImageRaw;
@@ -954,7 +957,7 @@ void LLFloaterReporter::takeNewSnapshot()
 	}
 	setVisible(TRUE);
 
-	if(gSavedPerAccountSettings.getBOOL("PreviousScreenshotForReport"))
+	if(gSavedPerAccountSettings.getBOOL("PreviousScreenshotForReport") && !refresh)
 	{
 		std::string screenshot_filename(gDirUtilp->getLindenUserDir() + gDirUtilp->getDirDelimiter() + SCREEN_PREV_FILENAME);
 		mPrevImageRaw = new LLImageRaw;
diff --git a/indra/newview/llfloaterreporter.h b/indra/newview/llfloaterreporter.h
index 4baed32a42e65a6b001435dcee89da34b8184684..c342bb2ad9bf52305e25886e362406cadb8524d6 100644
--- a/indra/newview/llfloaterreporter.h
+++ b/indra/newview/llfloaterreporter.h
@@ -107,7 +107,7 @@ class LLFloaterReporter final
 
 	void onLoadScreenshotDialog(const LLSD& notification, const LLSD& response);
 
-	void takeNewSnapshot();
+	void takeNewSnapshot(bool refresh);
 
 private:
 	static void show(const LLUUID& object_id, const std::string& avatar_name = LLStringUtil::null, const LLUUID& experience_id = LLUUID::null);
@@ -125,6 +125,7 @@ class LLFloaterReporter final
 	void callbackAvatarID(const uuid_vec_t& ids, const std::vector<LLAvatarName> names);
 	void setFromAvatarID(const LLUUID& avatar_id);
 	void onAvatarNameCache(const LLUUID& avatar_id, const LLAvatarName& av_name);
+	void onUpdateScreenshot();
 
 	static void requestAbuseCategoriesCoro(std::string url, LLHandle<LLFloater> handle);
     static void finishedARPost(const LLSD &);
diff --git a/indra/newview/llgesturemgr.cpp b/indra/newview/llgesturemgr.cpp
index 9683a3b9ae361dae241c12e9047e66ae8fece7d3..744fa16b5e9845c71c25b5f2be7401c694f5174a 100644
--- a/indra/newview/llgesturemgr.cpp
+++ b/indra/newview/llgesturemgr.cpp
@@ -62,7 +62,7 @@
 // [/RLVa:KB]
 
 // Longest time, in seconds, to wait for all animations to stop playing
-const F32 MAX_WAIT_ANIM_SECS = 30.f;
+const F32 MAX_WAIT_ANIM_SECS = 60.f;
 
 // Lightweight constructor.
 // init() does the heavy lifting.
@@ -543,7 +543,7 @@ void LLGestureMgr::playGesture(LLMultiGesture* gesture)
 // [/RLVa:KB]
 
 	// Reset gesture to first step
-	gesture->mCurrentStep = 0;
+	gesture->reset();
 
 	// Add to list of playing
 	gesture->mPlaying = TRUE;
diff --git a/indra/newview/llsidepaneltaskinfo.cpp b/indra/newview/llsidepaneltaskinfo.cpp
index 38a84a30d1f8ccbaf60e61f6da7d3eb64c5162e3..407788ea6bdb9a5545b0ae36edea0385d20c6743 100644
--- a/indra/newview/llsidepaneltaskinfo.cpp
+++ b/indra/newview/llsidepaneltaskinfo.cpp
@@ -115,7 +115,7 @@ BOOL LLSidepanelTaskInfo::postBuild()
 
 	mDeedBtn = getChild<LLButton>("button deed");
 
-	mLabelGroupName = getChild<LLNameBox>("Group Name Proxy");
+	mLabelGroupName = getChild<LLTextBox>("Group Name");
 
 	childSetCommitCallback("Object Name",						LLSidepanelTaskInfo::onCommitName,this);
 	getChild<LLLineEditor>("Object Name")->setPrevalidate(LLTextValidate::validateASCIIPrintableNoPipe);
@@ -458,25 +458,17 @@ void LLSidepanelTaskInfo::refresh()
 
 	// update group text field
 	getChildView("Group:")->setEnabled(TRUE);
-	getChild<LLUICtrl>("Group Name")->setValue(LLStringUtil::null);
 	LLUUID group_id;
 	BOOL groups_identical = LLSelectMgr::getInstance()->selectGetGroup(group_id);
 	if (groups_identical)
 	{
-		if (mLabelGroupName)
-		{
-			mLabelGroupName->setNameID(group_id,TRUE);
-			mLabelGroupName->setEnabled(TRUE);
-		}
+		mLabelGroupName->setValue(LLSLURL("group", group_id, "inspect").getSLURLString());
+		mLabelGroupName->setEnabled(TRUE);
 	}
 	else
 	{
-		if (mLabelGroupName)
-		{
-			mLabelGroupName->setNameID(LLUUID::null, TRUE);
-			mLabelGroupName->refresh(LLUUID::null, std::string(), true);
-			mLabelGroupName->setEnabled(FALSE);
-		}
+		mLabelGroupName->setValue(LLStringUtil::null);
+		mLabelGroupName->setEnabled(TRUE);
 	}
 	
 	getChildView("button set group")->setEnabled(owners_identical && (mOwnerID == gAgent.getID()) && is_nonpermanent_enforced);
@@ -968,10 +960,8 @@ void LLSidepanelTaskInfo::onClickGroup()
 
 void LLSidepanelTaskInfo::cbGroupID(LLUUID group_id)
 {
-	if (mLabelGroupName)
-	{
-		mLabelGroupName->setNameID(group_id, TRUE);
-	}
+	mLabelGroupName->setValue(LLSLURL("group", group_id, "inspect").getSLURLString());
+	mLabelGroupName->setEnabled(TRUE);
 	LLSelectMgr::getInstance()->sendGroup(group_id);
 }
 
diff --git a/indra/newview/llsidepaneltaskinfo.h b/indra/newview/llsidepaneltaskinfo.h
index 2baafc67e7cf61d55a428451f165de8573b5c16a..8a3b1164dcd4792e5fa0935e24f0fcff1143f6e9 100644
--- a/indra/newview/llsidepaneltaskinfo.h
+++ b/indra/newview/llsidepaneltaskinfo.h
@@ -42,6 +42,7 @@ class LLComboBox;
 class LLNameBox;
 class LLViewerObject;
 class LLTextBase;
+class LLTextBox;
 
 class LLSidepanelTaskInfo : public LLPanel
 {
@@ -100,7 +101,7 @@ class LLSidepanelTaskInfo : public LLPanel
 	void disablePermissions();
 
 private:
-	LLNameBox*		mLabelGroupName;		// group name
+	LLTextBox*		mLabelGroupName;		// group name
 
 	LLUUID			mCreatorID;
 	LLUUID			mOwnerID;
diff --git a/indra/newview/skins/default/xui/en/floater_preview_gesture.xml b/indra/newview/skins/default/xui/en/floater_preview_gesture.xml
index c4ac93633493b53bb9d1d8677ef6bf8bec0c994d..1fa6395afa9acb1e37309c7b63eee4386031a0d9 100644
--- a/indra/newview/skins/default/xui/en/floater_preview_gesture.xml
+++ b/indra/newview/skins/default/xui/en/floater_preview_gesture.xml
@@ -105,7 +105,7 @@
      height="20"
      layout="topleft"
      left_delta="104"
-     max_length_bytes="31"
+     max_length_bytes="63"
      name="replace_editor"
      tool_tip="Replace the trigger word(s) with these words. For example, trigger &apos;hello&apos; replace with &apos;howdy&apos; will turn the chat &apos;I wanted to say hello&apos; into &apos;I wanted to say howdy&apos; as well as playing the gesture"
      top_delta="-4"
diff --git a/indra/newview/skins/default/xui/en/floater_report_abuse.xml b/indra/newview/skins/default/xui/en/floater_report_abuse.xml
index 343e72f057fc0a65a3922fcdfaeadfc660e067e4..2d6d02a68c3384d82013d7a884422b23f7314214 100644
--- a/indra/newview/skins/default/xui/en/floater_report_abuse.xml
+++ b/indra/newview/skins/default/xui/en/floater_report_abuse.xml
@@ -26,6 +26,17 @@ Text: [MSG_DESCRIPTION]
      name="screenshot"
      top="20"
      width="220" />
+     <button
+     follows="top|left"
+     halign="center"
+     height="23"
+     image_overlay="Refresh_Off"
+     layout="topleft"
+     tool_tip="Refresh Screenshot"
+     name="refresh_screenshot"
+     left_pad="5"
+     top="126"
+     width="25"/>
     <text
      type="string"
      length="1"
@@ -36,7 +47,7 @@ Text: [MSG_DESCRIPTION]
      layout="topleft"
      left="10"
      name="reporter_title"
-     top_pad="-2"
+     top_pad="15"
      width="100">
         Reporter:
     </text>
@@ -366,7 +377,7 @@ Text: [MSG_DESCRIPTION]
      type="string"
      length="1"
      follows="left|top"
-     height="22"
+     height="13"
      layout="topleft"
      name="bug_aviso"
      left_pad="10"
diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml
index c72ec869a3eb2b26720a8c4fbf6214efe2be88fd..636f53a08857a795c2121f398db1f5bd5f6528c2 100644
--- a/indra/newview/skins/default/xui/en/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/en/menu_viewer.xml
@@ -2249,6 +2249,16 @@ function="World.EnvPreset"
              function="ToggleControl"
              parameter="LimitSelectDistance" />
         </menu_item_check>
+		<menu_item_check
+         label="Limit Drag Distance"
+         name="Limit Drag Distance">
+			<menu_item_check.on_check
+             function="CheckControl"
+             parameter="LimitDragDistance" />
+			<menu_item_check.on_click
+             function="ToggleControl"
+             parameter="LimitDragDistance" />
+		</menu_item_check>
         <menu_item_check
          label="Disable Camera Constraints"
          name="Disable Camera Distance">
@@ -2280,8 +2290,18 @@ function="World.EnvPreset"
              parameter="AlchemyIgnoreSimCameraConstraint" />
         </menu_item_check>
         <menu_item_separator/>
-
-        <menu_item_check
+		<menu_item_check
+         label="Avatar Nimble"
+         name="Avatar Ignore Prejump">
+			<menu_item_check.on_check
+             function="CheckControl"
+             parameter="AlchemyNimble" />
+			<menu_item_check.on_click
+             function="ToggleControl"
+             parameter="AlchemyNimble" />
+		</menu_item_check>
+		<menu_item_separator/>
+		<menu_item_check
          label="High-res Snapshot"
          name="HighResSnapshot">
             <menu_item_check.on_check
diff --git a/indra/newview/skins/default/xui/en/sidepanel_task_info.xml b/indra/newview/skins/default/xui/en/sidepanel_task_info.xml
index 9e69f3dfe30db2454946a7bb41656e5d8da3c326..041536651deb915d8945603cfc0fe687df5bd7b2 100644
--- a/indra/newview/skins/default/xui/en/sidepanel_task_info.xml
+++ b/indra/newview/skins/default/xui/en/sidepanel_task_info.xml
@@ -207,37 +207,38 @@
 			width="78">
 			    Group:
 	     </text>
-      		<button
-			 follows="top|left"
-			 height="10"
-			 image_disabled="Activate_Checkmark"
-			 image_selected="Activate_Checkmark"
-			 image_unselected="Activate_Checkmark"
-			 image_color="White_50"
-			 layout="topleft"
-			 left_pad="0"
-			 top_delta="0"
-			 name="button set group"
-			 tab_stop="false"
-			 tool_tip="Choose a group to share this object's permissions"
-			 width="10" />
-            <name_box
-             follows="left|top"
-             height="18"
-             initial_value="Loading..."
+	     <text
+			    type="string"
+			    follows="left|right|top"
+			    font="SansSerifSmall"
+			    height="15"
+			    layout="topleft"
+			    name="Group Name"
+             left_pad="0"
+             top_delta="0"
+			    translate="false"
+             use_ellipses="true" 
+			    width="200">
+	     </text>
+             <button
+             follows="top|left"
+             height="23"
+             image_overlay="Edit_Wrench"
              layout="topleft"
-             left_pad="5"
-             top_delta="-1"
-             name="Group Name Proxy"
-             width="150" />
-            <button
+             left_pad="8"
+             top_delta="-3"
+             name="button set group"
+             tab_stop="false"
+             tool_tip="Choose a group to share this object's permissions"
+             width="23" />
+             <button
              follows="top|left"
              height="23"
              label="Deed"
              label_selected="Deed"
              layout="topleft"
              name="button deed"
-             top_pad="0"
+             top_pad="3"
              left="81"
              tool_tip="Deeding gives this item away with next owner permissions. Group shared objects can be deeded by a group officer."
              width="100" />