define([
  "jquery",
  "lib/components/slider",
  "lib/analytics/analytics",
], function($, Slider, Analytics) {

  "use strict";

  var defaults = {
    el: "#js-gallery",
    listener: "#js-row--content",
    sliderConfig: {}
  };

  function Gallery(args) {
    this.config = $.extend({}, defaults, args);

    this.$listener = $(this.config.listener);
    this.$gallery = this.$listener.find(this.config.el);
    this.analytics = new Analytics();
    this.slug = this.$gallery.data("href");
    this.init();
  }

  Gallery.prototype.init = function() {
    this.slider = new Slider($.extend({
      el: this.$gallery,
      $listener: this.$listener,
      assetBalance: 4,
      assetReveal: true,
      createControls: false,
      keyboardControls: true,
      loopAround: true
    }, this.config.sliderConfig));

    if (!(this.slider && this.slider.$currentSlide)) return;

    this._gatherElements();
    this._handleEvents();
  };

  Gallery.prototype._gatherElements = function() {
    this.galleryTitle = this.$gallery.find(".js-gallery-title");
    this.galleryPoi = this.$gallery.find(".js-gallery-poi");
    this.galleryBreadcrumb = this.$gallery.find(".js-gallery-breadcrumb");
    this.gallerySocial = this.$gallery.find(".js-gallery-social");
  };

  Gallery.prototype._updateImageInfo = function() {
    var slideDetails = this.slider.$currentSlide.find(".js-slide-details"),
        caption = slideDetails.find(".js-slide-caption").text(),
        poi = slideDetails.find(".js-slide-poi").html(),
        breadcrumb = slideDetails.find(".js-slide-breadcrumb").html(),
        social = slideDetails.find(".js-slide-social").html();

    this.galleryTitle.text(caption);
    this.galleryPoi.html(poi);
    this.galleryBreadcrumb.html(breadcrumb);
    this.gallerySocial.html(social);
  };

  Gallery.prototype._updateSlug = function(partial) {
    window.history.pushState && window.history.pushState({}, "", this.slug + "/" + partial);
  };

  /* jshint ignore:start */
  Gallery.prototype._updateGoogleAnalytics = function(partial, ga) {
    if (ga.dataLayer.summaryTag && ga.dataLayer.summaryTag.content_id) {
      ga.dataLayer.summaryTag.content_id = partial;
      ga.api.trackPageView(ga.dataLayer);
    }
  };
  /* jshint ignore:end */

  Gallery.prototype._afterNavigation = function() {
    var partial = this.slider.$currentSlide.data("partial-slug");
    this.analytics.track();
    this._updateImageInfo();
    this._updateSlug(partial);
    this._updateGoogleAnalytics(partial, window.lp.analytics);
    this.$listener.trigger(":ads/refresh");
  };

  Gallery.prototype._handleEvents = function() {

    this.$listener.on(":slider/slideChanged", function() {
      window.setTimeout(this._afterNavigation.bind(this), this.slider.config.transition * 1.5);
    }.bind(this));

    this.$gallery.on("click", ".is-previous", function() {
      this.slider._previousSlide();
    }.bind(this));

    this.$gallery.on("click", ".is-next", function() {
      this.slider._nextSlide();
    }.bind(this));
  };

  return Gallery;
});

@@ -1048,24 +1048,91 @@
 ry-title%22);%0A
+    this.gallerySource = this.$gallery.find(%22.js-gallery-source%22);%0A
     this.gal
@@ -1517,24 +1517,87 @@
 n%22).text(),%0A
+        source = slideDetails.find(%22.js-slide-source%22).text(),%0A
         poi 
@@ -1813,16 +1813,53 @@
 ption);%0A
+    this.gallerySource.text(source);%0A
     this

Add updating source field in gallery component