(function(f,d){d.Granite=d.Granite||{};d.Granite.$=d.Granite.$||f;d._g=d._g||{};d._g.$=d._g.$||f;var g=Granite.HTTP;f.ajaxSetup({externalize:!0,encodePath:!0,hook:!0,beforeSend:function(d,c){"undefined"!==typeof G_IS_HOOKED&&G_IS_HOOKED(c.url)||(c.externalize&&(c.url=g.externalize(c.url)),c.encodePath&&(c.url=g.encodePathOfURI(c.url)));c.hook&&(d=g.getXhrHook(c.url,c.type,c.data))&&(c.url=d.url,d.params&&("GET"===c.type.toUpperCase()?c.url+="?"+f.param(d.params):c.data=f.param(d.params)))},statusCode:{403:function(d){"Authentication Failed"=== d.getResponseHeader("X-Reason")&&g.handleLoginRedirect()}}});f.ajaxSettings.traditional=!0})(jQuery,this); (function(f){window.Granite.csrf||(window.Granite.csrf=f(window.Granite.HTTP))})(function(f){function d(){this._handler=[]}function g(a){var b="//"+document.location.host,c=document.location.protocol+b;return a===c||a.slice(0,c.length+1)===c+"/"||a===b||a.slice(0,b.length+1)===b+"/"||!/^(\/\/|http:|https:).*/.test(a)}function k(a){window.console&&console.warn("CSRF data not available;The data may be unavailable by design, such as during non-authenticated requests: "+a)}function c(){var a=new d;l= a;var b=new XMLHttpRequest;b.onreadystatechange=function(){if(4===b.readyState)try{e=JSON.parse(b.responseText).token,a.resolve(e)}catch(r){k(r),a.reject(b.responseText)}};b.open("GET",m,!0);b.send();return a}function n(){var a=new XMLHttpRequest;a.open("GET",m,!1);a.send();try{return e=JSON.parse(a.responseText).token}catch(b){k(b)}}function p(a){var b=a.getAttribute("action");"GET"===a.method.toUpperCase()||b&&!g(b)||(e||n(),e&&(b=a.querySelector('input[name\x3d":cq_csrf_token"]'),b||(b=document.createElement("input"), b.setAttribute("type","hidden"),b.setAttribute("name",":cq_csrf_token"),a.appendChild(b)),b.setAttribute("value",e)))}function q(a){var b=function(a){a=a.target;"FORM"===a.nodeName&&p(a)};a.addEventListener?a.addEventListener("submit",b,!0):a.attachEvent&&a.attachEvent("submit",b)}d.prototype={then:function(a,b){this._handler.push({resolve:a,reject:b})},resolve:function(){this._execute("resolve",arguments)},reject:function(){this._execute("reject",arguments)},_execute:function(a,b){if(null===this._handler)throw Error("Promise already completed."); for(var c=0,d=this._handler.length;c