
try{/*
 AngularJS v1.4.9
 (c) 2010-2015 Google, Inc. http://angularjs.org
 License: MIT
*/
(function(S,W,w){'use strict';function M(a){return function(){var b=arguments[0],d;d="["+(a?a+":":"")+b+"] http://errors.angularjs.org/1.4.9/"+(a?a+"/":"")+b;for(b=1;b<arguments.length;b++){d=d+(1==b?"?":"&")+"p"+(b-1)+"=";var c=encodeURIComponent,e;e=arguments[b];e="function"==typeof e?e.toString().replace(/ \{[\s\S]*$/,""):"undefined"==typeof e?"undefined":"string"!=typeof e?JSON.stringify(e):e;d+=c(e)}return Error(d)}}function Aa(a){if(null==a||Xa(a))return!1;if(E(a)||F(a)||A&&a instanceof A)return!0;
var b="length"in Object(a)&&a.length;return Q(b)&&(0<=b&&(b-1 in a||a instanceof Array)||"function"==typeof a.item)}function n(a,b,d){var c,e;if(a)if(B(a))for(c in a)"prototype"==c||"length"==c||"name"==c||a.hasOwnProperty&&!a.hasOwnProperty(c)||b.call(d,a[c],c,a);else if(E(a)||Aa(a)){var f="object"!==typeof a;c=0;for(e=a.length;c<e;c++)(f||c in a)&&b.call(d,a[c],c,a)}else if(a.forEach&&a.forEach!==n)a.forEach(b,d,a);else if(oc(a))for(c in a)b.call(d,a[c],c,a);else if("function"===typeof a.hasOwnProperty)for(c in a)a.hasOwnProperty(c)&&
b.call(d,a[c],c,a);else for(c in a)ra.call(a,c)&&b.call(d,a[c],c,a);return a}function pc(a,b,d){for(var c=Object.keys(a).sort(),e=0;e<c.length;e++)b.call(d,a[c[e]],c[e]);return c}function qc(a){return function(b,d){a(d,b)}}function Xd(){return++ob}function Ob(a,b,d){for(var c=a.$$hashKey,e=0,f=b.length;e<f;++e){var g=b[e];if(G(g)||B(g))for(var h=Object.keys(g),k=0,l=h.length;k<l;k++){var m=h[k],r=g[m];d&&G(r)?da(r)?a[m]=new Date(r.valueOf()):La(r)?a[m]=new RegExp(r):r.nodeName?a[m]=r.cloneNode(!0):
Pb(r)?a[m]=r.clone():(G(a[m])||(a[m]=E(r)?[]:{}),Ob(a[m],[r],!0)):a[m]=r}}c?a.$$hashKey=c:delete a.$$hashKey;return a}function N(a){return Ob(a,sa.call(arguments,1),!1)}function Yd(a){return Ob(a,sa.call(arguments,1),!0)}function Z(a){return parseInt(a,10)}function Qb(a,b){return N(Object.create(a),b)}function z(){}function Ya(a){return a}function na(a){return function(){return a}}function rc(a){return B(a.toString)&&a.toString!==ta}function q(a){return"undefined"===typeof a}function u(a){return"undefined"!==
typeof a}function G(a){return null!==a&&"object"===typeof a}function oc(a){return null!==a&&"object"===typeof a&&!sc(a)}function F(a){return"string"===typeof a}function Q(a){return"number"===typeof a}function da(a){return"[object Date]"===ta.call(a)}function B(a){return"function"===typeof a}function La(a){return"[object RegExp]"===ta.call(a)}function Xa(a){return a&&a.window===a}function Za(a){return a&&a.$evalAsync&&a.$watch}function $a(a){return"boolean"===typeof a}function tc(a){return a&&Q(a.length)&&
Zd.test(ta.call(a))}function Pb(a){return!(!a||!(a.nodeName||a.prop&&a.attr&&a.find))}function $d(a){var b={};a=a.split(",");var d;for(d=0;d<a.length;d++)b[a[d]]=!0;return b}function oa(a){return K(a.nodeName||a[0]&&a[0].nodeName)}function ab(a,b){var d=a.indexOf(b);0<=d&&a.splice(d,1);return d}function Ma(a,b){function d(a,b){var d=b.$$hashKey,e;if(E(a)){e=0;for(var f=a.length;e<f;e++)b.push(c(a[e]))}else if(oc(a))for(e in a)b[e]=c(a[e]);else if(a&&"function"===typeof a.hasOwnProperty)for(e in a)a.hasOwnProperty(e)&&
(b[e]=c(a[e]));else for(e in a)ra.call(a,e)&&(b[e]=c(a[e]));d?b.$$hashKey=d:delete b.$$hashKey;return b}function c(a){if(!G(a))return a;var b=e.indexOf(a);if(-1!==b)return f[b];if(Xa(a)||Za(a))throw Ba("cpws");var b=!1,c;E(a)?(c=[],b=!0):tc(a)?c=new a.constructor(a):da(a)?c=new Date(a.getTime()):La(a)?(c=new RegExp(a.source,a.toString().match(/[^\/]*$/)[0]),c.lastIndex=a.lastIndex):B(a.cloneNode)?c=a.cloneNode(!0):(c=Object.create(sc(a)),b=!0);e.push(a);f.push(c);return b?d(a,c):c}var e=[],f=[];if(b){if(tc(b))throw Ba("cpta");
if(a===b)throw Ba("cpi");E(b)?b.length=0:n(b,function(a,c){"$$hashKey"!==c&&delete b[c]});e.push(a);f.push(b);return d(a,b)}return c(a)}function ha(a,b){if(E(a)){b=b||[];for(var d=0,c=a.length;d<c;d++)b[d]=a[d]}else if(G(a))for(d in b=b||{},a)if("$"!==d.charAt(0)||"$"!==d.charAt(1))b[d]=a[d];return b||a}function ka(a,b){if(a===b)return!0;if(null===a||null===b)return!1;if(a!==a&&b!==b)return!0;var d=typeof a,c;if(d==typeof b&&"object"==d)if(E(a)){if(!E(b))return!1;if((d=a.length)==b.length){for(c=
0;c<d;c++)if(!ka(a[c],b[c]))return!1;return!0}}else{if(da(a))return da(b)?ka(a.getTime(),b.getTime()):!1;if(La(a))return La(b)?a.toString()==b.toString():!1;if(Za(a)||Za(b)||Xa(a)||Xa(b)||E(b)||da(b)||La(b))return!1;d=ea();for(c in a)if("$"!==c.charAt(0)&&!B(a[c])){if(!ka(a[c],b[c]))return!1;d[c]=!0}for(c in b)if(!(c in d)&&"$"!==c.charAt(0)&&u(b[c])&&!B(b[c]))return!1;return!0}return!1}function bb(a,b,d){return a.concat(sa.call(b,d))}function uc(a,b){var d=2<arguments.length?sa.call(arguments,2):
[];return!B(b)||b instanceof RegExp?b:d.length?function(){return arguments.length?b.apply(a,bb(d,arguments,0)):b.apply(a,d)}:function(){return arguments.length?b.apply(a,arguments):b.call(a)}}function ae(a,b){var d=b;"string"===typeof a&&"$"===a.charAt(0)&&"$"===a.charAt(1)?d=w:Xa(b)?d="$WINDOW":b&&W===b?d="$DOCUMENT":Za(b)&&(d="$SCOPE");return d}function cb(a,b){if("undefined"===typeof a)return w;Q(b)||(b=b?2:null);return JSON.stringify(a,ae,b)}function vc(a){return F(a)?JSON.parse(a):a}function wc(a,
b){var d=Date.parse("Jan 01, 1970 00:00:00 "+a)/6E4;return isNaN(d)?b:d}function Rb(a,b,d){d=d?-1:1;var c=wc(b,a.getTimezoneOffset());b=a;a=d*(c-a.getTimezoneOffset());b=new Date(b.getTime());b.setMinutes(b.getMinutes()+a);return b}function ua(a){a=A(a).clone();try{a.empty()}catch(b){}var d=A("<div>").append(a).html();try{return a[0].nodeType===Na?K(d):d.match(/^(<[^>]+>)/)[1].replace(/^<([\w\-]+)/,function(a,b){return"<"+K(b)})}catch(c){return K(d)}}function xc(a){try{return decodeURIComponent(a)}catch(b){}}
function yc(a){var b={};n((a||"").split("&"),function(a){var c,e,f;a&&(e=a=a.replace(/\+/g,"%20"),c=a.indexOf("="),-1!==c&&(e=a.substring(0,c),f=a.substring(c+1)),e=xc(e),u(e)&&(f=u(f)?xc(f):!0,ra.call(b,e)?E(b[e])?b[e].push(f):b[e]=[b[e],f]:b[e]=f))});return b}function Sb(a){var b=[];n(a,function(a,c){E(a)?n(a,function(a){b.push(ia(c,!0)+(!0===a?"":"="+ia(a,!0)))}):b.push(ia(c,!0)+(!0===a?"":"="+ia(a,!0)))});return b.length?b.join("&"):""}function pb(a){return ia(a,!0).replace(/%26/gi,"&").replace(/%3D/gi,
"=").replace(/%2B/gi,"+")}function ia(a,b){return encodeURIComponent(a).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%3B/gi,";").replace(/%20/g,b?"%20":"+")}function be(a,b){var d,c,e=Oa.length;for(c=0;c<e;++c)if(d=Oa[c]+b,F(d=a.getAttribute(d)))return d;return null}function ce(a,b){var d,c,e={};n(Oa,function(b){b+="app";!d&&a.hasAttribute&&a.hasAttribute(b)&&(d=a,c=a.getAttribute(b))});n(Oa,function(b){b+="app";var e;!d&&(e=a.querySelector("["+b.replace(":",
"\\:")+"]"))&&(d=e,c=e.getAttribute(b))});d&&(e.strictDi=null!==be(d,"strict-di"),b(d,c?[c]:[],e))}function zc(a,b,d){G(d)||(d={});d=N({strictDi:!1},d);var c=function(){a=A(a);if(a.injector()){var c=a[0]===W?"document":ua(a);throw Ba("btstrpd",c.replace(/</,"&lt;").replace(/>/,"&gt;"));}b=b||[];b.unshift(["$provide",function(b){b.value("$rootElement",a)}]);d.debugInfoEnabled&&b.push(["$compileProvider",function(a){a.debugInfoEnabled(!0)}]);b.unshift("ng");c=db(b,d.strictDi);c.invoke(["$rootScope",
"$rootElement","$compile","$injector",function(a,b,c,d){a.$apply(function(){b.data("$injector",d);c(b)(a)})}]);return c},e=/^NG_ENABLE_DEBUG_INFO!/,f=/^NG_DEFER_BOOTSTRAP!/;S&&e.test(S.name)&&(d.debugInfoEnabled=!0,S.name=S.name.replace(e,""));if(S&&!f.test(S.name))return c();S.name=S.name.replace(f,"");$.resumeBootstrap=function(a){n(a,function(a){b.push(a)});return c()};B($.resumeDeferredBootstrap)&&$.resumeDeferredBootstrap()}function de(){S.name="NG_ENABLE_DEBUG_INFO!"+S.name;S.location.reload()}
function ee(a){a=$.element(a).injector();if(!a)throw Ba("test");return a.get("$$testability")}function Ac(a,b){b=b||"_";return a.replace(fe,function(a,c){return(c?b:"")+a.toLowerCase()})}function ge(){var a;if(!Bc){var b=qb();(pa=q(b)?S.jQuery:b?S[b]:w)&&pa.fn.on?(A=pa,N(pa.fn,{scope:Pa.scope,isolateScope:Pa.isolateScope,controller:Pa.controller,injector:Pa.injector,inheritedData:Pa.inheritedData}),a=pa.cleanData,pa.cleanData=function(b){var c;if(Tb)Tb=!1;else for(var e=0,f;null!=(f=b[e]);e++)(c=
pa._data(f,"events"))&&c.$destroy&&pa(f).triggerHandler("$destroy");a(b)}):A=P;$.element=A;Bc=!0}}function rb(a,b,d){if(!a)throw Ba("areq",b||"?",d||"required");return a}function Qa(a,b,d){d&&E(a)&&(a=a[a.length-1]);rb(B(a),b,"not a function, got "+(a&&"object"===typeof a?a.constructor.name||"Object":typeof a));return a}function Ra(a,b){if("hasOwnProperty"===a)throw Ba("badname",b);}function Cc(a,b,d){if(!b)return a;b=b.split(".");for(var c,e=a,f=b.length,g=0;g<f;g++)c=b[g],a&&(a=(e=a)[c]);return!d&&
B(a)?uc(e,a):a}function sb(a){for(var b=a[0],d=a[a.length-1],c,e=1;b!==d&&(b=b.nextSibling);e++)if(c||a[e]!==b)c||(c=A(sa.call(a,0,e))),c.push(b);return c||a}function ea(){return Object.create(null)}function he(a){function b(a,b,c){return a[b]||(a[b]=c())}var d=M("$injector"),c=M("ng");a=b(a,"angular",Object);a.$$minErr=a.$$minErr||M;return b(a,"module",function(){var a={};return function(f,g,h){if("hasOwnProperty"===f)throw c("badname","module");g&&a.hasOwnProperty(f)&&(a[f]=null);return b(a,f,function(){function a(b,
d,e,f){f||(f=c);return function(){f[e||"push"]([b,d,arguments]);return y}}function b(a,d){return function(b,e){e&&B(e)&&(e.$$moduleName=f);c.push([a,d,arguments]);return y}}if(!g)throw d("nomod",f);var c=[],e=[],t=[],C=a("$injector","invoke","push",e),y={_invokeQueue:c,_configBlocks:e,_runBlocks:t,requires:g,name:f,provider:b("$provide","provider"),factory:b("$provide","factory"),service:b("$provide","service"),value:a("$provide","value"),constant:a("$provide","constant","unshift"),decorator:b("$provide",
"decorator"),animation:b("$animateProvider","register"),filter:b("$filterProvider","register"),controller:b("$controllerProvider","register"),directive:b("$compileProvider","directive"),config:C,run:function(a){t.push(a);return this}};h&&C(h);return y})}})}function ie(a){N(a,{bootstrap:zc,copy:Ma,extend:N,merge:Yd,equals:ka,element:A,forEach:n,injector:db,noop:z,bind:uc,toJson:cb,fromJson:vc,identity:Ya,isUndefined:q,isDefined:u,isString:F,isFunction:B,isObject:G,isNumber:Q,isElement:Pb,isArray:E,
version:je,isDate:da,lowercase:K,uppercase:tb,callbacks:{counter:0},getTestability:ee,$$minErr:M,$$csp:Ca,reloadWithDebugInfo:de});Ub=he(S);Ub("ng",["ngLocale"],["$provide",function(a){a.provider({$$sanitizeUri:ke});a.provider("$compile",Dc).directive({a:le,input:Ec,textarea:Ec,form:me,script:ne,select:oe,style:pe,option:qe,ngBind:re,ngBindHtml:se,ngBindTemplate:te,ngClass:ue,ngClassEven:ve,ngClassOdd:we,ngCloak:xe,ngController:ye,ngForm:ze,ngHide:Ae,ngIf:Be,ngInclude:Ce,ngInit:De,ngNonBindable:Ee,
ngPluralize:Fe,ngRepeat:Ge,ngShow:He,ngStyle:Ie,ngSwitch:Je,ngSwitchWhen:Ke,ngSwitchDefault:Le,ngOptions:Me,ngTransclude:Ne,ngModel:Oe,ngList:Pe,ngChange:Qe,pattern:Fc,ngPattern:Fc,required:Gc,ngRequired:Gc,minlength:Hc,ngMinlength:Hc,maxlength:Ic,ngMaxlength:Ic,ngValue:Re,ngModelOptions:Se}).directive({ngInclude:Te}).directive(ub).directive(Jc);a.provider({$anchorScroll:Ue,$animate:Ve,$animateCss:We,$$animateJs:Xe,$$animateQueue:Ye,$$AnimateRunner:Ze,$$animateAsyncRun:$e,$browser:af,$cacheFactory:bf,
$controller:cf,$document:df,$exceptionHandler:ef,$filter:Kc,$$forceReflow:ff,$interpolate:gf,$interval:hf,$http:jf,$httpParamSerializer:kf,$httpParamSerializerJQLike:lf,$httpBackend:mf,$xhrFactory:nf,$location:of,$log:pf,$parse:qf,$rootScope:rf,$q:sf,$$q:tf,$sce:uf,$sceDelegate:vf,$sniffer:wf,$templateCache:xf,$templateRequest:yf,$$testability:zf,$timeout:Af,$window:Bf,$$rAF:Cf,$$jqLite:Df,$$HashMap:Ef,$$cookieReader:Ff})}])}function eb(a){return a.replace(Gf,function(a,d,c,e){return e?c.toUpperCase():
c}).replace(Hf,"Moz$1")}function Lc(a){a=a.nodeType;return 1===a||!a||9===a}function Mc(a,b){var d,c,e=b.createDocumentFragment(),f=[];if(Vb.test(a)){d=d||e.appendChild(b.createElement("div"));c=(If.exec(a)||["",""])[1].toLowerCase();c=ja[c]||ja._default;d.innerHTML=c[1]+a.replace(Jf,"<$1></$2>")+c[2];for(c=c[0];c--;)d=d.lastChild;f=bb(f,d.childNodes);d=e.firstChild;d.textContent=""}else f.push(b.createTextNode(a));e.textContent="";e.innerHTML="";n(f,function(a){e.appendChild(a)});return e}function P(a){if(a instanceof
P)return a;var b;F(a)&&(a=T(a),b=!0);if(!(this instanceof P)){if(b&&"<"!=a.charAt(0))throw Wb("nosel");return new P(a)}if(b){b=W;var d;a=(d=Kf.exec(a))?[b.createElement(d[1])]:(d=Mc(a,b))?d.childNodes:[]}Nc(this,a)}function Xb(a){return a.cloneNode(!0)}function vb(a,b){b||wb(a);if(a.querySelectorAll)for(var d=a.querySelectorAll("*"),c=0,e=d.length;c<e;c++)wb(d[c])}function Oc(a,b,d,c){if(u(c))throw Wb("offargs");var e=(c=xb(a))&&c.events,f=c&&c.handle;if(f)if(b){var g=function(b){var c=e[b];u(d)&&
ab(c||[],d);u(d)&&c&&0<c.length||(a.removeEventListener(b,f,!1),delete e[b])};n(b.split(" "),function(a){g(a);yb[a]&&g(yb[a])})}else for(b in e)"$destroy"!==b&&a.removeEventListener(b,f,!1),delete e[b]}function wb(a,b){var d=a.ng339,c=d&&fb[d];c&&(b?delete c.data[b]:(c.handle&&(c.events.$destroy&&c.handle({},"$destroy"),Oc(a)),delete fb[d],a.ng339=w))}function xb(a,b){var d=a.ng339,d=d&&fb[d];b&&!d&&(a.ng339=d=++Lf,d=fb[d]={events:{},data:{},handle:w});return d}function Yb(a,b,d){if(Lc(a)){var c=
u(d),e=!c&&b&&!G(b),f=!b;a=(a=xb(a,!e))&&a.data;if(c)a[b]=d;else{if(f)return a;if(e)return a&&a[b];N(a,b)}}}function zb(a,b){return a.getAttribute?-1<(" "+(a.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ").indexOf(" "+b+" "):!1}function Ab(a,b){b&&a.setAttribute&&n(b.split(" "),function(b){a.setAttribute("class",T((" "+(a.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ").replace(" "+T(b)+" "," ")))})}function Bb(a,b){if(b&&a.setAttribute){var d=(" "+(a.getAttribute("class")||"")+" ").replace(/[\n\t]/g,
" ");n(b.split(" "),function(a){a=T(a);-1===d.indexOf(" "+a+" ")&&(d+=a+" ")});a.setAttribute("class",T(d))}}function Nc(a,b){if(b)if(b.nodeType)a[a.length++]=b;else{var d=b.length;if("number"===typeof d&&b.window!==b){if(d)for(var c=0;c<d;c++)a[a.length++]=b[c]}else a[a.length++]=b}}function Pc(a,b){return Cb(a,"$"+(b||"ngController")+"Controller")}function Cb(a,b,d){9==a.nodeType&&(a=a.documentElement);for(b=E(b)?b:[b];a;){for(var c=0,e=b.length;c<e;c++)if(u(d=A.data(a,b[c])))return d;a=a.parentNode||
11===a.nodeType&&a.host}}function Qc(a){for(vb(a,!0);a.firstChild;)a.removeChild(a.firstChild)}function Zb(a,b){b||vb(a);var d=a.parentNode;d&&d.removeChild(a)}function Mf(a,b){b=b||S;if("complete"===b.document.readyState)b.setTimeout(a);else A(b).on("load",a)}function Rc(a,b){var d=Db[b.toLowerCase()];return d&&Sc[oa(a)]&&d}function Nf(a,b){var d=function(c,d){c.isDefaultPrevented=function(){return c.defaultPrevented};var f=b[d||c.type],g=f?f.length:0;if(g){if(q(c.immediatePropagationStopped)){var h=
c.stopImmediatePropagation;c.stopImmediatePropagation=function(){c.immediatePropagationStopped=!0;c.stopPropagation&&c.stopPropagation();h&&h.call(c)}}c.isImmediatePropagationStopped=function(){return!0===c.immediatePropagationStopped};var k=f.specialHandlerWrapper||Of;1<g&&(f=ha(f));for(var l=0;l<g;l++)c.isImmediatePropagationStopped()||k(a,c,f[l])}};d.elem=a;return d}function Of(a,b,d){d.call(a,b)}function Pf(a,b,d){var c=b.relatedTarget;c&&(c===a||Qf.call(a,c))||d.call(a,b)}function Df(){this.$get=
function(){return N(P,{hasClass:function(a,b){a.attr&&(a=a[0]);return zb(a,b)},addClass:function(a,b){a.attr&&(a=a[0]);return Bb(a,b)},removeClass:function(a,b){a.attr&&(a=a[0]);return Ab(a,b)}})}}function Da(a,b){var d=a&&a.$$hashKey;if(d)return"function"===typeof d&&(d=a.$$hashKey()),d;d=typeof a;return d="function"==d||"object"==d&&null!==a?a.$$hashKey=d+":"+(b||Xd)():d+":"+a}function Sa(a,b){if(b){var d=0;this.nextUid=function(){return++d}}n(a,this.put,this)}function Rf(a){return(a=a.toString().replace(Tc,
"").match(Uc))?"function("+(a[1]||"").replace(/[\s\r\n]+/," ")+")":"fn"}function db(a,b){function d(a){return function(b,c){if(G(b))n(b,qc(a));else return a(b,c)}}function c(a,b){Ra(a,"service");if(B(b)||E(b))b=t.instantiate(b);if(!b.$get)throw Ea("pget",a);return r[a+"Provider"]=b}function e(a,b){return function(){var c=y.invoke(b,this);if(q(c))throw Ea("undef",a);return c}}function f(a,b,d){return c(a,{$get:!1!==d?e(a,b):b})}function g(a){rb(q(a)||E(a),"modulesToLoad","not an array");var b=[],c;
n(a,function(a){function d(a){var b,c;b=0;for(c=a.length;b<c;b++){var e=a[b],f=t.get(e[0]);f[e[1]].apply(f,e[2])}}if(!m.get(a)){m.put(a,!0);try{F(a)?(c=Ub(a),b=b.concat(g(c.requires)).concat(c._runBlocks),d(c._invokeQueue),d(c._configBlocks)):B(a)?b.push(t.invoke(a)):E(a)?b.push(t.invoke(a)):Qa(a,"module")}catch(e){throw E(a)&&(a=a[a.length-1]),e.message&&e.stack&&-1==e.stack.indexOf(e.message)&&(e=e.message+"\n"+e.stack),Ea("modulerr",a,e.stack||e.message||e);}}});return b}function h(a,c){function d(b,
e){if(a.hasOwnProperty(b)){if(a[b]===k)throw Ea("cdep",b+" <- "+l.join(" <- "));return a[b]}try{return l.unshift(b),a[b]=k,a[b]=c(b,e)}catch(f){throw a[b]===k&&delete a[b],f;}finally{l.shift()}}function e(a,c,f,g){"string"===typeof f&&(g=f,f=null);var k=[],h=db.$$annotate(a,b,g),l,m,t;m=0;for(l=h.length;m<l;m++){t=h[m];if("string"!==typeof t)throw Ea("itkn",t);k.push(f&&f.hasOwnProperty(t)?f[t]:d(t,g))}E(a)&&(a=a[l]);return a.apply(c,k)}return{invoke:e,instantiate:function(a,b,c){var d=Object.create((E(a)?
a[a.length-1]:a).prototype||null);a=e(a,d,b,c);return G(a)||B(a)?a:d},get:d,annotate:db.$$annotate,has:function(b){return r.hasOwnProperty(b+"Provider")||a.hasOwnProperty(b)}}}b=!0===b;var k={},l=[],m=new Sa([],!0),r={$provide:{provider:d(c),factory:d(f),service:d(function(a,b){return f(a,["$injector",function(a){return a.instantiate(b)}])}),value:d(function(a,b){return f(a,na(b),!1)}),constant:d(function(a,b){Ra(a,"constant");r[a]=b;C[a]=b}),decorator:function(a,b){var c=t.get(a+"Provider"),d=c.$get;
c.$get=function(){var a=y.invoke(d,c);return y.invoke(b,null,{$delegate:a})}}}},t=r.$injector=h(r,function(a,b){$.isString(b)&&l.push(b);throw Ea("unpr",l.join(" <- "));}),C={},y=C.$injector=h(C,function(a,b){var c=t.get(a+"Provider",b);return y.invoke(c.$get,c,w,a)});n(g(a),function(a){a&&y.invoke(a)});return y}function Ue(){var a=!0;this.disableAutoScrolling=function(){a=!1};this.$get=["$window","$location","$rootScope",function(b,d,c){function e(a){var b=null;Array.prototype.some.call(a,function(a){if("a"===
oa(a))return b=a,!0});return b}function f(a){if(a){a.scrollIntoView();var c;c=g.yOffset;B(c)?c=c():Pb(c)?(c=c[0],c="fixed"!==b.getComputedStyle(c).position?0:c.getBoundingClientRect().bottom):Q(c)||(c=0);c&&(a=a.getBoundingClientRect().top,b.scrollBy(0,a-c))}else b.scrollTo(0,0)}function g(a){a=F(a)?a:d.hash();var b;a?(b=h.getElementById(a))?f(b):(b=e(h.getElementsByName(a)))?f(b):"top"===a&&f(null):f(null)}var h=b.document;a&&c.$watch(function(){return d.hash()},function(a,b){a===b&&""===a||Mf(function(){c.$evalAsync(g)})});
return g}]}function gb(a,b){if(!a&&!b)return"";if(!a)return b;if(!b)return a;E(a)&&(a=a.join(" "));E(b)&&(b=b.join(" "));return a+" "+b}function Sf(a){F(a)&&(a=a.split(" "));var b=ea();n(a,function(a){a.length&&(b[a]=!0)});return b}function Fa(a){return G(a)?a:{}}function Tf(a,b,d,c){function e(a){try{a.apply(null,sa.call(arguments,1))}finally{if(y--,0===y)for(;R.length;)try{R.pop()()}catch(b){d.error(b)}}}function f(){H=null;g();h()}function g(){a:{try{p=m.state;break a}catch(a){}p=void 0}p=q(p)?
null:p;ka(p,D)&&(p=D);D=p}function h(){if(v!==k.url()||x!==p)v=k.url(),x=p,n(la,function(a){a(k.url(),p)})}var k=this,l=a.location,m=a.history,r=a.setTimeout,t=a.clearTimeout,C={};k.isMock=!1;var y=0,R=[];k.$$completeOutstandingRequest=e;k.$$incOutstandingRequestCount=function(){y++};k.notifyWhenNoOutstandingRequests=function(a){0===y?a():R.push(a)};var p,x,v=l.href,Y=b.find("base"),H=null;g();x=p;k.url=function(b,d,e){q(e)&&(e=null);l!==a.location&&(l=a.location);m!==a.history&&(m=a.history);if(b){var f=
x===e;if(v===b&&(!c.history||f))return k;var h=v&&Ga(v)===Ga(b);v=b;x=e;if(!c.history||h&&f){if(!h||H)H=b;d?l.replace(b):h?(d=l,e=b.indexOf("#"),e=-1===e?"":b.substr(e),d.hash=e):l.href=b;l.href!==b&&(H=b)}else m[d?"replaceState":"pushState"](e,"",b),g(),x=p;return k}return H||l.href.replace(/%27/g,"'")};k.state=function(){return p};var la=[],I=!1,D=null;k.onUrlChange=function(b){if(!I){if(c.history)A(a).on("popstate",f);A(a).on("hashchange",f);I=!0}la.push(b);return b};k.$$applicationDestroyed=function(){A(a).off("hashchange popstate",
f)};k.$$checkUrlChange=h;k.baseHref=function(){var a=Y.attr("href");return a?a.replace(/^(https?\:)?\/\/[^\/]*/,""):""};k.defer=function(a,b){var c;y++;c=r(function(){delete C[c];e(a)},b||0);C[c]=!0;return c};k.defer.cancel=function(a){return C[a]?(delete C[a],t(a),e(z),!0):!1}}function af(){this.$get=["$window","$log","$sniffer","$document",function(a,b,d,c){return new Tf(a,c,b,d)}]}function bf(){this.$get=function(){function a(a,c){function e(a){a!=r&&(t?t==a&&(t=a.n):t=a,f(a.n,a.p),f(a,r),r=a,
r.n=null)}function f(a,b){a!=b&&(a&&(a.p=b),b&&(b.n=a))}if(a in b)throw M("$cacheFactory")("iid",a);var g=0,h=N({},c,{id:a}),k=ea(),l=c&&c.capacity||Number.MAX_VALUE,m=ea(),r=null,t=null;return b[a]={put:function(a,b){if(!q(b)){if(l<Number.MAX_VALUE){var c=m[a]||(m[a]={key:a});e(c)}a in k||g++;k[a]=b;g>l&&this.remove(t.key);return b}},get:function(a){if(l<Number.MAX_VALUE){var b=m[a];if(!b)return;e(b)}return k[a]},remove:function(a){if(l<Number.MAX_VALUE){var b=m[a];if(!b)return;b==r&&(r=b.p);b==
t&&(t=b.n);f(b.n,b.p);delete m[a]}a in k&&(delete k[a],g--)},removeAll:function(){k=ea();g=0;m=ea();r=t=null},destroy:function(){m=h=k=null;delete b[a]},info:function(){return N({},h,{size:g})}}}var b={};a.info=function(){var a={};n(b,function(b,e){a[e]=b.info()});return a};a.get=function(a){return b[a]};return a}}function xf(){this.$get=["$cacheFactory",function(a){return a("templates")}]}function Dc(a,b){function d(a,b,c){var d=/^\s*([@&]|=(\*?))(\??)\s*(\w*)\s*$/,e={};n(a,function(a,f){var g=a.match(d);
if(!g)throw ga("iscp",b,f,a,c?"controller bindings definition":"isolate scope definition");e[f]={mode:g[1][0],collection:"*"===g[2],optional:"?"===g[3],attrName:g[4]||f}});return e}function c(a){var b=a.charAt(0);if(!b||b!==K(b))throw ga("baddir",a);if(a!==a.trim())throw ga("baddir",a);}var e={},f=/^\s*directive\:\s*([\w\-]+)\s+(.*)$/,g=/(([\w\-]+)(?:\:([^;]+))?;?)/,h=$d("ngSrc,ngSrcset,src,srcset"),k=/^(?:(\^\^?)?(\?)?(\^\^?)?)?/,l=/^(on[a-z]+|formaction)$/;this.directive=function t(b,f){Ra(b,"directive");
F(b)?(c(b),rb(f,"directiveFactory"),e.hasOwnProperty(b)||(e[b]=[],a.factory(b+"Directive",["$injector","$exceptionHandler",function(a,c){var f=[];n(e[b],function(e,g){try{var h=a.invoke(e);B(h)?h={compile:na(h)}:!h.compile&&h.link&&(h.compile=na(h.link));h.priority=h.priority||0;h.index=g;h.name=h.name||b;h.require=h.require||h.controller&&h.name;h.restrict=h.restrict||"EA";var k=h,l=h,m=h.name,t={isolateScope:null,bindToController:null};G(l.scope)&&(!0===l.bindToController?(t.bindToController=d(l.scope,
m,!0),t.isolateScope={}):t.isolateScope=d(l.scope,m,!1));G(l.bindToController)&&(t.bindToController=d(l.bindToController,m,!0));if(G(t.bindToController)){var y=l.controller,X=l.controllerAs;if(!y)throw ga("noctrl",m);var U;a:if(X&&F(X))U=X;else{if(F(y)){var n=Vc.exec(y);if(n){U=n[3];break a}}U=void 0}if(!U)throw ga("noident",m);}var s=k.$$bindings=t;G(s.isolateScope)&&(h.$$isolateBindings=s.isolateScope);h.$$moduleName=e.$$moduleName;f.push(h)}catch(w){c(w)}});return f}])),e[b].push(f)):n(b,qc(t));
return this};this.aHrefSanitizationWhitelist=function(a){return u(a)?(b.aHrefSanitizationWhitelist(a),this):b.aHrefSanitizationWhitelist()};this.imgSrcSanitizationWhitelist=function(a){return u(a)?(b.imgSrcSanitizationWhitelist(a),this):b.imgSrcSanitizationWhitelist()};var m=!0;this.debugInfoEnabled=function(a){return u(a)?(m=a,this):m};this.$get=["$injector","$interpolate","$exceptionHandler","$templateRequest","$parse","$controller","$rootScope","$sce","$animate","$$sanitizeUri",function(a,b,c,
d,p,x,v,Y,H,la){function I(a,b){try{a.addClass(b)}catch(c){}}function D(a,b,c,d,e){a instanceof A||(a=A(a));n(a,function(b,c){b.nodeType==Na&&b.nodeValue.match(/\S+/)&&(a[c]=A(b).wrap("<span></span>").parent()[0])});var f=L(a,b,a,c,d,e);D.$$addScopeClass(a);var g=null;return function(b,c,d){rb(b,"scope");e&&e.needsNewScope&&(b=b.$parent.$new());d=d||{};var h=d.parentBoundTranscludeFn,k=d.transcludeControllers;d=d.futureParentElement;h&&h.$$boundTransclude&&(h=h.$$boundTransclude);g||(g=(d=d&&d[0])?
"foreignobject"!==oa(d)&&d.toString().match(/SVG/)?"svg":"html":"html");d="html"!==g?A(Q(g,A("<div>").append(a).html())):c?Pa.clone.call(a):a;if(k)for(var l in k)d.data("$"+l+"Controller",k[l].instance);D.$$addScopeInfo(d,b);c&&c(d,b);f&&f(b,d,d,h);return d}}function L(a,b,c,d,e,f){function g(a,c,d,e){var f,k,l,m,t,v,I;if(p)for(I=Array(c.length),m=0;m<h.length;m+=3)f=h[m],I[f]=c[f];else I=c;m=0;for(t=h.length;m<t;)k=I[h[m++]],c=h[m++],f=h[m++],c?(c.scope?(l=a.$new(),D.$$addScopeInfo(A(k),l)):l=a,
v=c.transcludeOnThisElement?O(a,c.transclude,e):!c.templateOnThisElement&&e?e:!e&&b?O(a,b):null,c(f,l,k,d,v)):f&&f(a,k.childNodes,w,e)}for(var h=[],k,l,m,t,p,v=0;v<a.length;v++){k=new aa;l=X(a[v],[],k,0===v?d:w,e);(f=l.length?s(l,a[v],k,b,c,null,[],[],f):null)&&f.scope&&D.$$addScopeClass(k.$$element);k=f&&f.terminal||!(m=a[v].childNodes)||!m.length?null:L(m,f?(f.transcludeOnThisElement||!f.templateOnThisElement)&&f.transclude:b);if(f||k)h.push(v,f,k),t=!0,p=p||f;f=null}return t?g:null}function O(a,
b,c){return function(d,e,f,g,h){d||(d=a.$new(!1,h),d.$$transcluded=!0);return b(d,e,{parentBoundTranscludeFn:c,transcludeControllers:f,futureParentElement:g})}}function X(a,b,c,d,e){var h=c.$attr,k;switch(a.nodeType){case 1:u(b,va(oa(a)),"E",d,e);for(var l,m,t,p=a.attributes,v=0,I=p&&p.length;v<I;v++){var L=!1,C=!1;l=p[v];k=l.name;m=T(l.value);l=va(k);if(t=ia.test(l))k=k.replace(Yc,"").substr(8).replace(/_(.)/g,function(a,b){return b.toUpperCase()});(l=l.match(ja))&&fa(l[1])&&(L=k,C=k.substr(0,k.length-
5)+"end",k=k.substr(0,k.length-6));l=va(k.toLowerCase());h[l]=k;if(t||!c.hasOwnProperty(l))c[l]=m,Rc(a,l)&&(c[l]=!0);P(a,b,m,l,t);u(b,l,"A",d,e,L,C)}a=a.className;G(a)&&(a=a.animVal);if(F(a)&&""!==a)for(;k=g.exec(a);)l=va(k[2]),u(b,l,"C",d,e)&&(c[l]=T(k[3])),a=a.substr(k.index+k[0].length);break;case Na:if(11===Ha)for(;a.parentNode&&a.nextSibling&&a.nextSibling.nodeType===Na;)a.nodeValue+=a.nextSibling.nodeValue,a.parentNode.removeChild(a.nextSibling);J(b,a.nodeValue);break;case 8:try{if(k=f.exec(a.nodeValue))l=
va(k[1]),u(b,l,"M",d,e)&&(c[l]=T(k[2]))}catch(X){}}b.sort(wa);return b}function U(a,b,c){var d=[],e=0;if(b&&a.hasAttribute&&a.hasAttribute(b)){do{if(!a)throw ga("uterdir",b,c);1==a.nodeType&&(a.hasAttribute(b)&&e++,a.hasAttribute(c)&&e--);d.push(a);a=a.nextSibling}while(0<e)}else d.push(a);return A(d)}function Ta(a,b,c){return function(d,e,f,g,h){e=U(e[0],b,c);return a(d,e,f,g,h)}}function s(a,b,d,e,f,g,h,l,m){function t(a,b,c,d){if(a){c&&(a=Ta(a,c,d));a.require=q.require;a.directiveName=z;if(O===
q||q.$$isolateScope)a=ba(a,{isolateScope:!0});h.push(a)}if(b){c&&(b=Ta(b,c,d));b.require=q.require;b.directiveName=z;if(O===q||q.$$isolateScope)b=ba(b,{isolateScope:!0});l.push(b)}}function p(a,b,c,d){var e;if(F(b)){var f=b.match(k);b=b.substring(f[0].length);var g=f[1]||f[3],f="?"===f[2];"^^"===g?c=c.parent():e=(e=d&&d[b])&&e.instance;e||(d="$"+b+"Controller",e=g?c.inheritedData(d):c.data(d));if(!e&&!f)throw ga("ctreq",b,a);}else if(E(b))for(e=[],g=0,f=b.length;g<f;g++)e[g]=p(a,b[g],c,d);return e||
null}function v(a,b,c,d,e,f){var g=ea(),h;for(h in d){var k=d[h],l={$scope:k===O||k.$$isolateScope?e:f,$element:a,$attrs:b,$transclude:c},m=k.controller;"@"==m&&(m=b[k.name]);l=x(m,l,!0,k.controllerAs);g[k.name]=l;hb||a.data("$"+k.name+"Controller",l.instance)}return g}function I(a,c,e,f,g){function k(a,b,c){var d;Za(a)||(c=b,b=a,a=w);hb&&(d=X);c||(c=hb?x.parent():x);return g(a,b,d,c,Ta)}var m,t,L,X,y,x,U;b===e?(f=d,x=d.$$element):(x=A(e),f=new aa(x,d));L=c;O?t=c.$new(!0):C&&(L=c.$parent);g&&(y=k,
y.$$boundTransclude=g);R&&(X=v(x,f,y,R,t,c));O&&(D.$$addScopeInfo(x,t,!0,!(n&&(n===O||n===O.$$originalDirective))),D.$$addScopeClass(x,!0),t.$$isolateBindings=O.$$isolateBindings,(U=Z(c,f,t,t.$$isolateBindings,O))&&t.$on("$destroy",U));for(var Xc in X){U=R[Xc];var Y=X[Xc],H=U.$$bindings.bindToController;Y.identifier&&H&&(m=Z(L,f,Y.instance,H,U));var q=Y();q!==Y.instance&&(Y.instance=q,x.data("$"+U.name+"Controller",q),m&&m(),m=Z(L,f,Y.instance,H,U))}fa=0;for(K=h.length;fa<K;fa++)m=h[fa],ca(m,m.isolateScope?
t:c,x,f,m.require&&p(m.directiveName,m.require,x,X),y);var Ta=c;O&&(O.template||null===O.templateUrl)&&(Ta=t);a&&a(Ta,e.childNodes,w,g);for(fa=l.length-1;0<=fa;fa--)m=l[fa],ca(m,m.isolateScope?t:c,x,f,m.require&&p(m.directiveName,m.require,x,X),y)}m=m||{};for(var L=-Number.MAX_VALUE,C=m.newScopeDirective,R=m.controllerDirectives,O=m.newIsolateScopeDirective,n=m.templateDirective,Y=m.nonTlbTranscludeDirective,H=!1,la=!1,hb=m.hasElementTranscludeDirective,u=d.$$element=A(b),q,z,J,ib=e,wa,fa=0,K=a.length;fa<
K;fa++){q=a[fa];var N=q.$$start,P=q.$$end;N&&(u=U(b,N,P));J=w;if(L>q.priority)break;if(J=q.scope)q.templateUrl||(G(J)?(Ua("new/isolated scope",O||C,q,u),O=q):Ua("new/isolated scope",O,q,u)),C=C||q;z=q.name;!q.templateUrl&&q.controller&&(J=q.controller,R=R||ea(),Ua("'"+z+"' controller",R[z],q,u),R[z]=q);if(J=q.transclude)H=!0,q.$$tlb||(Ua("transclusion",Y,q,u),Y=q),"element"==J?(hb=!0,L=q.priority,J=u,u=d.$$element=A(W.createComment(" "+z+": "+d[z]+" ")),b=u[0],V(f,sa.call(J,0),b),ib=D(J,e,L,g&&g.name,
{nonTlbTranscludeDirective:Y})):(J=A(Xb(b)).contents(),u.empty(),ib=D(J,e,w,w,{needsNewScope:q.$$isolateScope||q.$$newScope}));if(q.template)if(la=!0,Ua("template",n,q,u),n=q,J=B(q.template)?q.template(u,d):q.template,J=ha(J),q.replace){g=q;J=Vb.test(J)?Zc(Q(q.templateNamespace,T(J))):[];b=J[0];if(1!=J.length||1!==b.nodeType)throw ga("tplrt",z,"");V(f,u,b);J={$attr:{}};var Eb=X(b,[],J),$=a.splice(fa+1,a.length-(fa+1));(O||C)&&Wc(Eb,O,C);a=a.concat(Eb).concat($);M(d,J);K=a.length}else u.html(J);if(q.templateUrl)la=
!0,Ua("template",n,q,u),n=q,q.replace&&(g=q),I=S(a.splice(fa,a.length-fa),u,d,f,H&&ib,h,l,{controllerDirectives:R,newScopeDirective:C!==q&&C,newIsolateScopeDirective:O,templateDirective:n,nonTlbTranscludeDirective:Y}),K=a.length;else if(q.compile)try{wa=q.compile(u,d,ib),B(wa)?t(null,wa,N,P):wa&&t(wa.pre,wa.post,N,P)}catch(da){c(da,ua(u))}q.terminal&&(I.terminal=!0,L=Math.max(L,q.priority))}I.scope=C&&!0===C.scope;I.transcludeOnThisElement=H;I.templateOnThisElement=la;I.transclude=ib;m.hasElementTranscludeDirective=
hb;return I}function Wc(a,b,c){for(var d=0,e=a.length;d<e;d++)a[d]=Qb(a[d],{$$isolateScope:b,$$newScope:c})}function u(b,d,f,g,h,k,l){if(d===h)return null;h=null;if(e.hasOwnProperty(d)){var m;d=a.get(d+"Directive");for(var p=0,v=d.length;p<v;p++)try{m=d[p],(q(g)||g>m.priority)&&-1!=m.restrict.indexOf(f)&&(k&&(m=Qb(m,{$$start:k,$$end:l})),b.push(m),h=m)}catch(I){c(I)}}return h}function fa(b){if(e.hasOwnProperty(b))for(var c=a.get(b+"Directive"),d=0,f=c.length;d<f;d++)if(b=c[d],b.multiElement)return!0;
return!1}function M(a,b){var c=b.$attr,d=a.$attr,e=a.$$element;n(a,function(d,e){"$"!=e.charAt(0)&&(b[e]&&b[e]!==d&&(d+=("style"===e?";":" ")+b[e]),a.$set(e,d,!0,c[e]))});n(b,function(b,f){"class"==f?(I(e,b),a["class"]=(a["class"]?a["class"]+" ":"")+b):"style"==f?(e.attr("style",e.attr("style")+";"+b),a.style=(a.style?a.style+";":"")+b):"$"==f.charAt(0)||a.hasOwnProperty(f)||(a[f]=b,d[f]=c[f])})}function S(a,b,c,e,f,g,h,k){var l=[],m,t,p=b[0],v=a.shift(),C=Qb(v,{templateUrl:null,transclude:null,replace:null,
$$originalDirective:v}),x=B(v.templateUrl)?v.templateUrl(b,c):v.templateUrl,y=v.templateNamespace;b.empty();d(x).then(function(d){var R,D;d=ha(d);if(v.replace){d=Vb.test(d)?Zc(Q(y,T(d))):[];R=d[0];if(1!=d.length||1!==R.nodeType)throw ga("tplrt",v.name,x);d={$attr:{}};V(e,b,R);var U=X(R,[],d);G(v.scope)&&Wc(U,!0);a=U.concat(a);M(c,d)}else R=p,b.html(d);a.unshift(C);m=s(a,R,c,f,b,v,g,h,k);n(e,function(a,c){a==R&&(e[c]=b[0])});for(t=L(b[0].childNodes,f);l.length;){d=l.shift();D=l.shift();var Y=l.shift(),
H=l.shift(),U=b[0];if(!d.$$destroyed){if(D!==p){var q=D.className;k.hasElementTranscludeDirective&&v.replace||(U=Xb(R));V(Y,A(D),U);I(A(U),q)}D=m.transcludeOnThisElement?O(d,m.transclude,H):H;m(t,d,U,e,D)}}l=null});return function(a,b,c,d,e){a=e;b.$$destroyed||(l?l.push(b,c,d,a):(m.transcludeOnThisElement&&(a=O(b,m.transclude,e)),m(t,b,c,d,a)))}}function wa(a,b){var c=b.priority-a.priority;return 0!==c?c:a.name!==b.name?a.name<b.name?-1:1:a.index-b.index}function Ua(a,b,c,d){function e(a){return a?
" (module: "+a+")":""}if(b)throw ga("multidir",b.name,e(b.$$moduleName),c.name,e(c.$$moduleName),a,ua(d));}function J(a,c){var d=b(c,!0);d&&a.push({priority:0,compile:function(a){a=a.parent();var b=!!a.length;b&&D.$$addBindingClass(a);return function(a,c){var e=c.parent();b||D.$$addBindingClass(e);D.$$addBindingInfo(e,d.expressions);a.$watch(d,function(a){c[0].nodeValue=a})}}})}function Q(a,b){a=K(a||"html");switch(a){case "svg":case "math":var c=W.createElement("div");c.innerHTML="<"+a+">"+b+"</"+
a+">";return c.childNodes[0].childNodes;default:return b}}function Eb(a,b){if("srcdoc"==b)return Y.HTML;var c=oa(a);if("xlinkHref"==b||"form"==c&&"action"==b||"img"!=c&&("src"==b||"ngSrc"==b))return Y.RESOURCE_URL}function P(a,c,d,e,f){var g=Eb(a,e);f=h[e]||f;var k=b(d,!0,g,f);if(k){if("multiple"===e&&"select"===oa(a))throw ga("selmulti",ua(a));c.push({priority:100,compile:function(){return{pre:function(a,c,h){c=h.$$observers||(h.$$observers=ea());if(l.test(e))throw ga("nodomevents");var m=h[e];m!==
d&&(k=m&&b(m,!0,g,f),d=m);k&&(h[e]=k(a),(c[e]||(c[e]=[])).$$inter=!0,(h.$$observers&&h.$$observers[e].$$scope||a).$watch(k,function(a,b){"class"===e&&a!=b?h.$updateClass(a,b):h.$set(e,a)}))}}}})}}function V(a,b,c){var d=b[0],e=b.length,f=d.parentNode,g,h;if(a)for(g=0,h=a.length;g<h;g++)if(a[g]==d){a[g++]=c;h=g+e-1;for(var k=a.length;g<k;g++,h++)h<k?a[g]=a[h]:delete a[g];a.length-=e-1;a.context===d&&(a.context=c);break}f&&f.replaceChild(c,d);a=W.createDocumentFragment();a.appendChild(d);A.hasData(d)&&
(A.data(c,A.data(d)),pa?(Tb=!0,pa.cleanData([d])):delete A.cache[d[A.expando]]);d=1;for(e=b.length;d<e;d++)f=b[d],A(f).remove(),a.appendChild(f),delete b[d];b[0]=c;b.length=1}function ba(a,b){return N(function(){return a.apply(null,arguments)},a,b)}function ca(a,b,d,e,f,g){try{a(b,d,e,f,g)}catch(h){c(h,ua(d))}}function Z(a,c,d,e,f){var g=[];n(e,function(e,h){var k=e.attrName,l=e.optional,m,t,v,I;switch(e.mode){case "@":l||ra.call(c,k)||(d[h]=c[k]=void 0);c.$observe(k,function(a){F(a)&&(d[h]=a)});
c.$$observers[k].$$scope=a;F(c[k])&&(d[h]=b(c[k])(a));break;case "=":if(!ra.call(c,k)){if(l)break;c[k]=void 0}if(l&&!c[k])break;t=p(c[k]);I=t.literal?ka:function(a,b){return a===b||a!==a&&b!==b};v=t.assign||function(){m=d[h]=t(a);throw ga("nonassign",c[k],f.name);};m=d[h]=t(a);l=function(b){I(b,d[h])||(I(b,m)?v(a,b=d[h]):d[h]=b);return m=b};l.$stateful=!0;l=e.collection?a.$watchCollection(c[k],l):a.$watch(p(c[k],l),null,t.literal);g.push(l);break;case "&":t=c.hasOwnProperty(k)?p(c[k]):z;if(t===z&&
l)break;d[h]=function(b){return t(a,b)}}});return g.length&&function(){for(var a=0,b=g.length;a<b;++a)g[a]()}}var aa=function(a,b){if(b){var c=Object.keys(b),d,e,f;d=0;for(e=c.length;d<e;d++)f=c[d],this[f]=b[f]}else this.$attr={};this.$$element=a};aa.prototype={$normalize:va,$addClass:function(a){a&&0<a.length&&H.addClass(this.$$element,a)},$removeClass:function(a){a&&0<a.length&&H.removeClass(this.$$element,a)},$updateClass:function(a,b){var c=$c(a,b);c&&c.length&&H.addClass(this.$$element,c);(c=
$c(b,a))&&c.length&&H.removeClass(this.$$element,c)},$set:function(a,b,d,e){var f=Rc(this.$$element[0],a),g=ad[a],h=a;f?(this.$$element.prop(a,b),e=f):g&&(this[g]=b,h=g);this[a]=b;e?this.$attr[a]=e:(e=this.$attr[a])||(this.$attr[a]=e=Ac(a,"-"));f=oa(this.$$element);if("a"===f&&"href"===a||"img"===f&&"src"===a)this[a]=b=la(b,"src"===a);else if("img"===f&&"srcset"===a){for(var f="",g=T(b),k=/(\s+\d+x\s*,|\s+\d+w\s*,|\s+,|,\s+)/,k=/\s/.test(g)?k:/(,)/,g=g.split(k),k=Math.floor(g.length/2),l=0;l<k;l++)var m=
2*l,f=f+la(T(g[m]),!0),f=f+(" "+T(g[m+1]));g=T(g[2*l]).split(/\s/);f+=la(T(g[0]),!0);2===g.length&&(f+=" "+T(g[1]));this[a]=b=f}!1!==d&&(null===b||q(b)?this.$$element.removeAttr(e):this.$$element.attr(e,b));(a=this.$$observers)&&n(a[h],function(a){try{a(b)}catch(d){c(d)}})},$observe:function(a,b){var c=this,d=c.$$observers||(c.$$observers=ea()),e=d[a]||(d[a]=[]);e.push(b);v.$evalAsync(function(){e.$$inter||!c.hasOwnProperty(a)||q(c[a])||b(c[a])});return function(){ab(e,b)}}};var $=b.startSymbol(),
da=b.endSymbol(),ha="{{"==$||"}}"==da?Ya:function(a){return a.replace(/\{\{/g,$).replace(/}}/g,da)},ia=/^ngAttr[A-Z]/,ja=/^(.+)Start$/;D.$$addBindingInfo=m?function(a,b){var c=a.data("$binding")||[];E(b)?c=c.concat(b):c.push(b);a.data("$binding",c)}:z;D.$$addBindingClass=m?function(a){I(a,"ng-binding")}:z;D.$$addScopeInfo=m?function(a,b,c,d){a.data(c?d?"$isolateScopeNoTemplate":"$isolateScope":"$scope",b)}:z;D.$$addScopeClass=m?function(a,b){I(a,b?"ng-isolate-scope":"ng-scope")}:z;return D}]}function va(a){return eb(a.replace(Yc,
""))}function $c(a,b){var d="",c=a.split(/\s+/),e=b.split(/\s+/),f=0;a:for(;f<c.length;f++){for(var g=c[f],h=0;h<e.length;h++)if(g==e[h])continue a;d+=(0<d.length?" ":"")+g}return d}function Zc(a){a=A(a);var b=a.length;if(1>=b)return a;for(;b--;)8===a[b].nodeType&&Uf.call(a,b,1);return a}function cf(){var a={},b=!1;this.register=function(b,c){Ra(b,"controller");G(b)?N(a,b):a[b]=c};this.allowGlobals=function(){b=!0};this.$get=["$injector","$window",function(d,c){function e(a,b,c,d){if(!a||!G(a.$scope))throw M("$controller")("noscp",
d,b);a.$scope[b]=c}return function(f,g,h,k){var l,m,r;h=!0===h;k&&F(k)&&(r=k);if(F(f)){k=f.match(Vc);if(!k)throw Vf("ctrlfmt",f);m=k[1];r=r||k[3];f=a.hasOwnProperty(m)?a[m]:Cc(g.$scope,m,!0)||(b?Cc(c,m,!0):w);Qa(f,m,!0)}if(h)return h=(E(f)?f[f.length-1]:f).prototype,l=Object.create(h||null),r&&e(g,r,l,m||f.name),N(function(){var a=d.invoke(f,l,g,m);a!==l&&(G(a)||B(a))&&(l=a,r&&e(g,r,l,m||f.name));return l},{instance:l,identifier:r});l=d.instantiate(f,g,m);r&&e(g,r,l,m||f.name);return l}}]}function df(){this.$get=
["$window",function(a){return A(a.document)}]}function ef(){this.$get=["$log",function(a){return function(b,d){a.error.apply(a,arguments)}}]}function $b(a){return G(a)?da(a)?a.toISOString():cb(a):a}function kf(){this.$get=function(){return function(a){if(!a)return"";var b=[];pc(a,function(a,c){null===a||q(a)||(E(a)?n(a,function(a,d){b.push(ia(c)+"="+ia($b(a)))}):b.push(ia(c)+"="+ia($b(a))))});return b.join("&")}}}function lf(){this.$get=function(){return function(a){function b(a,e,f){null===a||q(a)||
(E(a)?n(a,function(a,c){b(a,e+"["+(G(a)?c:"")+"]")}):G(a)&&!da(a)?pc(a,function(a,c){b(a,e+(f?"":"[")+c+(f?"":"]"))}):d.push(ia(e)+"="+ia($b(a))))}if(!a)return"";var d=[];b(a,"",!0);return d.join("&")}}}function ac(a,b){if(F(a)){var d=a.replace(Wf,"").trim();if(d){var c=b("Content-Type");(c=c&&0===c.indexOf(bd))||(c=(c=d.match(Xf))&&Yf[c[0]].test(d));c&&(a=vc(d))}}return a}function cd(a){var b=ea(),d;F(a)?n(a.split("\n"),function(a){d=a.indexOf(":");var e=K(T(a.substr(0,d)));a=T(a.substr(d+1));e&&
(b[e]=b[e]?b[e]+", "+a:a)}):G(a)&&n(a,function(a,d){var f=K(d),g=T(a);f&&(b[f]=b[f]?b[f]+", "+g:g)});return b}function dd(a){var b;return function(d){b||(b=cd(a));return d?(d=b[K(d)],void 0===d&&(d=null),d):b}}function ed(a,b,d,c){if(B(c))return c(a,b,d);n(c,function(c){a=c(a,b,d)});return a}function jf(){var a=this.defaults={transformResponse:[ac],transformRequest:[function(a){return G(a)&&"[object File]"!==ta.call(a)&&"[object Blob]"!==ta.call(a)&&"[object FormData]"!==ta.call(a)?cb(a):a}],headers:{common:{Accept:"application/json, text/plain, */*"},
post:ha(bc),put:ha(bc),patch:ha(bc)},xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",paramSerializer:"$httpParamSerializer"},b=!1;this.useApplyAsync=function(a){return u(a)?(b=!!a,this):b};var d=!0;this.useLegacyPromiseExtensions=function(a){return u(a)?(d=!!a,this):d};var c=this.interceptors=[];this.$get=["$httpBackend","$$cookieReader","$cacheFactory","$rootScope","$q","$injector",function(e,f,g,h,k,l){function m(b){function c(a){var b=N({},a);b.data=ed(a.data,a.headers,a.status,f.transformResponse);
a=a.status;return 200<=a&&300>a?b:k.reject(b)}function e(a,b){var c,d={};n(a,function(a,e){B(a)?(c=a(b),null!=c&&(d[e]=c)):d[e]=a});return d}if(!$.isObject(b))throw M("$http")("badreq",b);if(!F(b.url))throw M("$http")("badreq",b.url);var f=N({method:"get",transformRequest:a.transformRequest,transformResponse:a.transformResponse,paramSerializer:a.paramSerializer},b);f.headers=function(b){var c=a.headers,d=N({},b.headers),f,g,h,c=N({},c.common,c[K(b.method)]);a:for(f in c){g=K(f);for(h in d)if(K(h)===
g)continue a;d[f]=c[f]}return e(d,ha(b))}(b);f.method=tb(f.method);f.paramSerializer=F(f.paramSerializer)?l.get(f.paramSerializer):f.paramSerializer;var g=[function(b){var d=b.headers,e=ed(b.data,dd(d),w,b.transformRequest);q(e)&&n(d,function(a,b){"content-type"===K(b)&&delete d[b]});q(b.withCredentials)&&!q(a.withCredentials)&&(b.withCredentials=a.withCredentials);return r(b,e).then(c,c)},w],h=k.when(f);for(n(y,function(a){(a.request||a.requestError)&&g.unshift(a.request,a.requestError);(a.response||
a.responseError)&&g.push(a.response,a.responseError)});g.length;){b=g.shift();var m=g.shift(),h=h.then(b,m)}d?(h.success=function(a){Qa(a,"fn");h.then(function(b){a(b.data,b.status,b.headers,f)});return h},h.error=function(a){Qa(a,"fn");h.then(null,function(b){a(b.data,b.status,b.headers,f)});return h}):(h.success=fd("success"),h.error=fd("error"));return h}function r(c,d){function g(a,c,d,e){function f(){l(c,a,d,e)}D&&(200<=a&&300>a?D.put(X,[a,c,cd(d),e]):D.remove(X));b?h.$applyAsync(f):(f(),h.$$phase||
h.$apply())}function l(a,b,d,e){b=-1<=b?b:0;(200<=b&&300>b?n.resolve:n.reject)({data:a,status:b,headers:dd(d),config:c,statusText:e})}function r(a){l(a.data,a.status,ha(a.headers()),a.statusText)}function y(){var a=m.pendingRequests.indexOf(c);-1!==a&&m.pendingRequests.splice(a,1)}var n=k.defer(),I=n.promise,D,L,O=c.headers,X=t(c.url,c.paramSerializer(c.params));m.pendingRequests.push(c);I.then(y,y);!c.cache&&!a.cache||!1===c.cache||"GET"!==c.method&&"JSONP"!==c.method||(D=G(c.cache)?c.cache:G(a.cache)?
a.cache:C);D&&(L=D.get(X),u(L)?L&&B(L.then)?L.then(r,r):E(L)?l(L[1],L[0],ha(L[2]),L[3]):l(L,200,{},"OK"):D.put(X,I));q(L)&&((L=gd(c.url)?f()[c.xsrfCookieName||a.xsrfCookieName]:w)&&(O[c.xsrfHeaderName||a.xsrfHeaderName]=L),e(c.method,X,d,g,O,c.timeout,c.withCredentials,c.responseType));return I}function t(a,b){0<b.length&&(a+=(-1==a.indexOf("?")?"?":"&")+b);return a}var C=g("$http");a.paramSerializer=F(a.paramSerializer)?l.get(a.paramSerializer):a.paramSerializer;var y=[];n(c,function(a){y.unshift(F(a)?
l.get(a):l.invoke(a))});m.pendingRequests=[];(function(a){n(arguments,function(a){m[a]=function(b,c){return m(N({},c||{},{method:a,url:b}))}})})("get","delete","head","jsonp");(function(a){n(arguments,function(a){m[a]=function(b,c,d){return m(N({},d||{},{method:a,url:b,data:c}))}})})("post","put","patch");m.defaults=a;return m}]}function nf(){this.$get=function(){return function(){return new S.XMLHttpRequest}}}function mf(){this.$get=["$browser","$window","$document","$xhrFactory",function(a,b,d,
c){return Zf(a,c,a.defer,b.angular.callbacks,d[0])}]}function Zf(a,b,d,c,e){function f(a,b,d){var f=e.createElement("script"),m=null;f.type="text/javascript";f.src=a;f.async=!0;m=function(a){f.removeEventListener("load",m,!1);f.removeEventListener("error",m,!1);e.body.removeChild(f);f=null;var g=-1,C="unknown";a&&("load"!==a.type||c[b].called||(a={type:"error"}),C=a.type,g="error"===a.type?404:200);d&&d(g,C)};f.addEventListener("load",m,!1);f.addEventListener("error",m,!1);e.body.appendChild(f);return m}
return function(e,h,k,l,m,r,t,C){function y(){x&&x();v&&v.abort()}function R(b,c,e,f,g){u(H)&&d.cancel(H);x=v=null;b(c,e,f,g);a.$$completeOutstandingRequest(z)}a.$$incOutstandingRequestCount();h=h||a.url();if("jsonp"==K(e)){var p="_"+(c.counter++).toString(36);c[p]=function(a){c[p].data=a;c[p].called=!0};var x=f(h.replace("JSON_CALLBACK","angular.callbacks."+p),p,function(a,b){R(l,a,c[p].data,"",b);c[p]=z})}else{var v=b(e,h);v.open(e,h,!0);n(m,function(a,b){u(a)&&v.setRequestHeader(b,a)});v.onload=
function(){var a=v.statusText||"",b="response"in v?v.response:v.responseText,c=1223===v.status?204:v.status;0===c&&(c=b?200:"file"==xa(h).protocol?404:0);R(l,c,b,v.getAllResponseHeaders(),a)};e=function(){R(l,-1,null,null,"")};v.onerror=e;v.onabort=e;t&&(v.withCredentials=!0);if(C)try{v.responseType=C}catch(Y){if("json"!==C)throw Y;}v.send(q(k)?null:k)}if(0<r)var H=d(y,r);else r&&B(r.then)&&r.then(y)}}function gf(){var a="{{",b="}}";this.startSymbol=function(b){return b?(a=b,this):a};this.endSymbol=
function(a){return a?(b=a,this):b};this.$get=["$parse","$exceptionHandler","$sce",function(d,c,e){function f(a){return"\\\\\\"+a}function g(c){return c.replace(m,a).replace(r,b)}function h(f,h,m,r){function p(a){try{var b=a;a=m?e.getTrusted(m,b):e.valueOf(b);var d;if(r&&!u(a))d=a;else if(null==a)d="";else{switch(typeof a){case "string":break;case "number":a=""+a;break;default:a=cb(a)}d=a}return d}catch(g){c(Ia.interr(f,g))}}r=!!r;for(var x,v,n=0,H=[],s=[],I=f.length,D=[],L=[];n<I;)if(-1!=(x=f.indexOf(a,
n))&&-1!=(v=f.indexOf(b,x+k)))n!==x&&D.push(g(f.substring(n,x))),n=f.substring(x+k,v),H.push(n),s.push(d(n,p)),n=v+l,L.push(D.length),D.push("");else{n!==I&&D.push(g(f.substring(n)));break}m&&1<D.length&&Ia.throwNoconcat(f);if(!h||H.length){var O=function(a){for(var b=0,c=H.length;b<c;b++){if(r&&q(a[b]))return;D[L[b]]=a[b]}return D.join("")};return N(function(a){var b=0,d=H.length,e=Array(d);try{for(;b<d;b++)e[b]=s[b](a);return O(e)}catch(g){c(Ia.interr(f,g))}},{exp:f,expressions:H,$$watchDelegate:function(a,
b){var c;return a.$watchGroup(s,function(d,e){var f=O(d);B(b)&&b.call(this,f,d!==e?c:f,a);c=f})}})}}var k=a.length,l=b.length,m=new RegExp(a.replace(/./g,f),"g"),r=new RegExp(b.replace(/./g,f),"g");h.startSymbol=function(){return a};h.endSymbol=function(){return b};return h}]}function hf(){this.$get=["$rootScope","$window","$q","$$q",function(a,b,d,c){function e(e,h,k,l){var m=4<arguments.length,r=m?sa.call(arguments,4):[],t=b.setInterval,C=b.clearInterval,y=0,n=u(l)&&!l,p=(n?c:d).defer(),x=p.promise;
k=u(k)?k:0;x.then(null,null,m?function(){e.apply(null,r)}:e);x.$$intervalId=t(function(){p.notify(y++);0<k&&y>=k&&(p.resolve(y),C(x.$$intervalId),delete f[x.$$intervalId]);n||a.$apply()},h);f[x.$$intervalId]=p;return x}var f={};e.cancel=function(a){return a&&a.$$intervalId in f?(f[a.$$intervalId].reject("canceled"),b.clearInterval(a.$$intervalId),delete f[a.$$intervalId],!0):!1};return e}]}function cc(a){a=a.split("/");for(var b=a.length;b--;)a[b]=pb(a[b]);return a.join("/")}function hd(a,b){var d=
xa(a);b.$$protocol=d.protocol;b.$$host=d.hostname;b.$$port=Z(d.port)||$f[d.protocol]||null}function id(a,b){var d="/"!==a.charAt(0);d&&(a="/"+a);var c=xa(a);b.$$path=decodeURIComponent(d&&"/"===c.pathname.charAt(0)?c.pathname.substring(1):c.pathname);b.$$search=yc(c.search);b.$$hash=decodeURIComponent(c.hash);b.$$path&&"/"!=b.$$path.charAt(0)&&(b.$$path="/"+b.$$path)}function qa(a,b){if(0===b.indexOf(a))return b.substr(a.length)}function Ga(a){var b=a.indexOf("#");return-1==b?a:a.substr(0,b)}function jb(a){return a.replace(/(#.+)|#$/,
"$1")}function dc(a,b,d){this.$$html5=!0;d=d||"";hd(a,this);this.$$parse=function(a){var d=qa(b,a);if(!F(d))throw Fb("ipthprfx",a,b);id(d,this);this.$$path||(this.$$path="/");this.$$compose()};this.$$compose=function(){var a=Sb(this.$$search),d=this.$$hash?"#"+pb(this.$$hash):"";this.$$url=cc(this.$$path)+(a?"?"+a:"")+d;this.$$absUrl=b+this.$$url.substr(1)};this.$$parseLinkUrl=function(c,e){if(e&&"#"===e[0])return this.hash(e.slice(1)),!0;var f,g;u(f=qa(a,c))?(g=f,g=u(f=qa(d,f))?b+(qa("/",f)||f):
a+g):u(f=qa(b,c))?g=b+f:b==c+"/"&&(g=b);g&&this.$$parse(g);return!!g}}function ec(a,b,d){hd(a,this);this.$$parse=function(c){var e=qa(a,c)||qa(b,c),f;q(e)||"#"!==e.charAt(0)?this.$$html5?f=e:(f="",q(e)&&(a=c,this.replace())):(f=qa(d,e),q(f)&&(f=e));id(f,this);c=this.$$path;var e=a,g=/^\/[A-Z]:(\/.*)/;0===f.indexOf(e)&&(f=f.replace(e,""));g.exec(f)||(c=(f=g.exec(c))?f[1]:c);this.$$path=c;this.$$compose()};this.$$compose=function(){var b=Sb(this.$$search),e=this.$$hash?"#"+pb(this.$$hash):"";this.$$url=
cc(this.$$path)+(b?"?"+b:"")+e;this.$$absUrl=a+(this.$$url?d+this.$$url:"")};this.$$parseLinkUrl=function(b,d){return Ga(a)==Ga(b)?(this.$$parse(b),!0):!1}}function jd(a,b,d){this.$$html5=!0;ec.apply(this,arguments);this.$$parseLinkUrl=function(c,e){if(e&&"#"===e[0])return this.hash(e.slice(1)),!0;var f,g;a==Ga(c)?f=c:(g=qa(b,c))?f=a+d+g:b===c+"/"&&(f=b);f&&this.$$parse(f);return!!f};this.$$compose=function(){var b=Sb(this.$$search),e=this.$$hash?"#"+pb(this.$$hash):"";this.$$url=cc(this.$$path)+
(b?"?"+b:"")+e;this.$$absUrl=a+d+this.$$url}}function Gb(a){return function(){return this[a]}}function kd(a,b){return function(d){if(q(d))return this[a];this[a]=b(d);this.$$compose();return this}}function of(){var a="",b={enabled:!1,requireBase:!0,rewriteLinks:!0};this.hashPrefix=function(b){return u(b)?(a=b,this):a};this.html5Mode=function(a){return $a(a)?(b.enabled=a,this):G(a)?($a(a.enabled)&&(b.enabled=a.enabled),$a(a.requireBase)&&(b.requireBase=a.requireBase),$a(a.rewriteLinks)&&(b.rewriteLinks=
a.rewriteLinks),this):b};this.$get=["$rootScope","$browser","$sniffer","$rootElement","$window",function(d,c,e,f,g){function h(a,b,d){var e=l.url(),f=l.$$state;try{c.url(a,b,d),l.$$state=c.state()}catch(g){throw l.url(e),l.$$state=f,g;}}function k(a,b){d.$broadcast("$locationChangeSuccess",l.absUrl(),a,l.$$state,b)}var l,m;m=c.baseHref();var r=c.url(),t;if(b.enabled){if(!m&&b.requireBase)throw Fb("nobase");t=r.substring(0,r.indexOf("/",r.indexOf("//")+2))+(m||"/");m=e.history?dc:jd}else t=Ga(r),m=
ec;var C=t.substr(0,Ga(t).lastIndexOf("/")+1);l=new m(t,C,"#"+a);l.$$parseLinkUrl(r,r);l.$$state=c.state();var y=/^\s*(javascript|mailto):/i;f.on("click",function(a){if(b.rewriteLinks&&!a.ctrlKey&&!a.metaKey&&!a.shiftKey&&2!=a.which&&2!=a.button){for(var e=A(a.target);"a"!==oa(e[0]);)if(e[0]===f[0]||!(e=e.parent())[0])return;var h=e.prop("href"),k=e.attr("href")||e.attr("xlink:href");G(h)&&"[object SVGAnimatedString]"===h.toString()&&(h=xa(h.animVal).href);y.test(h)||!h||e.attr("target")||a.isDefaultPrevented()||
!l.$$parseLinkUrl(h,k)||(a.preventDefault(),l.absUrl()!=c.url()&&(d.$apply(),g.angular["ff-684208-preventDefault"]=!0))}});jb(l.absUrl())!=jb(r)&&c.url(l.absUrl(),!0);var n=!0;c.onUrlChange(function(a,b){q(qa(C,a))?g.location.href=a:(d.$evalAsync(function(){var c=l.absUrl(),e=l.$$state,f;a=jb(a);l.$$parse(a);l.$$state=b;f=d.$broadcast("$locationChangeStart",a,c,b,e).defaultPrevented;l.absUrl()===a&&(f?(l.$$parse(c),l.$$state=e,h(c,!1,e)):(n=!1,k(c,e)))}),d.$$phase||d.$digest())});d.$watch(function(){var a=
jb(c.url()),b=jb(l.absUrl()),f=c.state(),g=l.$$replace,m=a!==b||l.$$html5&&e.history&&f!==l.$$state;if(n||m)n=!1,d.$evalAsync(function(){var b=l.absUrl(),c=d.$broadcast("$locationChangeStart",b,a,l.$$state,f).defaultPrevented;l.absUrl()===b&&(c?(l.$$parse(a),l.$$state=f):(m&&h(b,g,f===l.$$state?null:l.$$state),k(a,f)))});l.$$replace=!1});return l}]}function pf(){var a=!0,b=this;this.debugEnabled=function(b){return u(b)?(a=b,this):a};this.$get=["$window",function(d){function c(a){a instanceof Error&&
(a.stack?a=a.message&&-1===a.stack.indexOf(a.message)?"Error: "+a.message+"\n"+a.stack:a.stack:a.sourceURL&&(a=a.message+"\n"+a.sourceURL+":"+a.line));return a}function e(a){var b=d.console||{},e=b[a]||b.log||z;a=!1;try{a=!!e.apply}catch(k){}return a?function(){var a=[];n(arguments,function(b){a.push(c(b))});return e.apply(b,a)}:function(a,b){e(a,null==b?"":b)}}return{log:e("log"),info:e("info"),warn:e("warn"),error:e("error"),debug:function(){var c=e("debug");return function(){a&&c.apply(b,arguments)}}()}}]}
function Va(a,b){if("__defineGetter__"===a||"__defineSetter__"===a||"__lookupGetter__"===a||"__lookupSetter__"===a||"__proto__"===a)throw aa("isecfld",b);return a}function ld(a,b){a+="";if(!F(a))throw aa("iseccst",b);return a}function ya(a,b){if(a){if(a.constructor===a)throw aa("isecfn",b);if(a.window===a)throw aa("isecwindow",b);if(a.children&&(a.nodeName||a.prop&&a.attr&&a.find))throw aa("isecdom",b);if(a===Object)throw aa("isecobj",b);}return a}function md(a,b){if(a){if(a.constructor===a)throw aa("isecfn",
b);if(a===ag||a===bg||a===cg)throw aa("isecff",b);}}function nd(a,b){if(a&&(a===(0).constructor||a===(!1).constructor||a==="".constructor||a==={}.constructor||a===[].constructor||a===Function.constructor))throw aa("isecaf",b);}function dg(a,b){return"undefined"!==typeof a?a:b}function od(a,b){return"undefined"===typeof a?b:"undefined"===typeof b?a:a+b}function V(a,b){var d,c;switch(a.type){case s.Program:d=!0;n(a.body,function(a){V(a.expression,b);d=d&&a.expression.constant});a.constant=d;break;case s.Literal:a.constant=
!0;a.toWatch=[];break;case s.UnaryExpression:V(a.argument,b);a.constant=a.argument.constant;a.toWatch=a.argument.toWatch;break;case s.BinaryExpression:V(a.left,b);V(a.right,b);a.constant=a.left.constant&&a.right.constant;a.toWatch=a.left.toWatch.concat(a.right.toWatch);break;case s.LogicalExpression:V(a.left,b);V(a.right,b);a.constant=a.left.constant&&a.right.constant;a.toWatch=a.constant?[]:[a];break;case s.ConditionalExpression:V(a.test,b);V(a.alternate,b);V(a.consequent,b);a.constant=a.test.constant&&
a.alternate.constant&&a.consequent.constant;a.toWatch=a.constant?[]:[a];break;case s.Identifier:a.constant=!1;a.toWatch=[a];break;case s.MemberExpression:V(a.object,b);a.computed&&V(a.property,b);a.constant=a.object.constant&&(!a.computed||a.property.constant);a.toWatch=[a];break;case s.CallExpression:d=a.filter?!b(a.callee.name).$stateful:!1;c=[];n(a.arguments,function(a){V(a,b);d=d&&a.constant;a.constant||c.push.apply(c,a.toWatch)});a.constant=d;a.toWatch=a.filter&&!b(a.callee.name).$stateful?c:
[a];break;case s.AssignmentExpression:V(a.left,b);V(a.right,b);a.constant=a.left.constant&&a.right.constant;a.toWatch=[a];break;case s.ArrayExpression:d=!0;c=[];n(a.elements,function(a){V(a,b);d=d&&a.constant;a.constant||c.push.apply(c,a.toWatch)});a.constant=d;a.toWatch=c;break;case s.ObjectExpression:d=!0;c=[];n(a.properties,function(a){V(a.value,b);d=d&&a.value.constant;a.value.constant||c.push.apply(c,a.value.toWatch)});a.constant=d;a.toWatch=c;break;case s.ThisExpression:a.constant=!1,a.toWatch=
[]}}function pd(a){if(1==a.length){a=a[0].expression;var b=a.toWatch;return 1!==b.length?b:b[0]!==a?b:w}}function qd(a){return a.type===s.Identifier||a.type===s.MemberExpression}function rd(a){if(1===a.body.length&&qd(a.body[0].expression))return{type:s.AssignmentExpression,left:a.body[0].expression,right:{type:s.NGValueParameter},operator:"="}}function sd(a){return 0===a.body.length||1===a.body.length&&(a.body[0].expression.type===s.Literal||a.body[0].expression.type===s.ArrayExpression||a.body[0].expression.type===
s.ObjectExpression)}function td(a,b){this.astBuilder=a;this.$filter=b}function ud(a,b){this.astBuilder=a;this.$filter=b}function Hb(a){return"constructor"==a}function fc(a){return B(a.valueOf)?a.valueOf():eg.call(a)}function qf(){var a=ea(),b=ea();this.$get=["$filter",function(d){function c(a,b){return null==a||null==b?a===b:"object"===typeof a&&(a=fc(a),"object"===typeof a)?!1:a===b||a!==a&&b!==b}function e(a,b,d,e,f){var g=e.inputs,h;if(1===g.length){var k=c,g=g[0];return a.$watch(function(a){var b=
g(a);c(b,k)||(h=e(a,w,w,[b]),k=b&&fc(b));return h},b,d,f)}for(var l=[],m=[],r=0,n=g.length;r<n;r++)l[r]=c,m[r]=null;return a.$watch(function(a){for(var b=!1,d=0,f=g.length;d<f;d++){var k=g[d](a);if(b||(b=!c(k,l[d])))m[d]=k,l[d]=k&&fc(k)}b&&(h=e(a,w,w,m));return h},b,d,f)}function f(a,b,c,d){var e,f;return e=a.$watch(function(a){return d(a)},function(a,c,d){f=a;B(b)&&b.apply(this,arguments);u(a)&&d.$$postDigest(function(){u(f)&&e()})},c)}function g(a,b,c,d){function e(a){var b=!0;n(a,function(a){u(a)||
(b=!1)});return b}var f,g;return f=a.$watch(function(a){return d(a)},function(a,c,d){g=a;B(b)&&b.call(this,a,c,d);e(a)&&d.$$postDigest(function(){e(g)&&f()})},c)}function h(a,b,c,d){var e;return e=a.$watch(function(a){return d(a)},function(a,c,d){B(b)&&b.apply(this,arguments);e()},c)}function k(a,b){if(!b)return a;var c=a.$$watchDelegate,d=!1,c=c!==g&&c!==f?function(c,e,f,g){f=d&&g?g[0]:a(c,e,f,g);return b(f,c,e)}:function(c,d,e,f){e=a(c,d,e,f);c=b(e,c,d);return u(e)?c:e};a.$$watchDelegate&&a.$$watchDelegate!==
e?c.$$watchDelegate=a.$$watchDelegate:b.$stateful||(c.$$watchDelegate=e,d=!a.inputs,c.inputs=a.inputs?a.inputs:[a]);return c}var l=Ca().noUnsafeEval,m={csp:l,expensiveChecks:!1},r={csp:l,expensiveChecks:!0};return function(c,l,y){var n,p,x;switch(typeof c){case "string":x=c=c.trim();var v=y?b:a;n=v[x];n||(":"===c.charAt(0)&&":"===c.charAt(1)&&(p=!0,c=c.substring(2)),y=y?r:m,n=new gc(y),n=(new hc(n,d,y)).parse(c),n.constant?n.$$watchDelegate=h:p?n.$$watchDelegate=n.literal?g:f:n.inputs&&(n.$$watchDelegate=
e),v[x]=n);return k(n,l);case "function":return k(c,l);default:return k(z,l)}}}]}function sf(){this.$get=["$rootScope","$exceptionHandler",function(a,b){return vd(function(b){a.$evalAsync(b)},b)}]}function tf(){this.$get=["$browser","$exceptionHandler",function(a,b){return vd(function(b){a.defer(b)},b)}]}function vd(a,b){function d(a,b,c){function d(b){return function(c){e||(e=!0,b.call(a,c))}}var e=!1;return[d(b),d(c)]}function c(){this.$$state={status:0}}function e(a,b){return function(c){b.call(a,
c)}}function f(c){!c.processScheduled&&c.pending&&(c.processScheduled=!0,a(function(){var a,d,e;e=c.pending;c.processScheduled=!1;c.pending=w;for(var f=0,g=e.length;f<g;++f){d=e[f][0];a=e[f][c.status];try{B(a)?d.resolve(a(c.value)):1===c.status?d.resolve(c.value):d.reject(c.value)}catch(h){d.reject(h),b(h)}}}))}function g(){this.promise=new c;this.resolve=e(this,this.resolve);this.reject=e(this,this.reject);this.notify=e(this,this.notify)}var h=M("$q",TypeError);N(c.prototype,{then:function(a,b,c){if(q(a)&&
q(b)&&q(c))return this;var d=new g;this.$$state.pending=this.$$state.pending||[];this.$$state.pending.push([d,a,b,c]);0<this.$$state.status&&f(this.$$state);return d.promise},"catch":function(a){return this.then(null,a)},"finally":function(a,b){return this.then(function(b){return l(b,!0,a)},function(b){return l(b,!1,a)},b)}});N(g.prototype,{resolve:function(a){this.promise.$$state.status||(a===this.promise?this.$$reject(h("qcycle",a)):this.$$resolve(a))},$$resolve:function(a){var c,e;e=d(this,this.$$resolve,
this.$$reject);try{if(G(a)||B(a))c=a&&a.then;B(c)?(this.promise.$$state.status=-1,c.call(a,e[0],e[1],this.notify)):(this.promise.$$state.value=a,this.promise.$$state.status=1,f(this.promise.$$state))}catch(g){e[1](g),b(g)}},reject:function(a){this.promise.$$state.status||this.$$reject(a)},$$reject:function(a){this.promise.$$state.value=a;this.promise.$$state.status=2;f(this.promise.$$state)},notify:function(c){var d=this.promise.$$state.pending;0>=this.promise.$$state.status&&d&&d.length&&a(function(){for(var a,
e,f=0,g=d.length;f<g;f++){e=d[f][0];a=d[f][3];try{e.notify(B(a)?a(c):c)}catch(h){b(h)}}})}});var k=function(a,b){var c=new g;b?c.resolve(a):c.reject(a);return c.promise},l=function(a,b,c){var d=null;try{B(c)&&(d=c())}catch(e){return k(e,!1)}return d&&B(d.then)?d.then(function(){return k(a,b)},function(a){return k(a,!1)}):k(a,b)},m=function(a,b,c,d){var e=new g;e.resolve(a);return e.promise.then(b,c,d)},r=function C(a){if(!B(a))throw h("norslvr",a);if(!(this instanceof C))return new C(a);var b=new g;
a(function(a){b.resolve(a)},function(a){b.reject(a)});return b.promise};r.defer=function(){return new g};r.reject=function(a){var b=new g;b.reject(a);return b.promise};r.when=m;r.resolve=m;r.all=function(a){var b=new g,c=0,d=E(a)?[]:{};n(a,function(a,e){c++;m(a).then(function(a){d.hasOwnProperty(e)||(d[e]=a,--c||b.resolve(d))},function(a){d.hasOwnProperty(e)||b.reject(a)})});0===c&&b.resolve(d);return b.promise};return r}function Cf(){this.$get=["$window","$timeout",function(a,b){var d=a.requestAnimationFrame||
a.webkitRequestAnimationFrame,c=a.cancelAnimationFrame||a.webkitCancelAnimationFrame||a.webkitCancelRequestAnimationFrame,e=!!d,f=e?function(a){var b=d(a);return function(){c(b)}}:function(a){var c=b(a,16.66,!1);return function(){b.cancel(c)}};f.supported=e;return f}]}function rf(){function a(a){function b(){this.$$watchers=this.$$nextSibling=this.$$childHead=this.$$childTail=null;this.$$listeners={};this.$$listenerCount={};this.$$watchersCount=0;this.$id=++ob;this.$$ChildScope=null}b.prototype=a;
return b}var b=10,d=M("$rootScope"),c=null,e=null;this.digestTtl=function(a){arguments.length&&(b=a);return b};this.$get=["$injector","$exceptionHandler","$parse","$browser",function(f,g,h,k){function l(a){a.currentScope.$$destroyed=!0}function m(a){9===Ha&&(a.$$childHead&&m(a.$$childHead),a.$$nextSibling&&m(a.$$nextSibling));a.$parent=a.$$nextSibling=a.$$prevSibling=a.$$childHead=a.$$childTail=a.$root=a.$$watchers=null}function r(){this.$id=++ob;this.$$phase=this.$parent=this.$$watchers=this.$$nextSibling=
this.$$prevSibling=this.$$childHead=this.$$childTail=null;this.$root=this;this.$$destroyed=!1;this.$$listeners={};this.$$listenerCount={};this.$$watchersCount=0;this.$$isolateBindings=null}function t(a){if(v.$$phase)throw d("inprog",v.$$phase);v.$$phase=a}function C(a,b){do a.$$watchersCount+=b;while(a=a.$parent)}function y(a,b,c){do a.$$listenerCount[c]-=b,0===a.$$listenerCount[c]&&delete a.$$listenerCount[c];while(a=a.$parent)}function s(){}function p(){for(;w.length;)try{w.shift()()}catch(a){g(a)}e=
null}function x(){null===e&&(e=k.defer(function(){v.$apply(p)}))}r.prototype={constructor:r,$new:function(b,c){var d;c=c||this;b?(d=new r,d.$root=this.$root):(this.$$ChildScope||(this.$$ChildScope=a(this)),d=new this.$$ChildScope);d.$parent=c;d.$$prevSibling=c.$$childTail;c.$$childHead?(c.$$childTail.$$nextSibling=d,c.$$childTail=d):c.$$childHead=c.$$childTail=d;(b||c!=this)&&d.$on("$destroy",l);return d},$watch:function(a,b,d,e){var f=h(a);if(f.$$watchDelegate)return f.$$watchDelegate(this,b,d,f,
a);var g=this,k=g.$$watchers,l={fn:b,last:s,get:f,exp:e||a,eq:!!d};c=null;B(b)||(l.fn=z);k||(k=g.$$watchers=[]);k.unshift(l);C(this,1);return function(){0<=ab(k,l)&&C(g,-1);c=null}},$watchGroup:function(a,b){function c(){h=!1;k?(k=!1,b(e,e,g)):b(e,d,g)}var d=Array(a.length),e=Array(a.length),f=[],g=this,h=!1,k=!0;if(!a.length){var l=!0;g.$evalAsync(function(){l&&b(e,e,g)});return function(){l=!1}}if(1===a.length)return this.$watch(a[0],function(a,c,f){e[0]=a;d[0]=c;b(e,a===c?e:d,f)});n(a,function(a,
b){var k=g.$watch(a,function(a,f){e[b]=a;d[b]=f;h||(h=!0,g.$evalAsync(c))});f.push(k)});return function(){for(;f.length;)f.shift()()}},$watchCollection:function(a,b){function c(a){e=a;var b,d,g,h;if(!q(e)){if(G(e))if(Aa(e))for(f!==r&&(f=r,p=f.length=0,l++),a=e.length,p!==a&&(l++,f.length=p=a),b=0;b<a;b++)h=f[b],g=e[b],d=h!==h&&g!==g,d||h===g||(l++,f[b]=g);else{f!==t&&(f=t={},p=0,l++);a=0;for(b in e)ra.call(e,b)&&(a++,g=e[b],h=f[b],b in f?(d=h!==h&&g!==g,d||h===g||(l++,f[b]=g)):(p++,f[b]=g,l++));if(p>
a)for(b in l++,f)ra.call(e,b)||(p--,delete f[b])}else f!==e&&(f=e,l++);return l}}c.$stateful=!0;var d=this,e,f,g,k=1<b.length,l=0,m=h(a,c),r=[],t={},n=!0,p=0;return this.$watch(m,function(){n?(n=!1,b(e,e,d)):b(e,g,d);if(k)if(G(e))if(Aa(e)){g=Array(e.length);for(var a=0;a<e.length;a++)g[a]=e[a]}else for(a in g={},e)ra.call(e,a)&&(g[a]=e[a]);else g=e})},$digest:function(){var a,f,h,l,m,r,n=b,C,x=[],q,y;t("$digest");k.$$checkUrlChange();this===v&&null!==e&&(k.defer.cancel(e),p());c=null;do{r=!1;for(C=
this;u.length;){try{y=u.shift(),y.scope.$eval(y.expression,y.locals)}catch(w){g(w)}c=null}a:do{if(l=C.$$watchers)for(m=l.length;m--;)try{if(a=l[m])if((f=a.get(C))!==(h=a.last)&&!(a.eq?ka(f,h):"number"===typeof f&&"number"===typeof h&&isNaN(f)&&isNaN(h)))r=!0,c=a,a.last=a.eq?Ma(f,null):f,a.fn(f,h===s?f:h,C),5>n&&(q=4-n,x[q]||(x[q]=[]),x[q].push({msg:B(a.exp)?"fn: "+(a.exp.name||a.exp.toString()):a.exp,newVal:f,oldVal:h}));else if(a===c){r=!1;break a}}catch(la){g(la)}if(!(l=C.$$watchersCount&&C.$$childHead||
C!==this&&C.$$nextSibling))for(;C!==this&&!(l=C.$$nextSibling);)C=C.$parent}while(C=l);if((r||u.length)&&!n--)throw v.$$phase=null,d("infdig",b,x);}while(r||u.length);for(v.$$phase=null;H.length;)try{H.shift()()}catch(A){g(A)}},$destroy:function(){if(!this.$$destroyed){var a=this.$parent;this.$broadcast("$destroy");this.$$destroyed=!0;this===v&&k.$$applicationDestroyed();C(this,-this.$$watchersCount);for(var b in this.$$listenerCount)y(this,this.$$listenerCount[b],b);a&&a.$$childHead==this&&(a.$$childHead=
this.$$nextSibling);a&&a.$$childTail==this&&(a.$$childTail=this.$$prevSibling);this.$$prevSibling&&(this.$$prevSibling.$$nextSibling=this.$$nextSibling);this.$$nextSibling&&(this.$$nextSibling.$$prevSibling=this.$$prevSibling);this.$destroy=this.$digest=this.$apply=this.$evalAsync=this.$applyAsync=z;this.$on=this.$watch=this.$watchGroup=function(){return z};this.$$listeners={};this.$$nextSibling=null;m(this)}},$eval:function(a,b){return h(a)(this,b)},$evalAsync:function(a,b){v.$$phase||u.length||
k.defer(function(){u.length&&v.$digest()});u.push({scope:this,expression:a,locals:b})},$$postDigest:function(a){H.push(a)},$apply:function(a){try{t("$apply");try{return this.$eval(a)}finally{v.$$phase=null}}catch(b){g(b)}finally{try{v.$digest()}catch(c){throw g(c),c;}}},$applyAsync:function(a){function b(){c.$eval(a)}var c=this;a&&w.push(b);x()},$on:function(a,b){var c=this.$$listeners[a];c||(this.$$listeners[a]=c=[]);c.push(b);var d=this;do d.$$listenerCount[a]||(d.$$listenerCount[a]=0),d.$$listenerCount[a]++;
while(d=d.$parent);var e=this;return function(){var d=c.indexOf(b);-1!==d&&(c[d]=null,y(e,1,a))}},$emit:function(a,b){var c=[],d,e=this,f=!1,h={name:a,targetScope:e,stopPropagation:function(){f=!0},preventDefault:function(){h.defaultPrevented=!0},defaultPrevented:!1},k=bb([h],arguments,1),l,m;do{d=e.$$listeners[a]||c;h.currentScope=e;l=0;for(m=d.length;l<m;l++)if(d[l])try{d[l].apply(null,k)}catch(r){g(r)}else d.splice(l,1),l--,m--;if(f)return h.currentScope=null,h;e=e.$parent}while(e);h.currentScope=
null;return h},$broadcast:function(a,b){var c=this,d=this,e={name:a,targetScope:this,preventDefault:function(){e.defaultPrevented=!0},defaultPrevented:!1};if(!this.$$listenerCount[a])return e;for(var f=bb([e],arguments,1),h,k;c=d;){e.currentScope=c;d=c.$$listeners[a]||[];h=0;for(k=d.length;h<k;h++)if(d[h])try{d[h].apply(null,f)}catch(l){g(l)}else d.splice(h,1),h--,k--;if(!(d=c.$$listenerCount[a]&&c.$$childHead||c!==this&&c.$$nextSibling))for(;c!==this&&!(d=c.$$nextSibling);)c=c.$parent}e.currentScope=
null;return e}};var v=new r,u=v.$$asyncQueue=[],H=v.$$postDigestQueue=[],w=v.$$applyAsyncQueue=[];return v}]}function ke(){var a=/^\s*(https?|ftp|mailto|tel|file):/,b=/^\s*((https?|ftp|file|blob):|data:image\/)/;this.aHrefSanitizationWhitelist=function(b){return u(b)?(a=b,this):a};this.imgSrcSanitizationWhitelist=function(a){return u(a)?(b=a,this):b};this.$get=function(){return function(d,c){var e=c?b:a,f;f=xa(d).href;return""===f||f.match(e)?d:"unsafe:"+f}}}function fg(a){if("self"===a)return a;
if(F(a)){if(-1<a.indexOf("***"))throw za("iwcard",a);a=wd(a).replace("\\*\\*",".*").replace("\\*","[^:/.?&;]*");return new RegExp("^"+a+"$")}if(La(a))return new RegExp("^"+a.source+"$");throw za("imatcher");}function xd(a){var b=[];u(a)&&n(a,function(a){b.push(fg(a))});return b}function vf(){this.SCE_CONTEXTS=ma;var a=["self"],b=[];this.resourceUrlWhitelist=function(b){arguments.length&&(a=xd(b));return a};this.resourceUrlBlacklist=function(a){arguments.length&&(b=xd(a));return b};this.$get=["$injector",
function(d){function c(a,b){return"self"===a?gd(b):!!a.exec(b.href)}function e(a){var b=function(a){this.$$unwrapTrustedValue=function(){return a}};a&&(b.prototype=new a);b.prototype.valueOf=function(){return this.$$unwrapTrustedValue()};b.prototype.toString=function(){return this.$$unwrapTrustedValue().toString()};return b}var f=function(a){throw za("unsafe");};d.has("$sanitize")&&(f=d.get("$sanitize"));var g=e(),h={};h[ma.HTML]=e(g);h[ma.CSS]=e(g);h[ma.URL]=e(g);h[ma.JS]=e(g);h[ma.RESOURCE_URL]=
e(h[ma.URL]);return{trustAs:function(a,b){var c=h.hasOwnProperty(a)?h[a]:null;if(!c)throw za("icontext",a,b);if(null===b||q(b)||""===b)return b;if("string"!==typeof b)throw za("itype",a);return new c(b)},getTrusted:function(d,e){if(null===e||q(e)||""===e)return e;var g=h.hasOwnProperty(d)?h[d]:null;if(g&&e instanceof g)return e.$$unwrapTrustedValue();if(d===ma.RESOURCE_URL){var g=xa(e.toString()),r,t,n=!1;r=0;for(t=a.length;r<t;r++)if(c(a[r],g)){n=!0;break}if(n)for(r=0,t=b.length;r<t;r++)if(c(b[r],
g)){n=!1;break}if(n)return e;throw za("insecurl",e.toString());}if(d===ma.HTML)return f(e);throw za("unsafe");},valueOf:function(a){return a instanceof g?a.$$unwrapTrustedValue():a}}}]}function uf(){var a=!0;this.enabled=function(b){arguments.length&&(a=!!b);return a};this.$get=["$parse","$sceDelegate",function(b,d){if(a&&8>Ha)throw za("iequirks");var c=ha(ma);c.isEnabled=function(){return a};c.trustAs=d.trustAs;c.getTrusted=d.getTrusted;c.valueOf=d.valueOf;a||(c.trustAs=c.getTrusted=function(a,b){return b},
c.valueOf=Ya);c.parseAs=function(a,d){var e=b(d);return e.literal&&e.constant?e:b(d,function(b){return c.getTrusted(a,b)})};var e=c.parseAs,f=c.getTrusted,g=c.trustAs;n(ma,function(a,b){var d=K(b);c[eb("parse_as_"+d)]=function(b){return e(a,b)};c[eb("get_trusted_"+d)]=function(b){return f(a,b)};c[eb("trust_as_"+d)]=function(b){return g(a,b)}});return c}]}function wf(){this.$get=["$window","$document",function(a,b){var d={},c=Z((/android (\d+)/.exec(K((a.navigator||{}).userAgent))||[])[1]),e=/Boxee/i.test((a.navigator||
{}).userAgent),f=b[0]||{},g,h=/^(Moz|webkit|ms)(?=[A-Z])/,k=f.body&&f.body.style,l=!1,m=!1;if(k){for(var r in k)if(l=h.exec(r)){g=l[0];g=g.substr(0,1).toUpperCase()+g.substr(1);break}g||(g="WebkitOpacity"in k&&"webkit");l=!!("transition"in k||g+"Transition"in k);m=!!("animation"in k||g+"Animation"in k);!c||l&&m||(l=F(k.webkitTransition),m=F(k.webkitAnimation))}return{history:!(!a.history||!a.history.pushState||4>c||e),hasEvent:function(a){if("input"===a&&11>=Ha)return!1;if(q(d[a])){var b=f.createElement("div");
d[a]="on"+a in b}return d[a]},csp:Ca(),vendorPrefix:g,transitions:l,animations:m,android:c}}]}function yf(){this.$get=["$templateCache","$http","$q","$sce",function(a,b,d,c){function e(f,g){e.totalPendingRequests++;F(f)&&a.get(f)||(f=c.getTrustedResourceUrl(f));var h=b.defaults&&b.defaults.transformResponse;E(h)?h=h.filter(function(a){return a!==ac}):h===ac&&(h=null);return b.get(f,{cache:a,transformResponse:h})["finally"](function(){e.totalPendingRequests--}).then(function(b){a.put(f,b.data);return b.data},
function(a){if(!g)throw ga("tpload",f,a.status,a.statusText);return d.reject(a)})}e.totalPendingRequests=0;return e}]}function zf(){this.$get=["$rootScope","$browser","$location",function(a,b,d){return{findBindings:function(a,b,d){a=a.getElementsByClassName("ng-binding");var g=[];n(a,function(a){var c=$.element(a).data("$binding");c&&n(c,function(c){d?(new RegExp("(^|\\s)"+wd(b)+"(\\s|\\||$)")).test(c)&&g.push(a):-1!=c.indexOf(b)&&g.push(a)})});return g},findModels:function(a,b,d){for(var g=["ng-",
"data-ng-","ng\\:"],h=0;h<g.length;++h){var k=a.querySelectorAll("["+g[h]+"model"+(d?"=":"*=")+'"'+b+'"]');if(k.length)return k}},getLocation:function(){return d.url()},setLocation:function(b){b!==d.url()&&(d.url(b),a.$digest())},whenStable:function(a){b.notifyWhenNoOutstandingRequests(a)}}}]}function Af(){this.$get=["$rootScope","$browser","$q","$$q","$exceptionHandler",function(a,b,d,c,e){function f(f,k,l){B(f)||(l=k,k=f,f=z);var m=sa.call(arguments,3),r=u(l)&&!l,t=(r?c:d).defer(),n=t.promise,q;
q=b.defer(function(){try{t.resolve(f.apply(null,m))}catch(b){t.reject(b),e(b)}finally{delete g[n.$$timeoutId]}r||a.$apply()},k);n.$$timeoutId=q;g[q]=t;return n}var g={};f.cancel=function(a){return a&&a.$$timeoutId in g?(g[a.$$timeoutId].reject("canceled"),delete g[a.$$timeoutId],b.defer.cancel(a.$$timeoutId)):!1};return f}]}function xa(a){Ha&&(ba.setAttribute("href",a),a=ba.href);ba.setAttribute("href",a);return{href:ba.href,protocol:ba.protocol?ba.protocol.replace(/:$/,""):"",host:ba.host,search:ba.search?
ba.search.replace(/^\?/,""):"",hash:ba.hash?ba.hash.replace(/^#/,""):"",hostname:ba.hostname,port:ba.port,pathname:"/"===ba.pathname.charAt(0)?ba.pathname:"/"+ba.pathname}}function gd(a){a=F(a)?xa(a):a;return a.protocol===yd.protocol&&a.host===yd.host}function Bf(){this.$get=na(S)}function zd(a){function b(a){try{return decodeURIComponent(a)}catch(b){return a}}var d=a[0]||{},c={},e="";return function(){var a,g,h,k,l;a=d.cookie||"";if(a!==e)for(e=a,a=e.split("; "),c={},h=0;h<a.length;h++)g=a[h],k=
g.indexOf("="),0<k&&(l=b(g.substring(0,k)),q(c[l])&&(c[l]=b(g.substring(k+1))));return c}}function Ff(){this.$get=zd}function Kc(a){function b(d,c){if(G(d)){var e={};n(d,function(a,c){e[c]=b(c,a)});return e}return a.factory(d+"Filter",c)}this.register=b;this.$get=["$injector",function(a){return function(b){return a.get(b+"Filter")}}];b("currency",Ad);b("date",Bd);b("filter",gg);b("json",hg);b("limitTo",ig);b("lowercase",jg);b("number",Cd);b("orderBy",Dd);b("uppercase",kg)}function gg(){return function(a,
b,d){if(!Aa(a)){if(null==a)return a;throw M("filter")("notarray",a);}var c;switch(ic(b)){case "function":break;case "boolean":case "null":case "number":case "string":c=!0;case "object":b=lg(b,d,c);break;default:return a}return Array.prototype.filter.call(a,b)}}function lg(a,b,d){var c=G(a)&&"$"in a;!0===b?b=ka:B(b)||(b=function(a,b){if(q(a))return!1;if(null===a||null===b)return a===b;if(G(b)||G(a)&&!rc(a))return!1;a=K(""+a);b=K(""+b);return-1!==a.indexOf(b)});return function(e){return c&&!G(e)?Ja(e,
a.$,b,!1):Ja(e,a,b,d)}}function Ja(a,b,d,c,e){var f=ic(a),g=ic(b);if("string"===g&&"!"===b.charAt(0))return!Ja(a,b.substring(1),d,c);if(E(a))return a.some(function(a){return Ja(a,b,d,c)});switch(f){case "object":var h;if(c){for(h in a)if("$"!==h.charAt(0)&&Ja(a[h],b,d,!0))return!0;return e?!1:Ja(a,b,d,!1)}if("object"===g){for(h in b)if(e=b[h],!B(e)&&!q(e)&&(f="$"===h,!Ja(f?a:a[h],e,d,f,f)))return!1;return!0}return d(a,b);case "function":return!1;default:return d(a,b)}}function ic(a){return null===
a?"null":typeof a}function Ad(a){var b=a.NUMBER_FORMATS;return function(a,c,e){q(c)&&(c=b.CURRENCY_SYM);q(e)&&(e=b.PATTERNS[1].maxFrac);return null==a?a:Ed(a,b.PATTERNS[1],b.GROUP_SEP,b.DECIMAL_SEP,e).replace(/\u00A4/g,c)}}function Cd(a){var b=a.NUMBER_FORMATS;return function(a,c){return null==a?a:Ed(a,b.PATTERNS[0],b.GROUP_SEP,b.DECIMAL_SEP,c)}}function mg(a){var b=0,d,c,e,f,g;-1<(c=a.indexOf(Fd))&&(a=a.replace(Fd,""));0<(e=a.search(/e/i))?(0>c&&(c=e),c+=+a.slice(e+1),a=a.substring(0,e)):0>c&&(c=
a.length);for(e=0;a.charAt(e)==jc;e++);if(e==(g=a.length))d=[0],c=1;else{for(g--;a.charAt(g)==jc;)g--;c-=e;d=[];for(f=0;e<=g;e++,f++)d[f]=+a.charAt(e)}c>Gd&&(d=d.splice(0,Gd-1),b=c-1,c=1);return{d:d,e:b,i:c}}function ng(a,b,d,c){var e=a.d,f=e.length-a.i;b=q(b)?Math.min(Math.max(d,f),c):+b;d=b+a.i;c=e[d];if(0<d)e.splice(d);else{a.i=1;e.length=d=b+1;for(var g=0;g<d;g++)e[g]=0}for(5<=c&&e[d-1]++;f<b;f++)e.push(0);if(b=e.reduceRight(function(a,b,c,d){b+=a;d[c]=b%10;return Math.floor(b/10)},0))e.unshift(b),
a.i++}function Ed(a,b,d,c,e){if(!F(a)&&!Q(a)||isNaN(a))return"";var f=!isFinite(a),g=!1,h=Math.abs(a)+"",k="";if(f)k="\u221e";else{g=mg(h);ng(g,e,b.minFrac,b.maxFrac);k=g.d;h=g.i;e=g.e;f=[];for(g=k.reduce(function(a,b){return a&&!b},!0);0>h;)k.unshift(0),h++;0<h?f=k.splice(h):(f=k,k=[0]);h=[];for(k.length>b.lgSize&&h.unshift(k.splice(-b.lgSize).join(""));k.length>b.gSize;)h.unshift(k.splice(-b.gSize).join(""));k.length&&h.unshift(k.join(""));k=h.join(d);f.length&&(k+=c+f.join(""));e&&(k+="e+"+e)}return 0>
a&&!g?b.negPre+k+b.negSuf:b.posPre+k+b.posSuf}function Ib(a,b,d){var c="";0>a&&(c="-",a=-a);for(a=""+a;a.length<b;)a=jc+a;d&&(a=a.substr(a.length-b));return c+a}function ca(a,b,d,c){d=d||0;return function(e){e=e["get"+a]();if(0<d||e>-d)e+=d;0===e&&-12==d&&(e=12);return Ib(e,b,c)}}function Jb(a,b){return function(d,c){var e=d["get"+a](),f=tb(b?"SHORT"+a:a);return c[f][e]}}function Hd(a){var b=(new Date(a,0,1)).getDay();return new Date(a,0,(4>=b?5:12)-b)}function Id(a){return function(b){var d=Hd(b.getFullYear());
b=+new Date(b.getFullYear(),b.getMonth(),b.getDate()+(4-b.getDay()))-+d;b=1+Math.round(b/6048E5);return Ib(b,a)}}function kc(a,b){return 0>=a.getFullYear()?b.ERAS[0]:b.ERAS[1]}function Bd(a){function b(a){var b;if(b=a.match(d)){a=new Date(0);var f=0,g=0,h=b[8]?a.setUTCFullYear:a.setFullYear,k=b[8]?a.setUTCHours:a.setHours;b[9]&&(f=Z(b[9]+b[10]),g=Z(b[9]+b[11]));h.call(a,Z(b[1]),Z(b[2])-1,Z(b[3]));f=Z(b[4]||0)-f;g=Z(b[5]||0)-g;h=Z(b[6]||0);b=Math.round(1E3*parseFloat("0."+(b[7]||0)));k.call(a,f,g,
h,b)}return a}var d=/^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/;return function(c,d,f){var g="",h=[],k,l;d=d||"mediumDate";d=a.DATETIME_FORMATS[d]||d;F(c)&&(c=og.test(c)?Z(c):b(c));Q(c)&&(c=new Date(c));if(!da(c)||!isFinite(c.getTime()))return c;for(;d;)(l=pg.exec(d))?(h=bb(h,l,1),d=h.pop()):(h.push(d),d=null);var m=c.getTimezoneOffset();f&&(m=wc(f,c.getTimezoneOffset()),c=Rb(c,f,!0));n(h,function(b){k=qg[b];g+=k?k(c,a.DATETIME_FORMATS,m):
b.replace(/(^'|'$)/g,"").replace(/''/g,"'")});return g}}function hg(){return function(a,b){q(b)&&(b=2);return cb(a,b)}}function ig(){return function(a,b,d){b=Infinity===Math.abs(Number(b))?Number(b):Z(b);if(isNaN(b))return a;Q(a)&&(a=a.toString());if(!E(a)&&!F(a))return a;d=!d||isNaN(d)?0:Z(d);d=0>d?Math.max(0,a.length+d):d;return 0<=b?a.slice(d,d+b):0===d?a.slice(b,a.length):a.slice(Math.max(0,d+b),d)}}function Dd(a){function b(b,d){d=d?-1:1;return b.map(function(b){var c=1,h=Ya;if(B(b))h=b;else if(F(b)){if("+"==
b.charAt(0)||"-"==b.charAt(0))c="-"==b.charAt(0)?-1:1,b=b.substring(1);if(""!==b&&(h=a(b),h.constant))var k=h(),h=function(a){return a[k]}}return{get:h,descending:c*d}})}function d(a){switch(typeof a){case "number":case "boolean":case "string":return!0;default:return!1}}return function(a,e,f){if(!Aa(a))return a;E(e)||(e=[e]);0===e.length&&(e=["+"]);var g=b(e,f);g.push({get:function(){return{}},descending:f?-1:1});a=Array.prototype.map.call(a,function(a,b){return{value:a,predicateValues:g.map(function(c){var e=
c.get(a);c=typeof e;if(null===e)c="string",e="null";else if("string"===c)e=e.toLowerCase();else if("object"===c)a:{if("function"===typeof e.valueOf&&(e=e.valueOf(),d(e)))break a;if(rc(e)&&(e=e.toString(),d(e)))break a;e=b}return{value:e,type:c}})}});a.sort(function(a,b){for(var c=0,d=0,e=g.length;d<e;++d){var c=a.predicateValues[d],f=b.predicateValues[d],n=0;c.type===f.type?c.value!==f.value&&(n=c.value<f.value?-1:1):n=c.type<f.type?-1:1;if(c=n*g[d].descending)break}return c});return a=a.map(function(a){return a.value})}}
function Ka(a){B(a)&&(a={link:a});a.restrict=a.restrict||"AC";return na(a)}function Jd(a,b,d,c,e){var f=this,g=[];f.$error={};f.$$success={};f.$pending=w;f.$name=e(b.name||b.ngForm||"")(d);f.$dirty=!1;f.$pristine=!0;f.$valid=!0;f.$invalid=!1;f.$submitted=!1;f.$$parentForm=Kb;f.$rollbackViewValue=function(){n(g,function(a){a.$rollbackViewValue()})};f.$commitViewValue=function(){n(g,function(a){a.$commitViewValue()})};f.$addControl=function(a){Ra(a.$name,"input");g.push(a);a.$name&&(f[a.$name]=a);a.$$parentForm=
f};f.$$renameControl=function(a,b){var c=a.$name;f[c]===a&&delete f[c];f[b]=a;a.$name=b};f.$removeControl=function(a){a.$name&&f[a.$name]===a&&delete f[a.$name];n(f.$pending,function(b,c){f.$setValidity(c,null,a)});n(f.$error,function(b,c){f.$setValidity(c,null,a)});n(f.$$success,function(b,c){f.$setValidity(c,null,a)});ab(g,a);a.$$parentForm=Kb};Kd({ctrl:this,$element:a,set:function(a,b,c){var d=a[b];d?-1===d.indexOf(c)&&d.push(c):a[b]=[c]},unset:function(a,b,c){var d=a[b];d&&(ab(d,c),0===d.length&&
delete a[b])},$animate:c});f.$setDirty=function(){c.removeClass(a,Wa);c.addClass(a,Lb);f.$dirty=!0;f.$pristine=!1;f.$$parentForm.$setDirty()};f.$setPristine=function(){c.setClass(a,Wa,Lb+" ng-submitted");f.$dirty=!1;f.$pristine=!0;f.$submitted=!1;n(g,function(a){a.$setPristine()})};f.$setUntouched=function(){n(g,function(a){a.$setUntouched()})};f.$setSubmitted=function(){c.addClass(a,"ng-submitted");f.$submitted=!0;f.$$parentForm.$setSubmitted()}}function lc(a){a.$formatters.push(function(b){return a.$isEmpty(b)?
b:b.toString()})}function kb(a,b,d,c,e,f){var g=K(b[0].type);if(!e.android){var h=!1;b.on("compositionstart",function(a){h=!0});b.on("compositionend",function(){h=!1;k()})}var k=function(a){l&&(f.defer.cancel(l),l=null);if(!h){var e=b.val();a=a&&a.type;"password"===g||d.ngTrim&&"false"===d.ngTrim||(e=T(e));(c.$viewValue!==e||""===e&&c.$$hasNativeValidators)&&c.$setViewValue(e,a)}};if(e.hasEvent("input"))b.on("input",k);else{var l,m=function(a,b,c){l||(l=f.defer(function(){l=null;b&&b.value===c||k(a)}))};
b.on("keydown",function(a){var b=a.keyCode;91===b||15<b&&19>b||37<=b&&40>=b||m(a,this,this.value)});if(e.hasEvent("paste"))b.on("paste cut",m)}b.on("change",k);c.$render=function(){var a=c.$isEmpty(c.$viewValue)?"":c.$viewValue;b.val()!==a&&b.val(a)}}function Mb(a,b){return function(d,c){var e,f;if(da(d))return d;if(F(d)){'"'==d.charAt(0)&&'"'==d.charAt(d.length-1)&&(d=d.substring(1,d.length-1));if(rg.test(d))return new Date(d);a.lastIndex=0;if(e=a.exec(d))return e.shift(),f=c?{yyyy:c.getFullYear(),
MM:c.getMonth()+1,dd:c.getDate(),HH:c.getHours(),mm:c.getMinutes(),ss:c.getSeconds(),sss:c.getMilliseconds()/1E3}:{yyyy:1970,MM:1,dd:1,HH:0,mm:0,ss:0,sss:0},n(e,function(a,c){c<b.length&&(f[b[c]]=+a)}),new Date(f.yyyy,f.MM-1,f.dd,f.HH,f.mm,f.ss||0,1E3*f.sss||0)}return NaN}}function lb(a,b,d,c){return function(e,f,g,h,k,l,m){function r(a){return a&&!(a.getTime&&a.getTime()!==a.getTime())}function n(a){return u(a)&&!da(a)?d(a)||w:a}Ld(e,f,g,h);kb(e,f,g,h,k,l);var C=h&&h.$options&&h.$options.timezone,
y;h.$$parserName=a;h.$parsers.push(function(a){return h.$isEmpty(a)?null:b.test(a)?(a=d(a,y),C&&(a=Rb(a,C)),a):w});h.$formatters.push(function(a){if(a&&!da(a))throw mb("datefmt",a);if(r(a))return(y=a)&&C&&(y=Rb(y,C,!0)),m("date")(a,c,C);y=null;return""});if(u(g.min)||g.ngMin){var s;h.$validators.min=function(a){return!r(a)||q(s)||d(a)>=s};g.$observe("min",function(a){s=n(a);h.$validate()})}if(u(g.max)||g.ngMax){var p;h.$validators.max=function(a){return!r(a)||q(p)||d(a)<=p};g.$observe("max",function(a){p=
n(a);h.$validate()})}}}function Ld(a,b,d,c){(c.$$hasNativeValidators=G(b[0].validity))&&c.$parsers.push(function(a){var c=b.prop("validity")||{};return c.badInput&&!c.typeMismatch?w:a})}function Md(a,b,d,c,e){if(u(c)){a=a(c);if(!a.constant)throw mb("constexpr",d,c);return a(b)}return e}function mc(a,b){a="ngClass"+a;return["$animate",function(d){function c(a,b){var c=[],d=0;a:for(;d<a.length;d++){for(var e=a[d],m=0;m<b.length;m++)if(e==b[m])continue a;c.push(e)}return c}function e(a){var b=[];return E(a)?
(n(a,function(a){b=b.concat(e(a))}),b):F(a)?a.split(" "):G(a)?(n(a,function(a,c){a&&(b=b.concat(c.split(" ")))}),b):a}return{restrict:"AC",link:function(f,g,h){function k(a,b){var c=g.data("$classCounts")||ea(),d=[];n(a,function(a){if(0<b||c[a])c[a]=(c[a]||0)+b,c[a]===+(0<b)&&d.push(a)});g.data("$classCounts",c);return d.join(" ")}function l(a){if(!0===b||f.$index%2===b){var l=e(a||[]);if(!m){var n=k(l,1);h.$addClass(n)}else if(!ka(a,m)){var q=e(m),n=c(l,q),l=c(q,l),n=k(n,1),l=k(l,-1);n&&n.length&&
d.addClass(g,n);l&&l.length&&d.removeClass(g,l)}}m=ha(a)}var m;f.$watch(h[a],l,!0);h.$observe("class",function(b){l(f.$eval(h[a]))});"ngClass"!==a&&f.$watch("$index",function(c,d){var g=c&1;if(g!==(d&1)){var l=e(f.$eval(h[a]));g===b?(g=k(l,1),h.$addClass(g)):(g=k(l,-1),h.$removeClass(g))}})}}}]}function Kd(a){function b(a,b){b&&!f[a]?(k.addClass(e,a),f[a]=!0):!b&&f[a]&&(k.removeClass(e,a),f[a]=!1)}function d(a,c){a=a?"-"+Ac(a,"-"):"";b(nb+a,!0===c);b(Nd+a,!1===c)}var c=a.ctrl,e=a.$element,f={},g=
a.set,h=a.unset,k=a.$animate;f[Nd]=!(f[nb]=e.hasClass(nb));c.$setValidity=function(a,e,f){q(e)?(c.$pending||(c.$pending={}),g(c.$pending,a,f)):(c.$pending&&h(c.$pending,a,f),Od(c.$pending)&&(c.$pending=w));$a(e)?e?(h(c.$error,a,f),g(c.$$success,a,f)):(g(c.$error,a,f),h(c.$$success,a,f)):(h(c.$error,a,f),h(c.$$success,a,f));c.$pending?(b(Pd,!0),c.$valid=c.$invalid=w,d("",null)):(b(Pd,!1),c.$valid=Od(c.$error),c.$invalid=!c.$valid,d("",c.$valid));e=c.$pending&&c.$pending[a]?w:c.$error[a]?!1:c.$$success[a]?
!0:null;d(a,e);c.$$parentForm.$setValidity(a,e,c)}}function Od(a){if(a)for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}var sg=/^\/(.+)\/([a-z]*)$/,K=function(a){return F(a)?a.toLowerCase():a},ra=Object.prototype.hasOwnProperty,tb=function(a){return F(a)?a.toUpperCase():a},Ha,A,pa,sa=[].slice,Uf=[].splice,tg=[].push,ta=Object.prototype.toString,sc=Object.getPrototypeOf,Ba=M("ng"),$=S.angular||(S.angular={}),Ub,ob=0;Ha=W.documentMode;z.$inject=[];Ya.$inject=[];var E=Array.isArray,Zd=/^\[object (?:Uint8|Uint8Clamped|Uint16|Uint32|Int8|Int16|Int32|Float32|Float64)Array\]$/,
T=function(a){return F(a)?a.trim():a},wd=function(a){return a.replace(/([-()\[\]{}+?*.$\^|,:#<!\\])/g,"\\$1").replace(/\x08/g,"\\x08")},Ca=function(){if(!u(Ca.rules)){var a=W.querySelector("[ng-csp]")||W.querySelector("[data-ng-csp]");if(a){var b=a.getAttribute("ng-csp")||a.getAttribute("data-ng-csp");Ca.rules={noUnsafeEval:!b||-1!==b.indexOf("no-unsafe-eval"),noInlineStyle:!b||-1!==b.indexOf("no-inline-style")}}else{a=Ca;try{new Function(""),b=!1}catch(d){b=!0}a.rules={noUnsafeEval:b,noInlineStyle:!1}}}return Ca.rules},
qb=function(){if(u(qb.name_))return qb.name_;var a,b,d=Oa.length,c,e;for(b=0;b<d;++b)if(c=Oa[b],a=W.querySelector("["+c.replace(":","\\:")+"jq]")){e=a.getAttribute(c+"jq");break}return qb.name_=e},Oa=["ng-","data-ng-","ng:","x-ng-"],fe=/[A-Z]/g,Bc=!1,Tb,Na=3,je={full:"1.4.9",major:1,minor:4,dot:9,codeName:"implicit-superannuation"};P.expando="ng339";var fb=P.cache={},Lf=1;P._data=function(a){return this.cache[a[this.expando]]||{}};var Gf=/([\:\-\_]+(.))/g,Hf=/^moz([A-Z])/,yb={mouseleave:"mouseout",
mouseenter:"mouseover"},Wb=M("jqLite"),Kf=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,Vb=/<|&#?\w+;/,If=/<([\w:-]+)/,Jf=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,ja={option:[1,'<select multiple="multiple">',"</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ja.optgroup=ja.option;ja.tbody=ja.tfoot=ja.colgroup=ja.caption=ja.thead;
ja.th=ja.td;var Qf=Node.prototype.contains||function(a){return!!(this.compareDocumentPosition(a)&16)},Pa=P.prototype={ready:function(a){function b(){d||(d=!0,a())}var d=!1;"complete"===W.readyState?setTimeout(b):(this.on("DOMContentLoaded",b),P(S).on("load",b))},toString:function(){var a=[];n(this,function(b){a.push(""+b)});return"["+a.join(", ")+"]"},eq:function(a){return 0<=a?A(this[a]):A(this[this.length+a])},length:0,push:tg,sort:[].sort,splice:[].splice},Db={};n("multiple selected checked disabled readOnly required open".split(" "),
function(a){Db[K(a)]=a});var Sc={};n("input select option textarea button form details".split(" "),function(a){Sc[a]=!0});var ad={ngMinlength:"minlength",ngMaxlength:"maxlength",ngMin:"min",ngMax:"max",ngPattern:"pattern"};n({data:Yb,removeData:wb,hasData:function(a){for(var b in fb[a.ng339])return!0;return!1}},function(a,b){P[b]=a});n({data:Yb,inheritedData:Cb,scope:function(a){return A.data(a,"$scope")||Cb(a.parentNode||a,["$isolateScope","$scope"])},isolateScope:function(a){return A.data(a,"$isolateScope")||
A.data(a,"$isolateScopeNoTemplate")},controller:Pc,injector:function(a){return Cb(a,"$injector")},removeAttr:function(a,b){a.removeAttribute(b)},hasClass:zb,css:function(a,b,d){b=eb(b);if(u(d))a.style[b]=d;else return a.style[b]},attr:function(a,b,d){var c=a.nodeType;if(c!==Na&&2!==c&&8!==c)if(c=K(b),Db[c])if(u(d))d?(a[b]=!0,a.setAttribute(b,c)):(a[b]=!1,a.removeAttribute(c));else return a[b]||(a.attributes.getNamedItem(b)||z).specified?c:w;else if(u(d))a.setAttribute(b,d);else if(a.getAttribute)return a=
a.getAttribute(b,2),null===a?w:a},prop:function(a,b,d){if(u(d))a[b]=d;else return a[b]},text:function(){function a(a,d){if(q(d)){var c=a.nodeType;return 1===c||c===Na?a.textContent:""}a.textContent=d}a.$dv="";return a}(),val:function(a,b){if(q(b)){if(a.multiple&&"select"===oa(a)){var d=[];n(a.options,function(a){a.selected&&d.push(a.value||a.text)});return 0===d.length?null:d}return a.value}a.value=b},html:function(a,b){if(q(b))return a.innerHTML;vb(a,!0);a.innerHTML=b},empty:Qc},function(a,b){P.prototype[b]=
function(b,c){var e,f,g=this.length;if(a!==Qc&&q(2==a.length&&a!==zb&&a!==Pc?b:c)){if(G(b)){for(e=0;e<g;e++)if(a===Yb)a(this[e],b);else for(f in b)a(this[e],f,b[f]);return this}e=a.$dv;g=q(e)?Math.min(g,1):g;for(f=0;f<g;f++){var h=a(this[f],b,c);e=e?e+h:h}return e}for(e=0;e<g;e++)a(this[e],b,c);return this}});n({removeData:wb,on:function(a,b,d,c){if(u(c))throw Wb("onargs");if(Lc(a)){c=xb(a,!0);var e=c.events,f=c.handle;f||(f=c.handle=Nf(a,e));c=0<=b.indexOf(" ")?b.split(" "):[b];for(var g=c.length,
h=function(b,c,g){var h=e[b];h||(h=e[b]=[],h.specialHandlerWrapper=c,"$destroy"===b||g||a.addEventListener(b,f,!1));h.push(d)};g--;)b=c[g],yb[b]?(h(yb[b],Pf),h(b,w,!0)):h(b)}},off:Oc,one:function(a,b,d){a=A(a);a.on(b,function e(){a.off(b,d);a.off(b,e)});a.on(b,d)},replaceWith:function(a,b){var d,c=a.parentNode;vb(a);n(new P(b),function(b){d?c.insertBefore(b,d.nextSibling):c.replaceChild(b,a);d=b})},children:function(a){var b=[];n(a.childNodes,function(a){1===a.nodeType&&b.push(a)});return b},contents:function(a){return a.contentDocument||
a.childNodes||[]},append:function(a,b){var d=a.nodeType;if(1===d||11===d){b=new P(b);for(var d=0,c=b.length;d<c;d++)a.appendChild(b[d])}},prepend:function(a,b){if(1===a.nodeType){var d=a.firstChild;n(new P(b),function(b){a.insertBefore(b,d)})}},wrap:function(a,b){b=A(b).eq(0).clone()[0];var d=a.parentNode;d&&d.replaceChild(b,a);b.appendChild(a)},remove:Zb,detach:function(a){Zb(a,!0)},after:function(a,b){var d=a,c=a.parentNode;b=new P(b);for(var e=0,f=b.length;e<f;e++){var g=b[e];c.insertBefore(g,
d.nextSibling);d=g}},addClass:Bb,removeClass:Ab,toggleClass:function(a,b,d){b&&n(b.split(" "),function(b){var e=d;q(e)&&(e=!zb(a,b));(e?Bb:Ab)(a,b)})},parent:function(a){return(a=a.parentNode)&&11!==a.nodeType?a:null},next:function(a){return a.nextElementSibling},find:function(a,b){return a.getElementsByTagName?a.getElementsByTagName(b):[]},clone:Xb,triggerHandler:function(a,b,d){var c,e,f=b.type||b,g=xb(a);if(g=(g=g&&g.events)&&g[f])c={preventDefault:function(){this.defaultPrevented=!0},isDefaultPrevented:function(){return!0===
this.defaultPrevented},stopImmediatePropagation:function(){this.immediatePropagationStopped=!0},isImmediatePropagationStopped:function(){return!0===this.immediatePropagationStopped},stopPropagation:z,type:f,target:a},b.type&&(c=N(c,b)),b=ha(g),e=d?[c].concat(d):[c],n(b,function(b){c.isImmediatePropagationStopped()||b.apply(a,e)})}},function(a,b){P.prototype[b]=function(b,c,e){for(var f,g=0,h=this.length;g<h;g++)q(f)?(f=a(this[g],b,c,e),u(f)&&(f=A(f))):Nc(f,a(this[g],b,c,e));return u(f)?f:this};P.prototype.bind=
P.prototype.on;P.prototype.unbind=P.prototype.off});Sa.prototype={put:function(a,b){this[Da(a,this.nextUid)]=b},get:function(a){return this[Da(a,this.nextUid)]},remove:function(a){var b=this[a=Da(a,this.nextUid)];delete this[a];return b}};var Ef=[function(){this.$get=[function(){return Sa}]}],Uc=/^[^\(]*\(\s*([^\)]*)\)/m,ug=/,/,vg=/^\s*(_?)(\S+?)\1\s*$/,Tc=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg,Ea=M("$injector");db.$$annotate=function(a,b,d){var c;if("function"===typeof a){if(!(c=a.$inject)){c=[];if(a.length){if(b)throw F(d)&&
d||(d=a.name||Rf(a)),Ea("strictdi",d);b=a.toString().replace(Tc,"");b=b.match(Uc);n(b[1].split(ug),function(a){a.replace(vg,function(a,b,d){c.push(d)})})}a.$inject=c}}else E(a)?(b=a.length-1,Qa(a[b],"fn"),c=a.slice(0,b)):Qa(a,"fn",!0);return c};var Qd=M("$animate"),Xe=function(){this.$get=function(){}},Ye=function(){var a=new Sa,b=[];this.$get=["$$AnimateRunner","$rootScope",function(d,c){function e(a,b,c){var d=!1;b&&(b=F(b)?b.split(" "):E(b)?b:[],n(b,function(b){b&&(d=!0,a[b]=c)}));return d}function f(){n(b,
function(b){var c=a.get(b);if(c){var d=Sf(b.attr("class")),e="",f="";n(c,function(a,b){a!==!!d[b]&&(a?e+=(e.length?" ":"")+b:f+=(f.length?" ":"")+b)});n(b,function(a){e&&Bb(a,e);f&&Ab(a,f)});a.remove(b)}});b.length=0}return{enabled:z,on:z,off:z,pin:z,push:function(g,h,k,l){l&&l();k=k||{};k.from&&g.css(k.from);k.to&&g.css(k.to);if(k.addClass||k.removeClass)if(h=k.addClass,l=k.removeClass,k=a.get(g)||{},h=e(k,h,!0),l=e(k,l,!1),h||l)a.put(g,k),b.push(g),1===b.length&&c.$$postDigest(f);g=new d;g.complete();
return g}}}]},Ve=["$provide",function(a){var b=this;this.$$registeredAnimations=Object.create(null);this.register=function(d,c){if(d&&"."!==d.charAt(0))throw Qd("notcsel",d);var e=d+"-animation";b.$$registeredAnimations[d.substr(1)]=e;a.factory(e,c)};this.classNameFilter=function(a){if(1===arguments.length&&(this.$$classNameFilter=a instanceof RegExp?a:null)&&/(\s+|\/)ng-animate(\s+|\/)/.test(this.$$classNameFilter.toString()))throw Qd("nongcls","ng-animate");return this.$$classNameFilter};this.$get=
["$$animateQueue",function(a){function b(a,c,d){if(d){var h;a:{for(h=0;h<d.length;h++){var k=d[h];if(1===k.nodeType){h=k;break a}}h=void 0}!h||h.parentNode||h.previousElementSibling||(d=null)}d?d.after(a):c.prepend(a)}return{on:a.on,off:a.off,pin:a.pin,enabled:a.enabled,cancel:function(a){a.end&&a.end()},enter:function(e,f,g,h){f=f&&A(f);g=g&&A(g);f=f||g.parent();b(e,f,g);return a.push(e,"enter",Fa(h))},move:function(e,f,g,h){f=f&&A(f);g=g&&A(g);f=f||g.parent();b(e,f,g);return a.push(e,"move",Fa(h))},
leave:function(b,c){return a.push(b,"leave",Fa(c),function(){b.remove()})},addClass:function(b,c,g){g=Fa(g);g.addClass=gb(g.addclass,c);return a.push(b,"addClass",g)},removeClass:function(b,c,g){g=Fa(g);g.removeClass=gb(g.removeClass,c);return a.push(b,"removeClass",g)},setClass:function(b,c,g,h){h=Fa(h);h.addClass=gb(h.addClass,c);h.removeClass=gb(h.removeClass,g);return a.push(b,"setClass",h)},animate:function(b,c,g,h,k){k=Fa(k);k.from=k.from?N(k.from,c):c;k.to=k.to?N(k.to,g):g;k.tempClasses=gb(k.tempClasses,
h||"ng-inline-animate");return a.push(b,"animate",k)}}}]}],$e=function(){this.$get=["$$rAF",function(a){function b(b){d.push(b);1<d.length||a(function(){for(var a=0;a<d.length;a++)d[a]();d=[]})}var d=[];return function(){var a=!1;b(function(){a=!0});return function(d){a?d():b(d)}}}]},Ze=function(){this.$get=["$q","$sniffer","$$animateAsyncRun","$document","$timeout",function(a,b,d,c,e){function f(a){this.setHost(a);var b=d();this._doneCallbacks=[];this._tick=function(a){var d=c[0];d&&d.hidden?e(a,
0,!1):b(a)};this._state=0}f.chain=function(a,b){function c(){if(d===a.length)b(!0);else a[d](function(a){!1===a?b(!1):(d++,c())})}var d=0;c()};f.all=function(a,b){function c(f){e=e&&f;++d===a.length&&b(e)}var d=0,e=!0;n(a,function(a){a.done(c)})};f.prototype={setHost:function(a){this.host=a||{}},done:function(a){2===this._state?a():this._doneCallbacks.push(a)},progress:z,getPromise:function(){if(!this.promise){var b=this;this.promise=a(function(a,c){b.done(function(b){!1===b?c():a()})})}return this.promise},
then:function(a,b){return this.getPromise().then(a,b)},"catch":function(a){return this.getPromise()["catch"](a)},"finally":function(a){return this.getPromise()["finally"](a)},pause:function(){this.host.pause&&this.host.pause()},resume:function(){this.host.resume&&this.host.resume()},end:function(){this.host.end&&this.host.end();this._resolve(!0)},cancel:function(){this.host.cancel&&this.host.cancel();this._resolve(!1)},complete:function(a){var b=this;0===b._state&&(b._state=1,b._tick(function(){b._resolve(a)}))},
_resolve:function(a){2!==this._state&&(n(this._doneCallbacks,function(b){b(a)}),this._doneCallbacks.length=0,this._state=2)}};return f}]},We=function(){this.$get=["$$rAF","$q","$$AnimateRunner",function(a,b,d){return function(b,e){function f(){a(function(){g.addClass&&(b.addClass(g.addClass),g.addClass=null);g.removeClass&&(b.removeClass(g.removeClass),g.removeClass=null);g.to&&(b.css(g.to),g.to=null);h||k.complete();h=!0});return k}var g=e||{};g.$$prepared||(g=Ma(g));g.cleanupStyles&&(g.from=g.to=
null);g.from&&(b.css(g.from),g.from=null);var h,k=new d;return{start:f,end:f}}}]},ga=M("$compile");Dc.$inject=["$provide","$$sanitizeUriProvider"];var Yc=/^((?:x|data)[\:\-_])/i,Vf=M("$controller"),Vc=/^(\S+)(\s+as\s+([\w$]+))?$/,ff=function(){this.$get=["$document",function(a){return function(b){b?!b.nodeType&&b instanceof A&&(b=b[0]):b=a[0].body;return b.offsetWidth+1}}]},bd="application/json",bc={"Content-Type":bd+";charset=utf-8"},Xf=/^\[|^\{(?!\{)/,Yf={"[":/]$/,"{":/}$/},Wf=/^\)\]\}',?\n/,wg=
M("$http"),fd=function(a){return function(){throw wg("legacy",a);}},Ia=$.$interpolateMinErr=M("$interpolate");Ia.throwNoconcat=function(a){throw Ia("noconcat",a);};Ia.interr=function(a,b){return Ia("interr",a,b.toString())};var xg=/^([^\?#]*)(\?([^#]*))?(#(.*))?$/,$f={http:80,https:443,ftp:21},Fb=M("$location"),yg={$$html5:!1,$$replace:!1,absUrl:Gb("$$absUrl"),url:function(a){if(q(a))return this.$$url;var b=xg.exec(a);(b[1]||""===a)&&this.path(decodeURIComponent(b[1]));(b[2]||b[1]||""===a)&&this.search(b[3]||
"");this.hash(b[5]||"");return this},protocol:Gb("$$protocol"),host:Gb("$$host"),port:Gb("$$port"),path:kd("$$path",function(a){a=null!==a?a.toString():"";return"/"==a.charAt(0)?a:"/"+a}),search:function(a,b){switch(arguments.length){case 0:return this.$$search;case 1:if(F(a)||Q(a))a=a.toString(),this.$$search=yc(a);else if(G(a))a=Ma(a,{}),n(a,function(b,c){null==b&&delete a[c]}),this.$$search=a;else throw Fb("isrcharg");break;default:q(b)||null===b?delete this.$$search[a]:this.$$search[a]=b}this.$$compose();
return this},hash:kd("$$hash",function(a){return null!==a?a.toString():""}),replace:function(){this.$$replace=!0;return this}};n([jd,ec,dc],function(a){a.prototype=Object.create(yg);a.prototype.state=function(b){if(!arguments.length)return this.$$state;if(a!==dc||!this.$$html5)throw Fb("nostate");this.$$state=q(b)?null:b;return this}});var aa=M("$parse"),ag=Function.prototype.call,bg=Function.prototype.apply,cg=Function.prototype.bind,Nb=ea();n("+ - * / % === !== == != < > <= >= && || ! = |".split(" "),
function(a){Nb[a]=!0});var zg={n:"\n",f:"\f",r:"\r",t:"\t",v:"\v","'":"'",'"':'"'},gc=function(a){this.options=a};gc.prototype={constructor:gc,lex:function(a){this.text=a;this.index=0;for(this.tokens=[];this.index<this.text.length;)if(a=this.text.charAt(this.index),'"'===a||"'"===a)this.readString(a);else if(this.isNumber(a)||"."===a&&this.isNumber(this.peek()))this.readNumber();else if(this.isIdent(a))this.readIdent();else if(this.is(a,"(){}[].,;:?"))this.tokens.push({index:this.index,text:a}),this.index++;
else if(this.isWhitespace(a))this.index++;else{var b=a+this.peek(),d=b+this.peek(2),c=Nb[b],e=Nb[d];Nb[a]||c||e?(a=e?d:c?b:a,this.tokens.push({index:this.index,text:a,operator:!0}),this.index+=a.length):this.throwError("Unexpected next character ",this.index,this.index+1)}return this.tokens},is:function(a,b){return-1!==b.indexOf(a)},peek:function(a){a=a||1;return this.index+a<this.text.length?this.text.charAt(this.index+a):!1},isNumber:function(a){return"0"<=a&&"9">=a&&"string"===typeof a},isWhitespace:function(a){return" "===
a||"\r"===a||"\t"===a||"\n"===a||"\v"===a||"\u00a0"===a},isIdent:function(a){return"a"<=a&&"z">=a||"A"<=a&&"Z">=a||"_"===a||"$"===a},isExpOperator:function(a){return"-"===a||"+"===a||this.isNumber(a)},throwError:function(a,b,d){d=d||this.index;b=u(b)?"s "+b+"-"+this.index+" ["+this.text.substring(b,d)+"]":" "+d;throw aa("lexerr",a,b,this.text);},readNumber:function(){for(var a="",b=this.index;this.index<this.text.length;){var d=K(this.text.charAt(this.index));if("."==d||this.isNumber(d))a+=d;else{var c=
this.peek();if("e"==d&&this.isExpOperator(c))a+=d;else if(this.isExpOperator(d)&&c&&this.isNumber(c)&&"e"==a.charAt(a.length-1))a+=d;else if(!this.isExpOperator(d)||c&&this.isNumber(c)||"e"!=a.charAt(a.length-1))break;else this.throwError("Invalid exponent")}this.index++}this.tokens.push({index:b,text:a,constant:!0,value:Number(a)})},readIdent:function(){for(var a=this.index;this.index<this.text.length;){var b=this.text.charAt(this.index);if(!this.isIdent(b)&&!this.isNumber(b))break;this.index++}this.tokens.push({index:a,
text:this.text.slice(a,this.index),identifier:!0})},readString:function(a){var b=this.index;this.index++;for(var d="",c=a,e=!1;this.index<this.text.length;){var f=this.text.charAt(this.index),c=c+f;if(e)"u"===f?(e=this.text.substring(this.index+1,this.index+5),e.match(/[\da-f]{4}/i)||this.throwError("Invalid unicode escape [\\u"+e+"]"),this.index+=4,d+=String.fromCharCode(parseInt(e,16))):d+=zg[f]||f,e=!1;else if("\\"===f)e=!0;else{if(f===a){this.index++;this.tokens.push({index:b,text:c,constant:!0,
value:d});return}d+=f}this.index++}this.throwError("Unterminated quote",b)}};var s=function(a,b){this.lexer=a;this.options=b};s.Program="Program";s.ExpressionStatement="ExpressionStatement";s.AssignmentExpression="AssignmentExpression";s.ConditionalExpression="ConditionalExpression";s.LogicalExpression="LogicalExpression";s.BinaryExpression="BinaryExpression";s.UnaryExpression="UnaryExpression";s.CallExpression="CallExpression";s.MemberExpression="MemberExpression";s.Identifier="Identifier";s.Literal=
"Literal";s.ArrayExpression="ArrayExpression";s.Property="Property";s.ObjectExpression="ObjectExpression";s.ThisExpression="ThisExpression";s.NGValueParameter="NGValueParameter";s.prototype={ast:function(a){this.text=a;this.tokens=this.lexer.lex(a);a=this.program();0!==this.tokens.length&&this.throwError("is an unexpected token",this.tokens[0]);return a},program:function(){for(var a=[];;)if(0<this.tokens.length&&!this.peek("}",")",";","]")&&a.push(this.expressionStatement()),!this.expect(";"))return{type:s.Program,
body:a}},expressionStatement:function(){return{type:s.ExpressionStatement,expression:this.filterChain()}},filterChain:function(){for(var a=this.expression();this.expect("|");)a=this.filter(a);return a},expression:function(){return this.assignment()},assignment:function(){var a=this.ternary();this.expect("=")&&(a={type:s.AssignmentExpression,left:a,right:this.assignment(),operator:"="});return a},ternary:function(){var a=this.logicalOR(),b,d;return this.expect("?")&&(b=this.expression(),this.consume(":"))?
(d=this.expression(),{type:s.ConditionalExpression,test:a,alternate:b,consequent:d}):a},logicalOR:function(){for(var a=this.logicalAND();this.expect("||");)a={type:s.LogicalExpression,operator:"||",left:a,right:this.logicalAND()};return a},logicalAND:function(){for(var a=this.equality();this.expect("&&");)a={type:s.LogicalExpression,operator:"&&",left:a,right:this.equality()};return a},equality:function(){for(var a=this.relational(),b;b=this.expect("==","!=","===","!==");)a={type:s.BinaryExpression,
operator:b.text,left:a,right:this.relational()};return a},relational:function(){for(var a=this.additive(),b;b=this.expect("<",">","<=",">=");)a={type:s.BinaryExpression,operator:b.text,left:a,right:this.additive()};return a},additive:function(){for(var a=this.multiplicative(),b;b=this.expect("+","-");)a={type:s.BinaryExpression,operator:b.text,left:a,right:this.multiplicative()};return a},multiplicative:function(){for(var a=this.unary(),b;b=this.expect("*","/","%");)a={type:s.BinaryExpression,operator:b.text,
left:a,right:this.unary()};return a},unary:function(){var a;return(a=this.expect("+","-","!"))?{type:s.UnaryExpression,operator:a.text,prefix:!0,argument:this.unary()}:this.primary()},primary:function(){var a;this.expect("(")?(a=this.filterChain(),this.consume(")")):this.expect("[")?a=this.arrayDeclaration():this.expect("{")?a=this.object():this.constants.hasOwnProperty(this.peek().text)?a=Ma(this.constants[this.consume().text]):this.peek().identifier?a=this.identifier():this.peek().constant?a=this.constant():
this.throwError("not a primary expression",this.peek());for(var b;b=this.expect("(","[",".");)"("===b.text?(a={type:s.CallExpression,callee:a,arguments:this.parseArguments()},this.consume(")")):"["===b.text?(a={type:s.MemberExpression,object:a,property:this.expression(),computed:!0},this.consume("]")):"."===b.text?a={type:s.MemberExpression,object:a,property:this.identifier(),computed:!1}:this.throwError("IMPOSSIBLE");return a},filter:function(a){a=[a];for(var b={type:s.CallExpression,callee:this.identifier(),
arguments:a,filter:!0};this.expect(":");)a.push(this.expression());return b},parseArguments:function(){var a=[];if(")"!==this.peekToken().text){do a.push(this.expression());while(this.expect(","))}return a},identifier:function(){var a=this.consume();a.identifier||this.throwError("is not a valid identifier",a);return{type:s.Identifier,name:a.text}},constant:function(){return{type:s.Literal,value:this.consume().value}},arrayDeclaration:function(){var a=[];if("]"!==this.peekToken().text){do{if(this.peek("]"))break;
a.push(this.expression())}while(this.expect(","))}this.consume("]");return{type:s.ArrayExpression,elements:a}},object:function(){var a=[],b;if("}"!==this.peekToken().text){do{if(this.peek("}"))break;b={type:s.Property,kind:"init"};this.peek().constant?b.key=this.constant():this.peek().identifier?b.key=this.identifier():this.throwError("invalid key",this.peek());this.consume(":");b.value=this.expression();a.push(b)}while(this.expect(","))}this.consume("}");return{type:s.ObjectExpression,properties:a}},
throwError:function(a,b){throw aa("syntax",b.text,a,b.index+1,this.text,this.text.substring(b.index));},consume:function(a){if(0===this.tokens.length)throw aa("ueoe",this.text);var b=this.expect(a);b||this.throwError("is unexpected, expecting ["+a+"]",this.peek());return b},peekToken:function(){if(0===this.tokens.length)throw aa("ueoe",this.text);return this.tokens[0]},peek:function(a,b,d,c){return this.peekAhead(0,a,b,d,c)},peekAhead:function(a,b,d,c,e){if(this.tokens.length>a){a=this.tokens[a];
var f=a.text;if(f===b||f===d||f===c||f===e||!(b||d||c||e))return a}return!1},expect:function(a,b,d,c){return(a=this.peek(a,b,d,c))?(this.tokens.shift(),a):!1},constants:{"true":{type:s.Literal,value:!0},"false":{type:s.Literal,value:!1},"null":{type:s.Literal,value:null},undefined:{type:s.Literal,value:w},"this":{type:s.ThisExpression}}};td.prototype={compile:function(a,b){var d=this,c=this.astBuilder.ast(a);this.state={nextId:0,filters:{},expensiveChecks:b,fn:{vars:[],body:[],own:{}},assign:{vars:[],
body:[],own:{}},inputs:[]};V(c,d.$filter);var e="",f;this.stage="assign";if(f=rd(c))this.state.computing="assign",e=this.nextId(),this.recurse(f,e),this.return_(e),e="fn.assign="+this.generateFunction("assign","s,v,l");f=pd(c.body);d.stage="inputs";n(f,function(a,b){var c="fn"+b;d.state[c]={vars:[],body:[],own:{}};d.state.computing=c;var e=d.nextId();d.recurse(a,e);d.return_(e);d.state.inputs.push(c);a.watchId=b});this.state.computing="fn";this.stage="main";this.recurse(c);e='"'+this.USE+" "+this.STRICT+
'";\n'+this.filterPrefix()+"var fn="+this.generateFunction("fn","s,l,a,i")+e+this.watchFns()+"return fn;";e=(new Function("$filter","ensureSafeMemberName","ensureSafeObject","ensureSafeFunction","getStringValue","ensureSafeAssignContext","ifDefined","plus","text",e))(this.$filter,Va,ya,md,ld,nd,dg,od,a);this.state=this.stage=w;e.literal=sd(c);e.constant=c.constant;return e},USE:"use",STRICT:"strict",watchFns:function(){var a=[],b=this.state.inputs,d=this;n(b,function(b){a.push("var "+b+"="+d.generateFunction(b,
"s"))});b.length&&a.push("fn.inputs=["+b.join(",")+"];");return a.join("")},generateFunction:function(a,b){return"function("+b+"){"+this.varsPrefix(a)+this.body(a)+"};"},filterPrefix:function(){var a=[],b=this;n(this.state.filters,function(d,c){a.push(d+"=$filter("+b.escape(c)+")")});return a.length?"var "+a.join(",")+";":""},varsPrefix:function(a){return this.state[a].vars.length?"var "+this.state[a].vars.join(",")+";":""},body:function(a){return this.state[a].body.join("")},recurse:function(a,b,
d,c,e,f){var g,h,k=this,l,m;c=c||z;if(!f&&u(a.watchId))b=b||this.nextId(),this.if_("i",this.lazyAssign(b,this.computedMember("i",a.watchId)),this.lazyRecurse(a,b,d,c,e,!0));else switch(a.type){case s.Program:n(a.body,function(b,c){k.recurse(b.expression,w,w,function(a){h=a});c!==a.body.length-1?k.current().body.push(h,";"):k.return_(h)});break;case s.Literal:m=this.escape(a.value);this.assign(b,m);c(m);break;case s.UnaryExpression:this.recurse(a.argument,w,w,function(a){h=a});m=a.operator+"("+this.ifDefined(h,
0)+")";this.assign(b,m);c(m);break;case s.BinaryExpression:this.recurse(a.left,w,w,function(a){g=a});this.recurse(a.right,w,w,function(a){h=a});m="+"===a.operator?this.plus(g,h):"-"===a.operator?this.ifDefined(g,0)+a.operator+this.ifDefined(h,0):"("+g+")"+a.operator+"("+h+")";this.assign(b,m);c(m);break;case s.LogicalExpression:b=b||this.nextId();k.recurse(a.left,b);k.if_("&&"===a.operator?b:k.not(b),k.lazyRecurse(a.right,b));c(b);break;case s.ConditionalExpression:b=b||this.nextId();k.recurse(a.test,
b);k.if_(b,k.lazyRecurse(a.alternate,b),k.lazyRecurse(a.consequent,b));c(b);break;case s.Identifier:b=b||this.nextId();d&&(d.context="inputs"===k.stage?"s":this.assign(this.nextId(),this.getHasOwnProperty("l",a.name)+"?l:s"),d.computed=!1,d.name=a.name);Va(a.name);k.if_("inputs"===k.stage||k.not(k.getHasOwnProperty("l",a.name)),function(){k.if_("inputs"===k.stage||"s",function(){e&&1!==e&&k.if_(k.not(k.nonComputedMember("s",a.name)),k.lazyAssign(k.nonComputedMember("s",a.name),"{}"));k.assign(b,k.nonComputedMember("s",
a.name))})},b&&k.lazyAssign(b,k.nonComputedMember("l",a.name)));(k.state.expensiveChecks||Hb(a.name))&&k.addEnsureSafeObject(b);c(b);break;case s.MemberExpression:g=d&&(d.context=this.nextId())||this.nextId();b=b||this.nextId();k.recurse(a.object,g,w,function(){k.if_(k.notNull(g),function(){if(a.computed)h=k.nextId(),k.recurse(a.property,h),k.getStringValue(h),k.addEnsureSafeMemberName(h),e&&1!==e&&k.if_(k.not(k.computedMember(g,h)),k.lazyAssign(k.computedMember(g,h),"{}")),m=k.ensureSafeObject(k.computedMember(g,
h)),k.assign(b,m),d&&(d.computed=!0,d.name=h);else{Va(a.property.name);e&&1!==e&&k.if_(k.not(k.nonComputedMember(g,a.property.name)),k.lazyAssign(k.nonComputedMember(g,a.property.name),"{}"));m=k.nonComputedMember(g,a.property.name);if(k.state.expensiveChecks||Hb(a.property.name))m=k.ensureSafeObject(m);k.assign(b,m);d&&(d.computed=!1,d.name=a.property.name)}},function(){k.assign(b,"undefined")});c(b)},!!e);break;case s.CallExpression:b=b||this.nextId();a.filter?(h=k.filter(a.callee.name),l=[],n(a.arguments,
function(a){var b=k.nextId();k.recurse(a,b);l.push(b)}),m=h+"("+l.join(",")+")",k.assign(b,m),c(b)):(h=k.nextId(),g={},l=[],k.recurse(a.callee,h,g,function(){k.if_(k.notNull(h),function(){k.addEnsureSafeFunction(h);n(a.arguments,function(a){k.recurse(a,k.nextId(),w,function(a){l.push(k.ensureSafeObject(a))})});g.name?(k.state.expensiveChecks||k.addEnsureSafeObject(g.context),m=k.member(g.context,g.name,g.computed)+"("+l.join(",")+")"):m=h+"("+l.join(",")+")";m=k.ensureSafeObject(m);k.assign(b,m)},
function(){k.assign(b,"undefined")});c(b)}));break;case s.AssignmentExpression:h=this.nextId();g={};if(!qd(a.left))throw aa("lval");this.recurse(a.left,w,g,function(){k.if_(k.notNull(g.context),function(){k.recurse(a.right,h);k.addEnsureSafeObject(k.member(g.context,g.name,g.computed));k.addEnsureSafeAssignContext(g.context);m=k.member(g.context,g.name,g.computed)+a.operator+h;k.assign(b,m);c(b||m)})},1);break;case s.ArrayExpression:l=[];n(a.elements,function(a){k.recurse(a,k.nextId(),w,function(a){l.push(a)})});
m="["+l.join(",")+"]";this.assign(b,m);c(m);break;case s.ObjectExpression:l=[];n(a.properties,function(a){k.recurse(a.value,k.nextId(),w,function(b){l.push(k.escape(a.key.type===s.Identifier?a.key.name:""+a.key.value)+":"+b)})});m="{"+l.join(",")+"}";this.assign(b,m);c(m);break;case s.ThisExpression:this.assign(b,"s");c("s");break;case s.NGValueParameter:this.assign(b,"v"),c("v")}},getHasOwnProperty:function(a,b){var d=a+"."+b,c=this.current().own;c.hasOwnProperty(d)||(c[d]=this.nextId(!1,a+"&&("+
this.escape(b)+" in "+a+")"));return c[d]},assign:function(a,b){if(a)return this.current().body.push(a,"=",b,";"),a},filter:function(a){this.state.filters.hasOwnProperty(a)||(this.state.filters[a]=this.nextId(!0));return this.state.filters[a]},ifDefined:function(a,b){return"ifDefined("+a+","+this.escape(b)+")"},plus:function(a,b){return"plus("+a+","+b+")"},return_:function(a){this.current().body.push("return ",a,";")},if_:function(a,b,d){if(!0===a)b();else{var c=this.current().body;c.push("if(",a,
"){");b();c.push("}");d&&(c.push("else{"),d(),c.push("}"))}},not:function(a){return"!("+a+")"},notNull:function(a){return a+"!=null"},nonComputedMember:function(a,b){return a+"."+b},computedMember:function(a,b){return a+"["+b+"]"},member:function(a,b,d){return d?this.computedMember(a,b):this.nonComputedMember(a,b)},addEnsureSafeObject:function(a){this.current().body.push(this.ensureSafeObject(a),";")},addEnsureSafeMemberName:function(a){this.current().body.push(this.ensureSafeMemberName(a),";")},
addEnsureSafeFunction:function(a){this.current().body.push(this.ensureSafeFunction(a),";")},addEnsureSafeAssignContext:function(a){this.current().body.push(this.ensureSafeAssignContext(a),";")},ensureSafeObject:function(a){return"ensureSafeObject("+a+",text)"},ensureSafeMemberName:function(a){return"ensureSafeMemberName("+a+",text)"},ensureSafeFunction:function(a){return"ensureSafeFunction("+a+",text)"},getStringValue:function(a){this.assign(a,"getStringValue("+a+",text)")},ensureSafeAssignContext:function(a){return"ensureSafeAssignContext("+
a+",text)"},lazyRecurse:function(a,b,d,c,e,f){var g=this;return function(){g.recurse(a,b,d,c,e,f)}},lazyAssign:function(a,b){var d=this;return function(){d.assign(a,b)}},stringEscapeRegex:/[^ a-zA-Z0-9]/g,stringEscapeFn:function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)},escape:function(a){if(F(a))return"'"+a.replace(this.stringEscapeRegex,this.stringEscapeFn)+"'";if(Q(a))return a.toString();if(!0===a)return"true";if(!1===a)return"false";if(null===a)return"null";if("undefined"===
typeof a)return"undefined";throw aa("esc");},nextId:function(a,b){var d="v"+this.state.nextId++;a||this.current().vars.push(d+(b?"="+b:""));return d},current:function(){return this.state[this.state.computing]}};ud.prototype={compile:function(a,b){var d=this,c=this.astBuilder.ast(a);this.expression=a;this.expensiveChecks=b;V(c,d.$filter);var e,f;if(e=rd(c))f=this.recurse(e);e=pd(c.body);var g;e&&(g=[],n(e,function(a,b){var c=d.recurse(a);a.input=c;g.push(c);a.watchId=b}));var h=[];n(c.body,function(a){h.push(d.recurse(a.expression))});
e=0===c.body.length?function(){}:1===c.body.length?h[0]:function(a,b){var c;n(h,function(d){c=d(a,b)});return c};f&&(e.assign=function(a,b,c){return f(a,c,b)});g&&(e.inputs=g);e.literal=sd(c);e.constant=c.constant;return e},recurse:function(a,b,d){var c,e,f=this,g;if(a.input)return this.inputs(a.input,a.watchId);switch(a.type){case s.Literal:return this.value(a.value,b);case s.UnaryExpression:return e=this.recurse(a.argument),this["unary"+a.operator](e,b);case s.BinaryExpression:return c=this.recurse(a.left),
e=this.recurse(a.right),this["binary"+a.operator](c,e,b);case s.LogicalExpression:return c=this.recurse(a.left),e=this.recurse(a.right),this["binary"+a.operator](c,e,b);case s.ConditionalExpression:return this["ternary?:"](this.recurse(a.test),this.recurse(a.alternate),this.recurse(a.consequent),b);case s.Identifier:return Va(a.name,f.expression),f.identifier(a.name,f.expensiveChecks||Hb(a.name),b,d,f.expression);case s.MemberExpression:return c=this.recurse(a.object,!1,!!d),a.computed||(Va(a.property.name,
f.expression),e=a.property.name),a.computed&&(e=this.recurse(a.property)),a.computed?this.computedMember(c,e,b,d,f.expression):this.nonComputedMember(c,e,f.expensiveChecks,b,d,f.expression);case s.CallExpression:return g=[],n(a.arguments,function(a){g.push(f.recurse(a))}),a.filter&&(e=this.$filter(a.callee.name)),a.filter||(e=this.recurse(a.callee,!0)),a.filter?function(a,c,d,f){for(var r=[],n=0;n<g.length;++n)r.push(g[n](a,c,d,f));a=e.apply(w,r,f);return b?{context:w,name:w,value:a}:a}:function(a,
c,d,m){var n=e(a,c,d,m),t;if(null!=n.value){ya(n.context,f.expression);md(n.value,f.expression);t=[];for(var q=0;q<g.length;++q)t.push(ya(g[q](a,c,d,m),f.expression));t=ya(n.value.apply(n.context,t),f.expression)}return b?{value:t}:t};case s.AssignmentExpression:return c=this.recurse(a.left,!0,1),e=this.recurse(a.right),function(a,d,g,m){var n=c(a,d,g,m);a=e(a,d,g,m);ya(n.value,f.expression);nd(n.context);n.context[n.name]=a;return b?{value:a}:a};case s.ArrayExpression:return g=[],n(a.elements,function(a){g.push(f.recurse(a))}),
function(a,c,d,e){for(var f=[],n=0;n<g.length;++n)f.push(g[n](a,c,d,e));return b?{value:f}:f};case s.ObjectExpression:return g=[],n(a.properties,function(a){g.push({key:a.key.type===s.Identifier?a.key.name:""+a.key.value,value:f.recurse(a.value)})}),function(a,c,d,e){for(var f={},n=0;n<g.length;++n)f[g[n].key]=g[n].value(a,c,d,e);return b?{value:f}:f};case s.ThisExpression:return function(a){return b?{value:a}:a};case s.NGValueParameter:return function(a,c,d,e){return b?{value:d}:d}}},"unary+":function(a,
b){return function(d,c,e,f){d=a(d,c,e,f);d=u(d)?+d:0;return b?{value:d}:d}},"unary-":function(a,b){return function(d,c,e,f){d=a(d,c,e,f);d=u(d)?-d:0;return b?{value:d}:d}},"unary!":function(a,b){return function(d,c,e,f){d=!a(d,c,e,f);return b?{value:d}:d}},"binary+":function(a,b,d){return function(c,e,f,g){var h=a(c,e,f,g);c=b(c,e,f,g);h=od(h,c);return d?{value:h}:h}},"binary-":function(a,b,d){return function(c,e,f,g){var h=a(c,e,f,g);c=b(c,e,f,g);h=(u(h)?h:0)-(u(c)?c:0);return d?{value:h}:h}},"binary*":function(a,
b,d){return function(c,e,f,g){c=a(c,e,f,g)*b(c,e,f,g);return d?{value:c}:c}},"binary/":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)/b(c,e,f,g);return d?{value:c}:c}},"binary%":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)%b(c,e,f,g);return d?{value:c}:c}},"binary===":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)===b(c,e,f,g);return d?{value:c}:c}},"binary!==":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)!==b(c,e,f,g);return d?{value:c}:c}},"binary==":function(a,b,
d){return function(c,e,f,g){c=a(c,e,f,g)==b(c,e,f,g);return d?{value:c}:c}},"binary!=":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)!=b(c,e,f,g);return d?{value:c}:c}},"binary<":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)<b(c,e,f,g);return d?{value:c}:c}},"binary>":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)>b(c,e,f,g);return d?{value:c}:c}},"binary<=":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)<=b(c,e,f,g);return d?{value:c}:c}},"binary>=":function(a,b,d){return function(c,
e,f,g){c=a(c,e,f,g)>=b(c,e,f,g);return d?{value:c}:c}},"binary&&":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)&&b(c,e,f,g);return d?{value:c}:c}},"binary||":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)||b(c,e,f,g);return d?{value:c}:c}},"ternary?:":function(a,b,d,c){return function(e,f,g,h){e=a(e,f,g,h)?b(e,f,g,h):d(e,f,g,h);return c?{value:e}:e}},value:function(a,b){return function(){return b?{context:w,name:w,value:a}:a}},identifier:function(a,b,d,c,e){return function(f,g,h,k){f=
g&&a in g?g:f;c&&1!==c&&f&&!f[a]&&(f[a]={});g=f?f[a]:w;b&&ya(g,e);return d?{context:f,name:a,value:g}:g}},computedMember:function(a,b,d,c,e){return function(f,g,h,k){var l=a(f,g,h,k),m,n;null!=l&&(m=b(f,g,h,k),m=ld(m),Va(m,e),c&&1!==c&&l&&!l[m]&&(l[m]={}),n=l[m],ya(n,e));return d?{context:l,name:m,value:n}:n}},nonComputedMember:function(a,b,d,c,e,f){return function(g,h,k,l){g=a(g,h,k,l);e&&1!==e&&g&&!g[b]&&(g[b]={});h=null!=g?g[b]:w;(d||Hb(b))&&ya(h,f);return c?{context:g,name:b,value:h}:h}},inputs:function(a,
b){return function(d,c,e,f){return f?f[b]:a(d,c,e)}}};var hc=function(a,b,d){this.lexer=a;this.$filter=b;this.options=d;this.ast=new s(this.lexer);this.astCompiler=d.csp?new ud(this.ast,b):new td(this.ast,b)};hc.prototype={constructor:hc,parse:function(a){return this.astCompiler.compile(a,this.options.expensiveChecks)}};var eg=Object.prototype.valueOf,za=M("$sce"),ma={HTML:"html",CSS:"css",URL:"url",RESOURCE_URL:"resourceUrl",JS:"js"},ga=M("$compile"),ba=W.createElement("a"),yd=xa(S.location.href);
zd.$inject=["$document"];Kc.$inject=["$provide"];var Gd=22,Fd=".",jc="0";Ad.$inject=["$locale"];Cd.$inject=["$locale"];var qg={yyyy:ca("FullYear",4),yy:ca("FullYear",2,0,!0),y:ca("FullYear",1),MMMM:Jb("Month"),MMM:Jb("Month",!0),MM:ca("Month",2,1),M:ca("Month",1,1),dd:ca("Date",2),d:ca("Date",1),HH:ca("Hours",2),H:ca("Hours",1),hh:ca("Hours",2,-12),h:ca("Hours",1,-12),mm:ca("Minutes",2),m:ca("Minutes",1),ss:ca("Seconds",2),s:ca("Seconds",1),sss:ca("Milliseconds",3),EEEE:Jb("Day"),EEE:Jb("Day",!0),
a:function(a,b){return 12>a.getHours()?b.AMPMS[0]:b.AMPMS[1]},Z:function(a,b,d){a=-1*d;return a=(0<=a?"+":"")+(Ib(Math[0<a?"floor":"ceil"](a/60),2)+Ib(Math.abs(a%60),2))},ww:Id(2),w:Id(1),G:kc,GG:kc,GGG:kc,GGGG:function(a,b){return 0>=a.getFullYear()?b.ERANAMES[0]:b.ERANAMES[1]}},pg=/((?:[^yMdHhmsaZEwG']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z|G+|w+))(.*)/,og=/^\-?\d+$/;Bd.$inject=["$locale"];var jg=na(K),kg=na(tb);Dd.$inject=["$parse"];var le=na({restrict:"E",compile:function(a,b){if(!b.href&&
!b.xlinkHref)return function(a,b){if("a"===b[0].nodeName.toLowerCase()){var e="[object SVGAnimatedString]"===ta.call(b.prop("href"))?"xlink:href":"href";b.on("click",function(a){b.attr(e)||a.preventDefault()})}}}}),ub={};n(Db,function(a,b){function d(a,d,e){a.$watch(e[c],function(a){e.$set(b,!!a)})}if("multiple"!=a){var c=va("ng-"+b),e=d;"checked"===a&&(e=function(a,b,e){e.ngModel!==e[c]&&d(a,b,e)});ub[c]=function(){return{restrict:"A",priority:100,link:e}}}});n(ad,function(a,b){ub[b]=function(){return{priority:100,
link:function(a,c,e){if("ngPattern"===b&&"/"==e.ngPattern.charAt(0)&&(c=e.ngPattern.match(sg))){e.$set("ngPattern",new RegExp(c[1],c[2]));return}a.$watch(e[b],function(a){e.$set(b,a)})}}}});n(["src","srcset","href"],function(a){var b=va("ng-"+a);ub[b]=function(){return{priority:99,link:function(d,c,e){var f=a,g=a;"href"===a&&"[object SVGAnimatedString]"===ta.call(c.prop("href"))&&(g="xlinkHref",e.$attr[g]="xlink:href",f=null);e.$observe(b,function(b){b?(e.$set(g,b),Ha&&f&&c.prop(f,e[g])):"href"===
a&&e.$set(g,null)})}}}});var Kb={$addControl:z,$$renameControl:function(a,b){a.$name=b},$removeControl:z,$setValidity:z,$setDirty:z,$setPristine:z,$setSubmitted:z};Jd.$inject=["$element","$attrs","$scope","$animate","$interpolate"];var Rd=function(a){return["$timeout","$parse",function(b,d){function c(a){return""===a?d('this[""]').assign:d(a).assign||z}return{name:"form",restrict:a?"EAC":"E",require:["form","^^?form"],controller:Jd,compile:function(d,f){d.addClass(Wa).addClass(nb);var g=f.name?"name":
a&&f.ngForm?"ngForm":!1;return{pre:function(a,d,e,f){var n=f[0];if(!("action"in e)){var t=function(b){a.$apply(function(){n.$commitViewValue();n.$setSubmitted()});b.preventDefault()};d[0].addEventListener("submit",t,!1);d.on("$destroy",function(){b(function(){d[0].removeEventListener("submit",t,!1)},0,!1)})}(f[1]||n.$$parentForm).$addControl(n);var q=g?c(n.$name):z;g&&(q(a,n),e.$observe(g,function(b){n.$name!==b&&(q(a,w),n.$$parentForm.$$renameControl(n,b),q=c(n.$name),q(a,n))}));d.on("$destroy",
function(){n.$$parentForm.$removeControl(n);q(a,w);N(n,Kb)})}}}}}]},me=Rd(),ze=Rd(!0),rg=/\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z)/,Ag=/^[a-z][a-z\d.+-]*:\/*(?:[^:@]+(?::[^@]+)?@)?(?:[^\s:/?#]+|\[[a-f\d:]+\])(?::\d+)?(?:\/[^?#]*)?(?:\?[^#]*)?(?:#.*)?$/i,Bg=/^[a-z0-9!#$%&'*+\/=?^_`{|}~.-]+@[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i,Cg=/^\s*(\-|\+)?(\d+|(\d*(\.\d*)))([eE][+-]?\d+)?\s*$/,Sd=/^(\d{4})-(\d{2})-(\d{2})$/,Td=/^(\d{4})-(\d\d)-(\d\d)T(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,
nc=/^(\d{4})-W(\d\d)$/,Ud=/^(\d{4})-(\d\d)$/,Vd=/^(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,Wd={text:function(a,b,d,c,e,f){kb(a,b,d,c,e,f);lc(c)},date:lb("date",Sd,Mb(Sd,["yyyy","MM","dd"]),"yyyy-MM-dd"),"datetime-local":lb("datetimelocal",Td,Mb(Td,"yyyy MM dd HH mm ss sss".split(" ")),"yyyy-MM-ddTHH:mm:ss.sss"),time:lb("time",Vd,Mb(Vd,["HH","mm","ss","sss"]),"HH:mm:ss.sss"),week:lb("week",nc,function(a,b){if(da(a))return a;if(F(a)){nc.lastIndex=0;var d=nc.exec(a);if(d){var c=+d[1],e=+d[2],f=d=0,g=
0,h=0,k=Hd(c),e=7*(e-1);b&&(d=b.getHours(),f=b.getMinutes(),g=b.getSeconds(),h=b.getMilliseconds());return new Date(c,0,k.getDate()+e,d,f,g,h)}}return NaN},"yyyy-Www"),month:lb("month",Ud,Mb(Ud,["yyyy","MM"]),"yyyy-MM"),number:function(a,b,d,c,e,f){Ld(a,b,d,c);kb(a,b,d,c,e,f);c.$$parserName="number";c.$parsers.push(function(a){return c.$isEmpty(a)?null:Cg.test(a)?parseFloat(a):w});c.$formatters.push(function(a){if(!c.$isEmpty(a)){if(!Q(a))throw mb("numfmt",a);a=a.toString()}return a});if(u(d.min)||
d.ngMin){var g;c.$validators.min=function(a){return c.$isEmpty(a)||q(g)||a>=g};d.$observe("min",function(a){u(a)&&!Q(a)&&(a=parseFloat(a,10));g=Q(a)&&!isNaN(a)?a:w;c.$validate()})}if(u(d.max)||d.ngMax){var h;c.$validators.max=function(a){return c.$isEmpty(a)||q(h)||a<=h};d.$observe("max",function(a){u(a)&&!Q(a)&&(a=parseFloat(a,10));h=Q(a)&&!isNaN(a)?a:w;c.$validate()})}},url:function(a,b,d,c,e,f){kb(a,b,d,c,e,f);lc(c);c.$$parserName="url";c.$validators.url=function(a,b){var d=a||b;return c.$isEmpty(d)||
Ag.test(d)}},email:function(a,b,d,c,e,f){kb(a,b,d,c,e,f);lc(c);c.$$parserName="email";c.$validators.email=function(a,b){var d=a||b;return c.$isEmpty(d)||Bg.test(d)}},radio:function(a,b,d,c){q(d.name)&&b.attr("name",++ob);b.on("click",function(a){b[0].checked&&c.$setViewValue(d.value,a&&a.type)});c.$render=function(){b[0].checked=d.value==c.$viewValue};d.$observe("value",c.$render)},checkbox:function(a,b,d,c,e,f,g,h){var k=Md(h,a,"ngTrueValue",d.ngTrueValue,!0),l=Md(h,a,"ngFalseValue",d.ngFalseValue,
!1);b.on("click",function(a){c.$setViewValue(b[0].checked,a&&a.type)});c.$render=function(){b[0].checked=c.$viewValue};c.$isEmpty=function(a){return!1===a};c.$formatters.push(function(a){return ka(a,k)});c.$parsers.push(function(a){return a?k:l})},hidden:z,button:z,submit:z,reset:z,file:z},Ec=["$browser","$sniffer","$filter","$parse",function(a,b,d,c){return{restrict:"E",require:["?ngModel"],link:{pre:function(e,f,g,h){h[0]&&(Wd[K(g.type)]||Wd.text)(e,f,g,h[0],b,a,d,c)}}}}],Dg=/^(true|false|\d+)$/,
Re=function(){return{restrict:"A",priority:100,compile:function(a,b){return Dg.test(b.ngValue)?function(a,b,e){e.$set("value",a.$eval(e.ngValue))}:function(a,b,e){a.$watch(e.ngValue,function(a){e.$set("value",a)})}}}},re=["$compile",function(a){return{restrict:"AC",compile:function(b){a.$$addBindingClass(b);return function(b,c,e){a.$$addBindingInfo(c,e.ngBind);c=c[0];b.$watch(e.ngBind,function(a){c.textContent=q(a)?"":a})}}}}],te=["$interpolate","$compile",function(a,b){return{compile:function(d){b.$$addBindingClass(d);
return function(c,d,f){c=a(d.attr(f.$attr.ngBindTemplate));b.$$addBindingInfo(d,c.expressions);d=d[0];f.$observe("ngBindTemplate",function(a){d.textContent=q(a)?"":a})}}}}],se=["$sce","$parse","$compile",function(a,b,d){return{restrict:"A",compile:function(c,e){var f=b(e.ngBindHtml),g=b(e.ngBindHtml,function(a){return(a||"").toString()});d.$$addBindingClass(c);return function(b,c,e){d.$$addBindingInfo(c,e.ngBindHtml);b.$watch(g,function(){c.html(a.getTrustedHtml(f(b))||"")})}}}}],Qe=na({restrict:"A",
require:"ngModel",link:function(a,b,d,c){c.$viewChangeListeners.push(function(){a.$eval(d.ngChange)})}}),ue=mc("",!0),we=mc("Odd",0),ve=mc("Even",1),xe=Ka({compile:function(a,b){b.$set("ngCloak",w);a.removeClass("ng-cloak")}}),ye=[function(){return{restrict:"A",scope:!0,controller:"@",priority:500}}],Jc={},Eg={blur:!0,focus:!0};n("click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste".split(" "),function(a){var b=
va("ng-"+a);Jc[b]=["$parse","$rootScope",function(d,c){return{restrict:"A",compile:function(e,f){var g=d(f[b],null,!0);return function(b,d){d.on(a,function(d){var e=function(){g(b,{$event:d})};Eg[a]&&c.$$phase?b.$evalAsync(e):b.$apply(e)})}}}}]});var Be=["$animate",function(a){return{multiElement:!0,transclude:"element",priority:600,terminal:!0,restrict:"A",$$tlb:!0,link:function(b,d,c,e,f){var g,h,k;b.$watch(c.ngIf,function(b){b?h||f(function(b,e){h=e;b[b.length++]=W.createComment(" end ngIf: "+
c.ngIf+" ");g={clone:b};a.enter(b,d.parent(),d)}):(k&&(k.remove(),k=null),h&&(h.$destroy(),h=null),g&&(k=sb(g.clone),a.leave(k).then(function(){k=null}),g=null))})}}}],Ce=["$templateRequest","$anchorScroll","$animate",function(a,b,d){return{restrict:"ECA",priority:400,terminal:!0,transclude:"element",controller:$.noop,compile:function(c,e){var f=e.ngInclude||e.src,g=e.onload||"",h=e.autoscroll;return function(c,e,m,n,q){var s=0,y,w,p,x=function(){w&&(w.remove(),w=null);y&&(y.$destroy(),y=null);p&&
(d.leave(p).then(function(){w=null}),w=p,p=null)};c.$watch(f,function(f){var m=function(){!u(h)||h&&!c.$eval(h)||b()},H=++s;f?(a(f,!0).then(function(a){if(!c.$$destroyed&&H===s){var b=c.$new();n.template=a;a=q(b,function(a){x();d.enter(a,null,e).then(m)});y=b;p=a;y.$emit("$includeContentLoaded",f);c.$eval(g)}},function(){c.$$destroyed||H!==s||(x(),c.$emit("$includeContentError",f))}),c.$emit("$includeContentRequested",f)):(x(),n.template=null)})}}}}],Te=["$compile",function(a){return{restrict:"ECA",
priority:-400,require:"ngInclude",link:function(b,d,c,e){/SVG/.test(d[0].toString())?(d.empty(),a(Mc(e.template,W).childNodes)(b,function(a){d.append(a)},{futureParentElement:d})):(d.html(e.template),a(d.contents())(b))}}}],De=Ka({priority:450,compile:function(){return{pre:function(a,b,d){a.$eval(d.ngInit)}}}}),Pe=function(){return{restrict:"A",priority:100,require:"ngModel",link:function(a,b,d,c){var e=b.attr(d.$attr.ngList)||", ",f="false"!==d.ngTrim,g=f?T(e):e;c.$parsers.push(function(a){if(!q(a)){var b=
[];a&&n(a.split(g),function(a){a&&b.push(f?T(a):a)});return b}});c.$formatters.push(function(a){return E(a)?a.join(e):w});c.$isEmpty=function(a){return!a||!a.length}}}},nb="ng-valid",Nd="ng-invalid",Wa="ng-pristine",Lb="ng-dirty",Pd="ng-pending",mb=M("ngModel"),Fg=["$scope","$exceptionHandler","$attrs","$element","$parse","$animate","$timeout","$rootScope","$q","$interpolate",function(a,b,d,c,e,f,g,h,k,l){this.$modelValue=this.$viewValue=Number.NaN;this.$$rawModelValue=w;this.$validators={};this.$asyncValidators=
{};this.$parsers=[];this.$formatters=[];this.$viewChangeListeners=[];this.$untouched=!0;this.$touched=!1;this.$pristine=!0;this.$dirty=!1;this.$valid=!0;this.$invalid=!1;this.$error={};this.$$success={};this.$pending=w;this.$name=l(d.name||"",!1)(a);this.$$parentForm=Kb;var m=e(d.ngModel),r=m.assign,t=m,s=r,y=null,A,p=this;this.$$setOptions=function(a){if((p.$options=a)&&a.getterSetter){var b=e(d.ngModel+"()"),f=e(d.ngModel+"($$$p)");t=function(a){var c=m(a);B(c)&&(c=b(a));return c};s=function(a,
b){B(m(a))?f(a,{$$$p:p.$modelValue}):r(a,p.$modelValue)}}else if(!m.assign)throw mb("nonassign",d.ngModel,ua(c));};this.$render=z;this.$isEmpty=function(a){return q(a)||""===a||null===a||a!==a};var x=0;Kd({ctrl:this,$element:c,set:function(a,b){a[b]=!0},unset:function(a,b){delete a[b]},$animate:f});this.$setPristine=function(){p.$dirty=!1;p.$pristine=!0;f.removeClass(c,Lb);f.addClass(c,Wa)};this.$setDirty=function(){p.$dirty=!0;p.$pristine=!1;f.removeClass(c,Wa);f.addClass(c,Lb);p.$$parentForm.$setDirty()};
this.$setUntouched=function(){p.$touched=!1;p.$untouched=!0;f.setClass(c,"ng-untouched","ng-touched")};this.$setTouched=function(){p.$touched=!0;p.$untouched=!1;f.setClass(c,"ng-touched","ng-untouched")};this.$rollbackViewValue=function(){g.cancel(y);p.$viewValue=p.$$lastCommittedViewValue;p.$render()};this.$validate=function(){if(!Q(p.$modelValue)||!isNaN(p.$modelValue)){var a=p.$$rawModelValue,b=p.$valid,c=p.$modelValue,d=p.$options&&p.$options.allowInvalid;p.$$runValidators(a,p.$$lastCommittedViewValue,
function(e){d||b===e||(p.$modelValue=e?a:w,p.$modelValue!==c&&p.$$writeModelToScope())})}};this.$$runValidators=function(a,b,c){function d(){var c=!0;n(p.$validators,function(d,e){var g=d(a,b);c=c&&g;f(e,g)});return c?!0:(n(p.$asyncValidators,function(a,b){f(b,null)}),!1)}function e(){var c=[],d=!0;n(p.$asyncValidators,function(e,g){var h=e(a,b);if(!h||!B(h.then))throw mb("nopromise",h);f(g,w);c.push(h.then(function(){f(g,!0)},function(a){d=!1;f(g,!1)}))});c.length?k.all(c).then(function(){g(d)},
z):g(!0)}function f(a,b){h===x&&p.$setValidity(a,b)}function g(a){h===x&&c(a)}x++;var h=x;(function(){var a=p.$$parserName||"parse";if(q(A))f(a,null);else return A||(n(p.$validators,function(a,b){f(b,null)}),n(p.$asyncValidators,function(a,b){f(b,null)})),f(a,A),A;return!0})()?d()?e():g(!1):g(!1)};this.$commitViewValue=function(){var a=p.$viewValue;g.cancel(y);if(p.$$lastCommittedViewValue!==a||""===a&&p.$$hasNativeValidators)p.$$lastCommittedViewValue=a,p.$pristine&&this.$setDirty(),this.$$parseAndValidate()};
this.$$parseAndValidate=function(){var b=p.$$lastCommittedViewValue;if(A=q(b)?w:!0)for(var c=0;c<p.$parsers.length;c++)if(b=p.$parsers[c](b),q(b)){A=!1;break}Q(p.$modelValue)&&isNaN(p.$modelValue)&&(p.$modelValue=t(a));var d=p.$modelValue,e=p.$options&&p.$options.allowInvalid;p.$$rawModelValue=b;e&&(p.$modelValue=b,p.$modelValue!==d&&p.$$writeModelToScope());p.$$runValidators(b,p.$$lastCommittedViewValue,function(a){e||(p.$modelValue=a?b:w,p.$modelValue!==d&&p.$$writeModelToScope())})};this.$$writeModelToScope=
function(){s(a,p.$modelValue);n(p.$viewChangeListeners,function(a){try{a()}catch(c){b(c)}})};this.$setViewValue=function(a,b){p.$viewValue=a;p.$options&&!p.$options.updateOnDefault||p.$$debounceViewValueCommit(b)};this.$$debounceViewValueCommit=function(b){var c=0,d=p.$options;d&&u(d.debounce)&&(d=d.debounce,Q(d)?c=d:Q(d[b])?c=d[b]:Q(d["default"])&&(c=d["default"]));g.cancel(y);c?y=g(function(){p.$commitViewValue()},c):h.$$phase?p.$commitViewValue():a.$apply(function(){p.$commitViewValue()})};a.$watch(function(){var b=
t(a);if(b!==p.$modelValue&&(p.$modelValue===p.$modelValue||b===b)){p.$modelValue=p.$$rawModelValue=b;A=w;for(var c=p.$formatters,d=c.length,e=b;d--;)e=c[d](e);p.$viewValue!==e&&(p.$viewValue=p.$$lastCommittedViewValue=e,p.$render(),p.$$runValidators(b,e,z))}return b})}],Oe=["$rootScope",function(a){return{restrict:"A",require:["ngModel","^?form","^?ngModelOptions"],controller:Fg,priority:1,compile:function(b){b.addClass(Wa).addClass("ng-untouched").addClass(nb);return{pre:function(a,b,e,f){var g=
f[0];b=f[1]||g.$$parentForm;g.$$setOptions(f[2]&&f[2].$options);b.$addControl(g);e.$observe("name",function(a){g.$name!==a&&g.$$parentForm.$$renameControl(g,a)});a.$on("$destroy",function(){g.$$parentForm.$removeControl(g)})},post:function(b,c,e,f){var g=f[0];if(g.$options&&g.$options.updateOn)c.on(g.$options.updateOn,function(a){g.$$debounceViewValueCommit(a&&a.type)});c.on("blur",function(c){g.$touched||(a.$$phase?b.$evalAsync(g.$setTouched):b.$apply(g.$setTouched))})}}}}}],Gg=/(\s+|^)default(\s+|$)/,
Se=function(){return{restrict:"A",controller:["$scope","$attrs",function(a,b){var d=this;this.$options=Ma(a.$eval(b.ngModelOptions));u(this.$options.updateOn)?(this.$options.updateOnDefault=!1,this.$options.updateOn=T(this.$options.updateOn.replace(Gg,function(){d.$options.updateOnDefault=!0;return" "}))):this.$options.updateOnDefault=!0}]}},Ee=Ka({terminal:!0,priority:1E3}),Hg=M("ngOptions"),Ig=/^\s*([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+group\s+by\s+([\s\S]+?))?(?:\s+disable\s+when\s+([\s\S]+?))?\s+for\s+(?:([\$\w][\$\w]*)|(?:\(\s*([\$\w][\$\w]*)\s*,\s*([\$\w][\$\w]*)\s*\)))\s+in\s+([\s\S]+?)(?:\s+track\s+by\s+([\s\S]+?))?$/,
Me=["$compile","$parse",function(a,b){function d(a,c,d){function e(a,b,c,d,f){this.selectValue=a;this.viewValue=b;this.label=c;this.group=d;this.disabled=f}function l(a){var b;if(!q&&Aa(a))b=a;else{b=[];for(var c in a)a.hasOwnProperty(c)&&"$"!==c.charAt(0)&&b.push(c)}return b}var m=a.match(Ig);if(!m)throw Hg("iexp",a,ua(c));var n=m[5]||m[7],q=m[6];a=/ as /.test(m[0])&&m[1];var s=m[9];c=b(m[2]?m[1]:n);var y=a&&b(a)||c,u=s&&b(s),p=s?function(a,b){return u(d,b)}:function(a){return Da(a)},x=function(a,
b){return p(a,D(a,b))},v=b(m[2]||m[1]),w=b(m[3]||""),H=b(m[4]||""),A=b(m[8]),z={},D=q?function(a,b){z[q]=b;z[n]=a;return z}:function(a){z[n]=a;return z};return{trackBy:s,getTrackByValue:x,getWatchables:b(A,function(a){var b=[];a=a||[];for(var c=l(a),e=c.length,f=0;f<e;f++){var g=a===c?f:c[f],k=D(a[g],g),g=p(a[g],k);b.push(g);if(m[2]||m[1])g=v(d,k),b.push(g);m[4]&&(k=H(d,k),b.push(k))}return b}),getOptions:function(){for(var a=[],b={},c=A(d)||[],f=l(c),g=f.length,m=0;m<g;m++){var n=c===f?m:f[m],r=
D(c[n],n),q=y(d,r),n=p(q,r),t=v(d,r),u=w(d,r),r=H(d,r),q=new e(n,q,t,u,r);a.push(q);b[n]=q}return{items:a,selectValueMap:b,getOptionFromViewValue:function(a){return b[x(a)]},getViewValueFromOption:function(a){return s?$.copy(a.viewValue):a.viewValue}}}}}var c=W.createElement("option"),e=W.createElement("optgroup");return{restrict:"A",terminal:!0,require:["select","?ngModel"],link:{pre:function(a,b,c,d){d[0].registerOption=z},post:function(b,g,h,k){function l(a,b){a.element=b;b.disabled=a.disabled;
a.label!==b.label&&(b.label=a.label,b.textContent=a.label);a.value!==b.value&&(b.value=a.selectValue)}function m(a,b,c,d){b&&K(b.nodeName)===c?c=b:(c=d.cloneNode(!1),b?a.insertBefore(c,b):a.appendChild(c));return c}function r(a){for(var b;a;)b=a.nextSibling,Zb(a),a=b}function q(a){var b=x&&x[0],c=z&&z[0];if(b||c)for(;a&&(a===b||a===c||8===a.nodeType||"option"===oa(a)&&""===a.value);)a=a.nextSibling;return a}function s(){var a=B&&u.readValue();B=D.getOptions();var b={},d=g[0].firstChild;H&&g.prepend(x);
d=q(d);B.items.forEach(function(a){var f,h;a.group?(f=b[a.group],f||(f=m(g[0],d,"optgroup",e),d=f.nextSibling,f.label=a.group,f=b[a.group]={groupElement:f,currentOptionElement:f.firstChild}),h=m(f.groupElement,f.currentOptionElement,"option",c),l(a,h),f.currentOptionElement=h.nextSibling):(h=m(g[0],d,"option",c),l(a,h),d=h.nextSibling)});Object.keys(b).forEach(function(a){r(b[a].currentOptionElement)});r(d);y.$render();if(!y.$isEmpty(a)){var f=u.readValue();(D.trackBy||p?ka(a,f):a===f)||(y.$setViewValue(f),
y.$render())}}var y=k[1];if(y){var u=k[0],p=h.multiple,x;k=0;for(var v=g.children(),w=v.length;k<w;k++)if(""===v[k].value){x=v.eq(k);break}var H=!!x,z=A(c.cloneNode(!1));z.val("?");var B,D=d(h.ngOptions,g,b);p?(y.$isEmpty=function(a){return!a||0===a.length},u.writeValue=function(a){B.items.forEach(function(a){a.element.selected=!1});a&&a.forEach(function(a){(a=B.getOptionFromViewValue(a))&&!a.disabled&&(a.element.selected=!0)})},u.readValue=function(){var a=g.val()||[],b=[];n(a,function(a){(a=B.selectValueMap[a])&&
!a.disabled&&b.push(B.getViewValueFromOption(a))});return b},D.trackBy&&b.$watchCollection(function(){if(E(y.$viewValue))return y.$viewValue.map(function(a){return D.getTrackByValue(a)})},function(){y.$render()})):(u.writeValue=function(a){var b=B.getOptionFromViewValue(a);b&&!b.disabled?g[0].value!==b.selectValue&&(z.remove(),H||x.remove(),g[0].value=b.selectValue,b.element.selected=!0,b.element.setAttribute("selected","selected")):null===a||H?(z.remove(),H||g.prepend(x),g.val(""),x.prop("selected",
!0),x.attr("selected",!0)):(H||x.remove(),g.prepend(z),g.val("?"),z.prop("selected",!0),z.attr("selected",!0))},u.readValue=function(){var a=B.selectValueMap[g.val()];return a&&!a.disabled?(H||x.remove(),z.remove(),B.getViewValueFromOption(a)):null},D.trackBy&&b.$watch(function(){return D.getTrackByValue(y.$viewValue)},function(){y.$render()}));H?(x.remove(),a(x)(b),x.removeClass("ng-scope")):x=A(c.cloneNode(!1));s();b.$watchCollection(D.getWatchables,s)}}}}}],Fe=["$locale","$interpolate","$log",
function(a,b,d){var c=/{}/g,e=/^when(Minus)?(.+)$/;return{link:function(f,g,h){function k(a){g.text(a||"")}var l=h.count,m=h.$attr.when&&g.attr(h.$attr.when),r=h.offset||0,t=f.$eval(m)||{},s={},u=b.startSymbol(),w=b.endSymbol(),p=u+l+"-"+r+w,x=$.noop,v;n(h,function(a,b){var c=e.exec(b);c&&(c=(c[1]?"-":"")+K(c[2]),t[c]=g.attr(h.$attr[b]))});n(t,function(a,d){s[d]=b(a.replace(c,p))});f.$watch(l,function(b){var c=parseFloat(b),e=isNaN(c);e||c in t||(c=a.pluralCat(c-r));c===v||e&&Q(v)&&isNaN(v)||(x(),
e=s[c],q(e)?(null!=b&&d.debug("ngPluralize: no rule defined for '"+c+"' in "+m),x=z,k()):x=f.$watch(e,k),v=c)})}}}],Ge=["$parse","$animate",function(a,b){var d=M("ngRepeat"),c=function(a,b,c,d,k,l,m){a[c]=d;k&&(a[k]=l);a.$index=b;a.$first=0===b;a.$last=b===m-1;a.$middle=!(a.$first||a.$last);a.$odd=!(a.$even=0===(b&1))};return{restrict:"A",multiElement:!0,transclude:"element",priority:1E3,terminal:!0,$$tlb:!0,compile:function(e,f){var g=f.ngRepeat,h=W.createComment(" end ngRepeat: "+g+" "),k=g.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+track\s+by\s+([\s\S]+?))?\s*$/);
if(!k)throw d("iexp",g);var l=k[1],m=k[2],r=k[3],q=k[4],k=l.match(/^(?:(\s*[\$\w]+)|\(\s*([\$\w]+)\s*,\s*([\$\w]+)\s*\))$/);if(!k)throw d("iidexp",l);var s=k[3]||k[1],u=k[2];if(r&&(!/^[$a-zA-Z_][$a-zA-Z0-9_]*$/.test(r)||/^(null|undefined|this|\$index|\$first|\$middle|\$last|\$even|\$odd|\$parent|\$root|\$id)$/.test(r)))throw d("badident",r);var z,p,x,v,B={$id:Da};q?z=a(q):(x=function(a,b){return Da(b)},v=function(a){return a});return function(a,e,f,k,l){z&&(p=function(b,c,d){u&&(B[u]=b);B[s]=c;B.$index=
d;return z(a,B)});var q=ea();a.$watchCollection(m,function(f){var k,m,t=e[0],z,B=ea(),D,F,G,E,I,J,K;r&&(a[r]=f);if(Aa(f))I=f,m=p||x;else for(K in m=p||v,I=[],f)ra.call(f,K)&&"$"!==K.charAt(0)&&I.push(K);D=I.length;K=Array(D);for(k=0;k<D;k++)if(F=f===I?k:I[k],G=f[F],E=m(F,G,k),q[E])J=q[E],delete q[E],B[E]=J,K[k]=J;else{if(B[E])throw n(K,function(a){a&&a.scope&&(q[a.id]=a)}),d("dupes",g,E,G);K[k]={id:E,scope:w,clone:w};B[E]=!0}for(z in q){J=q[z];E=sb(J.clone);b.leave(E);if(E[0].parentNode)for(k=0,m=
E.length;k<m;k++)E[k].$$NG_REMOVED=!0;J.scope.$destroy()}for(k=0;k<D;k++)if(F=f===I?k:I[k],G=f[F],J=K[k],J.scope){z=t;do z=z.nextSibling;while(z&&z.$$NG_REMOVED);J.clone[0]!=z&&b.move(sb(J.clone),null,A(t));t=J.clone[J.clone.length-1];c(J.scope,k,s,G,u,F,D)}else l(function(a,d){J.scope=d;var e=h.cloneNode(!1);a[a.length++]=e;b.enter(a,null,A(t));t=e;J.clone=a;B[J.id]=J;c(J.scope,k,s,G,u,F,D)});q=B})}}}}],He=["$animate",function(a){return{restrict:"A",multiElement:!0,link:function(b,d,c){b.$watch(c.ngShow,
function(b){a[b?"removeClass":"addClass"](d,"ng-hide",{tempClasses:"ng-hide-animate"})})}}}],Ae=["$animate",function(a){return{restrict:"A",multiElement:!0,link:function(b,d,c){b.$watch(c.ngHide,function(b){a[b?"addClass":"removeClass"](d,"ng-hide",{tempClasses:"ng-hide-animate"})})}}}],Ie=Ka(function(a,b,d){a.$watch(d.ngStyle,function(a,d){d&&a!==d&&n(d,function(a,c){b.css(c,"")});a&&b.css(a)},!0)}),Je=["$animate",function(a){return{require:"ngSwitch",controller:["$scope",function(){this.cases={}}],
link:function(b,d,c,e){var f=[],g=[],h=[],k=[],l=function(a,b){return function(){a.splice(b,1)}};b.$watch(c.ngSwitch||c.on,function(b){var c,d;c=0;for(d=h.length;c<d;++c)a.cancel(h[c]);c=h.length=0;for(d=k.length;c<d;++c){var q=sb(g[c].clone);k[c].$destroy();(h[c]=a.leave(q)).then(l(h,c))}g.length=0;k.length=0;(f=e.cases["!"+b]||e.cases["?"])&&n(f,function(b){b.transclude(function(c,d){k.push(d);var e=b.element;c[c.length++]=W.createComment(" end ngSwitchWhen: ");g.push({clone:c});a.enter(c,e.parent(),
e)})})})}}}],Ke=Ka({transclude:"element",priority:1200,require:"^ngSwitch",multiElement:!0,link:function(a,b,d,c,e){c.cases["!"+d.ngSwitchWhen]=c.cases["!"+d.ngSwitchWhen]||[];c.cases["!"+d.ngSwitchWhen].push({transclude:e,element:b})}}),Le=Ka({transclude:"element",priority:1200,require:"^ngSwitch",multiElement:!0,link:function(a,b,d,c,e){c.cases["?"]=c.cases["?"]||[];c.cases["?"].push({transclude:e,element:b})}}),Ne=Ka({restrict:"EAC",link:function(a,b,d,c,e){if(!e)throw M("ngTransclude")("orphan",
ua(b));e(function(a){b.empty();b.append(a)})}}),ne=["$templateCache",function(a){return{restrict:"E",terminal:!0,compile:function(b,d){"text/ng-template"==d.type&&a.put(d.id,b[0].text)}}}],Jg={$setViewValue:z,$render:z},Kg=["$element","$scope","$attrs",function(a,b,d){var c=this,e=new Sa;c.ngModelCtrl=Jg;c.unknownOption=A(W.createElement("option"));c.renderUnknownOption=function(b){b="? "+Da(b)+" ?";c.unknownOption.val(b);a.prepend(c.unknownOption);a.val(b)};b.$on("$destroy",function(){c.renderUnknownOption=
z});c.removeUnknownOption=function(){c.unknownOption.parent()&&c.unknownOption.remove()};c.readValue=function(){c.removeUnknownOption();return a.val()};c.writeValue=function(b){c.hasOption(b)?(c.removeUnknownOption(),a.val(b),""===b&&c.emptyOption.prop("selected",!0)):null==b&&c.emptyOption?(c.removeUnknownOption(),a.val("")):c.renderUnknownOption(b)};c.addOption=function(a,b){Ra(a,'"option value"');""===a&&(c.emptyOption=b);var d=e.get(a)||0;e.put(a,d+1);c.ngModelCtrl.$render();b[0].hasAttribute("selected")&&
(b[0].selected=!0)};c.removeOption=function(a){var b=e.get(a);b&&(1===b?(e.remove(a),""===a&&(c.emptyOption=w)):e.put(a,b-1))};c.hasOption=function(a){return!!e.get(a)};c.registerOption=function(a,b,d,e,l){if(e){var m;d.$observe("value",function(a){u(m)&&c.removeOption(m);m=a;c.addOption(a,b)})}else l?a.$watch(l,function(a,e){d.$set("value",a);e!==a&&c.removeOption(e);c.addOption(a,b)}):c.addOption(d.value,b);b.on("$destroy",function(){c.removeOption(d.value);c.ngModelCtrl.$render()})}}],oe=function(){return{restrict:"E",
require:["select","?ngModel"],controller:Kg,priority:1,link:{pre:function(a,b,d,c){var e=c[1];if(e){var f=c[0];f.ngModelCtrl=e;b.on("change",function(){a.$apply(function(){e.$setViewValue(f.readValue())})});if(d.multiple){f.readValue=function(){var a=[];n(b.find("option"),function(b){b.selected&&a.push(b.value)});return a};f.writeValue=function(a){var c=new Sa(a);n(b.find("option"),function(a){a.selected=u(c.get(a.value))})};var g,h=NaN;a.$watch(function(){h!==e.$viewValue||ka(g,e.$viewValue)||(g=
ha(e.$viewValue),e.$render());h=e.$viewValue});e.$isEmpty=function(a){return!a||0===a.length}}}},post:function(a,b,d,c){var e=c[1];if(e){var f=c[0];e.$render=function(){f.writeValue(e.$viewValue)}}}}}},qe=["$interpolate",function(a){return{restrict:"E",priority:100,compile:function(b,d){if(u(d.value))var c=a(d.value,!0);else{var e=a(b.text(),!0);e||d.$set("value",b.text())}return function(a,b,d){var k=b.parent();(k=k.data("$selectController")||k.parent().data("$selectController"))&&k.registerOption(a,
b,d,c,e)}}}}],pe=na({restrict:"E",terminal:!1}),Gc=function(){return{restrict:"A",require:"?ngModel",link:function(a,b,d,c){c&&(d.required=!0,c.$validators.required=function(a,b){return!d.required||!c.$isEmpty(b)},d.$observe("required",function(){c.$validate()}))}}},Fc=function(){return{restrict:"A",require:"?ngModel",link:function(a,b,d,c){if(c){var e,f=d.ngPattern||d.pattern;d.$observe("pattern",function(a){F(a)&&0<a.length&&(a=new RegExp("^"+a+"$"));if(a&&!a.test)throw M("ngPattern")("noregexp",
f,a,ua(b));e=a||w;c.$validate()});c.$validators.pattern=function(a,b){return c.$isEmpty(b)||q(e)||e.test(b)}}}}},Ic=function(){return{restrict:"A",require:"?ngModel",link:function(a,b,d,c){if(c){var e=-1;d.$observe("maxlength",function(a){a=Z(a);e=isNaN(a)?-1:a;c.$validate()});c.$validators.maxlength=function(a,b){return 0>e||c.$isEmpty(b)||b.length<=e}}}}},Hc=function(){return{restrict:"A",require:"?ngModel",link:function(a,b,d,c){if(c){var e=0;d.$observe("minlength",function(a){e=Z(a)||0;c.$validate()});
c.$validators.minlength=function(a,b){return c.$isEmpty(b)||b.length>=e}}}}};S.angular.bootstrap?console.log("WARNING: Tried to load angular more than once."):(ge(),ie($),$.module("ngLocale",[],["$provide",function(a){function b(a){a+="";var b=a.indexOf(".");return-1==b?0:a.length-b-1}a.value("$locale",{DATETIME_FORMATS:{AMPMS:["AM","PM"],DAY:"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),ERANAMES:["Before Christ","Anno Domini"],ERAS:["BC","AD"],FIRSTDAYOFWEEK:6,MONTH:"January February March April May June July August September October November December".split(" "),
SHORTDAY:"Sun Mon Tue Wed Thu Fri Sat".split(" "),SHORTMONTH:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),STANDALONEMONTH:"January February March April May June July August September October November December".split(" "),WEEKENDRANGE:[5,6],fullDate:"EEEE, MMMM d, y",longDate:"MMMM d, y",medium:"MMM d, y h:mm:ss a",mediumDate:"MMM d, y",mediumTime:"h:mm:ss a","short":"M/d/yy h:mm a",shortDate:"M/d/yy",shortTime:"h:mm a"},NUMBER_FORMATS:{CURRENCY_SYM:"$",DECIMAL_SEP:".",GROUP_SEP:",",
PATTERNS:[{gSize:3,lgSize:3,maxFrac:3,minFrac:0,minInt:1,negPre:"-",negSuf:"",posPre:"",posSuf:""},{gSize:3,lgSize:3,maxFrac:2,minFrac:2,minInt:1,negPre:"-\u00a4",negSuf:"",posPre:"\u00a4",posSuf:""}]},id:"en-us",pluralCat:function(a,c){var e=a|0,f=c;w===f&&(f=Math.min(b(a),3));Math.pow(10,f);return 1==e&&0==f?"one":"other"}})}]),A(W).ready(function(){ce(W,zc)}))})(window,document);!window.angular.$$csp().noInlineStyle&&window.angular.element(document.head).prepend('<style type="text/css">@charset "UTF-8";[ng\\:cloak],[ng-cloak],[data-ng-cloak],[x-ng-cloak],.ng-cloak,.x-ng-cloak,.ng-hide:not(.ng-hide-animate){display:none !important;}ng\\:form{display:block;}.ng-animate-shim{visibility:hidden;}.ng-anchor{position:absolute;}</style>');
//# sourceMappingURL=angular.min.js.map
         
}catch(e){console.log("Module 'angular': ",e);}
try{/**
 * @license
 * Lodash lodash.com/license | Underscore.js 1.8.3 underscorejs.org/LICENSE
 */
;(function(){function n(n,t,r){switch(r.length){case 0:return n.call(t);case 1:return n.call(t,r[0]);case 2:return n.call(t,r[0],r[1]);case 3:return n.call(t,r[0],r[1],r[2])}return n.apply(t,r)}function t(n,t,r,e){for(var u=-1,i=null==n?0:n.length;++u<i;){var o=n[u];t(e,o,r(o),n)}return e}function r(n,t){for(var r=-1,e=null==n?0:n.length;++r<e&&false!==t(n[r],r,n););return n}function e(n,t){for(var r=null==n?0:n.length;r--&&false!==t(n[r],r,n););return n}function u(n,t){for(var r=-1,e=null==n?0:n.length;++r<e;)if(!t(n[r],r,n))return false;
return true}function i(n,t){for(var r=-1,e=null==n?0:n.length,u=0,i=[];++r<e;){var o=n[r];t(o,r,n)&&(i[u++]=o)}return i}function o(n,t){return!(null==n||!n.length)&&-1<v(n,t,0)}function f(n,t,r){for(var e=-1,u=null==n?0:n.length;++e<u;)if(r(t,n[e]))return true;return false}function c(n,t){for(var r=-1,e=null==n?0:n.length,u=Array(e);++r<e;)u[r]=t(n[r],r,n);return u}function a(n,t){for(var r=-1,e=t.length,u=n.length;++r<e;)n[u+r]=t[r];return n}function l(n,t,r,e){var u=-1,i=null==n?0:n.length;for(e&&i&&(r=n[++u]);++u<i;)r=t(r,n[u],u,n);
return r}function s(n,t,r,e){var u=null==n?0:n.length;for(e&&u&&(r=n[--u]);u--;)r=t(r,n[u],u,n);return r}function h(n,t){for(var r=-1,e=null==n?0:n.length;++r<e;)if(t(n[r],r,n))return true;return false}function p(n,t,r){var e;return r(n,function(n,r,u){if(t(n,r,u))return e=r,false}),e}function _(n,t,r,e){var u=n.length;for(r+=e?1:-1;e?r--:++r<u;)if(t(n[r],r,n))return r;return-1}function v(n,t,r){if(t===t)n:{--r;for(var e=n.length;++r<e;)if(n[r]===t){n=r;break n}n=-1}else n=_(n,d,r);return n}function g(n,t,r,e){
--r;for(var u=n.length;++r<u;)if(e(n[r],t))return r;return-1}function d(n){return n!==n}function y(n,t){var r=null==n?0:n.length;return r?m(n,t)/r:F}function b(n){return function(t){return null==t?T:t[n]}}function x(n){return function(t){return null==n?T:n[t]}}function j(n,t,r,e,u){return u(n,function(n,u,i){r=e?(e=false,n):t(r,n,u,i)}),r}function w(n,t){var r=n.length;for(n.sort(t);r--;)n[r]=n[r].c;return n}function m(n,t){for(var r,e=-1,u=n.length;++e<u;){var i=t(n[e]);i!==T&&(r=r===T?i:r+i)}return r;
}function A(n,t){for(var r=-1,e=Array(n);++r<n;)e[r]=t(r);return e}function E(n,t){return c(t,function(t){return[t,n[t]]})}function k(n){return function(t){return n(t)}}function S(n,t){return c(t,function(t){return n[t]})}function O(n,t){return n.has(t)}function I(n,t){for(var r=-1,e=n.length;++r<e&&-1<v(t,n[r],0););return r}function R(n,t){for(var r=n.length;r--&&-1<v(t,n[r],0););return r}function z(n){return"\\"+Un[n]}function W(n){var t=-1,r=Array(n.size);return n.forEach(function(n,e){r[++t]=[e,n];
}),r}function B(n,t){return function(r){return n(t(r))}}function L(n,t){for(var r=-1,e=n.length,u=0,i=[];++r<e;){var o=n[r];o!==t&&"__lodash_placeholder__"!==o||(n[r]="__lodash_placeholder__",i[u++]=r)}return i}function U(n){var t=-1,r=Array(n.size);return n.forEach(function(n){r[++t]=n}),r}function C(n){var t=-1,r=Array(n.size);return n.forEach(function(n){r[++t]=[n,n]}),r}function D(n){if(Rn.test(n)){for(var t=On.lastIndex=0;On.test(n);)++t;n=t}else n=Qn(n);return n}function M(n){return Rn.test(n)?n.match(On)||[]:n.split("");
}var T,$=1/0,F=NaN,N=[["ary",128],["bind",1],["bindKey",2],["curry",8],["curryRight",16],["flip",512],["partial",32],["partialRight",64],["rearg",256]],P=/\b__p\+='';/g,Z=/\b(__p\+=)''\+/g,q=/(__e\(.*?\)|\b__t\))\+'';/g,V=/&(?:amp|lt|gt|quot|#39);/g,K=/[&<>"']/g,G=RegExp(V.source),H=RegExp(K.source),J=/<%-([\s\S]+?)%>/g,Y=/<%([\s\S]+?)%>/g,Q=/<%=([\s\S]+?)%>/g,X=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,nn=/^\w*$/,tn=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,rn=/[\\^$.*+?()[\]{}|]/g,en=RegExp(rn.source),un=/^\s+|\s+$/g,on=/^\s+/,fn=/\s+$/,cn=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,an=/\{\n\/\* \[wrapped with (.+)\] \*/,ln=/,? & /,sn=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,hn=/\\(\\)?/g,pn=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,_n=/\w*$/,vn=/^[-+]0x[0-9a-f]+$/i,gn=/^0b[01]+$/i,dn=/^\[object .+?Constructor\]$/,yn=/^0o[0-7]+$/i,bn=/^(?:0|[1-9]\d*)$/,xn=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,jn=/($^)/,wn=/['\n\r\u2028\u2029\\]/g,mn="[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?(?:\\u200d(?:[^\\ud800-\\udfff]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff])[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?)*",An="(?:[\\u2700-\\u27bf]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff])"+mn,En="(?:[^\\ud800-\\udfff][\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]?|[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff])",kn=RegExp("['\u2019]","g"),Sn=RegExp("[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]","g"),On=RegExp("\\ud83c[\\udffb-\\udfff](?=\\ud83c[\\udffb-\\udfff])|"+En+mn,"g"),In=RegExp(["[A-Z\\xc0-\\xd6\\xd8-\\xde]?[a-z\\xdf-\\xf6\\xf8-\\xff]+(?:['\u2019](?:d|ll|m|re|s|t|ve))?(?=[\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000]|[A-Z\\xc0-\\xd6\\xd8-\\xde]|$)|(?:[A-Z\\xc0-\\xd6\\xd8-\\xde]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])+(?:['\u2019](?:D|LL|M|RE|S|T|VE))?(?=[\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000]|[A-Z\\xc0-\\xd6\\xd8-\\xde](?:[a-z\\xdf-\\xf6\\xf8-\\xff]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])|$)|[A-Z\\xc0-\\xd6\\xd8-\\xde]?(?:[a-z\\xdf-\\xf6\\xf8-\\xff]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])+(?:['\u2019](?:d|ll|m|re|s|t|ve))?|[A-Z\\xc0-\\xd6\\xd8-\\xde]+(?:['\u2019](?:D|LL|M|RE|S|T|VE))?|\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])|\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])|\\d+",An].join("|"),"g"),Rn=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]"),zn=/[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Wn="Array Buffer DataView Date Error Float32Array Float64Array Function Int8Array Int16Array Int32Array Map Math Object Promise RegExp Set String Symbol TypeError Uint8Array Uint8ClampedArray Uint16Array Uint32Array WeakMap _ clearTimeout isFinite parseInt setTimeout".split(" "),Bn={};
Bn["[object Float32Array]"]=Bn["[object Float64Array]"]=Bn["[object Int8Array]"]=Bn["[object Int16Array]"]=Bn["[object Int32Array]"]=Bn["[object Uint8Array]"]=Bn["[object Uint8ClampedArray]"]=Bn["[object Uint16Array]"]=Bn["[object Uint32Array]"]=true,Bn["[object Arguments]"]=Bn["[object Array]"]=Bn["[object ArrayBuffer]"]=Bn["[object Boolean]"]=Bn["[object DataView]"]=Bn["[object Date]"]=Bn["[object Error]"]=Bn["[object Function]"]=Bn["[object Map]"]=Bn["[object Number]"]=Bn["[object Object]"]=Bn["[object RegExp]"]=Bn["[object Set]"]=Bn["[object String]"]=Bn["[object WeakMap]"]=false;
var Ln={};Ln["[object Arguments]"]=Ln["[object Array]"]=Ln["[object ArrayBuffer]"]=Ln["[object DataView]"]=Ln["[object Boolean]"]=Ln["[object Date]"]=Ln["[object Float32Array]"]=Ln["[object Float64Array]"]=Ln["[object Int8Array]"]=Ln["[object Int16Array]"]=Ln["[object Int32Array]"]=Ln["[object Map]"]=Ln["[object Number]"]=Ln["[object Object]"]=Ln["[object RegExp]"]=Ln["[object Set]"]=Ln["[object String]"]=Ln["[object Symbol]"]=Ln["[object Uint8Array]"]=Ln["[object Uint8ClampedArray]"]=Ln["[object Uint16Array]"]=Ln["[object Uint32Array]"]=true,
Ln["[object Error]"]=Ln["[object Function]"]=Ln["[object WeakMap]"]=false;var Un={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Cn=parseFloat,Dn=parseInt,Mn=typeof global=="object"&&global&&global.Object===Object&&global,Tn=typeof self=="object"&&self&&self.Object===Object&&self,$n=Mn||Tn||Function("return this")(),Fn=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Nn=Fn&&typeof module=="object"&&module&&!module.nodeType&&module,Pn=Nn&&Nn.exports===Fn,Zn=Pn&&Mn.process,qn=function(){
try{var n=Nn&&Nn.f&&Nn.f("util").types;return n?n:Zn&&Zn.binding&&Zn.binding("util")}catch(n){}}(),Vn=qn&&qn.isArrayBuffer,Kn=qn&&qn.isDate,Gn=qn&&qn.isMap,Hn=qn&&qn.isRegExp,Jn=qn&&qn.isSet,Yn=qn&&qn.isTypedArray,Qn=b("length"),Xn=x({"\xc0":"A","\xc1":"A","\xc2":"A","\xc3":"A","\xc4":"A","\xc5":"A","\xe0":"a","\xe1":"a","\xe2":"a","\xe3":"a","\xe4":"a","\xe5":"a","\xc7":"C","\xe7":"c","\xd0":"D","\xf0":"d","\xc8":"E","\xc9":"E","\xca":"E","\xcb":"E","\xe8":"e","\xe9":"e","\xea":"e","\xeb":"e","\xcc":"I",
"\xcd":"I","\xce":"I","\xcf":"I","\xec":"i","\xed":"i","\xee":"i","\xef":"i","\xd1":"N","\xf1":"n","\xd2":"O","\xd3":"O","\xd4":"O","\xd5":"O","\xd6":"O","\xd8":"O","\xf2":"o","\xf3":"o","\xf4":"o","\xf5":"o","\xf6":"o","\xf8":"o","\xd9":"U","\xda":"U","\xdb":"U","\xdc":"U","\xf9":"u","\xfa":"u","\xfb":"u","\xfc":"u","\xdd":"Y","\xfd":"y","\xff":"y","\xc6":"Ae","\xe6":"ae","\xde":"Th","\xfe":"th","\xdf":"ss","\u0100":"A","\u0102":"A","\u0104":"A","\u0101":"a","\u0103":"a","\u0105":"a","\u0106":"C",
"\u0108":"C","\u010a":"C","\u010c":"C","\u0107":"c","\u0109":"c","\u010b":"c","\u010d":"c","\u010e":"D","\u0110":"D","\u010f":"d","\u0111":"d","\u0112":"E","\u0114":"E","\u0116":"E","\u0118":"E","\u011a":"E","\u0113":"e","\u0115":"e","\u0117":"e","\u0119":"e","\u011b":"e","\u011c":"G","\u011e":"G","\u0120":"G","\u0122":"G","\u011d":"g","\u011f":"g","\u0121":"g","\u0123":"g","\u0124":"H","\u0126":"H","\u0125":"h","\u0127":"h","\u0128":"I","\u012a":"I","\u012c":"I","\u012e":"I","\u0130":"I","\u0129":"i",
"\u012b":"i","\u012d":"i","\u012f":"i","\u0131":"i","\u0134":"J","\u0135":"j","\u0136":"K","\u0137":"k","\u0138":"k","\u0139":"L","\u013b":"L","\u013d":"L","\u013f":"L","\u0141":"L","\u013a":"l","\u013c":"l","\u013e":"l","\u0140":"l","\u0142":"l","\u0143":"N","\u0145":"N","\u0147":"N","\u014a":"N","\u0144":"n","\u0146":"n","\u0148":"n","\u014b":"n","\u014c":"O","\u014e":"O","\u0150":"O","\u014d":"o","\u014f":"o","\u0151":"o","\u0154":"R","\u0156":"R","\u0158":"R","\u0155":"r","\u0157":"r","\u0159":"r",
"\u015a":"S","\u015c":"S","\u015e":"S","\u0160":"S","\u015b":"s","\u015d":"s","\u015f":"s","\u0161":"s","\u0162":"T","\u0164":"T","\u0166":"T","\u0163":"t","\u0165":"t","\u0167":"t","\u0168":"U","\u016a":"U","\u016c":"U","\u016e":"U","\u0170":"U","\u0172":"U","\u0169":"u","\u016b":"u","\u016d":"u","\u016f":"u","\u0171":"u","\u0173":"u","\u0174":"W","\u0175":"w","\u0176":"Y","\u0177":"y","\u0178":"Y","\u0179":"Z","\u017b":"Z","\u017d":"Z","\u017a":"z","\u017c":"z","\u017e":"z","\u0132":"IJ","\u0133":"ij",
"\u0152":"Oe","\u0153":"oe","\u0149":"'n","\u017f":"s"}),nt=x({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"}),tt=x({"&amp;":"&","&lt;":"<","&gt;":">","&quot;":'"',"&#39;":"'"}),rt=function x(mn){function An(n){if(du(n)&&!of(n)&&!(n instanceof Un)){if(n instanceof On)return n;if(ii.call(n,"__wrapped__"))return $e(n)}return new On(n)}function En(){}function On(n,t){this.__wrapped__=n,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=T}function Un(n){this.__wrapped__=n,
this.__actions__=[],this.__dir__=1,this.__filtered__=false,this.__iteratees__=[],this.__takeCount__=4294967295,this.__views__=[]}function Mn(n){var t=-1,r=null==n?0:n.length;for(this.clear();++t<r;){var e=n[t];this.set(e[0],e[1])}}function Tn(n){var t=-1,r=null==n?0:n.length;for(this.clear();++t<r;){var e=n[t];this.set(e[0],e[1])}}function Fn(n){var t=-1,r=null==n?0:n.length;for(this.clear();++t<r;){var e=n[t];this.set(e[0],e[1])}}function Nn(n){var t=-1,r=null==n?0:n.length;for(this.__data__=new Fn;++t<r;)this.add(n[t]);
}function Zn(n){this.size=(this.__data__=new Tn(n)).size}function qn(n,t){var r,e=of(n),u=!e&&uf(n),i=!e&&!u&&cf(n),o=!e&&!u&&!i&&pf(n),u=(e=e||u||i||o)?A(n.length,Xu):[],f=u.length;for(r in n)!t&&!ii.call(n,r)||e&&("length"==r||i&&("offset"==r||"parent"==r)||o&&("buffer"==r||"byteLength"==r||"byteOffset"==r)||Se(r,f))||u.push(r);return u}function Qn(n){var t=n.length;return t?n[ir(0,t-1)]:T}function et(n,t){return Ce(Ur(n),pt(t,0,n.length))}function ut(n){return Ce(Ur(n))}function it(n,t,r){(r===T||au(n[t],r))&&(r!==T||t in n)||st(n,t,r);
}function ot(n,t,r){var e=n[t];ii.call(n,t)&&au(e,r)&&(r!==T||t in n)||st(n,t,r)}function ft(n,t){for(var r=n.length;r--;)if(au(n[r][0],t))return r;return-1}function ct(n,t,r,e){return eo(n,function(n,u,i){t(e,n,r(n),i)}),e}function at(n,t){return n&&Cr(t,zu(t),n)}function lt(n,t){return n&&Cr(t,Wu(t),n)}function st(n,t,r){"__proto__"==t&&mi?mi(n,t,{configurable:true,enumerable:true,value:r,writable:true}):n[t]=r}function ht(n,t){for(var r=-1,e=t.length,u=Vu(e),i=null==n;++r<e;)u[r]=i?T:Iu(n,t[r]);return u;
}function pt(n,t,r){return n===n&&(r!==T&&(n=n<=r?n:r),t!==T&&(n=n>=t?n:t)),n}function _t(n,t,e,u,i,o){var f,c=1&t,a=2&t,l=4&t;if(e&&(f=i?e(n,u,i,o):e(n)),f!==T)return f;if(!gu(n))return n;if(u=of(n)){if(f=me(n),!c)return Ur(n,f)}else{var s=_o(n),h="[object Function]"==s||"[object GeneratorFunction]"==s;if(cf(n))return Ir(n,c);if("[object Object]"==s||"[object Arguments]"==s||h&&!i){if(f=a||h?{}:Ae(n),!c)return a?Mr(n,lt(f,n)):Dr(n,at(f,n))}else{if(!Ln[s])return i?n:{};f=Ee(n,s,c)}}if(o||(o=new Zn),
i=o.get(n))return i;if(o.set(n,f),hf(n))return n.forEach(function(r){f.add(_t(r,t,e,r,n,o))}),f;if(lf(n))return n.forEach(function(r,u){f.set(u,_t(r,t,e,u,n,o))}),f;var a=l?a?ve:_e:a?Wu:zu,p=u?T:a(n);return r(p||n,function(r,u){p&&(u=r,r=n[u]),ot(f,u,_t(r,t,e,u,n,o))}),f}function vt(n){var t=zu(n);return function(r){return gt(r,n,t)}}function gt(n,t,r){var e=r.length;if(null==n)return!e;for(n=Yu(n);e--;){var u=r[e],i=t[u],o=n[u];if(o===T&&!(u in n)||!i(o))return false}return true}function dt(n,t,r){if(typeof n!="function")throw new ni("Expected a function");
return yo(function(){n.apply(T,r)},t)}function yt(n,t,r,e){var u=-1,i=o,a=true,l=n.length,s=[],h=t.length;if(!l)return s;r&&(t=c(t,k(r))),e?(i=f,a=false):200<=t.length&&(i=O,a=false,t=new Nn(t));n:for(;++u<l;){var p=n[u],_=null==r?p:r(p),p=e||0!==p?p:0;if(a&&_===_){for(var v=h;v--;)if(t[v]===_)continue n;s.push(p)}else i(t,_,e)||s.push(p)}return s}function bt(n,t){var r=true;return eo(n,function(n,e,u){return r=!!t(n,e,u)}),r}function xt(n,t,r){for(var e=-1,u=n.length;++e<u;){var i=n[e],o=t(i);if(null!=o&&(f===T?o===o&&!ju(o):r(o,f)))var f=o,c=i;
}return c}function jt(n,t){var r=[];return eo(n,function(n,e,u){t(n,e,u)&&r.push(n)}),r}function wt(n,t,r,e,u){var i=-1,o=n.length;for(r||(r=ke),u||(u=[]);++i<o;){var f=n[i];0<t&&r(f)?1<t?wt(f,t-1,r,e,u):a(u,f):e||(u[u.length]=f)}return u}function mt(n,t){return n&&io(n,t,zu)}function At(n,t){return n&&oo(n,t,zu)}function Et(n,t){return i(t,function(t){return pu(n[t])})}function kt(n,t){t=Sr(t,n);for(var r=0,e=t.length;null!=n&&r<e;)n=n[De(t[r++])];return r&&r==e?n:T}function St(n,t,r){return t=t(n),
of(n)?t:a(t,r(n))}function Ot(n){if(null==n)n=n===T?"[object Undefined]":"[object Null]";else if(wi&&wi in Yu(n)){var t=ii.call(n,wi),r=n[wi];try{n[wi]=T;var e=true}catch(n){}var u=ci.call(n);e&&(t?n[wi]=r:delete n[wi]),n=u}else n=ci.call(n);return n}function It(n,t){return n>t}function Rt(n,t){return null!=n&&ii.call(n,t)}function zt(n,t){return null!=n&&t in Yu(n)}function Wt(n,t,r){for(var e=r?f:o,u=n[0].length,i=n.length,a=i,l=Vu(i),s=1/0,h=[];a--;){var p=n[a];a&&t&&(p=c(p,k(t))),s=Ui(p.length,s),
l[a]=!r&&(t||120<=u&&120<=p.length)?new Nn(a&&p):T}var p=n[0],_=-1,v=l[0];n:for(;++_<u&&h.length<s;){var g=p[_],d=t?t(g):g,g=r||0!==g?g:0;if(v?!O(v,d):!e(h,d,r)){for(a=i;--a;){var y=l[a];if(y?!O(y,d):!e(n[a],d,r))continue n}v&&v.push(d),h.push(g)}}return h}function Bt(n,t,r){var e={};return mt(n,function(n,u,i){t(e,r(n),u,i)}),e}function Lt(t,r,e){return r=Sr(r,t),t=2>r.length?t:kt(t,hr(r,0,-1)),r=null==t?t:t[De(qe(r))],null==r?T:n(r,t,e)}function Ut(n){return du(n)&&"[object Arguments]"==Ot(n)}function Ct(n){
return du(n)&&"[object ArrayBuffer]"==Ot(n)}function Dt(n){return du(n)&&"[object Date]"==Ot(n)}function Mt(n,t,r,e,u){if(n===t)t=true;else if(null==n||null==t||!du(n)&&!du(t))t=n!==n&&t!==t;else n:{var i=of(n),o=of(t),f=i?"[object Array]":_o(n),c=o?"[object Array]":_o(t),f="[object Arguments]"==f?"[object Object]":f,c="[object Arguments]"==c?"[object Object]":c,a="[object Object]"==f,o="[object Object]"==c;if((c=f==c)&&cf(n)){if(!cf(t)){t=false;break n}i=true,a=false}if(c&&!a)u||(u=new Zn),t=i||pf(n)?se(n,t,r,e,Mt,u):he(n,t,f,r,e,Mt,u);else{
if(!(1&r)&&(i=a&&ii.call(n,"__wrapped__"),f=o&&ii.call(t,"__wrapped__"),i||f)){n=i?n.value():n,t=f?t.value():t,u||(u=new Zn),t=Mt(n,t,r,e,u);break n}if(c)t:if(u||(u=new Zn),i=1&r,f=_e(n),o=f.length,c=_e(t).length,o==c||i){for(a=o;a--;){var l=f[a];if(!(i?l in t:ii.call(t,l))){t=false;break t}}if((c=u.get(n))&&u.get(t))t=c==t;else{c=true,u.set(n,t),u.set(t,n);for(var s=i;++a<o;){var l=f[a],h=n[l],p=t[l];if(e)var _=i?e(p,h,l,t,n,u):e(h,p,l,n,t,u);if(_===T?h!==p&&!Mt(h,p,r,e,u):!_){c=false;break}s||(s="constructor"==l);
}c&&!s&&(r=n.constructor,e=t.constructor,r!=e&&"constructor"in n&&"constructor"in t&&!(typeof r=="function"&&r instanceof r&&typeof e=="function"&&e instanceof e)&&(c=false)),u.delete(n),u.delete(t),t=c}}else t=false;else t=false}}return t}function Tt(n){return du(n)&&"[object Map]"==_o(n)}function $t(n,t,r,e){var u=r.length,i=u,o=!e;if(null==n)return!i;for(n=Yu(n);u--;){var f=r[u];if(o&&f[2]?f[1]!==n[f[0]]:!(f[0]in n))return false}for(;++u<i;){var f=r[u],c=f[0],a=n[c],l=f[1];if(o&&f[2]){if(a===T&&!(c in n))return false;
}else{if(f=new Zn,e)var s=e(a,l,c,n,t,f);if(s===T?!Mt(l,a,3,e,f):!s)return false}}return true}function Ft(n){return!(!gu(n)||fi&&fi in n)&&(pu(n)?si:dn).test(Me(n))}function Nt(n){return du(n)&&"[object RegExp]"==Ot(n)}function Pt(n){return du(n)&&"[object Set]"==_o(n)}function Zt(n){return du(n)&&vu(n.length)&&!!Bn[Ot(n)]}function qt(n){return typeof n=="function"?n:null==n?Tu:typeof n=="object"?of(n)?Jt(n[0],n[1]):Ht(n):Pu(n)}function Vt(n){if(!ze(n))return Bi(n);var t,r=[];for(t in Yu(n))ii.call(n,t)&&"constructor"!=t&&r.push(t);
return r}function Kt(n,t){return n<t}function Gt(n,t){var r=-1,e=lu(n)?Vu(n.length):[];return eo(n,function(n,u,i){e[++r]=t(n,u,i)}),e}function Ht(n){var t=xe(n);return 1==t.length&&t[0][2]?We(t[0][0],t[0][1]):function(r){return r===n||$t(r,n,t)}}function Jt(n,t){return Ie(n)&&t===t&&!gu(t)?We(De(n),t):function(r){var e=Iu(r,n);return e===T&&e===t?Ru(r,n):Mt(t,e,3)}}function Yt(n,t,r,e,u){n!==t&&io(t,function(i,o){if(gu(i)){u||(u=new Zn);var f=u,c="__proto__"==o?T:n[o],a="__proto__"==o?T:t[o],l=f.get(a);
if(l)it(n,o,l);else{var l=e?e(c,a,o+"",n,t,f):T,s=l===T;if(s){var h=of(a),p=!h&&cf(a),_=!h&&!p&&pf(a),l=a;h||p||_?of(c)?l=c:su(c)?l=Ur(c):p?(s=false,l=Ir(a,true)):_?(s=false,l=zr(a,true)):l=[]:bu(a)||uf(a)?(l=c,uf(c)?l=Su(c):(!gu(c)||r&&pu(c))&&(l=Ae(a))):s=false}s&&(f.set(a,l),Yt(l,a,r,e,f),f.delete(a)),it(n,o,l)}}else f=e?e("__proto__"==o?T:n[o],i,o+"",n,t,u):T,f===T&&(f=i),it(n,o,f)},Wu)}function Qt(n,t){var r=n.length;if(r)return t+=0>t?r:0,Se(t,r)?n[t]:T}function Xt(n,t,r){var e=-1;return t=c(t.length?t:[Tu],k(ye())),
n=Gt(n,function(n){return{a:c(t,function(t){return t(n)}),b:++e,c:n}}),w(n,function(n,t){var e;n:{e=-1;for(var u=n.a,i=t.a,o=u.length,f=r.length;++e<o;){var c=Wr(u[e],i[e]);if(c){e=e>=f?c:c*("desc"==r[e]?-1:1);break n}}e=n.b-t.b}return e})}function nr(n,t){return tr(n,t,function(t,r){return Ru(n,r)})}function tr(n,t,r){for(var e=-1,u=t.length,i={};++e<u;){var o=t[e],f=kt(n,o);r(f,o)&&lr(i,Sr(o,n),f)}return i}function rr(n){return function(t){return kt(t,n)}}function er(n,t,r,e){var u=e?g:v,i=-1,o=t.length,f=n;
for(n===t&&(t=Ur(t)),r&&(f=c(n,k(r)));++i<o;)for(var a=0,l=t[i],l=r?r(l):l;-1<(a=u(f,l,a,e));)f!==n&&bi.call(f,a,1),bi.call(n,a,1);return n}function ur(n,t){for(var r=n?t.length:0,e=r-1;r--;){var u=t[r];if(r==e||u!==i){var i=u;Se(u)?bi.call(n,u,1):xr(n,u)}}}function ir(n,t){return n+Oi(Mi()*(t-n+1))}function or(n,t){var r="";if(!n||1>t||9007199254740991<t)return r;do t%2&&(r+=n),(t=Oi(t/2))&&(n+=n);while(t);return r}function fr(n,t){return bo(Be(n,t,Tu),n+"")}function cr(n){return Qn(Lu(n))}function ar(n,t){
var r=Lu(n);return Ce(r,pt(t,0,r.length))}function lr(n,t,r,e){if(!gu(n))return n;t=Sr(t,n);for(var u=-1,i=t.length,o=i-1,f=n;null!=f&&++u<i;){var c=De(t[u]),a=r;if(u!=o){var l=f[c],a=e?e(l,c,f):T;a===T&&(a=gu(l)?l:Se(t[u+1])?[]:{})}ot(f,c,a),f=f[c]}return n}function sr(n){return Ce(Lu(n))}function hr(n,t,r){var e=-1,u=n.length;for(0>t&&(t=-t>u?0:u+t),r=r>u?u:r,0>r&&(r+=u),u=t>r?0:r-t>>>0,t>>>=0,r=Vu(u);++e<u;)r[e]=n[e+t];return r}function pr(n,t){var r;return eo(n,function(n,e,u){return r=t(n,e,u),
!r}),!!r}function _r(n,t,r){var e=0,u=null==n?e:n.length;if(typeof t=="number"&&t===t&&2147483647>=u){for(;e<u;){var i=e+u>>>1,o=n[i];null!==o&&!ju(o)&&(r?o<=t:o<t)?e=i+1:u=i}return u}return vr(n,t,Tu,r)}function vr(n,t,r,e){t=r(t);for(var u=0,i=null==n?0:n.length,o=t!==t,f=null===t,c=ju(t),a=t===T;u<i;){var l=Oi((u+i)/2),s=r(n[l]),h=s!==T,p=null===s,_=s===s,v=ju(s);(o?e||_:a?_&&(e||h):f?_&&h&&(e||!p):c?_&&h&&!p&&(e||!v):p||v?0:e?s<=t:s<t)?u=l+1:i=l}return Ui(i,4294967294)}function gr(n,t){for(var r=-1,e=n.length,u=0,i=[];++r<e;){
var o=n[r],f=t?t(o):o;if(!r||!au(f,c)){var c=f;i[u++]=0===o?0:o}}return i}function dr(n){return typeof n=="number"?n:ju(n)?F:+n}function yr(n){if(typeof n=="string")return n;if(of(n))return c(n,yr)+"";if(ju(n))return to?to.call(n):"";var t=n+"";return"0"==t&&1/n==-$?"-0":t}function br(n,t,r){var e=-1,u=o,i=n.length,c=true,a=[],l=a;if(r)c=false,u=f;else if(200<=i){if(u=t?null:lo(n))return U(u);c=false,u=O,l=new Nn}else l=t?[]:a;n:for(;++e<i;){var s=n[e],h=t?t(s):s,s=r||0!==s?s:0;if(c&&h===h){for(var p=l.length;p--;)if(l[p]===h)continue n;
t&&l.push(h),a.push(s)}else u(l,h,r)||(l!==a&&l.push(h),a.push(s))}return a}function xr(n,t){return t=Sr(t,n),n=2>t.length?n:kt(n,hr(t,0,-1)),null==n||delete n[De(qe(t))]}function jr(n,t,r,e){for(var u=n.length,i=e?u:-1;(e?i--:++i<u)&&t(n[i],i,n););return r?hr(n,e?0:i,e?i+1:u):hr(n,e?i+1:0,e?u:i)}function wr(n,t){var r=n;return r instanceof Un&&(r=r.value()),l(t,function(n,t){return t.func.apply(t.thisArg,a([n],t.args))},r)}function mr(n,t,r){var e=n.length;if(2>e)return e?br(n[0]):[];for(var u=-1,i=Vu(e);++u<e;)for(var o=n[u],f=-1;++f<e;)f!=u&&(i[u]=yt(i[u]||o,n[f],t,r));
return br(wt(i,1),t,r)}function Ar(n,t,r){for(var e=-1,u=n.length,i=t.length,o={};++e<u;)r(o,n[e],e<i?t[e]:T);return o}function Er(n){return su(n)?n:[]}function kr(n){return typeof n=="function"?n:Tu}function Sr(n,t){return of(n)?n:Ie(n,t)?[n]:xo(Ou(n))}function Or(n,t,r){var e=n.length;return r=r===T?e:r,!t&&r>=e?n:hr(n,t,r)}function Ir(n,t){if(t)return n.slice();var r=n.length,r=vi?vi(r):new n.constructor(r);return n.copy(r),r}function Rr(n){var t=new n.constructor(n.byteLength);return new _i(t).set(new _i(n)),
t}function zr(n,t){return new n.constructor(t?Rr(n.buffer):n.buffer,n.byteOffset,n.length)}function Wr(n,t){if(n!==t){var r=n!==T,e=null===n,u=n===n,i=ju(n),o=t!==T,f=null===t,c=t===t,a=ju(t);if(!f&&!a&&!i&&n>t||i&&o&&c&&!f&&!a||e&&o&&c||!r&&c||!u)return 1;if(!e&&!i&&!a&&n<t||a&&r&&u&&!e&&!i||f&&r&&u||!o&&u||!c)return-1}return 0}function Br(n,t,r,e){var u=-1,i=n.length,o=r.length,f=-1,c=t.length,a=Li(i-o,0),l=Vu(c+a);for(e=!e;++f<c;)l[f]=t[f];for(;++u<o;)(e||u<i)&&(l[r[u]]=n[u]);for(;a--;)l[f++]=n[u++];
return l}function Lr(n,t,r,e){var u=-1,i=n.length,o=-1,f=r.length,c=-1,a=t.length,l=Li(i-f,0),s=Vu(l+a);for(e=!e;++u<l;)s[u]=n[u];for(l=u;++c<a;)s[l+c]=t[c];for(;++o<f;)(e||u<i)&&(s[l+r[o]]=n[u++]);return s}function Ur(n,t){var r=-1,e=n.length;for(t||(t=Vu(e));++r<e;)t[r]=n[r];return t}function Cr(n,t,r,e){var u=!r;r||(r={});for(var i=-1,o=t.length;++i<o;){var f=t[i],c=e?e(r[f],n[f],f,r,n):T;c===T&&(c=n[f]),u?st(r,f,c):ot(r,f,c)}return r}function Dr(n,t){return Cr(n,ho(n),t)}function Mr(n,t){return Cr(n,po(n),t);
}function Tr(n,r){return function(e,u){var i=of(e)?t:ct,o=r?r():{};return i(e,n,ye(u,2),o)}}function $r(n){return fr(function(t,r){var e=-1,u=r.length,i=1<u?r[u-1]:T,o=2<u?r[2]:T,i=3<n.length&&typeof i=="function"?(u--,i):T;for(o&&Oe(r[0],r[1],o)&&(i=3>u?T:i,u=1),t=Yu(t);++e<u;)(o=r[e])&&n(t,o,e,i);return t})}function Fr(n,t){return function(r,e){if(null==r)return r;if(!lu(r))return n(r,e);for(var u=r.length,i=t?u:-1,o=Yu(r);(t?i--:++i<u)&&false!==e(o[i],i,o););return r}}function Nr(n){return function(t,r,e){
var u=-1,i=Yu(t);e=e(t);for(var o=e.length;o--;){var f=e[n?o:++u];if(false===r(i[f],f,i))break}return t}}function Pr(n,t,r){function e(){return(this&&this!==$n&&this instanceof e?i:n).apply(u?r:this,arguments)}var u=1&t,i=Vr(n);return e}function Zr(n){return function(t){t=Ou(t);var r=Rn.test(t)?M(t):T,e=r?r[0]:t.charAt(0);return t=r?Or(r,1).join(""):t.slice(1),e[n]()+t}}function qr(n){return function(t){return l(Du(Cu(t).replace(kn,"")),n,"")}}function Vr(n){return function(){var t=arguments;switch(t.length){
case 0:return new n;case 1:return new n(t[0]);case 2:return new n(t[0],t[1]);case 3:return new n(t[0],t[1],t[2]);case 4:return new n(t[0],t[1],t[2],t[3]);case 5:return new n(t[0],t[1],t[2],t[3],t[4]);case 6:return new n(t[0],t[1],t[2],t[3],t[4],t[5]);case 7:return new n(t[0],t[1],t[2],t[3],t[4],t[5],t[6])}var r=ro(n.prototype),t=n.apply(r,t);return gu(t)?t:r}}function Kr(t,r,e){function u(){for(var o=arguments.length,f=Vu(o),c=o,a=de(u);c--;)f[c]=arguments[c];return c=3>o&&f[0]!==a&&f[o-1]!==a?[]:L(f,a),
o-=c.length,o<e?ue(t,r,Jr,u.placeholder,T,f,c,T,T,e-o):n(this&&this!==$n&&this instanceof u?i:t,this,f)}var i=Vr(t);return u}function Gr(n){return function(t,r,e){var u=Yu(t);if(!lu(t)){var i=ye(r,3);t=zu(t),r=function(n){return i(u[n],n,u)}}return r=n(t,r,e),-1<r?u[i?t[r]:r]:T}}function Hr(n){return pe(function(t){var r=t.length,e=r,u=On.prototype.thru;for(n&&t.reverse();e--;){var i=t[e];if(typeof i!="function")throw new ni("Expected a function");if(u&&!o&&"wrapper"==ge(i))var o=new On([],true)}for(e=o?e:r;++e<r;)var i=t[e],u=ge(i),f="wrapper"==u?so(i):T,o=f&&Re(f[0])&&424==f[1]&&!f[4].length&&1==f[9]?o[ge(f[0])].apply(o,f[3]):1==i.length&&Re(i)?o[u]():o.thru(i);
return function(){var n=arguments,e=n[0];if(o&&1==n.length&&of(e))return o.plant(e).value();for(var u=0,n=r?t[u].apply(this,n):e;++u<r;)n=t[u].call(this,n);return n}})}function Jr(n,t,r,e,u,i,o,f,c,a){function l(){for(var d=arguments.length,y=Vu(d),b=d;b--;)y[b]=arguments[b];if(_){var x,j=de(l),b=y.length;for(x=0;b--;)y[b]===j&&++x}if(e&&(y=Br(y,e,u,_)),i&&(y=Lr(y,i,o,_)),d-=x,_&&d<a)return j=L(y,j),ue(n,t,Jr,l.placeholder,r,y,j,f,c,a-d);if(j=h?r:this,b=p?j[n]:n,d=y.length,f){x=y.length;for(var w=Ui(f.length,x),m=Ur(y);w--;){
var A=f[w];y[w]=Se(A,x)?m[A]:T}}else v&&1<d&&y.reverse();return s&&c<d&&(y.length=c),this&&this!==$n&&this instanceof l&&(b=g||Vr(b)),b.apply(j,y)}var s=128&t,h=1&t,p=2&t,_=24&t,v=512&t,g=p?T:Vr(n);return l}function Yr(n,t){return function(r,e){return Bt(r,n,t(e))}}function Qr(n,t){return function(r,e){var u;if(r===T&&e===T)return t;if(r!==T&&(u=r),e!==T){if(u===T)return e;typeof r=="string"||typeof e=="string"?(r=yr(r),e=yr(e)):(r=dr(r),e=dr(e)),u=n(r,e)}return u}}function Xr(t){return pe(function(r){
return r=c(r,k(ye())),fr(function(e){var u=this;return t(r,function(t){return n(t,u,e)})})})}function ne(n,t){t=t===T?" ":yr(t);var r=t.length;return 2>r?r?or(t,n):t:(r=or(t,Si(n/D(t))),Rn.test(t)?Or(M(r),0,n).join(""):r.slice(0,n))}function te(t,r,e,u){function i(){for(var r=-1,c=arguments.length,a=-1,l=u.length,s=Vu(l+c),h=this&&this!==$n&&this instanceof i?f:t;++a<l;)s[a]=u[a];for(;c--;)s[a++]=arguments[++r];return n(h,o?e:this,s)}var o=1&r,f=Vr(t);return i}function re(n){return function(t,r,e){
e&&typeof e!="number"&&Oe(t,r,e)&&(r=e=T),t=mu(t),r===T?(r=t,t=0):r=mu(r),e=e===T?t<r?1:-1:mu(e);var u=-1;r=Li(Si((r-t)/(e||1)),0);for(var i=Vu(r);r--;)i[n?r:++u]=t,t+=e;return i}}function ee(n){return function(t,r){return typeof t=="string"&&typeof r=="string"||(t=ku(t),r=ku(r)),n(t,r)}}function ue(n,t,r,e,u,i,o,f,c,a){var l=8&t,s=l?o:T;o=l?T:o;var h=l?i:T;return i=l?T:i,t=(t|(l?32:64))&~(l?64:32),4&t||(t&=-4),u=[n,t,u,h,s,i,o,f,c,a],r=r.apply(T,u),Re(n)&&go(r,u),r.placeholder=e,Le(r,n,t)}function ie(n){
var t=Ju[n];return function(n,r){if(n=ku(n),r=null==r?0:Ui(Au(r),292)){var e=(Ou(n)+"e").split("e"),e=t(e[0]+"e"+(+e[1]+r)),e=(Ou(e)+"e").split("e");return+(e[0]+"e"+(+e[1]-r))}return t(n)}}function oe(n){return function(t){var r=_o(t);return"[object Map]"==r?W(t):"[object Set]"==r?C(t):E(t,n(t))}}function fe(n,t,r,e,u,i,o,f){var c=2&t;if(!c&&typeof n!="function")throw new ni("Expected a function");var a=e?e.length:0;if(a||(t&=-97,e=u=T),o=o===T?o:Li(Au(o),0),f=f===T?f:Au(f),a-=u?u.length:0,64&t){
var l=e,s=u;e=u=T}var h=c?T:so(n);return i=[n,t,r,e,u,l,s,i,o,f],h&&(r=i[1],n=h[1],t=r|n,e=128==n&&8==r||128==n&&256==r&&i[7].length<=h[8]||384==n&&h[7].length<=h[8]&&8==r,131>t||e)&&(1&n&&(i[2]=h[2],t|=1&r?0:4),(r=h[3])&&(e=i[3],i[3]=e?Br(e,r,h[4]):r,i[4]=e?L(i[3],"__lodash_placeholder__"):h[4]),(r=h[5])&&(e=i[5],i[5]=e?Lr(e,r,h[6]):r,i[6]=e?L(i[5],"__lodash_placeholder__"):h[6]),(r=h[7])&&(i[7]=r),128&n&&(i[8]=null==i[8]?h[8]:Ui(i[8],h[8])),null==i[9]&&(i[9]=h[9]),i[0]=h[0],i[1]=t),n=i[0],t=i[1],
r=i[2],e=i[3],u=i[4],f=i[9]=i[9]===T?c?0:n.length:Li(i[9]-a,0),!f&&24&t&&(t&=-25),Le((h?fo:go)(t&&1!=t?8==t||16==t?Kr(n,t,f):32!=t&&33!=t||u.length?Jr.apply(T,i):te(n,t,r,e):Pr(n,t,r),i),n,t)}function ce(n,t,r,e){return n===T||au(n,ri[r])&&!ii.call(e,r)?t:n}function ae(n,t,r,e,u,i){return gu(n)&&gu(t)&&(i.set(t,n),Yt(n,t,T,ae,i),i.delete(t)),n}function le(n){return bu(n)?T:n}function se(n,t,r,e,u,i){var o=1&r,f=n.length,c=t.length;if(f!=c&&!(o&&c>f))return false;if((c=i.get(n))&&i.get(t))return c==t;var c=-1,a=true,l=2&r?new Nn:T;
for(i.set(n,t),i.set(t,n);++c<f;){var s=n[c],p=t[c];if(e)var _=o?e(p,s,c,t,n,i):e(s,p,c,n,t,i);if(_!==T){if(_)continue;a=false;break}if(l){if(!h(t,function(n,t){if(!O(l,t)&&(s===n||u(s,n,r,e,i)))return l.push(t)})){a=false;break}}else if(s!==p&&!u(s,p,r,e,i)){a=false;break}}return i.delete(n),i.delete(t),a}function he(n,t,r,e,u,i,o){switch(r){case"[object DataView]":if(n.byteLength!=t.byteLength||n.byteOffset!=t.byteOffset)break;n=n.buffer,t=t.buffer;case"[object ArrayBuffer]":if(n.byteLength!=t.byteLength||!i(new _i(n),new _i(t)))break;
return true;case"[object Boolean]":case"[object Date]":case"[object Number]":return au(+n,+t);case"[object Error]":return n.name==t.name&&n.message==t.message;case"[object RegExp]":case"[object String]":return n==t+"";case"[object Map]":var f=W;case"[object Set]":if(f||(f=U),n.size!=t.size&&!(1&e))break;return(r=o.get(n))?r==t:(e|=2,o.set(n,t),t=se(f(n),f(t),e,u,i,o),o.delete(n),t);case"[object Symbol]":if(no)return no.call(n)==no.call(t)}return false}function pe(n){return bo(Be(n,T,Pe),n+"")}function _e(n){
return St(n,zu,ho)}function ve(n){return St(n,Wu,po)}function ge(n){for(var t=n.name+"",r=Ki[t],e=ii.call(Ki,t)?r.length:0;e--;){var u=r[e],i=u.func;if(null==i||i==n)return u.name}return t}function de(n){return(ii.call(An,"placeholder")?An:n).placeholder}function ye(){var n=An.iteratee||$u,n=n===$u?qt:n;return arguments.length?n(arguments[0],arguments[1]):n}function be(n,t){var r=n.__data__,e=typeof t;return("string"==e||"number"==e||"symbol"==e||"boolean"==e?"__proto__"!==t:null===t)?r[typeof t=="string"?"string":"hash"]:r.map;
}function xe(n){for(var t=zu(n),r=t.length;r--;){var e=t[r],u=n[e];t[r]=[e,u,u===u&&!gu(u)]}return t}function je(n,t){var r=null==n?T:n[t];return Ft(r)?r:T}function we(n,t,r){t=Sr(t,n);for(var e=-1,u=t.length,i=false;++e<u;){var o=De(t[e]);if(!(i=null!=n&&r(n,o)))break;n=n[o]}return i||++e!=u?i:(u=null==n?0:n.length,!!u&&vu(u)&&Se(o,u)&&(of(n)||uf(n)))}function me(n){var t=n.length,r=new n.constructor(t);return t&&"string"==typeof n[0]&&ii.call(n,"index")&&(r.index=n.index,r.input=n.input),r}function Ae(n){
return typeof n.constructor!="function"||ze(n)?{}:ro(gi(n))}function Ee(n,t,r){var e=n.constructor;switch(t){case"[object ArrayBuffer]":return Rr(n);case"[object Boolean]":case"[object Date]":return new e(+n);case"[object DataView]":return t=r?Rr(n.buffer):n.buffer,new n.constructor(t,n.byteOffset,n.byteLength);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":
case"[object Uint16Array]":case"[object Uint32Array]":return zr(n,r);case"[object Map]":return new e;case"[object Number]":case"[object String]":return new e(n);case"[object RegExp]":return t=new n.constructor(n.source,_n.exec(n)),t.lastIndex=n.lastIndex,t;case"[object Set]":return new e;case"[object Symbol]":return no?Yu(no.call(n)):{}}}function ke(n){return of(n)||uf(n)||!!(xi&&n&&n[xi])}function Se(n,t){var r=typeof n;return t=null==t?9007199254740991:t,!!t&&("number"==r||"symbol"!=r&&bn.test(n))&&-1<n&&0==n%1&&n<t;
}function Oe(n,t,r){if(!gu(r))return false;var e=typeof t;return!!("number"==e?lu(r)&&Se(t,r.length):"string"==e&&t in r)&&au(r[t],n)}function Ie(n,t){if(of(n))return false;var r=typeof n;return!("number"!=r&&"symbol"!=r&&"boolean"!=r&&null!=n&&!ju(n))||(nn.test(n)||!X.test(n)||null!=t&&n in Yu(t))}function Re(n){var t=ge(n),r=An[t];return typeof r=="function"&&t in Un.prototype&&(n===r||(t=so(r),!!t&&n===t[0]))}function ze(n){var t=n&&n.constructor;return n===(typeof t=="function"&&t.prototype||ri)}function We(n,t){
return function(r){return null!=r&&(r[n]===t&&(t!==T||n in Yu(r)))}}function Be(t,r,e){return r=Li(r===T?t.length-1:r,0),function(){for(var u=arguments,i=-1,o=Li(u.length-r,0),f=Vu(o);++i<o;)f[i]=u[r+i];for(i=-1,o=Vu(r+1);++i<r;)o[i]=u[i];return o[r]=e(f),n(t,this,o)}}function Le(n,t,r){var e=t+"";t=bo;var u,i=Te;return u=(u=e.match(an))?u[1].split(ln):[],r=i(u,r),(i=r.length)&&(u=i-1,r[u]=(1<i?"& ":"")+r[u],r=r.join(2<i?", ":" "),e=e.replace(cn,"{\n/* [wrapped with "+r+"] */\n")),t(n,e)}function Ue(n){
var t=0,r=0;return function(){var e=Ci(),u=16-(e-r);if(r=e,0<u){if(800<=++t)return arguments[0]}else t=0;return n.apply(T,arguments)}}function Ce(n,t){var r=-1,e=n.length,u=e-1;for(t=t===T?e:t;++r<t;){var e=ir(r,u),i=n[e];n[e]=n[r],n[r]=i}return n.length=t,n}function De(n){if(typeof n=="string"||ju(n))return n;var t=n+"";return"0"==t&&1/n==-$?"-0":t}function Me(n){if(null!=n){try{return ui.call(n)}catch(n){}return n+""}return""}function Te(n,t){return r(N,function(r){var e="_."+r[0];t&r[1]&&!o(n,e)&&n.push(e);
}),n.sort()}function $e(n){if(n instanceof Un)return n.clone();var t=new On(n.__wrapped__,n.__chain__);return t.__actions__=Ur(n.__actions__),t.__index__=n.__index__,t.__values__=n.__values__,t}function Fe(n,t,r){var e=null==n?0:n.length;return e?(r=null==r?0:Au(r),0>r&&(r=Li(e+r,0)),_(n,ye(t,3),r)):-1}function Ne(n,t,r){var e=null==n?0:n.length;if(!e)return-1;var u=e-1;return r!==T&&(u=Au(r),u=0>r?Li(e+u,0):Ui(u,e-1)),_(n,ye(t,3),u,true)}function Pe(n){return(null==n?0:n.length)?wt(n,1):[]}function Ze(n){
return n&&n.length?n[0]:T}function qe(n){var t=null==n?0:n.length;return t?n[t-1]:T}function Ve(n,t){return n&&n.length&&t&&t.length?er(n,t):n}function Ke(n){return null==n?n:Ti.call(n)}function Ge(n){if(!n||!n.length)return[];var t=0;return n=i(n,function(n){if(su(n))return t=Li(n.length,t),true}),A(t,function(t){return c(n,b(t))})}function He(t,r){if(!t||!t.length)return[];var e=Ge(t);return null==r?e:c(e,function(t){return n(r,T,t)})}function Je(n){return n=An(n),n.__chain__=true,n}function Ye(n,t){
return t(n)}function Qe(){return this}function Xe(n,t){return(of(n)?r:eo)(n,ye(t,3))}function nu(n,t){return(of(n)?e:uo)(n,ye(t,3))}function tu(n,t){return(of(n)?c:Gt)(n,ye(t,3))}function ru(n,t,r){return t=r?T:t,t=n&&null==t?n.length:t,fe(n,128,T,T,T,T,t)}function eu(n,t){var r;if(typeof t!="function")throw new ni("Expected a function");return n=Au(n),function(){return 0<--n&&(r=t.apply(this,arguments)),1>=n&&(t=T),r}}function uu(n,t,r){return t=r?T:t,n=fe(n,8,T,T,T,T,T,t),n.placeholder=uu.placeholder,
n}function iu(n,t,r){return t=r?T:t,n=fe(n,16,T,T,T,T,T,t),n.placeholder=iu.placeholder,n}function ou(n,t,r){function e(t){var r=c,e=a;return c=a=T,_=t,s=n.apply(e,r)}function u(n){var r=n-p;return n-=_,p===T||r>=t||0>r||g&&n>=l}function i(){var n=Ko();if(u(n))return o(n);var r,e=yo;r=n-_,n=t-(n-p),r=g?Ui(n,l-r):n,h=e(i,r)}function o(n){return h=T,d&&c?e(n):(c=a=T,s)}function f(){var n=Ko(),r=u(n);if(c=arguments,a=this,p=n,r){if(h===T)return _=n=p,h=yo(i,t),v?e(n):s;if(g)return h=yo(i,t),e(p)}return h===T&&(h=yo(i,t)),
s}var c,a,l,s,h,p,_=0,v=false,g=false,d=true;if(typeof n!="function")throw new ni("Expected a function");return t=ku(t)||0,gu(r)&&(v=!!r.leading,l=(g="maxWait"in r)?Li(ku(r.maxWait)||0,t):l,d="trailing"in r?!!r.trailing:d),f.cancel=function(){h!==T&&ao(h),_=0,c=p=a=h=T},f.flush=function(){return h===T?s:o(Ko())},f}function fu(n,t){function r(){var e=arguments,u=t?t.apply(this,e):e[0],i=r.cache;return i.has(u)?i.get(u):(e=n.apply(this,e),r.cache=i.set(u,e)||i,e)}if(typeof n!="function"||null!=t&&typeof t!="function")throw new ni("Expected a function");
return r.cache=new(fu.Cache||Fn),r}function cu(n){if(typeof n!="function")throw new ni("Expected a function");return function(){var t=arguments;switch(t.length){case 0:return!n.call(this);case 1:return!n.call(this,t[0]);case 2:return!n.call(this,t[0],t[1]);case 3:return!n.call(this,t[0],t[1],t[2])}return!n.apply(this,t)}}function au(n,t){return n===t||n!==n&&t!==t}function lu(n){return null!=n&&vu(n.length)&&!pu(n)}function su(n){return du(n)&&lu(n)}function hu(n){if(!du(n))return false;var t=Ot(n);return"[object Error]"==t||"[object DOMException]"==t||typeof n.message=="string"&&typeof n.name=="string"&&!bu(n);
}function pu(n){return!!gu(n)&&(n=Ot(n),"[object Function]"==n||"[object GeneratorFunction]"==n||"[object AsyncFunction]"==n||"[object Proxy]"==n)}function _u(n){return typeof n=="number"&&n==Au(n)}function vu(n){return typeof n=="number"&&-1<n&&0==n%1&&9007199254740991>=n}function gu(n){var t=typeof n;return null!=n&&("object"==t||"function"==t)}function du(n){return null!=n&&typeof n=="object"}function yu(n){return typeof n=="number"||du(n)&&"[object Number]"==Ot(n)}function bu(n){return!(!du(n)||"[object Object]"!=Ot(n))&&(n=gi(n),
null===n||(n=ii.call(n,"constructor")&&n.constructor,typeof n=="function"&&n instanceof n&&ui.call(n)==ai))}function xu(n){return typeof n=="string"||!of(n)&&du(n)&&"[object String]"==Ot(n)}function ju(n){return typeof n=="symbol"||du(n)&&"[object Symbol]"==Ot(n)}function wu(n){if(!n)return[];if(lu(n))return xu(n)?M(n):Ur(n);if(ji&&n[ji]){n=n[ji]();for(var t,r=[];!(t=n.next()).done;)r.push(t.value);return r}return t=_o(n),("[object Map]"==t?W:"[object Set]"==t?U:Lu)(n)}function mu(n){return n?(n=ku(n),
n===$||n===-$?1.7976931348623157e308*(0>n?-1:1):n===n?n:0):0===n?n:0}function Au(n){n=mu(n);var t=n%1;return n===n?t?n-t:n:0}function Eu(n){return n?pt(Au(n),0,4294967295):0}function ku(n){if(typeof n=="number")return n;if(ju(n))return F;if(gu(n)&&(n=typeof n.valueOf=="function"?n.valueOf():n,n=gu(n)?n+"":n),typeof n!="string")return 0===n?n:+n;n=n.replace(un,"");var t=gn.test(n);return t||yn.test(n)?Dn(n.slice(2),t?2:8):vn.test(n)?F:+n}function Su(n){return Cr(n,Wu(n))}function Ou(n){return null==n?"":yr(n);
}function Iu(n,t,r){return n=null==n?T:kt(n,t),n===T?r:n}function Ru(n,t){return null!=n&&we(n,t,zt)}function zu(n){return lu(n)?qn(n):Vt(n)}function Wu(n){if(lu(n))n=qn(n,true);else if(gu(n)){var t,r=ze(n),e=[];for(t in n)("constructor"!=t||!r&&ii.call(n,t))&&e.push(t);n=e}else{if(t=[],null!=n)for(r in Yu(n))t.push(r);n=t}return n}function Bu(n,t){if(null==n)return{};var r=c(ve(n),function(n){return[n]});return t=ye(t),tr(n,r,function(n,r){return t(n,r[0])})}function Lu(n){return null==n?[]:S(n,zu(n));
}function Uu(n){return Tf(Ou(n).toLowerCase())}function Cu(n){return(n=Ou(n))&&n.replace(xn,Xn).replace(Sn,"")}function Du(n,t,r){return n=Ou(n),t=r?T:t,t===T?zn.test(n)?n.match(In)||[]:n.match(sn)||[]:n.match(t)||[]}function Mu(n){return function(){return n}}function Tu(n){return n}function $u(n){return qt(typeof n=="function"?n:_t(n,1))}function Fu(n,t,e){var u=zu(t),i=Et(t,u);null!=e||gu(t)&&(i.length||!u.length)||(e=t,t=n,n=this,i=Et(t,zu(t)));var o=!(gu(e)&&"chain"in e&&!e.chain),f=pu(n);return r(i,function(r){
var e=t[r];n[r]=e,f&&(n.prototype[r]=function(){var t=this.__chain__;if(o||t){var r=n(this.__wrapped__);return(r.__actions__=Ur(this.__actions__)).push({func:e,args:arguments,thisArg:n}),r.__chain__=t,r}return e.apply(n,a([this.value()],arguments))})}),n}function Nu(){}function Pu(n){return Ie(n)?b(De(n)):rr(n)}function Zu(){return[]}function qu(){return false}mn=null==mn?$n:rt.defaults($n.Object(),mn,rt.pick($n,Wn));var Vu=mn.Array,Ku=mn.Date,Gu=mn.Error,Hu=mn.Function,Ju=mn.Math,Yu=mn.Object,Qu=mn.RegExp,Xu=mn.String,ni=mn.TypeError,ti=Vu.prototype,ri=Yu.prototype,ei=mn["__core-js_shared__"],ui=Hu.prototype.toString,ii=ri.hasOwnProperty,oi=0,fi=function(){
var n=/[^.]+$/.exec(ei&&ei.keys&&ei.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}(),ci=ri.toString,ai=ui.call(Yu),li=$n._,si=Qu("^"+ui.call(ii).replace(rn,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),hi=Pn?mn.Buffer:T,pi=mn.Symbol,_i=mn.Uint8Array,vi=hi?hi.g:T,gi=B(Yu.getPrototypeOf,Yu),di=Yu.create,yi=ri.propertyIsEnumerable,bi=ti.splice,xi=pi?pi.isConcatSpreadable:T,ji=pi?pi.iterator:T,wi=pi?pi.toStringTag:T,mi=function(){try{var n=je(Yu,"defineProperty");
return n({},"",{}),n}catch(n){}}(),Ai=mn.clearTimeout!==$n.clearTimeout&&mn.clearTimeout,Ei=Ku&&Ku.now!==$n.Date.now&&Ku.now,ki=mn.setTimeout!==$n.setTimeout&&mn.setTimeout,Si=Ju.ceil,Oi=Ju.floor,Ii=Yu.getOwnPropertySymbols,Ri=hi?hi.isBuffer:T,zi=mn.isFinite,Wi=ti.join,Bi=B(Yu.keys,Yu),Li=Ju.max,Ui=Ju.min,Ci=Ku.now,Di=mn.parseInt,Mi=Ju.random,Ti=ti.reverse,$i=je(mn,"DataView"),Fi=je(mn,"Map"),Ni=je(mn,"Promise"),Pi=je(mn,"Set"),Zi=je(mn,"WeakMap"),qi=je(Yu,"create"),Vi=Zi&&new Zi,Ki={},Gi=Me($i),Hi=Me(Fi),Ji=Me(Ni),Yi=Me(Pi),Qi=Me(Zi),Xi=pi?pi.prototype:T,no=Xi?Xi.valueOf:T,to=Xi?Xi.toString:T,ro=function(){
function n(){}return function(t){return gu(t)?di?di(t):(n.prototype=t,t=new n,n.prototype=T,t):{}}}();An.templateSettings={escape:J,evaluate:Y,interpolate:Q,variable:"",imports:{_:An}},An.prototype=En.prototype,An.prototype.constructor=An,On.prototype=ro(En.prototype),On.prototype.constructor=On,Un.prototype=ro(En.prototype),Un.prototype.constructor=Un,Mn.prototype.clear=function(){this.__data__=qi?qi(null):{},this.size=0},Mn.prototype.delete=function(n){return n=this.has(n)&&delete this.__data__[n],
this.size-=n?1:0,n},Mn.prototype.get=function(n){var t=this.__data__;return qi?(n=t[n],"__lodash_hash_undefined__"===n?T:n):ii.call(t,n)?t[n]:T},Mn.prototype.has=function(n){var t=this.__data__;return qi?t[n]!==T:ii.call(t,n)},Mn.prototype.set=function(n,t){var r=this.__data__;return this.size+=this.has(n)?0:1,r[n]=qi&&t===T?"__lodash_hash_undefined__":t,this},Tn.prototype.clear=function(){this.__data__=[],this.size=0},Tn.prototype.delete=function(n){var t=this.__data__;return n=ft(t,n),!(0>n)&&(n==t.length-1?t.pop():bi.call(t,n,1),
--this.size,true)},Tn.prototype.get=function(n){var t=this.__data__;return n=ft(t,n),0>n?T:t[n][1]},Tn.prototype.has=function(n){return-1<ft(this.__data__,n)},Tn.prototype.set=function(n,t){var r=this.__data__,e=ft(r,n);return 0>e?(++this.size,r.push([n,t])):r[e][1]=t,this},Fn.prototype.clear=function(){this.size=0,this.__data__={hash:new Mn,map:new(Fi||Tn),string:new Mn}},Fn.prototype.delete=function(n){return n=be(this,n).delete(n),this.size-=n?1:0,n},Fn.prototype.get=function(n){return be(this,n).get(n);
},Fn.prototype.has=function(n){return be(this,n).has(n)},Fn.prototype.set=function(n,t){var r=be(this,n),e=r.size;return r.set(n,t),this.size+=r.size==e?0:1,this},Nn.prototype.add=Nn.prototype.push=function(n){return this.__data__.set(n,"__lodash_hash_undefined__"),this},Nn.prototype.has=function(n){return this.__data__.has(n)},Zn.prototype.clear=function(){this.__data__=new Tn,this.size=0},Zn.prototype.delete=function(n){var t=this.__data__;return n=t.delete(n),this.size=t.size,n},Zn.prototype.get=function(n){
return this.__data__.get(n)},Zn.prototype.has=function(n){return this.__data__.has(n)},Zn.prototype.set=function(n,t){var r=this.__data__;if(r instanceof Tn){var e=r.__data__;if(!Fi||199>e.length)return e.push([n,t]),this.size=++r.size,this;r=this.__data__=new Fn(e)}return r.set(n,t),this.size=r.size,this};var eo=Fr(mt),uo=Fr(At,true),io=Nr(),oo=Nr(true),fo=Vi?function(n,t){return Vi.set(n,t),n}:Tu,co=mi?function(n,t){return mi(n,"toString",{configurable:true,enumerable:false,value:Mu(t),writable:true})}:Tu,ao=Ai||function(n){
return $n.clearTimeout(n)},lo=Pi&&1/U(new Pi([,-0]))[1]==$?function(n){return new Pi(n)}:Nu,so=Vi?function(n){return Vi.get(n)}:Nu,ho=Ii?function(n){return null==n?[]:(n=Yu(n),i(Ii(n),function(t){return yi.call(n,t)}))}:Zu,po=Ii?function(n){for(var t=[];n;)a(t,ho(n)),n=gi(n);return t}:Zu,_o=Ot;($i&&"[object DataView]"!=_o(new $i(new ArrayBuffer(1)))||Fi&&"[object Map]"!=_o(new Fi)||Ni&&"[object Promise]"!=_o(Ni.resolve())||Pi&&"[object Set]"!=_o(new Pi)||Zi&&"[object WeakMap]"!=_o(new Zi))&&(_o=function(n){
var t=Ot(n);if(n=(n="[object Object]"==t?n.constructor:T)?Me(n):"")switch(n){case Gi:return"[object DataView]";case Hi:return"[object Map]";case Ji:return"[object Promise]";case Yi:return"[object Set]";case Qi:return"[object WeakMap]"}return t});var vo=ei?pu:qu,go=Ue(fo),yo=ki||function(n,t){return $n.setTimeout(n,t)},bo=Ue(co),xo=function(n){n=fu(n,function(n){return 500===t.size&&t.clear(),n});var t=n.cache;return n}(function(n){var t=[];return 46===n.charCodeAt(0)&&t.push(""),n.replace(tn,function(n,r,e,u){
t.push(e?u.replace(hn,"$1"):r||n)}),t}),jo=fr(function(n,t){return su(n)?yt(n,wt(t,1,su,true)):[]}),wo=fr(function(n,t){var r=qe(t);return su(r)&&(r=T),su(n)?yt(n,wt(t,1,su,true),ye(r,2)):[]}),mo=fr(function(n,t){var r=qe(t);return su(r)&&(r=T),su(n)?yt(n,wt(t,1,su,true),T,r):[]}),Ao=fr(function(n){var t=c(n,Er);return t.length&&t[0]===n[0]?Wt(t):[]}),Eo=fr(function(n){var t=qe(n),r=c(n,Er);return t===qe(r)?t=T:r.pop(),r.length&&r[0]===n[0]?Wt(r,ye(t,2)):[]}),ko=fr(function(n){var t=qe(n),r=c(n,Er);return(t=typeof t=="function"?t:T)&&r.pop(),
r.length&&r[0]===n[0]?Wt(r,T,t):[]}),So=fr(Ve),Oo=pe(function(n,t){var r=null==n?0:n.length,e=ht(n,t);return ur(n,c(t,function(n){return Se(n,r)?+n:n}).sort(Wr)),e}),Io=fr(function(n){return br(wt(n,1,su,true))}),Ro=fr(function(n){var t=qe(n);return su(t)&&(t=T),br(wt(n,1,su,true),ye(t,2))}),zo=fr(function(n){var t=qe(n),t=typeof t=="function"?t:T;return br(wt(n,1,su,true),T,t)}),Wo=fr(function(n,t){return su(n)?yt(n,t):[]}),Bo=fr(function(n){return mr(i(n,su))}),Lo=fr(function(n){var t=qe(n);return su(t)&&(t=T),
mr(i(n,su),ye(t,2))}),Uo=fr(function(n){var t=qe(n),t=typeof t=="function"?t:T;return mr(i(n,su),T,t)}),Co=fr(Ge),Do=fr(function(n){var t=n.length,t=1<t?n[t-1]:T,t=typeof t=="function"?(n.pop(),t):T;return He(n,t)}),Mo=pe(function(n){function t(t){return ht(t,n)}var r=n.length,e=r?n[0]:0,u=this.__wrapped__;return!(1<r||this.__actions__.length)&&u instanceof Un&&Se(e)?(u=u.slice(e,+e+(r?1:0)),u.__actions__.push({func:Ye,args:[t],thisArg:T}),new On(u,this.__chain__).thru(function(n){return r&&!n.length&&n.push(T),
n})):this.thru(t)}),To=Tr(function(n,t,r){ii.call(n,r)?++n[r]:st(n,r,1)}),$o=Gr(Fe),Fo=Gr(Ne),No=Tr(function(n,t,r){ii.call(n,r)?n[r].push(t):st(n,r,[t])}),Po=fr(function(t,r,e){var u=-1,i=typeof r=="function",o=lu(t)?Vu(t.length):[];return eo(t,function(t){o[++u]=i?n(r,t,e):Lt(t,r,e)}),o}),Zo=Tr(function(n,t,r){st(n,r,t)}),qo=Tr(function(n,t,r){n[r?0:1].push(t)},function(){return[[],[]]}),Vo=fr(function(n,t){if(null==n)return[];var r=t.length;return 1<r&&Oe(n,t[0],t[1])?t=[]:2<r&&Oe(t[0],t[1],t[2])&&(t=[t[0]]),
Xt(n,wt(t,1),[])}),Ko=Ei||function(){return $n.Date.now()},Go=fr(function(n,t,r){var e=1;if(r.length)var u=L(r,de(Go)),e=32|e;return fe(n,e,t,r,u)}),Ho=fr(function(n,t,r){var e=3;if(r.length)var u=L(r,de(Ho)),e=32|e;return fe(t,e,n,r,u)}),Jo=fr(function(n,t){return dt(n,1,t)}),Yo=fr(function(n,t,r){return dt(n,ku(t)||0,r)});fu.Cache=Fn;var Qo=fr(function(t,r){r=1==r.length&&of(r[0])?c(r[0],k(ye())):c(wt(r,1),k(ye()));var e=r.length;return fr(function(u){for(var i=-1,o=Ui(u.length,e);++i<o;)u[i]=r[i].call(this,u[i]);
return n(t,this,u)})}),Xo=fr(function(n,t){return fe(n,32,T,t,L(t,de(Xo)))}),nf=fr(function(n,t){return fe(n,64,T,t,L(t,de(nf)))}),tf=pe(function(n,t){return fe(n,256,T,T,T,t)}),rf=ee(It),ef=ee(function(n,t){return n>=t}),uf=Ut(function(){return arguments}())?Ut:function(n){return du(n)&&ii.call(n,"callee")&&!yi.call(n,"callee")},of=Vu.isArray,ff=Vn?k(Vn):Ct,cf=Ri||qu,af=Kn?k(Kn):Dt,lf=Gn?k(Gn):Tt,sf=Hn?k(Hn):Nt,hf=Jn?k(Jn):Pt,pf=Yn?k(Yn):Zt,_f=ee(Kt),vf=ee(function(n,t){return n<=t}),gf=$r(function(n,t){
if(ze(t)||lu(t))Cr(t,zu(t),n);else for(var r in t)ii.call(t,r)&&ot(n,r,t[r])}),df=$r(function(n,t){Cr(t,Wu(t),n)}),yf=$r(function(n,t,r,e){Cr(t,Wu(t),n,e)}),bf=$r(function(n,t,r,e){Cr(t,zu(t),n,e)}),xf=pe(ht),jf=fr(function(n,t){n=Yu(n);var r=-1,e=t.length,u=2<e?t[2]:T;for(u&&Oe(t[0],t[1],u)&&(e=1);++r<e;)for(var u=t[r],i=Wu(u),o=-1,f=i.length;++o<f;){var c=i[o],a=n[c];(a===T||au(a,ri[c])&&!ii.call(n,c))&&(n[c]=u[c])}return n}),wf=fr(function(t){return t.push(T,ae),n(Sf,T,t)}),mf=Yr(function(n,t,r){
null!=t&&typeof t.toString!="function"&&(t=ci.call(t)),n[t]=r},Mu(Tu)),Af=Yr(function(n,t,r){null!=t&&typeof t.toString!="function"&&(t=ci.call(t)),ii.call(n,t)?n[t].push(r):n[t]=[r]},ye),Ef=fr(Lt),kf=$r(function(n,t,r){Yt(n,t,r)}),Sf=$r(function(n,t,r,e){Yt(n,t,r,e)}),Of=pe(function(n,t){var r={};if(null==n)return r;var e=false;t=c(t,function(t){return t=Sr(t,n),e||(e=1<t.length),t}),Cr(n,ve(n),r),e&&(r=_t(r,7,le));for(var u=t.length;u--;)xr(r,t[u]);return r}),If=pe(function(n,t){return null==n?{}:nr(n,t);
}),Rf=oe(zu),zf=oe(Wu),Wf=qr(function(n,t,r){return t=t.toLowerCase(),n+(r?Uu(t):t)}),Bf=qr(function(n,t,r){return n+(r?"-":"")+t.toLowerCase()}),Lf=qr(function(n,t,r){return n+(r?" ":"")+t.toLowerCase()}),Uf=Zr("toLowerCase"),Cf=qr(function(n,t,r){return n+(r?"_":"")+t.toLowerCase()}),Df=qr(function(n,t,r){return n+(r?" ":"")+Tf(t)}),Mf=qr(function(n,t,r){return n+(r?" ":"")+t.toUpperCase()}),Tf=Zr("toUpperCase"),$f=fr(function(t,r){try{return n(t,T,r)}catch(n){return hu(n)?n:new Gu(n)}}),Ff=pe(function(n,t){
return r(t,function(t){t=De(t),st(n,t,Go(n[t],n))}),n}),Nf=Hr(),Pf=Hr(true),Zf=fr(function(n,t){return function(r){return Lt(r,n,t)}}),qf=fr(function(n,t){return function(r){return Lt(n,r,t)}}),Vf=Xr(c),Kf=Xr(u),Gf=Xr(h),Hf=re(),Jf=re(true),Yf=Qr(function(n,t){return n+t},0),Qf=ie("ceil"),Xf=Qr(function(n,t){return n/t},1),nc=ie("floor"),tc=Qr(function(n,t){return n*t},1),rc=ie("round"),ec=Qr(function(n,t){return n-t},0);return An.after=function(n,t){if(typeof t!="function")throw new ni("Expected a function");
return n=Au(n),function(){if(1>--n)return t.apply(this,arguments)}},An.ary=ru,An.assign=gf,An.assignIn=df,An.assignInWith=yf,An.assignWith=bf,An.at=xf,An.before=eu,An.bind=Go,An.bindAll=Ff,An.bindKey=Ho,An.castArray=function(){if(!arguments.length)return[];var n=arguments[0];return of(n)?n:[n]},An.chain=Je,An.chunk=function(n,t,r){if(t=(r?Oe(n,t,r):t===T)?1:Li(Au(t),0),r=null==n?0:n.length,!r||1>t)return[];for(var e=0,u=0,i=Vu(Si(r/t));e<r;)i[u++]=hr(n,e,e+=t);return i},An.compact=function(n){for(var t=-1,r=null==n?0:n.length,e=0,u=[];++t<r;){
var i=n[t];i&&(u[e++]=i)}return u},An.concat=function(){var n=arguments.length;if(!n)return[];for(var t=Vu(n-1),r=arguments[0];n--;)t[n-1]=arguments[n];return a(of(r)?Ur(r):[r],wt(t,1))},An.cond=function(t){var r=null==t?0:t.length,e=ye();return t=r?c(t,function(n){if("function"!=typeof n[1])throw new ni("Expected a function");return[e(n[0]),n[1]]}):[],fr(function(e){for(var u=-1;++u<r;){var i=t[u];if(n(i[0],this,e))return n(i[1],this,e)}})},An.conforms=function(n){return vt(_t(n,1))},An.constant=Mu,
An.countBy=To,An.create=function(n,t){var r=ro(n);return null==t?r:at(r,t)},An.curry=uu,An.curryRight=iu,An.debounce=ou,An.defaults=jf,An.defaultsDeep=wf,An.defer=Jo,An.delay=Yo,An.difference=jo,An.differenceBy=wo,An.differenceWith=mo,An.drop=function(n,t,r){var e=null==n?0:n.length;return e?(t=r||t===T?1:Au(t),hr(n,0>t?0:t,e)):[]},An.dropRight=function(n,t,r){var e=null==n?0:n.length;return e?(t=r||t===T?1:Au(t),t=e-t,hr(n,0,0>t?0:t)):[]},An.dropRightWhile=function(n,t){return n&&n.length?jr(n,ye(t,3),true,true):[];
},An.dropWhile=function(n,t){return n&&n.length?jr(n,ye(t,3),true):[]},An.fill=function(n,t,r,e){var u=null==n?0:n.length;if(!u)return[];for(r&&typeof r!="number"&&Oe(n,t,r)&&(r=0,e=u),u=n.length,r=Au(r),0>r&&(r=-r>u?0:u+r),e=e===T||e>u?u:Au(e),0>e&&(e+=u),e=r>e?0:Eu(e);r<e;)n[r++]=t;return n},An.filter=function(n,t){return(of(n)?i:jt)(n,ye(t,3))},An.flatMap=function(n,t){return wt(tu(n,t),1)},An.flatMapDeep=function(n,t){return wt(tu(n,t),$)},An.flatMapDepth=function(n,t,r){return r=r===T?1:Au(r),
wt(tu(n,t),r)},An.flatten=Pe,An.flattenDeep=function(n){return(null==n?0:n.length)?wt(n,$):[]},An.flattenDepth=function(n,t){return null!=n&&n.length?(t=t===T?1:Au(t),wt(n,t)):[]},An.flip=function(n){return fe(n,512)},An.flow=Nf,An.flowRight=Pf,An.fromPairs=function(n){for(var t=-1,r=null==n?0:n.length,e={};++t<r;){var u=n[t];e[u[0]]=u[1]}return e},An.functions=function(n){return null==n?[]:Et(n,zu(n))},An.functionsIn=function(n){return null==n?[]:Et(n,Wu(n))},An.groupBy=No,An.initial=function(n){
return(null==n?0:n.length)?hr(n,0,-1):[]},An.intersection=Ao,An.intersectionBy=Eo,An.intersectionWith=ko,An.invert=mf,An.invertBy=Af,An.invokeMap=Po,An.iteratee=$u,An.keyBy=Zo,An.keys=zu,An.keysIn=Wu,An.map=tu,An.mapKeys=function(n,t){var r={};return t=ye(t,3),mt(n,function(n,e,u){st(r,t(n,e,u),n)}),r},An.mapValues=function(n,t){var r={};return t=ye(t,3),mt(n,function(n,e,u){st(r,e,t(n,e,u))}),r},An.matches=function(n){return Ht(_t(n,1))},An.matchesProperty=function(n,t){return Jt(n,_t(t,1))},An.memoize=fu,
An.merge=kf,An.mergeWith=Sf,An.method=Zf,An.methodOf=qf,An.mixin=Fu,An.negate=cu,An.nthArg=function(n){return n=Au(n),fr(function(t){return Qt(t,n)})},An.omit=Of,An.omitBy=function(n,t){return Bu(n,cu(ye(t)))},An.once=function(n){return eu(2,n)},An.orderBy=function(n,t,r,e){return null==n?[]:(of(t)||(t=null==t?[]:[t]),r=e?T:r,of(r)||(r=null==r?[]:[r]),Xt(n,t,r))},An.over=Vf,An.overArgs=Qo,An.overEvery=Kf,An.overSome=Gf,An.partial=Xo,An.partialRight=nf,An.partition=qo,An.pick=If,An.pickBy=Bu,An.property=Pu,
An.propertyOf=function(n){return function(t){return null==n?T:kt(n,t)}},An.pull=So,An.pullAll=Ve,An.pullAllBy=function(n,t,r){return n&&n.length&&t&&t.length?er(n,t,ye(r,2)):n},An.pullAllWith=function(n,t,r){return n&&n.length&&t&&t.length?er(n,t,T,r):n},An.pullAt=Oo,An.range=Hf,An.rangeRight=Jf,An.rearg=tf,An.reject=function(n,t){return(of(n)?i:jt)(n,cu(ye(t,3)))},An.remove=function(n,t){var r=[];if(!n||!n.length)return r;var e=-1,u=[],i=n.length;for(t=ye(t,3);++e<i;){var o=n[e];t(o,e,n)&&(r.push(o),
u.push(e))}return ur(n,u),r},An.rest=function(n,t){if(typeof n!="function")throw new ni("Expected a function");return t=t===T?t:Au(t),fr(n,t)},An.reverse=Ke,An.sampleSize=function(n,t,r){return t=(r?Oe(n,t,r):t===T)?1:Au(t),(of(n)?et:ar)(n,t)},An.set=function(n,t,r){return null==n?n:lr(n,t,r)},An.setWith=function(n,t,r,e){return e=typeof e=="function"?e:T,null==n?n:lr(n,t,r,e)},An.shuffle=function(n){return(of(n)?ut:sr)(n)},An.slice=function(n,t,r){var e=null==n?0:n.length;return e?(r&&typeof r!="number"&&Oe(n,t,r)?(t=0,
r=e):(t=null==t?0:Au(t),r=r===T?e:Au(r)),hr(n,t,r)):[]},An.sortBy=Vo,An.sortedUniq=function(n){return n&&n.length?gr(n):[]},An.sortedUniqBy=function(n,t){return n&&n.length?gr(n,ye(t,2)):[]},An.split=function(n,t,r){return r&&typeof r!="number"&&Oe(n,t,r)&&(t=r=T),r=r===T?4294967295:r>>>0,r?(n=Ou(n))&&(typeof t=="string"||null!=t&&!sf(t))&&(t=yr(t),!t&&Rn.test(n))?Or(M(n),0,r):n.split(t,r):[]},An.spread=function(t,r){if(typeof t!="function")throw new ni("Expected a function");return r=null==r?0:Li(Au(r),0),
fr(function(e){var u=e[r];return e=Or(e,0,r),u&&a(e,u),n(t,this,e)})},An.tail=function(n){var t=null==n?0:n.length;return t?hr(n,1,t):[]},An.take=function(n,t,r){return n&&n.length?(t=r||t===T?1:Au(t),hr(n,0,0>t?0:t)):[]},An.takeRight=function(n,t,r){var e=null==n?0:n.length;return e?(t=r||t===T?1:Au(t),t=e-t,hr(n,0>t?0:t,e)):[]},An.takeRightWhile=function(n,t){return n&&n.length?jr(n,ye(t,3),false,true):[]},An.takeWhile=function(n,t){return n&&n.length?jr(n,ye(t,3)):[]},An.tap=function(n,t){return t(n),
n},An.throttle=function(n,t,r){var e=true,u=true;if(typeof n!="function")throw new ni("Expected a function");return gu(r)&&(e="leading"in r?!!r.leading:e,u="trailing"in r?!!r.trailing:u),ou(n,t,{leading:e,maxWait:t,trailing:u})},An.thru=Ye,An.toArray=wu,An.toPairs=Rf,An.toPairsIn=zf,An.toPath=function(n){return of(n)?c(n,De):ju(n)?[n]:Ur(xo(Ou(n)))},An.toPlainObject=Su,An.transform=function(n,t,e){var u=of(n),i=u||cf(n)||pf(n);if(t=ye(t,4),null==e){var o=n&&n.constructor;e=i?u?new o:[]:gu(n)&&pu(o)?ro(gi(n)):{};
}return(i?r:mt)(n,function(n,r,u){return t(e,n,r,u)}),e},An.unary=function(n){return ru(n,1)},An.union=Io,An.unionBy=Ro,An.unionWith=zo,An.uniq=function(n){return n&&n.length?br(n):[]},An.uniqBy=function(n,t){return n&&n.length?br(n,ye(t,2)):[]},An.uniqWith=function(n,t){return t=typeof t=="function"?t:T,n&&n.length?br(n,T,t):[]},An.unset=function(n,t){return null==n||xr(n,t)},An.unzip=Ge,An.unzipWith=He,An.update=function(n,t,r){return null==n?n:lr(n,t,kr(r)(kt(n,t)),void 0)},An.updateWith=function(n,t,r,e){
return e=typeof e=="function"?e:T,null!=n&&(n=lr(n,t,kr(r)(kt(n,t)),e)),n},An.values=Lu,An.valuesIn=function(n){return null==n?[]:S(n,Wu(n))},An.without=Wo,An.words=Du,An.wrap=function(n,t){return Xo(kr(t),n)},An.xor=Bo,An.xorBy=Lo,An.xorWith=Uo,An.zip=Co,An.zipObject=function(n,t){return Ar(n||[],t||[],ot)},An.zipObjectDeep=function(n,t){return Ar(n||[],t||[],lr)},An.zipWith=Do,An.entries=Rf,An.entriesIn=zf,An.extend=df,An.extendWith=yf,Fu(An,An),An.add=Yf,An.attempt=$f,An.camelCase=Wf,An.capitalize=Uu,
An.ceil=Qf,An.clamp=function(n,t,r){return r===T&&(r=t,t=T),r!==T&&(r=ku(r),r=r===r?r:0),t!==T&&(t=ku(t),t=t===t?t:0),pt(ku(n),t,r)},An.clone=function(n){return _t(n,4)},An.cloneDeep=function(n){return _t(n,5)},An.cloneDeepWith=function(n,t){return t=typeof t=="function"?t:T,_t(n,5,t)},An.cloneWith=function(n,t){return t=typeof t=="function"?t:T,_t(n,4,t)},An.conformsTo=function(n,t){return null==t||gt(n,t,zu(t))},An.deburr=Cu,An.defaultTo=function(n,t){return null==n||n!==n?t:n},An.divide=Xf,An.endsWith=function(n,t,r){
n=Ou(n),t=yr(t);var e=n.length,e=r=r===T?e:pt(Au(r),0,e);return r-=t.length,0<=r&&n.slice(r,e)==t},An.eq=au,An.escape=function(n){return(n=Ou(n))&&H.test(n)?n.replace(K,nt):n},An.escapeRegExp=function(n){return(n=Ou(n))&&en.test(n)?n.replace(rn,"\\$&"):n},An.every=function(n,t,r){var e=of(n)?u:bt;return r&&Oe(n,t,r)&&(t=T),e(n,ye(t,3))},An.find=$o,An.findIndex=Fe,An.findKey=function(n,t){return p(n,ye(t,3),mt)},An.findLast=Fo,An.findLastIndex=Ne,An.findLastKey=function(n,t){return p(n,ye(t,3),At);
},An.floor=nc,An.forEach=Xe,An.forEachRight=nu,An.forIn=function(n,t){return null==n?n:io(n,ye(t,3),Wu)},An.forInRight=function(n,t){return null==n?n:oo(n,ye(t,3),Wu)},An.forOwn=function(n,t){return n&&mt(n,ye(t,3))},An.forOwnRight=function(n,t){return n&&At(n,ye(t,3))},An.get=Iu,An.gt=rf,An.gte=ef,An.has=function(n,t){return null!=n&&we(n,t,Rt)},An.hasIn=Ru,An.head=Ze,An.identity=Tu,An.includes=function(n,t,r,e){return n=lu(n)?n:Lu(n),r=r&&!e?Au(r):0,e=n.length,0>r&&(r=Li(e+r,0)),xu(n)?r<=e&&-1<n.indexOf(t,r):!!e&&-1<v(n,t,r);
},An.indexOf=function(n,t,r){var e=null==n?0:n.length;return e?(r=null==r?0:Au(r),0>r&&(r=Li(e+r,0)),v(n,t,r)):-1},An.inRange=function(n,t,r){return t=mu(t),r===T?(r=t,t=0):r=mu(r),n=ku(n),n>=Ui(t,r)&&n<Li(t,r)},An.invoke=Ef,An.isArguments=uf,An.isArray=of,An.isArrayBuffer=ff,An.isArrayLike=lu,An.isArrayLikeObject=su,An.isBoolean=function(n){return true===n||false===n||du(n)&&"[object Boolean]"==Ot(n)},An.isBuffer=cf,An.isDate=af,An.isElement=function(n){return du(n)&&1===n.nodeType&&!bu(n)},An.isEmpty=function(n){
if(null==n)return true;if(lu(n)&&(of(n)||typeof n=="string"||typeof n.splice=="function"||cf(n)||pf(n)||uf(n)))return!n.length;var t=_o(n);if("[object Map]"==t||"[object Set]"==t)return!n.size;if(ze(n))return!Vt(n).length;for(var r in n)if(ii.call(n,r))return false;return true},An.isEqual=function(n,t){return Mt(n,t)},An.isEqualWith=function(n,t,r){var e=(r=typeof r=="function"?r:T)?r(n,t):T;return e===T?Mt(n,t,T,r):!!e},An.isError=hu,An.isFinite=function(n){return typeof n=="number"&&zi(n)},An.isFunction=pu,
An.isInteger=_u,An.isLength=vu,An.isMap=lf,An.isMatch=function(n,t){return n===t||$t(n,t,xe(t))},An.isMatchWith=function(n,t,r){return r=typeof r=="function"?r:T,$t(n,t,xe(t),r)},An.isNaN=function(n){return yu(n)&&n!=+n},An.isNative=function(n){if(vo(n))throw new Gu("Unsupported core-js use. Try https://npms.io/search?q=ponyfill.");return Ft(n)},An.isNil=function(n){return null==n},An.isNull=function(n){return null===n},An.isNumber=yu,An.isObject=gu,An.isObjectLike=du,An.isPlainObject=bu,An.isRegExp=sf,
An.isSafeInteger=function(n){return _u(n)&&-9007199254740991<=n&&9007199254740991>=n},An.isSet=hf,An.isString=xu,An.isSymbol=ju,An.isTypedArray=pf,An.isUndefined=function(n){return n===T},An.isWeakMap=function(n){return du(n)&&"[object WeakMap]"==_o(n)},An.isWeakSet=function(n){return du(n)&&"[object WeakSet]"==Ot(n)},An.join=function(n,t){return null==n?"":Wi.call(n,t)},An.kebabCase=Bf,An.last=qe,An.lastIndexOf=function(n,t,r){var e=null==n?0:n.length;if(!e)return-1;var u=e;if(r!==T&&(u=Au(r),u=0>u?Li(e+u,0):Ui(u,e-1)),
t===t){for(r=u+1;r--&&n[r]!==t;);n=r}else n=_(n,d,u,true);return n},An.lowerCase=Lf,An.lowerFirst=Uf,An.lt=_f,An.lte=vf,An.max=function(n){return n&&n.length?xt(n,Tu,It):T},An.maxBy=function(n,t){return n&&n.length?xt(n,ye(t,2),It):T},An.mean=function(n){return y(n,Tu)},An.meanBy=function(n,t){return y(n,ye(t,2))},An.min=function(n){return n&&n.length?xt(n,Tu,Kt):T},An.minBy=function(n,t){return n&&n.length?xt(n,ye(t,2),Kt):T},An.stubArray=Zu,An.stubFalse=qu,An.stubObject=function(){return{}},An.stubString=function(){
return""},An.stubTrue=function(){return true},An.multiply=tc,An.nth=function(n,t){return n&&n.length?Qt(n,Au(t)):T},An.noConflict=function(){return $n._===this&&($n._=li),this},An.noop=Nu,An.now=Ko,An.pad=function(n,t,r){n=Ou(n);var e=(t=Au(t))?D(n):0;return!t||e>=t?n:(t=(t-e)/2,ne(Oi(t),r)+n+ne(Si(t),r))},An.padEnd=function(n,t,r){n=Ou(n);var e=(t=Au(t))?D(n):0;return t&&e<t?n+ne(t-e,r):n},An.padStart=function(n,t,r){n=Ou(n);var e=(t=Au(t))?D(n):0;return t&&e<t?ne(t-e,r)+n:n},An.parseInt=function(n,t,r){
return r||null==t?t=0:t&&(t=+t),Di(Ou(n).replace(on,""),t||0)},An.random=function(n,t,r){if(r&&typeof r!="boolean"&&Oe(n,t,r)&&(t=r=T),r===T&&(typeof t=="boolean"?(r=t,t=T):typeof n=="boolean"&&(r=n,n=T)),n===T&&t===T?(n=0,t=1):(n=mu(n),t===T?(t=n,n=0):t=mu(t)),n>t){var e=n;n=t,t=e}return r||n%1||t%1?(r=Mi(),Ui(n+r*(t-n+Cn("1e-"+((r+"").length-1))),t)):ir(n,t)},An.reduce=function(n,t,r){var e=of(n)?l:j,u=3>arguments.length;return e(n,ye(t,4),r,u,eo)},An.reduceRight=function(n,t,r){var e=of(n)?s:j,u=3>arguments.length;
return e(n,ye(t,4),r,u,uo)},An.repeat=function(n,t,r){return t=(r?Oe(n,t,r):t===T)?1:Au(t),or(Ou(n),t)},An.replace=function(){var n=arguments,t=Ou(n[0]);return 3>n.length?t:t.replace(n[1],n[2])},An.result=function(n,t,r){t=Sr(t,n);var e=-1,u=t.length;for(u||(u=1,n=T);++e<u;){var i=null==n?T:n[De(t[e])];i===T&&(e=u,i=r),n=pu(i)?i.call(n):i}return n},An.round=rc,An.runInContext=x,An.sample=function(n){return(of(n)?Qn:cr)(n)},An.size=function(n){if(null==n)return 0;if(lu(n))return xu(n)?D(n):n.length;
var t=_o(n);return"[object Map]"==t||"[object Set]"==t?n.size:Vt(n).length},An.snakeCase=Cf,An.some=function(n,t,r){var e=of(n)?h:pr;return r&&Oe(n,t,r)&&(t=T),e(n,ye(t,3))},An.sortedIndex=function(n,t){return _r(n,t)},An.sortedIndexBy=function(n,t,r){return vr(n,t,ye(r,2))},An.sortedIndexOf=function(n,t){var r=null==n?0:n.length;if(r){var e=_r(n,t);if(e<r&&au(n[e],t))return e}return-1},An.sortedLastIndex=function(n,t){return _r(n,t,true)},An.sortedLastIndexBy=function(n,t,r){return vr(n,t,ye(r,2),true);
},An.sortedLastIndexOf=function(n,t){if(null==n?0:n.length){var r=_r(n,t,true)-1;if(au(n[r],t))return r}return-1},An.startCase=Df,An.startsWith=function(n,t,r){return n=Ou(n),r=null==r?0:pt(Au(r),0,n.length),t=yr(t),n.slice(r,r+t.length)==t},An.subtract=ec,An.sum=function(n){return n&&n.length?m(n,Tu):0},An.sumBy=function(n,t){return n&&n.length?m(n,ye(t,2)):0},An.template=function(n,t,r){var e=An.templateSettings;r&&Oe(n,t,r)&&(t=T),n=Ou(n),t=yf({},t,e,ce),r=yf({},t.imports,e.imports,ce);var u,i,o=zu(r),f=S(r,o),c=0;
r=t.interpolate||jn;var a="__p+='";r=Qu((t.escape||jn).source+"|"+r.source+"|"+(r===Q?pn:jn).source+"|"+(t.evaluate||jn).source+"|$","g");var l="sourceURL"in t?"//# sourceURL="+t.sourceURL+"\n":"";if(n.replace(r,function(t,r,e,o,f,l){return e||(e=o),a+=n.slice(c,l).replace(wn,z),r&&(u=true,a+="'+__e("+r+")+'"),f&&(i=true,a+="';"+f+";\n__p+='"),e&&(a+="'+((__t=("+e+"))==null?'':__t)+'"),c=l+t.length,t}),a+="';",(t=t.variable)||(a="with(obj){"+a+"}"),a=(i?a.replace(P,""):a).replace(Z,"$1").replace(q,"$1;"),
a="function("+(t||"obj")+"){"+(t?"":"obj||(obj={});")+"var __t,__p=''"+(u?",__e=_.escape":"")+(i?",__j=Array.prototype.join;function print(){__p+=__j.call(arguments,'')}":";")+a+"return __p}",t=$f(function(){return Hu(o,l+"return "+a).apply(T,f)}),t.source=a,hu(t))throw t;return t},An.times=function(n,t){if(n=Au(n),1>n||9007199254740991<n)return[];var r=4294967295,e=Ui(n,4294967295);for(t=ye(t),n-=4294967295,e=A(e,t);++r<n;)t(r);return e},An.toFinite=mu,An.toInteger=Au,An.toLength=Eu,An.toLower=function(n){
return Ou(n).toLowerCase()},An.toNumber=ku,An.toSafeInteger=function(n){return n?pt(Au(n),-9007199254740991,9007199254740991):0===n?n:0},An.toString=Ou,An.toUpper=function(n){return Ou(n).toUpperCase()},An.trim=function(n,t,r){return(n=Ou(n))&&(r||t===T)?n.replace(un,""):n&&(t=yr(t))?(n=M(n),r=M(t),t=I(n,r),r=R(n,r)+1,Or(n,t,r).join("")):n},An.trimEnd=function(n,t,r){return(n=Ou(n))&&(r||t===T)?n.replace(fn,""):n&&(t=yr(t))?(n=M(n),t=R(n,M(t))+1,Or(n,0,t).join("")):n},An.trimStart=function(n,t,r){
return(n=Ou(n))&&(r||t===T)?n.replace(on,""):n&&(t=yr(t))?(n=M(n),t=I(n,M(t)),Or(n,t).join("")):n},An.truncate=function(n,t){var r=30,e="...";if(gu(t))var u="separator"in t?t.separator:u,r="length"in t?Au(t.length):r,e="omission"in t?yr(t.omission):e;n=Ou(n);var i=n.length;if(Rn.test(n))var o=M(n),i=o.length;if(r>=i)return n;if(i=r-D(e),1>i)return e;if(r=o?Or(o,0,i).join(""):n.slice(0,i),u===T)return r+e;if(o&&(i+=r.length-i),sf(u)){if(n.slice(i).search(u)){var f=r;for(u.global||(u=Qu(u.source,Ou(_n.exec(u))+"g")),
u.lastIndex=0;o=u.exec(f);)var c=o.index;r=r.slice(0,c===T?i:c)}}else n.indexOf(yr(u),i)!=i&&(u=r.lastIndexOf(u),-1<u&&(r=r.slice(0,u)));return r+e},An.unescape=function(n){return(n=Ou(n))&&G.test(n)?n.replace(V,tt):n},An.uniqueId=function(n){var t=++oi;return Ou(n)+t},An.upperCase=Mf,An.upperFirst=Tf,An.each=Xe,An.eachRight=nu,An.first=Ze,Fu(An,function(){var n={};return mt(An,function(t,r){ii.call(An.prototype,r)||(n[r]=t)}),n}(),{chain:false}),An.VERSION="4.17.10",r("bind bindKey curry curryRight partial partialRight".split(" "),function(n){
An[n].placeholder=An}),r(["drop","take"],function(n,t){Un.prototype[n]=function(r){r=r===T?1:Li(Au(r),0);var e=this.__filtered__&&!t?new Un(this):this.clone();return e.__filtered__?e.__takeCount__=Ui(r,e.__takeCount__):e.__views__.push({size:Ui(r,4294967295),type:n+(0>e.__dir__?"Right":"")}),e},Un.prototype[n+"Right"]=function(t){return this.reverse()[n](t).reverse()}}),r(["filter","map","takeWhile"],function(n,t){var r=t+1,e=1==r||3==r;Un.prototype[n]=function(n){var t=this.clone();return t.__iteratees__.push({
iteratee:ye(n,3),type:r}),t.__filtered__=t.__filtered__||e,t}}),r(["head","last"],function(n,t){var r="take"+(t?"Right":"");Un.prototype[n]=function(){return this[r](1).value()[0]}}),r(["initial","tail"],function(n,t){var r="drop"+(t?"":"Right");Un.prototype[n]=function(){return this.__filtered__?new Un(this):this[r](1)}}),Un.prototype.compact=function(){return this.filter(Tu)},Un.prototype.find=function(n){return this.filter(n).head()},Un.prototype.findLast=function(n){return this.reverse().find(n);
},Un.prototype.invokeMap=fr(function(n,t){return typeof n=="function"?new Un(this):this.map(function(r){return Lt(r,n,t)})}),Un.prototype.reject=function(n){return this.filter(cu(ye(n)))},Un.prototype.slice=function(n,t){n=Au(n);var r=this;return r.__filtered__&&(0<n||0>t)?new Un(r):(0>n?r=r.takeRight(-n):n&&(r=r.drop(n)),t!==T&&(t=Au(t),r=0>t?r.dropRight(-t):r.take(t-n)),r)},Un.prototype.takeRightWhile=function(n){return this.reverse().takeWhile(n).reverse()},Un.prototype.toArray=function(){return this.take(4294967295);
},mt(Un.prototype,function(n,t){var r=/^(?:filter|find|map|reject)|While$/.test(t),e=/^(?:head|last)$/.test(t),u=An[e?"take"+("last"==t?"Right":""):t],i=e||/^find/.test(t);u&&(An.prototype[t]=function(){function t(n){return n=u.apply(An,a([n],f)),e&&h?n[0]:n}var o=this.__wrapped__,f=e?[1]:arguments,c=o instanceof Un,l=f[0],s=c||of(o);s&&r&&typeof l=="function"&&1!=l.length&&(c=s=false);var h=this.__chain__,p=!!this.__actions__.length,l=i&&!h,c=c&&!p;return!i&&s?(o=c?o:new Un(this),o=n.apply(o,f),o.__actions__.push({
func:Ye,args:[t],thisArg:T}),new On(o,h)):l&&c?n.apply(this,f):(o=this.thru(t),l?e?o.value()[0]:o.value():o)})}),r("pop push shift sort splice unshift".split(" "),function(n){var t=ti[n],r=/^(?:push|sort|unshift)$/.test(n)?"tap":"thru",e=/^(?:pop|shift)$/.test(n);An.prototype[n]=function(){var n=arguments;if(e&&!this.__chain__){var u=this.value();return t.apply(of(u)?u:[],n)}return this[r](function(r){return t.apply(of(r)?r:[],n)})}}),mt(Un.prototype,function(n,t){var r=An[t];if(r){var e=r.name+"";
(Ki[e]||(Ki[e]=[])).push({name:t,func:r})}}),Ki[Jr(T,2).name]=[{name:"wrapper",func:T}],Un.prototype.clone=function(){var n=new Un(this.__wrapped__);return n.__actions__=Ur(this.__actions__),n.__dir__=this.__dir__,n.__filtered__=this.__filtered__,n.__iteratees__=Ur(this.__iteratees__),n.__takeCount__=this.__takeCount__,n.__views__=Ur(this.__views__),n},Un.prototype.reverse=function(){if(this.__filtered__){var n=new Un(this);n.__dir__=-1,n.__filtered__=true}else n=this.clone(),n.__dir__*=-1;return n;
},Un.prototype.value=function(){var n,t=this.__wrapped__.value(),r=this.__dir__,e=of(t),u=0>r,i=e?t.length:0;n=i;for(var o=this.__views__,f=0,c=-1,a=o.length;++c<a;){var l=o[c],s=l.size;switch(l.type){case"drop":f+=s;break;case"dropRight":n-=s;break;case"take":n=Ui(n,f+s);break;case"takeRight":f=Li(f,n-s)}}if(n={start:f,end:n},o=n.start,f=n.end,n=f-o,o=u?f:o-1,f=this.__iteratees__,c=f.length,a=0,l=Ui(n,this.__takeCount__),!e||!u&&i==n&&l==n)return wr(t,this.__actions__);e=[];n:for(;n--&&a<l;){for(o+=r,
u=-1,i=t[o];++u<c;){var h=f[u],s=h.type,h=(0,h.iteratee)(i);if(2==s)i=h;else if(!h){if(1==s)continue n;break n}}e[a++]=i}return e},An.prototype.at=Mo,An.prototype.chain=function(){return Je(this)},An.prototype.commit=function(){return new On(this.value(),this.__chain__)},An.prototype.next=function(){this.__values__===T&&(this.__values__=wu(this.value()));var n=this.__index__>=this.__values__.length;return{done:n,value:n?T:this.__values__[this.__index__++]}},An.prototype.plant=function(n){for(var t,r=this;r instanceof En;){
var e=$e(r);e.__index__=0,e.__values__=T,t?u.__wrapped__=e:t=e;var u=e,r=r.__wrapped__}return u.__wrapped__=n,t},An.prototype.reverse=function(){var n=this.__wrapped__;return n instanceof Un?(this.__actions__.length&&(n=new Un(this)),n=n.reverse(),n.__actions__.push({func:Ye,args:[Ke],thisArg:T}),new On(n,this.__chain__)):this.thru(Ke)},An.prototype.toJSON=An.prototype.valueOf=An.prototype.value=function(){return wr(this.__wrapped__,this.__actions__)},An.prototype.first=An.prototype.head,ji&&(An.prototype[ji]=Qe),
An}();typeof define=="function"&&typeof define.amd=="object"&&define.amd?($n._=rt, define(function(){return rt})):Nn?((Nn.exports=rt)._=rt,Fn._=rt):$n._=rt}).call(this);

/*
 AngularJS v1.4.9
 (c) 2010-2015 Google, Inc. http://angularjs.org
 License: MIT
*/
(function(n,h,p){'use strict';function E(a){var f=[];r(f,h.noop).chars(a);return f.join("")}function g(a,f){var d={},c=a.split(","),b;for(b=0;b<c.length;b++)d[f?h.lowercase(c[b]):c[b]]=!0;return d}function F(a,f){function d(a,b,d,l){b=h.lowercase(b);if(s[b])for(;e.last()&&t[e.last()];)c("",e.last());u[b]&&e.last()==b&&c("",b);(l=v[b]||!!l)||e.push(b);var m={};d.replace(G,function(b,a,f,c,d){m[a]=q(f||c||d||"")});f.start&&f.start(b,m,l)}function c(b,a){var c=0,d;if(a=h.lowercase(a))for(c=e.length-
1;0<=c&&e[c]!=a;c--);if(0<=c){for(d=e.length-1;d>=c;d--)f.end&&f.end(e[d]);e.length=c}}"string"!==typeof a&&(a=null===a||"undefined"===typeof a?"":""+a);var b,k,e=[],m=a,l;for(e.last=function(){return e[e.length-1]};a;){l="";k=!0;if(e.last()&&w[e.last()])a=a.replace(new RegExp("([\\W\\w]*)<\\s*\\/\\s*"+e.last()+"[^>]*>","i"),function(a,b){b=b.replace(H,"$1").replace(I,"$1");f.chars&&f.chars(q(b));return""}),c("",e.last());else{if(0===a.indexOf("\x3c!--"))b=a.indexOf("--",4),0<=b&&a.lastIndexOf("--\x3e",
b)===b&&(f.comment&&f.comment(a.substring(4,b)),a=a.substring(b+3),k=!1);else if(x.test(a)){if(b=a.match(x))a=a.replace(b[0],""),k=!1}else if(J.test(a)){if(b=a.match(y))a=a.substring(b[0].length),b[0].replace(y,c),k=!1}else K.test(a)&&((b=a.match(z))?(b[4]&&(a=a.substring(b[0].length),b[0].replace(z,d)),k=!1):(l+="<",a=a.substring(1)));k&&(b=a.indexOf("<"),l+=0>b?a:a.substring(0,b),a=0>b?"":a.substring(b),f.chars&&f.chars(q(l)))}if(a==m)throw L("badparse",a);m=a}c()}function q(a){if(!a)return"";A.innerHTML=
a.replace(/</g,"&lt;");return A.textContent}function B(a){return a.replace(/&/g,"&amp;").replace(M,function(a){var d=a.charCodeAt(0);a=a.charCodeAt(1);return"&#"+(1024*(d-55296)+(a-56320)+65536)+";"}).replace(N,function(a){return"&#"+a.charCodeAt(0)+";"}).replace(/</g,"&lt;").replace(/>/g,"&gt;")}function r(a,f){var d=!1,c=h.bind(a,a.push);return{start:function(a,k,e){a=h.lowercase(a);!d&&w[a]&&(d=a);d||!0!==C[a]||(c("<"),c(a),h.forEach(k,function(d,e){var k=h.lowercase(e),g="img"===a&&"src"===k||
"background"===k;!0!==O[k]||!0===D[k]&&!f(d,g)||(c(" "),c(e),c('="'),c(B(d)),c('"'))}),c(e?"/>":">"))},end:function(a){a=h.lowercase(a);d||!0!==C[a]||(c("</"),c(a),c(">"));a==d&&(d=!1)},chars:function(a){d||c(B(a))}}}var L=h.$$minErr("$sanitize"),z=/^<((?:[a-zA-Z])[\w:-]*)((?:\s+[\w:-]+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)\s*(>?)/,y=/^<\/\s*([\w:-]+)[^>]*>/,G=/([\w:-]+)(?:\s*=\s*(?:(?:"((?:[^"])*)")|(?:'((?:[^'])*)')|([^>\s]+)))?/g,K=/^</,J=/^<\//,H=/\x3c!--(.*?)--\x3e/g,x=/<!DOCTYPE([^>]*?)>/i,
I=/<!\[CDATA\[(.*?)]]\x3e/g,M=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,N=/([^\#-~| |!])/g,v=g("area,br,col,hr,img,wbr");n=g("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr");p=g("rp,rt");var u=h.extend({},p,n),s=h.extend({},n,g("address,article,aside,blockquote,caption,center,del,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,h6,header,hgroup,hr,ins,map,menu,nav,ol,pre,script,section,table,ul")),t=h.extend({},p,g("a,abbr,acronym,b,bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,q,ruby,rp,rt,s,samp,small,span,strike,strong,sub,sup,time,tt,u,var"));
n=g("circle,defs,desc,ellipse,font-face,font-face-name,font-face-src,g,glyph,hkern,image,linearGradient,line,marker,metadata,missing-glyph,mpath,path,polygon,polyline,radialGradient,rect,stop,svg,switch,text,title,tspan,use");var w=g("script,style"),C=h.extend({},v,s,t,u,n),D=g("background,cite,href,longdesc,src,usemap,xlink:href");n=g("abbr,align,alt,axis,bgcolor,border,cellpadding,cellspacing,class,clear,color,cols,colspan,compact,coords,dir,face,headers,height,hreflang,hspace,ismap,lang,language,nohref,nowrap,rel,rev,rows,rowspan,rules,scope,scrolling,shape,size,span,start,summary,tabindex,target,title,type,valign,value,vspace,width");
p=g("accent-height,accumulate,additive,alphabetic,arabic-form,ascent,baseProfile,bbox,begin,by,calcMode,cap-height,class,color,color-rendering,content,cx,cy,d,dx,dy,descent,display,dur,end,fill,fill-rule,font-family,font-size,font-stretch,font-style,font-variant,font-weight,from,fx,fy,g1,g2,glyph-name,gradientUnits,hanging,height,horiz-adv-x,horiz-origin-x,ideographic,k,keyPoints,keySplines,keyTimes,lang,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mathematical,max,min,offset,opacity,orient,origin,overline-position,overline-thickness,panose-1,path,pathLength,points,preserveAspectRatio,r,refX,refY,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,rotate,rx,ry,slope,stemh,stemv,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,systemLanguage,target,text-anchor,to,transform,type,u1,u2,underline-position,underline-thickness,unicode,unicode-range,units-per-em,values,version,viewBox,visibility,width,widths,x,x-height,x1,x2,xlink:actuate,xlink:arcrole,xlink:role,xlink:show,xlink:title,xlink:type,xml:base,xml:lang,xml:space,xmlns,xmlns:xlink,y,y1,y2,zoomAndPan",
!0);var O=h.extend({},D,p,n),A=document.createElement("pre");h.module("ngSanitize",[]).provider("$sanitize",function(){this.$get=["$$sanitizeUri",function(a){return function(f){var d=[];F(f,r(d,function(c,b){return!/^unsafe/.test(a(c,b))}));return d.join("")}}]});h.module("ngSanitize").filter("linky",["$sanitize",function(a){var f=/((ftp|https?):\/\/|(www\.)|(mailto:)?[A-Za-z0-9._%+-]+@)\S*[^\s.;,(){}<>"\u201d\u2019]/i,d=/^mailto:/i;return function(c,b){function k(a){a&&g.push(E(a))}function e(a,
c){g.push("<a ");h.isDefined(b)&&g.push('target="',b,'" ');g.push('href="',a.replace(/"/g,"&quot;"),'">');k(c);g.push("</a>")}if(!c)return c;for(var m,l=c,g=[],n,p;m=l.match(f);)n=m[0],m[2]||m[4]||(n=(m[3]?"http://":"mailto:")+n),p=m.index,k(l.substr(0,p)),e(n,m[0].replace(d,"")),l=l.substring(p+m[0].length);k(l);return a(g.join(""))}}])})(window,window.angular);
//# sourceMappingURL=angular-sanitize.min.js.map

/*
 AngularJS v1.4.9
 (c) 2010-2015 Google, Inc. http://angularjs.org
 License: MIT
*/
(function(J,f,C){'use strict';function D(t,e){e=e||{};f.forEach(e,function(f,k){delete e[k]});for(var k in t)!t.hasOwnProperty(k)||"$"===k.charAt(0)&&"$"===k.charAt(1)||(e[k]=t[k]);return e}var y=f.$$minErr("$resource"),B=/^(\.[a-zA-Z_$@][0-9a-zA-Z_$@]*)+$/;f.module("ngResource",["ng"]).provider("$resource",function(){var t=/^https?:\/\/[^\/]*/,e=this;this.defaults={stripTrailingSlashes:!0,actions:{get:{method:"GET"},save:{method:"POST"},query:{method:"GET",isArray:!0},remove:{method:"DELETE"},"delete":{method:"DELETE"}}};
this.$get=["$http","$log","$q",function(k,F,G){function w(f,g){this.template=f;this.defaults=r({},e.defaults,g);this.urlParams={}}function z(l,g,s,h){function c(a,q){var c={};q=r({},g,q);u(q,function(b,q){x(b)&&(b=b());var m;if(b&&b.charAt&&"@"==b.charAt(0)){m=a;var d=b.substr(1);if(null==d||""===d||"hasOwnProperty"===d||!B.test("."+d))throw y("badmember",d);for(var d=d.split("."),n=0,g=d.length;n<g&&f.isDefined(m);n++){var e=d[n];m=null!==m?m[e]:C}}else m=b;c[q]=m});return c}function H(a){return a.resource}
function d(a){D(a||{},this)}var t=new w(l,h);s=r({},e.defaults.actions,s);d.prototype.toJSON=function(){var a=r({},this);delete a.$promise;delete a.$resolved;return a};u(s,function(a,q){var g=/^(POST|PUT|PATCH)$/i.test(a.method);d[q]=function(b,A,m,e){var n={},h,l,s;switch(arguments.length){case 4:s=e,l=m;case 3:case 2:if(x(A)){if(x(b)){l=b;s=A;break}l=A;s=m}else{n=b;h=A;l=m;break}case 1:x(b)?l=b:g?h=b:n=b;break;case 0:break;default:throw y("badargs",arguments.length);}var w=this instanceof d,p=w?
h:a.isArray?[]:new d(h),v={},z=a.interceptor&&a.interceptor.response||H,B=a.interceptor&&a.interceptor.responseError||C;u(a,function(a,b){switch(b){default:v[b]=I(a);break;case "params":case "isArray":case "interceptor":break;case "timeout":a&&!f.isNumber(a)&&F.debug("ngResource:\n  Only numeric values are allowed as `timeout`.\n  Promises are not supported in $resource, because the same value would be used for multiple requests.\n  If you need support for cancellable $resource actions, you should upgrade to version 1.5 or higher.")}});
g&&(v.data=h);t.setUrlParams(v,r({},c(h,a.params||{}),n),a.url);n=k(v).then(function(b){var c=b.data,m=p.$promise;if(c){if(f.isArray(c)!==!!a.isArray)throw y("badcfg",q,a.isArray?"array":"object",f.isArray(c)?"array":"object",v.method,v.url);a.isArray?(p.length=0,u(c,function(b){"object"===typeof b?p.push(new d(b)):p.push(b)})):(D(c,p),p.$promise=m)}p.$resolved=!0;b.resource=p;return b},function(b){p.$resolved=!0;(s||E)(b);return G.reject(b)});n=n.then(function(b){var a=z(b);(l||E)(a,b.headers);return a},
B);return w?n:(p.$promise=n,p.$resolved=!1,p)};d.prototype["$"+q]=function(b,a,c){x(b)&&(c=a,a=b,b={});b=d[q].call(this,b,this,a,c);return b.$promise||b}});d.bind=function(a){return z(l,r({},g,a),s)};return d}var E=f.noop,u=f.forEach,r=f.extend,I=f.copy,x=f.isFunction;w.prototype={setUrlParams:function(l,g,e){var h=this,c=e||h.template,k,d,r="",a=h.urlParams={};u(c.split(/\W/),function(d){if("hasOwnProperty"===d)throw y("badname");!/^\d+$/.test(d)&&d&&(new RegExp("(^|[^\\\\]):"+d+"(\\W|$)")).test(c)&&
(a[d]=!0)});c=c.replace(/\\:/g,":");c=c.replace(t,function(a){r=a;return""});g=g||{};u(h.urlParams,function(a,e){k=g.hasOwnProperty(e)?g[e]:h.defaults[e];f.isDefined(k)&&null!==k?(d=encodeURIComponent(k).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"%20").replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi,"+"),c=c.replace(new RegExp(":"+e+"(\\W|$)","g"),function(b,a){return d+a})):c=c.replace(new RegExp("(/?):"+e+"(\\W|$)","g"),function(b,
a,c){return"/"==c.charAt(0)?c:a+c})});h.defaults.stripTrailingSlashes&&(c=c.replace(/\/+$/,"")||"/");c=c.replace(/\/\.(?=\w+($|\?))/,".");l.url=r+c.replace(/\/\\\./,"/.");u(g,function(a,c){h.urlParams[c]||(l.params=l.params||{},l.params[c]=a)})}};return z}]})})(window,window.angular);
//# sourceMappingURL=angular-resource.min.js.map

/*
 AngularJS v1.4.9
 (c) 2010-2015 Google, Inc. http://angularjs.org
 License: MIT
*/
(function(p,c,n){'use strict';function l(b,a,g){var d=g.baseHref(),k=b[0];return function(b,e,f){var g,h;f=f||{};h=f.expires;g=c.isDefined(f.path)?f.path:d;c.isUndefined(e)&&(h="Thu, 01 Jan 1970 00:00:00 GMT",e="");c.isString(h)&&(h=new Date(h));e=encodeURIComponent(b)+"="+encodeURIComponent(e);e=e+(g?";path="+g:"")+(f.domain?";domain="+f.domain:"");e+=h?";expires="+h.toUTCString():"";e+=f.secure?";secure":"";f=e.length+1;4096<f&&a.warn("Cookie '"+b+"' possibly not set or overflowed because it was too large ("+
f+" > 4096 bytes)!");k.cookie=e}}c.module("ngCookies",["ng"]).provider("$cookies",[function(){var b=this.defaults={};this.$get=["$$cookieReader","$$cookieWriter",function(a,g){return{get:function(d){return a()[d]},getObject:function(d){return(d=this.get(d))?c.fromJson(d):d},getAll:function(){return a()},put:function(d,a,m){g(d,a,m?c.extend({},b,m):b)},putObject:function(d,b,a){this.put(d,c.toJson(b),a)},remove:function(a,k){g(a,n,k?c.extend({},b,k):b)}}}]}]);c.module("ngCookies").factory("$cookieStore",
["$cookies",function(b){return{get:function(a){return b.getObject(a)},put:function(a,c){b.putObject(a,c)},remove:function(a){b.remove(a)}}}]);l.$inject=["$document","$log","$browser"];c.module("ngCookies").provider("$$cookieWriter",function(){this.$get=l})})(window,window.angular);
//# sourceMappingURL=angular-cookies.min.js.map

twClickOutside.$inject = ['$window', '$parse']
function twClickOutside ($window, $parse) {
  return {
    link: function(scope, el, attr) {
      if (!attr.twClickOutside) {
        return;
      }

      var ignore;
      if (attr.ignoreIf) {
        ignore = $parse(attr.ignoreIf);
      }

      var nakedEl = el[0];
      var fn = $parse(attr.twClickOutside);

      var handler = function(e) {
        if (nakedEl === e.target || nakedEl.contains(e.target) || (ignore && ignore(scope))) {
          return;
        }

        scope.$apply(fn);
      };

      $window.addEventListener('click', handler, true);

      scope.$on('$destroy', function(e) {
        $window.removeEventListener('click', handler);
      });
    }
  };
}

angular.module('tw.directives.clickOutside', []).directive('twClickOutside', twClickOutside);

/* ng-infinite-scroll - v1.3.0 - 2016-06-30 */
angular.module('infinite-scroll', []).value('THROTTLE_MILLISECONDS', null).directive('infiniteScroll', [
  '$rootScope', '$window', '$interval', 'THROTTLE_MILLISECONDS', function($rootScope, $window, $interval, THROTTLE_MILLISECONDS) {
    return {
      scope: {
        infiniteScroll: '&',
        infiniteScrollContainer: '=',
        infiniteScrollDistance: '=',
        infiniteScrollDisabled: '=',
        infiniteScrollUseDocumentBottom: '=',
        infiniteScrollListenForEvent: '@'
      },
      link: function(scope, elem, attrs) {
        var changeContainer, checkInterval, checkWhenEnabled, container, handleInfiniteScrollContainer, handleInfiniteScrollDisabled, handleInfiniteScrollDistance, handleInfiniteScrollUseDocumentBottom, handler, height, immediateCheck, offsetTop, pageYOffset, scrollDistance, scrollEnabled, throttle, unregisterEventListener, useDocumentBottom, windowElement;
        windowElement = angular.element($window);
        scrollDistance = null;
        scrollEnabled = null;
        checkWhenEnabled = null;
        container = null;
        immediateCheck = true;
        useDocumentBottom = false;
        unregisterEventListener = null;
        checkInterval = false;
        height = function(elem) {
          elem = elem[0] || elem;
          if (isNaN(elem.offsetHeight)) {
            return elem.document.documentElement.clientHeight;
          } else {
            return elem.offsetHeight;
          }
        };
        offsetTop = function(elem) {
          if (!elem[0].getBoundingClientRect || elem.css('none')) {
            return;
          }
          return elem[0].getBoundingClientRect().top + pageYOffset(elem);
        };
        pageYOffset = function(elem) {
          elem = elem[0] || elem;
          if (isNaN(window.pageYOffset)) {
            return elem.document.documentElement.scrollTop;
          } else {
            return elem.ownerDocument.defaultView.pageYOffset;
          }
        };
        handler = function() {
          var containerBottom, containerTopOffset, elementBottom, remaining, shouldScroll;
          if (container === windowElement) {
            containerBottom = height(container) + pageYOffset(container[0].document.documentElement);
            elementBottom = offsetTop(elem) + height(elem);
          } else {
            containerBottom = height(container);
            containerTopOffset = 0;
            if (offsetTop(container) !== void 0) {
              containerTopOffset = offsetTop(container);
            }
            elementBottom = offsetTop(elem) - containerTopOffset + height(elem);
          }
          if (useDocumentBottom) {
            elementBottom = height((elem[0].ownerDocument || elem[0].document).documentElement);
          }
          remaining = elementBottom - containerBottom;
          shouldScroll = remaining <= height(container) * scrollDistance + 1;
          if (shouldScroll) {
            checkWhenEnabled = true;
            if (scrollEnabled) {
              if (scope.$$phase || $rootScope.$$phase) {
                return scope.infiniteScroll();
              } else {
                return scope.$apply(scope.infiniteScroll);
              }
            }
          } else {
            if (checkInterval) {
              $interval.cancel(checkInterval);
            }
            return checkWhenEnabled = false;
          }
        };
        throttle = function(func, wait) {
          var later, previous, timeout;
          timeout = null;
          previous = 0;
          later = function() {
            previous = new Date().getTime();
            $interval.cancel(timeout);
            timeout = null;
            return func.call();
          };
          return function() {
            var now, remaining;
            now = new Date().getTime();
            remaining = wait - (now - previous);
            if (remaining <= 0) {
              $interval.cancel(timeout);
              timeout = null;
              previous = now;
              return func.call();
            } else {
              if (!timeout) {
                return timeout = $interval(later, remaining, 1);
              }
            }
          };
        };
        if (THROTTLE_MILLISECONDS != null) {
          handler = throttle(handler, THROTTLE_MILLISECONDS);
        }
        scope.$on('$destroy', function() {
          container.unbind('scroll', handler);
          if (unregisterEventListener != null) {
            unregisterEventListener();
            unregisterEventListener = null;
          }
          if (checkInterval) {
            return $interval.cancel(checkInterval);
          }
        });
        handleInfiniteScrollDistance = function(v) {
          return scrollDistance = parseFloat(v) || 0;
        };
        scope.$watch('infiniteScrollDistance', handleInfiniteScrollDistance);
        handleInfiniteScrollDistance(scope.infiniteScrollDistance);
        handleInfiniteScrollDisabled = function(v) {
          scrollEnabled = !v;
          if (scrollEnabled && checkWhenEnabled) {
            checkWhenEnabled = false;
            return handler();
          }
        };
        scope.$watch('infiniteScrollDisabled', handleInfiniteScrollDisabled);
        handleInfiniteScrollDisabled(scope.infiniteScrollDisabled);
        handleInfiniteScrollUseDocumentBottom = function(v) {
          return useDocumentBottom = v;
        };
        scope.$watch('infiniteScrollUseDocumentBottom', handleInfiniteScrollUseDocumentBottom);
        handleInfiniteScrollUseDocumentBottom(scope.infiniteScrollUseDocumentBottom);
        changeContainer = function(newContainer) {
          if (container != null) {
            container.unbind('scroll', handler);
          }
          container = newContainer;
          if (newContainer != null) {
            return container.bind('scroll', handler);
          }
        };
        changeContainer(windowElement);
        if (scope.infiniteScrollListenForEvent) {
          unregisterEventListener = $rootScope.$on(scope.infiniteScrollListenForEvent, handler);
        }
        handleInfiniteScrollContainer = function(newContainer) {
          if ((newContainer == null) || newContainer.length === 0) {
            return;
          }
          if (newContainer.nodeType && newContainer.nodeType === 1) {
            newContainer = angular.element(newContainer);
          } else if (typeof newContainer.append === 'function') {
            newContainer = angular.element(newContainer[newContainer.length - 1]);
          } else if (typeof newContainer === 'string') {
            newContainer = angular.element(document.querySelector(newContainer));
          }
          if (newContainer != null) {
            return changeContainer(newContainer);
          } else {
            throw new Error("invalid infinite-scroll-container attribute.");
          }
        };
        scope.$watch('infiniteScrollContainer', handleInfiniteScrollContainer);
        handleInfiniteScrollContainer(scope.infiniteScrollContainer || []);
        if (attrs.infiniteScrollParent != null) {
          changeContainer(angular.element(elem.parent()));
        }
        if (attrs.infiniteScrollImmediateCheck != null) {
          immediateCheck = scope.$eval(attrs.infiniteScrollImmediateCheck);
        }
        return checkInterval = $interval((function() {
          if (immediateCheck) {
            handler();
          }
          return $interval.cancel(checkInterval);
        }));
      }
    };
  }
]);

if (typeof module !== "undefined" && typeof exports !== "undefined" && module.exports === exports) {
  module.exports = 'infinite-scroll';
}

var duScrollDefaultEasing=function(e){"use strict";return e<.5?Math.pow(2*e,2)/2:1-Math.pow(2*(1-e),2)/2},duScroll=angular.module("duScroll",["duScroll.scrollspy","duScroll.smoothScroll","duScroll.scrollContainer","duScroll.spyContext","duScroll.scrollHelpers"]).value("duScrollDuration",350).value("duScrollSpyWait",100).value("duScrollSpyRefreshInterval",0).value("duScrollGreedy",!1).value("duScrollOffset",0).value("duScrollEasing",duScrollDefaultEasing).value("duScrollCancelOnEvents","scroll mousedown mousewheel touchmove keydown").value("duScrollBottomSpy",!1).value("duScrollActiveClass","active");"undefined"!=typeof module&&module&&module.exports&&(module.exports=duScroll),angular.module("duScroll.scrollHelpers",["duScroll.requestAnimation"]).run(["$window","$q","cancelAnimation","requestAnimation","duScrollEasing","duScrollDuration","duScrollOffset","duScrollCancelOnEvents",function(e,t,n,r,o,l,u,i){"use strict";var c={},a=function(e){return"undefined"!=typeof HTMLDocument&&e instanceof HTMLDocument||e.nodeType&&e.nodeType===e.DOCUMENT_NODE},s=function(e){return"undefined"!=typeof HTMLElement&&e instanceof HTMLElement||e.nodeType&&e.nodeType===e.ELEMENT_NODE},d=function(e){return s(e)||a(e)?e:e[0]};c.duScrollTo=function(t,n,r,o){var l;if(angular.isElement(t)?l=this.duScrollToElement:angular.isDefined(r)&&(l=this.duScrollToAnimated),l)return l.apply(this,arguments);var u=d(this);return a(u)?e.scrollTo(t,n):(u.scrollLeft=t,void(u.scrollTop=n))};var f,m;c.duScrollToAnimated=function(e,l,u,c){u&&!c&&(c=o);var a=this.duScrollLeft(),s=this.duScrollTop(),d=Math.round(e-a),p=Math.round(l-s),S=null,g=0,v=this,h=function(e){(!e||g&&e.which>0)&&(i&&v.unbind(i,h),n(f),m.reject(),f=null)};if(f&&h(),m=t.defer(),0===u||!d&&!p)return 0===u&&v.duScrollTo(e,l),m.resolve(),m.promise;var y=function(e){null===S&&(S=e),g=e-S;var t=g>=u?1:c(g/u);v.scrollTo(a+Math.ceil(d*t),s+Math.ceil(p*t)),t<1?f=r(y):(i&&v.unbind(i,h),f=null,m.resolve())};return v.duScrollTo(a,s),i&&v.bind(i,h),f=r(y),m.promise},c.duScrollToElement=function(e,t,n,r){var o=d(this);angular.isNumber(t)&&!isNaN(t)||(t=u);var l=this.duScrollTop()+d(e).getBoundingClientRect().top-t;return s(o)&&(l-=o.getBoundingClientRect().top),this.duScrollTo(0,l,n,r)},c.duScrollLeft=function(t,n,r){if(angular.isNumber(t))return this.duScrollTo(t,this.duScrollTop(),n,r);var o=d(this);return a(o)?e.scrollX||document.documentElement.scrollLeft||document.body.scrollLeft:o.scrollLeft},c.duScrollTop=function(t,n,r){if(angular.isNumber(t))return this.duScrollTo(this.duScrollLeft(),t,n,r);var o=d(this);return a(o)?e.scrollY||document.documentElement.scrollTop||document.body.scrollTop:o.scrollTop},c.duScrollToElementAnimated=function(e,t,n,r){return this.duScrollToElement(e,t,n||l,r)},c.duScrollTopAnimated=function(e,t,n){return this.duScrollTop(e,t||l,n)},c.duScrollLeftAnimated=function(e,t,n){return this.duScrollLeft(e,t||l,n)},angular.forEach(c,function(e,t){angular.element.prototype[t]=e;var n=t.replace(/^duScroll/,"scroll");angular.isUndefined(angular.element.prototype[n])&&(angular.element.prototype[n]=e)})}]),angular.module("duScroll.polyfill",[]).factory("polyfill",["$window",function(e){"use strict";var t=["webkit","moz","o","ms"];return function(n,r){if(e[n])return e[n];for(var o,l=n.substr(0,1).toUpperCase()+n.substr(1),u=0;u<t.length;u++)if(o=t[u]+l,e[o])return e[o];return r}}]),angular.module("duScroll.requestAnimation",["duScroll.polyfill"]).factory("requestAnimation",["polyfill","$timeout",function(e,t){"use strict";var n=0,r=function(e,r){var o=(new Date).getTime(),l=Math.max(0,16-(o-n)),u=t(function(){e(o+l)},l);return n=o+l,u};return e("requestAnimationFrame",r)}]).factory("cancelAnimation",["polyfill","$timeout",function(e,t){"use strict";var n=function(e){t.cancel(e)};return e("cancelAnimationFrame",n)}]),angular.module("duScroll.spyAPI",["duScroll.scrollContainerAPI"]).factory("spyAPI",["$rootScope","$timeout","$interval","$window","$document","scrollContainerAPI","duScrollGreedy","duScrollSpyWait","duScrollSpyRefreshInterval","duScrollBottomSpy","duScrollActiveClass",function(e,t,n,r,o,l,u,i,c,a,s){"use strict";var d=function(n){var l=!1,c=!1,d=function(){c=!1;var t,l=n.container,i=l[0],d=0;if("undefined"!=typeof HTMLElement&&i instanceof HTMLElement||i.nodeType&&i.nodeType===i.ELEMENT_NODE)d=i.getBoundingClientRect().top,t=Math.round(i.scrollTop+i.clientHeight)>=i.scrollHeight;else{var f=o[0].body.scrollHeight||o[0].documentElement.scrollHeight;t=Math.round(r.pageYOffset+r.innerHeight)>=f}var m,p,S,g,v,h,y=a&&t?"bottom":"top";for(g=n.spies,p=n.currentlyActive,S=void 0,m=0;m<g.length;m++)v=g[m],h=v.getTargetPosition(),h&&v.$element&&(a&&t||h.top+v.offset-d<20&&(u||h.top*-1+d)<h.height)&&(!S||S[y]<h[y])&&(S={spy:v},S[y]=h[y]);S&&(S=S.spy),p===S||u&&!S||(p&&p.$element&&(p.$element.removeClass(s),e.$broadcast("duScrollspy:becameInactive",p.$element,angular.element(p.getTargetElement()))),S&&(S.$element.addClass(s),e.$broadcast("duScrollspy:becameActive",S.$element,angular.element(S.getTargetElement()))),n.currentlyActive=S)};return i?function(){l?c=!0:(d(),l=t(function(){l=!1,c&&d()},i,!1))}:d},f={},m=function(e){var t=e.$id,n={spies:[]};return n.handler=d(n),f[t]=n,e.$on("$destroy",function(){p(e)}),t},p=function(e){var t=e.$id,r=f[t],o=r.container;r.intervalPromise&&n.cancel(r.intervalPromise),o&&o.off("scroll",r.handler),delete f[t]},S=m(e),g=function(e){return f[e.$id]?f[e.$id]:e.$parent?g(e.$parent):f[S]},v=function(e){var t,n,r=e.$scope;if(r)return g(r);for(n in f)if(t=f[n],t.spies.indexOf(e)!==-1)return t},h=function(e){for(;e.parentNode;)if(e=e.parentNode,e===document)return!0;return!1},y=function(e){var t=v(e);t&&(t.spies.push(e),t.container&&h(t.container)||(t.container&&t.container.off("scroll",t.handler),t.container=l.getContainer(e.$scope),c&&!t.intervalPromise&&(t.intervalPromise=n(t.handler,c,0,!1)),t.container.on("scroll",t.handler).triggerHandler("scroll")))},$=function(t){var n=v(t);t===n.currentlyActive&&(e.$broadcast("duScrollspy:becameInactive",n.currentlyActive.$element),n.currentlyActive=null);var r=n.spies.indexOf(t);r!==-1&&n.spies.splice(r,1),t.$element=null};return{addSpy:y,removeSpy:$,createContext:m,destroyContext:p,getContextForScope:g}}]),angular.module("duScroll.scrollContainerAPI",[]).factory("scrollContainerAPI",["$document",function(e){"use strict";var t={},n=function(e,n){var r=e.$id;return t[r]=n,r},r=function(e){return t[e.$id]?e.$id:e.$parent?r(e.$parent):void 0},o=function(n){var o=r(n);return o?t[o]:e},l=function(e){var n=r(e);n&&delete t[n]};return{getContainerId:r,getContainer:o,setContainer:n,removeContainer:l}}]),angular.module("duScroll.smoothScroll",["duScroll.scrollHelpers","duScroll.scrollContainerAPI"]).directive("duSmoothScroll",["duScrollDuration","duScrollOffset","scrollContainerAPI",function(e,t,n){"use strict";return{link:function(r,o,l){o.on("click",function(o){if(l.href&&l.href.indexOf("#")!==-1||""!==l.duSmoothScroll){var u=l.href?l.href.replace(/.*(?=#[^\s]+$)/,"").substring(1):l.duSmoothScroll,i=document.getElementById(u)||document.getElementsByName(u)[0];if(i&&i.getBoundingClientRect){o.stopPropagation&&o.stopPropagation(),o.preventDefault&&o.preventDefault();var c=l.offset?parseInt(l.offset,10):t,a=l.duration?parseInt(l.duration,10):e,s=n.getContainer(r);s.duScrollToElement(angular.element(i),isNaN(c)?0:c,isNaN(a)?0:a)}}})}}}]),angular.module("duScroll.spyContext",["duScroll.spyAPI"]).directive("duSpyContext",["spyAPI",function(e){"use strict";return{restrict:"A",scope:!0,compile:function(t,n,r){return{pre:function(t,n,r,o){e.createContext(t)}}}}}]),angular.module("duScroll.scrollContainer",["duScroll.scrollContainerAPI"]).directive("duScrollContainer",["scrollContainerAPI",function(e){"use strict";return{restrict:"A",scope:!0,compile:function(t,n,r){return{pre:function(t,n,r,o){r.$observe("duScrollContainer",function(r){angular.isString(r)&&(r=document.getElementById(r)),r=angular.isElement(r)?angular.element(r):n,e.setContainer(t,r),t.$on("$destroy",function(){e.removeContainer(t)})})}}}}}]),angular.module("duScroll.scrollspy",["duScroll.spyAPI"]).directive("duScrollspy",["spyAPI","duScrollOffset","$timeout","$rootScope",function(e,t,n,r){"use strict";var o=function(e,t,n,r){angular.isElement(e)?this.target=e:angular.isString(e)&&(this.targetId=e),this.$scope=t,this.$element=n,this.offset=r};return o.prototype.getTargetElement=function(){return!this.target&&this.targetId&&(this.target=document.getElementById(this.targetId)||document.getElementsByName(this.targetId)[0]),this.target},o.prototype.getTargetPosition=function(){var e=this.getTargetElement();if(e)return e.getBoundingClientRect()},o.prototype.flushTargetCache=function(){this.targetId&&(this.target=void 0)},{link:function(l,u,i){var c,a=i.ngHref||i.href;if(a&&a.indexOf("#")!==-1?c=a.replace(/.*(?=#[^\s]+$)/,"").substring(1):i.duScrollspy?c=i.duScrollspy:i.duSmoothScroll&&(c=i.duSmoothScroll),c){var s=n(function(){var n=new o(c,l,u,(-(i.offset?parseInt(i.offset,10):t)));e.addSpy(n),l.$on("$locationChangeSuccess",n.flushTargetCache.bind(n));var a=r.$on("$stateChangeSuccess",n.flushTargetCache.bind(n));l.$on("$destroy",function(){e.removeSpy(n),a()})},0,!1);l.$on("$destroy",function(){n.cancel(s)})}}}}]);
//# sourceMappingURL=angular-scroll.min.js.map

//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxvZGFzaC5taW4uanMiLCJhbmd1bGFyLXNhbml0aXplLm1pbi5qcyIsImFuZ3VsYXItcmVzb3VyY2UubWluLmpzIiwiYW5ndWxhci1jb29raWVzLm1pbi5qcyIsImFuZ3VsYXItY2xpY2stb3V0c2lkZS5qcyIsIm5nLWluZmluaXRlLXNjcm9sbC5qcyIsImFuZ3VsYXItc2Nyb2xsLm1pbi5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUN6SUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQ2hCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUNkQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQ1RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUNsQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUM3TEE7QUFDQTtBQUNBIiwiZmlsZSI6ImRlcHMubWluLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogTG9kYXNoIGxvZGFzaC5jb20vbGljZW5zZSB8IFVuZGVyc2NvcmUuanMgMS44LjMgdW5kZXJzY29yZWpzLm9yZy9MSUNFTlNFXG4gKi9cbjsoZnVuY3Rpb24oKXtmdW5jdGlvbiBuKG4sdCxyKXtzd2l0Y2goci5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4gbi5jYWxsKHQpO2Nhc2UgMTpyZXR1cm4gbi5jYWxsKHQsclswXSk7Y2FzZSAyOnJldHVybiBuLmNhbGwodCxyWzBdLHJbMV0pO2Nhc2UgMzpyZXR1cm4gbi5jYWxsKHQsclswXSxyWzFdLHJbMl0pfXJldHVybiBuLmFwcGx5KHQscil9ZnVuY3Rpb24gdChuLHQscixlKXtmb3IodmFyIHU9LTEsaT1udWxsPT1uPzA6bi5sZW5ndGg7Kyt1PGk7KXt2YXIgbz1uW3VdO3QoZSxvLHIobyksbil9cmV0dXJuIGV9ZnVuY3Rpb24gcihuLHQpe2Zvcih2YXIgcj0tMSxlPW51bGw9PW4/MDpuLmxlbmd0aDsrK3I8ZSYmZmFsc2UhPT10KG5bcl0scixuKTspO3JldHVybiBufWZ1bmN0aW9uIGUobix0KXtmb3IodmFyIHI9bnVsbD09bj8wOm4ubGVuZ3RoO3ItLSYmZmFsc2UhPT10KG5bcl0scixuKTspO3JldHVybiBufWZ1bmN0aW9uIHUobix0KXtmb3IodmFyIHI9LTEsZT1udWxsPT1uPzA6bi5sZW5ndGg7KytyPGU7KWlmKCF0KG5bcl0scixuKSlyZXR1cm4gZmFsc2U7XG5yZXR1cm4gdHJ1ZX1mdW5jdGlvbiBpKG4sdCl7Zm9yKHZhciByPS0xLGU9bnVsbD09bj8wOm4ubGVuZ3RoLHU9MCxpPVtdOysrcjxlOyl7dmFyIG89bltyXTt0KG8scixuKSYmKGlbdSsrXT1vKX1yZXR1cm4gaX1mdW5jdGlvbiBvKG4sdCl7cmV0dXJuIShudWxsPT1ufHwhbi5sZW5ndGgpJiYtMTx2KG4sdCwwKX1mdW5jdGlvbiBmKG4sdCxyKXtmb3IodmFyIGU9LTEsdT1udWxsPT1uPzA6bi5sZW5ndGg7KytlPHU7KWlmKHIodCxuW2VdKSlyZXR1cm4gdHJ1ZTtyZXR1cm4gZmFsc2V9ZnVuY3Rpb24gYyhuLHQpe2Zvcih2YXIgcj0tMSxlPW51bGw9PW4/MDpuLmxlbmd0aCx1PUFycmF5KGUpOysrcjxlOyl1W3JdPXQobltyXSxyLG4pO3JldHVybiB1fWZ1bmN0aW9uIGEobix0KXtmb3IodmFyIHI9LTEsZT10Lmxlbmd0aCx1PW4ubGVuZ3RoOysrcjxlOyluW3Urcl09dFtyXTtyZXR1cm4gbn1mdW5jdGlvbiBsKG4sdCxyLGUpe3ZhciB1PS0xLGk9bnVsbD09bj8wOm4ubGVuZ3RoO2ZvcihlJiZpJiYocj1uWysrdV0pOysrdTxpOylyPXQocixuW3VdLHUsbik7XG5yZXR1cm4gcn1mdW5jdGlvbiBzKG4sdCxyLGUpe3ZhciB1PW51bGw9PW4/MDpuLmxlbmd0aDtmb3IoZSYmdSYmKHI9blstLXVdKTt1LS07KXI9dChyLG5bdV0sdSxuKTtyZXR1cm4gcn1mdW5jdGlvbiBoKG4sdCl7Zm9yKHZhciByPS0xLGU9bnVsbD09bj8wOm4ubGVuZ3RoOysrcjxlOylpZih0KG5bcl0scixuKSlyZXR1cm4gdHJ1ZTtyZXR1cm4gZmFsc2V9ZnVuY3Rpb24gcChuLHQscil7dmFyIGU7cmV0dXJuIHIobixmdW5jdGlvbihuLHIsdSl7aWYodChuLHIsdSkpcmV0dXJuIGU9cixmYWxzZX0pLGV9ZnVuY3Rpb24gXyhuLHQscixlKXt2YXIgdT1uLmxlbmd0aDtmb3Iocis9ZT8xOi0xO2U/ci0tOisrcjx1OylpZih0KG5bcl0scixuKSlyZXR1cm4gcjtyZXR1cm4tMX1mdW5jdGlvbiB2KG4sdCxyKXtpZih0PT09dCluOnstLXI7Zm9yKHZhciBlPW4ubGVuZ3RoOysrcjxlOylpZihuW3JdPT09dCl7bj1yO2JyZWFrIG59bj0tMX1lbHNlIG49XyhuLGQscik7cmV0dXJuIG59ZnVuY3Rpb24gZyhuLHQscixlKXtcbi0tcjtmb3IodmFyIHU9bi5sZW5ndGg7KytyPHU7KWlmKGUobltyXSx0KSlyZXR1cm4gcjtyZXR1cm4tMX1mdW5jdGlvbiBkKG4pe3JldHVybiBuIT09bn1mdW5jdGlvbiB5KG4sdCl7dmFyIHI9bnVsbD09bj8wOm4ubGVuZ3RoO3JldHVybiByP20obix0KS9yOkZ9ZnVuY3Rpb24gYihuKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/VDp0W25dfX1mdW5jdGlvbiB4KG4pe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09bj9UOm5bdF19fWZ1bmN0aW9uIGoobix0LHIsZSx1KXtyZXR1cm4gdShuLGZ1bmN0aW9uKG4sdSxpKXtyPWU/KGU9ZmFsc2Usbik6dChyLG4sdSxpKX0pLHJ9ZnVuY3Rpb24gdyhuLHQpe3ZhciByPW4ubGVuZ3RoO2ZvcihuLnNvcnQodCk7ci0tOyluW3JdPW5bcl0uYztyZXR1cm4gbn1mdW5jdGlvbiBtKG4sdCl7Zm9yKHZhciByLGU9LTEsdT1uLmxlbmd0aDsrK2U8dTspe3ZhciBpPXQobltlXSk7aSE9PVQmJihyPXI9PT1UP2k6citpKX1yZXR1cm4gcjtcbn1mdW5jdGlvbiBBKG4sdCl7Zm9yKHZhciByPS0xLGU9QXJyYXkobik7KytyPG47KWVbcl09dChyKTtyZXR1cm4gZX1mdW5jdGlvbiBFKG4sdCl7cmV0dXJuIGModCxmdW5jdGlvbih0KXtyZXR1cm5bdCxuW3RdXX0pfWZ1bmN0aW9uIGsobil7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBuKHQpfX1mdW5jdGlvbiBTKG4sdCl7cmV0dXJuIGModCxmdW5jdGlvbih0KXtyZXR1cm4gblt0XX0pfWZ1bmN0aW9uIE8obix0KXtyZXR1cm4gbi5oYXModCl9ZnVuY3Rpb24gSShuLHQpe2Zvcih2YXIgcj0tMSxlPW4ubGVuZ3RoOysrcjxlJiYtMTx2KHQsbltyXSwwKTspO3JldHVybiByfWZ1bmN0aW9uIFIobix0KXtmb3IodmFyIHI9bi5sZW5ndGg7ci0tJiYtMTx2KHQsbltyXSwwKTspO3JldHVybiByfWZ1bmN0aW9uIHoobil7cmV0dXJuXCJcXFxcXCIrVW5bbl19ZnVuY3Rpb24gVyhuKXt2YXIgdD0tMSxyPUFycmF5KG4uc2l6ZSk7cmV0dXJuIG4uZm9yRWFjaChmdW5jdGlvbihuLGUpe3JbKyt0XT1bZSxuXTtcbn0pLHJ9ZnVuY3Rpb24gQihuLHQpe3JldHVybiBmdW5jdGlvbihyKXtyZXR1cm4gbih0KHIpKX19ZnVuY3Rpb24gTChuLHQpe2Zvcih2YXIgcj0tMSxlPW4ubGVuZ3RoLHU9MCxpPVtdOysrcjxlOyl7dmFyIG89bltyXTtvIT09dCYmXCJfX2xvZGFzaF9wbGFjZWhvbGRlcl9fXCIhPT1vfHwobltyXT1cIl9fbG9kYXNoX3BsYWNlaG9sZGVyX19cIixpW3UrK109cil9cmV0dXJuIGl9ZnVuY3Rpb24gVShuKXt2YXIgdD0tMSxyPUFycmF5KG4uc2l6ZSk7cmV0dXJuIG4uZm9yRWFjaChmdW5jdGlvbihuKXtyWysrdF09bn0pLHJ9ZnVuY3Rpb24gQyhuKXt2YXIgdD0tMSxyPUFycmF5KG4uc2l6ZSk7cmV0dXJuIG4uZm9yRWFjaChmdW5jdGlvbihuKXtyWysrdF09W24sbl19KSxyfWZ1bmN0aW9uIEQobil7aWYoUm4udGVzdChuKSl7Zm9yKHZhciB0PU9uLmxhc3RJbmRleD0wO09uLnRlc3Qobik7KSsrdDtuPXR9ZWxzZSBuPVFuKG4pO3JldHVybiBufWZ1bmN0aW9uIE0obil7cmV0dXJuIFJuLnRlc3Qobik/bi5tYXRjaChPbil8fFtdOm4uc3BsaXQoXCJcIik7XG59dmFyIFQsJD0xLzAsRj1OYU4sTj1bW1wiYXJ5XCIsMTI4XSxbXCJiaW5kXCIsMV0sW1wiYmluZEtleVwiLDJdLFtcImN1cnJ5XCIsOF0sW1wiY3VycnlSaWdodFwiLDE2XSxbXCJmbGlwXCIsNTEyXSxbXCJwYXJ0aWFsXCIsMzJdLFtcInBhcnRpYWxSaWdodFwiLDY0XSxbXCJyZWFyZ1wiLDI1Nl1dLFA9L1xcYl9fcFxcKz0nJzsvZyxaPS9cXGIoX19wXFwrPSknJ1xcKy9nLHE9LyhfX2VcXCguKj9cXCl8XFxiX190XFwpKVxcKycnOy9nLFY9LyYoPzphbXB8bHR8Z3R8cXVvdHwjMzkpOy9nLEs9L1smPD5cIiddL2csRz1SZWdFeHAoVi5zb3VyY2UpLEg9UmVnRXhwKEsuc291cmNlKSxKPS88JS0oW1xcc1xcU10rPyklPi9nLFk9LzwlKFtcXHNcXFNdKz8pJT4vZyxRPS88JT0oW1xcc1xcU10rPyklPi9nLFg9L1xcLnxcXFsoPzpbXltcXF1dKnwoW1wiJ10pKD86KD8hXFwxKVteXFxcXF18XFxcXC4pKj9cXDEpXFxdLyxubj0vXlxcdyokLyx0bj0vW14uW1xcXV0rfFxcWyg/OigtP1xcZCsoPzpcXC5cXGQrKT8pfChbXCInXSkoKD86KD8hXFwyKVteXFxcXF18XFxcXC4pKj8pXFwyKVxcXXwoPz0oPzpcXC58XFxbXFxdKSg/OlxcLnxcXFtcXF18JCkpL2cscm49L1tcXFxcXiQuKis/KClbXFxde318XS9nLGVuPVJlZ0V4cChybi5zb3VyY2UpLHVuPS9eXFxzK3xcXHMrJC9nLG9uPS9eXFxzKy8sZm49L1xccyskLyxjbj0vXFx7KD86XFxuXFwvXFwqIFxcW3dyYXBwZWQgd2l0aCAuK1xcXSBcXCpcXC8pP1xcbj8vLGFuPS9cXHtcXG5cXC9cXCogXFxbd3JhcHBlZCB3aXRoICguKylcXF0gXFwqLyxsbj0vLD8gJiAvLHNuPS9bXlxceDAwLVxceDJmXFx4M2EtXFx4NDBcXHg1Yi1cXHg2MFxceDdiLVxceDdmXSsvZyxobj0vXFxcXChcXFxcKT8vZyxwbj0vXFwkXFx7KFteXFxcXH1dKig/OlxcXFwuW15cXFxcfV0qKSopXFx9L2csX249L1xcdyokLyx2bj0vXlstK10weFswLTlhLWZdKyQvaSxnbj0vXjBiWzAxXSskL2ksZG49L15cXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXF0kLyx5bj0vXjBvWzAtN10rJC9pLGJuPS9eKD86MHxbMS05XVxcZCopJC8seG49L1tcXHhjMC1cXHhkNlxceGQ4LVxceGY2XFx4ZjgtXFx4ZmZcXHUwMTAwLVxcdTAxN2ZdL2csam49LygkXikvLHduPS9bJ1xcblxcclxcdTIwMjhcXHUyMDI5XFxcXF0vZyxtbj1cIltcXFxcdWZlMGVcXFxcdWZlMGZdPyg/OltcXFxcdTAzMDAtXFxcXHUwMzZmXFxcXHVmZTIwLVxcXFx1ZmUyZlxcXFx1MjBkMC1cXFxcdTIwZmZdfFxcXFx1ZDgzY1tcXFxcdWRmZmItXFxcXHVkZmZmXSk/KD86XFxcXHUyMDBkKD86W15cXFxcdWQ4MDAtXFxcXHVkZmZmXXwoPzpcXFxcdWQ4M2NbXFxcXHVkZGU2LVxcXFx1ZGRmZl0pezJ9fFtcXFxcdWQ4MDAtXFxcXHVkYmZmXVtcXFxcdWRjMDAtXFxcXHVkZmZmXSlbXFxcXHVmZTBlXFxcXHVmZTBmXT8oPzpbXFxcXHUwMzAwLVxcXFx1MDM2ZlxcXFx1ZmUyMC1cXFxcdWZlMmZcXFxcdTIwZDAtXFxcXHUyMGZmXXxcXFxcdWQ4M2NbXFxcXHVkZmZiLVxcXFx1ZGZmZl0pPykqXCIsQW49XCIoPzpbXFxcXHUyNzAwLVxcXFx1MjdiZl18KD86XFxcXHVkODNjW1xcXFx1ZGRlNi1cXFxcdWRkZmZdKXsyfXxbXFxcXHVkODAwLVxcXFx1ZGJmZl1bXFxcXHVkYzAwLVxcXFx1ZGZmZl0pXCIrbW4sRW49XCIoPzpbXlxcXFx1ZDgwMC1cXFxcdWRmZmZdW1xcXFx1MDMwMC1cXFxcdTAzNmZcXFxcdWZlMjAtXFxcXHVmZTJmXFxcXHUyMGQwLVxcXFx1MjBmZl0/fFtcXFxcdTAzMDAtXFxcXHUwMzZmXFxcXHVmZTIwLVxcXFx1ZmUyZlxcXFx1MjBkMC1cXFxcdTIwZmZdfCg/OlxcXFx1ZDgzY1tcXFxcdWRkZTYtXFxcXHVkZGZmXSl7Mn18W1xcXFx1ZDgwMC1cXFxcdWRiZmZdW1xcXFx1ZGMwMC1cXFxcdWRmZmZdfFtcXFxcdWQ4MDAtXFxcXHVkZmZmXSlcIixrbj1SZWdFeHAoXCJbJ1xcdTIwMTldXCIsXCJnXCIpLFNuPVJlZ0V4cChcIltcXFxcdTAzMDAtXFxcXHUwMzZmXFxcXHVmZTIwLVxcXFx1ZmUyZlxcXFx1MjBkMC1cXFxcdTIwZmZdXCIsXCJnXCIpLE9uPVJlZ0V4cChcIlxcXFx1ZDgzY1tcXFxcdWRmZmItXFxcXHVkZmZmXSg/PVxcXFx1ZDgzY1tcXFxcdWRmZmItXFxcXHVkZmZmXSl8XCIrRW4rbW4sXCJnXCIpLEluPVJlZ0V4cChbXCJbQS1aXFxcXHhjMC1cXFxceGQ2XFxcXHhkOC1cXFxceGRlXT9bYS16XFxcXHhkZi1cXFxceGY2XFxcXHhmOC1cXFxceGZmXSsoPzpbJ1xcdTIwMTldKD86ZHxsbHxtfHJlfHN8dHx2ZSkpPyg/PVtcXFxceGFjXFxcXHhiMVxcXFx4ZDdcXFxceGY3XFxcXHgwMC1cXFxceDJmXFxcXHgzYS1cXFxceDQwXFxcXHg1Yi1cXFxceDYwXFxcXHg3Yi1cXFxceGJmXFxcXHUyMDAwLVxcXFx1MjA2ZiBcXFxcdFxcXFx4MGJcXFxcZlxcXFx4YTBcXFxcdWZlZmZcXFxcblxcXFxyXFxcXHUyMDI4XFxcXHUyMDI5XFxcXHUxNjgwXFxcXHUxODBlXFxcXHUyMDAwXFxcXHUyMDAxXFxcXHUyMDAyXFxcXHUyMDAzXFxcXHUyMDA0XFxcXHUyMDA1XFxcXHUyMDA2XFxcXHUyMDA3XFxcXHUyMDA4XFxcXHUyMDA5XFxcXHUyMDBhXFxcXHUyMDJmXFxcXHUyMDVmXFxcXHUzMDAwXXxbQS1aXFxcXHhjMC1cXFxceGQ2XFxcXHhkOC1cXFxceGRlXXwkKXwoPzpbQS1aXFxcXHhjMC1cXFxceGQ2XFxcXHhkOC1cXFxceGRlXXxbXlxcXFx1ZDgwMC1cXFxcdWRmZmZcXFxceGFjXFxcXHhiMVxcXFx4ZDdcXFxceGY3XFxcXHgwMC1cXFxceDJmXFxcXHgzYS1cXFxceDQwXFxcXHg1Yi1cXFxceDYwXFxcXHg3Yi1cXFxceGJmXFxcXHUyMDAwLVxcXFx1MjA2ZiBcXFxcdFxcXFx4MGJcXFxcZlxcXFx4YTBcXFxcdWZlZmZcXFxcblxcXFxyXFxcXHUyMDI4XFxcXHUyMDI5XFxcXHUxNjgwXFxcXHUxODBlXFxcXHUyMDAwXFxcXHUyMDAxXFxcXHUyMDAyXFxcXHUyMDAzXFxcXHUyMDA0XFxcXHUyMDA1XFxcXHUyMDA2XFxcXHUyMDA3XFxcXHUyMDA4XFxcXHUyMDA5XFxcXHUyMDBhXFxcXHUyMDJmXFxcXHUyMDVmXFxcXHUzMDAwXFxcXGQrXFxcXHUyNzAwLVxcXFx1MjdiZmEtelxcXFx4ZGYtXFxcXHhmNlxcXFx4ZjgtXFxcXHhmZkEtWlxcXFx4YzAtXFxcXHhkNlxcXFx4ZDgtXFxcXHhkZV0pKyg/OlsnXFx1MjAxOV0oPzpEfExMfE18UkV8U3xUfFZFKSk/KD89W1xcXFx4YWNcXFxceGIxXFxcXHhkN1xcXFx4ZjdcXFxceDAwLVxcXFx4MmZcXFxceDNhLVxcXFx4NDBcXFxceDViLVxcXFx4NjBcXFxceDdiLVxcXFx4YmZcXFxcdTIwMDAtXFxcXHUyMDZmIFxcXFx0XFxcXHgwYlxcXFxmXFxcXHhhMFxcXFx1ZmVmZlxcXFxuXFxcXHJcXFxcdTIwMjhcXFxcdTIwMjlcXFxcdTE2ODBcXFxcdTE4MGVcXFxcdTIwMDBcXFxcdTIwMDFcXFxcdTIwMDJcXFxcdTIwMDNcXFxcdTIwMDRcXFxcdTIwMDVcXFxcdTIwMDZcXFxcdTIwMDdcXFxcdTIwMDhcXFxcdTIwMDlcXFxcdTIwMGFcXFxcdTIwMmZcXFxcdTIwNWZcXFxcdTMwMDBdfFtBLVpcXFxceGMwLVxcXFx4ZDZcXFxceGQ4LVxcXFx4ZGVdKD86W2EtelxcXFx4ZGYtXFxcXHhmNlxcXFx4ZjgtXFxcXHhmZl18W15cXFxcdWQ4MDAtXFxcXHVkZmZmXFxcXHhhY1xcXFx4YjFcXFxceGQ3XFxcXHhmN1xcXFx4MDAtXFxcXHgyZlxcXFx4M2EtXFxcXHg0MFxcXFx4NWItXFxcXHg2MFxcXFx4N2ItXFxcXHhiZlxcXFx1MjAwMC1cXFxcdTIwNmYgXFxcXHRcXFxceDBiXFxcXGZcXFxceGEwXFxcXHVmZWZmXFxcXG5cXFxcclxcXFx1MjAyOFxcXFx1MjAyOVxcXFx1MTY4MFxcXFx1MTgwZVxcXFx1MjAwMFxcXFx1MjAwMVxcXFx1MjAwMlxcXFx1MjAwM1xcXFx1MjAwNFxcXFx1MjAwNVxcXFx1MjAwNlxcXFx1MjAwN1xcXFx1MjAwOFxcXFx1MjAwOVxcXFx1MjAwYVxcXFx1MjAyZlxcXFx1MjA1ZlxcXFx1MzAwMFxcXFxkK1xcXFx1MjcwMC1cXFxcdTI3YmZhLXpcXFxceGRmLVxcXFx4ZjZcXFxceGY4LVxcXFx4ZmZBLVpcXFxceGMwLVxcXFx4ZDZcXFxceGQ4LVxcXFx4ZGVdKXwkKXxbQS1aXFxcXHhjMC1cXFxceGQ2XFxcXHhkOC1cXFxceGRlXT8oPzpbYS16XFxcXHhkZi1cXFxceGY2XFxcXHhmOC1cXFxceGZmXXxbXlxcXFx1ZDgwMC1cXFxcdWRmZmZcXFxceGFjXFxcXHhiMVxcXFx4ZDdcXFxceGY3XFxcXHgwMC1cXFxceDJmXFxcXHgzYS1cXFxceDQwXFxcXHg1Yi1cXFxceDYwXFxcXHg3Yi1cXFxceGJmXFxcXHUyMDAwLVxcXFx1MjA2ZiBcXFxcdFxcXFx4MGJcXFxcZlxcXFx4YTBcXFxcdWZlZmZcXFxcblxcXFxyXFxcXHUyMDI4XFxcXHUyMDI5XFxcXHUxNjgwXFxcXHUxODBlXFxcXHUyMDAwXFxcXHUyMDAxXFxcXHUyMDAyXFxcXHUyMDAzXFxcXHUyMDA0XFxcXHUyMDA1XFxcXHUyMDA2XFxcXHUyMDA3XFxcXHUyMDA4XFxcXHUyMDA5XFxcXHUyMDBhXFxcXHUyMDJmXFxcXHUyMDVmXFxcXHUzMDAwXFxcXGQrXFxcXHUyNzAwLVxcXFx1MjdiZmEtelxcXFx4ZGYtXFxcXHhmNlxcXFx4ZjgtXFxcXHhmZkEtWlxcXFx4YzAtXFxcXHhkNlxcXFx4ZDgtXFxcXHhkZV0pKyg/OlsnXFx1MjAxOV0oPzpkfGxsfG18cmV8c3x0fHZlKSk/fFtBLVpcXFxceGMwLVxcXFx4ZDZcXFxceGQ4LVxcXFx4ZGVdKyg/OlsnXFx1MjAxOV0oPzpEfExMfE18UkV8U3xUfFZFKSk/fFxcXFxkKig/OjFTVHwyTkR8M1JEfCg/IVsxMjNdKVxcXFxkVEgpKD89XFxcXGJ8W2Etel9dKXxcXFxcZCooPzoxc3R8Mm5kfDNyZHwoPyFbMTIzXSlcXFxcZHRoKSg/PVxcXFxifFtBLVpfXSl8XFxcXGQrXCIsQW5dLmpvaW4oXCJ8XCIpLFwiZ1wiKSxSbj1SZWdFeHAoXCJbXFxcXHUyMDBkXFxcXHVkODAwLVxcXFx1ZGZmZlxcXFx1MDMwMC1cXFxcdTAzNmZcXFxcdWZlMjAtXFxcXHVmZTJmXFxcXHUyMGQwLVxcXFx1MjBmZlxcXFx1ZmUwZVxcXFx1ZmUwZl1cIiksem49L1thLXpdW0EtWl18W0EtWl17Mix9W2Etel18WzAtOV1bYS16QS1aXXxbYS16QS1aXVswLTldfFteYS16QS1aMC05IF0vLFduPVwiQXJyYXkgQnVmZmVyIERhdGFWaWV3IERhdGUgRXJyb3IgRmxvYXQzMkFycmF5IEZsb2F0NjRBcnJheSBGdW5jdGlvbiBJbnQ4QXJyYXkgSW50MTZBcnJheSBJbnQzMkFycmF5IE1hcCBNYXRoIE9iamVjdCBQcm9taXNlIFJlZ0V4cCBTZXQgU3RyaW5nIFN5bWJvbCBUeXBlRXJyb3IgVWludDhBcnJheSBVaW50OENsYW1wZWRBcnJheSBVaW50MTZBcnJheSBVaW50MzJBcnJheSBXZWFrTWFwIF8gY2xlYXJUaW1lb3V0IGlzRmluaXRlIHBhcnNlSW50IHNldFRpbWVvdXRcIi5zcGxpdChcIiBcIiksQm49e307XG5CbltcIltvYmplY3QgRmxvYXQzMkFycmF5XVwiXT1CbltcIltvYmplY3QgRmxvYXQ2NEFycmF5XVwiXT1CbltcIltvYmplY3QgSW50OEFycmF5XVwiXT1CbltcIltvYmplY3QgSW50MTZBcnJheV1cIl09Qm5bXCJbb2JqZWN0IEludDMyQXJyYXldXCJdPUJuW1wiW29iamVjdCBVaW50OEFycmF5XVwiXT1CbltcIltvYmplY3QgVWludDhDbGFtcGVkQXJyYXldXCJdPUJuW1wiW29iamVjdCBVaW50MTZBcnJheV1cIl09Qm5bXCJbb2JqZWN0IFVpbnQzMkFycmF5XVwiXT10cnVlLEJuW1wiW29iamVjdCBBcmd1bWVudHNdXCJdPUJuW1wiW29iamVjdCBBcnJheV1cIl09Qm5bXCJbb2JqZWN0IEFycmF5QnVmZmVyXVwiXT1CbltcIltvYmplY3QgQm9vbGVhbl1cIl09Qm5bXCJbb2JqZWN0IERhdGFWaWV3XVwiXT1CbltcIltvYmplY3QgRGF0ZV1cIl09Qm5bXCJbb2JqZWN0IEVycm9yXVwiXT1CbltcIltvYmplY3QgRnVuY3Rpb25dXCJdPUJuW1wiW29iamVjdCBNYXBdXCJdPUJuW1wiW29iamVjdCBOdW1iZXJdXCJdPUJuW1wiW29iamVjdCBPYmplY3RdXCJdPUJuW1wiW29iamVjdCBSZWdFeHBdXCJdPUJuW1wiW29iamVjdCBTZXRdXCJdPUJuW1wiW29iamVjdCBTdHJpbmddXCJdPUJuW1wiW29iamVjdCBXZWFrTWFwXVwiXT1mYWxzZTtcbnZhciBMbj17fTtMbltcIltvYmplY3QgQXJndW1lbnRzXVwiXT1MbltcIltvYmplY3QgQXJyYXldXCJdPUxuW1wiW29iamVjdCBBcnJheUJ1ZmZlcl1cIl09TG5bXCJbb2JqZWN0IERhdGFWaWV3XVwiXT1MbltcIltvYmplY3QgQm9vbGVhbl1cIl09TG5bXCJbb2JqZWN0IERhdGVdXCJdPUxuW1wiW29iamVjdCBGbG9hdDMyQXJyYXldXCJdPUxuW1wiW29iamVjdCBGbG9hdDY0QXJyYXldXCJdPUxuW1wiW29iamVjdCBJbnQ4QXJyYXldXCJdPUxuW1wiW29iamVjdCBJbnQxNkFycmF5XVwiXT1MbltcIltvYmplY3QgSW50MzJBcnJheV1cIl09TG5bXCJbb2JqZWN0IE1hcF1cIl09TG5bXCJbb2JqZWN0IE51bWJlcl1cIl09TG5bXCJbb2JqZWN0IE9iamVjdF1cIl09TG5bXCJbb2JqZWN0IFJlZ0V4cF1cIl09TG5bXCJbb2JqZWN0IFNldF1cIl09TG5bXCJbb2JqZWN0IFN0cmluZ11cIl09TG5bXCJbb2JqZWN0IFN5bWJvbF1cIl09TG5bXCJbb2JqZWN0IFVpbnQ4QXJyYXldXCJdPUxuW1wiW29iamVjdCBVaW50OENsYW1wZWRBcnJheV1cIl09TG5bXCJbb2JqZWN0IFVpbnQxNkFycmF5XVwiXT1MbltcIltvYmplY3QgVWludDMyQXJyYXldXCJdPXRydWUsXG5MbltcIltvYmplY3QgRXJyb3JdXCJdPUxuW1wiW29iamVjdCBGdW5jdGlvbl1cIl09TG5bXCJbb2JqZWN0IFdlYWtNYXBdXCJdPWZhbHNlO3ZhciBVbj17XCJcXFxcXCI6XCJcXFxcXCIsXCInXCI6XCInXCIsXCJcXG5cIjpcIm5cIixcIlxcclwiOlwiclwiLFwiXFx1MjAyOFwiOlwidTIwMjhcIixcIlxcdTIwMjlcIjpcInUyMDI5XCJ9LENuPXBhcnNlRmxvYXQsRG49cGFyc2VJbnQsTW49dHlwZW9mIGdsb2JhbD09XCJvYmplY3RcIiYmZ2xvYmFsJiZnbG9iYWwuT2JqZWN0PT09T2JqZWN0JiZnbG9iYWwsVG49dHlwZW9mIHNlbGY9PVwib2JqZWN0XCImJnNlbGYmJnNlbGYuT2JqZWN0PT09T2JqZWN0JiZzZWxmLCRuPU1ufHxUbnx8RnVuY3Rpb24oXCJyZXR1cm4gdGhpc1wiKSgpLEZuPXR5cGVvZiBleHBvcnRzPT1cIm9iamVjdFwiJiZleHBvcnRzJiYhZXhwb3J0cy5ub2RlVHlwZSYmZXhwb3J0cyxObj1GbiYmdHlwZW9mIG1vZHVsZT09XCJvYmplY3RcIiYmbW9kdWxlJiYhbW9kdWxlLm5vZGVUeXBlJiZtb2R1bGUsUG49Tm4mJk5uLmV4cG9ydHM9PT1Gbixabj1QbiYmTW4ucHJvY2Vzcyxxbj1mdW5jdGlvbigpe1xudHJ5e3ZhciBuPU5uJiZObi5mJiZObi5mKFwidXRpbFwiKS50eXBlcztyZXR1cm4gbj9uOlpuJiZabi5iaW5kaW5nJiZabi5iaW5kaW5nKFwidXRpbFwiKX1jYXRjaChuKXt9fSgpLFZuPXFuJiZxbi5pc0FycmF5QnVmZmVyLEtuPXFuJiZxbi5pc0RhdGUsR249cW4mJnFuLmlzTWFwLEhuPXFuJiZxbi5pc1JlZ0V4cCxKbj1xbiYmcW4uaXNTZXQsWW49cW4mJnFuLmlzVHlwZWRBcnJheSxRbj1iKFwibGVuZ3RoXCIpLFhuPXgoe1wiXFx4YzBcIjpcIkFcIixcIlxceGMxXCI6XCJBXCIsXCJcXHhjMlwiOlwiQVwiLFwiXFx4YzNcIjpcIkFcIixcIlxceGM0XCI6XCJBXCIsXCJcXHhjNVwiOlwiQVwiLFwiXFx4ZTBcIjpcImFcIixcIlxceGUxXCI6XCJhXCIsXCJcXHhlMlwiOlwiYVwiLFwiXFx4ZTNcIjpcImFcIixcIlxceGU0XCI6XCJhXCIsXCJcXHhlNVwiOlwiYVwiLFwiXFx4YzdcIjpcIkNcIixcIlxceGU3XCI6XCJjXCIsXCJcXHhkMFwiOlwiRFwiLFwiXFx4ZjBcIjpcImRcIixcIlxceGM4XCI6XCJFXCIsXCJcXHhjOVwiOlwiRVwiLFwiXFx4Y2FcIjpcIkVcIixcIlxceGNiXCI6XCJFXCIsXCJcXHhlOFwiOlwiZVwiLFwiXFx4ZTlcIjpcImVcIixcIlxceGVhXCI6XCJlXCIsXCJcXHhlYlwiOlwiZVwiLFwiXFx4Y2NcIjpcIklcIixcblwiXFx4Y2RcIjpcIklcIixcIlxceGNlXCI6XCJJXCIsXCJcXHhjZlwiOlwiSVwiLFwiXFx4ZWNcIjpcImlcIixcIlxceGVkXCI6XCJpXCIsXCJcXHhlZVwiOlwiaVwiLFwiXFx4ZWZcIjpcImlcIixcIlxceGQxXCI6XCJOXCIsXCJcXHhmMVwiOlwiblwiLFwiXFx4ZDJcIjpcIk9cIixcIlxceGQzXCI6XCJPXCIsXCJcXHhkNFwiOlwiT1wiLFwiXFx4ZDVcIjpcIk9cIixcIlxceGQ2XCI6XCJPXCIsXCJcXHhkOFwiOlwiT1wiLFwiXFx4ZjJcIjpcIm9cIixcIlxceGYzXCI6XCJvXCIsXCJcXHhmNFwiOlwib1wiLFwiXFx4ZjVcIjpcIm9cIixcIlxceGY2XCI6XCJvXCIsXCJcXHhmOFwiOlwib1wiLFwiXFx4ZDlcIjpcIlVcIixcIlxceGRhXCI6XCJVXCIsXCJcXHhkYlwiOlwiVVwiLFwiXFx4ZGNcIjpcIlVcIixcIlxceGY5XCI6XCJ1XCIsXCJcXHhmYVwiOlwidVwiLFwiXFx4ZmJcIjpcInVcIixcIlxceGZjXCI6XCJ1XCIsXCJcXHhkZFwiOlwiWVwiLFwiXFx4ZmRcIjpcInlcIixcIlxceGZmXCI6XCJ5XCIsXCJcXHhjNlwiOlwiQWVcIixcIlxceGU2XCI6XCJhZVwiLFwiXFx4ZGVcIjpcIlRoXCIsXCJcXHhmZVwiOlwidGhcIixcIlxceGRmXCI6XCJzc1wiLFwiXFx1MDEwMFwiOlwiQVwiLFwiXFx1MDEwMlwiOlwiQVwiLFwiXFx1MDEwNFwiOlwiQVwiLFwiXFx1MDEwMVwiOlwiYVwiLFwiXFx1MDEwM1wiOlwiYVwiLFwiXFx1MDEwNVwiOlwiYVwiLFwiXFx1MDEwNlwiOlwiQ1wiLFxuXCJcXHUwMTA4XCI6XCJDXCIsXCJcXHUwMTBhXCI6XCJDXCIsXCJcXHUwMTBjXCI6XCJDXCIsXCJcXHUwMTA3XCI6XCJjXCIsXCJcXHUwMTA5XCI6XCJjXCIsXCJcXHUwMTBiXCI6XCJjXCIsXCJcXHUwMTBkXCI6XCJjXCIsXCJcXHUwMTBlXCI6XCJEXCIsXCJcXHUwMTEwXCI6XCJEXCIsXCJcXHUwMTBmXCI6XCJkXCIsXCJcXHUwMTExXCI6XCJkXCIsXCJcXHUwMTEyXCI6XCJFXCIsXCJcXHUwMTE0XCI6XCJFXCIsXCJcXHUwMTE2XCI6XCJFXCIsXCJcXHUwMTE4XCI6XCJFXCIsXCJcXHUwMTFhXCI6XCJFXCIsXCJcXHUwMTEzXCI6XCJlXCIsXCJcXHUwMTE1XCI6XCJlXCIsXCJcXHUwMTE3XCI6XCJlXCIsXCJcXHUwMTE5XCI6XCJlXCIsXCJcXHUwMTFiXCI6XCJlXCIsXCJcXHUwMTFjXCI6XCJHXCIsXCJcXHUwMTFlXCI6XCJHXCIsXCJcXHUwMTIwXCI6XCJHXCIsXCJcXHUwMTIyXCI6XCJHXCIsXCJcXHUwMTFkXCI6XCJnXCIsXCJcXHUwMTFmXCI6XCJnXCIsXCJcXHUwMTIxXCI6XCJnXCIsXCJcXHUwMTIzXCI6XCJnXCIsXCJcXHUwMTI0XCI6XCJIXCIsXCJcXHUwMTI2XCI6XCJIXCIsXCJcXHUwMTI1XCI6XCJoXCIsXCJcXHUwMTI3XCI6XCJoXCIsXCJcXHUwMTI4XCI6XCJJXCIsXCJcXHUwMTJhXCI6XCJJXCIsXCJcXHUwMTJjXCI6XCJJXCIsXCJcXHUwMTJlXCI6XCJJXCIsXCJcXHUwMTMwXCI6XCJJXCIsXCJcXHUwMTI5XCI6XCJpXCIsXG5cIlxcdTAxMmJcIjpcImlcIixcIlxcdTAxMmRcIjpcImlcIixcIlxcdTAxMmZcIjpcImlcIixcIlxcdTAxMzFcIjpcImlcIixcIlxcdTAxMzRcIjpcIkpcIixcIlxcdTAxMzVcIjpcImpcIixcIlxcdTAxMzZcIjpcIktcIixcIlxcdTAxMzdcIjpcImtcIixcIlxcdTAxMzhcIjpcImtcIixcIlxcdTAxMzlcIjpcIkxcIixcIlxcdTAxM2JcIjpcIkxcIixcIlxcdTAxM2RcIjpcIkxcIixcIlxcdTAxM2ZcIjpcIkxcIixcIlxcdTAxNDFcIjpcIkxcIixcIlxcdTAxM2FcIjpcImxcIixcIlxcdTAxM2NcIjpcImxcIixcIlxcdTAxM2VcIjpcImxcIixcIlxcdTAxNDBcIjpcImxcIixcIlxcdTAxNDJcIjpcImxcIixcIlxcdTAxNDNcIjpcIk5cIixcIlxcdTAxNDVcIjpcIk5cIixcIlxcdTAxNDdcIjpcIk5cIixcIlxcdTAxNGFcIjpcIk5cIixcIlxcdTAxNDRcIjpcIm5cIixcIlxcdTAxNDZcIjpcIm5cIixcIlxcdTAxNDhcIjpcIm5cIixcIlxcdTAxNGJcIjpcIm5cIixcIlxcdTAxNGNcIjpcIk9cIixcIlxcdTAxNGVcIjpcIk9cIixcIlxcdTAxNTBcIjpcIk9cIixcIlxcdTAxNGRcIjpcIm9cIixcIlxcdTAxNGZcIjpcIm9cIixcIlxcdTAxNTFcIjpcIm9cIixcIlxcdTAxNTRcIjpcIlJcIixcIlxcdTAxNTZcIjpcIlJcIixcIlxcdTAxNThcIjpcIlJcIixcIlxcdTAxNTVcIjpcInJcIixcIlxcdTAxNTdcIjpcInJcIixcIlxcdTAxNTlcIjpcInJcIixcblwiXFx1MDE1YVwiOlwiU1wiLFwiXFx1MDE1Y1wiOlwiU1wiLFwiXFx1MDE1ZVwiOlwiU1wiLFwiXFx1MDE2MFwiOlwiU1wiLFwiXFx1MDE1YlwiOlwic1wiLFwiXFx1MDE1ZFwiOlwic1wiLFwiXFx1MDE1ZlwiOlwic1wiLFwiXFx1MDE2MVwiOlwic1wiLFwiXFx1MDE2MlwiOlwiVFwiLFwiXFx1MDE2NFwiOlwiVFwiLFwiXFx1MDE2NlwiOlwiVFwiLFwiXFx1MDE2M1wiOlwidFwiLFwiXFx1MDE2NVwiOlwidFwiLFwiXFx1MDE2N1wiOlwidFwiLFwiXFx1MDE2OFwiOlwiVVwiLFwiXFx1MDE2YVwiOlwiVVwiLFwiXFx1MDE2Y1wiOlwiVVwiLFwiXFx1MDE2ZVwiOlwiVVwiLFwiXFx1MDE3MFwiOlwiVVwiLFwiXFx1MDE3MlwiOlwiVVwiLFwiXFx1MDE2OVwiOlwidVwiLFwiXFx1MDE2YlwiOlwidVwiLFwiXFx1MDE2ZFwiOlwidVwiLFwiXFx1MDE2ZlwiOlwidVwiLFwiXFx1MDE3MVwiOlwidVwiLFwiXFx1MDE3M1wiOlwidVwiLFwiXFx1MDE3NFwiOlwiV1wiLFwiXFx1MDE3NVwiOlwid1wiLFwiXFx1MDE3NlwiOlwiWVwiLFwiXFx1MDE3N1wiOlwieVwiLFwiXFx1MDE3OFwiOlwiWVwiLFwiXFx1MDE3OVwiOlwiWlwiLFwiXFx1MDE3YlwiOlwiWlwiLFwiXFx1MDE3ZFwiOlwiWlwiLFwiXFx1MDE3YVwiOlwielwiLFwiXFx1MDE3Y1wiOlwielwiLFwiXFx1MDE3ZVwiOlwielwiLFwiXFx1MDEzMlwiOlwiSUpcIixcIlxcdTAxMzNcIjpcImlqXCIsXG5cIlxcdTAxNTJcIjpcIk9lXCIsXCJcXHUwMTUzXCI6XCJvZVwiLFwiXFx1MDE0OVwiOlwiJ25cIixcIlxcdTAxN2ZcIjpcInNcIn0pLG50PXgoe1wiJlwiOlwiJmFtcDtcIixcIjxcIjpcIiZsdDtcIixcIj5cIjpcIiZndDtcIiwnXCInOlwiJnF1b3Q7XCIsXCInXCI6XCImIzM5O1wifSksdHQ9eCh7XCImYW1wO1wiOlwiJlwiLFwiJmx0O1wiOlwiPFwiLFwiJmd0O1wiOlwiPlwiLFwiJnF1b3Q7XCI6J1wiJyxcIiYjMzk7XCI6XCInXCJ9KSxydD1mdW5jdGlvbiB4KG1uKXtmdW5jdGlvbiBBbihuKXtpZihkdShuKSYmIW9mKG4pJiYhKG4gaW5zdGFuY2VvZiBVbikpe2lmKG4gaW5zdGFuY2VvZiBPbilyZXR1cm4gbjtpZihpaS5jYWxsKG4sXCJfX3dyYXBwZWRfX1wiKSlyZXR1cm4gJGUobil9cmV0dXJuIG5ldyBPbihuKX1mdW5jdGlvbiBFbigpe31mdW5jdGlvbiBPbihuLHQpe3RoaXMuX193cmFwcGVkX189bix0aGlzLl9fYWN0aW9uc19fPVtdLHRoaXMuX19jaGFpbl9fPSEhdCx0aGlzLl9faW5kZXhfXz0wLHRoaXMuX192YWx1ZXNfXz1UfWZ1bmN0aW9uIFVuKG4pe3RoaXMuX193cmFwcGVkX189bixcbnRoaXMuX19hY3Rpb25zX189W10sdGhpcy5fX2Rpcl9fPTEsdGhpcy5fX2ZpbHRlcmVkX189ZmFsc2UsdGhpcy5fX2l0ZXJhdGVlc19fPVtdLHRoaXMuX190YWtlQ291bnRfXz00Mjk0OTY3Mjk1LHRoaXMuX192aWV3c19fPVtdfWZ1bmN0aW9uIE1uKG4pe3ZhciB0PS0xLHI9bnVsbD09bj8wOm4ubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7Kyt0PHI7KXt2YXIgZT1uW3RdO3RoaXMuc2V0KGVbMF0sZVsxXSl9fWZ1bmN0aW9uIFRuKG4pe3ZhciB0PS0xLHI9bnVsbD09bj8wOm4ubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7Kyt0PHI7KXt2YXIgZT1uW3RdO3RoaXMuc2V0KGVbMF0sZVsxXSl9fWZ1bmN0aW9uIEZuKG4pe3ZhciB0PS0xLHI9bnVsbD09bj8wOm4ubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7Kyt0PHI7KXt2YXIgZT1uW3RdO3RoaXMuc2V0KGVbMF0sZVsxXSl9fWZ1bmN0aW9uIE5uKG4pe3ZhciB0PS0xLHI9bnVsbD09bj8wOm4ubGVuZ3RoO2Zvcih0aGlzLl9fZGF0YV9fPW5ldyBGbjsrK3Q8cjspdGhpcy5hZGQoblt0XSk7XG59ZnVuY3Rpb24gWm4obil7dGhpcy5zaXplPSh0aGlzLl9fZGF0YV9fPW5ldyBUbihuKSkuc2l6ZX1mdW5jdGlvbiBxbihuLHQpe3ZhciByLGU9b2YobiksdT0hZSYmdWYobiksaT0hZSYmIXUmJmNmKG4pLG89IWUmJiF1JiYhaSYmcGYobiksdT0oZT1lfHx1fHxpfHxvKT9BKG4ubGVuZ3RoLFh1KTpbXSxmPXUubGVuZ3RoO2ZvcihyIGluIG4pIXQmJiFpaS5jYWxsKG4scil8fGUmJihcImxlbmd0aFwiPT1yfHxpJiYoXCJvZmZzZXRcIj09cnx8XCJwYXJlbnRcIj09cil8fG8mJihcImJ1ZmZlclwiPT1yfHxcImJ5dGVMZW5ndGhcIj09cnx8XCJieXRlT2Zmc2V0XCI9PXIpfHxTZShyLGYpKXx8dS5wdXNoKHIpO3JldHVybiB1fWZ1bmN0aW9uIFFuKG4pe3ZhciB0PW4ubGVuZ3RoO3JldHVybiB0P25baXIoMCx0LTEpXTpUfWZ1bmN0aW9uIGV0KG4sdCl7cmV0dXJuIENlKFVyKG4pLHB0KHQsMCxuLmxlbmd0aCkpfWZ1bmN0aW9uIHV0KG4pe3JldHVybiBDZShVcihuKSl9ZnVuY3Rpb24gaXQobix0LHIpeyhyPT09VHx8YXUoblt0XSxyKSkmJihyIT09VHx8dCBpbiBuKXx8c3Qobix0LHIpO1xufWZ1bmN0aW9uIG90KG4sdCxyKXt2YXIgZT1uW3RdO2lpLmNhbGwobix0KSYmYXUoZSxyKSYmKHIhPT1UfHx0IGluIG4pfHxzdChuLHQscil9ZnVuY3Rpb24gZnQobix0KXtmb3IodmFyIHI9bi5sZW5ndGg7ci0tOylpZihhdShuW3JdWzBdLHQpKXJldHVybiByO3JldHVybi0xfWZ1bmN0aW9uIGN0KG4sdCxyLGUpe3JldHVybiBlbyhuLGZ1bmN0aW9uKG4sdSxpKXt0KGUsbixyKG4pLGkpfSksZX1mdW5jdGlvbiBhdChuLHQpe3JldHVybiBuJiZDcih0LHp1KHQpLG4pfWZ1bmN0aW9uIGx0KG4sdCl7cmV0dXJuIG4mJkNyKHQsV3UodCksbil9ZnVuY3Rpb24gc3Qobix0LHIpe1wiX19wcm90b19fXCI9PXQmJm1pP21pKG4sdCx7Y29uZmlndXJhYmxlOnRydWUsZW51bWVyYWJsZTp0cnVlLHZhbHVlOnIsd3JpdGFibGU6dHJ1ZX0pOm5bdF09cn1mdW5jdGlvbiBodChuLHQpe2Zvcih2YXIgcj0tMSxlPXQubGVuZ3RoLHU9VnUoZSksaT1udWxsPT1uOysrcjxlOyl1W3JdPWk/VDpJdShuLHRbcl0pO3JldHVybiB1O1xufWZ1bmN0aW9uIHB0KG4sdCxyKXtyZXR1cm4gbj09PW4mJihyIT09VCYmKG49bjw9cj9uOnIpLHQhPT1UJiYobj1uPj10P246dCkpLG59ZnVuY3Rpb24gX3Qobix0LGUsdSxpLG8pe3ZhciBmLGM9MSZ0LGE9MiZ0LGw9NCZ0O2lmKGUmJihmPWk/ZShuLHUsaSxvKTplKG4pKSxmIT09VClyZXR1cm4gZjtpZighZ3UobikpcmV0dXJuIG47aWYodT1vZihuKSl7aWYoZj1tZShuKSwhYylyZXR1cm4gVXIobixmKX1lbHNle3ZhciBzPV9vKG4pLGg9XCJbb2JqZWN0IEZ1bmN0aW9uXVwiPT1zfHxcIltvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dXCI9PXM7aWYoY2YobikpcmV0dXJuIElyKG4sYyk7aWYoXCJbb2JqZWN0IE9iamVjdF1cIj09c3x8XCJbb2JqZWN0IEFyZ3VtZW50c11cIj09c3x8aCYmIWkpe2lmKGY9YXx8aD97fTpBZShuKSwhYylyZXR1cm4gYT9NcihuLGx0KGYsbikpOkRyKG4sYXQoZixuKSl9ZWxzZXtpZighTG5bc10pcmV0dXJuIGk/bjp7fTtmPUVlKG4scyxjKX19aWYob3x8KG89bmV3IFpuKSxcbmk9by5nZXQobikpcmV0dXJuIGk7aWYoby5zZXQobixmKSxoZihuKSlyZXR1cm4gbi5mb3JFYWNoKGZ1bmN0aW9uKHIpe2YuYWRkKF90KHIsdCxlLHIsbixvKSl9KSxmO2lmKGxmKG4pKXJldHVybiBuLmZvckVhY2goZnVuY3Rpb24ocix1KXtmLnNldCh1LF90KHIsdCxlLHUsbixvKSl9KSxmO3ZhciBhPWw/YT92ZTpfZTphP1d1Onp1LHA9dT9UOmEobik7cmV0dXJuIHIocHx8bixmdW5jdGlvbihyLHUpe3AmJih1PXIscj1uW3VdKSxvdChmLHUsX3Qocix0LGUsdSxuLG8pKX0pLGZ9ZnVuY3Rpb24gdnQobil7dmFyIHQ9enUobik7cmV0dXJuIGZ1bmN0aW9uKHIpe3JldHVybiBndChyLG4sdCl9fWZ1bmN0aW9uIGd0KG4sdCxyKXt2YXIgZT1yLmxlbmd0aDtpZihudWxsPT1uKXJldHVybiFlO2ZvcihuPVl1KG4pO2UtLTspe3ZhciB1PXJbZV0saT10W3VdLG89blt1XTtpZihvPT09VCYmISh1IGluIG4pfHwhaShvKSlyZXR1cm4gZmFsc2V9cmV0dXJuIHRydWV9ZnVuY3Rpb24gZHQobix0LHIpe2lmKHR5cGVvZiBuIT1cImZ1bmN0aW9uXCIpdGhyb3cgbmV3IG5pKFwiRXhwZWN0ZWQgYSBmdW5jdGlvblwiKTtcbnJldHVybiB5byhmdW5jdGlvbigpe24uYXBwbHkoVCxyKX0sdCl9ZnVuY3Rpb24geXQobix0LHIsZSl7dmFyIHU9LTEsaT1vLGE9dHJ1ZSxsPW4ubGVuZ3RoLHM9W10saD10Lmxlbmd0aDtpZighbClyZXR1cm4gcztyJiYodD1jKHQsayhyKSkpLGU/KGk9ZixhPWZhbHNlKToyMDA8PXQubGVuZ3RoJiYoaT1PLGE9ZmFsc2UsdD1uZXcgTm4odCkpO246Zm9yKDsrK3U8bDspe3ZhciBwPW5bdV0sXz1udWxsPT1yP3A6cihwKSxwPWV8fDAhPT1wP3A6MDtpZihhJiZfPT09Xyl7Zm9yKHZhciB2PWg7di0tOylpZih0W3ZdPT09Xyljb250aW51ZSBuO3MucHVzaChwKX1lbHNlIGkodCxfLGUpfHxzLnB1c2gocCl9cmV0dXJuIHN9ZnVuY3Rpb24gYnQobix0KXt2YXIgcj10cnVlO3JldHVybiBlbyhuLGZ1bmN0aW9uKG4sZSx1KXtyZXR1cm4gcj0hIXQobixlLHUpfSkscn1mdW5jdGlvbiB4dChuLHQscil7Zm9yKHZhciBlPS0xLHU9bi5sZW5ndGg7KytlPHU7KXt2YXIgaT1uW2VdLG89dChpKTtpZihudWxsIT1vJiYoZj09PVQ/bz09PW8mJiFqdShvKTpyKG8sZikpKXZhciBmPW8sYz1pO1xufXJldHVybiBjfWZ1bmN0aW9uIGp0KG4sdCl7dmFyIHI9W107cmV0dXJuIGVvKG4sZnVuY3Rpb24obixlLHUpe3QobixlLHUpJiZyLnB1c2gobil9KSxyfWZ1bmN0aW9uIHd0KG4sdCxyLGUsdSl7dmFyIGk9LTEsbz1uLmxlbmd0aDtmb3Iocnx8KHI9a2UpLHV8fCh1PVtdKTsrK2k8bzspe3ZhciBmPW5baV07MDx0JiZyKGYpPzE8dD93dChmLHQtMSxyLGUsdSk6YSh1LGYpOmV8fCh1W3UubGVuZ3RoXT1mKX1yZXR1cm4gdX1mdW5jdGlvbiBtdChuLHQpe3JldHVybiBuJiZpbyhuLHQsenUpfWZ1bmN0aW9uIEF0KG4sdCl7cmV0dXJuIG4mJm9vKG4sdCx6dSl9ZnVuY3Rpb24gRXQobix0KXtyZXR1cm4gaSh0LGZ1bmN0aW9uKHQpe3JldHVybiBwdShuW3RdKX0pfWZ1bmN0aW9uIGt0KG4sdCl7dD1Tcih0LG4pO2Zvcih2YXIgcj0wLGU9dC5sZW5ndGg7bnVsbCE9biYmcjxlOyluPW5bRGUodFtyKytdKV07cmV0dXJuIHImJnI9PWU/bjpUfWZ1bmN0aW9uIFN0KG4sdCxyKXtyZXR1cm4gdD10KG4pLFxub2Yobik/dDphKHQscihuKSl9ZnVuY3Rpb24gT3Qobil7aWYobnVsbD09biluPW49PT1UP1wiW29iamVjdCBVbmRlZmluZWRdXCI6XCJbb2JqZWN0IE51bGxdXCI7ZWxzZSBpZih3aSYmd2kgaW4gWXUobikpe3ZhciB0PWlpLmNhbGwobix3aSkscj1uW3dpXTt0cnl7blt3aV09VDt2YXIgZT10cnVlfWNhdGNoKG4pe312YXIgdT1jaS5jYWxsKG4pO2UmJih0P25bd2ldPXI6ZGVsZXRlIG5bd2ldKSxuPXV9ZWxzZSBuPWNpLmNhbGwobik7cmV0dXJuIG59ZnVuY3Rpb24gSXQobix0KXtyZXR1cm4gbj50fWZ1bmN0aW9uIFJ0KG4sdCl7cmV0dXJuIG51bGwhPW4mJmlpLmNhbGwobix0KX1mdW5jdGlvbiB6dChuLHQpe3JldHVybiBudWxsIT1uJiZ0IGluIFl1KG4pfWZ1bmN0aW9uIFd0KG4sdCxyKXtmb3IodmFyIGU9cj9mOm8sdT1uWzBdLmxlbmd0aCxpPW4ubGVuZ3RoLGE9aSxsPVZ1KGkpLHM9MS8wLGg9W107YS0tOyl7dmFyIHA9blthXTthJiZ0JiYocD1jKHAsayh0KSkpLHM9VWkocC5sZW5ndGgscyksXG5sW2FdPSFyJiYodHx8MTIwPD11JiYxMjA8PXAubGVuZ3RoKT9uZXcgTm4oYSYmcCk6VH12YXIgcD1uWzBdLF89LTEsdj1sWzBdO246Zm9yKDsrK188dSYmaC5sZW5ndGg8czspe3ZhciBnPXBbX10sZD10P3QoZyk6ZyxnPXJ8fDAhPT1nP2c6MDtpZih2PyFPKHYsZCk6IWUoaCxkLHIpKXtmb3IoYT1pOy0tYTspe3ZhciB5PWxbYV07aWYoeT8hTyh5LGQpOiFlKG5bYV0sZCxyKSljb250aW51ZSBufXYmJnYucHVzaChkKSxoLnB1c2goZyl9fXJldHVybiBofWZ1bmN0aW9uIEJ0KG4sdCxyKXt2YXIgZT17fTtyZXR1cm4gbXQobixmdW5jdGlvbihuLHUsaSl7dChlLHIobiksdSxpKX0pLGV9ZnVuY3Rpb24gTHQodCxyLGUpe3JldHVybiByPVNyKHIsdCksdD0yPnIubGVuZ3RoP3Q6a3QodCxocihyLDAsLTEpKSxyPW51bGw9PXQ/dDp0W0RlKHFlKHIpKV0sbnVsbD09cj9UOm4ocix0LGUpfWZ1bmN0aW9uIFV0KG4pe3JldHVybiBkdShuKSYmXCJbb2JqZWN0IEFyZ3VtZW50c11cIj09T3Qobil9ZnVuY3Rpb24gQ3Qobil7XG5yZXR1cm4gZHUobikmJlwiW29iamVjdCBBcnJheUJ1ZmZlcl1cIj09T3Qobil9ZnVuY3Rpb24gRHQobil7cmV0dXJuIGR1KG4pJiZcIltvYmplY3QgRGF0ZV1cIj09T3Qobil9ZnVuY3Rpb24gTXQobix0LHIsZSx1KXtpZihuPT09dCl0PXRydWU7ZWxzZSBpZihudWxsPT1ufHxudWxsPT10fHwhZHUobikmJiFkdSh0KSl0PW4hPT1uJiZ0IT09dDtlbHNlIG46e3ZhciBpPW9mKG4pLG89b2YodCksZj1pP1wiW29iamVjdCBBcnJheV1cIjpfbyhuKSxjPW8/XCJbb2JqZWN0IEFycmF5XVwiOl9vKHQpLGY9XCJbb2JqZWN0IEFyZ3VtZW50c11cIj09Zj9cIltvYmplY3QgT2JqZWN0XVwiOmYsYz1cIltvYmplY3QgQXJndW1lbnRzXVwiPT1jP1wiW29iamVjdCBPYmplY3RdXCI6YyxhPVwiW29iamVjdCBPYmplY3RdXCI9PWYsbz1cIltvYmplY3QgT2JqZWN0XVwiPT1jO2lmKChjPWY9PWMpJiZjZihuKSl7aWYoIWNmKHQpKXt0PWZhbHNlO2JyZWFrIG59aT10cnVlLGE9ZmFsc2V9aWYoYyYmIWEpdXx8KHU9bmV3IFpuKSx0PWl8fHBmKG4pP3NlKG4sdCxyLGUsTXQsdSk6aGUobix0LGYscixlLE10LHUpO2Vsc2V7XG5pZighKDEmcikmJihpPWEmJmlpLmNhbGwobixcIl9fd3JhcHBlZF9fXCIpLGY9byYmaWkuY2FsbCh0LFwiX193cmFwcGVkX19cIiksaXx8Zikpe249aT9uLnZhbHVlKCk6bix0PWY/dC52YWx1ZSgpOnQsdXx8KHU9bmV3IFpuKSx0PU10KG4sdCxyLGUsdSk7YnJlYWsgbn1pZihjKXQ6aWYodXx8KHU9bmV3IFpuKSxpPTEmcixmPV9lKG4pLG89Zi5sZW5ndGgsYz1fZSh0KS5sZW5ndGgsbz09Y3x8aSl7Zm9yKGE9bzthLS07KXt2YXIgbD1mW2FdO2lmKCEoaT9sIGluIHQ6aWkuY2FsbCh0LGwpKSl7dD1mYWxzZTticmVhayB0fX1pZigoYz11LmdldChuKSkmJnUuZ2V0KHQpKXQ9Yz09dDtlbHNle2M9dHJ1ZSx1LnNldChuLHQpLHUuc2V0KHQsbik7Zm9yKHZhciBzPWk7KythPG87KXt2YXIgbD1mW2FdLGg9bltsXSxwPXRbbF07aWYoZSl2YXIgXz1pP2UocCxoLGwsdCxuLHUpOmUoaCxwLGwsbix0LHUpO2lmKF89PT1UP2ghPT1wJiYhTXQoaCxwLHIsZSx1KTohXyl7Yz1mYWxzZTticmVha31zfHwocz1cImNvbnN0cnVjdG9yXCI9PWwpO1xufWMmJiFzJiYocj1uLmNvbnN0cnVjdG9yLGU9dC5jb25zdHJ1Y3RvcixyIT1lJiZcImNvbnN0cnVjdG9yXCJpbiBuJiZcImNvbnN0cnVjdG9yXCJpbiB0JiYhKHR5cGVvZiByPT1cImZ1bmN0aW9uXCImJnIgaW5zdGFuY2VvZiByJiZ0eXBlb2YgZT09XCJmdW5jdGlvblwiJiZlIGluc3RhbmNlb2YgZSkmJihjPWZhbHNlKSksdS5kZWxldGUobiksdS5kZWxldGUodCksdD1jfX1lbHNlIHQ9ZmFsc2U7ZWxzZSB0PWZhbHNlfX1yZXR1cm4gdH1mdW5jdGlvbiBUdChuKXtyZXR1cm4gZHUobikmJlwiW29iamVjdCBNYXBdXCI9PV9vKG4pfWZ1bmN0aW9uICR0KG4sdCxyLGUpe3ZhciB1PXIubGVuZ3RoLGk9dSxvPSFlO2lmKG51bGw9PW4pcmV0dXJuIWk7Zm9yKG49WXUobik7dS0tOyl7dmFyIGY9clt1XTtpZihvJiZmWzJdP2ZbMV0hPT1uW2ZbMF1dOiEoZlswXWluIG4pKXJldHVybiBmYWxzZX1mb3IoOysrdTxpOyl7dmFyIGY9clt1XSxjPWZbMF0sYT1uW2NdLGw9ZlsxXTtpZihvJiZmWzJdKXtpZihhPT09VCYmIShjIGluIG4pKXJldHVybiBmYWxzZTtcbn1lbHNle2lmKGY9bmV3IFpuLGUpdmFyIHM9ZShhLGwsYyxuLHQsZik7aWYocz09PVQ/IU10KGwsYSwzLGUsZik6IXMpcmV0dXJuIGZhbHNlfX1yZXR1cm4gdHJ1ZX1mdW5jdGlvbiBGdChuKXtyZXR1cm4hKCFndShuKXx8ZmkmJmZpIGluIG4pJiYocHUobik/c2k6ZG4pLnRlc3QoTWUobikpfWZ1bmN0aW9uIE50KG4pe3JldHVybiBkdShuKSYmXCJbb2JqZWN0IFJlZ0V4cF1cIj09T3Qobil9ZnVuY3Rpb24gUHQobil7cmV0dXJuIGR1KG4pJiZcIltvYmplY3QgU2V0XVwiPT1fbyhuKX1mdW5jdGlvbiBadChuKXtyZXR1cm4gZHUobikmJnZ1KG4ubGVuZ3RoKSYmISFCbltPdChuKV19ZnVuY3Rpb24gcXQobil7cmV0dXJuIHR5cGVvZiBuPT1cImZ1bmN0aW9uXCI/bjpudWxsPT1uP1R1OnR5cGVvZiBuPT1cIm9iamVjdFwiP29mKG4pP0p0KG5bMF0sblsxXSk6SHQobik6UHUobil9ZnVuY3Rpb24gVnQobil7aWYoIXplKG4pKXJldHVybiBCaShuKTt2YXIgdCxyPVtdO2Zvcih0IGluIFl1KG4pKWlpLmNhbGwobix0KSYmXCJjb25zdHJ1Y3RvclwiIT10JiZyLnB1c2godCk7XG5yZXR1cm4gcn1mdW5jdGlvbiBLdChuLHQpe3JldHVybiBuPHR9ZnVuY3Rpb24gR3Qobix0KXt2YXIgcj0tMSxlPWx1KG4pP1Z1KG4ubGVuZ3RoKTpbXTtyZXR1cm4gZW8obixmdW5jdGlvbihuLHUsaSl7ZVsrK3JdPXQobix1LGkpfSksZX1mdW5jdGlvbiBIdChuKXt2YXIgdD14ZShuKTtyZXR1cm4gMT09dC5sZW5ndGgmJnRbMF1bMl0/V2UodFswXVswXSx0WzBdWzFdKTpmdW5jdGlvbihyKXtyZXR1cm4gcj09PW58fCR0KHIsbix0KX19ZnVuY3Rpb24gSnQobix0KXtyZXR1cm4gSWUobikmJnQ9PT10JiYhZ3UodCk/V2UoRGUobiksdCk6ZnVuY3Rpb24ocil7dmFyIGU9SXUocixuKTtyZXR1cm4gZT09PVQmJmU9PT10P1J1KHIsbik6TXQodCxlLDMpfX1mdW5jdGlvbiBZdChuLHQscixlLHUpe24hPT10JiZpbyh0LGZ1bmN0aW9uKGksbyl7aWYoZ3UoaSkpe3V8fCh1PW5ldyBabik7dmFyIGY9dSxjPVwiX19wcm90b19fXCI9PW8/VDpuW29dLGE9XCJfX3Byb3RvX19cIj09bz9UOnRbb10sbD1mLmdldChhKTtcbmlmKGwpaXQobixvLGwpO2Vsc2V7dmFyIGw9ZT9lKGMsYSxvK1wiXCIsbix0LGYpOlQscz1sPT09VDtpZihzKXt2YXIgaD1vZihhKSxwPSFoJiZjZihhKSxfPSFoJiYhcCYmcGYoYSksbD1hO2h8fHB8fF8/b2YoYyk/bD1jOnN1KGMpP2w9VXIoYyk6cD8ocz1mYWxzZSxsPUlyKGEsdHJ1ZSkpOl8/KHM9ZmFsc2UsbD16cihhLHRydWUpKTpsPVtdOmJ1KGEpfHx1ZihhKT8obD1jLHVmKGMpP2w9U3UoYyk6KCFndShjKXx8ciYmcHUoYykpJiYobD1BZShhKSkpOnM9ZmFsc2V9cyYmKGYuc2V0KGEsbCksWXQobCxhLHIsZSxmKSxmLmRlbGV0ZShhKSksaXQobixvLGwpfX1lbHNlIGY9ZT9lKFwiX19wcm90b19fXCI9PW8/VDpuW29dLGksbytcIlwiLG4sdCx1KTpULGY9PT1UJiYoZj1pKSxpdChuLG8sZil9LFd1KX1mdW5jdGlvbiBRdChuLHQpe3ZhciByPW4ubGVuZ3RoO2lmKHIpcmV0dXJuIHQrPTA+dD9yOjAsU2UodCxyKT9uW3RdOlR9ZnVuY3Rpb24gWHQobix0LHIpe3ZhciBlPS0xO3JldHVybiB0PWModC5sZW5ndGg/dDpbVHVdLGsoeWUoKSkpLFxubj1HdChuLGZ1bmN0aW9uKG4pe3JldHVybnthOmModCxmdW5jdGlvbih0KXtyZXR1cm4gdChuKX0pLGI6KytlLGM6bn19KSx3KG4sZnVuY3Rpb24obix0KXt2YXIgZTtuOntlPS0xO2Zvcih2YXIgdT1uLmEsaT10LmEsbz11Lmxlbmd0aCxmPXIubGVuZ3RoOysrZTxvOyl7dmFyIGM9V3IodVtlXSxpW2VdKTtpZihjKXtlPWU+PWY/YzpjKihcImRlc2NcIj09cltlXT8tMToxKTticmVhayBufX1lPW4uYi10LmJ9cmV0dXJuIGV9KX1mdW5jdGlvbiBucihuLHQpe3JldHVybiB0cihuLHQsZnVuY3Rpb24odCxyKXtyZXR1cm4gUnUobixyKX0pfWZ1bmN0aW9uIHRyKG4sdCxyKXtmb3IodmFyIGU9LTEsdT10Lmxlbmd0aCxpPXt9OysrZTx1Oyl7dmFyIG89dFtlXSxmPWt0KG4sbyk7cihmLG8pJiZscihpLFNyKG8sbiksZil9cmV0dXJuIGl9ZnVuY3Rpb24gcnIobil7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBrdCh0LG4pfX1mdW5jdGlvbiBlcihuLHQscixlKXt2YXIgdT1lP2c6dixpPS0xLG89dC5sZW5ndGgsZj1uO1xuZm9yKG49PT10JiYodD1Vcih0KSksciYmKGY9YyhuLGsocikpKTsrK2k8bzspZm9yKHZhciBhPTAsbD10W2ldLGw9cj9yKGwpOmw7LTE8KGE9dShmLGwsYSxlKSk7KWYhPT1uJiZiaS5jYWxsKGYsYSwxKSxiaS5jYWxsKG4sYSwxKTtyZXR1cm4gbn1mdW5jdGlvbiB1cihuLHQpe2Zvcih2YXIgcj1uP3QubGVuZ3RoOjAsZT1yLTE7ci0tOyl7dmFyIHU9dFtyXTtpZihyPT1lfHx1IT09aSl7dmFyIGk9dTtTZSh1KT9iaS5jYWxsKG4sdSwxKTp4cihuLHUpfX19ZnVuY3Rpb24gaXIobix0KXtyZXR1cm4gbitPaShNaSgpKih0LW4rMSkpfWZ1bmN0aW9uIG9yKG4sdCl7dmFyIHI9XCJcIjtpZighbnx8MT50fHw5MDA3MTk5MjU0NzQwOTkxPHQpcmV0dXJuIHI7ZG8gdCUyJiYocis9biksKHQ9T2kodC8yKSkmJihuKz1uKTt3aGlsZSh0KTtyZXR1cm4gcn1mdW5jdGlvbiBmcihuLHQpe3JldHVybiBibyhCZShuLHQsVHUpLG4rXCJcIil9ZnVuY3Rpb24gY3Iobil7cmV0dXJuIFFuKEx1KG4pKX1mdW5jdGlvbiBhcihuLHQpe1xudmFyIHI9THUobik7cmV0dXJuIENlKHIscHQodCwwLHIubGVuZ3RoKSl9ZnVuY3Rpb24gbHIobix0LHIsZSl7aWYoIWd1KG4pKXJldHVybiBuO3Q9U3IodCxuKTtmb3IodmFyIHU9LTEsaT10Lmxlbmd0aCxvPWktMSxmPW47bnVsbCE9ZiYmKyt1PGk7KXt2YXIgYz1EZSh0W3VdKSxhPXI7aWYodSE9byl7dmFyIGw9ZltjXSxhPWU/ZShsLGMsZik6VDthPT09VCYmKGE9Z3UobCk/bDpTZSh0W3UrMV0pP1tdOnt9KX1vdChmLGMsYSksZj1mW2NdfXJldHVybiBufWZ1bmN0aW9uIHNyKG4pe3JldHVybiBDZShMdShuKSl9ZnVuY3Rpb24gaHIobix0LHIpe3ZhciBlPS0xLHU9bi5sZW5ndGg7Zm9yKDA+dCYmKHQ9LXQ+dT8wOnUrdCkscj1yPnU/dTpyLDA+ciYmKHIrPXUpLHU9dD5yPzA6ci10Pj4+MCx0Pj4+PTAscj1WdSh1KTsrK2U8dTspcltlXT1uW2UrdF07cmV0dXJuIHJ9ZnVuY3Rpb24gcHIobix0KXt2YXIgcjtyZXR1cm4gZW8obixmdW5jdGlvbihuLGUsdSl7cmV0dXJuIHI9dChuLGUsdSksXG4hcn0pLCEhcn1mdW5jdGlvbiBfcihuLHQscil7dmFyIGU9MCx1PW51bGw9PW4/ZTpuLmxlbmd0aDtpZih0eXBlb2YgdD09XCJudW1iZXJcIiYmdD09PXQmJjIxNDc0ODM2NDc+PXUpe2Zvcig7ZTx1Oyl7dmFyIGk9ZSt1Pj4+MSxvPW5baV07bnVsbCE9PW8mJiFqdShvKSYmKHI/bzw9dDpvPHQpP2U9aSsxOnU9aX1yZXR1cm4gdX1yZXR1cm4gdnIobix0LFR1LHIpfWZ1bmN0aW9uIHZyKG4sdCxyLGUpe3Q9cih0KTtmb3IodmFyIHU9MCxpPW51bGw9PW4/MDpuLmxlbmd0aCxvPXQhPT10LGY9bnVsbD09PXQsYz1qdSh0KSxhPXQ9PT1UO3U8aTspe3ZhciBsPU9pKCh1K2kpLzIpLHM9cihuW2xdKSxoPXMhPT1ULHA9bnVsbD09PXMsXz1zPT09cyx2PWp1KHMpOyhvP2V8fF86YT9fJiYoZXx8aCk6Zj9fJiZoJiYoZXx8IXApOmM/XyYmaCYmIXAmJihlfHwhdik6cHx8dj8wOmU/czw9dDpzPHQpP3U9bCsxOmk9bH1yZXR1cm4gVWkoaSw0Mjk0OTY3Mjk0KX1mdW5jdGlvbiBncihuLHQpe2Zvcih2YXIgcj0tMSxlPW4ubGVuZ3RoLHU9MCxpPVtdOysrcjxlOyl7XG52YXIgbz1uW3JdLGY9dD90KG8pOm87aWYoIXJ8fCFhdShmLGMpKXt2YXIgYz1mO2lbdSsrXT0wPT09bz8wOm99fXJldHVybiBpfWZ1bmN0aW9uIGRyKG4pe3JldHVybiB0eXBlb2Ygbj09XCJudW1iZXJcIj9uOmp1KG4pP0Y6K259ZnVuY3Rpb24geXIobil7aWYodHlwZW9mIG49PVwic3RyaW5nXCIpcmV0dXJuIG47aWYob2YobikpcmV0dXJuIGMobix5cikrXCJcIjtpZihqdShuKSlyZXR1cm4gdG8/dG8uY2FsbChuKTpcIlwiO3ZhciB0PW4rXCJcIjtyZXR1cm5cIjBcIj09dCYmMS9uPT0tJD9cIi0wXCI6dH1mdW5jdGlvbiBicihuLHQscil7dmFyIGU9LTEsdT1vLGk9bi5sZW5ndGgsYz10cnVlLGE9W10sbD1hO2lmKHIpYz1mYWxzZSx1PWY7ZWxzZSBpZigyMDA8PWkpe2lmKHU9dD9udWxsOmxvKG4pKXJldHVybiBVKHUpO2M9ZmFsc2UsdT1PLGw9bmV3IE5ufWVsc2UgbD10P1tdOmE7bjpmb3IoOysrZTxpOyl7dmFyIHM9bltlXSxoPXQ/dChzKTpzLHM9cnx8MCE9PXM/czowO2lmKGMmJmg9PT1oKXtmb3IodmFyIHA9bC5sZW5ndGg7cC0tOylpZihsW3BdPT09aCljb250aW51ZSBuO1xudCYmbC5wdXNoKGgpLGEucHVzaChzKX1lbHNlIHUobCxoLHIpfHwobCE9PWEmJmwucHVzaChoKSxhLnB1c2gocykpfXJldHVybiBhfWZ1bmN0aW9uIHhyKG4sdCl7cmV0dXJuIHQ9U3IodCxuKSxuPTI+dC5sZW5ndGg/bjprdChuLGhyKHQsMCwtMSkpLG51bGw9PW58fGRlbGV0ZSBuW0RlKHFlKHQpKV19ZnVuY3Rpb24ganIobix0LHIsZSl7Zm9yKHZhciB1PW4ubGVuZ3RoLGk9ZT91Oi0xOyhlP2ktLTorK2k8dSkmJnQobltpXSxpLG4pOyk7cmV0dXJuIHI/aHIobixlPzA6aSxlP2krMTp1KTpocihuLGU/aSsxOjAsZT91OmkpfWZ1bmN0aW9uIHdyKG4sdCl7dmFyIHI9bjtyZXR1cm4gciBpbnN0YW5jZW9mIFVuJiYocj1yLnZhbHVlKCkpLGwodCxmdW5jdGlvbihuLHQpe3JldHVybiB0LmZ1bmMuYXBwbHkodC50aGlzQXJnLGEoW25dLHQuYXJncykpfSxyKX1mdW5jdGlvbiBtcihuLHQscil7dmFyIGU9bi5sZW5ndGg7aWYoMj5lKXJldHVybiBlP2JyKG5bMF0pOltdO2Zvcih2YXIgdT0tMSxpPVZ1KGUpOysrdTxlOylmb3IodmFyIG89blt1XSxmPS0xOysrZjxlOylmIT11JiYoaVt1XT15dChpW3VdfHxvLG5bZl0sdCxyKSk7XG5yZXR1cm4gYnIod3QoaSwxKSx0LHIpfWZ1bmN0aW9uIEFyKG4sdCxyKXtmb3IodmFyIGU9LTEsdT1uLmxlbmd0aCxpPXQubGVuZ3RoLG89e307KytlPHU7KXIobyxuW2VdLGU8aT90W2VdOlQpO3JldHVybiBvfWZ1bmN0aW9uIEVyKG4pe3JldHVybiBzdShuKT9uOltdfWZ1bmN0aW9uIGtyKG4pe3JldHVybiB0eXBlb2Ygbj09XCJmdW5jdGlvblwiP246VHV9ZnVuY3Rpb24gU3Iobix0KXtyZXR1cm4gb2Yobik/bjpJZShuLHQpP1tuXTp4byhPdShuKSl9ZnVuY3Rpb24gT3Iobix0LHIpe3ZhciBlPW4ubGVuZ3RoO3JldHVybiByPXI9PT1UP2U6ciwhdCYmcj49ZT9uOmhyKG4sdCxyKX1mdW5jdGlvbiBJcihuLHQpe2lmKHQpcmV0dXJuIG4uc2xpY2UoKTt2YXIgcj1uLmxlbmd0aCxyPXZpP3ZpKHIpOm5ldyBuLmNvbnN0cnVjdG9yKHIpO3JldHVybiBuLmNvcHkocikscn1mdW5jdGlvbiBScihuKXt2YXIgdD1uZXcgbi5jb25zdHJ1Y3RvcihuLmJ5dGVMZW5ndGgpO3JldHVybiBuZXcgX2kodCkuc2V0KG5ldyBfaShuKSksXG50fWZ1bmN0aW9uIHpyKG4sdCl7cmV0dXJuIG5ldyBuLmNvbnN0cnVjdG9yKHQ/UnIobi5idWZmZXIpOm4uYnVmZmVyLG4uYnl0ZU9mZnNldCxuLmxlbmd0aCl9ZnVuY3Rpb24gV3Iobix0KXtpZihuIT09dCl7dmFyIHI9biE9PVQsZT1udWxsPT09bix1PW49PT1uLGk9anUobiksbz10IT09VCxmPW51bGw9PT10LGM9dD09PXQsYT1qdSh0KTtpZighZiYmIWEmJiFpJiZuPnR8fGkmJm8mJmMmJiFmJiYhYXx8ZSYmbyYmY3x8IXImJmN8fCF1KXJldHVybiAxO2lmKCFlJiYhaSYmIWEmJm48dHx8YSYmciYmdSYmIWUmJiFpfHxmJiZyJiZ1fHwhbyYmdXx8IWMpcmV0dXJuLTF9cmV0dXJuIDB9ZnVuY3Rpb24gQnIobix0LHIsZSl7dmFyIHU9LTEsaT1uLmxlbmd0aCxvPXIubGVuZ3RoLGY9LTEsYz10Lmxlbmd0aCxhPUxpKGktbywwKSxsPVZ1KGMrYSk7Zm9yKGU9IWU7KytmPGM7KWxbZl09dFtmXTtmb3IoOysrdTxvOykoZXx8dTxpKSYmKGxbclt1XV09blt1XSk7Zm9yKDthLS07KWxbZisrXT1uW3UrK107XG5yZXR1cm4gbH1mdW5jdGlvbiBMcihuLHQscixlKXt2YXIgdT0tMSxpPW4ubGVuZ3RoLG89LTEsZj1yLmxlbmd0aCxjPS0xLGE9dC5sZW5ndGgsbD1MaShpLWYsMCkscz1WdShsK2EpO2ZvcihlPSFlOysrdTxsOylzW3VdPW5bdV07Zm9yKGw9dTsrK2M8YTspc1tsK2NdPXRbY107Zm9yKDsrK288ZjspKGV8fHU8aSkmJihzW2wrcltvXV09blt1KytdKTtyZXR1cm4gc31mdW5jdGlvbiBVcihuLHQpe3ZhciByPS0xLGU9bi5sZW5ndGg7Zm9yKHR8fCh0PVZ1KGUpKTsrK3I8ZTspdFtyXT1uW3JdO3JldHVybiB0fWZ1bmN0aW9uIENyKG4sdCxyLGUpe3ZhciB1PSFyO3J8fChyPXt9KTtmb3IodmFyIGk9LTEsbz10Lmxlbmd0aDsrK2k8bzspe3ZhciBmPXRbaV0sYz1lP2UocltmXSxuW2ZdLGYscixuKTpUO2M9PT1UJiYoYz1uW2ZdKSx1P3N0KHIsZixjKTpvdChyLGYsYyl9cmV0dXJuIHJ9ZnVuY3Rpb24gRHIobix0KXtyZXR1cm4gQ3IobixobyhuKSx0KX1mdW5jdGlvbiBNcihuLHQpe3JldHVybiBDcihuLHBvKG4pLHQpO1xufWZ1bmN0aW9uIFRyKG4scil7cmV0dXJuIGZ1bmN0aW9uKGUsdSl7dmFyIGk9b2YoZSk/dDpjdCxvPXI/cigpOnt9O3JldHVybiBpKGUsbix5ZSh1LDIpLG8pfX1mdW5jdGlvbiAkcihuKXtyZXR1cm4gZnIoZnVuY3Rpb24odCxyKXt2YXIgZT0tMSx1PXIubGVuZ3RoLGk9MTx1P3JbdS0xXTpULG89Mjx1P3JbMl06VCxpPTM8bi5sZW5ndGgmJnR5cGVvZiBpPT1cImZ1bmN0aW9uXCI/KHUtLSxpKTpUO2ZvcihvJiZPZShyWzBdLHJbMV0sbykmJihpPTM+dT9UOmksdT0xKSx0PVl1KHQpOysrZTx1Oykobz1yW2VdKSYmbih0LG8sZSxpKTtyZXR1cm4gdH0pfWZ1bmN0aW9uIEZyKG4sdCl7cmV0dXJuIGZ1bmN0aW9uKHIsZSl7aWYobnVsbD09cilyZXR1cm4gcjtpZighbHUocikpcmV0dXJuIG4ocixlKTtmb3IodmFyIHU9ci5sZW5ndGgsaT10P3U6LTEsbz1ZdShyKTsodD9pLS06KytpPHUpJiZmYWxzZSE9PWUob1tpXSxpLG8pOyk7cmV0dXJuIHJ9fWZ1bmN0aW9uIE5yKG4pe3JldHVybiBmdW5jdGlvbih0LHIsZSl7XG52YXIgdT0tMSxpPVl1KHQpO2U9ZSh0KTtmb3IodmFyIG89ZS5sZW5ndGg7by0tOyl7dmFyIGY9ZVtuP286Kyt1XTtpZihmYWxzZT09PXIoaVtmXSxmLGkpKWJyZWFrfXJldHVybiB0fX1mdW5jdGlvbiBQcihuLHQscil7ZnVuY3Rpb24gZSgpe3JldHVybih0aGlzJiZ0aGlzIT09JG4mJnRoaXMgaW5zdGFuY2VvZiBlP2k6bikuYXBwbHkodT9yOnRoaXMsYXJndW1lbnRzKX12YXIgdT0xJnQsaT1WcihuKTtyZXR1cm4gZX1mdW5jdGlvbiBacihuKXtyZXR1cm4gZnVuY3Rpb24odCl7dD1PdSh0KTt2YXIgcj1Sbi50ZXN0KHQpP00odCk6VCxlPXI/clswXTp0LmNoYXJBdCgwKTtyZXR1cm4gdD1yP09yKHIsMSkuam9pbihcIlwiKTp0LnNsaWNlKDEpLGVbbl0oKSt0fX1mdW5jdGlvbiBxcihuKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGwoRHUoQ3UodCkucmVwbGFjZShrbixcIlwiKSksbixcIlwiKX19ZnVuY3Rpb24gVnIobil7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzO3N3aXRjaCh0Lmxlbmd0aCl7XG5jYXNlIDA6cmV0dXJuIG5ldyBuO2Nhc2UgMTpyZXR1cm4gbmV3IG4odFswXSk7Y2FzZSAyOnJldHVybiBuZXcgbih0WzBdLHRbMV0pO2Nhc2UgMzpyZXR1cm4gbmV3IG4odFswXSx0WzFdLHRbMl0pO2Nhc2UgNDpyZXR1cm4gbmV3IG4odFswXSx0WzFdLHRbMl0sdFszXSk7Y2FzZSA1OnJldHVybiBuZXcgbih0WzBdLHRbMV0sdFsyXSx0WzNdLHRbNF0pO2Nhc2UgNjpyZXR1cm4gbmV3IG4odFswXSx0WzFdLHRbMl0sdFszXSx0WzRdLHRbNV0pO2Nhc2UgNzpyZXR1cm4gbmV3IG4odFswXSx0WzFdLHRbMl0sdFszXSx0WzRdLHRbNV0sdFs2XSl9dmFyIHI9cm8obi5wcm90b3R5cGUpLHQ9bi5hcHBseShyLHQpO3JldHVybiBndSh0KT90OnJ9fWZ1bmN0aW9uIEtyKHQscixlKXtmdW5jdGlvbiB1KCl7Zm9yKHZhciBvPWFyZ3VtZW50cy5sZW5ndGgsZj1WdShvKSxjPW8sYT1kZSh1KTtjLS07KWZbY109YXJndW1lbnRzW2NdO3JldHVybiBjPTM+byYmZlswXSE9PWEmJmZbby0xXSE9PWE/W106TChmLGEpLFxuby09Yy5sZW5ndGgsbzxlP3VlKHQscixKcix1LnBsYWNlaG9sZGVyLFQsZixjLFQsVCxlLW8pOm4odGhpcyYmdGhpcyE9PSRuJiZ0aGlzIGluc3RhbmNlb2YgdT9pOnQsdGhpcyxmKX12YXIgaT1Wcih0KTtyZXR1cm4gdX1mdW5jdGlvbiBHcihuKXtyZXR1cm4gZnVuY3Rpb24odCxyLGUpe3ZhciB1PVl1KHQpO2lmKCFsdSh0KSl7dmFyIGk9eWUociwzKTt0PXp1KHQpLHI9ZnVuY3Rpb24obil7cmV0dXJuIGkodVtuXSxuLHUpfX1yZXR1cm4gcj1uKHQscixlKSwtMTxyP3VbaT90W3JdOnJdOlR9fWZ1bmN0aW9uIEhyKG4pe3JldHVybiBwZShmdW5jdGlvbih0KXt2YXIgcj10Lmxlbmd0aCxlPXIsdT1Pbi5wcm90b3R5cGUudGhydTtmb3IobiYmdC5yZXZlcnNlKCk7ZS0tOyl7dmFyIGk9dFtlXTtpZih0eXBlb2YgaSE9XCJmdW5jdGlvblwiKXRocm93IG5ldyBuaShcIkV4cGVjdGVkIGEgZnVuY3Rpb25cIik7aWYodSYmIW8mJlwid3JhcHBlclwiPT1nZShpKSl2YXIgbz1uZXcgT24oW10sdHJ1ZSl9Zm9yKGU9bz9lOnI7KytlPHI7KXZhciBpPXRbZV0sdT1nZShpKSxmPVwid3JhcHBlclwiPT11P3NvKGkpOlQsbz1mJiZSZShmWzBdKSYmNDI0PT1mWzFdJiYhZls0XS5sZW5ndGgmJjE9PWZbOV0/b1tnZShmWzBdKV0uYXBwbHkobyxmWzNdKToxPT1pLmxlbmd0aCYmUmUoaSk/b1t1XSgpOm8udGhydShpKTtcbnJldHVybiBmdW5jdGlvbigpe3ZhciBuPWFyZ3VtZW50cyxlPW5bMF07aWYobyYmMT09bi5sZW5ndGgmJm9mKGUpKXJldHVybiBvLnBsYW50KGUpLnZhbHVlKCk7Zm9yKHZhciB1PTAsbj1yP3RbdV0uYXBwbHkodGhpcyxuKTplOysrdTxyOyluPXRbdV0uY2FsbCh0aGlzLG4pO3JldHVybiBufX0pfWZ1bmN0aW9uIEpyKG4sdCxyLGUsdSxpLG8sZixjLGEpe2Z1bmN0aW9uIGwoKXtmb3IodmFyIGQ9YXJndW1lbnRzLmxlbmd0aCx5PVZ1KGQpLGI9ZDtiLS07KXlbYl09YXJndW1lbnRzW2JdO2lmKF8pe3ZhciB4LGo9ZGUobCksYj15Lmxlbmd0aDtmb3IoeD0wO2ItLTspeVtiXT09PWomJisreH1pZihlJiYoeT1Ccih5LGUsdSxfKSksaSYmKHk9THIoeSxpLG8sXykpLGQtPXgsXyYmZDxhKXJldHVybiBqPUwoeSxqKSx1ZShuLHQsSnIsbC5wbGFjZWhvbGRlcixyLHksaixmLGMsYS1kKTtpZihqPWg/cjp0aGlzLGI9cD9qW25dOm4sZD15Lmxlbmd0aCxmKXt4PXkubGVuZ3RoO2Zvcih2YXIgdz1VaShmLmxlbmd0aCx4KSxtPVVyKHkpO3ctLTspe1xudmFyIEE9Zlt3XTt5W3ddPVNlKEEseCk/bVtBXTpUfX1lbHNlIHYmJjE8ZCYmeS5yZXZlcnNlKCk7cmV0dXJuIHMmJmM8ZCYmKHkubGVuZ3RoPWMpLHRoaXMmJnRoaXMhPT0kbiYmdGhpcyBpbnN0YW5jZW9mIGwmJihiPWd8fFZyKGIpKSxiLmFwcGx5KGoseSl9dmFyIHM9MTI4JnQsaD0xJnQscD0yJnQsXz0yNCZ0LHY9NTEyJnQsZz1wP1Q6VnIobik7cmV0dXJuIGx9ZnVuY3Rpb24gWXIobix0KXtyZXR1cm4gZnVuY3Rpb24ocixlKXtyZXR1cm4gQnQocixuLHQoZSkpfX1mdW5jdGlvbiBRcihuLHQpe3JldHVybiBmdW5jdGlvbihyLGUpe3ZhciB1O2lmKHI9PT1UJiZlPT09VClyZXR1cm4gdDtpZihyIT09VCYmKHU9ciksZSE9PVQpe2lmKHU9PT1UKXJldHVybiBlO3R5cGVvZiByPT1cInN0cmluZ1wifHx0eXBlb2YgZT09XCJzdHJpbmdcIj8ocj15cihyKSxlPXlyKGUpKToocj1kcihyKSxlPWRyKGUpKSx1PW4ocixlKX1yZXR1cm4gdX19ZnVuY3Rpb24gWHIodCl7cmV0dXJuIHBlKGZ1bmN0aW9uKHIpe1xucmV0dXJuIHI9YyhyLGsoeWUoKSkpLGZyKGZ1bmN0aW9uKGUpe3ZhciB1PXRoaXM7cmV0dXJuIHQocixmdW5jdGlvbih0KXtyZXR1cm4gbih0LHUsZSl9KX0pfSl9ZnVuY3Rpb24gbmUobix0KXt0PXQ9PT1UP1wiIFwiOnlyKHQpO3ZhciByPXQubGVuZ3RoO3JldHVybiAyPnI/cj9vcih0LG4pOnQ6KHI9b3IodCxTaShuL0QodCkpKSxSbi50ZXN0KHQpP09yKE0ociksMCxuKS5qb2luKFwiXCIpOnIuc2xpY2UoMCxuKSl9ZnVuY3Rpb24gdGUodCxyLGUsdSl7ZnVuY3Rpb24gaSgpe2Zvcih2YXIgcj0tMSxjPWFyZ3VtZW50cy5sZW5ndGgsYT0tMSxsPXUubGVuZ3RoLHM9VnUobCtjKSxoPXRoaXMmJnRoaXMhPT0kbiYmdGhpcyBpbnN0YW5jZW9mIGk/Zjp0OysrYTxsOylzW2FdPXVbYV07Zm9yKDtjLS07KXNbYSsrXT1hcmd1bWVudHNbKytyXTtyZXR1cm4gbihoLG8/ZTp0aGlzLHMpfXZhciBvPTEmcixmPVZyKHQpO3JldHVybiBpfWZ1bmN0aW9uIHJlKG4pe3JldHVybiBmdW5jdGlvbih0LHIsZSl7XG5lJiZ0eXBlb2YgZSE9XCJudW1iZXJcIiYmT2UodCxyLGUpJiYocj1lPVQpLHQ9bXUodCkscj09PVQ/KHI9dCx0PTApOnI9bXUociksZT1lPT09VD90PHI/MTotMTptdShlKTt2YXIgdT0tMTtyPUxpKFNpKChyLXQpLyhlfHwxKSksMCk7Zm9yKHZhciBpPVZ1KHIpO3ItLTspaVtuP3I6Kyt1XT10LHQrPWU7cmV0dXJuIGl9fWZ1bmN0aW9uIGVlKG4pe3JldHVybiBmdW5jdGlvbih0LHIpe3JldHVybiB0eXBlb2YgdD09XCJzdHJpbmdcIiYmdHlwZW9mIHI9PVwic3RyaW5nXCJ8fCh0PWt1KHQpLHI9a3UocikpLG4odCxyKX19ZnVuY3Rpb24gdWUobix0LHIsZSx1LGksbyxmLGMsYSl7dmFyIGw9OCZ0LHM9bD9vOlQ7bz1sP1Q6bzt2YXIgaD1sP2k6VDtyZXR1cm4gaT1sP1Q6aSx0PSh0fChsPzMyOjY0KSkmfihsPzY0OjMyKSw0JnR8fCh0Jj0tNCksdT1bbix0LHUsaCxzLGksbyxmLGMsYV0scj1yLmFwcGx5KFQsdSksUmUobikmJmdvKHIsdSksci5wbGFjZWhvbGRlcj1lLExlKHIsbix0KX1mdW5jdGlvbiBpZShuKXtcbnZhciB0PUp1W25dO3JldHVybiBmdW5jdGlvbihuLHIpe2lmKG49a3Uobikscj1udWxsPT1yPzA6VWkoQXUociksMjkyKSl7dmFyIGU9KE91KG4pK1wiZVwiKS5zcGxpdChcImVcIiksZT10KGVbMF0rXCJlXCIrKCtlWzFdK3IpKSxlPShPdShlKStcImVcIikuc3BsaXQoXCJlXCIpO3JldHVybisoZVswXStcImVcIisoK2VbMV0tcikpfXJldHVybiB0KG4pfX1mdW5jdGlvbiBvZShuKXtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIHI9X28odCk7cmV0dXJuXCJbb2JqZWN0IE1hcF1cIj09cj9XKHQpOlwiW29iamVjdCBTZXRdXCI9PXI/Qyh0KTpFKHQsbih0KSl9fWZ1bmN0aW9uIGZlKG4sdCxyLGUsdSxpLG8sZil7dmFyIGM9MiZ0O2lmKCFjJiZ0eXBlb2YgbiE9XCJmdW5jdGlvblwiKXRocm93IG5ldyBuaShcIkV4cGVjdGVkIGEgZnVuY3Rpb25cIik7dmFyIGE9ZT9lLmxlbmd0aDowO2lmKGF8fCh0Jj0tOTcsZT11PVQpLG89bz09PVQ/bzpMaShBdShvKSwwKSxmPWY9PT1UP2Y6QXUoZiksYS09dT91Lmxlbmd0aDowLDY0JnQpe1xudmFyIGw9ZSxzPXU7ZT11PVR9dmFyIGg9Yz9UOnNvKG4pO3JldHVybiBpPVtuLHQscixlLHUsbCxzLGksbyxmXSxoJiYocj1pWzFdLG49aFsxXSx0PXJ8bixlPTEyOD09biYmOD09cnx8MTI4PT1uJiYyNTY9PXImJmlbN10ubGVuZ3RoPD1oWzhdfHwzODQ9PW4mJmhbN10ubGVuZ3RoPD1oWzhdJiY4PT1yLDEzMT50fHxlKSYmKDEmbiYmKGlbMl09aFsyXSx0fD0xJnI/MDo0KSwocj1oWzNdKSYmKGU9aVszXSxpWzNdPWU/QnIoZSxyLGhbNF0pOnIsaVs0XT1lP0woaVszXSxcIl9fbG9kYXNoX3BsYWNlaG9sZGVyX19cIik6aFs0XSksKHI9aFs1XSkmJihlPWlbNV0saVs1XT1lP0xyKGUscixoWzZdKTpyLGlbNl09ZT9MKGlbNV0sXCJfX2xvZGFzaF9wbGFjZWhvbGRlcl9fXCIpOmhbNl0pLChyPWhbN10pJiYoaVs3XT1yKSwxMjgmbiYmKGlbOF09bnVsbD09aVs4XT9oWzhdOlVpKGlbOF0saFs4XSkpLG51bGw9PWlbOV0mJihpWzldPWhbOV0pLGlbMF09aFswXSxpWzFdPXQpLG49aVswXSx0PWlbMV0sXG5yPWlbMl0sZT1pWzNdLHU9aVs0XSxmPWlbOV09aVs5XT09PVQ/Yz8wOm4ubGVuZ3RoOkxpKGlbOV0tYSwwKSwhZiYmMjQmdCYmKHQmPS0yNSksTGUoKGg/Zm86Z28pKHQmJjEhPXQ/OD09dHx8MTY9PXQ/S3Iobix0LGYpOjMyIT10JiYzMyE9dHx8dS5sZW5ndGg/SnIuYXBwbHkoVCxpKTp0ZShuLHQscixlKTpQcihuLHQsciksaSksbix0KX1mdW5jdGlvbiBjZShuLHQscixlKXtyZXR1cm4gbj09PVR8fGF1KG4scmlbcl0pJiYhaWkuY2FsbChlLHIpP3Q6bn1mdW5jdGlvbiBhZShuLHQscixlLHUsaSl7cmV0dXJuIGd1KG4pJiZndSh0KSYmKGkuc2V0KHQsbiksWXQobix0LFQsYWUsaSksaS5kZWxldGUodCkpLG59ZnVuY3Rpb24gbGUobil7cmV0dXJuIGJ1KG4pP1Q6bn1mdW5jdGlvbiBzZShuLHQscixlLHUsaSl7dmFyIG89MSZyLGY9bi5sZW5ndGgsYz10Lmxlbmd0aDtpZihmIT1jJiYhKG8mJmM+ZikpcmV0dXJuIGZhbHNlO2lmKChjPWkuZ2V0KG4pKSYmaS5nZXQodCkpcmV0dXJuIGM9PXQ7dmFyIGM9LTEsYT10cnVlLGw9MiZyP25ldyBObjpUO1xuZm9yKGkuc2V0KG4sdCksaS5zZXQodCxuKTsrK2M8Zjspe3ZhciBzPW5bY10scD10W2NdO2lmKGUpdmFyIF89bz9lKHAscyxjLHQsbixpKTplKHMscCxjLG4sdCxpKTtpZihfIT09VCl7aWYoXyljb250aW51ZTthPWZhbHNlO2JyZWFrfWlmKGwpe2lmKCFoKHQsZnVuY3Rpb24obix0KXtpZighTyhsLHQpJiYocz09PW58fHUocyxuLHIsZSxpKSkpcmV0dXJuIGwucHVzaCh0KX0pKXthPWZhbHNlO2JyZWFrfX1lbHNlIGlmKHMhPT1wJiYhdShzLHAscixlLGkpKXthPWZhbHNlO2JyZWFrfX1yZXR1cm4gaS5kZWxldGUobiksaS5kZWxldGUodCksYX1mdW5jdGlvbiBoZShuLHQscixlLHUsaSxvKXtzd2l0Y2gocil7Y2FzZVwiW29iamVjdCBEYXRhVmlld11cIjppZihuLmJ5dGVMZW5ndGghPXQuYnl0ZUxlbmd0aHx8bi5ieXRlT2Zmc2V0IT10LmJ5dGVPZmZzZXQpYnJlYWs7bj1uLmJ1ZmZlcix0PXQuYnVmZmVyO2Nhc2VcIltvYmplY3QgQXJyYXlCdWZmZXJdXCI6aWYobi5ieXRlTGVuZ3RoIT10LmJ5dGVMZW5ndGh8fCFpKG5ldyBfaShuKSxuZXcgX2kodCkpKWJyZWFrO1xucmV0dXJuIHRydWU7Y2FzZVwiW29iamVjdCBCb29sZWFuXVwiOmNhc2VcIltvYmplY3QgRGF0ZV1cIjpjYXNlXCJbb2JqZWN0IE51bWJlcl1cIjpyZXR1cm4gYXUoK24sK3QpO2Nhc2VcIltvYmplY3QgRXJyb3JdXCI6cmV0dXJuIG4ubmFtZT09dC5uYW1lJiZuLm1lc3NhZ2U9PXQubWVzc2FnZTtjYXNlXCJbb2JqZWN0IFJlZ0V4cF1cIjpjYXNlXCJbb2JqZWN0IFN0cmluZ11cIjpyZXR1cm4gbj09dCtcIlwiO2Nhc2VcIltvYmplY3QgTWFwXVwiOnZhciBmPVc7Y2FzZVwiW29iamVjdCBTZXRdXCI6aWYoZnx8KGY9VSksbi5zaXplIT10LnNpemUmJiEoMSZlKSlicmVhaztyZXR1cm4ocj1vLmdldChuKSk/cj09dDooZXw9MixvLnNldChuLHQpLHQ9c2UoZihuKSxmKHQpLGUsdSxpLG8pLG8uZGVsZXRlKG4pLHQpO2Nhc2VcIltvYmplY3QgU3ltYm9sXVwiOmlmKG5vKXJldHVybiBuby5jYWxsKG4pPT1uby5jYWxsKHQpfXJldHVybiBmYWxzZX1mdW5jdGlvbiBwZShuKXtyZXR1cm4gYm8oQmUobixULFBlKSxuK1wiXCIpfWZ1bmN0aW9uIF9lKG4pe1xucmV0dXJuIFN0KG4senUsaG8pfWZ1bmN0aW9uIHZlKG4pe3JldHVybiBTdChuLFd1LHBvKX1mdW5jdGlvbiBnZShuKXtmb3IodmFyIHQ9bi5uYW1lK1wiXCIscj1LaVt0XSxlPWlpLmNhbGwoS2ksdCk/ci5sZW5ndGg6MDtlLS07KXt2YXIgdT1yW2VdLGk9dS5mdW5jO2lmKG51bGw9PWl8fGk9PW4pcmV0dXJuIHUubmFtZX1yZXR1cm4gdH1mdW5jdGlvbiBkZShuKXtyZXR1cm4oaWkuY2FsbChBbixcInBsYWNlaG9sZGVyXCIpP0FuOm4pLnBsYWNlaG9sZGVyfWZ1bmN0aW9uIHllKCl7dmFyIG49QW4uaXRlcmF0ZWV8fCR1LG49bj09PSR1P3F0Om47cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/bihhcmd1bWVudHNbMF0sYXJndW1lbnRzWzFdKTpufWZ1bmN0aW9uIGJlKG4sdCl7dmFyIHI9bi5fX2RhdGFfXyxlPXR5cGVvZiB0O3JldHVybihcInN0cmluZ1wiPT1lfHxcIm51bWJlclwiPT1lfHxcInN5bWJvbFwiPT1lfHxcImJvb2xlYW5cIj09ZT9cIl9fcHJvdG9fX1wiIT09dDpudWxsPT09dCk/clt0eXBlb2YgdD09XCJzdHJpbmdcIj9cInN0cmluZ1wiOlwiaGFzaFwiXTpyLm1hcDtcbn1mdW5jdGlvbiB4ZShuKXtmb3IodmFyIHQ9enUobikscj10Lmxlbmd0aDtyLS07KXt2YXIgZT10W3JdLHU9bltlXTt0W3JdPVtlLHUsdT09PXUmJiFndSh1KV19cmV0dXJuIHR9ZnVuY3Rpb24gamUobix0KXt2YXIgcj1udWxsPT1uP1Q6blt0XTtyZXR1cm4gRnQocik/cjpUfWZ1bmN0aW9uIHdlKG4sdCxyKXt0PVNyKHQsbik7Zm9yKHZhciBlPS0xLHU9dC5sZW5ndGgsaT1mYWxzZTsrK2U8dTspe3ZhciBvPURlKHRbZV0pO2lmKCEoaT1udWxsIT1uJiZyKG4sbykpKWJyZWFrO249bltvXX1yZXR1cm4gaXx8KytlIT11P2k6KHU9bnVsbD09bj8wOm4ubGVuZ3RoLCEhdSYmdnUodSkmJlNlKG8sdSkmJihvZihuKXx8dWYobikpKX1mdW5jdGlvbiBtZShuKXt2YXIgdD1uLmxlbmd0aCxyPW5ldyBuLmNvbnN0cnVjdG9yKHQpO3JldHVybiB0JiZcInN0cmluZ1wiPT10eXBlb2YgblswXSYmaWkuY2FsbChuLFwiaW5kZXhcIikmJihyLmluZGV4PW4uaW5kZXgsci5pbnB1dD1uLmlucHV0KSxyfWZ1bmN0aW9uIEFlKG4pe1xucmV0dXJuIHR5cGVvZiBuLmNvbnN0cnVjdG9yIT1cImZ1bmN0aW9uXCJ8fHplKG4pP3t9OnJvKGdpKG4pKX1mdW5jdGlvbiBFZShuLHQscil7dmFyIGU9bi5jb25zdHJ1Y3Rvcjtzd2l0Y2godCl7Y2FzZVwiW29iamVjdCBBcnJheUJ1ZmZlcl1cIjpyZXR1cm4gUnIobik7Y2FzZVwiW29iamVjdCBCb29sZWFuXVwiOmNhc2VcIltvYmplY3QgRGF0ZV1cIjpyZXR1cm4gbmV3IGUoK24pO2Nhc2VcIltvYmplY3QgRGF0YVZpZXddXCI6cmV0dXJuIHQ9cj9ScihuLmJ1ZmZlcik6bi5idWZmZXIsbmV3IG4uY29uc3RydWN0b3IodCxuLmJ5dGVPZmZzZXQsbi5ieXRlTGVuZ3RoKTtjYXNlXCJbb2JqZWN0IEZsb2F0MzJBcnJheV1cIjpjYXNlXCJbb2JqZWN0IEZsb2F0NjRBcnJheV1cIjpjYXNlXCJbb2JqZWN0IEludDhBcnJheV1cIjpjYXNlXCJbb2JqZWN0IEludDE2QXJyYXldXCI6Y2FzZVwiW29iamVjdCBJbnQzMkFycmF5XVwiOmNhc2VcIltvYmplY3QgVWludDhBcnJheV1cIjpjYXNlXCJbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XVwiOlxuY2FzZVwiW29iamVjdCBVaW50MTZBcnJheV1cIjpjYXNlXCJbb2JqZWN0IFVpbnQzMkFycmF5XVwiOnJldHVybiB6cihuLHIpO2Nhc2VcIltvYmplY3QgTWFwXVwiOnJldHVybiBuZXcgZTtjYXNlXCJbb2JqZWN0IE51bWJlcl1cIjpjYXNlXCJbb2JqZWN0IFN0cmluZ11cIjpyZXR1cm4gbmV3IGUobik7Y2FzZVwiW29iamVjdCBSZWdFeHBdXCI6cmV0dXJuIHQ9bmV3IG4uY29uc3RydWN0b3Iobi5zb3VyY2UsX24uZXhlYyhuKSksdC5sYXN0SW5kZXg9bi5sYXN0SW5kZXgsdDtjYXNlXCJbb2JqZWN0IFNldF1cIjpyZXR1cm4gbmV3IGU7Y2FzZVwiW29iamVjdCBTeW1ib2xdXCI6cmV0dXJuIG5vP1l1KG5vLmNhbGwobikpOnt9fX1mdW5jdGlvbiBrZShuKXtyZXR1cm4gb2Yobil8fHVmKG4pfHwhISh4aSYmbiYmblt4aV0pfWZ1bmN0aW9uIFNlKG4sdCl7dmFyIHI9dHlwZW9mIG47cmV0dXJuIHQ9bnVsbD09dD85MDA3MTk5MjU0NzQwOTkxOnQsISF0JiYoXCJudW1iZXJcIj09cnx8XCJzeW1ib2xcIiE9ciYmYm4udGVzdChuKSkmJi0xPG4mJjA9PW4lMSYmbjx0O1xufWZ1bmN0aW9uIE9lKG4sdCxyKXtpZighZ3UocikpcmV0dXJuIGZhbHNlO3ZhciBlPXR5cGVvZiB0O3JldHVybiEhKFwibnVtYmVyXCI9PWU/bHUocikmJlNlKHQsci5sZW5ndGgpOlwic3RyaW5nXCI9PWUmJnQgaW4gcikmJmF1KHJbdF0sbil9ZnVuY3Rpb24gSWUobix0KXtpZihvZihuKSlyZXR1cm4gZmFsc2U7dmFyIHI9dHlwZW9mIG47cmV0dXJuIShcIm51bWJlclwiIT1yJiZcInN5bWJvbFwiIT1yJiZcImJvb2xlYW5cIiE9ciYmbnVsbCE9biYmIWp1KG4pKXx8KG5uLnRlc3Qobil8fCFYLnRlc3Qobil8fG51bGwhPXQmJm4gaW4gWXUodCkpfWZ1bmN0aW9uIFJlKG4pe3ZhciB0PWdlKG4pLHI9QW5bdF07cmV0dXJuIHR5cGVvZiByPT1cImZ1bmN0aW9uXCImJnQgaW4gVW4ucHJvdG90eXBlJiYobj09PXJ8fCh0PXNvKHIpLCEhdCYmbj09PXRbMF0pKX1mdW5jdGlvbiB6ZShuKXt2YXIgdD1uJiZuLmNvbnN0cnVjdG9yO3JldHVybiBuPT09KHR5cGVvZiB0PT1cImZ1bmN0aW9uXCImJnQucHJvdG90eXBlfHxyaSl9ZnVuY3Rpb24gV2Uobix0KXtcbnJldHVybiBmdW5jdGlvbihyKXtyZXR1cm4gbnVsbCE9ciYmKHJbbl09PT10JiYodCE9PVR8fG4gaW4gWXUocikpKX19ZnVuY3Rpb24gQmUodCxyLGUpe3JldHVybiByPUxpKHI9PT1UP3QubGVuZ3RoLTE6ciwwKSxmdW5jdGlvbigpe2Zvcih2YXIgdT1hcmd1bWVudHMsaT0tMSxvPUxpKHUubGVuZ3RoLXIsMCksZj1WdShvKTsrK2k8bzspZltpXT11W3IraV07Zm9yKGk9LTEsbz1WdShyKzEpOysraTxyOylvW2ldPXVbaV07cmV0dXJuIG9bcl09ZShmKSxuKHQsdGhpcyxvKX19ZnVuY3Rpb24gTGUobix0LHIpe3ZhciBlPXQrXCJcIjt0PWJvO3ZhciB1LGk9VGU7cmV0dXJuIHU9KHU9ZS5tYXRjaChhbikpP3VbMV0uc3BsaXQobG4pOltdLHI9aSh1LHIpLChpPXIubGVuZ3RoKSYmKHU9aS0xLHJbdV09KDE8aT9cIiYgXCI6XCJcIikrclt1XSxyPXIuam9pbigyPGk/XCIsIFwiOlwiIFwiKSxlPWUucmVwbGFjZShjbixcIntcXG4vKiBbd3JhcHBlZCB3aXRoIFwiK3IrXCJdICovXFxuXCIpKSx0KG4sZSl9ZnVuY3Rpb24gVWUobil7XG52YXIgdD0wLHI9MDtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT1DaSgpLHU9MTYtKGUtcik7aWYocj1lLDA8dSl7aWYoODAwPD0rK3QpcmV0dXJuIGFyZ3VtZW50c1swXX1lbHNlIHQ9MDtyZXR1cm4gbi5hcHBseShULGFyZ3VtZW50cyl9fWZ1bmN0aW9uIENlKG4sdCl7dmFyIHI9LTEsZT1uLmxlbmd0aCx1PWUtMTtmb3IodD10PT09VD9lOnQ7KytyPHQ7KXt2YXIgZT1pcihyLHUpLGk9bltlXTtuW2VdPW5bcl0sbltyXT1pfXJldHVybiBuLmxlbmd0aD10LG59ZnVuY3Rpb24gRGUobil7aWYodHlwZW9mIG49PVwic3RyaW5nXCJ8fGp1KG4pKXJldHVybiBuO3ZhciB0PW4rXCJcIjtyZXR1cm5cIjBcIj09dCYmMS9uPT0tJD9cIi0wXCI6dH1mdW5jdGlvbiBNZShuKXtpZihudWxsIT1uKXt0cnl7cmV0dXJuIHVpLmNhbGwobil9Y2F0Y2gobil7fXJldHVybiBuK1wiXCJ9cmV0dXJuXCJcIn1mdW5jdGlvbiBUZShuLHQpe3JldHVybiByKE4sZnVuY3Rpb24ocil7dmFyIGU9XCJfLlwiK3JbMF07dCZyWzFdJiYhbyhuLGUpJiZuLnB1c2goZSk7XG59KSxuLnNvcnQoKX1mdW5jdGlvbiAkZShuKXtpZihuIGluc3RhbmNlb2YgVW4pcmV0dXJuIG4uY2xvbmUoKTt2YXIgdD1uZXcgT24obi5fX3dyYXBwZWRfXyxuLl9fY2hhaW5fXyk7cmV0dXJuIHQuX19hY3Rpb25zX189VXIobi5fX2FjdGlvbnNfXyksdC5fX2luZGV4X189bi5fX2luZGV4X18sdC5fX3ZhbHVlc19fPW4uX192YWx1ZXNfXyx0fWZ1bmN0aW9uIEZlKG4sdCxyKXt2YXIgZT1udWxsPT1uPzA6bi5sZW5ndGg7cmV0dXJuIGU/KHI9bnVsbD09cj8wOkF1KHIpLDA+ciYmKHI9TGkoZStyLDApKSxfKG4seWUodCwzKSxyKSk6LTF9ZnVuY3Rpb24gTmUobix0LHIpe3ZhciBlPW51bGw9PW4/MDpuLmxlbmd0aDtpZighZSlyZXR1cm4tMTt2YXIgdT1lLTE7cmV0dXJuIHIhPT1UJiYodT1BdShyKSx1PTA+cj9MaShlK3UsMCk6VWkodSxlLTEpKSxfKG4seWUodCwzKSx1LHRydWUpfWZ1bmN0aW9uIFBlKG4pe3JldHVybihudWxsPT1uPzA6bi5sZW5ndGgpP3d0KG4sMSk6W119ZnVuY3Rpb24gWmUobil7XG5yZXR1cm4gbiYmbi5sZW5ndGg/blswXTpUfWZ1bmN0aW9uIHFlKG4pe3ZhciB0PW51bGw9PW4/MDpuLmxlbmd0aDtyZXR1cm4gdD9uW3QtMV06VH1mdW5jdGlvbiBWZShuLHQpe3JldHVybiBuJiZuLmxlbmd0aCYmdCYmdC5sZW5ndGg/ZXIobix0KTpufWZ1bmN0aW9uIEtlKG4pe3JldHVybiBudWxsPT1uP246VGkuY2FsbChuKX1mdW5jdGlvbiBHZShuKXtpZighbnx8IW4ubGVuZ3RoKXJldHVybltdO3ZhciB0PTA7cmV0dXJuIG49aShuLGZ1bmN0aW9uKG4pe2lmKHN1KG4pKXJldHVybiB0PUxpKG4ubGVuZ3RoLHQpLHRydWV9KSxBKHQsZnVuY3Rpb24odCl7cmV0dXJuIGMobixiKHQpKX0pfWZ1bmN0aW9uIEhlKHQscil7aWYoIXR8fCF0Lmxlbmd0aClyZXR1cm5bXTt2YXIgZT1HZSh0KTtyZXR1cm4gbnVsbD09cj9lOmMoZSxmdW5jdGlvbih0KXtyZXR1cm4gbihyLFQsdCl9KX1mdW5jdGlvbiBKZShuKXtyZXR1cm4gbj1BbihuKSxuLl9fY2hhaW5fXz10cnVlLG59ZnVuY3Rpb24gWWUobix0KXtcbnJldHVybiB0KG4pfWZ1bmN0aW9uIFFlKCl7cmV0dXJuIHRoaXN9ZnVuY3Rpb24gWGUobix0KXtyZXR1cm4ob2Yobik/cjplbykobix5ZSh0LDMpKX1mdW5jdGlvbiBudShuLHQpe3JldHVybihvZihuKT9lOnVvKShuLHllKHQsMykpfWZ1bmN0aW9uIHR1KG4sdCl7cmV0dXJuKG9mKG4pP2M6R3QpKG4seWUodCwzKSl9ZnVuY3Rpb24gcnUobix0LHIpe3JldHVybiB0PXI/VDp0LHQ9biYmbnVsbD09dD9uLmxlbmd0aDp0LGZlKG4sMTI4LFQsVCxULFQsdCl9ZnVuY3Rpb24gZXUobix0KXt2YXIgcjtpZih0eXBlb2YgdCE9XCJmdW5jdGlvblwiKXRocm93IG5ldyBuaShcIkV4cGVjdGVkIGEgZnVuY3Rpb25cIik7cmV0dXJuIG49QXUobiksZnVuY3Rpb24oKXtyZXR1cm4gMDwtLW4mJihyPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpKSwxPj1uJiYodD1UKSxyfX1mdW5jdGlvbiB1dShuLHQscil7cmV0dXJuIHQ9cj9UOnQsbj1mZShuLDgsVCxULFQsVCxULHQpLG4ucGxhY2Vob2xkZXI9dXUucGxhY2Vob2xkZXIsXG5ufWZ1bmN0aW9uIGl1KG4sdCxyKXtyZXR1cm4gdD1yP1Q6dCxuPWZlKG4sMTYsVCxULFQsVCxULHQpLG4ucGxhY2Vob2xkZXI9aXUucGxhY2Vob2xkZXIsbn1mdW5jdGlvbiBvdShuLHQscil7ZnVuY3Rpb24gZSh0KXt2YXIgcj1jLGU9YTtyZXR1cm4gYz1hPVQsXz10LHM9bi5hcHBseShlLHIpfWZ1bmN0aW9uIHUobil7dmFyIHI9bi1wO3JldHVybiBuLT1fLHA9PT1UfHxyPj10fHwwPnJ8fGcmJm4+PWx9ZnVuY3Rpb24gaSgpe3ZhciBuPUtvKCk7aWYodShuKSlyZXR1cm4gbyhuKTt2YXIgcixlPXlvO3I9bi1fLG49dC0obi1wKSxyPWc/VWkobixsLXIpOm4saD1lKGkscil9ZnVuY3Rpb24gbyhuKXtyZXR1cm4gaD1ULGQmJmM/ZShuKTooYz1hPVQscyl9ZnVuY3Rpb24gZigpe3ZhciBuPUtvKCkscj11KG4pO2lmKGM9YXJndW1lbnRzLGE9dGhpcyxwPW4scil7aWYoaD09PVQpcmV0dXJuIF89bj1wLGg9eW8oaSx0KSx2P2Uobik6cztpZihnKXJldHVybiBoPXlvKGksdCksZShwKX1yZXR1cm4gaD09PVQmJihoPXlvKGksdCkpLFxuc312YXIgYyxhLGwscyxoLHAsXz0wLHY9ZmFsc2UsZz1mYWxzZSxkPXRydWU7aWYodHlwZW9mIG4hPVwiZnVuY3Rpb25cIil0aHJvdyBuZXcgbmkoXCJFeHBlY3RlZCBhIGZ1bmN0aW9uXCIpO3JldHVybiB0PWt1KHQpfHwwLGd1KHIpJiYodj0hIXIubGVhZGluZyxsPShnPVwibWF4V2FpdFwiaW4gcik/TGkoa3Uoci5tYXhXYWl0KXx8MCx0KTpsLGQ9XCJ0cmFpbGluZ1wiaW4gcj8hIXIudHJhaWxpbmc6ZCksZi5jYW5jZWw9ZnVuY3Rpb24oKXtoIT09VCYmYW8oaCksXz0wLGM9cD1hPWg9VH0sZi5mbHVzaD1mdW5jdGlvbigpe3JldHVybiBoPT09VD9zOm8oS28oKSl9LGZ9ZnVuY3Rpb24gZnUobix0KXtmdW5jdGlvbiByKCl7dmFyIGU9YXJndW1lbnRzLHU9dD90LmFwcGx5KHRoaXMsZSk6ZVswXSxpPXIuY2FjaGU7cmV0dXJuIGkuaGFzKHUpP2kuZ2V0KHUpOihlPW4uYXBwbHkodGhpcyxlKSxyLmNhY2hlPWkuc2V0KHUsZSl8fGksZSl9aWYodHlwZW9mIG4hPVwiZnVuY3Rpb25cInx8bnVsbCE9dCYmdHlwZW9mIHQhPVwiZnVuY3Rpb25cIil0aHJvdyBuZXcgbmkoXCJFeHBlY3RlZCBhIGZ1bmN0aW9uXCIpO1xucmV0dXJuIHIuY2FjaGU9bmV3KGZ1LkNhY2hlfHxGbikscn1mdW5jdGlvbiBjdShuKXtpZih0eXBlb2YgbiE9XCJmdW5jdGlvblwiKXRocm93IG5ldyBuaShcIkV4cGVjdGVkIGEgZnVuY3Rpb25cIik7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzO3N3aXRjaCh0Lmxlbmd0aCl7Y2FzZSAwOnJldHVybiFuLmNhbGwodGhpcyk7Y2FzZSAxOnJldHVybiFuLmNhbGwodGhpcyx0WzBdKTtjYXNlIDI6cmV0dXJuIW4uY2FsbCh0aGlzLHRbMF0sdFsxXSk7Y2FzZSAzOnJldHVybiFuLmNhbGwodGhpcyx0WzBdLHRbMV0sdFsyXSl9cmV0dXJuIW4uYXBwbHkodGhpcyx0KX19ZnVuY3Rpb24gYXUobix0KXtyZXR1cm4gbj09PXR8fG4hPT1uJiZ0IT09dH1mdW5jdGlvbiBsdShuKXtyZXR1cm4gbnVsbCE9biYmdnUobi5sZW5ndGgpJiYhcHUobil9ZnVuY3Rpb24gc3Uobil7cmV0dXJuIGR1KG4pJiZsdShuKX1mdW5jdGlvbiBodShuKXtpZighZHUobikpcmV0dXJuIGZhbHNlO3ZhciB0PU90KG4pO3JldHVyblwiW29iamVjdCBFcnJvcl1cIj09dHx8XCJbb2JqZWN0IERPTUV4Y2VwdGlvbl1cIj09dHx8dHlwZW9mIG4ubWVzc2FnZT09XCJzdHJpbmdcIiYmdHlwZW9mIG4ubmFtZT09XCJzdHJpbmdcIiYmIWJ1KG4pO1xufWZ1bmN0aW9uIHB1KG4pe3JldHVybiEhZ3UobikmJihuPU90KG4pLFwiW29iamVjdCBGdW5jdGlvbl1cIj09bnx8XCJbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXVwiPT1ufHxcIltvYmplY3QgQXN5bmNGdW5jdGlvbl1cIj09bnx8XCJbb2JqZWN0IFByb3h5XVwiPT1uKX1mdW5jdGlvbiBfdShuKXtyZXR1cm4gdHlwZW9mIG49PVwibnVtYmVyXCImJm49PUF1KG4pfWZ1bmN0aW9uIHZ1KG4pe3JldHVybiB0eXBlb2Ygbj09XCJudW1iZXJcIiYmLTE8biYmMD09biUxJiY5MDA3MTk5MjU0NzQwOTkxPj1ufWZ1bmN0aW9uIGd1KG4pe3ZhciB0PXR5cGVvZiBuO3JldHVybiBudWxsIT1uJiYoXCJvYmplY3RcIj09dHx8XCJmdW5jdGlvblwiPT10KX1mdW5jdGlvbiBkdShuKXtyZXR1cm4gbnVsbCE9biYmdHlwZW9mIG49PVwib2JqZWN0XCJ9ZnVuY3Rpb24geXUobil7cmV0dXJuIHR5cGVvZiBuPT1cIm51bWJlclwifHxkdShuKSYmXCJbb2JqZWN0IE51bWJlcl1cIj09T3Qobil9ZnVuY3Rpb24gYnUobil7cmV0dXJuISghZHUobil8fFwiW29iamVjdCBPYmplY3RdXCIhPU90KG4pKSYmKG49Z2kobiksXG5udWxsPT09bnx8KG49aWkuY2FsbChuLFwiY29uc3RydWN0b3JcIikmJm4uY29uc3RydWN0b3IsdHlwZW9mIG49PVwiZnVuY3Rpb25cIiYmbiBpbnN0YW5jZW9mIG4mJnVpLmNhbGwobik9PWFpKSl9ZnVuY3Rpb24geHUobil7cmV0dXJuIHR5cGVvZiBuPT1cInN0cmluZ1wifHwhb2YobikmJmR1KG4pJiZcIltvYmplY3QgU3RyaW5nXVwiPT1PdChuKX1mdW5jdGlvbiBqdShuKXtyZXR1cm4gdHlwZW9mIG49PVwic3ltYm9sXCJ8fGR1KG4pJiZcIltvYmplY3QgU3ltYm9sXVwiPT1PdChuKX1mdW5jdGlvbiB3dShuKXtpZighbilyZXR1cm5bXTtpZihsdShuKSlyZXR1cm4geHUobik/TShuKTpVcihuKTtpZihqaSYmbltqaV0pe249bltqaV0oKTtmb3IodmFyIHQscj1bXTshKHQ9bi5uZXh0KCkpLmRvbmU7KXIucHVzaCh0LnZhbHVlKTtyZXR1cm4gcn1yZXR1cm4gdD1fbyhuKSwoXCJbb2JqZWN0IE1hcF1cIj09dD9XOlwiW29iamVjdCBTZXRdXCI9PXQ/VTpMdSkobil9ZnVuY3Rpb24gbXUobil7cmV0dXJuIG4/KG49a3UobiksXG5uPT09JHx8bj09PS0kPzEuNzk3NjkzMTM0ODYyMzE1N2UzMDgqKDA+bj8tMToxKTpuPT09bj9uOjApOjA9PT1uP246MH1mdW5jdGlvbiBBdShuKXtuPW11KG4pO3ZhciB0PW4lMTtyZXR1cm4gbj09PW4/dD9uLXQ6bjowfWZ1bmN0aW9uIEV1KG4pe3JldHVybiBuP3B0KEF1KG4pLDAsNDI5NDk2NzI5NSk6MH1mdW5jdGlvbiBrdShuKXtpZih0eXBlb2Ygbj09XCJudW1iZXJcIilyZXR1cm4gbjtpZihqdShuKSlyZXR1cm4gRjtpZihndShuKSYmKG49dHlwZW9mIG4udmFsdWVPZj09XCJmdW5jdGlvblwiP24udmFsdWVPZigpOm4sbj1ndShuKT9uK1wiXCI6biksdHlwZW9mIG4hPVwic3RyaW5nXCIpcmV0dXJuIDA9PT1uP246K247bj1uLnJlcGxhY2UodW4sXCJcIik7dmFyIHQ9Z24udGVzdChuKTtyZXR1cm4gdHx8eW4udGVzdChuKT9EbihuLnNsaWNlKDIpLHQ/Mjo4KTp2bi50ZXN0KG4pP0Y6K259ZnVuY3Rpb24gU3Uobil7cmV0dXJuIENyKG4sV3UobikpfWZ1bmN0aW9uIE91KG4pe3JldHVybiBudWxsPT1uP1wiXCI6eXIobik7XG59ZnVuY3Rpb24gSXUobix0LHIpe3JldHVybiBuPW51bGw9PW4/VDprdChuLHQpLG49PT1UP3I6bn1mdW5jdGlvbiBSdShuLHQpe3JldHVybiBudWxsIT1uJiZ3ZShuLHQsenQpfWZ1bmN0aW9uIHp1KG4pe3JldHVybiBsdShuKT9xbihuKTpWdChuKX1mdW5jdGlvbiBXdShuKXtpZihsdShuKSluPXFuKG4sdHJ1ZSk7ZWxzZSBpZihndShuKSl7dmFyIHQscj16ZShuKSxlPVtdO2Zvcih0IGluIG4pKFwiY29uc3RydWN0b3JcIiE9dHx8IXImJmlpLmNhbGwobix0KSkmJmUucHVzaCh0KTtuPWV9ZWxzZXtpZih0PVtdLG51bGwhPW4pZm9yKHIgaW4gWXUobikpdC5wdXNoKHIpO249dH1yZXR1cm4gbn1mdW5jdGlvbiBCdShuLHQpe2lmKG51bGw9PW4pcmV0dXJue307dmFyIHI9Yyh2ZShuKSxmdW5jdGlvbihuKXtyZXR1cm5bbl19KTtyZXR1cm4gdD15ZSh0KSx0cihuLHIsZnVuY3Rpb24obixyKXtyZXR1cm4gdChuLHJbMF0pfSl9ZnVuY3Rpb24gTHUobil7cmV0dXJuIG51bGw9PW4/W106UyhuLHp1KG4pKTtcbn1mdW5jdGlvbiBVdShuKXtyZXR1cm4gVGYoT3UobikudG9Mb3dlckNhc2UoKSl9ZnVuY3Rpb24gQ3Uobil7cmV0dXJuKG49T3UobikpJiZuLnJlcGxhY2UoeG4sWG4pLnJlcGxhY2UoU24sXCJcIil9ZnVuY3Rpb24gRHUobix0LHIpe3JldHVybiBuPU91KG4pLHQ9cj9UOnQsdD09PVQ/em4udGVzdChuKT9uLm1hdGNoKEluKXx8W106bi5tYXRjaChzbil8fFtdOm4ubWF0Y2godCl8fFtdfWZ1bmN0aW9uIE11KG4pe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBufX1mdW5jdGlvbiBUdShuKXtyZXR1cm4gbn1mdW5jdGlvbiAkdShuKXtyZXR1cm4gcXQodHlwZW9mIG49PVwiZnVuY3Rpb25cIj9uOl90KG4sMSkpfWZ1bmN0aW9uIEZ1KG4sdCxlKXt2YXIgdT16dSh0KSxpPUV0KHQsdSk7bnVsbCE9ZXx8Z3UodCkmJihpLmxlbmd0aHx8IXUubGVuZ3RoKXx8KGU9dCx0PW4sbj10aGlzLGk9RXQodCx6dSh0KSkpO3ZhciBvPSEoZ3UoZSkmJlwiY2hhaW5cImluIGUmJiFlLmNoYWluKSxmPXB1KG4pO3JldHVybiByKGksZnVuY3Rpb24ocil7XG52YXIgZT10W3JdO25bcl09ZSxmJiYobi5wcm90b3R5cGVbcl09ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9fY2hhaW5fXztpZihvfHx0KXt2YXIgcj1uKHRoaXMuX193cmFwcGVkX18pO3JldHVybihyLl9fYWN0aW9uc19fPVVyKHRoaXMuX19hY3Rpb25zX18pKS5wdXNoKHtmdW5jOmUsYXJnczphcmd1bWVudHMsdGhpc0FyZzpufSksci5fX2NoYWluX189dCxyfXJldHVybiBlLmFwcGx5KG4sYShbdGhpcy52YWx1ZSgpXSxhcmd1bWVudHMpKX0pfSksbn1mdW5jdGlvbiBOdSgpe31mdW5jdGlvbiBQdShuKXtyZXR1cm4gSWUobik/YihEZShuKSk6cnIobil9ZnVuY3Rpb24gWnUoKXtyZXR1cm5bXX1mdW5jdGlvbiBxdSgpe3JldHVybiBmYWxzZX1tbj1udWxsPT1tbj8kbjpydC5kZWZhdWx0cygkbi5PYmplY3QoKSxtbixydC5waWNrKCRuLFduKSk7dmFyIFZ1PW1uLkFycmF5LEt1PW1uLkRhdGUsR3U9bW4uRXJyb3IsSHU9bW4uRnVuY3Rpb24sSnU9bW4uTWF0aCxZdT1tbi5PYmplY3QsUXU9bW4uUmVnRXhwLFh1PW1uLlN0cmluZyxuaT1tbi5UeXBlRXJyb3IsdGk9VnUucHJvdG90eXBlLHJpPVl1LnByb3RvdHlwZSxlaT1tbltcIl9fY29yZS1qc19zaGFyZWRfX1wiXSx1aT1IdS5wcm90b3R5cGUudG9TdHJpbmcsaWk9cmkuaGFzT3duUHJvcGVydHksb2k9MCxmaT1mdW5jdGlvbigpe1xudmFyIG49L1teLl0rJC8uZXhlYyhlaSYmZWkua2V5cyYmZWkua2V5cy5JRV9QUk9UT3x8XCJcIik7cmV0dXJuIG4/XCJTeW1ib2woc3JjKV8xLlwiK246XCJcIn0oKSxjaT1yaS50b1N0cmluZyxhaT11aS5jYWxsKFl1KSxsaT0kbi5fLHNpPVF1KFwiXlwiK3VpLmNhbGwoaWkpLnJlcGxhY2Uocm4sXCJcXFxcJCZcIikucmVwbGFjZSgvaGFzT3duUHJvcGVydHl8KGZ1bmN0aW9uKS4qPyg/PVxcXFxcXCgpfCBmb3IgLis/KD89XFxcXFxcXSkvZyxcIiQxLio/XCIpK1wiJFwiKSxoaT1Qbj9tbi5CdWZmZXI6VCxwaT1tbi5TeW1ib2wsX2k9bW4uVWludDhBcnJheSx2aT1oaT9oaS5nOlQsZ2k9QihZdS5nZXRQcm90b3R5cGVPZixZdSksZGk9WXUuY3JlYXRlLHlpPXJpLnByb3BlcnR5SXNFbnVtZXJhYmxlLGJpPXRpLnNwbGljZSx4aT1waT9waS5pc0NvbmNhdFNwcmVhZGFibGU6VCxqaT1waT9waS5pdGVyYXRvcjpULHdpPXBpP3BpLnRvU3RyaW5nVGFnOlQsbWk9ZnVuY3Rpb24oKXt0cnl7dmFyIG49amUoWXUsXCJkZWZpbmVQcm9wZXJ0eVwiKTtcbnJldHVybiBuKHt9LFwiXCIse30pLG59Y2F0Y2gobil7fX0oKSxBaT1tbi5jbGVhclRpbWVvdXQhPT0kbi5jbGVhclRpbWVvdXQmJm1uLmNsZWFyVGltZW91dCxFaT1LdSYmS3Uubm93IT09JG4uRGF0ZS5ub3cmJkt1Lm5vdyxraT1tbi5zZXRUaW1lb3V0IT09JG4uc2V0VGltZW91dCYmbW4uc2V0VGltZW91dCxTaT1KdS5jZWlsLE9pPUp1LmZsb29yLElpPVl1LmdldE93blByb3BlcnR5U3ltYm9scyxSaT1oaT9oaS5pc0J1ZmZlcjpULHppPW1uLmlzRmluaXRlLFdpPXRpLmpvaW4sQmk9QihZdS5rZXlzLFl1KSxMaT1KdS5tYXgsVWk9SnUubWluLENpPUt1Lm5vdyxEaT1tbi5wYXJzZUludCxNaT1KdS5yYW5kb20sVGk9dGkucmV2ZXJzZSwkaT1qZShtbixcIkRhdGFWaWV3XCIpLEZpPWplKG1uLFwiTWFwXCIpLE5pPWplKG1uLFwiUHJvbWlzZVwiKSxQaT1qZShtbixcIlNldFwiKSxaaT1qZShtbixcIldlYWtNYXBcIikscWk9amUoWXUsXCJjcmVhdGVcIiksVmk9WmkmJm5ldyBaaSxLaT17fSxHaT1NZSgkaSksSGk9TWUoRmkpLEppPU1lKE5pKSxZaT1NZShQaSksUWk9TWUoWmkpLFhpPXBpP3BpLnByb3RvdHlwZTpULG5vPVhpP1hpLnZhbHVlT2Y6VCx0bz1YaT9YaS50b1N0cmluZzpULHJvPWZ1bmN0aW9uKCl7XG5mdW5jdGlvbiBuKCl7fXJldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZ3UodCk/ZGk/ZGkodCk6KG4ucHJvdG90eXBlPXQsdD1uZXcgbixuLnByb3RvdHlwZT1ULHQpOnt9fX0oKTtBbi50ZW1wbGF0ZVNldHRpbmdzPXtlc2NhcGU6SixldmFsdWF0ZTpZLGludGVycG9sYXRlOlEsdmFyaWFibGU6XCJcIixpbXBvcnRzOntfOkFufX0sQW4ucHJvdG90eXBlPUVuLnByb3RvdHlwZSxBbi5wcm90b3R5cGUuY29uc3RydWN0b3I9QW4sT24ucHJvdG90eXBlPXJvKEVuLnByb3RvdHlwZSksT24ucHJvdG90eXBlLmNvbnN0cnVjdG9yPU9uLFVuLnByb3RvdHlwZT1ybyhFbi5wcm90b3R5cGUpLFVuLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1VbixNbi5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPXFpP3FpKG51bGwpOnt9LHRoaXMuc2l6ZT0wfSxNbi5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKG4pe3JldHVybiBuPXRoaXMuaGFzKG4pJiZkZWxldGUgdGhpcy5fX2RhdGFfX1tuXSxcbnRoaXMuc2l6ZS09bj8xOjAsbn0sTW4ucHJvdG90eXBlLmdldD1mdW5jdGlvbihuKXt2YXIgdD10aGlzLl9fZGF0YV9fO3JldHVybiBxaT8obj10W25dLFwiX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfX1wiPT09bj9UOm4pOmlpLmNhbGwodCxuKT90W25dOlR9LE1uLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24obil7dmFyIHQ9dGhpcy5fX2RhdGFfXztyZXR1cm4gcWk/dFtuXSE9PVQ6aWkuY2FsbCh0LG4pfSxNbi5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKG4sdCl7dmFyIHI9dGhpcy5fX2RhdGFfXztyZXR1cm4gdGhpcy5zaXplKz10aGlzLmhhcyhuKT8wOjEscltuXT1xaSYmdD09PVQ/XCJfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fXCI6dCx0aGlzfSxUbi5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPVtdLHRoaXMuc2l6ZT0wfSxUbi5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKG4pe3ZhciB0PXRoaXMuX19kYXRhX187cmV0dXJuIG49ZnQodCxuKSwhKDA+bikmJihuPT10Lmxlbmd0aC0xP3QucG9wKCk6YmkuY2FsbCh0LG4sMSksXG4tLXRoaXMuc2l6ZSx0cnVlKX0sVG4ucHJvdG90eXBlLmdldD1mdW5jdGlvbihuKXt2YXIgdD10aGlzLl9fZGF0YV9fO3JldHVybiBuPWZ0KHQsbiksMD5uP1Q6dFtuXVsxXX0sVG4ucHJvdG90eXBlLmhhcz1mdW5jdGlvbihuKXtyZXR1cm4tMTxmdCh0aGlzLl9fZGF0YV9fLG4pfSxUbi5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKG4sdCl7dmFyIHI9dGhpcy5fX2RhdGFfXyxlPWZ0KHIsbik7cmV0dXJuIDA+ZT8oKyt0aGlzLnNpemUsci5wdXNoKFtuLHRdKSk6cltlXVsxXT10LHRoaXN9LEZuLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuc2l6ZT0wLHRoaXMuX19kYXRhX189e2hhc2g6bmV3IE1uLG1hcDpuZXcoRml8fFRuKSxzdHJpbmc6bmV3IE1ufX0sRm4ucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbihuKXtyZXR1cm4gbj1iZSh0aGlzLG4pLmRlbGV0ZShuKSx0aGlzLnNpemUtPW4/MTowLG59LEZuLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24obil7cmV0dXJuIGJlKHRoaXMsbikuZ2V0KG4pO1xufSxGbi5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKG4pe3JldHVybiBiZSh0aGlzLG4pLmhhcyhuKX0sRm4ucHJvdG90eXBlLnNldD1mdW5jdGlvbihuLHQpe3ZhciByPWJlKHRoaXMsbiksZT1yLnNpemU7cmV0dXJuIHIuc2V0KG4sdCksdGhpcy5zaXplKz1yLnNpemU9PWU/MDoxLHRoaXN9LE5uLnByb3RvdHlwZS5hZGQ9Tm4ucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMuX19kYXRhX18uc2V0KG4sXCJfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fXCIpLHRoaXN9LE5uLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKG4pfSxabi5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPW5ldyBUbix0aGlzLnNpemU9MH0sWm4ucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbihuKXt2YXIgdD10aGlzLl9fZGF0YV9fO3JldHVybiBuPXQuZGVsZXRlKG4pLHRoaXMuc2l6ZT10LnNpemUsbn0sWm4ucHJvdG90eXBlLmdldD1mdW5jdGlvbihuKXtcbnJldHVybiB0aGlzLl9fZGF0YV9fLmdldChuKX0sWm4ucHJvdG90eXBlLmhhcz1mdW5jdGlvbihuKXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5oYXMobil9LFpuLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24obix0KXt2YXIgcj10aGlzLl9fZGF0YV9fO2lmKHIgaW5zdGFuY2VvZiBUbil7dmFyIGU9ci5fX2RhdGFfXztpZighRml8fDE5OT5lLmxlbmd0aClyZXR1cm4gZS5wdXNoKFtuLHRdKSx0aGlzLnNpemU9KytyLnNpemUsdGhpcztyPXRoaXMuX19kYXRhX189bmV3IEZuKGUpfXJldHVybiByLnNldChuLHQpLHRoaXMuc2l6ZT1yLnNpemUsdGhpc307dmFyIGVvPUZyKG10KSx1bz1GcihBdCx0cnVlKSxpbz1OcigpLG9vPU5yKHRydWUpLGZvPVZpP2Z1bmN0aW9uKG4sdCl7cmV0dXJuIFZpLnNldChuLHQpLG59OlR1LGNvPW1pP2Z1bmN0aW9uKG4sdCl7cmV0dXJuIG1pKG4sXCJ0b1N0cmluZ1wiLHtjb25maWd1cmFibGU6dHJ1ZSxlbnVtZXJhYmxlOmZhbHNlLHZhbHVlOk11KHQpLHdyaXRhYmxlOnRydWV9KX06VHUsYW89QWl8fGZ1bmN0aW9uKG4pe1xucmV0dXJuICRuLmNsZWFyVGltZW91dChuKX0sbG89UGkmJjEvVShuZXcgUGkoWywtMF0pKVsxXT09JD9mdW5jdGlvbihuKXtyZXR1cm4gbmV3IFBpKG4pfTpOdSxzbz1WaT9mdW5jdGlvbihuKXtyZXR1cm4gVmkuZ2V0KG4pfTpOdSxobz1JaT9mdW5jdGlvbihuKXtyZXR1cm4gbnVsbD09bj9bXToobj1ZdShuKSxpKElpKG4pLGZ1bmN0aW9uKHQpe3JldHVybiB5aS5jYWxsKG4sdCl9KSl9Olp1LHBvPUlpP2Z1bmN0aW9uKG4pe2Zvcih2YXIgdD1bXTtuOylhKHQsaG8obikpLG49Z2kobik7cmV0dXJuIHR9Olp1LF9vPU90OygkaSYmXCJbb2JqZWN0IERhdGFWaWV3XVwiIT1fbyhuZXcgJGkobmV3IEFycmF5QnVmZmVyKDEpKSl8fEZpJiZcIltvYmplY3QgTWFwXVwiIT1fbyhuZXcgRmkpfHxOaSYmXCJbb2JqZWN0IFByb21pc2VdXCIhPV9vKE5pLnJlc29sdmUoKSl8fFBpJiZcIltvYmplY3QgU2V0XVwiIT1fbyhuZXcgUGkpfHxaaSYmXCJbb2JqZWN0IFdlYWtNYXBdXCIhPV9vKG5ldyBaaSkpJiYoX289ZnVuY3Rpb24obil7XG52YXIgdD1PdChuKTtpZihuPShuPVwiW29iamVjdCBPYmplY3RdXCI9PXQ/bi5jb25zdHJ1Y3RvcjpUKT9NZShuKTpcIlwiKXN3aXRjaChuKXtjYXNlIEdpOnJldHVyblwiW29iamVjdCBEYXRhVmlld11cIjtjYXNlIEhpOnJldHVyblwiW29iamVjdCBNYXBdXCI7Y2FzZSBKaTpyZXR1cm5cIltvYmplY3QgUHJvbWlzZV1cIjtjYXNlIFlpOnJldHVyblwiW29iamVjdCBTZXRdXCI7Y2FzZSBRaTpyZXR1cm5cIltvYmplY3QgV2Vha01hcF1cIn1yZXR1cm4gdH0pO3ZhciB2bz1laT9wdTpxdSxnbz1VZShmbykseW89a2l8fGZ1bmN0aW9uKG4sdCl7cmV0dXJuICRuLnNldFRpbWVvdXQobix0KX0sYm89VWUoY28pLHhvPWZ1bmN0aW9uKG4pe249ZnUobixmdW5jdGlvbihuKXtyZXR1cm4gNTAwPT09dC5zaXplJiZ0LmNsZWFyKCksbn0pO3ZhciB0PW4uY2FjaGU7cmV0dXJuIG59KGZ1bmN0aW9uKG4pe3ZhciB0PVtdO3JldHVybiA0Nj09PW4uY2hhckNvZGVBdCgwKSYmdC5wdXNoKFwiXCIpLG4ucmVwbGFjZSh0bixmdW5jdGlvbihuLHIsZSx1KXtcbnQucHVzaChlP3UucmVwbGFjZShobixcIiQxXCIpOnJ8fG4pfSksdH0pLGpvPWZyKGZ1bmN0aW9uKG4sdCl7cmV0dXJuIHN1KG4pP3l0KG4sd3QodCwxLHN1LHRydWUpKTpbXX0pLHdvPWZyKGZ1bmN0aW9uKG4sdCl7dmFyIHI9cWUodCk7cmV0dXJuIHN1KHIpJiYocj1UKSxzdShuKT95dChuLHd0KHQsMSxzdSx0cnVlKSx5ZShyLDIpKTpbXX0pLG1vPWZyKGZ1bmN0aW9uKG4sdCl7dmFyIHI9cWUodCk7cmV0dXJuIHN1KHIpJiYocj1UKSxzdShuKT95dChuLHd0KHQsMSxzdSx0cnVlKSxULHIpOltdfSksQW89ZnIoZnVuY3Rpb24obil7dmFyIHQ9YyhuLEVyKTtyZXR1cm4gdC5sZW5ndGgmJnRbMF09PT1uWzBdP1d0KHQpOltdfSksRW89ZnIoZnVuY3Rpb24obil7dmFyIHQ9cWUobikscj1jKG4sRXIpO3JldHVybiB0PT09cWUocik/dD1UOnIucG9wKCksci5sZW5ndGgmJnJbMF09PT1uWzBdP1d0KHIseWUodCwyKSk6W119KSxrbz1mcihmdW5jdGlvbihuKXt2YXIgdD1xZShuKSxyPWMobixFcik7cmV0dXJuKHQ9dHlwZW9mIHQ9PVwiZnVuY3Rpb25cIj90OlQpJiZyLnBvcCgpLFxuci5sZW5ndGgmJnJbMF09PT1uWzBdP1d0KHIsVCx0KTpbXX0pLFNvPWZyKFZlKSxPbz1wZShmdW5jdGlvbihuLHQpe3ZhciByPW51bGw9PW4/MDpuLmxlbmd0aCxlPWh0KG4sdCk7cmV0dXJuIHVyKG4sYyh0LGZ1bmN0aW9uKG4pe3JldHVybiBTZShuLHIpPytuOm59KS5zb3J0KFdyKSksZX0pLElvPWZyKGZ1bmN0aW9uKG4pe3JldHVybiBicih3dChuLDEsc3UsdHJ1ZSkpfSksUm89ZnIoZnVuY3Rpb24obil7dmFyIHQ9cWUobik7cmV0dXJuIHN1KHQpJiYodD1UKSxicih3dChuLDEsc3UsdHJ1ZSkseWUodCwyKSl9KSx6bz1mcihmdW5jdGlvbihuKXt2YXIgdD1xZShuKSx0PXR5cGVvZiB0PT1cImZ1bmN0aW9uXCI/dDpUO3JldHVybiBicih3dChuLDEsc3UsdHJ1ZSksVCx0KX0pLFdvPWZyKGZ1bmN0aW9uKG4sdCl7cmV0dXJuIHN1KG4pP3l0KG4sdCk6W119KSxCbz1mcihmdW5jdGlvbihuKXtyZXR1cm4gbXIoaShuLHN1KSl9KSxMbz1mcihmdW5jdGlvbihuKXt2YXIgdD1xZShuKTtyZXR1cm4gc3UodCkmJih0PVQpLFxubXIoaShuLHN1KSx5ZSh0LDIpKX0pLFVvPWZyKGZ1bmN0aW9uKG4pe3ZhciB0PXFlKG4pLHQ9dHlwZW9mIHQ9PVwiZnVuY3Rpb25cIj90OlQ7cmV0dXJuIG1yKGkobixzdSksVCx0KX0pLENvPWZyKEdlKSxEbz1mcihmdW5jdGlvbihuKXt2YXIgdD1uLmxlbmd0aCx0PTE8dD9uW3QtMV06VCx0PXR5cGVvZiB0PT1cImZ1bmN0aW9uXCI/KG4ucG9wKCksdCk6VDtyZXR1cm4gSGUobix0KX0pLE1vPXBlKGZ1bmN0aW9uKG4pe2Z1bmN0aW9uIHQodCl7cmV0dXJuIGh0KHQsbil9dmFyIHI9bi5sZW5ndGgsZT1yP25bMF06MCx1PXRoaXMuX193cmFwcGVkX187cmV0dXJuISgxPHJ8fHRoaXMuX19hY3Rpb25zX18ubGVuZ3RoKSYmdSBpbnN0YW5jZW9mIFVuJiZTZShlKT8odT11LnNsaWNlKGUsK2UrKHI/MTowKSksdS5fX2FjdGlvbnNfXy5wdXNoKHtmdW5jOlllLGFyZ3M6W3RdLHRoaXNBcmc6VH0pLG5ldyBPbih1LHRoaXMuX19jaGFpbl9fKS50aHJ1KGZ1bmN0aW9uKG4pe3JldHVybiByJiYhbi5sZW5ndGgmJm4ucHVzaChUKSxcbm59KSk6dGhpcy50aHJ1KHQpfSksVG89VHIoZnVuY3Rpb24obix0LHIpe2lpLmNhbGwobixyKT8rK25bcl06c3QobixyLDEpfSksJG89R3IoRmUpLEZvPUdyKE5lKSxObz1UcihmdW5jdGlvbihuLHQscil7aWkuY2FsbChuLHIpP25bcl0ucHVzaCh0KTpzdChuLHIsW3RdKX0pLFBvPWZyKGZ1bmN0aW9uKHQscixlKXt2YXIgdT0tMSxpPXR5cGVvZiByPT1cImZ1bmN0aW9uXCIsbz1sdSh0KT9WdSh0Lmxlbmd0aCk6W107cmV0dXJuIGVvKHQsZnVuY3Rpb24odCl7b1srK3VdPWk/bihyLHQsZSk6THQodCxyLGUpfSksb30pLFpvPVRyKGZ1bmN0aW9uKG4sdCxyKXtzdChuLHIsdCl9KSxxbz1UcihmdW5jdGlvbihuLHQscil7bltyPzA6MV0ucHVzaCh0KX0sZnVuY3Rpb24oKXtyZXR1cm5bW10sW11dfSksVm89ZnIoZnVuY3Rpb24obix0KXtpZihudWxsPT1uKXJldHVybltdO3ZhciByPXQubGVuZ3RoO3JldHVybiAxPHImJk9lKG4sdFswXSx0WzFdKT90PVtdOjI8ciYmT2UodFswXSx0WzFdLHRbMl0pJiYodD1bdFswXV0pLFxuWHQobix3dCh0LDEpLFtdKX0pLEtvPUVpfHxmdW5jdGlvbigpe3JldHVybiAkbi5EYXRlLm5vdygpfSxHbz1mcihmdW5jdGlvbihuLHQscil7dmFyIGU9MTtpZihyLmxlbmd0aCl2YXIgdT1MKHIsZGUoR28pKSxlPTMyfGU7cmV0dXJuIGZlKG4sZSx0LHIsdSl9KSxIbz1mcihmdW5jdGlvbihuLHQscil7dmFyIGU9MztpZihyLmxlbmd0aCl2YXIgdT1MKHIsZGUoSG8pKSxlPTMyfGU7cmV0dXJuIGZlKHQsZSxuLHIsdSl9KSxKbz1mcihmdW5jdGlvbihuLHQpe3JldHVybiBkdChuLDEsdCl9KSxZbz1mcihmdW5jdGlvbihuLHQscil7cmV0dXJuIGR0KG4sa3UodCl8fDAscil9KTtmdS5DYWNoZT1Gbjt2YXIgUW89ZnIoZnVuY3Rpb24odCxyKXtyPTE9PXIubGVuZ3RoJiZvZihyWzBdKT9jKHJbMF0sayh5ZSgpKSk6Yyh3dChyLDEpLGsoeWUoKSkpO3ZhciBlPXIubGVuZ3RoO3JldHVybiBmcihmdW5jdGlvbih1KXtmb3IodmFyIGk9LTEsbz1VaSh1Lmxlbmd0aCxlKTsrK2k8bzspdVtpXT1yW2ldLmNhbGwodGhpcyx1W2ldKTtcbnJldHVybiBuKHQsdGhpcyx1KX0pfSksWG89ZnIoZnVuY3Rpb24obix0KXtyZXR1cm4gZmUobiwzMixULHQsTCh0LGRlKFhvKSkpfSksbmY9ZnIoZnVuY3Rpb24obix0KXtyZXR1cm4gZmUobiw2NCxULHQsTCh0LGRlKG5mKSkpfSksdGY9cGUoZnVuY3Rpb24obix0KXtyZXR1cm4gZmUobiwyNTYsVCxULFQsdCl9KSxyZj1lZShJdCksZWY9ZWUoZnVuY3Rpb24obix0KXtyZXR1cm4gbj49dH0pLHVmPVV0KGZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50c30oKSk/VXQ6ZnVuY3Rpb24obil7cmV0dXJuIGR1KG4pJiZpaS5jYWxsKG4sXCJjYWxsZWVcIikmJiF5aS5jYWxsKG4sXCJjYWxsZWVcIil9LG9mPVZ1LmlzQXJyYXksZmY9Vm4/ayhWbik6Q3QsY2Y9Uml8fHF1LGFmPUtuP2soS24pOkR0LGxmPUduP2soR24pOlR0LHNmPUhuP2soSG4pOk50LGhmPUpuP2soSm4pOlB0LHBmPVluP2soWW4pOlp0LF9mPWVlKEt0KSx2Zj1lZShmdW5jdGlvbihuLHQpe3JldHVybiBuPD10fSksZ2Y9JHIoZnVuY3Rpb24obix0KXtcbmlmKHplKHQpfHxsdSh0KSlDcih0LHp1KHQpLG4pO2Vsc2UgZm9yKHZhciByIGluIHQpaWkuY2FsbCh0LHIpJiZvdChuLHIsdFtyXSl9KSxkZj0kcihmdW5jdGlvbihuLHQpe0NyKHQsV3UodCksbil9KSx5Zj0kcihmdW5jdGlvbihuLHQscixlKXtDcih0LFd1KHQpLG4sZSl9KSxiZj0kcihmdW5jdGlvbihuLHQscixlKXtDcih0LHp1KHQpLG4sZSl9KSx4Zj1wZShodCksamY9ZnIoZnVuY3Rpb24obix0KXtuPVl1KG4pO3ZhciByPS0xLGU9dC5sZW5ndGgsdT0yPGU/dFsyXTpUO2Zvcih1JiZPZSh0WzBdLHRbMV0sdSkmJihlPTEpOysrcjxlOylmb3IodmFyIHU9dFtyXSxpPVd1KHUpLG89LTEsZj1pLmxlbmd0aDsrK288Zjspe3ZhciBjPWlbb10sYT1uW2NdOyhhPT09VHx8YXUoYSxyaVtjXSkmJiFpaS5jYWxsKG4sYykpJiYobltjXT11W2NdKX1yZXR1cm4gbn0pLHdmPWZyKGZ1bmN0aW9uKHQpe3JldHVybiB0LnB1c2goVCxhZSksbihTZixULHQpfSksbWY9WXIoZnVuY3Rpb24obix0LHIpe1xubnVsbCE9dCYmdHlwZW9mIHQudG9TdHJpbmchPVwiZnVuY3Rpb25cIiYmKHQ9Y2kuY2FsbCh0KSksblt0XT1yfSxNdShUdSkpLEFmPVlyKGZ1bmN0aW9uKG4sdCxyKXtudWxsIT10JiZ0eXBlb2YgdC50b1N0cmluZyE9XCJmdW5jdGlvblwiJiYodD1jaS5jYWxsKHQpKSxpaS5jYWxsKG4sdCk/blt0XS5wdXNoKHIpOm5bdF09W3JdfSx5ZSksRWY9ZnIoTHQpLGtmPSRyKGZ1bmN0aW9uKG4sdCxyKXtZdChuLHQscil9KSxTZj0kcihmdW5jdGlvbihuLHQscixlKXtZdChuLHQscixlKX0pLE9mPXBlKGZ1bmN0aW9uKG4sdCl7dmFyIHI9e307aWYobnVsbD09bilyZXR1cm4gcjt2YXIgZT1mYWxzZTt0PWModCxmdW5jdGlvbih0KXtyZXR1cm4gdD1Tcih0LG4pLGV8fChlPTE8dC5sZW5ndGgpLHR9KSxDcihuLHZlKG4pLHIpLGUmJihyPV90KHIsNyxsZSkpO2Zvcih2YXIgdT10Lmxlbmd0aDt1LS07KXhyKHIsdFt1XSk7cmV0dXJuIHJ9KSxJZj1wZShmdW5jdGlvbihuLHQpe3JldHVybiBudWxsPT1uP3t9Om5yKG4sdCk7XG59KSxSZj1vZSh6dSksemY9b2UoV3UpLFdmPXFyKGZ1bmN0aW9uKG4sdCxyKXtyZXR1cm4gdD10LnRvTG93ZXJDYXNlKCksbisocj9VdSh0KTp0KX0pLEJmPXFyKGZ1bmN0aW9uKG4sdCxyKXtyZXR1cm4gbisocj9cIi1cIjpcIlwiKSt0LnRvTG93ZXJDYXNlKCl9KSxMZj1xcihmdW5jdGlvbihuLHQscil7cmV0dXJuIG4rKHI/XCIgXCI6XCJcIikrdC50b0xvd2VyQ2FzZSgpfSksVWY9WnIoXCJ0b0xvd2VyQ2FzZVwiKSxDZj1xcihmdW5jdGlvbihuLHQscil7cmV0dXJuIG4rKHI/XCJfXCI6XCJcIikrdC50b0xvd2VyQ2FzZSgpfSksRGY9cXIoZnVuY3Rpb24obix0LHIpe3JldHVybiBuKyhyP1wiIFwiOlwiXCIpK1RmKHQpfSksTWY9cXIoZnVuY3Rpb24obix0LHIpe3JldHVybiBuKyhyP1wiIFwiOlwiXCIpK3QudG9VcHBlckNhc2UoKX0pLFRmPVpyKFwidG9VcHBlckNhc2VcIiksJGY9ZnIoZnVuY3Rpb24odCxyKXt0cnl7cmV0dXJuIG4odCxULHIpfWNhdGNoKG4pe3JldHVybiBodShuKT9uOm5ldyBHdShuKX19KSxGZj1wZShmdW5jdGlvbihuLHQpe1xucmV0dXJuIHIodCxmdW5jdGlvbih0KXt0PURlKHQpLHN0KG4sdCxHbyhuW3RdLG4pKX0pLG59KSxOZj1IcigpLFBmPUhyKHRydWUpLFpmPWZyKGZ1bmN0aW9uKG4sdCl7cmV0dXJuIGZ1bmN0aW9uKHIpe3JldHVybiBMdChyLG4sdCl9fSkscWY9ZnIoZnVuY3Rpb24obix0KXtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIEx0KG4scix0KX19KSxWZj1YcihjKSxLZj1Ycih1KSxHZj1YcihoKSxIZj1yZSgpLEpmPXJlKHRydWUpLFlmPVFyKGZ1bmN0aW9uKG4sdCl7cmV0dXJuIG4rdH0sMCksUWY9aWUoXCJjZWlsXCIpLFhmPVFyKGZ1bmN0aW9uKG4sdCl7cmV0dXJuIG4vdH0sMSksbmM9aWUoXCJmbG9vclwiKSx0Yz1RcihmdW5jdGlvbihuLHQpe3JldHVybiBuKnR9LDEpLHJjPWllKFwicm91bmRcIiksZWM9UXIoZnVuY3Rpb24obix0KXtyZXR1cm4gbi10fSwwKTtyZXR1cm4gQW4uYWZ0ZXI9ZnVuY3Rpb24obix0KXtpZih0eXBlb2YgdCE9XCJmdW5jdGlvblwiKXRocm93IG5ldyBuaShcIkV4cGVjdGVkIGEgZnVuY3Rpb25cIik7XG5yZXR1cm4gbj1BdShuKSxmdW5jdGlvbigpe2lmKDE+LS1uKXJldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX19LEFuLmFyeT1ydSxBbi5hc3NpZ249Z2YsQW4uYXNzaWduSW49ZGYsQW4uYXNzaWduSW5XaXRoPXlmLEFuLmFzc2lnbldpdGg9YmYsQW4uYXQ9eGYsQW4uYmVmb3JlPWV1LEFuLmJpbmQ9R28sQW4uYmluZEFsbD1GZixBbi5iaW5kS2V5PUhvLEFuLmNhc3RBcnJheT1mdW5jdGlvbigpe2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybltdO3ZhciBuPWFyZ3VtZW50c1swXTtyZXR1cm4gb2Yobik/bjpbbl19LEFuLmNoYWluPUplLEFuLmNodW5rPWZ1bmN0aW9uKG4sdCxyKXtpZih0PShyP09lKG4sdCxyKTp0PT09VCk/MTpMaShBdSh0KSwwKSxyPW51bGw9PW4/MDpuLmxlbmd0aCwhcnx8MT50KXJldHVybltdO2Zvcih2YXIgZT0wLHU9MCxpPVZ1KFNpKHIvdCkpO2U8cjspaVt1KytdPWhyKG4sZSxlKz10KTtyZXR1cm4gaX0sQW4uY29tcGFjdD1mdW5jdGlvbihuKXtmb3IodmFyIHQ9LTEscj1udWxsPT1uPzA6bi5sZW5ndGgsZT0wLHU9W107Kyt0PHI7KXtcbnZhciBpPW5bdF07aSYmKHVbZSsrXT1pKX1yZXR1cm4gdX0sQW4uY29uY2F0PWZ1bmN0aW9uKCl7dmFyIG49YXJndW1lbnRzLmxlbmd0aDtpZighbilyZXR1cm5bXTtmb3IodmFyIHQ9VnUobi0xKSxyPWFyZ3VtZW50c1swXTtuLS07KXRbbi0xXT1hcmd1bWVudHNbbl07cmV0dXJuIGEob2Yocik/VXIocik6W3JdLHd0KHQsMSkpfSxBbi5jb25kPWZ1bmN0aW9uKHQpe3ZhciByPW51bGw9PXQ/MDp0Lmxlbmd0aCxlPXllKCk7cmV0dXJuIHQ9cj9jKHQsZnVuY3Rpb24obil7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgblsxXSl0aHJvdyBuZXcgbmkoXCJFeHBlY3RlZCBhIGZ1bmN0aW9uXCIpO3JldHVybltlKG5bMF0pLG5bMV1dfSk6W10sZnIoZnVuY3Rpb24oZSl7Zm9yKHZhciB1PS0xOysrdTxyOyl7dmFyIGk9dFt1XTtpZihuKGlbMF0sdGhpcyxlKSlyZXR1cm4gbihpWzFdLHRoaXMsZSl9fSl9LEFuLmNvbmZvcm1zPWZ1bmN0aW9uKG4pe3JldHVybiB2dChfdChuLDEpKX0sQW4uY29uc3RhbnQ9TXUsXG5Bbi5jb3VudEJ5PVRvLEFuLmNyZWF0ZT1mdW5jdGlvbihuLHQpe3ZhciByPXJvKG4pO3JldHVybiBudWxsPT10P3I6YXQocix0KX0sQW4uY3Vycnk9dXUsQW4uY3VycnlSaWdodD1pdSxBbi5kZWJvdW5jZT1vdSxBbi5kZWZhdWx0cz1qZixBbi5kZWZhdWx0c0RlZXA9d2YsQW4uZGVmZXI9Sm8sQW4uZGVsYXk9WW8sQW4uZGlmZmVyZW5jZT1qbyxBbi5kaWZmZXJlbmNlQnk9d28sQW4uZGlmZmVyZW5jZVdpdGg9bW8sQW4uZHJvcD1mdW5jdGlvbihuLHQscil7dmFyIGU9bnVsbD09bj8wOm4ubGVuZ3RoO3JldHVybiBlPyh0PXJ8fHQ9PT1UPzE6QXUodCksaHIobiwwPnQ/MDp0LGUpKTpbXX0sQW4uZHJvcFJpZ2h0PWZ1bmN0aW9uKG4sdCxyKXt2YXIgZT1udWxsPT1uPzA6bi5sZW5ndGg7cmV0dXJuIGU/KHQ9cnx8dD09PVQ/MTpBdSh0KSx0PWUtdCxocihuLDAsMD50PzA6dCkpOltdfSxBbi5kcm9wUmlnaHRXaGlsZT1mdW5jdGlvbihuLHQpe3JldHVybiBuJiZuLmxlbmd0aD9qcihuLHllKHQsMyksdHJ1ZSx0cnVlKTpbXTtcbn0sQW4uZHJvcFdoaWxlPWZ1bmN0aW9uKG4sdCl7cmV0dXJuIG4mJm4ubGVuZ3RoP2pyKG4seWUodCwzKSx0cnVlKTpbXX0sQW4uZmlsbD1mdW5jdGlvbihuLHQscixlKXt2YXIgdT1udWxsPT1uPzA6bi5sZW5ndGg7aWYoIXUpcmV0dXJuW107Zm9yKHImJnR5cGVvZiByIT1cIm51bWJlclwiJiZPZShuLHQscikmJihyPTAsZT11KSx1PW4ubGVuZ3RoLHI9QXUociksMD5yJiYocj0tcj51PzA6dStyKSxlPWU9PT1UfHxlPnU/dTpBdShlKSwwPmUmJihlKz11KSxlPXI+ZT8wOkV1KGUpO3I8ZTspbltyKytdPXQ7cmV0dXJuIG59LEFuLmZpbHRlcj1mdW5jdGlvbihuLHQpe3JldHVybihvZihuKT9pOmp0KShuLHllKHQsMykpfSxBbi5mbGF0TWFwPWZ1bmN0aW9uKG4sdCl7cmV0dXJuIHd0KHR1KG4sdCksMSl9LEFuLmZsYXRNYXBEZWVwPWZ1bmN0aW9uKG4sdCl7cmV0dXJuIHd0KHR1KG4sdCksJCl9LEFuLmZsYXRNYXBEZXB0aD1mdW5jdGlvbihuLHQscil7cmV0dXJuIHI9cj09PVQ/MTpBdShyKSxcbnd0KHR1KG4sdCkscil9LEFuLmZsYXR0ZW49UGUsQW4uZmxhdHRlbkRlZXA9ZnVuY3Rpb24obil7cmV0dXJuKG51bGw9PW4/MDpuLmxlbmd0aCk/d3QobiwkKTpbXX0sQW4uZmxhdHRlbkRlcHRoPWZ1bmN0aW9uKG4sdCl7cmV0dXJuIG51bGwhPW4mJm4ubGVuZ3RoPyh0PXQ9PT1UPzE6QXUodCksd3Qobix0KSk6W119LEFuLmZsaXA9ZnVuY3Rpb24obil7cmV0dXJuIGZlKG4sNTEyKX0sQW4uZmxvdz1OZixBbi5mbG93UmlnaHQ9UGYsQW4uZnJvbVBhaXJzPWZ1bmN0aW9uKG4pe2Zvcih2YXIgdD0tMSxyPW51bGw9PW4/MDpuLmxlbmd0aCxlPXt9OysrdDxyOyl7dmFyIHU9blt0XTtlW3VbMF1dPXVbMV19cmV0dXJuIGV9LEFuLmZ1bmN0aW9ucz1mdW5jdGlvbihuKXtyZXR1cm4gbnVsbD09bj9bXTpFdChuLHp1KG4pKX0sQW4uZnVuY3Rpb25zSW49ZnVuY3Rpb24obil7cmV0dXJuIG51bGw9PW4/W106RXQobixXdShuKSl9LEFuLmdyb3VwQnk9Tm8sQW4uaW5pdGlhbD1mdW5jdGlvbihuKXtcbnJldHVybihudWxsPT1uPzA6bi5sZW5ndGgpP2hyKG4sMCwtMSk6W119LEFuLmludGVyc2VjdGlvbj1BbyxBbi5pbnRlcnNlY3Rpb25CeT1FbyxBbi5pbnRlcnNlY3Rpb25XaXRoPWtvLEFuLmludmVydD1tZixBbi5pbnZlcnRCeT1BZixBbi5pbnZva2VNYXA9UG8sQW4uaXRlcmF0ZWU9JHUsQW4ua2V5Qnk9Wm8sQW4ua2V5cz16dSxBbi5rZXlzSW49V3UsQW4ubWFwPXR1LEFuLm1hcEtleXM9ZnVuY3Rpb24obix0KXt2YXIgcj17fTtyZXR1cm4gdD15ZSh0LDMpLG10KG4sZnVuY3Rpb24obixlLHUpe3N0KHIsdChuLGUsdSksbil9KSxyfSxBbi5tYXBWYWx1ZXM9ZnVuY3Rpb24obix0KXt2YXIgcj17fTtyZXR1cm4gdD15ZSh0LDMpLG10KG4sZnVuY3Rpb24obixlLHUpe3N0KHIsZSx0KG4sZSx1KSl9KSxyfSxBbi5tYXRjaGVzPWZ1bmN0aW9uKG4pe3JldHVybiBIdChfdChuLDEpKX0sQW4ubWF0Y2hlc1Byb3BlcnR5PWZ1bmN0aW9uKG4sdCl7cmV0dXJuIEp0KG4sX3QodCwxKSl9LEFuLm1lbW9pemU9ZnUsXG5Bbi5tZXJnZT1rZixBbi5tZXJnZVdpdGg9U2YsQW4ubWV0aG9kPVpmLEFuLm1ldGhvZE9mPXFmLEFuLm1peGluPUZ1LEFuLm5lZ2F0ZT1jdSxBbi5udGhBcmc9ZnVuY3Rpb24obil7cmV0dXJuIG49QXUobiksZnIoZnVuY3Rpb24odCl7cmV0dXJuIFF0KHQsbil9KX0sQW4ub21pdD1PZixBbi5vbWl0Qnk9ZnVuY3Rpb24obix0KXtyZXR1cm4gQnUobixjdSh5ZSh0KSkpfSxBbi5vbmNlPWZ1bmN0aW9uKG4pe3JldHVybiBldSgyLG4pfSxBbi5vcmRlckJ5PWZ1bmN0aW9uKG4sdCxyLGUpe3JldHVybiBudWxsPT1uP1tdOihvZih0KXx8KHQ9bnVsbD09dD9bXTpbdF0pLHI9ZT9UOnIsb2Yocil8fChyPW51bGw9PXI/W106W3JdKSxYdChuLHQscikpfSxBbi5vdmVyPVZmLEFuLm92ZXJBcmdzPVFvLEFuLm92ZXJFdmVyeT1LZixBbi5vdmVyU29tZT1HZixBbi5wYXJ0aWFsPVhvLEFuLnBhcnRpYWxSaWdodD1uZixBbi5wYXJ0aXRpb249cW8sQW4ucGljaz1JZixBbi5waWNrQnk9QnUsQW4ucHJvcGVydHk9UHUsXG5Bbi5wcm9wZXJ0eU9mPWZ1bmN0aW9uKG4pe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09bj9UOmt0KG4sdCl9fSxBbi5wdWxsPVNvLEFuLnB1bGxBbGw9VmUsQW4ucHVsbEFsbEJ5PWZ1bmN0aW9uKG4sdCxyKXtyZXR1cm4gbiYmbi5sZW5ndGgmJnQmJnQubGVuZ3RoP2VyKG4sdCx5ZShyLDIpKTpufSxBbi5wdWxsQWxsV2l0aD1mdW5jdGlvbihuLHQscil7cmV0dXJuIG4mJm4ubGVuZ3RoJiZ0JiZ0Lmxlbmd0aD9lcihuLHQsVCxyKTpufSxBbi5wdWxsQXQ9T28sQW4ucmFuZ2U9SGYsQW4ucmFuZ2VSaWdodD1KZixBbi5yZWFyZz10ZixBbi5yZWplY3Q9ZnVuY3Rpb24obix0KXtyZXR1cm4ob2Yobik/aTpqdCkobixjdSh5ZSh0LDMpKSl9LEFuLnJlbW92ZT1mdW5jdGlvbihuLHQpe3ZhciByPVtdO2lmKCFufHwhbi5sZW5ndGgpcmV0dXJuIHI7dmFyIGU9LTEsdT1bXSxpPW4ubGVuZ3RoO2Zvcih0PXllKHQsMyk7KytlPGk7KXt2YXIgbz1uW2VdO3QobyxlLG4pJiYoci5wdXNoKG8pLFxudS5wdXNoKGUpKX1yZXR1cm4gdXIobix1KSxyfSxBbi5yZXN0PWZ1bmN0aW9uKG4sdCl7aWYodHlwZW9mIG4hPVwiZnVuY3Rpb25cIil0aHJvdyBuZXcgbmkoXCJFeHBlY3RlZCBhIGZ1bmN0aW9uXCIpO3JldHVybiB0PXQ9PT1UP3Q6QXUodCksZnIobix0KX0sQW4ucmV2ZXJzZT1LZSxBbi5zYW1wbGVTaXplPWZ1bmN0aW9uKG4sdCxyKXtyZXR1cm4gdD0ocj9PZShuLHQscik6dD09PVQpPzE6QXUodCksKG9mKG4pP2V0OmFyKShuLHQpfSxBbi5zZXQ9ZnVuY3Rpb24obix0LHIpe3JldHVybiBudWxsPT1uP246bHIobix0LHIpfSxBbi5zZXRXaXRoPWZ1bmN0aW9uKG4sdCxyLGUpe3JldHVybiBlPXR5cGVvZiBlPT1cImZ1bmN0aW9uXCI/ZTpULG51bGw9PW4/bjpscihuLHQscixlKX0sQW4uc2h1ZmZsZT1mdW5jdGlvbihuKXtyZXR1cm4ob2Yobik/dXQ6c3IpKG4pfSxBbi5zbGljZT1mdW5jdGlvbihuLHQscil7dmFyIGU9bnVsbD09bj8wOm4ubGVuZ3RoO3JldHVybiBlPyhyJiZ0eXBlb2YgciE9XCJudW1iZXJcIiYmT2Uobix0LHIpPyh0PTAsXG5yPWUpOih0PW51bGw9PXQ/MDpBdSh0KSxyPXI9PT1UP2U6QXUocikpLGhyKG4sdCxyKSk6W119LEFuLnNvcnRCeT1WbyxBbi5zb3J0ZWRVbmlxPWZ1bmN0aW9uKG4pe3JldHVybiBuJiZuLmxlbmd0aD9ncihuKTpbXX0sQW4uc29ydGVkVW5pcUJ5PWZ1bmN0aW9uKG4sdCl7cmV0dXJuIG4mJm4ubGVuZ3RoP2dyKG4seWUodCwyKSk6W119LEFuLnNwbGl0PWZ1bmN0aW9uKG4sdCxyKXtyZXR1cm4gciYmdHlwZW9mIHIhPVwibnVtYmVyXCImJk9lKG4sdCxyKSYmKHQ9cj1UKSxyPXI9PT1UPzQyOTQ5NjcyOTU6cj4+PjAscj8obj1PdShuKSkmJih0eXBlb2YgdD09XCJzdHJpbmdcInx8bnVsbCE9dCYmIXNmKHQpKSYmKHQ9eXIodCksIXQmJlJuLnRlc3QobikpP09yKE0obiksMCxyKTpuLnNwbGl0KHQscik6W119LEFuLnNwcmVhZD1mdW5jdGlvbih0LHIpe2lmKHR5cGVvZiB0IT1cImZ1bmN0aW9uXCIpdGhyb3cgbmV3IG5pKFwiRXhwZWN0ZWQgYSBmdW5jdGlvblwiKTtyZXR1cm4gcj1udWxsPT1yPzA6TGkoQXUociksMCksXG5mcihmdW5jdGlvbihlKXt2YXIgdT1lW3JdO3JldHVybiBlPU9yKGUsMCxyKSx1JiZhKGUsdSksbih0LHRoaXMsZSl9KX0sQW4udGFpbD1mdW5jdGlvbihuKXt2YXIgdD1udWxsPT1uPzA6bi5sZW5ndGg7cmV0dXJuIHQ/aHIobiwxLHQpOltdfSxBbi50YWtlPWZ1bmN0aW9uKG4sdCxyKXtyZXR1cm4gbiYmbi5sZW5ndGg/KHQ9cnx8dD09PVQ/MTpBdSh0KSxocihuLDAsMD50PzA6dCkpOltdfSxBbi50YWtlUmlnaHQ9ZnVuY3Rpb24obix0LHIpe3ZhciBlPW51bGw9PW4/MDpuLmxlbmd0aDtyZXR1cm4gZT8odD1yfHx0PT09VD8xOkF1KHQpLHQ9ZS10LGhyKG4sMD50PzA6dCxlKSk6W119LEFuLnRha2VSaWdodFdoaWxlPWZ1bmN0aW9uKG4sdCl7cmV0dXJuIG4mJm4ubGVuZ3RoP2pyKG4seWUodCwzKSxmYWxzZSx0cnVlKTpbXX0sQW4udGFrZVdoaWxlPWZ1bmN0aW9uKG4sdCl7cmV0dXJuIG4mJm4ubGVuZ3RoP2pyKG4seWUodCwzKSk6W119LEFuLnRhcD1mdW5jdGlvbihuLHQpe3JldHVybiB0KG4pLFxubn0sQW4udGhyb3R0bGU9ZnVuY3Rpb24obix0LHIpe3ZhciBlPXRydWUsdT10cnVlO2lmKHR5cGVvZiBuIT1cImZ1bmN0aW9uXCIpdGhyb3cgbmV3IG5pKFwiRXhwZWN0ZWQgYSBmdW5jdGlvblwiKTtyZXR1cm4gZ3UocikmJihlPVwibGVhZGluZ1wiaW4gcj8hIXIubGVhZGluZzplLHU9XCJ0cmFpbGluZ1wiaW4gcj8hIXIudHJhaWxpbmc6dSksb3Uobix0LHtsZWFkaW5nOmUsbWF4V2FpdDp0LHRyYWlsaW5nOnV9KX0sQW4udGhydT1ZZSxBbi50b0FycmF5PXd1LEFuLnRvUGFpcnM9UmYsQW4udG9QYWlyc0luPXpmLEFuLnRvUGF0aD1mdW5jdGlvbihuKXtyZXR1cm4gb2Yobik/YyhuLERlKTpqdShuKT9bbl06VXIoeG8oT3UobikpKX0sQW4udG9QbGFpbk9iamVjdD1TdSxBbi50cmFuc2Zvcm09ZnVuY3Rpb24obix0LGUpe3ZhciB1PW9mKG4pLGk9dXx8Y2Yobil8fHBmKG4pO2lmKHQ9eWUodCw0KSxudWxsPT1lKXt2YXIgbz1uJiZuLmNvbnN0cnVjdG9yO2U9aT91P25ldyBvOltdOmd1KG4pJiZwdShvKT9ybyhnaShuKSk6e307XG59cmV0dXJuKGk/cjptdCkobixmdW5jdGlvbihuLHIsdSl7cmV0dXJuIHQoZSxuLHIsdSl9KSxlfSxBbi51bmFyeT1mdW5jdGlvbihuKXtyZXR1cm4gcnUobiwxKX0sQW4udW5pb249SW8sQW4udW5pb25CeT1SbyxBbi51bmlvbldpdGg9em8sQW4udW5pcT1mdW5jdGlvbihuKXtyZXR1cm4gbiYmbi5sZW5ndGg/YnIobik6W119LEFuLnVuaXFCeT1mdW5jdGlvbihuLHQpe3JldHVybiBuJiZuLmxlbmd0aD9icihuLHllKHQsMikpOltdfSxBbi51bmlxV2l0aD1mdW5jdGlvbihuLHQpe3JldHVybiB0PXR5cGVvZiB0PT1cImZ1bmN0aW9uXCI/dDpULG4mJm4ubGVuZ3RoP2JyKG4sVCx0KTpbXX0sQW4udW5zZXQ9ZnVuY3Rpb24obix0KXtyZXR1cm4gbnVsbD09bnx8eHIobix0KX0sQW4udW56aXA9R2UsQW4udW56aXBXaXRoPUhlLEFuLnVwZGF0ZT1mdW5jdGlvbihuLHQscil7cmV0dXJuIG51bGw9PW4/bjpscihuLHQsa3Iocikoa3Qobix0KSksdm9pZCAwKX0sQW4udXBkYXRlV2l0aD1mdW5jdGlvbihuLHQscixlKXtcbnJldHVybiBlPXR5cGVvZiBlPT1cImZ1bmN0aW9uXCI/ZTpULG51bGwhPW4mJihuPWxyKG4sdCxrcihyKShrdChuLHQpKSxlKSksbn0sQW4udmFsdWVzPUx1LEFuLnZhbHVlc0luPWZ1bmN0aW9uKG4pe3JldHVybiBudWxsPT1uP1tdOlMobixXdShuKSl9LEFuLndpdGhvdXQ9V28sQW4ud29yZHM9RHUsQW4ud3JhcD1mdW5jdGlvbihuLHQpe3JldHVybiBYbyhrcih0KSxuKX0sQW4ueG9yPUJvLEFuLnhvckJ5PUxvLEFuLnhvcldpdGg9VW8sQW4uemlwPUNvLEFuLnppcE9iamVjdD1mdW5jdGlvbihuLHQpe3JldHVybiBBcihufHxbXSx0fHxbXSxvdCl9LEFuLnppcE9iamVjdERlZXA9ZnVuY3Rpb24obix0KXtyZXR1cm4gQXIobnx8W10sdHx8W10sbHIpfSxBbi56aXBXaXRoPURvLEFuLmVudHJpZXM9UmYsQW4uZW50cmllc0luPXpmLEFuLmV4dGVuZD1kZixBbi5leHRlbmRXaXRoPXlmLEZ1KEFuLEFuKSxBbi5hZGQ9WWYsQW4uYXR0ZW1wdD0kZixBbi5jYW1lbENhc2U9V2YsQW4uY2FwaXRhbGl6ZT1VdSxcbkFuLmNlaWw9UWYsQW4uY2xhbXA9ZnVuY3Rpb24obix0LHIpe3JldHVybiByPT09VCYmKHI9dCx0PVQpLHIhPT1UJiYocj1rdShyKSxyPXI9PT1yP3I6MCksdCE9PVQmJih0PWt1KHQpLHQ9dD09PXQ/dDowKSxwdChrdShuKSx0LHIpfSxBbi5jbG9uZT1mdW5jdGlvbihuKXtyZXR1cm4gX3Qobiw0KX0sQW4uY2xvbmVEZWVwPWZ1bmN0aW9uKG4pe3JldHVybiBfdChuLDUpfSxBbi5jbG9uZURlZXBXaXRoPWZ1bmN0aW9uKG4sdCl7cmV0dXJuIHQ9dHlwZW9mIHQ9PVwiZnVuY3Rpb25cIj90OlQsX3Qobiw1LHQpfSxBbi5jbG9uZVdpdGg9ZnVuY3Rpb24obix0KXtyZXR1cm4gdD10eXBlb2YgdD09XCJmdW5jdGlvblwiP3Q6VCxfdChuLDQsdCl9LEFuLmNvbmZvcm1zVG89ZnVuY3Rpb24obix0KXtyZXR1cm4gbnVsbD09dHx8Z3Qobix0LHp1KHQpKX0sQW4uZGVidXJyPUN1LEFuLmRlZmF1bHRUbz1mdW5jdGlvbihuLHQpe3JldHVybiBudWxsPT1ufHxuIT09bj90Om59LEFuLmRpdmlkZT1YZixBbi5lbmRzV2l0aD1mdW5jdGlvbihuLHQscil7XG5uPU91KG4pLHQ9eXIodCk7dmFyIGU9bi5sZW5ndGgsZT1yPXI9PT1UP2U6cHQoQXUociksMCxlKTtyZXR1cm4gci09dC5sZW5ndGgsMDw9ciYmbi5zbGljZShyLGUpPT10fSxBbi5lcT1hdSxBbi5lc2NhcGU9ZnVuY3Rpb24obil7cmV0dXJuKG49T3UobikpJiZILnRlc3Qobik/bi5yZXBsYWNlKEssbnQpOm59LEFuLmVzY2FwZVJlZ0V4cD1mdW5jdGlvbihuKXtyZXR1cm4obj1PdShuKSkmJmVuLnRlc3Qobik/bi5yZXBsYWNlKHJuLFwiXFxcXCQmXCIpOm59LEFuLmV2ZXJ5PWZ1bmN0aW9uKG4sdCxyKXt2YXIgZT1vZihuKT91OmJ0O3JldHVybiByJiZPZShuLHQscikmJih0PVQpLGUobix5ZSh0LDMpKX0sQW4uZmluZD0kbyxBbi5maW5kSW5kZXg9RmUsQW4uZmluZEtleT1mdW5jdGlvbihuLHQpe3JldHVybiBwKG4seWUodCwzKSxtdCl9LEFuLmZpbmRMYXN0PUZvLEFuLmZpbmRMYXN0SW5kZXg9TmUsQW4uZmluZExhc3RLZXk9ZnVuY3Rpb24obix0KXtyZXR1cm4gcChuLHllKHQsMyksQXQpO1xufSxBbi5mbG9vcj1uYyxBbi5mb3JFYWNoPVhlLEFuLmZvckVhY2hSaWdodD1udSxBbi5mb3JJbj1mdW5jdGlvbihuLHQpe3JldHVybiBudWxsPT1uP246aW8obix5ZSh0LDMpLFd1KX0sQW4uZm9ySW5SaWdodD1mdW5jdGlvbihuLHQpe3JldHVybiBudWxsPT1uP246b28obix5ZSh0LDMpLFd1KX0sQW4uZm9yT3duPWZ1bmN0aW9uKG4sdCl7cmV0dXJuIG4mJm10KG4seWUodCwzKSl9LEFuLmZvck93blJpZ2h0PWZ1bmN0aW9uKG4sdCl7cmV0dXJuIG4mJkF0KG4seWUodCwzKSl9LEFuLmdldD1JdSxBbi5ndD1yZixBbi5ndGU9ZWYsQW4uaGFzPWZ1bmN0aW9uKG4sdCl7cmV0dXJuIG51bGwhPW4mJndlKG4sdCxSdCl9LEFuLmhhc0luPVJ1LEFuLmhlYWQ9WmUsQW4uaWRlbnRpdHk9VHUsQW4uaW5jbHVkZXM9ZnVuY3Rpb24obix0LHIsZSl7cmV0dXJuIG49bHUobik/bjpMdShuKSxyPXImJiFlP0F1KHIpOjAsZT1uLmxlbmd0aCwwPnImJihyPUxpKGUrciwwKSkseHUobik/cjw9ZSYmLTE8bi5pbmRleE9mKHQscik6ISFlJiYtMTx2KG4sdCxyKTtcbn0sQW4uaW5kZXhPZj1mdW5jdGlvbihuLHQscil7dmFyIGU9bnVsbD09bj8wOm4ubGVuZ3RoO3JldHVybiBlPyhyPW51bGw9PXI/MDpBdShyKSwwPnImJihyPUxpKGUrciwwKSksdihuLHQscikpOi0xfSxBbi5pblJhbmdlPWZ1bmN0aW9uKG4sdCxyKXtyZXR1cm4gdD1tdSh0KSxyPT09VD8ocj10LHQ9MCk6cj1tdShyKSxuPWt1KG4pLG4+PVVpKHQscikmJm48TGkodCxyKX0sQW4uaW52b2tlPUVmLEFuLmlzQXJndW1lbnRzPXVmLEFuLmlzQXJyYXk9b2YsQW4uaXNBcnJheUJ1ZmZlcj1mZixBbi5pc0FycmF5TGlrZT1sdSxBbi5pc0FycmF5TGlrZU9iamVjdD1zdSxBbi5pc0Jvb2xlYW49ZnVuY3Rpb24obil7cmV0dXJuIHRydWU9PT1ufHxmYWxzZT09PW58fGR1KG4pJiZcIltvYmplY3QgQm9vbGVhbl1cIj09T3Qobil9LEFuLmlzQnVmZmVyPWNmLEFuLmlzRGF0ZT1hZixBbi5pc0VsZW1lbnQ9ZnVuY3Rpb24obil7cmV0dXJuIGR1KG4pJiYxPT09bi5ub2RlVHlwZSYmIWJ1KG4pfSxBbi5pc0VtcHR5PWZ1bmN0aW9uKG4pe1xuaWYobnVsbD09bilyZXR1cm4gdHJ1ZTtpZihsdShuKSYmKG9mKG4pfHx0eXBlb2Ygbj09XCJzdHJpbmdcInx8dHlwZW9mIG4uc3BsaWNlPT1cImZ1bmN0aW9uXCJ8fGNmKG4pfHxwZihuKXx8dWYobikpKXJldHVybiFuLmxlbmd0aDt2YXIgdD1fbyhuKTtpZihcIltvYmplY3QgTWFwXVwiPT10fHxcIltvYmplY3QgU2V0XVwiPT10KXJldHVybiFuLnNpemU7aWYoemUobikpcmV0dXJuIVZ0KG4pLmxlbmd0aDtmb3IodmFyIHIgaW4gbilpZihpaS5jYWxsKG4scikpcmV0dXJuIGZhbHNlO3JldHVybiB0cnVlfSxBbi5pc0VxdWFsPWZ1bmN0aW9uKG4sdCl7cmV0dXJuIE10KG4sdCl9LEFuLmlzRXF1YWxXaXRoPWZ1bmN0aW9uKG4sdCxyKXt2YXIgZT0ocj10eXBlb2Ygcj09XCJmdW5jdGlvblwiP3I6VCk/cihuLHQpOlQ7cmV0dXJuIGU9PT1UP010KG4sdCxULHIpOiEhZX0sQW4uaXNFcnJvcj1odSxBbi5pc0Zpbml0ZT1mdW5jdGlvbihuKXtyZXR1cm4gdHlwZW9mIG49PVwibnVtYmVyXCImJnppKG4pfSxBbi5pc0Z1bmN0aW9uPXB1LFxuQW4uaXNJbnRlZ2VyPV91LEFuLmlzTGVuZ3RoPXZ1LEFuLmlzTWFwPWxmLEFuLmlzTWF0Y2g9ZnVuY3Rpb24obix0KXtyZXR1cm4gbj09PXR8fCR0KG4sdCx4ZSh0KSl9LEFuLmlzTWF0Y2hXaXRoPWZ1bmN0aW9uKG4sdCxyKXtyZXR1cm4gcj10eXBlb2Ygcj09XCJmdW5jdGlvblwiP3I6VCwkdChuLHQseGUodCkscil9LEFuLmlzTmFOPWZ1bmN0aW9uKG4pe3JldHVybiB5dShuKSYmbiE9K259LEFuLmlzTmF0aXZlPWZ1bmN0aW9uKG4pe2lmKHZvKG4pKXRocm93IG5ldyBHdShcIlVuc3VwcG9ydGVkIGNvcmUtanMgdXNlLiBUcnkgaHR0cHM6Ly9ucG1zLmlvL3NlYXJjaD9xPXBvbnlmaWxsLlwiKTtyZXR1cm4gRnQobil9LEFuLmlzTmlsPWZ1bmN0aW9uKG4pe3JldHVybiBudWxsPT1ufSxBbi5pc051bGw9ZnVuY3Rpb24obil7cmV0dXJuIG51bGw9PT1ufSxBbi5pc051bWJlcj15dSxBbi5pc09iamVjdD1ndSxBbi5pc09iamVjdExpa2U9ZHUsQW4uaXNQbGFpbk9iamVjdD1idSxBbi5pc1JlZ0V4cD1zZixcbkFuLmlzU2FmZUludGVnZXI9ZnVuY3Rpb24obil7cmV0dXJuIF91KG4pJiYtOTAwNzE5OTI1NDc0MDk5MTw9biYmOTAwNzE5OTI1NDc0MDk5MT49bn0sQW4uaXNTZXQ9aGYsQW4uaXNTdHJpbmc9eHUsQW4uaXNTeW1ib2w9anUsQW4uaXNUeXBlZEFycmF5PXBmLEFuLmlzVW5kZWZpbmVkPWZ1bmN0aW9uKG4pe3JldHVybiBuPT09VH0sQW4uaXNXZWFrTWFwPWZ1bmN0aW9uKG4pe3JldHVybiBkdShuKSYmXCJbb2JqZWN0IFdlYWtNYXBdXCI9PV9vKG4pfSxBbi5pc1dlYWtTZXQ9ZnVuY3Rpb24obil7cmV0dXJuIGR1KG4pJiZcIltvYmplY3QgV2Vha1NldF1cIj09T3Qobil9LEFuLmpvaW49ZnVuY3Rpb24obix0KXtyZXR1cm4gbnVsbD09bj9cIlwiOldpLmNhbGwobix0KX0sQW4ua2ViYWJDYXNlPUJmLEFuLmxhc3Q9cWUsQW4ubGFzdEluZGV4T2Y9ZnVuY3Rpb24obix0LHIpe3ZhciBlPW51bGw9PW4/MDpuLmxlbmd0aDtpZighZSlyZXR1cm4tMTt2YXIgdT1lO2lmKHIhPT1UJiYodT1BdShyKSx1PTA+dT9MaShlK3UsMCk6VWkodSxlLTEpKSxcbnQ9PT10KXtmb3Iocj11KzE7ci0tJiZuW3JdIT09dDspO249cn1lbHNlIG49XyhuLGQsdSx0cnVlKTtyZXR1cm4gbn0sQW4ubG93ZXJDYXNlPUxmLEFuLmxvd2VyRmlyc3Q9VWYsQW4ubHQ9X2YsQW4ubHRlPXZmLEFuLm1heD1mdW5jdGlvbihuKXtyZXR1cm4gbiYmbi5sZW5ndGg/eHQobixUdSxJdCk6VH0sQW4ubWF4Qnk9ZnVuY3Rpb24obix0KXtyZXR1cm4gbiYmbi5sZW5ndGg/eHQobix5ZSh0LDIpLEl0KTpUfSxBbi5tZWFuPWZ1bmN0aW9uKG4pe3JldHVybiB5KG4sVHUpfSxBbi5tZWFuQnk9ZnVuY3Rpb24obix0KXtyZXR1cm4geShuLHllKHQsMikpfSxBbi5taW49ZnVuY3Rpb24obil7cmV0dXJuIG4mJm4ubGVuZ3RoP3h0KG4sVHUsS3QpOlR9LEFuLm1pbkJ5PWZ1bmN0aW9uKG4sdCl7cmV0dXJuIG4mJm4ubGVuZ3RoP3h0KG4seWUodCwyKSxLdCk6VH0sQW4uc3R1YkFycmF5PVp1LEFuLnN0dWJGYWxzZT1xdSxBbi5zdHViT2JqZWN0PWZ1bmN0aW9uKCl7cmV0dXJue319LEFuLnN0dWJTdHJpbmc9ZnVuY3Rpb24oKXtcbnJldHVyblwiXCJ9LEFuLnN0dWJUcnVlPWZ1bmN0aW9uKCl7cmV0dXJuIHRydWV9LEFuLm11bHRpcGx5PXRjLEFuLm50aD1mdW5jdGlvbihuLHQpe3JldHVybiBuJiZuLmxlbmd0aD9RdChuLEF1KHQpKTpUfSxBbi5ub0NvbmZsaWN0PWZ1bmN0aW9uKCl7cmV0dXJuICRuLl89PT10aGlzJiYoJG4uXz1saSksdGhpc30sQW4ubm9vcD1OdSxBbi5ub3c9S28sQW4ucGFkPWZ1bmN0aW9uKG4sdCxyKXtuPU91KG4pO3ZhciBlPSh0PUF1KHQpKT9EKG4pOjA7cmV0dXJuIXR8fGU+PXQ/bjoodD0odC1lKS8yLG5lKE9pKHQpLHIpK24rbmUoU2kodCkscikpfSxBbi5wYWRFbmQ9ZnVuY3Rpb24obix0LHIpe249T3Uobik7dmFyIGU9KHQ9QXUodCkpP0Qobik6MDtyZXR1cm4gdCYmZTx0P24rbmUodC1lLHIpOm59LEFuLnBhZFN0YXJ0PWZ1bmN0aW9uKG4sdCxyKXtuPU91KG4pO3ZhciBlPSh0PUF1KHQpKT9EKG4pOjA7cmV0dXJuIHQmJmU8dD9uZSh0LWUscikrbjpufSxBbi5wYXJzZUludD1mdW5jdGlvbihuLHQscil7XG5yZXR1cm4gcnx8bnVsbD09dD90PTA6dCYmKHQ9K3QpLERpKE91KG4pLnJlcGxhY2Uob24sXCJcIiksdHx8MCl9LEFuLnJhbmRvbT1mdW5jdGlvbihuLHQscil7aWYociYmdHlwZW9mIHIhPVwiYm9vbGVhblwiJiZPZShuLHQscikmJih0PXI9VCkscj09PVQmJih0eXBlb2YgdD09XCJib29sZWFuXCI/KHI9dCx0PVQpOnR5cGVvZiBuPT1cImJvb2xlYW5cIiYmKHI9bixuPVQpKSxuPT09VCYmdD09PVQ/KG49MCx0PTEpOihuPW11KG4pLHQ9PT1UPyh0PW4sbj0wKTp0PW11KHQpKSxuPnQpe3ZhciBlPW47bj10LHQ9ZX1yZXR1cm4gcnx8biUxfHx0JTE/KHI9TWkoKSxVaShuK3IqKHQtbitDbihcIjFlLVwiKygocitcIlwiKS5sZW5ndGgtMSkpKSx0KSk6aXIobix0KX0sQW4ucmVkdWNlPWZ1bmN0aW9uKG4sdCxyKXt2YXIgZT1vZihuKT9sOmosdT0zPmFyZ3VtZW50cy5sZW5ndGg7cmV0dXJuIGUobix5ZSh0LDQpLHIsdSxlbyl9LEFuLnJlZHVjZVJpZ2h0PWZ1bmN0aW9uKG4sdCxyKXt2YXIgZT1vZihuKT9zOmosdT0zPmFyZ3VtZW50cy5sZW5ndGg7XG5yZXR1cm4gZShuLHllKHQsNCkscix1LHVvKX0sQW4ucmVwZWF0PWZ1bmN0aW9uKG4sdCxyKXtyZXR1cm4gdD0ocj9PZShuLHQscik6dD09PVQpPzE6QXUodCksb3IoT3UobiksdCl9LEFuLnJlcGxhY2U9ZnVuY3Rpb24oKXt2YXIgbj1hcmd1bWVudHMsdD1PdShuWzBdKTtyZXR1cm4gMz5uLmxlbmd0aD90OnQucmVwbGFjZShuWzFdLG5bMl0pfSxBbi5yZXN1bHQ9ZnVuY3Rpb24obix0LHIpe3Q9U3IodCxuKTt2YXIgZT0tMSx1PXQubGVuZ3RoO2Zvcih1fHwodT0xLG49VCk7KytlPHU7KXt2YXIgaT1udWxsPT1uP1Q6bltEZSh0W2VdKV07aT09PVQmJihlPXUsaT1yKSxuPXB1KGkpP2kuY2FsbChuKTppfXJldHVybiBufSxBbi5yb3VuZD1yYyxBbi5ydW5JbkNvbnRleHQ9eCxBbi5zYW1wbGU9ZnVuY3Rpb24obil7cmV0dXJuKG9mKG4pP1FuOmNyKShuKX0sQW4uc2l6ZT1mdW5jdGlvbihuKXtpZihudWxsPT1uKXJldHVybiAwO2lmKGx1KG4pKXJldHVybiB4dShuKT9EKG4pOm4ubGVuZ3RoO1xudmFyIHQ9X28obik7cmV0dXJuXCJbb2JqZWN0IE1hcF1cIj09dHx8XCJbb2JqZWN0IFNldF1cIj09dD9uLnNpemU6VnQobikubGVuZ3RofSxBbi5zbmFrZUNhc2U9Q2YsQW4uc29tZT1mdW5jdGlvbihuLHQscil7dmFyIGU9b2Yobik/aDpwcjtyZXR1cm4gciYmT2Uobix0LHIpJiYodD1UKSxlKG4seWUodCwzKSl9LEFuLnNvcnRlZEluZGV4PWZ1bmN0aW9uKG4sdCl7cmV0dXJuIF9yKG4sdCl9LEFuLnNvcnRlZEluZGV4Qnk9ZnVuY3Rpb24obix0LHIpe3JldHVybiB2cihuLHQseWUociwyKSl9LEFuLnNvcnRlZEluZGV4T2Y9ZnVuY3Rpb24obix0KXt2YXIgcj1udWxsPT1uPzA6bi5sZW5ndGg7aWYocil7dmFyIGU9X3Iobix0KTtpZihlPHImJmF1KG5bZV0sdCkpcmV0dXJuIGV9cmV0dXJuLTF9LEFuLnNvcnRlZExhc3RJbmRleD1mdW5jdGlvbihuLHQpe3JldHVybiBfcihuLHQsdHJ1ZSl9LEFuLnNvcnRlZExhc3RJbmRleEJ5PWZ1bmN0aW9uKG4sdCxyKXtyZXR1cm4gdnIobix0LHllKHIsMiksdHJ1ZSk7XG59LEFuLnNvcnRlZExhc3RJbmRleE9mPWZ1bmN0aW9uKG4sdCl7aWYobnVsbD09bj8wOm4ubGVuZ3RoKXt2YXIgcj1fcihuLHQsdHJ1ZSktMTtpZihhdShuW3JdLHQpKXJldHVybiByfXJldHVybi0xfSxBbi5zdGFydENhc2U9RGYsQW4uc3RhcnRzV2l0aD1mdW5jdGlvbihuLHQscil7cmV0dXJuIG49T3Uobikscj1udWxsPT1yPzA6cHQoQXUociksMCxuLmxlbmd0aCksdD15cih0KSxuLnNsaWNlKHIscit0Lmxlbmd0aCk9PXR9LEFuLnN1YnRyYWN0PWVjLEFuLnN1bT1mdW5jdGlvbihuKXtyZXR1cm4gbiYmbi5sZW5ndGg/bShuLFR1KTowfSxBbi5zdW1CeT1mdW5jdGlvbihuLHQpe3JldHVybiBuJiZuLmxlbmd0aD9tKG4seWUodCwyKSk6MH0sQW4udGVtcGxhdGU9ZnVuY3Rpb24obix0LHIpe3ZhciBlPUFuLnRlbXBsYXRlU2V0dGluZ3M7ciYmT2Uobix0LHIpJiYodD1UKSxuPU91KG4pLHQ9eWYoe30sdCxlLGNlKSxyPXlmKHt9LHQuaW1wb3J0cyxlLmltcG9ydHMsY2UpO3ZhciB1LGksbz16dShyKSxmPVMocixvKSxjPTA7XG5yPXQuaW50ZXJwb2xhdGV8fGpuO3ZhciBhPVwiX19wKz0nXCI7cj1RdSgodC5lc2NhcGV8fGpuKS5zb3VyY2UrXCJ8XCIrci5zb3VyY2UrXCJ8XCIrKHI9PT1RP3BuOmpuKS5zb3VyY2UrXCJ8XCIrKHQuZXZhbHVhdGV8fGpuKS5zb3VyY2UrXCJ8JFwiLFwiZ1wiKTt2YXIgbD1cInNvdXJjZVVSTFwiaW4gdD9cIi8vIyBzb3VyY2VVUkw9XCIrdC5zb3VyY2VVUkwrXCJcXG5cIjpcIlwiO2lmKG4ucmVwbGFjZShyLGZ1bmN0aW9uKHQscixlLG8sZixsKXtyZXR1cm4gZXx8KGU9byksYSs9bi5zbGljZShjLGwpLnJlcGxhY2Uod24seiksciYmKHU9dHJ1ZSxhKz1cIicrX19lKFwiK3IrXCIpKydcIiksZiYmKGk9dHJ1ZSxhKz1cIic7XCIrZitcIjtcXG5fX3ArPSdcIiksZSYmKGErPVwiJysoKF9fdD0oXCIrZStcIikpPT1udWxsPycnOl9fdCkrJ1wiKSxjPWwrdC5sZW5ndGgsdH0pLGErPVwiJztcIiwodD10LnZhcmlhYmxlKXx8KGE9XCJ3aXRoKG9iail7XCIrYStcIn1cIiksYT0oaT9hLnJlcGxhY2UoUCxcIlwiKTphKS5yZXBsYWNlKFosXCIkMVwiKS5yZXBsYWNlKHEsXCIkMTtcIiksXG5hPVwiZnVuY3Rpb24oXCIrKHR8fFwib2JqXCIpK1wiKXtcIisodD9cIlwiOlwib2JqfHwob2JqPXt9KTtcIikrXCJ2YXIgX190LF9fcD0nJ1wiKyh1P1wiLF9fZT1fLmVzY2FwZVwiOlwiXCIpKyhpP1wiLF9faj1BcnJheS5wcm90b3R5cGUuam9pbjtmdW5jdGlvbiBwcmludCgpe19fcCs9X19qLmNhbGwoYXJndW1lbnRzLCcnKX1cIjpcIjtcIikrYStcInJldHVybiBfX3B9XCIsdD0kZihmdW5jdGlvbigpe3JldHVybiBIdShvLGwrXCJyZXR1cm4gXCIrYSkuYXBwbHkoVCxmKX0pLHQuc291cmNlPWEsaHUodCkpdGhyb3cgdDtyZXR1cm4gdH0sQW4udGltZXM9ZnVuY3Rpb24obix0KXtpZihuPUF1KG4pLDE+bnx8OTAwNzE5OTI1NDc0MDk5MTxuKXJldHVybltdO3ZhciByPTQyOTQ5NjcyOTUsZT1VaShuLDQyOTQ5NjcyOTUpO2Zvcih0PXllKHQpLG4tPTQyOTQ5NjcyOTUsZT1BKGUsdCk7KytyPG47KXQocik7cmV0dXJuIGV9LEFuLnRvRmluaXRlPW11LEFuLnRvSW50ZWdlcj1BdSxBbi50b0xlbmd0aD1FdSxBbi50b0xvd2VyPWZ1bmN0aW9uKG4pe1xucmV0dXJuIE91KG4pLnRvTG93ZXJDYXNlKCl9LEFuLnRvTnVtYmVyPWt1LEFuLnRvU2FmZUludGVnZXI9ZnVuY3Rpb24obil7cmV0dXJuIG4/cHQoQXUobiksLTkwMDcxOTkyNTQ3NDA5OTEsOTAwNzE5OTI1NDc0MDk5MSk6MD09PW4/bjowfSxBbi50b1N0cmluZz1PdSxBbi50b1VwcGVyPWZ1bmN0aW9uKG4pe3JldHVybiBPdShuKS50b1VwcGVyQ2FzZSgpfSxBbi50cmltPWZ1bmN0aW9uKG4sdCxyKXtyZXR1cm4obj1PdShuKSkmJihyfHx0PT09VCk/bi5yZXBsYWNlKHVuLFwiXCIpOm4mJih0PXlyKHQpKT8obj1NKG4pLHI9TSh0KSx0PUkobixyKSxyPVIobixyKSsxLE9yKG4sdCxyKS5qb2luKFwiXCIpKTpufSxBbi50cmltRW5kPWZ1bmN0aW9uKG4sdCxyKXtyZXR1cm4obj1PdShuKSkmJihyfHx0PT09VCk/bi5yZXBsYWNlKGZuLFwiXCIpOm4mJih0PXlyKHQpKT8obj1NKG4pLHQ9UihuLE0odCkpKzEsT3IobiwwLHQpLmpvaW4oXCJcIikpOm59LEFuLnRyaW1TdGFydD1mdW5jdGlvbihuLHQscil7XG5yZXR1cm4obj1PdShuKSkmJihyfHx0PT09VCk/bi5yZXBsYWNlKG9uLFwiXCIpOm4mJih0PXlyKHQpKT8obj1NKG4pLHQ9SShuLE0odCkpLE9yKG4sdCkuam9pbihcIlwiKSk6bn0sQW4udHJ1bmNhdGU9ZnVuY3Rpb24obix0KXt2YXIgcj0zMCxlPVwiLi4uXCI7aWYoZ3UodCkpdmFyIHU9XCJzZXBhcmF0b3JcImluIHQ/dC5zZXBhcmF0b3I6dSxyPVwibGVuZ3RoXCJpbiB0P0F1KHQubGVuZ3RoKTpyLGU9XCJvbWlzc2lvblwiaW4gdD95cih0Lm9taXNzaW9uKTplO249T3Uobik7dmFyIGk9bi5sZW5ndGg7aWYoUm4udGVzdChuKSl2YXIgbz1NKG4pLGk9by5sZW5ndGg7aWYocj49aSlyZXR1cm4gbjtpZihpPXItRChlKSwxPmkpcmV0dXJuIGU7aWYocj1vP09yKG8sMCxpKS5qb2luKFwiXCIpOm4uc2xpY2UoMCxpKSx1PT09VClyZXR1cm4gcitlO2lmKG8mJihpKz1yLmxlbmd0aC1pKSxzZih1KSl7aWYobi5zbGljZShpKS5zZWFyY2godSkpe3ZhciBmPXI7Zm9yKHUuZ2xvYmFsfHwodT1RdSh1LnNvdXJjZSxPdShfbi5leGVjKHUpKStcImdcIikpLFxudS5sYXN0SW5kZXg9MDtvPXUuZXhlYyhmKTspdmFyIGM9by5pbmRleDtyPXIuc2xpY2UoMCxjPT09VD9pOmMpfX1lbHNlIG4uaW5kZXhPZih5cih1KSxpKSE9aSYmKHU9ci5sYXN0SW5kZXhPZih1KSwtMTx1JiYocj1yLnNsaWNlKDAsdSkpKTtyZXR1cm4gcitlfSxBbi51bmVzY2FwZT1mdW5jdGlvbihuKXtyZXR1cm4obj1PdShuKSkmJkcudGVzdChuKT9uLnJlcGxhY2UoVix0dCk6bn0sQW4udW5pcXVlSWQ9ZnVuY3Rpb24obil7dmFyIHQ9KytvaTtyZXR1cm4gT3UobikrdH0sQW4udXBwZXJDYXNlPU1mLEFuLnVwcGVyRmlyc3Q9VGYsQW4uZWFjaD1YZSxBbi5lYWNoUmlnaHQ9bnUsQW4uZmlyc3Q9WmUsRnUoQW4sZnVuY3Rpb24oKXt2YXIgbj17fTtyZXR1cm4gbXQoQW4sZnVuY3Rpb24odCxyKXtpaS5jYWxsKEFuLnByb3RvdHlwZSxyKXx8KG5bcl09dCl9KSxufSgpLHtjaGFpbjpmYWxzZX0pLEFuLlZFUlNJT049XCI0LjE3LjEwXCIscihcImJpbmQgYmluZEtleSBjdXJyeSBjdXJyeVJpZ2h0IHBhcnRpYWwgcGFydGlhbFJpZ2h0XCIuc3BsaXQoXCIgXCIpLGZ1bmN0aW9uKG4pe1xuQW5bbl0ucGxhY2Vob2xkZXI9QW59KSxyKFtcImRyb3BcIixcInRha2VcIl0sZnVuY3Rpb24obix0KXtVbi5wcm90b3R5cGVbbl09ZnVuY3Rpb24ocil7cj1yPT09VD8xOkxpKEF1KHIpLDApO3ZhciBlPXRoaXMuX19maWx0ZXJlZF9fJiYhdD9uZXcgVW4odGhpcyk6dGhpcy5jbG9uZSgpO3JldHVybiBlLl9fZmlsdGVyZWRfXz9lLl9fdGFrZUNvdW50X189VWkocixlLl9fdGFrZUNvdW50X18pOmUuX192aWV3c19fLnB1c2goe3NpemU6VWkociw0Mjk0OTY3Mjk1KSx0eXBlOm4rKDA+ZS5fX2Rpcl9fP1wiUmlnaHRcIjpcIlwiKX0pLGV9LFVuLnByb3RvdHlwZVtuK1wiUmlnaHRcIl09ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucmV2ZXJzZSgpW25dKHQpLnJldmVyc2UoKX19KSxyKFtcImZpbHRlclwiLFwibWFwXCIsXCJ0YWtlV2hpbGVcIl0sZnVuY3Rpb24obix0KXt2YXIgcj10KzEsZT0xPT1yfHwzPT1yO1VuLnByb3RvdHlwZVtuXT1mdW5jdGlvbihuKXt2YXIgdD10aGlzLmNsb25lKCk7cmV0dXJuIHQuX19pdGVyYXRlZXNfXy5wdXNoKHtcbml0ZXJhdGVlOnllKG4sMyksdHlwZTpyfSksdC5fX2ZpbHRlcmVkX189dC5fX2ZpbHRlcmVkX198fGUsdH19KSxyKFtcImhlYWRcIixcImxhc3RcIl0sZnVuY3Rpb24obix0KXt2YXIgcj1cInRha2VcIisodD9cIlJpZ2h0XCI6XCJcIik7VW4ucHJvdG90eXBlW25dPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXNbcl0oMSkudmFsdWUoKVswXX19KSxyKFtcImluaXRpYWxcIixcInRhaWxcIl0sZnVuY3Rpb24obix0KXt2YXIgcj1cImRyb3BcIisodD9cIlwiOlwiUmlnaHRcIik7VW4ucHJvdG90eXBlW25dPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX19maWx0ZXJlZF9fP25ldyBVbih0aGlzKTp0aGlzW3JdKDEpfX0pLFVuLnByb3RvdHlwZS5jb21wYWN0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmlsdGVyKFR1KX0sVW4ucHJvdG90eXBlLmZpbmQ9ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMuZmlsdGVyKG4pLmhlYWQoKX0sVW4ucHJvdG90eXBlLmZpbmRMYXN0PWZ1bmN0aW9uKG4pe3JldHVybiB0aGlzLnJldmVyc2UoKS5maW5kKG4pO1xufSxVbi5wcm90b3R5cGUuaW52b2tlTWFwPWZyKGZ1bmN0aW9uKG4sdCl7cmV0dXJuIHR5cGVvZiBuPT1cImZ1bmN0aW9uXCI/bmV3IFVuKHRoaXMpOnRoaXMubWFwKGZ1bmN0aW9uKHIpe3JldHVybiBMdChyLG4sdCl9KX0pLFVuLnByb3RvdHlwZS5yZWplY3Q9ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMuZmlsdGVyKGN1KHllKG4pKSl9LFVuLnByb3RvdHlwZS5zbGljZT1mdW5jdGlvbihuLHQpe249QXUobik7dmFyIHI9dGhpcztyZXR1cm4gci5fX2ZpbHRlcmVkX18mJigwPG58fDA+dCk/bmV3IFVuKHIpOigwPm4/cj1yLnRha2VSaWdodCgtbik6biYmKHI9ci5kcm9wKG4pKSx0IT09VCYmKHQ9QXUodCkscj0wPnQ/ci5kcm9wUmlnaHQoLXQpOnIudGFrZSh0LW4pKSxyKX0sVW4ucHJvdG90eXBlLnRha2VSaWdodFdoaWxlPWZ1bmN0aW9uKG4pe3JldHVybiB0aGlzLnJldmVyc2UoKS50YWtlV2hpbGUobikucmV2ZXJzZSgpfSxVbi5wcm90b3R5cGUudG9BcnJheT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRha2UoNDI5NDk2NzI5NSk7XG59LG10KFVuLnByb3RvdHlwZSxmdW5jdGlvbihuLHQpe3ZhciByPS9eKD86ZmlsdGVyfGZpbmR8bWFwfHJlamVjdCl8V2hpbGUkLy50ZXN0KHQpLGU9L14oPzpoZWFkfGxhc3QpJC8udGVzdCh0KSx1PUFuW2U/XCJ0YWtlXCIrKFwibGFzdFwiPT10P1wiUmlnaHRcIjpcIlwiKTp0XSxpPWV8fC9eZmluZC8udGVzdCh0KTt1JiYoQW4ucHJvdG90eXBlW3RdPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChuKXtyZXR1cm4gbj11LmFwcGx5KEFuLGEoW25dLGYpKSxlJiZoP25bMF06bn12YXIgbz10aGlzLl9fd3JhcHBlZF9fLGY9ZT9bMV06YXJndW1lbnRzLGM9byBpbnN0YW5jZW9mIFVuLGw9ZlswXSxzPWN8fG9mKG8pO3MmJnImJnR5cGVvZiBsPT1cImZ1bmN0aW9uXCImJjEhPWwubGVuZ3RoJiYoYz1zPWZhbHNlKTt2YXIgaD10aGlzLl9fY2hhaW5fXyxwPSEhdGhpcy5fX2FjdGlvbnNfXy5sZW5ndGgsbD1pJiYhaCxjPWMmJiFwO3JldHVybiFpJiZzPyhvPWM/bzpuZXcgVW4odGhpcyksbz1uLmFwcGx5KG8sZiksby5fX2FjdGlvbnNfXy5wdXNoKHtcbmZ1bmM6WWUsYXJnczpbdF0sdGhpc0FyZzpUfSksbmV3IE9uKG8saCkpOmwmJmM/bi5hcHBseSh0aGlzLGYpOihvPXRoaXMudGhydSh0KSxsP2U/by52YWx1ZSgpWzBdOm8udmFsdWUoKTpvKX0pfSkscihcInBvcCBwdXNoIHNoaWZ0IHNvcnQgc3BsaWNlIHVuc2hpZnRcIi5zcGxpdChcIiBcIiksZnVuY3Rpb24obil7dmFyIHQ9dGlbbl0scj0vXig/OnB1c2h8c29ydHx1bnNoaWZ0KSQvLnRlc3Qobik/XCJ0YXBcIjpcInRocnVcIixlPS9eKD86cG9wfHNoaWZ0KSQvLnRlc3Qobik7QW4ucHJvdG90eXBlW25dPWZ1bmN0aW9uKCl7dmFyIG49YXJndW1lbnRzO2lmKGUmJiF0aGlzLl9fY2hhaW5fXyl7dmFyIHU9dGhpcy52YWx1ZSgpO3JldHVybiB0LmFwcGx5KG9mKHUpP3U6W10sbil9cmV0dXJuIHRoaXNbcl0oZnVuY3Rpb24ocil7cmV0dXJuIHQuYXBwbHkob2Yocik/cjpbXSxuKX0pfX0pLG10KFVuLnByb3RvdHlwZSxmdW5jdGlvbihuLHQpe3ZhciByPUFuW3RdO2lmKHIpe3ZhciBlPXIubmFtZStcIlwiO1xuKEtpW2VdfHwoS2lbZV09W10pKS5wdXNoKHtuYW1lOnQsZnVuYzpyfSl9fSksS2lbSnIoVCwyKS5uYW1lXT1be25hbWU6XCJ3cmFwcGVyXCIsZnVuYzpUfV0sVW4ucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKCl7dmFyIG49bmV3IFVuKHRoaXMuX193cmFwcGVkX18pO3JldHVybiBuLl9fYWN0aW9uc19fPVVyKHRoaXMuX19hY3Rpb25zX18pLG4uX19kaXJfXz10aGlzLl9fZGlyX18sbi5fX2ZpbHRlcmVkX189dGhpcy5fX2ZpbHRlcmVkX18sbi5fX2l0ZXJhdGVlc19fPVVyKHRoaXMuX19pdGVyYXRlZXNfXyksbi5fX3Rha2VDb3VudF9fPXRoaXMuX190YWtlQ291bnRfXyxuLl9fdmlld3NfXz1Vcih0aGlzLl9fdmlld3NfXyksbn0sVW4ucHJvdG90eXBlLnJldmVyc2U9ZnVuY3Rpb24oKXtpZih0aGlzLl9fZmlsdGVyZWRfXyl7dmFyIG49bmV3IFVuKHRoaXMpO24uX19kaXJfXz0tMSxuLl9fZmlsdGVyZWRfXz10cnVlfWVsc2Ugbj10aGlzLmNsb25lKCksbi5fX2Rpcl9fKj0tMTtyZXR1cm4gbjtcbn0sVW4ucHJvdG90eXBlLnZhbHVlPWZ1bmN0aW9uKCl7dmFyIG4sdD10aGlzLl9fd3JhcHBlZF9fLnZhbHVlKCkscj10aGlzLl9fZGlyX18sZT1vZih0KSx1PTA+cixpPWU/dC5sZW5ndGg6MDtuPWk7Zm9yKHZhciBvPXRoaXMuX192aWV3c19fLGY9MCxjPS0xLGE9by5sZW5ndGg7KytjPGE7KXt2YXIgbD1vW2NdLHM9bC5zaXplO3N3aXRjaChsLnR5cGUpe2Nhc2VcImRyb3BcIjpmKz1zO2JyZWFrO2Nhc2VcImRyb3BSaWdodFwiOm4tPXM7YnJlYWs7Y2FzZVwidGFrZVwiOm49VWkobixmK3MpO2JyZWFrO2Nhc2VcInRha2VSaWdodFwiOmY9TGkoZixuLXMpfX1pZihuPXtzdGFydDpmLGVuZDpufSxvPW4uc3RhcnQsZj1uLmVuZCxuPWYtbyxvPXU/ZjpvLTEsZj10aGlzLl9faXRlcmF0ZWVzX18sYz1mLmxlbmd0aCxhPTAsbD1VaShuLHRoaXMuX190YWtlQ291bnRfXyksIWV8fCF1JiZpPT1uJiZsPT1uKXJldHVybiB3cih0LHRoaXMuX19hY3Rpb25zX18pO2U9W107bjpmb3IoO24tLSYmYTxsOyl7Zm9yKG8rPXIsXG51PS0xLGk9dFtvXTsrK3U8Yzspe3ZhciBoPWZbdV0scz1oLnR5cGUsaD0oMCxoLml0ZXJhdGVlKShpKTtpZigyPT1zKWk9aDtlbHNlIGlmKCFoKXtpZigxPT1zKWNvbnRpbnVlIG47YnJlYWsgbn19ZVthKytdPWl9cmV0dXJuIGV9LEFuLnByb3RvdHlwZS5hdD1NbyxBbi5wcm90b3R5cGUuY2hhaW49ZnVuY3Rpb24oKXtyZXR1cm4gSmUodGhpcyl9LEFuLnByb3RvdHlwZS5jb21taXQ9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IE9uKHRoaXMudmFsdWUoKSx0aGlzLl9fY2hhaW5fXyl9LEFuLnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKCl7dGhpcy5fX3ZhbHVlc19fPT09VCYmKHRoaXMuX192YWx1ZXNfXz13dSh0aGlzLnZhbHVlKCkpKTt2YXIgbj10aGlzLl9faW5kZXhfXz49dGhpcy5fX3ZhbHVlc19fLmxlbmd0aDtyZXR1cm57ZG9uZTpuLHZhbHVlOm4/VDp0aGlzLl9fdmFsdWVzX19bdGhpcy5fX2luZGV4X18rK119fSxBbi5wcm90b3R5cGUucGxhbnQ9ZnVuY3Rpb24obil7Zm9yKHZhciB0LHI9dGhpcztyIGluc3RhbmNlb2YgRW47KXtcbnZhciBlPSRlKHIpO2UuX19pbmRleF9fPTAsZS5fX3ZhbHVlc19fPVQsdD91Ll9fd3JhcHBlZF9fPWU6dD1lO3ZhciB1PWUscj1yLl9fd3JhcHBlZF9ffXJldHVybiB1Ll9fd3JhcHBlZF9fPW4sdH0sQW4ucHJvdG90eXBlLnJldmVyc2U9ZnVuY3Rpb24oKXt2YXIgbj10aGlzLl9fd3JhcHBlZF9fO3JldHVybiBuIGluc3RhbmNlb2YgVW4/KHRoaXMuX19hY3Rpb25zX18ubGVuZ3RoJiYobj1uZXcgVW4odGhpcykpLG49bi5yZXZlcnNlKCksbi5fX2FjdGlvbnNfXy5wdXNoKHtmdW5jOlllLGFyZ3M6W0tlXSx0aGlzQXJnOlR9KSxuZXcgT24obix0aGlzLl9fY2hhaW5fXykpOnRoaXMudGhydShLZSl9LEFuLnByb3RvdHlwZS50b0pTT049QW4ucHJvdG90eXBlLnZhbHVlT2Y9QW4ucHJvdG90eXBlLnZhbHVlPWZ1bmN0aW9uKCl7cmV0dXJuIHdyKHRoaXMuX193cmFwcGVkX18sdGhpcy5fX2FjdGlvbnNfXyl9LEFuLnByb3RvdHlwZS5maXJzdD1Bbi5wcm90b3R5cGUuaGVhZCxqaSYmKEFuLnByb3RvdHlwZVtqaV09UWUpLFxuQW59KCk7dHlwZW9mIGRlZmluZT09XCJmdW5jdGlvblwiJiZ0eXBlb2YgZGVmaW5lLmFtZD09XCJvYmplY3RcIiYmZGVmaW5lLmFtZD8oJG4uXz1ydCwgZGVmaW5lKGZ1bmN0aW9uKCl7cmV0dXJuIHJ0fSkpOk5uPygoTm4uZXhwb3J0cz1ydCkuXz1ydCxGbi5fPXJ0KTokbi5fPXJ0fSkuY2FsbCh0aGlzKTtcbiIsIi8qXG4gQW5ndWxhckpTIHYxLjQuOVxuIChjKSAyMDEwLTIwMTUgR29vZ2xlLCBJbmMuIGh0dHA6Ly9hbmd1bGFyanMub3JnXG4gTGljZW5zZTogTUlUXG4qL1xuKGZ1bmN0aW9uKG4saCxwKXsndXNlIHN0cmljdCc7ZnVuY3Rpb24gRShhKXt2YXIgZj1bXTtyKGYsaC5ub29wKS5jaGFycyhhKTtyZXR1cm4gZi5qb2luKFwiXCIpfWZ1bmN0aW9uIGcoYSxmKXt2YXIgZD17fSxjPWEuc3BsaXQoXCIsXCIpLGI7Zm9yKGI9MDtiPGMubGVuZ3RoO2IrKylkW2Y/aC5sb3dlcmNhc2UoY1tiXSk6Y1tiXV09ITA7cmV0dXJuIGR9ZnVuY3Rpb24gRihhLGYpe2Z1bmN0aW9uIGQoYSxiLGQsbCl7Yj1oLmxvd2VyY2FzZShiKTtpZihzW2JdKWZvcig7ZS5sYXN0KCkmJnRbZS5sYXN0KCldOyljKFwiXCIsZS5sYXN0KCkpO3VbYl0mJmUubGFzdCgpPT1iJiZjKFwiXCIsYik7KGw9dltiXXx8ISFsKXx8ZS5wdXNoKGIpO3ZhciBtPXt9O2QucmVwbGFjZShHLGZ1bmN0aW9uKGIsYSxmLGMsZCl7bVthXT1xKGZ8fGN8fGR8fFwiXCIpfSk7Zi5zdGFydCYmZi5zdGFydChiLG0sbCl9ZnVuY3Rpb24gYyhiLGEpe3ZhciBjPTAsZDtpZihhPWgubG93ZXJjYXNlKGEpKWZvcihjPWUubGVuZ3RoLVxuMTswPD1jJiZlW2NdIT1hO2MtLSk7aWYoMDw9Yyl7Zm9yKGQ9ZS5sZW5ndGgtMTtkPj1jO2QtLSlmLmVuZCYmZi5lbmQoZVtkXSk7ZS5sZW5ndGg9Y319XCJzdHJpbmdcIiE9PXR5cGVvZiBhJiYoYT1udWxsPT09YXx8XCJ1bmRlZmluZWRcIj09PXR5cGVvZiBhP1wiXCI6XCJcIithKTt2YXIgYixrLGU9W10sbT1hLGw7Zm9yKGUubGFzdD1mdW5jdGlvbigpe3JldHVybiBlW2UubGVuZ3RoLTFdfTthOyl7bD1cIlwiO2s9ITA7aWYoZS5sYXN0KCkmJndbZS5sYXN0KCldKWE9YS5yZXBsYWNlKG5ldyBSZWdFeHAoXCIoW1xcXFxXXFxcXHddKik8XFxcXHMqXFxcXC9cXFxccypcIitlLmxhc3QoKStcIltePl0qPlwiLFwiaVwiKSxmdW5jdGlvbihhLGIpe2I9Yi5yZXBsYWNlKEgsXCIkMVwiKS5yZXBsYWNlKEksXCIkMVwiKTtmLmNoYXJzJiZmLmNoYXJzKHEoYikpO3JldHVyblwiXCJ9KSxjKFwiXCIsZS5sYXN0KCkpO2Vsc2V7aWYoMD09PWEuaW5kZXhPZihcIlxceDNjIS0tXCIpKWI9YS5pbmRleE9mKFwiLS1cIiw0KSwwPD1iJiZhLmxhc3RJbmRleE9mKFwiLS1cXHgzZVwiLFxuYik9PT1iJiYoZi5jb21tZW50JiZmLmNvbW1lbnQoYS5zdWJzdHJpbmcoNCxiKSksYT1hLnN1YnN0cmluZyhiKzMpLGs9ITEpO2Vsc2UgaWYoeC50ZXN0KGEpKXtpZihiPWEubWF0Y2goeCkpYT1hLnJlcGxhY2UoYlswXSxcIlwiKSxrPSExfWVsc2UgaWYoSi50ZXN0KGEpKXtpZihiPWEubWF0Y2goeSkpYT1hLnN1YnN0cmluZyhiWzBdLmxlbmd0aCksYlswXS5yZXBsYWNlKHksYyksaz0hMX1lbHNlIEsudGVzdChhKSYmKChiPWEubWF0Y2goeikpPyhiWzRdJiYoYT1hLnN1YnN0cmluZyhiWzBdLmxlbmd0aCksYlswXS5yZXBsYWNlKHosZCkpLGs9ITEpOihsKz1cIjxcIixhPWEuc3Vic3RyaW5nKDEpKSk7ayYmKGI9YS5pbmRleE9mKFwiPFwiKSxsKz0wPmI/YTphLnN1YnN0cmluZygwLGIpLGE9MD5iP1wiXCI6YS5zdWJzdHJpbmcoYiksZi5jaGFycyYmZi5jaGFycyhxKGwpKSl9aWYoYT09bSl0aHJvdyBMKFwiYmFkcGFyc2VcIixhKTttPWF9YygpfWZ1bmN0aW9uIHEoYSl7aWYoIWEpcmV0dXJuXCJcIjtBLmlubmVySFRNTD1cbmEucmVwbGFjZSgvPC9nLFwiJmx0O1wiKTtyZXR1cm4gQS50ZXh0Q29udGVudH1mdW5jdGlvbiBCKGEpe3JldHVybiBhLnJlcGxhY2UoLyYvZyxcIiZhbXA7XCIpLnJlcGxhY2UoTSxmdW5jdGlvbihhKXt2YXIgZD1hLmNoYXJDb2RlQXQoMCk7YT1hLmNoYXJDb2RlQXQoMSk7cmV0dXJuXCImI1wiKygxMDI0KihkLTU1Mjk2KSsoYS01NjMyMCkrNjU1MzYpK1wiO1wifSkucmVwbGFjZShOLGZ1bmN0aW9uKGEpe3JldHVyblwiJiNcIithLmNoYXJDb2RlQXQoMCkrXCI7XCJ9KS5yZXBsYWNlKC88L2csXCImbHQ7XCIpLnJlcGxhY2UoLz4vZyxcIiZndDtcIil9ZnVuY3Rpb24gcihhLGYpe3ZhciBkPSExLGM9aC5iaW5kKGEsYS5wdXNoKTtyZXR1cm57c3RhcnQ6ZnVuY3Rpb24oYSxrLGUpe2E9aC5sb3dlcmNhc2UoYSk7IWQmJndbYV0mJihkPWEpO2R8fCEwIT09Q1thXXx8KGMoXCI8XCIpLGMoYSksaC5mb3JFYWNoKGssZnVuY3Rpb24oZCxlKXt2YXIgaz1oLmxvd2VyY2FzZShlKSxnPVwiaW1nXCI9PT1hJiZcInNyY1wiPT09a3x8XG5cImJhY2tncm91bmRcIj09PWs7ITAhPT1PW2tdfHwhMD09PURba10mJiFmKGQsZyl8fChjKFwiIFwiKSxjKGUpLGMoJz1cIicpLGMoQihkKSksYygnXCInKSl9KSxjKGU/XCIvPlwiOlwiPlwiKSl9LGVuZDpmdW5jdGlvbihhKXthPWgubG93ZXJjYXNlKGEpO2R8fCEwIT09Q1thXXx8KGMoXCI8L1wiKSxjKGEpLGMoXCI+XCIpKTthPT1kJiYoZD0hMSl9LGNoYXJzOmZ1bmN0aW9uKGEpe2R8fGMoQihhKSl9fX12YXIgTD1oLiQkbWluRXJyKFwiJHNhbml0aXplXCIpLHo9L148KCg/OlthLXpBLVpdKVtcXHc6LV0qKSgoPzpcXHMrW1xcdzotXSsoPzpcXHMqPVxccyooPzooPzpcIlteXCJdKlwiKXwoPzonW14nXSonKXxbXj5cXHNdKykpPykqKVxccyooXFwvPylcXHMqKD4/KS8seT0vXjxcXC9cXHMqKFtcXHc6LV0rKVtePl0qPi8sRz0vKFtcXHc6LV0rKSg/Olxccyo9XFxzKig/Oig/OlwiKCg/OlteXCJdKSopXCIpfCg/OicoKD86W14nXSkqKScpfChbXj5cXHNdKykpKT8vZyxLPS9ePC8sSj0vXjxcXC8vLEg9L1xceDNjIS0tKC4qPyktLVxceDNlL2cseD0vPCFET0NUWVBFKFtePl0qPyk+L2ksXG5JPS88IVxcW0NEQVRBXFxbKC4qPyldXVxceDNlL2csTT0vW1xcdUQ4MDAtXFx1REJGRl1bXFx1REMwMC1cXHVERkZGXS9nLE49LyhbXlxcIy1+fCB8IV0pL2csdj1nKFwiYXJlYSxicixjb2wsaHIsaW1nLHdiclwiKTtuPWcoXCJjb2xncm91cCxkZCxkdCxsaSxwLHRib2R5LHRkLHRmb290LHRoLHRoZWFkLHRyXCIpO3A9ZyhcInJwLHJ0XCIpO3ZhciB1PWguZXh0ZW5kKHt9LHAsbikscz1oLmV4dGVuZCh7fSxuLGcoXCJhZGRyZXNzLGFydGljbGUsYXNpZGUsYmxvY2txdW90ZSxjYXB0aW9uLGNlbnRlcixkZWwsZGlyLGRpdixkbCxmaWd1cmUsZmlnY2FwdGlvbixmb290ZXIsaDEsaDIsaDMsaDQsaDUsaDYsaGVhZGVyLGhncm91cCxocixpbnMsbWFwLG1lbnUsbmF2LG9sLHByZSxzY3JpcHQsc2VjdGlvbix0YWJsZSx1bFwiKSksdD1oLmV4dGVuZCh7fSxwLGcoXCJhLGFiYnIsYWNyb255bSxiLGJkaSxiZG8sYmlnLGJyLGNpdGUsY29kZSxkZWwsZGZuLGVtLGZvbnQsaSxpbWcsaW5zLGtiZCxsYWJlbCxtYXAsbWFyayxxLHJ1YnkscnAscnQscyxzYW1wLHNtYWxsLHNwYW4sc3RyaWtlLHN0cm9uZyxzdWIsc3VwLHRpbWUsdHQsdSx2YXJcIikpO1xubj1nKFwiY2lyY2xlLGRlZnMsZGVzYyxlbGxpcHNlLGZvbnQtZmFjZSxmb250LWZhY2UtbmFtZSxmb250LWZhY2Utc3JjLGcsZ2x5cGgsaGtlcm4saW1hZ2UsbGluZWFyR3JhZGllbnQsbGluZSxtYXJrZXIsbWV0YWRhdGEsbWlzc2luZy1nbHlwaCxtcGF0aCxwYXRoLHBvbHlnb24scG9seWxpbmUscmFkaWFsR3JhZGllbnQscmVjdCxzdG9wLHN2Zyxzd2l0Y2gsdGV4dCx0aXRsZSx0c3Bhbix1c2VcIik7dmFyIHc9ZyhcInNjcmlwdCxzdHlsZVwiKSxDPWguZXh0ZW5kKHt9LHYscyx0LHUsbiksRD1nKFwiYmFja2dyb3VuZCxjaXRlLGhyZWYsbG9uZ2Rlc2Msc3JjLHVzZW1hcCx4bGluazpocmVmXCIpO249ZyhcImFiYnIsYWxpZ24sYWx0LGF4aXMsYmdjb2xvcixib3JkZXIsY2VsbHBhZGRpbmcsY2VsbHNwYWNpbmcsY2xhc3MsY2xlYXIsY29sb3IsY29scyxjb2xzcGFuLGNvbXBhY3QsY29vcmRzLGRpcixmYWNlLGhlYWRlcnMsaGVpZ2h0LGhyZWZsYW5nLGhzcGFjZSxpc21hcCxsYW5nLGxhbmd1YWdlLG5vaHJlZixub3dyYXAscmVsLHJldixyb3dzLHJvd3NwYW4scnVsZXMsc2NvcGUsc2Nyb2xsaW5nLHNoYXBlLHNpemUsc3BhbixzdGFydCxzdW1tYXJ5LHRhYmluZGV4LHRhcmdldCx0aXRsZSx0eXBlLHZhbGlnbix2YWx1ZSx2c3BhY2Usd2lkdGhcIik7XG5wPWcoXCJhY2NlbnQtaGVpZ2h0LGFjY3VtdWxhdGUsYWRkaXRpdmUsYWxwaGFiZXRpYyxhcmFiaWMtZm9ybSxhc2NlbnQsYmFzZVByb2ZpbGUsYmJveCxiZWdpbixieSxjYWxjTW9kZSxjYXAtaGVpZ2h0LGNsYXNzLGNvbG9yLGNvbG9yLXJlbmRlcmluZyxjb250ZW50LGN4LGN5LGQsZHgsZHksZGVzY2VudCxkaXNwbGF5LGR1cixlbmQsZmlsbCxmaWxsLXJ1bGUsZm9udC1mYW1pbHksZm9udC1zaXplLGZvbnQtc3RyZXRjaCxmb250LXN0eWxlLGZvbnQtdmFyaWFudCxmb250LXdlaWdodCxmcm9tLGZ4LGZ5LGcxLGcyLGdseXBoLW5hbWUsZ3JhZGllbnRVbml0cyxoYW5naW5nLGhlaWdodCxob3Jpei1hZHYteCxob3Jpei1vcmlnaW4teCxpZGVvZ3JhcGhpYyxrLGtleVBvaW50cyxrZXlTcGxpbmVzLGtleVRpbWVzLGxhbmcsbWFya2VyLWVuZCxtYXJrZXItbWlkLG1hcmtlci1zdGFydCxtYXJrZXJIZWlnaHQsbWFya2VyVW5pdHMsbWFya2VyV2lkdGgsbWF0aGVtYXRpY2FsLG1heCxtaW4sb2Zmc2V0LG9wYWNpdHksb3JpZW50LG9yaWdpbixvdmVybGluZS1wb3NpdGlvbixvdmVybGluZS10aGlja25lc3MscGFub3NlLTEscGF0aCxwYXRoTGVuZ3RoLHBvaW50cyxwcmVzZXJ2ZUFzcGVjdFJhdGlvLHIscmVmWCxyZWZZLHJlcGVhdENvdW50LHJlcGVhdER1cixyZXF1aXJlZEV4dGVuc2lvbnMscmVxdWlyZWRGZWF0dXJlcyxyZXN0YXJ0LHJvdGF0ZSxyeCxyeSxzbG9wZSxzdGVtaCxzdGVtdixzdG9wLWNvbG9yLHN0b3Atb3BhY2l0eSxzdHJpa2V0aHJvdWdoLXBvc2l0aW9uLHN0cmlrZXRocm91Z2gtdGhpY2tuZXNzLHN0cm9rZSxzdHJva2UtZGFzaGFycmF5LHN0cm9rZS1kYXNob2Zmc2V0LHN0cm9rZS1saW5lY2FwLHN0cm9rZS1saW5lam9pbixzdHJva2UtbWl0ZXJsaW1pdCxzdHJva2Utb3BhY2l0eSxzdHJva2Utd2lkdGgsc3lzdGVtTGFuZ3VhZ2UsdGFyZ2V0LHRleHQtYW5jaG9yLHRvLHRyYW5zZm9ybSx0eXBlLHUxLHUyLHVuZGVybGluZS1wb3NpdGlvbix1bmRlcmxpbmUtdGhpY2tuZXNzLHVuaWNvZGUsdW5pY29kZS1yYW5nZSx1bml0cy1wZXItZW0sdmFsdWVzLHZlcnNpb24sdmlld0JveCx2aXNpYmlsaXR5LHdpZHRoLHdpZHRocyx4LHgtaGVpZ2h0LHgxLHgyLHhsaW5rOmFjdHVhdGUseGxpbms6YXJjcm9sZSx4bGluazpyb2xlLHhsaW5rOnNob3cseGxpbms6dGl0bGUseGxpbms6dHlwZSx4bWw6YmFzZSx4bWw6bGFuZyx4bWw6c3BhY2UseG1sbnMseG1sbnM6eGxpbmsseSx5MSx5Mix6b29tQW5kUGFuXCIsXG4hMCk7dmFyIE89aC5leHRlbmQoe30sRCxwLG4pLEE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInByZVwiKTtoLm1vZHVsZShcIm5nU2FuaXRpemVcIixbXSkucHJvdmlkZXIoXCIkc2FuaXRpemVcIixmdW5jdGlvbigpe3RoaXMuJGdldD1bXCIkJHNhbml0aXplVXJpXCIsZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKGYpe3ZhciBkPVtdO0YoZixyKGQsZnVuY3Rpb24oYyxiKXtyZXR1cm4hL151bnNhZmUvLnRlc3QoYShjLGIpKX0pKTtyZXR1cm4gZC5qb2luKFwiXCIpfX1dfSk7aC5tb2R1bGUoXCJuZ1Nhbml0aXplXCIpLmZpbHRlcihcImxpbmt5XCIsW1wiJHNhbml0aXplXCIsZnVuY3Rpb24oYSl7dmFyIGY9LygoZnRwfGh0dHBzPyk6XFwvXFwvfCh3d3dcXC4pfChtYWlsdG86KT9bQS1aYS16MC05Ll8lKy1dK0ApXFxTKlteXFxzLjssKCl7fTw+XCJcXHUyMDFkXFx1MjAxOV0vaSxkPS9ebWFpbHRvOi9pO3JldHVybiBmdW5jdGlvbihjLGIpe2Z1bmN0aW9uIGsoYSl7YSYmZy5wdXNoKEUoYSkpfWZ1bmN0aW9uIGUoYSxcbmMpe2cucHVzaChcIjxhIFwiKTtoLmlzRGVmaW5lZChiKSYmZy5wdXNoKCd0YXJnZXQ9XCInLGIsJ1wiICcpO2cucHVzaCgnaHJlZj1cIicsYS5yZXBsYWNlKC9cIi9nLFwiJnF1b3Q7XCIpLCdcIj4nKTtrKGMpO2cucHVzaChcIjwvYT5cIil9aWYoIWMpcmV0dXJuIGM7Zm9yKHZhciBtLGw9YyxnPVtdLG4scDttPWwubWF0Y2goZik7KW49bVswXSxtWzJdfHxtWzRdfHwobj0obVszXT9cImh0dHA6Ly9cIjpcIm1haWx0bzpcIikrbikscD1tLmluZGV4LGsobC5zdWJzdHIoMCxwKSksZShuLG1bMF0ucmVwbGFjZShkLFwiXCIpKSxsPWwuc3Vic3RyaW5nKHArbVswXS5sZW5ndGgpO2sobCk7cmV0dXJuIGEoZy5qb2luKFwiXCIpKX19XSl9KSh3aW5kb3csd2luZG93LmFuZ3VsYXIpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9YW5ndWxhci1zYW5pdGl6ZS5taW4uanMubWFwXG4iLCIvKlxuIEFuZ3VsYXJKUyB2MS40LjlcbiAoYykgMjAxMC0yMDE1IEdvb2dsZSwgSW5jLiBodHRwOi8vYW5ndWxhcmpzLm9yZ1xuIExpY2Vuc2U6IE1JVFxuKi9cbihmdW5jdGlvbihKLGYsQyl7J3VzZSBzdHJpY3QnO2Z1bmN0aW9uIEQodCxlKXtlPWV8fHt9O2YuZm9yRWFjaChlLGZ1bmN0aW9uKGYsayl7ZGVsZXRlIGVba119KTtmb3IodmFyIGsgaW4gdCkhdC5oYXNPd25Qcm9wZXJ0eShrKXx8XCIkXCI9PT1rLmNoYXJBdCgwKSYmXCIkXCI9PT1rLmNoYXJBdCgxKXx8KGVba109dFtrXSk7cmV0dXJuIGV9dmFyIHk9Zi4kJG1pbkVycihcIiRyZXNvdXJjZVwiKSxCPS9eKFxcLlthLXpBLVpfJEBdWzAtOWEtekEtWl8kQF0qKSskLztmLm1vZHVsZShcIm5nUmVzb3VyY2VcIixbXCJuZ1wiXSkucHJvdmlkZXIoXCIkcmVzb3VyY2VcIixmdW5jdGlvbigpe3ZhciB0PS9eaHR0cHM/OlxcL1xcL1teXFwvXSovLGU9dGhpczt0aGlzLmRlZmF1bHRzPXtzdHJpcFRyYWlsaW5nU2xhc2hlczohMCxhY3Rpb25zOntnZXQ6e21ldGhvZDpcIkdFVFwifSxzYXZlOnttZXRob2Q6XCJQT1NUXCJ9LHF1ZXJ5OnttZXRob2Q6XCJHRVRcIixpc0FycmF5OiEwfSxyZW1vdmU6e21ldGhvZDpcIkRFTEVURVwifSxcImRlbGV0ZVwiOnttZXRob2Q6XCJERUxFVEVcIn19fTtcbnRoaXMuJGdldD1bXCIkaHR0cFwiLFwiJGxvZ1wiLFwiJHFcIixmdW5jdGlvbihrLEYsRyl7ZnVuY3Rpb24gdyhmLGcpe3RoaXMudGVtcGxhdGU9Zjt0aGlzLmRlZmF1bHRzPXIoe30sZS5kZWZhdWx0cyxnKTt0aGlzLnVybFBhcmFtcz17fX1mdW5jdGlvbiB6KGwsZyxzLGgpe2Z1bmN0aW9uIGMoYSxxKXt2YXIgYz17fTtxPXIoe30sZyxxKTt1KHEsZnVuY3Rpb24oYixxKXt4KGIpJiYoYj1iKCkpO3ZhciBtO2lmKGImJmIuY2hhckF0JiZcIkBcIj09Yi5jaGFyQXQoMCkpe209YTt2YXIgZD1iLnN1YnN0cigxKTtpZihudWxsPT1kfHxcIlwiPT09ZHx8XCJoYXNPd25Qcm9wZXJ0eVwiPT09ZHx8IUIudGVzdChcIi5cIitkKSl0aHJvdyB5KFwiYmFkbWVtYmVyXCIsZCk7Zm9yKHZhciBkPWQuc3BsaXQoXCIuXCIpLG49MCxnPWQubGVuZ3RoO248ZyYmZi5pc0RlZmluZWQobSk7bisrKXt2YXIgZT1kW25dO209bnVsbCE9PW0/bVtlXTpDfX1lbHNlIG09YjtjW3FdPW19KTtyZXR1cm4gY31mdW5jdGlvbiBIKGEpe3JldHVybiBhLnJlc291cmNlfVxuZnVuY3Rpb24gZChhKXtEKGF8fHt9LHRoaXMpfXZhciB0PW5ldyB3KGwsaCk7cz1yKHt9LGUuZGVmYXVsdHMuYWN0aW9ucyxzKTtkLnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oKXt2YXIgYT1yKHt9LHRoaXMpO2RlbGV0ZSBhLiRwcm9taXNlO2RlbGV0ZSBhLiRyZXNvbHZlZDtyZXR1cm4gYX07dShzLGZ1bmN0aW9uKGEscSl7dmFyIGc9L14oUE9TVHxQVVR8UEFUQ0gpJC9pLnRlc3QoYS5tZXRob2QpO2RbcV09ZnVuY3Rpb24oYixBLG0sZSl7dmFyIG49e30saCxsLHM7c3dpdGNoKGFyZ3VtZW50cy5sZW5ndGgpe2Nhc2UgNDpzPWUsbD1tO2Nhc2UgMzpjYXNlIDI6aWYoeChBKSl7aWYoeChiKSl7bD1iO3M9QTticmVha31sPUE7cz1tfWVsc2V7bj1iO2g9QTtsPW07YnJlYWt9Y2FzZSAxOngoYik/bD1iOmc/aD1iOm49YjticmVhaztjYXNlIDA6YnJlYWs7ZGVmYXVsdDp0aHJvdyB5KFwiYmFkYXJnc1wiLGFyZ3VtZW50cy5sZW5ndGgpO312YXIgdz10aGlzIGluc3RhbmNlb2YgZCxwPXc/XG5oOmEuaXNBcnJheT9bXTpuZXcgZChoKSx2PXt9LHo9YS5pbnRlcmNlcHRvciYmYS5pbnRlcmNlcHRvci5yZXNwb25zZXx8SCxCPWEuaW50ZXJjZXB0b3ImJmEuaW50ZXJjZXB0b3IucmVzcG9uc2VFcnJvcnx8Qzt1KGEsZnVuY3Rpb24oYSxiKXtzd2l0Y2goYil7ZGVmYXVsdDp2W2JdPUkoYSk7YnJlYWs7Y2FzZSBcInBhcmFtc1wiOmNhc2UgXCJpc0FycmF5XCI6Y2FzZSBcImludGVyY2VwdG9yXCI6YnJlYWs7Y2FzZSBcInRpbWVvdXRcIjphJiYhZi5pc051bWJlcihhKSYmRi5kZWJ1ZyhcIm5nUmVzb3VyY2U6XFxuICBPbmx5IG51bWVyaWMgdmFsdWVzIGFyZSBhbGxvd2VkIGFzIGB0aW1lb3V0YC5cXG4gIFByb21pc2VzIGFyZSBub3Qgc3VwcG9ydGVkIGluICRyZXNvdXJjZSwgYmVjYXVzZSB0aGUgc2FtZSB2YWx1ZSB3b3VsZCBiZSB1c2VkIGZvciBtdWx0aXBsZSByZXF1ZXN0cy5cXG4gIElmIHlvdSBuZWVkIHN1cHBvcnQgZm9yIGNhbmNlbGxhYmxlICRyZXNvdXJjZSBhY3Rpb25zLCB5b3Ugc2hvdWxkIHVwZ3JhZGUgdG8gdmVyc2lvbiAxLjUgb3IgaGlnaGVyLlwiKX19KTtcbmcmJih2LmRhdGE9aCk7dC5zZXRVcmxQYXJhbXModixyKHt9LGMoaCxhLnBhcmFtc3x8e30pLG4pLGEudXJsKTtuPWsodikudGhlbihmdW5jdGlvbihiKXt2YXIgYz1iLmRhdGEsbT1wLiRwcm9taXNlO2lmKGMpe2lmKGYuaXNBcnJheShjKSE9PSEhYS5pc0FycmF5KXRocm93IHkoXCJiYWRjZmdcIixxLGEuaXNBcnJheT9cImFycmF5XCI6XCJvYmplY3RcIixmLmlzQXJyYXkoYyk/XCJhcnJheVwiOlwib2JqZWN0XCIsdi5tZXRob2Qsdi51cmwpO2EuaXNBcnJheT8ocC5sZW5ndGg9MCx1KGMsZnVuY3Rpb24oYil7XCJvYmplY3RcIj09PXR5cGVvZiBiP3AucHVzaChuZXcgZChiKSk6cC5wdXNoKGIpfSkpOihEKGMscCkscC4kcHJvbWlzZT1tKX1wLiRyZXNvbHZlZD0hMDtiLnJlc291cmNlPXA7cmV0dXJuIGJ9LGZ1bmN0aW9uKGIpe3AuJHJlc29sdmVkPSEwOyhzfHxFKShiKTtyZXR1cm4gRy5yZWplY3QoYil9KTtuPW4udGhlbihmdW5jdGlvbihiKXt2YXIgYT16KGIpOyhsfHxFKShhLGIuaGVhZGVycyk7cmV0dXJuIGF9LFxuQik7cmV0dXJuIHc/bjoocC4kcHJvbWlzZT1uLHAuJHJlc29sdmVkPSExLHApfTtkLnByb3RvdHlwZVtcIiRcIitxXT1mdW5jdGlvbihiLGEsYyl7eChiKSYmKGM9YSxhPWIsYj17fSk7Yj1kW3FdLmNhbGwodGhpcyxiLHRoaXMsYSxjKTtyZXR1cm4gYi4kcHJvbWlzZXx8Yn19KTtkLmJpbmQ9ZnVuY3Rpb24oYSl7cmV0dXJuIHoobCxyKHt9LGcsYSkscyl9O3JldHVybiBkfXZhciBFPWYubm9vcCx1PWYuZm9yRWFjaCxyPWYuZXh0ZW5kLEk9Zi5jb3B5LHg9Zi5pc0Z1bmN0aW9uO3cucHJvdG90eXBlPXtzZXRVcmxQYXJhbXM6ZnVuY3Rpb24obCxnLGUpe3ZhciBoPXRoaXMsYz1lfHxoLnRlbXBsYXRlLGssZCxyPVwiXCIsYT1oLnVybFBhcmFtcz17fTt1KGMuc3BsaXQoL1xcVy8pLGZ1bmN0aW9uKGQpe2lmKFwiaGFzT3duUHJvcGVydHlcIj09PWQpdGhyb3cgeShcImJhZG5hbWVcIik7IS9eXFxkKyQvLnRlc3QoZCkmJmQmJihuZXcgUmVnRXhwKFwiKF58W15cXFxcXFxcXF0pOlwiK2QrXCIoXFxcXFd8JClcIikpLnRlc3QoYykmJlxuKGFbZF09ITApfSk7Yz1jLnJlcGxhY2UoL1xcXFw6L2csXCI6XCIpO2M9Yy5yZXBsYWNlKHQsZnVuY3Rpb24oYSl7cj1hO3JldHVyblwiXCJ9KTtnPWd8fHt9O3UoaC51cmxQYXJhbXMsZnVuY3Rpb24oYSxlKXtrPWcuaGFzT3duUHJvcGVydHkoZSk/Z1tlXTpoLmRlZmF1bHRzW2VdO2YuaXNEZWZpbmVkKGspJiZudWxsIT09az8oZD1lbmNvZGVVUklDb21wb25lbnQoaykucmVwbGFjZSgvJTQwL2dpLFwiQFwiKS5yZXBsYWNlKC8lM0EvZ2ksXCI6XCIpLnJlcGxhY2UoLyUyNC9nLFwiJFwiKS5yZXBsYWNlKC8lMkMvZ2ksXCIsXCIpLnJlcGxhY2UoLyUyMC9nLFwiJTIwXCIpLnJlcGxhY2UoLyUyNi9naSxcIiZcIikucmVwbGFjZSgvJTNEL2dpLFwiPVwiKS5yZXBsYWNlKC8lMkIvZ2ksXCIrXCIpLGM9Yy5yZXBsYWNlKG5ldyBSZWdFeHAoXCI6XCIrZStcIihcXFxcV3wkKVwiLFwiZ1wiKSxmdW5jdGlvbihiLGEpe3JldHVybiBkK2F9KSk6Yz1jLnJlcGxhY2UobmV3IFJlZ0V4cChcIigvPyk6XCIrZStcIihcXFxcV3wkKVwiLFwiZ1wiKSxmdW5jdGlvbihiLFxuYSxjKXtyZXR1cm5cIi9cIj09Yy5jaGFyQXQoMCk/YzphK2N9KX0pO2guZGVmYXVsdHMuc3RyaXBUcmFpbGluZ1NsYXNoZXMmJihjPWMucmVwbGFjZSgvXFwvKyQvLFwiXCIpfHxcIi9cIik7Yz1jLnJlcGxhY2UoL1xcL1xcLig/PVxcdysoJHxcXD8pKS8sXCIuXCIpO2wudXJsPXIrYy5yZXBsYWNlKC9cXC9cXFxcXFwuLyxcIi8uXCIpO3UoZyxmdW5jdGlvbihhLGMpe2gudXJsUGFyYW1zW2NdfHwobC5wYXJhbXM9bC5wYXJhbXN8fHt9LGwucGFyYW1zW2NdPWEpfSl9fTtyZXR1cm4gen1dfSl9KSh3aW5kb3csd2luZG93LmFuZ3VsYXIpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9YW5ndWxhci1yZXNvdXJjZS5taW4uanMubWFwXG4iLCIvKlxuIEFuZ3VsYXJKUyB2MS40LjlcbiAoYykgMjAxMC0yMDE1IEdvb2dsZSwgSW5jLiBodHRwOi8vYW5ndWxhcmpzLm9yZ1xuIExpY2Vuc2U6IE1JVFxuKi9cbihmdW5jdGlvbihwLGMsbil7J3VzZSBzdHJpY3QnO2Z1bmN0aW9uIGwoYixhLGcpe3ZhciBkPWcuYmFzZUhyZWYoKSxrPWJbMF07cmV0dXJuIGZ1bmN0aW9uKGIsZSxmKXt2YXIgZyxoO2Y9Znx8e307aD1mLmV4cGlyZXM7Zz1jLmlzRGVmaW5lZChmLnBhdGgpP2YucGF0aDpkO2MuaXNVbmRlZmluZWQoZSkmJihoPVwiVGh1LCAwMSBKYW4gMTk3MCAwMDowMDowMCBHTVRcIixlPVwiXCIpO2MuaXNTdHJpbmcoaCkmJihoPW5ldyBEYXRlKGgpKTtlPWVuY29kZVVSSUNvbXBvbmVudChiKStcIj1cIitlbmNvZGVVUklDb21wb25lbnQoZSk7ZT1lKyhnP1wiO3BhdGg9XCIrZzpcIlwiKSsoZi5kb21haW4/XCI7ZG9tYWluPVwiK2YuZG9tYWluOlwiXCIpO2UrPWg/XCI7ZXhwaXJlcz1cIitoLnRvVVRDU3RyaW5nKCk6XCJcIjtlKz1mLnNlY3VyZT9cIjtzZWN1cmVcIjpcIlwiO2Y9ZS5sZW5ndGgrMTs0MDk2PGYmJmEud2FybihcIkNvb2tpZSAnXCIrYitcIicgcG9zc2libHkgbm90IHNldCBvciBvdmVyZmxvd2VkIGJlY2F1c2UgaXQgd2FzIHRvbyBsYXJnZSAoXCIrXG5mK1wiID4gNDA5NiBieXRlcykhXCIpO2suY29va2llPWV9fWMubW9kdWxlKFwibmdDb29raWVzXCIsW1wibmdcIl0pLnByb3ZpZGVyKFwiJGNvb2tpZXNcIixbZnVuY3Rpb24oKXt2YXIgYj10aGlzLmRlZmF1bHRzPXt9O3RoaXMuJGdldD1bXCIkJGNvb2tpZVJlYWRlclwiLFwiJCRjb29raWVXcml0ZXJcIixmdW5jdGlvbihhLGcpe3JldHVybntnZXQ6ZnVuY3Rpb24oZCl7cmV0dXJuIGEoKVtkXX0sZ2V0T2JqZWN0OmZ1bmN0aW9uKGQpe3JldHVybihkPXRoaXMuZ2V0KGQpKT9jLmZyb21Kc29uKGQpOmR9LGdldEFsbDpmdW5jdGlvbigpe3JldHVybiBhKCl9LHB1dDpmdW5jdGlvbihkLGEsbSl7ZyhkLGEsbT9jLmV4dGVuZCh7fSxiLG0pOmIpfSxwdXRPYmplY3Q6ZnVuY3Rpb24oZCxiLGEpe3RoaXMucHV0KGQsYy50b0pzb24oYiksYSl9LHJlbW92ZTpmdW5jdGlvbihhLGspe2coYSxuLGs/Yy5leHRlbmQoe30sYixrKTpiKX19fV19XSk7Yy5tb2R1bGUoXCJuZ0Nvb2tpZXNcIikuZmFjdG9yeShcIiRjb29raWVTdG9yZVwiLFxuW1wiJGNvb2tpZXNcIixmdW5jdGlvbihiKXtyZXR1cm57Z2V0OmZ1bmN0aW9uKGEpe3JldHVybiBiLmdldE9iamVjdChhKX0scHV0OmZ1bmN0aW9uKGEsYyl7Yi5wdXRPYmplY3QoYSxjKX0scmVtb3ZlOmZ1bmN0aW9uKGEpe2IucmVtb3ZlKGEpfX19XSk7bC4kaW5qZWN0PVtcIiRkb2N1bWVudFwiLFwiJGxvZ1wiLFwiJGJyb3dzZXJcIl07Yy5tb2R1bGUoXCJuZ0Nvb2tpZXNcIikucHJvdmlkZXIoXCIkJGNvb2tpZVdyaXRlclwiLGZ1bmN0aW9uKCl7dGhpcy4kZ2V0PWx9KX0pKHdpbmRvdyx3aW5kb3cuYW5ndWxhcik7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1hbmd1bGFyLWNvb2tpZXMubWluLmpzLm1hcFxuIiwidHdDbGlja091dHNpZGUuJGluamVjdCA9IFsnJHdpbmRvdycsICckcGFyc2UnXVxyXG5mdW5jdGlvbiB0d0NsaWNrT3V0c2lkZSAoJHdpbmRvdywgJHBhcnNlKSB7XHJcbiAgcmV0dXJuIHtcclxuICAgIGxpbms6IGZ1bmN0aW9uKHNjb3BlLCBlbCwgYXR0cikge1xyXG4gICAgICBpZiAoIWF0dHIudHdDbGlja091dHNpZGUpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHZhciBpZ25vcmU7XHJcbiAgICAgIGlmIChhdHRyLmlnbm9yZUlmKSB7XHJcbiAgICAgICAgaWdub3JlID0gJHBhcnNlKGF0dHIuaWdub3JlSWYpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB2YXIgbmFrZWRFbCA9IGVsWzBdO1xyXG4gICAgICB2YXIgZm4gPSAkcGFyc2UoYXR0ci50d0NsaWNrT3V0c2lkZSk7XHJcblxyXG4gICAgICB2YXIgaGFuZGxlciA9IGZ1bmN0aW9uKGUpIHtcclxuICAgICAgICBpZiAobmFrZWRFbCA9PT0gZS50YXJnZXQgfHwgbmFrZWRFbC5jb250YWlucyhlLnRhcmdldCkgfHwgKGlnbm9yZSAmJiBpZ25vcmUoc2NvcGUpKSkge1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc2NvcGUuJGFwcGx5KGZuKTtcclxuICAgICAgfTtcclxuXHJcbiAgICAgICR3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBoYW5kbGVyLCB0cnVlKTtcclxuXHJcbiAgICAgIHNjb3BlLiRvbignJGRlc3Ryb3knLCBmdW5jdGlvbihlKSB7XHJcbiAgICAgICAgJHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZXIpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9O1xyXG59XHJcblxyXG5hbmd1bGFyLm1vZHVsZSgndHcuZGlyZWN0aXZlcy5jbGlja091dHNpZGUnLCBbXSkuZGlyZWN0aXZlKCd0d0NsaWNrT3V0c2lkZScsIHR3Q2xpY2tPdXRzaWRlKTtcclxuIiwiLyogbmctaW5maW5pdGUtc2Nyb2xsIC0gdjEuMy4wIC0gMjAxNi0wNi0zMCAqL1xuYW5ndWxhci5tb2R1bGUoJ2luZmluaXRlLXNjcm9sbCcsIFtdKS52YWx1ZSgnVEhST1RUTEVfTUlMTElTRUNPTkRTJywgbnVsbCkuZGlyZWN0aXZlKCdpbmZpbml0ZVNjcm9sbCcsIFtcbiAgJyRyb290U2NvcGUnLCAnJHdpbmRvdycsICckaW50ZXJ2YWwnLCAnVEhST1RUTEVfTUlMTElTRUNPTkRTJywgZnVuY3Rpb24oJHJvb3RTY29wZSwgJHdpbmRvdywgJGludGVydmFsLCBUSFJPVFRMRV9NSUxMSVNFQ09ORFMpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2NvcGU6IHtcbiAgICAgICAgaW5maW5pdGVTY3JvbGw6ICcmJyxcbiAgICAgICAgaW5maW5pdGVTY3JvbGxDb250YWluZXI6ICc9JyxcbiAgICAgICAgaW5maW5pdGVTY3JvbGxEaXN0YW5jZTogJz0nLFxuICAgICAgICBpbmZpbml0ZVNjcm9sbERpc2FibGVkOiAnPScsXG4gICAgICAgIGluZmluaXRlU2Nyb2xsVXNlRG9jdW1lbnRCb3R0b206ICc9JyxcbiAgICAgICAgaW5maW5pdGVTY3JvbGxMaXN0ZW5Gb3JFdmVudDogJ0AnXG4gICAgICB9LFxuICAgICAgbGluazogZnVuY3Rpb24oc2NvcGUsIGVsZW0sIGF0dHJzKSB7XG4gICAgICAgIHZhciBjaGFuZ2VDb250YWluZXIsIGNoZWNrSW50ZXJ2YWwsIGNoZWNrV2hlbkVuYWJsZWQsIGNvbnRhaW5lciwgaGFuZGxlSW5maW5pdGVTY3JvbGxDb250YWluZXIsIGhhbmRsZUluZmluaXRlU2Nyb2xsRGlzYWJsZWQsIGhhbmRsZUluZmluaXRlU2Nyb2xsRGlzdGFuY2UsIGhhbmRsZUluZmluaXRlU2Nyb2xsVXNlRG9jdW1lbnRCb3R0b20sIGhhbmRsZXIsIGhlaWdodCwgaW1tZWRpYXRlQ2hlY2ssIG9mZnNldFRvcCwgcGFnZVlPZmZzZXQsIHNjcm9sbERpc3RhbmNlLCBzY3JvbGxFbmFibGVkLCB0aHJvdHRsZSwgdW5yZWdpc3RlckV2ZW50TGlzdGVuZXIsIHVzZURvY3VtZW50Qm90dG9tLCB3aW5kb3dFbGVtZW50O1xuICAgICAgICB3aW5kb3dFbGVtZW50ID0gYW5ndWxhci5lbGVtZW50KCR3aW5kb3cpO1xuICAgICAgICBzY3JvbGxEaXN0YW5jZSA9IG51bGw7XG4gICAgICAgIHNjcm9sbEVuYWJsZWQgPSBudWxsO1xuICAgICAgICBjaGVja1doZW5FbmFibGVkID0gbnVsbDtcbiAgICAgICAgY29udGFpbmVyID0gbnVsbDtcbiAgICAgICAgaW1tZWRpYXRlQ2hlY2sgPSB0cnVlO1xuICAgICAgICB1c2VEb2N1bWVudEJvdHRvbSA9IGZhbHNlO1xuICAgICAgICB1bnJlZ2lzdGVyRXZlbnRMaXN0ZW5lciA9IG51bGw7XG4gICAgICAgIGNoZWNrSW50ZXJ2YWwgPSBmYWxzZTtcbiAgICAgICAgaGVpZ2h0ID0gZnVuY3Rpb24oZWxlbSkge1xuICAgICAgICAgIGVsZW0gPSBlbGVtWzBdIHx8IGVsZW07XG4gICAgICAgICAgaWYgKGlzTmFOKGVsZW0ub2Zmc2V0SGVpZ2h0KSkge1xuICAgICAgICAgICAgcmV0dXJuIGVsZW0uZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGVsZW0ub2Zmc2V0SGVpZ2h0O1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgb2Zmc2V0VG9wID0gZnVuY3Rpb24oZWxlbSkge1xuICAgICAgICAgIGlmICghZWxlbVswXS5nZXRCb3VuZGluZ0NsaWVudFJlY3QgfHwgZWxlbS5jc3MoJ25vbmUnKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gZWxlbVswXS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AgKyBwYWdlWU9mZnNldChlbGVtKTtcbiAgICAgICAgfTtcbiAgICAgICAgcGFnZVlPZmZzZXQgPSBmdW5jdGlvbihlbGVtKSB7XG4gICAgICAgICAgZWxlbSA9IGVsZW1bMF0gfHwgZWxlbTtcbiAgICAgICAgICBpZiAoaXNOYU4od2luZG93LnBhZ2VZT2Zmc2V0KSkge1xuICAgICAgICAgICAgcmV0dXJuIGVsZW0uZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGVsZW0ub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldy5wYWdlWU9mZnNldDtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGhhbmRsZXIgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICB2YXIgY29udGFpbmVyQm90dG9tLCBjb250YWluZXJUb3BPZmZzZXQsIGVsZW1lbnRCb3R0b20sIHJlbWFpbmluZywgc2hvdWxkU2Nyb2xsO1xuICAgICAgICAgIGlmIChjb250YWluZXIgPT09IHdpbmRvd0VsZW1lbnQpIHtcbiAgICAgICAgICAgIGNvbnRhaW5lckJvdHRvbSA9IGhlaWdodChjb250YWluZXIpICsgcGFnZVlPZmZzZXQoY29udGFpbmVyWzBdLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudCk7XG4gICAgICAgICAgICBlbGVtZW50Qm90dG9tID0gb2Zmc2V0VG9wKGVsZW0pICsgaGVpZ2h0KGVsZW0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb250YWluZXJCb3R0b20gPSBoZWlnaHQoY29udGFpbmVyKTtcbiAgICAgICAgICAgIGNvbnRhaW5lclRvcE9mZnNldCA9IDA7XG4gICAgICAgICAgICBpZiAob2Zmc2V0VG9wKGNvbnRhaW5lcikgIT09IHZvaWQgMCkge1xuICAgICAgICAgICAgICBjb250YWluZXJUb3BPZmZzZXQgPSBvZmZzZXRUb3AoY29udGFpbmVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsZW1lbnRCb3R0b20gPSBvZmZzZXRUb3AoZWxlbSkgLSBjb250YWluZXJUb3BPZmZzZXQgKyBoZWlnaHQoZWxlbSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh1c2VEb2N1bWVudEJvdHRvbSkge1xuICAgICAgICAgICAgZWxlbWVudEJvdHRvbSA9IGhlaWdodCgoZWxlbVswXS5vd25lckRvY3VtZW50IHx8IGVsZW1bMF0uZG9jdW1lbnQpLmRvY3VtZW50RWxlbWVudCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJlbWFpbmluZyA9IGVsZW1lbnRCb3R0b20gLSBjb250YWluZXJCb3R0b207XG4gICAgICAgICAgc2hvdWxkU2Nyb2xsID0gcmVtYWluaW5nIDw9IGhlaWdodChjb250YWluZXIpICogc2Nyb2xsRGlzdGFuY2UgKyAxO1xuICAgICAgICAgIGlmIChzaG91bGRTY3JvbGwpIHtcbiAgICAgICAgICAgIGNoZWNrV2hlbkVuYWJsZWQgPSB0cnVlO1xuICAgICAgICAgICAgaWYgKHNjcm9sbEVuYWJsZWQpIHtcbiAgICAgICAgICAgICAgaWYgKHNjb3BlLiQkcGhhc2UgfHwgJHJvb3RTY29wZS4kJHBoYXNlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHNjb3BlLmluZmluaXRlU2Nyb2xsKCk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHNjb3BlLiRhcHBseShzY29wZS5pbmZpbml0ZVNjcm9sbCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGNoZWNrSW50ZXJ2YWwpIHtcbiAgICAgICAgICAgICAgJGludGVydmFsLmNhbmNlbChjaGVja0ludGVydmFsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBjaGVja1doZW5FbmFibGVkID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB0aHJvdHRsZSA9IGZ1bmN0aW9uKGZ1bmMsIHdhaXQpIHtcbiAgICAgICAgICB2YXIgbGF0ZXIsIHByZXZpb3VzLCB0aW1lb3V0O1xuICAgICAgICAgIHRpbWVvdXQgPSBudWxsO1xuICAgICAgICAgIHByZXZpb3VzID0gMDtcbiAgICAgICAgICBsYXRlciA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgcHJldmlvdXMgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICAgICAgICAgICRpbnRlcnZhbC5jYW5jZWwodGltZW91dCk7XG4gICAgICAgICAgICB0aW1lb3V0ID0gbnVsbDtcbiAgICAgICAgICAgIHJldHVybiBmdW5jLmNhbGwoKTtcbiAgICAgICAgICB9O1xuICAgICAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHZhciBub3csIHJlbWFpbmluZztcbiAgICAgICAgICAgIG5vdyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgICAgICAgcmVtYWluaW5nID0gd2FpdCAtIChub3cgLSBwcmV2aW91cyk7XG4gICAgICAgICAgICBpZiAocmVtYWluaW5nIDw9IDApIHtcbiAgICAgICAgICAgICAgJGludGVydmFsLmNhbmNlbCh0aW1lb3V0KTtcbiAgICAgICAgICAgICAgdGltZW91dCA9IG51bGw7XG4gICAgICAgICAgICAgIHByZXZpb3VzID0gbm93O1xuICAgICAgICAgICAgICByZXR1cm4gZnVuYy5jYWxsKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBpZiAoIXRpbWVvdXQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGltZW91dCA9ICRpbnRlcnZhbChsYXRlciwgcmVtYWluaW5nLCAxKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgIH07XG4gICAgICAgIGlmIChUSFJPVFRMRV9NSUxMSVNFQ09ORFMgIT0gbnVsbCkge1xuICAgICAgICAgIGhhbmRsZXIgPSB0aHJvdHRsZShoYW5kbGVyLCBUSFJPVFRMRV9NSUxMSVNFQ09ORFMpO1xuICAgICAgICB9XG4gICAgICAgIHNjb3BlLiRvbignJGRlc3Ryb3knLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICBjb250YWluZXIudW5iaW5kKCdzY3JvbGwnLCBoYW5kbGVyKTtcbiAgICAgICAgICBpZiAodW5yZWdpc3RlckV2ZW50TGlzdGVuZXIgIT0gbnVsbCkge1xuICAgICAgICAgICAgdW5yZWdpc3RlckV2ZW50TGlzdGVuZXIoKTtcbiAgICAgICAgICAgIHVucmVnaXN0ZXJFdmVudExpc3RlbmVyID0gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGNoZWNrSW50ZXJ2YWwpIHtcbiAgICAgICAgICAgIHJldHVybiAkaW50ZXJ2YWwuY2FuY2VsKGNoZWNrSW50ZXJ2YWwpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGhhbmRsZUluZmluaXRlU2Nyb2xsRGlzdGFuY2UgPSBmdW5jdGlvbih2KSB7XG4gICAgICAgICAgcmV0dXJuIHNjcm9sbERpc3RhbmNlID0gcGFyc2VGbG9hdCh2KSB8fCAwO1xuICAgICAgICB9O1xuICAgICAgICBzY29wZS4kd2F0Y2goJ2luZmluaXRlU2Nyb2xsRGlzdGFuY2UnLCBoYW5kbGVJbmZpbml0ZVNjcm9sbERpc3RhbmNlKTtcbiAgICAgICAgaGFuZGxlSW5maW5pdGVTY3JvbGxEaXN0YW5jZShzY29wZS5pbmZpbml0ZVNjcm9sbERpc3RhbmNlKTtcbiAgICAgICAgaGFuZGxlSW5maW5pdGVTY3JvbGxEaXNhYmxlZCA9IGZ1bmN0aW9uKHYpIHtcbiAgICAgICAgICBzY3JvbGxFbmFibGVkID0gIXY7XG4gICAgICAgICAgaWYgKHNjcm9sbEVuYWJsZWQgJiYgY2hlY2tXaGVuRW5hYmxlZCkge1xuICAgICAgICAgICAgY2hlY2tXaGVuRW5hYmxlZCA9IGZhbHNlO1xuICAgICAgICAgICAgcmV0dXJuIGhhbmRsZXIoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHNjb3BlLiR3YXRjaCgnaW5maW5pdGVTY3JvbGxEaXNhYmxlZCcsIGhhbmRsZUluZmluaXRlU2Nyb2xsRGlzYWJsZWQpO1xuICAgICAgICBoYW5kbGVJbmZpbml0ZVNjcm9sbERpc2FibGVkKHNjb3BlLmluZmluaXRlU2Nyb2xsRGlzYWJsZWQpO1xuICAgICAgICBoYW5kbGVJbmZpbml0ZVNjcm9sbFVzZURvY3VtZW50Qm90dG9tID0gZnVuY3Rpb24odikge1xuICAgICAgICAgIHJldHVybiB1c2VEb2N1bWVudEJvdHRvbSA9IHY7XG4gICAgICAgIH07XG4gICAgICAgIHNjb3BlLiR3YXRjaCgnaW5maW5pdGVTY3JvbGxVc2VEb2N1bWVudEJvdHRvbScsIGhhbmRsZUluZmluaXRlU2Nyb2xsVXNlRG9jdW1lbnRCb3R0b20pO1xuICAgICAgICBoYW5kbGVJbmZpbml0ZVNjcm9sbFVzZURvY3VtZW50Qm90dG9tKHNjb3BlLmluZmluaXRlU2Nyb2xsVXNlRG9jdW1lbnRCb3R0b20pO1xuICAgICAgICBjaGFuZ2VDb250YWluZXIgPSBmdW5jdGlvbihuZXdDb250YWluZXIpIHtcbiAgICAgICAgICBpZiAoY29udGFpbmVyICE9IG51bGwpIHtcbiAgICAgICAgICAgIGNvbnRhaW5lci51bmJpbmQoJ3Njcm9sbCcsIGhhbmRsZXIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb250YWluZXIgPSBuZXdDb250YWluZXI7XG4gICAgICAgICAgaWYgKG5ld0NvbnRhaW5lciAhPSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gY29udGFpbmVyLmJpbmQoJ3Njcm9sbCcsIGhhbmRsZXIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgY2hhbmdlQ29udGFpbmVyKHdpbmRvd0VsZW1lbnQpO1xuICAgICAgICBpZiAoc2NvcGUuaW5maW5pdGVTY3JvbGxMaXN0ZW5Gb3JFdmVudCkge1xuICAgICAgICAgIHVucmVnaXN0ZXJFdmVudExpc3RlbmVyID0gJHJvb3RTY29wZS4kb24oc2NvcGUuaW5maW5pdGVTY3JvbGxMaXN0ZW5Gb3JFdmVudCwgaGFuZGxlcik7XG4gICAgICAgIH1cbiAgICAgICAgaGFuZGxlSW5maW5pdGVTY3JvbGxDb250YWluZXIgPSBmdW5jdGlvbihuZXdDb250YWluZXIpIHtcbiAgICAgICAgICBpZiAoKG5ld0NvbnRhaW5lciA9PSBudWxsKSB8fCBuZXdDb250YWluZXIubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChuZXdDb250YWluZXIubm9kZVR5cGUgJiYgbmV3Q29udGFpbmVyLm5vZGVUeXBlID09PSAxKSB7XG4gICAgICAgICAgICBuZXdDb250YWluZXIgPSBhbmd1bGFyLmVsZW1lbnQobmV3Q29udGFpbmVyKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBuZXdDb250YWluZXIuYXBwZW5kID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBuZXdDb250YWluZXIgPSBhbmd1bGFyLmVsZW1lbnQobmV3Q29udGFpbmVyW25ld0NvbnRhaW5lci5sZW5ndGggLSAxXSk7XG4gICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgbmV3Q29udGFpbmVyID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgbmV3Q29udGFpbmVyID0gYW5ndWxhci5lbGVtZW50KGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IobmV3Q29udGFpbmVyKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChuZXdDb250YWluZXIgIT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIGNoYW5nZUNvbnRhaW5lcihuZXdDb250YWluZXIpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIGluZmluaXRlLXNjcm9sbC1jb250YWluZXIgYXR0cmlidXRlLlwiKTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHNjb3BlLiR3YXRjaCgnaW5maW5pdGVTY3JvbGxDb250YWluZXInLCBoYW5kbGVJbmZpbml0ZVNjcm9sbENvbnRhaW5lcik7XG4gICAgICAgIGhhbmRsZUluZmluaXRlU2Nyb2xsQ29udGFpbmVyKHNjb3BlLmluZmluaXRlU2Nyb2xsQ29udGFpbmVyIHx8IFtdKTtcbiAgICAgICAgaWYgKGF0dHJzLmluZmluaXRlU2Nyb2xsUGFyZW50ICE9IG51bGwpIHtcbiAgICAgICAgICBjaGFuZ2VDb250YWluZXIoYW5ndWxhci5lbGVtZW50KGVsZW0ucGFyZW50KCkpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYXR0cnMuaW5maW5pdGVTY3JvbGxJbW1lZGlhdGVDaGVjayAhPSBudWxsKSB7XG4gICAgICAgICAgaW1tZWRpYXRlQ2hlY2sgPSBzY29wZS4kZXZhbChhdHRycy5pbmZpbml0ZVNjcm9sbEltbWVkaWF0ZUNoZWNrKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY2hlY2tJbnRlcnZhbCA9ICRpbnRlcnZhbCgoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgaWYgKGltbWVkaWF0ZUNoZWNrKSB7XG4gICAgICAgICAgICBoYW5kbGVyKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiAkaW50ZXJ2YWwuY2FuY2VsKGNoZWNrSW50ZXJ2YWwpO1xuICAgICAgICB9KSk7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXSk7XG5cbmlmICh0eXBlb2YgbW9kdWxlICE9PSBcInVuZGVmaW5lZFwiICYmIHR5cGVvZiBleHBvcnRzICE9PSBcInVuZGVmaW5lZFwiICYmIG1vZHVsZS5leHBvcnRzID09PSBleHBvcnRzKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gJ2luZmluaXRlLXNjcm9sbCc7XG59XG4iLCJ2YXIgZHVTY3JvbGxEZWZhdWx0RWFzaW5nPWZ1bmN0aW9uKGUpe1widXNlIHN0cmljdFwiO3JldHVybiBlPC41P01hdGgucG93KDIqZSwyKS8yOjEtTWF0aC5wb3coMiooMS1lKSwyKS8yfSxkdVNjcm9sbD1hbmd1bGFyLm1vZHVsZShcImR1U2Nyb2xsXCIsW1wiZHVTY3JvbGwuc2Nyb2xsc3B5XCIsXCJkdVNjcm9sbC5zbW9vdGhTY3JvbGxcIixcImR1U2Nyb2xsLnNjcm9sbENvbnRhaW5lclwiLFwiZHVTY3JvbGwuc3B5Q29udGV4dFwiLFwiZHVTY3JvbGwuc2Nyb2xsSGVscGVyc1wiXSkudmFsdWUoXCJkdVNjcm9sbER1cmF0aW9uXCIsMzUwKS52YWx1ZShcImR1U2Nyb2xsU3B5V2FpdFwiLDEwMCkudmFsdWUoXCJkdVNjcm9sbFNweVJlZnJlc2hJbnRlcnZhbFwiLDApLnZhbHVlKFwiZHVTY3JvbGxHcmVlZHlcIiwhMSkudmFsdWUoXCJkdVNjcm9sbE9mZnNldFwiLDApLnZhbHVlKFwiZHVTY3JvbGxFYXNpbmdcIixkdVNjcm9sbERlZmF1bHRFYXNpbmcpLnZhbHVlKFwiZHVTY3JvbGxDYW5jZWxPbkV2ZW50c1wiLFwic2Nyb2xsIG1vdXNlZG93biBtb3VzZXdoZWVsIHRvdWNobW92ZSBrZXlkb3duXCIpLnZhbHVlKFwiZHVTY3JvbGxCb3R0b21TcHlcIiwhMSkudmFsdWUoXCJkdVNjcm9sbEFjdGl2ZUNsYXNzXCIsXCJhY3RpdmVcIik7XCJ1bmRlZmluZWRcIiE9dHlwZW9mIG1vZHVsZSYmbW9kdWxlJiZtb2R1bGUuZXhwb3J0cyYmKG1vZHVsZS5leHBvcnRzPWR1U2Nyb2xsKSxhbmd1bGFyLm1vZHVsZShcImR1U2Nyb2xsLnNjcm9sbEhlbHBlcnNcIixbXCJkdVNjcm9sbC5yZXF1ZXN0QW5pbWF0aW9uXCJdKS5ydW4oW1wiJHdpbmRvd1wiLFwiJHFcIixcImNhbmNlbEFuaW1hdGlvblwiLFwicmVxdWVzdEFuaW1hdGlvblwiLFwiZHVTY3JvbGxFYXNpbmdcIixcImR1U2Nyb2xsRHVyYXRpb25cIixcImR1U2Nyb2xsT2Zmc2V0XCIsXCJkdVNjcm9sbENhbmNlbE9uRXZlbnRzXCIsZnVuY3Rpb24oZSx0LG4scixvLGwsdSxpKXtcInVzZSBzdHJpY3RcIjt2YXIgYz17fSxhPWZ1bmN0aW9uKGUpe3JldHVyblwidW5kZWZpbmVkXCIhPXR5cGVvZiBIVE1MRG9jdW1lbnQmJmUgaW5zdGFuY2VvZiBIVE1MRG9jdW1lbnR8fGUubm9kZVR5cGUmJmUubm9kZVR5cGU9PT1lLkRPQ1VNRU5UX05PREV9LHM9ZnVuY3Rpb24oZSl7cmV0dXJuXCJ1bmRlZmluZWRcIiE9dHlwZW9mIEhUTUxFbGVtZW50JiZlIGluc3RhbmNlb2YgSFRNTEVsZW1lbnR8fGUubm9kZVR5cGUmJmUubm9kZVR5cGU9PT1lLkVMRU1FTlRfTk9ERX0sZD1mdW5jdGlvbihlKXtyZXR1cm4gcyhlKXx8YShlKT9lOmVbMF19O2MuZHVTY3JvbGxUbz1mdW5jdGlvbih0LG4scixvKXt2YXIgbDtpZihhbmd1bGFyLmlzRWxlbWVudCh0KT9sPXRoaXMuZHVTY3JvbGxUb0VsZW1lbnQ6YW5ndWxhci5pc0RlZmluZWQocikmJihsPXRoaXMuZHVTY3JvbGxUb0FuaW1hdGVkKSxsKXJldHVybiBsLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt2YXIgdT1kKHRoaXMpO3JldHVybiBhKHUpP2Uuc2Nyb2xsVG8odCxuKToodS5zY3JvbGxMZWZ0PXQsdm9pZCh1LnNjcm9sbFRvcD1uKSl9O3ZhciBmLG07Yy5kdVNjcm9sbFRvQW5pbWF0ZWQ9ZnVuY3Rpb24oZSxsLHUsYyl7dSYmIWMmJihjPW8pO3ZhciBhPXRoaXMuZHVTY3JvbGxMZWZ0KCkscz10aGlzLmR1U2Nyb2xsVG9wKCksZD1NYXRoLnJvdW5kKGUtYSkscD1NYXRoLnJvdW5kKGwtcyksUz1udWxsLGc9MCx2PXRoaXMsaD1mdW5jdGlvbihlKXsoIWV8fGcmJmUud2hpY2g+MCkmJihpJiZ2LnVuYmluZChpLGgpLG4oZiksbS5yZWplY3QoKSxmPW51bGwpfTtpZihmJiZoKCksbT10LmRlZmVyKCksMD09PXV8fCFkJiYhcClyZXR1cm4gMD09PXUmJnYuZHVTY3JvbGxUbyhlLGwpLG0ucmVzb2x2ZSgpLG0ucHJvbWlzZTt2YXIgeT1mdW5jdGlvbihlKXtudWxsPT09UyYmKFM9ZSksZz1lLVM7dmFyIHQ9Zz49dT8xOmMoZy91KTt2LnNjcm9sbFRvKGErTWF0aC5jZWlsKGQqdCkscytNYXRoLmNlaWwocCp0KSksdDwxP2Y9cih5KTooaSYmdi51bmJpbmQoaSxoKSxmPW51bGwsbS5yZXNvbHZlKCkpfTtyZXR1cm4gdi5kdVNjcm9sbFRvKGEscyksaSYmdi5iaW5kKGksaCksZj1yKHkpLG0ucHJvbWlzZX0sYy5kdVNjcm9sbFRvRWxlbWVudD1mdW5jdGlvbihlLHQsbixyKXt2YXIgbz1kKHRoaXMpO2FuZ3VsYXIuaXNOdW1iZXIodCkmJiFpc05hTih0KXx8KHQ9dSk7dmFyIGw9dGhpcy5kdVNjcm9sbFRvcCgpK2QoZSkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wLXQ7cmV0dXJuIHMobykmJihsLT1vLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCksdGhpcy5kdVNjcm9sbFRvKDAsbCxuLHIpfSxjLmR1U2Nyb2xsTGVmdD1mdW5jdGlvbih0LG4scil7aWYoYW5ndWxhci5pc051bWJlcih0KSlyZXR1cm4gdGhpcy5kdVNjcm9sbFRvKHQsdGhpcy5kdVNjcm9sbFRvcCgpLG4scik7dmFyIG89ZCh0aGlzKTtyZXR1cm4gYShvKT9lLnNjcm9sbFh8fGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxMZWZ0fHxkb2N1bWVudC5ib2R5LnNjcm9sbExlZnQ6by5zY3JvbGxMZWZ0fSxjLmR1U2Nyb2xsVG9wPWZ1bmN0aW9uKHQsbixyKXtpZihhbmd1bGFyLmlzTnVtYmVyKHQpKXJldHVybiB0aGlzLmR1U2Nyb2xsVG8odGhpcy5kdVNjcm9sbExlZnQoKSx0LG4scik7dmFyIG89ZCh0aGlzKTtyZXR1cm4gYShvKT9lLnNjcm9sbFl8fGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3B8fGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wOm8uc2Nyb2xsVG9wfSxjLmR1U2Nyb2xsVG9FbGVtZW50QW5pbWF0ZWQ9ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIHRoaXMuZHVTY3JvbGxUb0VsZW1lbnQoZSx0LG58fGwscil9LGMuZHVTY3JvbGxUb3BBbmltYXRlZD1mdW5jdGlvbihlLHQsbil7cmV0dXJuIHRoaXMuZHVTY3JvbGxUb3AoZSx0fHxsLG4pfSxjLmR1U2Nyb2xsTGVmdEFuaW1hdGVkPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdGhpcy5kdVNjcm9sbExlZnQoZSx0fHxsLG4pfSxhbmd1bGFyLmZvckVhY2goYyxmdW5jdGlvbihlLHQpe2FuZ3VsYXIuZWxlbWVudC5wcm90b3R5cGVbdF09ZTt2YXIgbj10LnJlcGxhY2UoL15kdVNjcm9sbC8sXCJzY3JvbGxcIik7YW5ndWxhci5pc1VuZGVmaW5lZChhbmd1bGFyLmVsZW1lbnQucHJvdG90eXBlW25dKSYmKGFuZ3VsYXIuZWxlbWVudC5wcm90b3R5cGVbbl09ZSl9KX1dKSxhbmd1bGFyLm1vZHVsZShcImR1U2Nyb2xsLnBvbHlmaWxsXCIsW10pLmZhY3RvcnkoXCJwb2x5ZmlsbFwiLFtcIiR3aW5kb3dcIixmdW5jdGlvbihlKXtcInVzZSBzdHJpY3RcIjt2YXIgdD1bXCJ3ZWJraXRcIixcIm1velwiLFwib1wiLFwibXNcIl07cmV0dXJuIGZ1bmN0aW9uKG4scil7aWYoZVtuXSlyZXR1cm4gZVtuXTtmb3IodmFyIG8sbD1uLnN1YnN0cigwLDEpLnRvVXBwZXJDYXNlKCkrbi5zdWJzdHIoMSksdT0wO3U8dC5sZW5ndGg7dSsrKWlmKG89dFt1XStsLGVbb10pcmV0dXJuIGVbb107cmV0dXJuIHJ9fV0pLGFuZ3VsYXIubW9kdWxlKFwiZHVTY3JvbGwucmVxdWVzdEFuaW1hdGlvblwiLFtcImR1U2Nyb2xsLnBvbHlmaWxsXCJdKS5mYWN0b3J5KFwicmVxdWVzdEFuaW1hdGlvblwiLFtcInBvbHlmaWxsXCIsXCIkdGltZW91dFwiLGZ1bmN0aW9uKGUsdCl7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49MCxyPWZ1bmN0aW9uKGUscil7dmFyIG89KG5ldyBEYXRlKS5nZXRUaW1lKCksbD1NYXRoLm1heCgwLDE2LShvLW4pKSx1PXQoZnVuY3Rpb24oKXtlKG8rbCl9LGwpO3JldHVybiBuPW8rbCx1fTtyZXR1cm4gZShcInJlcXVlc3RBbmltYXRpb25GcmFtZVwiLHIpfV0pLmZhY3RvcnkoXCJjYW5jZWxBbmltYXRpb25cIixbXCJwb2x5ZmlsbFwiLFwiJHRpbWVvdXRcIixmdW5jdGlvbihlLHQpe1widXNlIHN0cmljdFwiO3ZhciBuPWZ1bmN0aW9uKGUpe3QuY2FuY2VsKGUpfTtyZXR1cm4gZShcImNhbmNlbEFuaW1hdGlvbkZyYW1lXCIsbil9XSksYW5ndWxhci5tb2R1bGUoXCJkdVNjcm9sbC5zcHlBUElcIixbXCJkdVNjcm9sbC5zY3JvbGxDb250YWluZXJBUElcIl0pLmZhY3RvcnkoXCJzcHlBUElcIixbXCIkcm9vdFNjb3BlXCIsXCIkdGltZW91dFwiLFwiJGludGVydmFsXCIsXCIkd2luZG93XCIsXCIkZG9jdW1lbnRcIixcInNjcm9sbENvbnRhaW5lckFQSVwiLFwiZHVTY3JvbGxHcmVlZHlcIixcImR1U2Nyb2xsU3B5V2FpdFwiLFwiZHVTY3JvbGxTcHlSZWZyZXNoSW50ZXJ2YWxcIixcImR1U2Nyb2xsQm90dG9tU3B5XCIsXCJkdVNjcm9sbEFjdGl2ZUNsYXNzXCIsZnVuY3Rpb24oZSx0LG4scixvLGwsdSxpLGMsYSxzKXtcInVzZSBzdHJpY3RcIjt2YXIgZD1mdW5jdGlvbihuKXt2YXIgbD0hMSxjPSExLGQ9ZnVuY3Rpb24oKXtjPSExO3ZhciB0LGw9bi5jb250YWluZXIsaT1sWzBdLGQ9MDtpZihcInVuZGVmaW5lZFwiIT10eXBlb2YgSFRNTEVsZW1lbnQmJmkgaW5zdGFuY2VvZiBIVE1MRWxlbWVudHx8aS5ub2RlVHlwZSYmaS5ub2RlVHlwZT09PWkuRUxFTUVOVF9OT0RFKWQ9aS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AsdD1NYXRoLnJvdW5kKGkuc2Nyb2xsVG9wK2kuY2xpZW50SGVpZ2h0KT49aS5zY3JvbGxIZWlnaHQ7ZWxzZXt2YXIgZj1vWzBdLmJvZHkuc2Nyb2xsSGVpZ2h0fHxvWzBdLmRvY3VtZW50RWxlbWVudC5zY3JvbGxIZWlnaHQ7dD1NYXRoLnJvdW5kKHIucGFnZVlPZmZzZXQrci5pbm5lckhlaWdodCk+PWZ9dmFyIG0scCxTLGcsdixoLHk9YSYmdD9cImJvdHRvbVwiOlwidG9wXCI7Zm9yKGc9bi5zcGllcyxwPW4uY3VycmVudGx5QWN0aXZlLFM9dm9pZCAwLG09MDttPGcubGVuZ3RoO20rKyl2PWdbbV0saD12LmdldFRhcmdldFBvc2l0aW9uKCksaCYmdi4kZWxlbWVudCYmKGEmJnR8fGgudG9wK3Yub2Zmc2V0LWQ8MjAmJih1fHxoLnRvcCotMStkKTxoLmhlaWdodCkmJighU3x8U1t5XTxoW3ldKSYmKFM9e3NweTp2fSxTW3ldPWhbeV0pO1MmJihTPVMuc3B5KSxwPT09U3x8dSYmIVN8fChwJiZwLiRlbGVtZW50JiYocC4kZWxlbWVudC5yZW1vdmVDbGFzcyhzKSxlLiRicm9hZGNhc3QoXCJkdVNjcm9sbHNweTpiZWNhbWVJbmFjdGl2ZVwiLHAuJGVsZW1lbnQsYW5ndWxhci5lbGVtZW50KHAuZ2V0VGFyZ2V0RWxlbWVudCgpKSkpLFMmJihTLiRlbGVtZW50LmFkZENsYXNzKHMpLGUuJGJyb2FkY2FzdChcImR1U2Nyb2xsc3B5OmJlY2FtZUFjdGl2ZVwiLFMuJGVsZW1lbnQsYW5ndWxhci5lbGVtZW50KFMuZ2V0VGFyZ2V0RWxlbWVudCgpKSkpLG4uY3VycmVudGx5QWN0aXZlPVMpfTtyZXR1cm4gaT9mdW5jdGlvbigpe2w/Yz0hMDooZCgpLGw9dChmdW5jdGlvbigpe2w9ITEsYyYmZCgpfSxpLCExKSl9OmR9LGY9e30sbT1mdW5jdGlvbihlKXt2YXIgdD1lLiRpZCxuPXtzcGllczpbXX07cmV0dXJuIG4uaGFuZGxlcj1kKG4pLGZbdF09bixlLiRvbihcIiRkZXN0cm95XCIsZnVuY3Rpb24oKXtwKGUpfSksdH0scD1mdW5jdGlvbihlKXt2YXIgdD1lLiRpZCxyPWZbdF0sbz1yLmNvbnRhaW5lcjtyLmludGVydmFsUHJvbWlzZSYmbi5jYW5jZWwoci5pbnRlcnZhbFByb21pc2UpLG8mJm8ub2ZmKFwic2Nyb2xsXCIsci5oYW5kbGVyKSxkZWxldGUgZlt0XX0sUz1tKGUpLGc9ZnVuY3Rpb24oZSl7cmV0dXJuIGZbZS4kaWRdP2ZbZS4kaWRdOmUuJHBhcmVudD9nKGUuJHBhcmVudCk6ZltTXX0sdj1mdW5jdGlvbihlKXt2YXIgdCxuLHI9ZS4kc2NvcGU7aWYocilyZXR1cm4gZyhyKTtmb3IobiBpbiBmKWlmKHQ9ZltuXSx0LnNwaWVzLmluZGV4T2YoZSkhPT0tMSlyZXR1cm4gdH0saD1mdW5jdGlvbihlKXtmb3IoO2UucGFyZW50Tm9kZTspaWYoZT1lLnBhcmVudE5vZGUsZT09PWRvY3VtZW50KXJldHVybiEwO3JldHVybiExfSx5PWZ1bmN0aW9uKGUpe3ZhciB0PXYoZSk7dCYmKHQuc3BpZXMucHVzaChlKSx0LmNvbnRhaW5lciYmaCh0LmNvbnRhaW5lcil8fCh0LmNvbnRhaW5lciYmdC5jb250YWluZXIub2ZmKFwic2Nyb2xsXCIsdC5oYW5kbGVyKSx0LmNvbnRhaW5lcj1sLmdldENvbnRhaW5lcihlLiRzY29wZSksYyYmIXQuaW50ZXJ2YWxQcm9taXNlJiYodC5pbnRlcnZhbFByb21pc2U9bih0LmhhbmRsZXIsYywwLCExKSksdC5jb250YWluZXIub24oXCJzY3JvbGxcIix0LmhhbmRsZXIpLnRyaWdnZXJIYW5kbGVyKFwic2Nyb2xsXCIpKSl9LCQ9ZnVuY3Rpb24odCl7dmFyIG49dih0KTt0PT09bi5jdXJyZW50bHlBY3RpdmUmJihlLiRicm9hZGNhc3QoXCJkdVNjcm9sbHNweTpiZWNhbWVJbmFjdGl2ZVwiLG4uY3VycmVudGx5QWN0aXZlLiRlbGVtZW50KSxuLmN1cnJlbnRseUFjdGl2ZT1udWxsKTt2YXIgcj1uLnNwaWVzLmluZGV4T2YodCk7ciE9PS0xJiZuLnNwaWVzLnNwbGljZShyLDEpLHQuJGVsZW1lbnQ9bnVsbH07cmV0dXJue2FkZFNweTp5LHJlbW92ZVNweTokLGNyZWF0ZUNvbnRleHQ6bSxkZXN0cm95Q29udGV4dDpwLGdldENvbnRleHRGb3JTY29wZTpnfX1dKSxhbmd1bGFyLm1vZHVsZShcImR1U2Nyb2xsLnNjcm9sbENvbnRhaW5lckFQSVwiLFtdKS5mYWN0b3J5KFwic2Nyb2xsQ29udGFpbmVyQVBJXCIsW1wiJGRvY3VtZW50XCIsZnVuY3Rpb24oZSl7XCJ1c2Ugc3RyaWN0XCI7dmFyIHQ9e30sbj1mdW5jdGlvbihlLG4pe3ZhciByPWUuJGlkO3JldHVybiB0W3JdPW4scn0scj1mdW5jdGlvbihlKXtyZXR1cm4gdFtlLiRpZF0/ZS4kaWQ6ZS4kcGFyZW50P3IoZS4kcGFyZW50KTp2b2lkIDB9LG89ZnVuY3Rpb24obil7dmFyIG89cihuKTtyZXR1cm4gbz90W29dOmV9LGw9ZnVuY3Rpb24oZSl7dmFyIG49cihlKTtuJiZkZWxldGUgdFtuXX07cmV0dXJue2dldENvbnRhaW5lcklkOnIsZ2V0Q29udGFpbmVyOm8sc2V0Q29udGFpbmVyOm4scmVtb3ZlQ29udGFpbmVyOmx9fV0pLGFuZ3VsYXIubW9kdWxlKFwiZHVTY3JvbGwuc21vb3RoU2Nyb2xsXCIsW1wiZHVTY3JvbGwuc2Nyb2xsSGVscGVyc1wiLFwiZHVTY3JvbGwuc2Nyb2xsQ29udGFpbmVyQVBJXCJdKS5kaXJlY3RpdmUoXCJkdVNtb290aFNjcm9sbFwiLFtcImR1U2Nyb2xsRHVyYXRpb25cIixcImR1U2Nyb2xsT2Zmc2V0XCIsXCJzY3JvbGxDb250YWluZXJBUElcIixmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7cmV0dXJue2xpbms6ZnVuY3Rpb24ocixvLGwpe28ub24oXCJjbGlja1wiLGZ1bmN0aW9uKG8pe2lmKGwuaHJlZiYmbC5ocmVmLmluZGV4T2YoXCIjXCIpIT09LTF8fFwiXCIhPT1sLmR1U21vb3RoU2Nyb2xsKXt2YXIgdT1sLmhyZWY/bC5ocmVmLnJlcGxhY2UoLy4qKD89I1teXFxzXSskKS8sXCJcIikuc3Vic3RyaW5nKDEpOmwuZHVTbW9vdGhTY3JvbGwsaT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCh1KXx8ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUodSlbMF07aWYoaSYmaS5nZXRCb3VuZGluZ0NsaWVudFJlY3Qpe28uc3RvcFByb3BhZ2F0aW9uJiZvLnN0b3BQcm9wYWdhdGlvbigpLG8ucHJldmVudERlZmF1bHQmJm8ucHJldmVudERlZmF1bHQoKTt2YXIgYz1sLm9mZnNldD9wYXJzZUludChsLm9mZnNldCwxMCk6dCxhPWwuZHVyYXRpb24/cGFyc2VJbnQobC5kdXJhdGlvbiwxMCk6ZSxzPW4uZ2V0Q29udGFpbmVyKHIpO3MuZHVTY3JvbGxUb0VsZW1lbnQoYW5ndWxhci5lbGVtZW50KGkpLGlzTmFOKGMpPzA6Yyxpc05hTihhKT8wOmEpfX19KX19fV0pLGFuZ3VsYXIubW9kdWxlKFwiZHVTY3JvbGwuc3B5Q29udGV4dFwiLFtcImR1U2Nyb2xsLnNweUFQSVwiXSkuZGlyZWN0aXZlKFwiZHVTcHlDb250ZXh0XCIsW1wic3B5QVBJXCIsZnVuY3Rpb24oZSl7XCJ1c2Ugc3RyaWN0XCI7cmV0dXJue3Jlc3RyaWN0OlwiQVwiLHNjb3BlOiEwLGNvbXBpbGU6ZnVuY3Rpb24odCxuLHIpe3JldHVybntwcmU6ZnVuY3Rpb24odCxuLHIsbyl7ZS5jcmVhdGVDb250ZXh0KHQpfX19fX1dKSxhbmd1bGFyLm1vZHVsZShcImR1U2Nyb2xsLnNjcm9sbENvbnRhaW5lclwiLFtcImR1U2Nyb2xsLnNjcm9sbENvbnRhaW5lckFQSVwiXSkuZGlyZWN0aXZlKFwiZHVTY3JvbGxDb250YWluZXJcIixbXCJzY3JvbGxDb250YWluZXJBUElcIixmdW5jdGlvbihlKXtcInVzZSBzdHJpY3RcIjtyZXR1cm57cmVzdHJpY3Q6XCJBXCIsc2NvcGU6ITAsY29tcGlsZTpmdW5jdGlvbih0LG4scil7cmV0dXJue3ByZTpmdW5jdGlvbih0LG4scixvKXtyLiRvYnNlcnZlKFwiZHVTY3JvbGxDb250YWluZXJcIixmdW5jdGlvbihyKXthbmd1bGFyLmlzU3RyaW5nKHIpJiYocj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChyKSkscj1hbmd1bGFyLmlzRWxlbWVudChyKT9hbmd1bGFyLmVsZW1lbnQocik6bixlLnNldENvbnRhaW5lcih0LHIpLHQuJG9uKFwiJGRlc3Ryb3lcIixmdW5jdGlvbigpe2UucmVtb3ZlQ29udGFpbmVyKHQpfSl9KX19fX19XSksYW5ndWxhci5tb2R1bGUoXCJkdVNjcm9sbC5zY3JvbGxzcHlcIixbXCJkdVNjcm9sbC5zcHlBUElcIl0pLmRpcmVjdGl2ZShcImR1U2Nyb2xsc3B5XCIsW1wic3B5QVBJXCIsXCJkdVNjcm9sbE9mZnNldFwiLFwiJHRpbWVvdXRcIixcIiRyb290U2NvcGVcIixmdW5jdGlvbihlLHQsbixyKXtcInVzZSBzdHJpY3RcIjt2YXIgbz1mdW5jdGlvbihlLHQsbixyKXthbmd1bGFyLmlzRWxlbWVudChlKT90aGlzLnRhcmdldD1lOmFuZ3VsYXIuaXNTdHJpbmcoZSkmJih0aGlzLnRhcmdldElkPWUpLHRoaXMuJHNjb3BlPXQsdGhpcy4kZWxlbWVudD1uLHRoaXMub2Zmc2V0PXJ9O3JldHVybiBvLnByb3RvdHlwZS5nZXRUYXJnZXRFbGVtZW50PWZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMudGFyZ2V0JiZ0aGlzLnRhcmdldElkJiYodGhpcy50YXJnZXQ9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy50YXJnZXRJZCl8fGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKHRoaXMudGFyZ2V0SWQpWzBdKSx0aGlzLnRhcmdldH0sby5wcm90b3R5cGUuZ2V0VGFyZ2V0UG9zaXRpb249ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmdldFRhcmdldEVsZW1lbnQoKTtpZihlKXJldHVybiBlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpfSxvLnByb3RvdHlwZS5mbHVzaFRhcmdldENhY2hlPWZ1bmN0aW9uKCl7dGhpcy50YXJnZXRJZCYmKHRoaXMudGFyZ2V0PXZvaWQgMCl9LHtsaW5rOmZ1bmN0aW9uKGwsdSxpKXt2YXIgYyxhPWkubmdIcmVmfHxpLmhyZWY7aWYoYSYmYS5pbmRleE9mKFwiI1wiKSE9PS0xP2M9YS5yZXBsYWNlKC8uKig/PSNbXlxcc10rJCkvLFwiXCIpLnN1YnN0cmluZygxKTppLmR1U2Nyb2xsc3B5P2M9aS5kdVNjcm9sbHNweTppLmR1U21vb3RoU2Nyb2xsJiYoYz1pLmR1U21vb3RoU2Nyb2xsKSxjKXt2YXIgcz1uKGZ1bmN0aW9uKCl7dmFyIG49bmV3IG8oYyxsLHUsKC0oaS5vZmZzZXQ/cGFyc2VJbnQoaS5vZmZzZXQsMTApOnQpKSk7ZS5hZGRTcHkobiksbC4kb24oXCIkbG9jYXRpb25DaGFuZ2VTdWNjZXNzXCIsbi5mbHVzaFRhcmdldENhY2hlLmJpbmQobikpO3ZhciBhPXIuJG9uKFwiJHN0YXRlQ2hhbmdlU3VjY2Vzc1wiLG4uZmx1c2hUYXJnZXRDYWNoZS5iaW5kKG4pKTtsLiRvbihcIiRkZXN0cm95XCIsZnVuY3Rpb24oKXtlLnJlbW92ZVNweShuKSxhKCl9KX0sMCwhMSk7bC4kb24oXCIkZGVzdHJveVwiLGZ1bmN0aW9uKCl7bi5jYW5jZWwocyl9KX19fX1dKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWFuZ3VsYXItc2Nyb2xsLm1pbi5qcy5tYXBcbiJdfQ==

}catch(e){console.log("Module 'angular_sanitize': ",e);}
try{/*! npm.im/object-fit-images 3.2.4 */
var objectFitImages=function(){"use strict";function t(t,e){return"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='"+t+"' height='"+e+"'%3E%3C/svg%3E"}function e(t){if(t.srcset&&!p&&window.picturefill){var e=window.picturefill._;t[e.ns]&&t[e.ns].evaled||e.fillImg(t,{reselect:!0}),t[e.ns].curSrc||(t[e.ns].supported=!1,e.fillImg(t,{reselect:!0})),t.currentSrc=t[e.ns].curSrc||t.src}}function i(t){for(var e,i=getComputedStyle(t).fontFamily,r={};null!==(e=u.exec(i));)r[e[1]]=e[2];return r}function r(e,i,r){var n=t(i||1,r||0);b.call(e,"src")!==n&&h.call(e,"src",n)}function n(t,e){t.naturalWidth?e(t):setTimeout(n,100,t,e)}function c(t){var c=i(t),o=t[l];if(c["object-fit"]=c["object-fit"]||"fill",!o.img){if("fill"===c["object-fit"])return;if(!o.skipTest&&f&&!c["object-position"])return}if(!o.img){o.img=new Image(t.width,t.height),o.img.srcset=b.call(t,"data-ofi-srcset")||t.srcset,o.img.src=b.call(t,"data-ofi-src")||t.src,h.call(t,"data-ofi-src",t.src),t.srcset&&h.call(t,"data-ofi-srcset",t.srcset),r(t,t.naturalWidth||t.width,t.naturalHeight||t.height),t.srcset&&(t.srcset="");try{s(t)}catch(t){window.console&&console.warn("https://bit.ly/ofi-old-browser")}}e(o.img),t.style.backgroundImage='url("'+(o.img.currentSrc||o.img.src).replace(/"/g,'\\"')+'")',t.style.backgroundPosition=c["object-position"]||"center",t.style.backgroundRepeat="no-repeat",t.style.backgroundOrigin="content-box",/scale-down/.test(c["object-fit"])?n(o.img,function(){o.img.naturalWidth>t.width||o.img.naturalHeight>t.height?t.style.backgroundSize="contain":t.style.backgroundSize="auto"}):t.style.backgroundSize=c["object-fit"].replace("none","auto").replace("fill","100% 100%"),n(o.img,function(e){r(t,e.naturalWidth,e.naturalHeight)})}function s(t){var e={get:function(e){return t[l].img[e?e:"src"]},set:function(e,i){return t[l].img[i?i:"src"]=e,h.call(t,"data-ofi-"+i,e),c(t),e}};Object.defineProperty(t,"src",e),Object.defineProperty(t,"currentSrc",{get:function(){return e.get("currentSrc")}}),Object.defineProperty(t,"srcset",{get:function(){return e.get("srcset")},set:function(t){return e.set(t,"srcset")}})}function o(){function t(t,e){return t[l]&&t[l].img&&("src"===e||"srcset"===e)?t[l].img:t}d||(HTMLImageElement.prototype.getAttribute=function(e){return b.call(t(this,e),e)},HTMLImageElement.prototype.setAttribute=function(e,i){return h.call(t(this,e),e,String(i))})}function a(t,e){var i=!y&&!t;if(e=e||{},t=t||"img",d&&!e.skipTest||!m)return!1;"img"===t?t=document.getElementsByTagName("img"):"string"==typeof t?t=document.querySelectorAll(t):"length"in t||(t=[t]);for(var r=0;r<t.length;r++)t[r][l]=t[r][l]||{skipTest:e.skipTest},c(t[r]);i&&(document.body.addEventListener("load",function(t){"IMG"===t.target.tagName&&a(t.target,{skipTest:e.skipTest})},!0),y=!0,t="img"),e.watchMQ&&window.addEventListener("resize",a.bind(null,t,{skipTest:e.skipTest}))}var l="bfred-it:object-fit-images",u=/(object-fit|object-position)\s*:\s*([-.\w\s%]+)/g,g="undefined"==typeof Image?{style:{"object-position":1}}:new Image,f="object-fit"in g.style,d="object-position"in g.style,m="background-size"in g.style,p="string"==typeof g.currentSrc,b=g.getAttribute,h=g.setAttribute,y=!1;return a.supportsObjectFit=f,a.supportsObjectPosition=d,o(),a}();

/*
    Version: 1
*/
(function () {
  'use strict';
  angular
    .module('colruyt.translate', []);
})();

/*
    Version: 1
*/
(function () {
    'use strict';
    angular
      .module('cgApp', ['ngSanitize', 'ngResource', 'ngCookies', 'infinite-scroll', 'tw.directives.clickOutside', 'duScroll', 'colruyt.translate'])
      .config(config);

    config.$inject = ['$locationProvider', '$cookiesProvider', '$compileProvider', 'translateServiceProvider'];

    function config($locationProvider, $cookiesProvider, $compileProvider, translateServiceProvider) {

      $locationProvider.html5Mode({enabled: true, requireBase: false, rewriteLinks: false});

      $compileProvider.aHrefSanitizationWhitelist(/^\s*(https?|ftp|mailto|chrome-extension|javascript):/);
      var lang = document.body.parentNode.getAttribute("lang");
      var labels = document.getElementsByClassName("labels");

      if (labels.length >= 1) {
        _.each(labels, function (labelSet) {
          translateServiceProvider.addTranslation(lang, JSON.parse(labelSet.innerText));
        });
      } else {
        translateServiceProvider.addTranslation(lang, {});
      }

      translateServiceProvider.setCurrentLanguage(lang);

      $cookiesProvider.defaults.path = '/';
      $cookiesProvider.defaults.secure = true;


    }
    ;
  }

)();


document.addEventListener('DOMContentLoaded', function(event) {
  objectFitImages(document.querySelectorAll(".cg-story-image img"));
});


// youtube
var videoImages = document.querySelectorAll('.cg-video .cg-video-img');

for (var videoImagesCounter = 0; videoImagesCounter < videoImages.length; videoImagesCounter++) {
  (function (index) {
    videoImages[videoImagesCounter].addEventListener("click", function (event) {
      var videos = document.querySelectorAll('.cg-video iframe');

      this.style.display = 'none';

      if (videos[index].src.indexOf('?autoplay=1') === -1) {
        videos[index].src += '?autoplay=1&controls=1';
        videos[index].style.opacity = 1;
      }
    });
  })(videoImagesCounter);
}

(function () {
  'use strict';

  angular.module('cgApp')
    .value('THROTTLE_MILLISECONDS', 250);
  angular
    .module('cgApp').constant('apiRoot', location.protocol + "//" + location.hostname);

  angular.module('cgApp')
    .constant('MediaMaterialEditLinks', getJson('mediaMaterialEditLinks'));

  angular.module('cgApp')
    .constant('CONFIG', getJson('config'));

  angular.module('cgApp')
    .constant('SEARCH_CONFIG', getJson('search_config'));

  function getJson(id) {
    var content = document.getElementById(id);

    if (content) {
      return JSON.parse(content.innerText);
    }
    return {};
  }
})();

(function(){'use strict';angular.module('cgApp').run(['$templateCache', function($templateCache) {$templateCache.put('/financial-press-release/financial-press-release-item.html','<div class="cg-color-switch cg-square-calendar">\n    <a class="cg-flex" href="{{pressReleaseItem.model.file}}" target="_new">\n        <div class="cg-banner-date">\n            <p>{{pressReleaseItem.model.publishDate| date:\'EEEE\' | translate}}\n            {{pressReleaseItem.model.publishDate| date:\'dd\'}}\n            {{pressReleaseItem.model.publishDate| date:\'MMMM\' | translate | limitTo : 3}} {{pressReleaseItem.model.publishDate| date:\'yyyy\'}}</p>\n        </div>\n        <div class="cg-block-media-text">\n            <h3>{{pressReleaseItem.model.title}}</h3>\n        </div>\n        <div class="fa-icon-pdf" ng-if="pressReleaseItem.model.file">\n            {{\'VIEW_PDF\'| translate}}\n        </div>\n    </a>\n</div>\n');
$templateCache.put('/financial-press-release/financial-press-release-items-template.html','<div class="cg-block-media cg-media-block-calendar fin-press-release-item"\n     financial-press-release-item model="item"\n     ng-repeat="item in collection.content" year="{{item.publishDate| date:\'yyyy\'}}">\n</div>\n');
$templateCache.put('/media-material/media-material-item-template.html','<media-asset ng-repeat="asset in collection.content" model="asset"></media-asset>');
$templateCache.put('/press-releases/press-release-item.html','<a class="cg-flex" href="{{pressReleaseItem.model.path}}">\n    <figure style="background-image: url(\'{{pressReleaseItem.model.image.url}}\')">\n        <img src="{{pressReleaseItem.model.image.url}}"/>\n    </figure>\n    <div class="cg-block-media-text">\n        <h3>{{pressReleaseItem.model.title}}</h3>\n        <span>\n            <i class="icon icon-cg-calendar"></i>\n            {{pressReleaseItem.model.publishDate| date:\'dd\'}} {{pressReleaseItem.model.publishDate| date:\'MMMM\' | translate}} {{pressReleaseItem.model.publishDate| date:\'yyyy\'}}\n        </span>\n    </div>\n</a>');
$templateCache.put('/press-releases/press-release-items-template.html','<div class="cg-block-media press-release-item" model="item" ng-repeat="item in collection.content"\n     press-release-item year="{{item.publishDate| date:\'yyyy\'}}">\n</div>\n');
$templateCache.put('/press-releases/press-release.html','[IfEditMode][Component name="cg_design/authoring-tools/html-add-press-release"][/IfEditMode]\n<section ng-controller="pressReleaseController as pressReleaseCtrl">\n\n    <collection ng-if="!pressReleaseCtrl.loading" filters="pressReleaseCtrl.filters"\n                template="pressReleaseCtrl.template" service="pressReleaseCtrl.serviceCallback(param)"\n    ></collection>\n\n    <script type="text/ng-template" id="press-release-asset.html">\n        [Component name="cg_design/press-release/html-financial-press-releasesasmedia-result"]\n\n\n        <div class="col-xs-12 col-sm-6 col-lg-4 cg-block-media" year="[Property field="\n             publishdate" type="content" context="autofill" format="yyyy"]">\n        ho[Element key=\'main-brand\' type=\'content\' context=\'autofill\' format=\'name\']\n        hi[Element key=\'brands\' type=\'content\' context=\'autofill\' format=\'name\']\n        <a href="[URLCmpnt type="\n           content" context="autofill" mode="current"]" class="cg-flex [Plugin:Equals text1="[Element key=\'incontext\' type=\'auto\' context=\'current\']" text2="component-section.options.incontext.yes"]cg-no-events[/Plugin:Equals]">\n        <figure style="background-image: url([Element key="\n                image" type="content" context="autofill" format="url"])" class="[Element key="image-focus-point" type="content" context="autofill"]">\n        <img src="[Element key="\n             image" type="content" context="autofill" format="url"]" alt="[Element key="image" type="content" context="autofill" format="alt"]" title="[Element key="image" type="content" context="autofill" format="alt"]">\n        </figure>\n        <div class="cg-block-media-text">\n            <h3>[Property field="title" type="content" context="autofill"]</h3>\n            <span><i class="icon icon-cg-calendar"></i>[Property field="publishdate" type="content" context="autofill" format="dd"] [Component name="cg_design/common/html-date-mmmm-translated-in-context"] [Property field="publishdate" type="content" context="autofill" format="yyyy"]</span>\n        </div>\n        </a>\n        [Plugin:Matches pattern=".*.pdf" text="[Element key=\'file\' type=\'content\' context=\'autofill\' format=\'filename\']"]\n        <a href="[Element key=\'file\' type=\'content\' context=\'autofill\' format=\'url\']" target="_new" class="icon-cg-pdf"><i\n                class="icon"></i></a>[/Plugin:Matches]\n        </div>\n\n\n    </script>\n\n    <!--\n    <div class="row">\n        <div class="col-md-12">\n            <form class="row cg-form cg-form-pressrelease">\n                <div class="col-md-3">\n                    [Component name="cg_design/filters/html-year"]\n                </div>\n            </form>\n            <div class="row cg-flex-row cg-margin-t30">\n\n    -->');
$templateCache.put('/story-category-component/story-category-component.html','<ul class="story-tags"  ng-class="{\'all\':ctrl.iconCategoriesCount== 4}" ng-if=\'ctrl.iconCategoriesCount != 0\'>\n    <li  ng-repeat="category in ctrl.iconCategories" class="tag" ng-class="category.inactive ? \'inactive tag-\'+category.name:\'active tag-\'+category.name;" >\n    </li>\n</ul>\n');
$templateCache.put('/collection-components/collection/collection.html','<div class="container row">\n    <div class="col-xs-12">\n        <!--[IfEditMode]\u200C[Component name="cg_design/authoring-tools/html-add-digital-asset"]\u200C[/IfEditMode]-->\n        <filters filter-config="collection.filters"></filters>\n    </div>\n</div>\n<div infinite-scroll="collection.getNextPage()" infinite-scroll-disabled="!collection.hasMoreResults" ng-class="{\'container\': collection.template !== \'/media-material/media-material-item-template.html\'}">\n    <div class="">\n        <div ng-class="{\'row cg-flex-row cg-margin-t30\': collection.template !== \'/media-material/media-material-item-template.html\'}"\n             ng-include="collection.template"></div>\n    </div>\n    <div class="row" ng-show="!collection.loading &&  collection.content.length == 0">\n        <div class="button cg-margin-lr15">\n            {{\'NO_RESULTS\' | translate}}\n        </div>\n    </div>\n    <div class="row">\n        <pager pager-data="collection.pagerData"></pager>\n    </div>\n    <div class="row" ng-show="collection.loading">\n        <div class="button cg-margin-lr15">\n            <i aria-hidden="true" class="fa fa-spinner"></i>\n        </div>\n    </div>\n</div>\n');
$templateCache.put('/ui-components/back-to-top/back-to-top.html','<a class="btt btt--active" du-smooth-scroll duration="1000" href="#content" ng-show="backToTopCtrl.shouldBeVisible;"\n   title="{{\'BACK_TO_TOP\' | translate}}">\n    <i aria-hidden="true" class="fa fa-angle-up">\n    </i>\n    <span class="btt__text">\n        {{\'BACK_TO_TOP\' | translate}}\n    </span>\n</a>');
$templateCache.put('/ui-components/selector/selector.html','<div class="cg-form-dropdown">\n    <div class="cg-form-dropdown-selected"\n         ng-class="{\'cg-form-collapsed\' : selector.isClosed() }"\n         ng-click="selector.toggleDropdown()">\n        <span ng-bind="selector.activeOptionName()"></span>\n        <i class="icon"\n           ng-class="{ \'icon-cg-arrow-down\': selector.isClosed(), \'icon-cg-arrow-up\': selector.isOpen() }"></i>\n    </div>\n    <ul class="cg-form-dropdownlist"\n        style="display: block;"\n        ng-show="selector.isOpen()" tw-click-outside="selector.closeDropdown();" ng-model="selector.selection">\n        <li ng-repeat="option in selector.options track by option.id" ng-click="selector.setActive(option)">\n            <label ng-bind="option.title"\n\n                   style="cursor: pointer;"></label>\n        </li>\n    </ul>\n\n    <input type="hidden" name="{{selector.name}}" ng-value="selector.selection.name"/>\n</div>\n');
$templateCache.put('/collection-components/collection/pager/pager.html','<div ng-if="pager.hasNextPage();" class="button active" class="button" ng-click="pager.getNextPage();">\n    {{\'LOAD_MORE\'| translate}}\n</div>\n<div ng-if="!pager.hasNextPage();" class="button">\n    {{\'NOTHING_MORE\' | translate}}\n</div>\n\n');
$templateCache.put('/collection-components/collection/filter/dropdown-filter.html','<selector selection="filter.config.value"\n          options="filter.config.options"\n          all-option-label="{{filter.config.allLabel}}"\n          on-change="filter.applyFilter"></selector>');
$templateCache.put('/collection-components/collection/filter/filters.html','<div class="row cg-form">\n    <div class="col-md-12">\n        <span class="cg-form-description">{{\'FILTER_CONTENT\' | translate}}</span>\n    </div>\n    <div class="col-md-3" ng-repeat="filter in filters.filters">\n\n\n        <dropdown-filter filter-config="filter" ng-show="filter.type === \'select\'"\n                         on-change="filters.addFilter"></dropdown-filter>\n\n        <closable-filter filter-config="filter" ng-show="filter.type === \'deselect\'"\n                         on-change="filters.addFilter"></closable-filter>\n    </div>\n</div>\n');
$templateCache.put('/media-material/media-assets/media-asset/media-asset-modal.html','<div class="cg-mediamaterial-modal ">\n    <div class="cg-mediamaterial-modal-inner" tw-click-outside="modal.dismiss();">\n        <i class="icon icon-cg-close" ng-click="modal.dismiss()" type="content" context="autofill"></i>\n        <figure>\n            <img ng-src="{{ modal.asset.image.url }}" alt="" class="cg-focus-5">\n        </figure>\n        <div class="cg-mediamaterial-modal-description">\n            <span ng-bind="modal.asset.title"></span>\n            <a ng-repeat="image in ::modal.asset.imageDownloadList" ng-href="{{image.downloadUrl}}" download="">\n                <i class="icon icon-cg-download"></i>\n                Download {{::image.imageType | uppercase}} ({{::image.fileSize | filesize:2}})\n            </a>\n        </div>\n    </div>\n</div>');
$templateCache.put('/media-material/media-assets/media-asset/media-asset.html','<div class="col-xs-12 col-sm-6 col-md-4 col-lg-3 cg-digital-asset cg-digital-asset-active">\n    <div class="cg-authoring" ng-if="asset.model.actions">\n        <ul>\n            <li>\n                <a href="{{asset.model.actions.editLink}}" title="Bewerken" class="fa fa-pencil"></a>\n            </li>\n            <li>\n                <a href="{{asset.model.actions.deleteLink}}" title="Delete" class="fa fa-trash"></a></li>\n        </ul>\n    </div>\n    <a class="cg-mediamaterial-block" ng-href="javascript:;" ng-click="asset.presentModal()">\n        <figure ng-style="{\'background-image\': \'url(\'+ asset.model.image.url +\')\'}" class="cg-focus-5">\n            <img ng-src="{{ asset.model.image.url }}" alt="" title="{{ asset.model.title }}">\n        </figure>\n        <span ng-bind="asset.model.title"></span>\n    </a>\n    <media-asset-modal ng-if="asset.isPresentingModal" asset="asset.model">\n    </media-asset-modal>\n</div>');}]);})();
(function () {
  'use strict';

  angular
    .module('cgApp')
    .controller('collapsibleController', collapsibleController);

  collapsibleController.$inject = [];

  /* @ngInject */
  function collapsibleController() {
    var vm = this;
    vm.open = false;
    vm.setToggle = setToggle;
    vm.toggle = toggle;
    vm.getClass = getClass;

    function toggle() {
      vm.open = !vm.open;
    }

    function setToggle(open) {
      vm.open = open;
    }

    function getClass(){
      return vm.open ? 'collapsible open': 'collapsible closed';
    }

  }
})();


(function () {
  'use strict';

  angular
    .module('cgApp')
    .controller('CookiePolicyController', CookiePolicyController);

  /* @ngInject */
  function CookiePolicyController() {
    var vm = this;
    vm.loading = true;
    getCookiePolicyURL();

    ////////////////

    function getCookiePolicyURL() {
      const queryString = window.location.search;
      const ULRParams = new URLSearchParams(queryString);
      const getPolicyURL = ULRParams.get('cookieURL');
      const href = document.querySelector('[data-policyURL]');

      // list of allowed domains
      const allowedDomains = [
        'dreamland.be',
        'collectandgo.be',
        'collectandgo.lu',
        'collectandgo.fr',
        'bioplanet.be',
        'colibrifoundation.org',
        'collishopproffesonal.be',
        'xtrapresent.be',
        'mijnxtra.be',
        'monxtra.be',
        'colruyt.fr',
        'colruyt.lu',
        'colruyt.be',
        'colex-export.com',
        'colruytgroup.com',
        'colruytgroupacademy.be',
        'dats24.be',
        'dreambaby.be',
        'newstory.be',
        'eoly.be',
        'okaycomapct.be',
        'okay.be',
        'ontdekjecolruytwijn.be',
        'tonvincolruyt.be',
        'solucious.be',
        'mijnspar.be',
        'monspar.be',
        'symeta.com',
        'symeta-hybrid.be',
        'voedingskompas.be',
        'cru.be',
        'retailpartnerscolruyt.be',
        'codifrance.fr',
        'bandendeproost.fr',
        'smartwithfood.be',
        'smartwithfood.health',
        'scanpaygo.be',
        'flora-onderzoek.be',
        'fiets.be',
        'mycomfort24.be',
        'mycomfort24.nl',
        'chefrosemary.be',
        'lifetime-app.be',
        'Xpectrum.eu',
        'whislist.dreamland.be',
        'gift.dreamland.be',
        'voucher.dreamland.be',
        'colruyt.collectandgo.be',
        'bioplanet.collectandgo.be',
        'deals.collectandgo.be',
        'colruyt.collectandgo.lu',
        'beenhouwerij.colruyt.be',
        'grandvins.colruyt.be',
        'klassewijnen.colruyt.be',
        'spiritueux.be',
        'sterkedranken.be',
        'jobs.colruyt.be',
        'jobs.colruytgroup.com',
        'nutriscore.colruytgroup.com',
        'productwijzer.colruytgroup.com',
        'customer.dats24.be',
        'professional.dats24.be',
        'liste.dreambaby.be',
        'lijst.dreambaby.be',
        'colruyt.ester.ai',
        'webshop.cru.be',
        'slapen.mycomfort24.be',
        'dormir.mycomfort24.be'
      ];

      // check if param and element is found + if its an allowed domain
      if (getPolicyURL && href && allowedDomains.some(v => getPolicyURL.includes(v))){
        href.setAttribute('data-policyURL', getPolicyURL)
        href.setAttribute('href', getPolicyURL);
      }
    };
  }
})();
(function () {
  'use strict';

  angular
    .module('cgApp')
    .controller('financialPressReleaseController', pressReleaseController);

  pressReleaseController.$inject = ['FilterOptionsService', 'FinancialPressReleaseLogicService'];

  /* @ngInject */
  function pressReleaseController(FilterOptionsService, FinancialPressReleaseLogicService) {
    var vm = this;
    vm.loading = true;

    vm.filters = [];
    vm.template = "/financial-press-release/financial-press-release-items-template.html";
    vm.sort = {field: 'publishdate', order: "desc"};
    vm.serviceCallback = FinancialPressReleaseLogicService.get;
    activate();

    ////////////////

    function activate() {
      return FilterOptionsService.getFinancialReleaseFilters().then(function (filters) {
        vm.filters = filters;
        vm.loading = false;
        return vm.filters;
      });
    }
  }
})();


(function () {
  'use strict';

  angular
    .module('cgApp')
    .controller('mediaController', mediaController);

  mediaController.$inject = ['$location', '_', 'digitalAssetService', '$filter', 'mediaMaterialService'];

  /* @ngInject */
  function mediaController($location, _, digitalAssetService, $filter, mediaMaterialService) {
    var vm = this;
    vm.title = 'mediaController';
    vm.filters = [];
    vm.loading = true;
    vm.sort = {field: 'title', order: "asc"};

    vm.serviceCallback = mediaMaterialService.getMediaMaterial;
    vm.template = "/media-material/media-material-item-template.html";
    activate();

    ////////////////

    function activate() {

      digitalAssetService.all()
        .then(function (assets) {
          var activeBrandFilter = _.find(assets.brands, {
            name: $location.search()['p:brand']
          });

          assets.assetImageType = _.orderBy(assets.assetImageType, [function (e) {
            return e.name === 'all filetypes';
          }, name], ['desc', 'asc']);

          if (assets.assetImageType[0].name === 'all filetypes') {
            assets.assetImageType[0].title = $filter('translate')('ALL_FILETYPES');
          }

          if (assets.brands[0].name === 'all brands') {
            assets.brands[0].title = $filter('translate')('ALL_BRANDS');
          }


          vm.filters.push({
            options: assets.brands,
            value: activeBrandFilter,
            field: "brand",
            type: "select",
            allLabel: $filter('translate')('ALL_BRANDS')
          });

          vm.filters.push({
            options: assets.assetImageType,
            field: "assetType",
            type: "select",
            filterType: "client",
            allLabel: $filter('translate')('ALL_FILETYPES')

          });

          if ($location.search()['p:release'] !== '' && $location.search()['p:release'] !== undefined) {
            var linkedPressRelease = {
              name: $location.search()['p:release']
            };
          }

          vm.filters.push({
            value: linkedPressRelease,
            field: "linkedPressRelease",
            type: "hidden",
            filterType: "client"
          })
          ;
          vm.loading = false;
        });
    }
  }
})();


/*  ------------------------
    Social Share controller
    This controller is used inside the breadcrumbs

    Makes sharing of a page on social media available
*/
(function () {
  'use strict';

  angular
    .module('cgApp').controller('BrandsFilterCtrl', BrandsFilterCtrl);


  BrandsFilterCtrl.$inject = [];

  function BrandsFilterCtrl() {

    var vm = this;

    vm.isFilterVisible = false;
    vm.currentBrand;

    vm.toggleFilter = toggleFilter;
    vm.setBrandFilter = setBrandFilter;

    init();

    function toggleFilter(){
      vm.isFilterVisible = !vm.isFilterVisible;
    }

    function hideFilter(){
      vm.isFilterVisible = false;
    }

    function init(){
      setBrandFilter("belgium")
    }

    function setBrandFilter(brand){
      vm.currentBrand = brand;
      hideFilter();
    }

  }
})();

(function () {
  'use strict';

  /*  ------------------------
      Filter controller
  */
  angular
    .module('cgApp').controller('FilterCtrl',FilterCtrl);

  FilterCtrl.$inject = ['$scope', '$rootScope', '$attrs', '$http' ];

  function FilterCtrl($scope, $rootScope, $attrs, $http) {

    var vm = $scope;
    //Data feed
    var feed = $attrs.feed;

    var templateFilter = $attrs.templateFilter;

    if (templateFilter) {
      feed = feed + '/null/null/null/' + templateFilter;
    } else {
      feed = feed + '/null/null/null/digital-asset';
    }

    //Translations feed;
    var translationsFeed = $attrs.translations;

    //selected brand
    var selectedBrand = $attrs.selectedbrand;

    function loadData() {
      $http({
        url: feed
      }).then(function (data) {
        $scope.filterData = data.data;
        $scope.filterData.brandsActive = false;
        $scope.filterData.currentFilter = '';

        $scope.closeModal = function () {
          $scope.ddBrand = false;
        };
        $scope.showAllBrands = true;
        //For mediamaterial - when brand is in parameter show the title instead of the name
        angular.forEach(data.data.brands, function (v, i) {
          if (v.name === selectedBrand) {
            $scope.ddSelectedValueBrand = v.title;
          }
          //For stories overview page - when brand is in parameter show the title in the filter
          if ($scope.$parent.preBrandUrl && v.name === $scope.$parent.preBrandUrl) {
            $scope.$parent.preBrandTitle = v.title;
          }
        });

      }, function (data) {
        console.info(data);
      });
    }

    $scope.updateMediaFilter = function (a, b, c) {
      $scope.ddFileType = a;
      $scope.clearFilter(b);
      $scope.showCurrentFileType = c;


    };

    //Do we need translations (reference caas file?)
    //If so, load translations first. This can come from a translations service
    loadData();

    //close brands
    $scope.closeBrands = function () {
      $scope.brandsOpen = false;
      if (!$scope.filterData.brandsActive) {
        $scope.current = $scope.filterData.currentFilter;
      }
    };

    //Current active filter (default is empty)
    $scope.currentFilter = $scope.$parent.preBrandUrl || $scope.$parent.preTopicUrl || '';

    //Set the currentFilter to the clicked filter.
    //Unless the currentFilter is already active. Then we disable it again.
    $scope.setFilter = function (name) {
      $scope.currentFilter = $scope.currentFilter != name ? name : '';
    };
    //Check if a filter is active. By comparing it to the currentFilter value.
    $scope.checkFilter = function (name) {
      return $scope.currentFilter == name ? true : false;
    };

    //current filter
    $scope.current = '';
    $scope.brandsOpen = false;

    $scope.toggleBrands = function (type) {
      $scope.current = 'brands';
      $scope.brandsOpen = true;
    };

    $scope.updateFilter = function (cat, type, title) {
      $scope.filterIsActive = true;
      //check filter status
      $scope.setFilter(cat);
      $scope.checkFilter(cat);
      $scope.brandsOpen = false;
      //empty category from url
      $scope.$parent.preBrandUrl = '';
      $scope.$parent.preTopicUrl = '';
      $scope.$parent.preBrand = '';
      $scope.$parent.preTopic = '';
      $scope.$parent.preCat = '';

      if (!$scope.checkFilter(cat)) {
        //if filter is clicked again set category to null
        cat = null;
      } else {
        //reset to page start -> 1
        $scope.$parent.resetStartPage();
      }

      //fix loadmore button
      //$scope.$parent.ti = $scope.$parent.ps*$scope.$parent.pp;

      //set current for buttons (not childs of brands)
      type === 'category' ? $scope.current = cat : $scope.current = 'brands';

      //add current (active filter) to topics
      if (type === 'category') {
        $scope.filterData.currentFilter = cat;
        $scope.filterData.brandsActive = false;
        $scope.$parent.andFilter = null;
        $scope.$parent.preBrandTitle = '';

      }

      //add current (active filter) to topics
      angular.forEach($scope.filterData, function (value, key) {
        if (type === 'brand') {
          $scope.filterData.brandsActive = true;
          $scope.filterData.currentBrand = cat;
          $scope.$parent.preBrandTitle = title;

        }
      });


      //call brands
      if (type === 'brand') {
        $scope.$parent.andFilter = cat;
      }

      //call category
      if (type === 'category') {
        $scope.$parent.filter = cat;
      }

      $scope.$parent.reloadCalls();

      //check if close needs to be displayed on brand filter
      (type === 'brand' && $scope.currentFilter !== '') ? $scope.showCloseBrands = true : $scope.showCloseBrands = false;
    };
  }

})();

(function () {
  'use strict';
  /*  ------------------------
      Form controller
      This controller is used inside the breadcrumbs

      Controller to handle the forms (newsletter, annual report, contact)
  */
  angular
    .module('cgApp')
    .controller('FormCtrl', FormController);


  FormController.$inject = ['$http', '$scope', '$location', '$attrs', '$filter'];

  /* @ngInject */
  function FormController($http, $scope, $location, $attrs, $filter) {
    var vm = $scope;
    vm.test = "hier";
    vm.formInvalid = true;
    vm.formSubmit = false;
    vm.hostUrl = $location.protocol() + '://' + $location.host();

    vm.contactReasons = $filter('translate')('CONTACT_REASONS');

    if ($attrs.type === "brand") {
      vm.brandselected = $attrs.brandselected;
      vm.brandsinfo = JSON.parse($attrs.brandsinfo);

      vm.brands = vm.brandsinfo.brands.filter(function (brand) {
        if (brand.name === vm.brandselected) {
          vm.brandSelection = brand;
          vm.msgtype = brand.type || 'CG CONTACT FORM BRAND CUST SERV';
        }
        return brand.email !== '';
      });
    }

    vm.checkDropDownValid = checkDropDownValid;
    vm.submitCheck = submitCheck;
    vm.brandsSelector = brandsSelector;

    function checkDropDownValid(model) {
      model.$valid ? vm.ddInvalid = false : vm.ddInvalid = true;
    };

    function submitCheck(form) {
      //check if form is invalid
      form.$valid ? vm.formInvalid = false : vm.formInvalid = true;
    };

    function brandsSelector(t, n, b) {
      vm.ddSelectBrand = false;
      vm.brandselected = n;
      vm.ddSelectBrandTitle = t;
      vm.brandSelection = b;
      vm.msgtype = b.type || 'CG CONTACT FORM BRAND CUST SERV';
    };

    if (vm.brandselected) {
      vm.brands.forEach(function (v, i) {
        if (v.name === vm.brandselected) {
          vm.brandSelection = v;
          vm.ddSelectBrandTitle = v.title;
        }
      });
    }
    vm.alterValue = alterValue;

    function alterValue(value) {

      vm.dropdown = value.name;
      vm.selectedDropdown = value.name;
      vm.contactReason = true;
      vm.contactReasonDd = !vm.contactReasonDd;
    }

  };
})();

(function () {
  'use strict';

  angular
    .module('cgApp')
    .controller('MenuCtrl', MenuController);

  MenuController.$inject = ['_',];

  function MenuController(_) {
    var vm = this;
    vm.menuId = 0;
    vm.noHref = '';
    vm.showSearch = false;
    vm.showSuggested = false;
    vm.showMainNav = false;
    vm.closed = false;
    var previousMenuItemId;
    var activeMenuElement = document.getElementsByClassName("cg-current")[0];

    vm.toggleSubNav = toggleSubNav;
    vm.toggleHamburger = toggleHamburger;
    vm.toggleSearch = toggleSearch;

    function toggleSearch() {

      if (vm.menuId === 0) {
        vm.menuId = previousMenuItemId;
        previousMenuItemId = 0;
      } else {
        previousMenuItemId = vm.menuId;
      }

      vm.showSearch = !vm.showSearch;
      // !showOverlay;
      vm.showSuggested = !vm.showSuggested;
    }

    function toggleSubNav(subId, $event) {
      if (angular.element($event.currentTarget).parent().find("a").length >= 2) {
        $event.preventDefault();
      }

      if (!vm.showMainNav) {

        if (vm.menuId === subId) {
          if (activeMenuElement) {
            activeMenuElement.classList.add('cg-current');
          }
          vm.menuId = 0;
          vm.closed = true;

        } else {
          vm.menuId = subId;
          vm.closed = false;
        }

        //Hide and show submenu
        if (activeMenuElement) {
          activeMenuElement.classList.remove('cg-current');
        }

        //Hide and show overlay
        (vm.menuId === 0) ? (vm.showOverlay = false) : (vm.showOverlay = true);
        //Close search
        vm.showSearch = false;

      }
    };

    function toggleHamburger() {
      vm.showMainNav = !vm.showMainNav;
      document.body.classList.toggle("no-scroll");
    };


  }
})();

/*
    Version: 1.0.1
    Updatelog:
            1.0.1:  - Minor changes in searchform ctrl
                    - showSuggested on Menu ctrl
            1.0:    - initial creation of controllers.js
*/

/*  ------------------------
    Menu controller
    This controller is used in the main menu.
*/
(function () {
  'use strict';



  /*  ------------------------
     Press Page Controller
     ------------------------
 */
  angular
    .module('cgApp').controller('PressCtrl', ['$scope', '$rootScope', '$attrs', '$http', 'getProjectFromUrl', function ($scope, $rootScope, $attrs, $http, getProjectFromUrl) {

    $scope.detailUrls = JSON.parse($attrs.detailurls);
    //Data feed
    var feed = $attrs.feed;

    //CurrentPage
    var currentPage = $attrs.ps || 1;

    //Items per page
    var pageSize = $attrs.pp || 10;

    var projectName = '/' + getProjectFromUrl.getProject();

    feed = feed + projectName + '/' + 'null' + '/' + $attrs.category + '/' + $attrs.template + '/' + $attrs.sort + '/' + currentPage + '/' + pageSize + '/' + $attrs.year;

    function loadData() {
      $http({
        url: feed
      }).then(function (data) {
        $scope.press = data.data.content;
        buildPressUrl();

      }, function (data) {
        console.info(data);
      });
    }

    // This function sets the required url depending on the language of the press releases
    function buildPressUrl() {
      angular.forEach($scope.press, function (value, key) {
        var newUrl = $scope.detailUrls.templates[value.templateName] + value[$scope.detailUrls.append];
        if ($scope.detailUrls.append === 'path' && $scope.detailUrls.replace) {
          var newPath = value.path.replace($scope.detailUrls.templates.pressrelease[0], $scope.detailUrls.templates.pressrelease[1]);
          value.url = newPath;
        } else {
          value.url = newUrl;
        }
      });
    }

    loadData();

  }]);


})();

(function () {
  'use strict';
  /*  ------------------------
      Search form controller
      This controller is used inside the header

      Lets users search items through the search input in the header.
  */
  angular
    .module('cgApp')
    .controller('SearchFormCtrl', SearchFormCtrl);

  SearchFormCtrl.$inject = ['$scope', '$rootScope', '$attrs', 'searchService'];

  function SearchFormCtrl($scope, $rootScope, $attrs, searchService) {
    $scope.searchInputText = '';
    $scope.labels = $attrs.labels ? JSON.parse($attrs.labels) : null;
    var fireArr = ['1-search-stories', '4-search-investors', '7-search-press'];
    var query = '';
    $scope.data = [];
    $scope.loadSearchStreamData = function () {
      if (($scope.searchInputText && $scope.searchInputText.length > 3) || ($scope.searchInputField && $scope.searchInputField.length > 3)) {
        $scope.popup = true;
        //  $scope.data = [];
        query = $scope.searchInputText || $scope.searchInputField;
        //Fire of a call to retrieve the results

        searchService.setQuery(query);

        _.each(fireArr, function (category) {

          searchService.setCategory(category);
          searchService.getSearchResult().then(function (data) {
            $scope.data[category] = data.data;
          }, function (data) {
            $scope.error = data;
          });
        });
      } else {
        $scope.popup = false;
      }
    };

    //close search
    $scope.closeSearch = function () {
      $rootScope.toggleSearch = false;
    };

    //create list of last 5 search queries
    var lastFive = JSON.parse(localStorage.getItem('lastQuery')) || [];
    $scope.storeQuery = function (q, r) {
      if (r) {
        var index = lastFive.indexOf(q);
        lastFive.splice(index, 1);

        localStorage.setItem("lastQuery", JSON.stringify(lastFive));
      }
      if (lastFive.indexOf(q) === -1 && !r && q != '') {
        // push only 5 items in array
        if (lastFive.length <= 4) {
          lastFive.push(q);
          localStorage.setItem("lastQuery", JSON.stringify(lastFive));
        } else {
          lastFive.shift();
          lastFive.push(q);
          localStorage.setItem("lastQuery", JSON.stringify(lastFive));
        }
      }
      $scope.storedQueries = JSON.parse(localStorage.getItem("lastQuery"));
    };

    if (localStorage.getItem("lastQuery")) {
      $scope.stQueries = JSON.parse(localStorage.getItem("lastQuery"));
      $scope.stQueries = $scope.stQueries.reverse();
    }

    $scope.deleteFromStored = function (q) {
      var index = $scope.stQueries.indexOf(q);
      $scope.stQueries.splice(index, 1);
      $scope.storeQuery(q, true);
    };

    $scope.searchStored = function (q) {
      $scope.searchInputText = q;
      $scope.searchInputField = q;
    };

    $scope.clearSearch = function () {
      $scope.searchInputText = '';
      $scope.loadSearchStreamData();
    };


  }
})();

(function () {
  'use strict';
  /*  ------------------------
    Search controller
    This controller is used in on the search page

    Lets users search for products, services, publications, posts or backgrounds
*/
  angular
    .module('cgApp').controller('SearchCtrl', SearchCtrl);

  SearchCtrl.$inject = ['$rootScope', '$cookies', '$attrs', '$http', '$sce', '$location', 'translateService', "searchService"];

  function SearchCtrl($rootScope, $cookies, $attrs, $http, $sce, $location, translateService, searchService) {
    var self = this;

    self.setFilter = setFilter;
    self.loadMore = loadMore;

    self.countFilters;
    self.searchEntries = [];
    self.query = $attrs.query;
    self.activeItem = "";
    init();

    function init() {
      self.ps = $attrs.ps;
      searchService.setQuery($attrs.query);
      searchService.setPageSize(self.ps);

      searchService.getCategories().then(function (categories) {
        self.countFilters = categories;
      });

      searchService.getActiveCategory().then(function (activeCategory) {
        self.activeItem = activeCategory;
        setFilter(activeCategory);
      });
    }

    function setFilter(name) {
      self.activeItem = name;

      searchService.setCategory(name);
      return getData();
    };

    function loadMore() {
      searchService.setPageSize(100);
      getData();
    }

    function getData() {
      return searchService.getSearchResult().then(function (resp) {

        self.searchEntries = [];

        _.each(resp.data.searchResults.entries, function (item) {
          self.searchEntries.push(item);
        });

        self.totalResults = resp.data.searchResults.totalResults;
        _.each(self.searchEntries, function (v, i) {
          if (v.documentType === 'com.ibm.workplace.wcm.api.LibraryFileComponent') {
            v.docUrl = v.displayUri.split('/wcm')[1];
          }
        });


        return self.searchEntries;
      }, function (data) {
        self.error = data;
      });
    }
  }
})();

/*  ------------------------
    Social Share controller
    This controller is used inside the breadcrumbs

    Makes sharing of a page on social media available
*/
(function () {
  'use strict';

  angular
    .module('cgApp').controller('SocialShareCtrl', SocialShareCtrl);


  SocialShareCtrl.$inject = ['$location', '$scope'];

  function SocialShareCtrl($location, $scope) {

    var self = this;
    self.location = $location.absUrl();

  }
})();

(function () {
  'use strict';
  /*  ------------------------
      Stream controller
  */
  angular
    .module('cgApp')
    .controller('StreamCtrl', StreamCtrl);

  StreamCtrl.$inject = ['$timeout','$scope', '$rootScope', '$attrs', '$http', '$location', 'StoryService',  'getProjectFromUrl'];

  function StreamCtrl($timeout, $scope, $rootScope, $attrs, $http, $location, StoryService, getProjectFromUrl) {
    var vm = $scope;



    if($attrs.layout !== "grid"){
      vm.numberOfHeroItems = 3
    }else{
      vm.numberOfHeroItems = 0;
    }
    //Translations feed;
    var translationsFeed = $attrs.translations;
    vm.detailUrls = JSON.parse($attrs.detailurls);

    //when the brand or topic is preselted in the url
    vm.preCatUrl = window.location.href.split('/#/')[1] || '';

    //Public render param category first. Then check for filter. If there is no filter use the content categories.
    vm.preBrandUrl = (!$attrs.filteractive ? $attrs.catbrands : $attrs.prpbrands || '');
    vm.preTopicUrl = (!$attrs.filteractive ? $attrs.cattopics : $attrs.prptopics || '');
    vm.preBrandTitle = '';

    //category parameter
    vm.preBrand = vm.preBrandUrl ? (',' + vm.preBrandUrl) : '';

    //CurrentPage
    var currentPage = $attrs.ps || 0;

    //Items per page
    var pageSize = $attrs.pp || 10;

    //Filter
    vm.filter = vm.preTopicUrl || $attrs.filter || null;

    //And filter
    vm.andFilter = $attrs.andFilter || null;

    vm.loadMoreActive = false;

    vm.data = {};
    //Template
    var tmp = $attrs.tmp || null;

    var brand = $attrs.brand ? ',' + $attrs.brand : '';

    //Max total of pinned items
    var totalPinned = 0;

    //Max total of normal items
    var totalNormal = 0;

    //Combination of max pinned and max normal items
    var totalMax = 0;

    //Total items returned from the serice (this can be more then we show at the moment)
    var totalBuffer = 0;

    //Check if we're done returning pinned items
    var pinnedDone = false;

    //Total items shown
    vm.totalShow = currentPage * pageSize;

    var projectName = '/' + getProjectFromUrl.getProject();

    //Function to retrieve pinned items
    //fire a call to get pinned items (currentPage - 1) tot (totalShow)
    vm.reloadCalls = reloadCalls;
    vm.resetStartPage = resetStartPage;
    //When the user click on load more
    vm.loadMore = loadMore;

    init();


    //Start the service
    function init() {
      pinnedDone = false;
      totalBuffer = 0;
      resetStartPage();
      vm.data.content = [];
      if (!$attrs.keywords) {
        getPinned();
      } else {
        getKeywordItems();
      }
    }


    function processResult(response) {
      _.forEach(response.data.content, function (item) {
        item.iconCategories = StoryService.provideCategoryIcons(item);
        item.iconCategoriesCount =  _.filter(item.iconCategories, function(cat){return !cat.inactive}).length

      });

      vm.data.content.push.apply(vm.data.content, response.data.content);

      createGrid();
      totalBuffer += response.data.content.length;


      return response;
    }


    function getPinned() {
      vm.dataLoading = true;


      var url =  $attrs.feed + projectName + '/' + vm.filter + '/' + (vm.andFilter ? 'sticky,' + vm.andFilter : 'sticky') + vm.preBrand + brand + '/' + tmp + '/' + ($attrs.sort || null) + '/' + currentPage + '/' + pageSize;
      $http({
        url: url
      }).then(function (response) {
        response = processResult(response);

        totalPinned = response.data.totalResults;

        if (totalPinned < pageSize * currentPage) {
          pinnedDone = true;
          getItems();
        } else {
          totalMax = totalPinned + totalNormal;
          showLoadMore();
        }
        $timeout(function(){
          objectFitImages(document.querySelectorAll(".story img"));
        }, 0);
      }, function (response) {
        console.error(response);
      });
    }

    //Function to retrieve normal items
    //fire a call to get normal items (currentPage - 1) tot (totalShow)
    function getItems() {
      vm.dataLoading = true;

      var url =$attrs.feed + projectName + '/' + vm.filter + '/' + (vm.andFilter ? 'not-sticky,' + vm.andFilter : 'not-sticky') + vm.preBrand + brand + '/' + tmp + '/' + ($attrs.sort || null) + '/' + currentPage + '/' + pageSize

      $http({
        url: url
      }).then(function (response) {
        response = processResult(response);

        totalNormal = response.data.totalResults;
        totalMax = totalPinned + totalNormal;
        showLoadMore();
        $timeout(function(){
          objectFitImages(document.querySelectorAll(".story img"));
        }, 0);
      }, function (response) {
        console.error(response);
      });
    }


    //Function to retrieve feed filtered by keyword
    function getKeywordItems() {
      console.log('getKeywordItems');

      vm.dataLoading = true;
      //fire a call to get normal items (currentPage - 1) tot (totalShow)
      var url = $attrs.feed + projectName + '/' + $attrs.keywords + '/' + tmp + '/' + ($attrs.sort || null) + '/' + currentPage + '/' + pageSize;



      $http({
        url: url
      }).then(function (response) {
        response = processResult(response);
        totalNormal = response.data.totalResults;
        totalMax = totalPinned + totalNormal;
        showLoadMore();
        $timeout(function(){
          objectFitImages(document.querySelectorAll(".story img"));
        }, 0);

      }, function (response) {
        console.error(response);
      });
    }


    //Check if we still have to display the load more button
    function showLoadMore() {
      vm.loadMoreActive = (vm.totalShow < totalMax) ? true : false;
      vm.dataLoading = false;
    }

    function buildUrl() {
      angular.forEach(vm.data.content, function (value, key) {
        var newUrl = vm.detailUrls.templates[value.templateName] + value[vm.detailUrls.append];
        if (vm.detailUrls.append === 'path' && vm.detailUrls.replace) {
          var newPath = value.path.replace(vm.detailUrls.templates.story[0], vm.detailUrls.templates.story[1]);
          value.url = newPath;
        } else {
          value.url = newUrl;
        }
      });
    }

    function activeBrands() {
      vm.activeBrands = [];

      //add news to data
      angular.forEach(vm.data.content, function (value, key) {
        angular.forEach(value.categories, function (v, k) {
          vm.activeBrands.push(v.name);
        });
      });

      //remove duplicates
      vm.activeBrandsArr = vm.activeBrands.reduce(function (a, b) {
        if (a.indexOf(b) < 0) a.push(b);
        return a;
      }, []);

      // one liner
      return vm.activeBrands.reduce(function (a, b) {
        if (a.indexOf(b) < 0) a.push(b);
        return a;
      }, []);
    }

    //add grid template to every item
    function createGrid() {
      buildUrl();
      activeBrands();
    }

    function reloadCalls() {
      init();
    };

    function resetStartPage() {
      currentPage = $attrs.ps || 0;
    };

    function loadMore() {
      currentPage++;
      vm.totalShow = currentPage * pageSize;

      if (totalBuffer != totalMax) {
        if (!$attrs.keywords) {
          if (pinnedDone) {
            getItems();
          } else {
            getPinned();
          }
        } else {
          getKeywordItems();
        }
      } else {
        showLoadMore();
      }
    };
  };
})();

(function () {
  'use strict';

  angular
    .module('cgApp')
    .controller('pressReleaseController', pressReleaseController);

  pressReleaseController.$inject = ['FilterOptionsService', 'PressReleaseLogicService'];

  /* @ngInject */
  function pressReleaseController(FilterOptionsService, PressReleaseLogicService) {
    var vm = this;
    vm.loading = true;

    vm.filters = [];
    vm.template = "/press-releases/press-release-items-template.html";
    vm.sort = {field: 'publishdate', order: "desc"};
    vm.serviceCallback = PressReleaseLogicService.get;
    activate();

    ////////////////


    function activate() {
      return FilterOptionsService.getPressReleaseFilters().then(function (filters) {
        vm.filters = filters;
        vm.loading = false;
        return vm.filters;
      });
    }
  }
})();


(function () {
  'use strict';

  angular
    .module('cgApp')
    .directive('financialPressReleaseItem', financialPressReleaseItem);

  financialPressReleaseItem.$inject = [];

  /* @ngInject */
  function financialPressReleaseItem() {
    var directive = {
      bindToController: true,
      templateUrl: '/financial-press-release/financial-press-release-item.html',
      controller: FinancialPressReleaseItemController,
      controllerAs: 'pressReleaseItem',
      link: link,
      restrict:
        'EA',
      scope:
        {
          model: '='
        }
    };
    return directive;

    function link(scope, element, attrs) {
    }
  }

  FinancialPressReleaseItemController.$inject = [];

  /* @ngInject */
  function FinancialPressReleaseItemController() {
    var vm = this;
  }
})();



(function () {
  'use strict';

  angular
    .module('cgApp')
    .directive('pressReleaseItem', pressReleaseItem);

  pressReleaseItem.$inject = [];

  /* @ngInject */
  function pressReleaseItem() {
    var directive = {
      bindToController: true,
      templateUrl: '/press-releases/press-release-item.html',
      controller: PressReleaseItemController,
      controllerAs: 'pressReleaseItem',
      link: link,
      restrict:
        'EA',
      scope:
        {
          model: '='
        }
    };
    return directive;

    function link(scope, element, attrs) {
    }
  }

  PressReleaseItemController.$inject = [];

  /* @ngInject */
  function PressReleaseItemController() {
    var vm = this;
  }
})();



(function () {
  'use strict';

  angular
    .module('cgApp')
    .directive('storyCategory', storyCategory);

  storyCategory.$inject = [];

  /* @ngInject */
  function storyCategory() {
    var directive = {
      bindToController: true,
      templateUrl: '/story-category-component/story-category-component.html',
      controller: StoryCategoryController,
      controllerAs: 'ctrl',
      link: link,
      restrict:
        'E',
      scope:
        {
          categories: '='
        }
    };
    return directive;

    function link(scope, element, attrs) {
    }
  }

  StoryCategoryController.$inject = ['StoryService'];

  /* @ngInject */
  function StoryCategoryController(StoryService) {
    var vm = this;



    activate();

    function activate(){

      _.remove(vm.categories, function(cat) {
        return cat === '';
      })
      vm.categories = _.map(vm.categories,function(cat){
        return {
          name:_.trim(cat)
        }
      });
      console.log(vm.categories);
      vm.iconCategories = StoryService.provideCategoryIcons({categories: vm.categories});
      vm.iconCategoriesCount =  _.filter(vm.iconCategories, function(cat){return !cat.inactive}).length

    }
  }
})();


(function () {
  'use strict';

  angular
    .module('cgApp')
    .directive('editableArea', editableArea);

  editableArea.$inject = [];

  /* @ngInject */
  function editableArea() {
    var directive = {
      bindToController: true,
      template: '<span' +
        'test</span><div ng-include="editableArea.template"></div>',
      controller: ControllerName,
      controllerAs: 'editableArea',
      link: link,
      restrict: 'EA',
      scope: {
        template: "="
      }
    };
    return directive;

    function link(scope, element, attrs) {

    }
  }

  ControllerName.$inject = [];

  /* @ngInject */
  function ControllerName() {
  }

})();


(function () {
    'use strict';

    angular
      .module('cgApp')
      .directive('collection', CollectionDirective);

    CollectionDirective.$inject = [];

    /* @ngInject */
    function CollectionDirective() {
      var directive = {
        templateUrl: '/collection-components/collection/collection.html',
        bindToController: true,
        controller: CollectionController,
        controllerAs: 'collection',
        link: link,
        restrict: 'E',
        scope: {
          filters: '=',
          template: '=',
          service: '&',
          sort: "="
        }
      };
      return directive;

      function link(scope, element, attrs) {

      }
    }

    CollectionController.$inject = ['_', '$filter'];

    /* @ngInject */
    function CollectionController(_, $filter) {
      var vm = this;
      var page;
      var limit;

      vm.loading = false;
      vm.content;
      vm.filter;
      vm.content = [];
      vm.applyFilter = applyFilter;
      vm.getNextPage = getNextPage;

      activate();

      function initPager() {
        page = 1;
        limit = 20;
      }

      function init() {
        var filter = {};
        _.each(vm.filters, function (filterItem) {
          if (filterItem.value) {
            filter[filterItem.field] = {
              value: filterItem.value.name,
              filterType: filterItem.filterType
            };
          }
        });

        applyFilter(filter);
      }

      function activate() {
        //TODO set default filters???
        vm.content = [];
        vm.filter = {};

        vm.hasMoreResults = true;
        initPager();
        init();
      }

      function applyFilter(filterObject) {
        vm.filter = filterObject;

        vm.content = [];
        initPager();
        getData();
      };

      function getData() {
        vm.loading = true;
        var param = {};
        param.page = page;
        param.limit = limit;

        var filter = {};

        _.forOwn(vm.filter, function (obj, key) {

          if (obj.filterType === 'client') {
            if (obj.value.indexOf('all') == -1) {
              filter[key] = obj.value;
            }

          } else {
            param[key] = obj.value;
          }
        });

        param.sort = vm.sort.field + "-" + vm.sort.order;
        var temp = vm.service({'param': param});
        if (temp.hasOwnProperty('$promise')) {
          temp = temp.$promise;
        }

        temp.then(function (response) {
          if (response.startPage === 1) {
            vm.content.splice(0, vm.content.length);
          }
          vm.content = vm.content.concat(_.filter(response.content, filter));
          vm.content = $filter('orderBy')(vm.content, vm.sort.field);
          delete response.content;
          vm.pagerData = response;

          vm.hasMoreResults = (response.pageSize * response.startPage < response.totalResults);
        }).finally(function () {
          vm.loading = false;
        });
      }

      function getNextPage() {
        page += 1;
        getData();
      }
    }
  }
)();


(function () {
  'use strict';

  angular
    .module('cgApp')
    .directive('backToTop', backToTop);

  backToTop.$inject = ["$window"];

  /* @ngInject */
  function backToTop($window) {
    var directive = {
      bindToController: true,
      controller: backToTopCtrl,
      controllerAs: 'backToTopCtrl',
      templateUrl: "/ui-components/back-to-top/back-to-top.html",
      restrict: 'E',
      scope: {}
    };
    return directive;
  }


  backToTopCtrl.$inject = ['$rootScope', '$window', '$document'];

  /* @ngInject */
  function backToTopCtrl($rootScope, $window, $document) {

    var self = this;
    self.shouldBeVisible = false;
    var scrollMinimum = $window.innerHeight * 3;

    angular.element($document).bind("scroll", function () {
      self.shouldBeVisible = $window.pageYOffset >= scrollMinimum && $window.innerWidth >= 750;
      $rootScope.$apply();
    });

  }
})();


(function () {
  'use strict';

  angular
    .module('cgApp')
    .directive('selector', selector);

  selector.$inject = [];

  /* @ngInject */
  function selector() {
    var directive = {
      bindToController: true,
      controller: SelectorController,
      controllerAs: 'selector',
      templateUrl: "/ui-components/selector/selector.html",
      restrict: 'E',
      scope: {
        selection: '=?selection',
        options: '=',
        onChange: "&",
        allOptionLabel: "@",
        name: "@"
      }
    };
    return directive;
  }

  SelectorController.$inject = [];

  function SelectorController() {
    var vm = this;
    var isOpenSelector = false;

    vm.activeOptionName = activeOptionName;
    vm.setActive = setActive;
    vm.isOpen = isOpen;
    vm.isClosed = isClosed;
    vm.closeDropdown = closeDropdown;
    vm.openDropdown = openDropdown;
    vm.toggleDropdown = toggleDropdown;

    function setActive(option) {
      vm.selection = option;
      vm.onChange()(option);
      closeDropdown();
    }

    function activeOptionName() {
      return vm.selection ? vm.selection.title : vm.allOptionLabel;
    }

    function isOpen() {
      return isOpenSelector;
    }

    function isClosed() {
      return !vm.isOpen();
    }

    function closeDropdown() {
      isOpenSelector = false;
    }

    function openDropdown() {
      isOpenSelector = true;
    }

    function toggleDropdown() {
      isOpenSelector = !isOpenSelector;
    }
  }
})();















(function () {
  'use strict';

  angular
    .module('cgApp')
    .directive('dropdownFilter', dropdownFilter);

  dropdownFilter.$inject = [];

  /* @ngInject */
  function dropdownFilter() {
    var directive = {
      templateUrl: "/collection-components/collection/filter/dropdown-filter.html",
      bindToController: true,
      controller: dropdownFilterController,
      controllerAs: 'filter',
      link: link,
      restrict: 'E',
      scope: {
        config: "=filterConfig",
        onChange: "&"
      }
    };
    return directive;

    function link(scope, element, attrs, parentCtrl) {
      scope.filter.parent = parentCtrl;
    }
  }

  dropdownFilterController.$inject = [];

  /* @ngInject */
  function dropdownFilterController() {

    var vm = this;
    vm.applyFilter = applyFilter;

    function applyFilter(value) {
      vm.onChange()(vm.config.field, value.name === 'all brands' ? 'null' : value.name === 'all years' ? '' : value.name, vm.config.filterType);
    }


  }

})();


(function () {
  'use strict';

  angular
    .module('cgApp')
    .directive('filters', filters);

  filters.$inject = [];

  /* @ngInject */
  function filters() {
    var directive = {
      templateUrl: "/collection-components/collection/filter/filters.html",
      require: "^collection",
      link: link,
      bindToController: true,
      controller: FilterController,
      controllerAs: 'filters',

      restrict: 'E',
      scope: {
        filters: "=filterConfig"
      }
    };
    return directive;

    function link(scope, element, attrs, parentCtrl) {


      scope.filters.parent = parentCtrl;
      scope.filters.activate();
    }
  }

  FilterController.$inject = ['_'];

  /* @ngInject */
  function FilterController(_) {

    var vm = this;

    vm.applyFilters = applyFilters;
    vm.addFilter = addFilter;
    var filter = {};


    function addFilter(field, value, type) {
      if (value === undefined || value === null) {
        delete filter[field];
      } else {
        filter[field] = {filterType: type, value: value};
      }

      applyFilters();
    }


    vm.activate = activate;

    function activate() {

      filter = {};


      _.each(vm.filters, function (filterItem) {
        if (filterItem.value) {
          filter[filterItem.field] = {
            value: filterItem.value.name,
            filterType: filterItem.filterType
          };
        }
      });

      applyFilters(true);
    }

    function applyFilters(keepHiddenFilters) {


      // remove hidden filters
      if (!keepHiddenFilters) {
        _.each(vm.filters, function (filterItem) {
          if (filterItem.type === 'hidden' && filter.hasOwnProperty(filterItem.field)) {

            delete filter[filterItem.field];
          }
        });

      }

      vm.parent.applyFilter(filter);

    }


  }

})();


(function () {
  'use strict';

  angular
    .module('cgApp')
    .directive('pager', pager);

  pager.$inject = [];

  /* @ngInject */
  function pager() {
    var directive = {
      templateUrl: "/collection-components/collection/pager/pager.html",

      bindToController: true,
      controller: PagerController,
      controllerAs: 'pager',
      require: "^collection",
      link: link,
      restrict: 'E',
      scope: {
        params: "=pagerData"
      }
    };
    return directive;

    function link(scope, element, attrs, parentCtrl) {
      scope.pager.getNextPage = parentCtrl.getNextPage;

    }
  }

  PagerController.$inject = ['$scope'];

  /* @ngInject */
  function PagerController($scope) {
    var vm = this;

    vm.hasNextPage = hasNextPage;
    vm.hasMoreResults = true;

    function hasNextPage() {
      return vm.hasMoreResults;
    }

    $scope.$watch(function () {
      return vm.params;
    }, function (newVal, oldVal) {
      var p = vm.params || {};
      vm.hasMoreResults = (p.pageSize * p.startPage < p.totalResults);
    }, true);
  }

})();


(function () {
  'use strict';

  angular
    .module('cgApp')
    .directive('mediaAssetModal', mediaAssetModal);

  mediaAssetModal.$inject = [];

  /* @ngInject */
  function mediaAssetModal() {
    var directive = {

      templateUrl: '/media-material/media-assets/media-asset/media-asset-modal.html',
      bindToController: true,
      controller: mediaAssetModalController,
      controllerAs: 'modal',
      require: '^mediaAsset',
      link: link,
      restrict: 'E',
      scope: {
        asset: "="
      }
    };
    return directive;

    function link(scope, element, attrs, parentCtrl) {
      scope.modal.assetController = parentCtrl;
    }
  }

  mediaAssetModalController.$inject = [];

  /* @ngInject */
  function mediaAssetModalController() {
    var vm = this;

    vm.dismiss = dismiss;

    function dismiss() {
      vm.assetController.isPresentingModal = false;
    };
  }

})();


(function () {
  'use strict';

  angular
    .module('cgApp')
    .directive('mediaAsset', mediaAsset);

  mediaAsset.$inject = [];

  /* @ngInject */
  function mediaAsset() {
    var directive = {
      bindToController: true,
      templateUrl: '/media-material/media-assets/media-asset/media-asset.html',
      controller: MediaAssetController,
      controllerAs: 'asset',
      link: link,
      restrict:
        'E',
      scope:
        {
          model: '='
        }
    };
    return directive;

    function link(scope, element, attrs) {
    }
  }

  MediaAssetController.$inject = [];

  /* @ngInject */
  function MediaAssetController() {
    var vm = this;

    vm.presentModal = presentModal;
    vm.hideModal = hideModal;

    function presentModal() {
      vm.isPresentingModal = true;
    }

    function hideModal() {
      vm.isPresentingModal = false;
    }
  }
})();


/*global angular */

(function () {
  "use strict";

  // -- MODULE DECLARATION
  angular.module("cgApp")

    // FILTER
    .filter("filesize", function () {

      /**
       * An array of units, starting at bytes and ending with yottabytes.
       */
      var units = ["B", "kB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"];

      return function (bytes, precision) {

        // validate 'bytes'
        if (isNaN(parseFloat(bytes))) {
          return "-";
        }
        if (bytes < 1) {
          return "0 B";
        }

        // validate 'precision'
        if (isNaN(precision)) {
          precision = 1;
        }

        var unitIndex = Math.floor(Math.log(bytes) / Math.log(1024)),
          value = bytes / Math.pow(1024, unitIndex);

        return value.toFixed(precision) + " " + units[unitIndex];
      };
    });
})();

(function () {
  'use strict';

  angular
    .module('colruyt.translate')
    .filter('translate', translate);

  translate.$inject = ['translateService'];

  function translate(translateService) {

    return translateFilter;

    ////////////////

    function translateFilter(key) {
      return translateService.getTranslation(key);
    }
  }
})();


(function () {
  'use strict';

  angular
    .module('cgApp')
    .service('digitalAssetService', digitalAssetService);

  digitalAssetService.$inject = ['$resource', 'apiRoot', 'translateService'];

  /* @ngInject */
  function digitalAssetService($resource, apiRoot, translateService) {
    return {
      all: function () {
        return $resource(apiRoot + '/ColruytGroupWCMService/wcm/service/filters/' + translateService.getCurrentLanguage() + '/cg/null/null/null/digital-asset').get().$promise;
      }
    };
  }
})();

(function () {
  'use strict';

  angular
    .module('cgApp')
    .service('Media', MediaService);

  MediaService.$inject = ['$resource', 'apiRoot', 'CONFIG'];

  function MediaService($resource, apiRoot, CONFIG) {
    return $resource(
      apiRoot + CONFIG.feed + '/null//:brand/null/digital-asset/:sort/:page/:limit', {
        brand: 'null',
        page: 0,
        limit: 5,
        sort: 'title-asc',

      });
  };
})();


(function () {
  'use strict';

  angular
    .module('cgApp')
    .service('StoryService', StoryService);

  StoryService.$inject = [];

  function StoryService() {
   return {
     provideCategoryIcons : provideCategoryIcons
   }
  };

  function provideCategoryIcons(story){
    var iconCategories = _.filter(story.categories, function (cat) {
      return cat.name === "health" ||
        cat.name === "human-society" ||
        cat.name === "environment" ||
        cat.name === "animal-welfare"}
    )

    var iconsCount = iconCategories.length;

    iconCategories.push({
      name : "health",
      inactive:true
    })
    iconCategories.push({
      name : "human-society",
      inactive:true
    })
    iconCategories.push({
      name : "animal-welfare",
      inactive:true
    })
    iconCategories.push({
      name : "environment",
      inactive:true
    })

    iconCategories = _.uniqBy(iconCategories, 'name');

    iconCategories = _.forEach(iconCategories, function(item) {
      switch (item.name) {
        case "health":
          item.weight=1
          return 0;
          break;
        case "human-society":
          item.weight=2
          break;
        case "animal-welfare":
          item.weight=3
          break;
        case "environment":
          item.weight=4
          break;
        default:
          return 10;
      }
    });

    return _.sortBy( iconCategories,
      function (cat) {
        switch (iconsCount) {
          case 1:
            var active =  _.first(_.filter(iconCategories, function(item){return !item.inactive}));
            return (active.weight > cat.weight ? cat.weight+4 : cat.weight)* -1;
            break;
          case 2:
            var activeItems =   _.map(_.filter(iconCategories, function(item){return !item.inactive}), 'weight')
            return (cat.inactive ? _.max(activeItems) % _.min(activeItems) === 0 ?  cat.weight+4 : Math.abs(cat.weight - 10) : cat.weight )* -1;
            break;
          case 3:
            var inactive =  _.first(_.filter(iconCategories, function(item){return item.inactive}));
            return (inactive.weight >= cat.weight ? cat.weight+4 : cat.weight )* -1;
            break;
          case 4:
            return cat.weight
            break;
          default:
            return 10;
        }
      });

  }
})();


(function () {
  'use strict';

  angular
    .module('cgApp')
    .factory('FinancialPressReleaseDataService', FinancialPressReleaseDataService);

  FinancialPressReleaseDataService.$inject = ['$resource', 'apiRoot', 'translateService'];

  /* @ngInject */
  function FinancialPressReleaseDataService($resource, apiRoot, translateService) {
    return $resource(apiRoot + '/ColruytGroupWCMService/wcm/service/stream/' + translateService.getCurrentLanguage() + '/cg/null/null/fin-press-release/pressrelease/:sort/:page/:limit/:year', {
      year: 0,
      page: 0,
      limit: 5,
      sort: 'publishdate-desc'
    });
  }
})();

(function () {
  'use strict';

  angular
    .module('cgApp')
    .factory('FinancialPressReleaseLogicService', FinancialPressReleaseLogicService);

  FinancialPressReleaseLogicService.$inject = ["FinancialPressReleaseDataService", "CONFIG"];

  /* @ngInject */
  function FinancialPressReleaseLogicService(FinancialPressReleaseDataService, CONFIG) {
    var service = {};
    service.get = get;
    return service;

    ////////////////
    function get(param) {
      return FinancialPressReleaseDataService.get(param).$promise.then(function (response) {

        _.forEach(response.content, function (value, key) {
          if (value.path && CONFIG.detailUrl.append === 'path' && CONFIG.detailUrl.replace) {
            value.path = value.path.replace(CONFIG.detailUrl.templates.pressrelease[0], CONFIG.detailUrl.templates.pressrelease[1]);
          }
        });
        return response;
      });
    };
  }
})();


(function () {
  'use strict';

  angular
    .module('cgApp')
    .service('DigitalAssets', DigitalAssetsService);

  DigitalAssetsService.$inject = ['$resource', 'translateService'];

  function DigitalAssetsService($resource, translateService) {
    return $resource('ColruytGroupWCMService/wcm/service/filters/' + translateService.getCurrentLanguage() + '/cg/null/null/null/digital-asset');
  };
})();

(function () {
  'use strict';

  angular
    .module('cgApp')
    .factory('mediaMaterialService', mediaMaterialService);

  mediaMaterialService.$inject = ['_', 'Media', 'MediaMaterialEditLinks'];

  /* @ngInject */
  function mediaMaterialService(_, Media, MediaMaterialEditLinks) {
    var service = {
      getMediaMaterial: getMediaMaterial
    };
    return service;

    ////////////////

    function getMediaMaterial(param) {
      return Media.get(param).$promise.then(enrichResponse);
    }

    function enrichResponse(response) {
      _.each(response.content, function (item) {
        if (!item.actions) {
          item.actions = MediaMaterialEditLinks[item.uuid] ? MediaMaterialEditLinks[item.uuid] : item.actions;
          if (item.actions) {
            item.actions.editLink = _.unescape(item.actions.editLink);
            item.actions.deleteLink = _.unescape(item.actions.deleteLink);
          }
        }
      });
      return response;
    }
  }
})();


(function () {
  'use strict';

  angular
    .module('cgApp')
    .service('FilterOptionsService', FilterOptionsService);

  FilterOptionsService.$inject = ['$q', '$filter', '_', 'digitalAssetService'];

  /* @ngInject */
  function FilterOptionsService($q, $filter, _, digitalAssetService) {
    this.getPressReleaseFilters = getPressReleaseFilters;
    this.getFinancialReleaseFilters = getFinancialPressReleaseFilters;

    ////////////////

    function getPressReleaseFilters() {
      var filters = [];
      return getOptions().then(function (serverOptions) {


        serverOptions.Years = _.orderBy(serverOptions.Years, [function (e) {
          return e.name === 'all years';
        }, function (e) {
          if (!isNaN(e.name)) {
            return parseInt(e.name);
          }
          return e.name;
        }
        ], ['desc', 'desc']);
        var currentYear = (new Date()).getFullYear();

        var activeYearOption = _.find(serverOptions.Years, function (e) {
          return e.name == currentYear;
        });

        if (serverOptions.Years[0].name === 'all years') {
          serverOptions.Years[0].name = 0;
          serverOptions.Years[0].title = $filter('translate')('ALL_YEARS');
        }
        if (serverOptions.brands[0].name === 'all brands') {
          serverOptions.brands[0].title = $filter('translate')('ALL_BRANDS');
        }

        filters.push(createFilter(serverOptions.Years, activeYearOption, 'year', 'select', $filter('translate')('ALL_YEARS')));
        filters.push(createFilter(serverOptions.brands, null, 'brand', 'select', $filter('translate')('ALL_BRANDS')));
        return filters;
      });
    }

    function getFinancialPressReleaseFilters() {
      var filters = [];
      return getOptions().then(function (serverOptions) {

        serverOptions.financialYears = _.orderBy(serverOptions.financialYears, [function (e) {
          return e.name === 'all years';
        }, function (e) {
          if (!isNaN(e.name)) {
            return parseInt(e.name);
          }
          return e.name;
        }
        ], ['desc', 'desc']);

        var activeYearOption = _.find(serverOptions.financialYears, function (e) {
          return e.name == (new Date()).getFullYear();
        });

        if (serverOptions.financialYears[0].name === 'all years') {
          serverOptions.financialYears[0].name = 0;
          serverOptions.financialYears[0].title = $filter('translate')('ALL_YEARS');
        }

        filters.push(createFilter(serverOptions.financialYears, activeYearOption, 'year', 'select', $filter('translate')('ALL_YEARS')));
        return filters;
      });
    }

    function getOptions() {
      return digitalAssetService.all();
    }
  }


  function createFilter(options, value, fieldName, type, allLabel) {
    return {
      options: options,
      value: value,
      field: fieldName,
      type: type,
      allLabel: allLabel
    };
  }
})();


(function () {
  'use strict';

  angular
    .module('cgApp')
    .factory('PressReleaseDataService', PressReleaseDataService);

  PressReleaseDataService.$inject = ['$resource', 'apiRoot', 'translateService'];

  /* @ngInject */
  function PressReleaseDataService($resource, apiRoot, translateService) {
    return $resource(apiRoot + '/ColruytGroupWCMService/wcm/service/stream/' + translateService.getCurrentLanguage() + '/cg/null/null/press-release,:brand/pressrelease/:sort/:page/:limit/:year', {
      year: 0,
      brand: 'null',
      page: 0,
      limit: 5,
      sort: 'publishdate-desc'
    });
  }
})();

(function () {
  'use strict';

  angular
    .module('cgApp')
    .factory('PressReleaseLogicService', PressReleaseLogicService);

  PressReleaseLogicService.$inject = ["PressReleaseDataService", "CONFIG"];

  /* @ngInject */
  function PressReleaseLogicService(PressReleaseDataService, CONFIG) {
    var service = {};
    service.get = get;
    return service;

    ////////////////
    function get(param) {
      return PressReleaseDataService.get(param).$promise.then(function (response) {

        _.forEach(response.content, function (value, key) {
          if (value.path && CONFIG.detailUrl.append === 'path' && CONFIG.detailUrl.replace) {
            value.path = value.path.replace(CONFIG.detailUrl.templates.pressrelease[0], CONFIG.detailUrl.templates.pressrelease[1]);
          }
        });
        return response;
      });
    };
  }
})();


(function () {
  'use strict';

  angular
    .module('cgApp')
    .factory('searchService', searchService);

  searchService.$inject = ["$http", "$q", "SEARCH_CONFIG", 'StoryService', "$cookies", "translateService"];

  /* @ngInject */
  function searchService($http, $q, SEARCH_CONFIG, StoryService, $cookies, translateService) {
    var self = this;
    var categories = [];
    self.catCounts = {};
    self.pageSize = 10;
    var calls = [];
    var service = {
      getCounts: getCounts,
      getCategories: getCategories,
      getSearchResult: getSearchResult,
      setQuery: setQuery,
      setPageSize: setPageSize,
      setCategory: setCategory,
      getActiveCategory: getActiveCategory
    };
    return service;


    ////////////////

    function setQuery(query) {
      self.query = query;
    }

    function setPageSize(pageSize) {
      self.pageSize = pageSize;
    }

    function setCategory(category) {
      self.category = category;
    }

    function getActiveCategory() {

      return getCounts().then(function (categories) {
        _.forEach(categories, function (number, category) {
          if (self.catCounts[category] !== 0) {
            self.activeCat = category;
            self.category = category;
            return false;
          }
        });
        return self.activeCat;
      });
    }

    function getCounts() {
      return getCategories().then(function (categories) {
        _.each(categories, function (value, category) {
          calls.push(getSearchResultForCategory(category).then(function (response) {
            self.catCounts[category] = _.get(response, 'data.searchResults.totalResults', 0);
            return self.catCounts[category];
          }));
        });
        return $q.all(calls).then(function () {
          return self.catCounts;
        });
      });
    }

    function getCategories() {
      categories = _.map(document.getElementsByClassName('cg-filter'), 'attributes["data-key"].value');
      _.each(categories, function (category) {
        self.catCounts[category] = 0;
      });
      return $q.when(self.catCounts);
    }

    function getSearchResult() {
      //  $cookies.put("com.ibm.wps.state.preprocessors.locale.LanguageCookie", translateService.getCurrentLanguage());
      if (self.query) {
        return $http({
          cache: true,
          url: SEARCH_CONFIG.feed + 'search-' + self.pageSize + '-config&search_query=' + self.query + '&search_categories=' + self.category + '&mime-type=application/json'
        }).then(function(response){
          if(self.category === "1-search-stories" && _.get(response, 'data.searchResults.totalResults', 0) >= 1){
            _.forEach(response.data.searchResults.entries, function(story){
              story.categories = story.topics.split(',');
              story.categories = _.map(story.categories,function(cat){
                return {
                  name:_.trim(cat)
                }
              });
              story.iconCategories = StoryService.provideCategoryIcons(story);
              story.iconCategoriesCount =  _.filter(story.iconCategories, function(cat){return !cat.inactive}).length
            })
          }

          return response;
        });
      } else {
        return $q.when({data: {searchResults: {totalResults: 0}}});
      }
    }

    function getSearchResultForCategory(category) {
      setCategory(category);
      return getSearchResult();
    }
  }
})();


(function () {
  'use strict';

  angular
    .module('cgApp')
    .run(lodashRun)
    .factory('_', _);

  _.$inject = ['$window'];

  /* @ngInject */
  function _($window) {
    var _ = $window._;

    // delete($window._);
    return (_);
  }

  lodashRun.$inject = ['$window'];

  function lodashRun(_) {
    // This makes sure lodash is in place
  }
})();


(function () {
  'use strict';

  angular
    .module('cgApp')
    .factory('collectionLogic', collectionLogicService);

  collectionLogicService.$inject = [];

  /* @ngInject */
  function collectionLogicService() {
    var service = {
      functionName: functionName
    };
    return service;

    ////////////////

    function functionName() {
      code;
    }
  }

})();


(function () {
  'use strict';

  angular
    .module('colruyt.translate')
    .provider('translateService', translateServiceProvider);

  translateServiceProvider.$inject = [];

  /* @ngInject */
  function translateServiceProvider() {
    var self = this;
    self.translations = {};
    self.currentLanguage = "en";
    this.addTranslation = addTranslation;
    this.setCurrentLanguage = setCurrentLanguage;

    function setCurrentLanguage(language) {
      //TODO throw not configured language error when the file is not loaded yet.
      self.currentLanguage = language;
    }

    function addTranslation(language, values) {

      if (!self.translations[language]) {
        self.translations[language] = values;
      } else {
        _.merge(self.translations[language], values);
      }

    }

    this.$get = translateService;

    translateService.$inject = ['$cookies'];


    function translateService($cookies) {
      var service = {
        getTranslation: getTranslation,
        getCurrentLanguage: getCurrentLanguage
      };
      activate();

      return service;

      ////////////////

      function activate() {
        $cookies.put("com.ibm.wps.state.preprocessors.locale.LanguageCookie", self.currentLanguage);
      }

      function getTranslation(key) {
        return self.translations[self.currentLanguage][key];
      }

      function getCurrentLanguage() {
        return self.currentLanguage;
      }
    }
  }
})();


}catch(e){console.log("Module 'angular_app': ",e);}
try{

}catch(e){console.log("Module 'angular_filters': ",e);}
try{/*
    Version: 1.0.1
    Updatelog:
            1.0.1:  - New click outside directive
            1.0:  - initial creation of directives.js
*/

//add focus on button click to input field, used in header search
(function () {
  'use strict';

  angular
    .module('cgApp').directive('focusMe', ['$timeout', '$parse', function ($timeout, $parse) {
    return {
      link: function (scope, element, attrs) {
        var model = $parse(attrs.focusMe);
        scope.$watch(model, function (value) {
          if (value === true) {
            $timeout(function () {
              element[0].focus();
            });
          }
        });
      }
    };
  }]);

// Detect a click outside an element and makes it possible execute a function
  angular
    .module('cgApp').directive('clickoutside', ['$document', '$parse', '$timeout', function ($document, $parse, $timeout) {
    return {
      restrict: 'A',
      link: function ($scope, elem, attr) {

        // postpone linking to next digest to allow for unique id generation
        $timeout(function () {
          var classList = (attr.outsideIfNot !== undefined) ? attr.outsideIfNot.split(/[ ,]+/) : [],
            fn;

          function eventHandler(e) {
            var i,
              element,
              r,
              id,
              classNames,
              l;

            // check if our element already hidden and abort if so
            if (angular.element(elem).hasClass("ng-hide")) {
              return;
            }

            // if there is no click target, no point going on
            if (!e || !e.target) {
              return;
            }

            // loop through the available elements, looking for classes in the class list that might match and so will eat
            for (element = e.target; element; element = element.parentNode) {
              // check if the element is the same element the directive is attached to and exit if so (props @CosticaPuntaru)
              if (element === elem[0]) {
                return;
              }

              // now we have done the initial checks, start gathering id's and classes
              id = element.id,
                classNames = element.className,
                l = classList.length;

              // Unwrap SVGAnimatedString classes
              if (classNames && classNames.baseVal !== undefined) {
                classNames = classNames.baseVal;
              }

              // if there are no class names on the element clicked, skip the check
              if (classNames || id) {

                // loop through the elements id's and classnames looking for exceptions
                for (i = 0; i < l; i++) {
                  //prepare regex for class word matching
                  r = new RegExp('\\b' + classList[i] + '\\b');

                  // check for exact matches on id's or classes, but only if they exist in the first place
                  if ((id !== undefined && id === classList[i]) || (classNames && r.test(classNames))) {
                    // now let's exit out as it is an element that has been defined as being ignored for clicking outside
                    return;
                  }
                }
              }
            }

            // if we have got this far, then we are good to go with processing the command passed in via the click-outside attribute
            $timeout(function () {
              fn = $parse(attr['clickoutside']);
              fn($scope, {event: e});
            });
          }

          // if the devices has a touchscreen, listen for this event
          if (_hasTouch()) {
            $document.on('touchstart', eventHandler);
          }

          // still listen for the click event even if there is touch to cater for touchscreen laptops
          $document.on('click', eventHandler);

          // when the scope is destroyed, clean up the documents event handlers as we don't want it hanging around
          $scope.$on('$destroy', function () {
            if (_hasTouch()) {
              $document.off('touchstart', eventHandler);
            }

            $document.off('click', eventHandler);
          });

          /**
           * @description Private function to attempt to figure out if we are on a touch device
           * @private
           **/
          function _hasTouch() {
            // works on most browsers, IE10/11 and Surface
            return 'ontouchstart' in window || navigator.maxTouchPoints;
          };
        });
      }
    };
  }]);

})();


}catch(e){console.log("Module 'angular_directives': ",e);}
try{(function(_1){
var _1=_1,_2=_1.document,_3=i$.hasClass,_4=i$.toQuery,_5=i$.fromPath,_6=i$.forEach,_7="edit",_8="info",_9="toolbar:open",_a="toolbar:close",_b="ibm.portal.toolbar.",_c=function(_d){
var _d=_e(_d),_f=_10(_d),uri=_f.uri,_11=_f.params||{},_12=_13(_d);
if(uri){
if(_14()&&!_15(_12)){
if(_d.editMode===true){
_16(uri,_11);
}else{
_17(uri,_11);
}
}else{
_18(uri,_11,_12);
}
}else{
if(_14()){
if(_15(_12)){
_19(_12);
}
}else{
_18(uri,_11,_12);
}
}
},_1a=function(_1b){
_1b.primaryTab=_1b.tab;
_1b.tab=null;
return _c(_1b);
},_1c=function(_1d){
_1d.secondaryTab=_1d.tab;
_1d.tab=null;
return _c(_1d);
},_1e=function(_1f){
var _20=_21();
if(_20){
_20.close(_1f);
}else{
_1f();
}
},_22=function(_23){
_1e(function(){
_24(_23);
});
},_24=function(_25){
var _26=_10(_25),uri=_26.uri,_27=_26.params||{};
if(_14()){
if(uri){
if(!_27.uri){
_27.uri=[];
}
_27.uri.push(_a);
}else{
uri=_a;
}
}
if(uri){
_28(_29(),uri,_27,function(url){
_2a().location.href=url;
});
}
},_14=function(){
var r=_21();
return r;
},_2b=function(_2c,_2d){
var uri=_2e(_2c,_2d);
if(_2c==_7&&_2d&&_14()){
_16(uri);
}else{
_17(uri);
}
},_2e=function(_2f,_30){
var uri=["pagemode:"];
uri.push(_2f);
uri.push(":");
_30?uri.push("on"):uri.push("off");
var r=uri.join("");
return r;
},_31=function(_32){
_2b(_7,_32);
},_33=function(){
var r=_34(_7);
return r;
},_35=function(_36){
_2b(_8,_36);
},_37=function(){
var r=_34(_8);
return r;
},_34=function(_38){
var win=_29(),_39=win.document.body,r=_3(_39,_38+"-mode");
return r;
},_3a=function(_3b,_3c){
var r=false;
if(_3c!==undefined){
r=_3c!==_34(_3b);
}
return r;
},_17=function(uri,_3d){
var win=_29();
_28(win,uri,_3d,function(url){
win.location.href=url;
});
},_16=function(uri,_3e){
if(_14()){
var _3f=_21();
_3f.load(_40(uri,_3e),"view",{"onload":function(){
_3f.restore();
}});
}else{
var win=_29();
_28(win,uri,_3e,function(url){
win.location.href=url;
});
}
},_41=function(_42){
_29().location.reload(_42);
},_10=function(_43){
var r={};
if(_43){
var uri=null,_44={},_45=_43.editMode,_46=_43.infoMode;
if(_3a(_7,_45)){
uri=_2e(_7,_45);
}
if(_3a(_8,_46)){
var _47=_2e(_8,_46);
if(uri){
_44.uri=[_47];
}else{
uri=_47;
}
}
if(uri){
r.uri=uri;
r.params=_44;
}
}
return r;
},_40=function(uri,_48){
var _49={"uri":uri};
if(_48){
_49.params=_48;
}
return _49;
},_e=function(_4a){
if(_14()){
_4a.autoOpenDefaultTabs=false;
}
return _4a;
},_19=function(_4b){
if(_4b&&_15(_4b)){
var _4c=_21();
if(_4c){
var p=_4b.primaryURI,_4d={},_4e=_4b.onCloseDialog;
if(_4e&&_4e.id){
_4d.onCloseDialog=function(_4f){
_50(_4f,_4e.id,_4e.key);
};
}
if(p){
_4c.load(_40(p),"primary",_4d);
}
var s=_4b.secondaryURI;
if(s){
_4c.load(_40(s),"secondary",_4d);
}
}
}
},_50=function(_51,id,key){
var _52=_51,id=id,key=key||"onCloseDialog";
_53(function(w){
try{
var d=w.document;
if(d){
var n=d.getElementById(id);
if(n){
var f=n[key];
if(f){
f.call(n,_51);
}
}
}
}
catch(e){
}
});
},_18=function(uri,_54,_55){
if(uri){
if(!_54){
_54={};
}
if(!_54.uri){
_54.uri=[];
}
_54.uri.push(_9);
}else{
uri=_9;
}
if(_55&&_15(_55)){
if(!_54){
_54={};
}
var p=_55.primaryURI;
if(p){
_54.primaryTabURI=[p];
}
var s=_55.secondaryURI;
if(s){
_54.secondaryTabURI=[s];
}
}
_28(_29(),uri,_54,function(url){
_2a().location.href=url;
});
},_13=function(_56){
var r={};
if(_56){
if(_56.tab||_56.primaryTab||_56.secondaryTab){
var _57=_56.secondaryTab||_56.tab;
if(_57){
r.secondaryURI=_58(_57);
}
var _59=_56.primaryTab;
if(_59){
r.primaryURI=_58(_59);
}
}
r.onCloseDialog=_56.onCloseDialog;
var _5a=_56.autoOpenDefaultTabs;
if(_5a){
if(!r.primaryURI){
r.primaryURI="default";
}
if(!r.secondaryURI){
r.secondaryURI="default";
}
}
}
return r;
},_58=function(t){
if(t.indexOf(_b)==0||t.indexOf("Z6_")==0){
return "nm:oid:"+t;
}else{
return t;
}
},_15=function(_5b){
var r=_5b&&(_5b.primaryURI||_5b.secondaryURI);
return r;
},_28=function(win,uri,_5c,cb){
_5d(win).then(function(url){
var _5e=url,buf=[];
buf.push(_5e);
if(_5e.indexOf("?")<0){
buf.push("?");
}else{
buf.push("&");
}
buf.push("uri=");
buf.push(uri);
if(_5c){
buf.push("&");
buf.push(_4(_5c));
}
var r=buf.join("");
cb(r);
});
},_5d=function(win){
var r=wpModules.theme.WindowUtils.findBaseURL(win);
return r;
},_5f=function(win){
var r=wpModules.theme.WindowUtils.getBaseURL(win);
return r;
},_29=function(){
var wu=wpModules.theme.WindowUtils,r=(wu&&wu.getWindow(wu.VIEW_AREA))||_1;
return r;
},_53=function(cb){
var _60=_2a(),_61=_60.frames;
cb.call(this,_60);
if(_61&&_61.length>0){
_6(_61,function(f){
cb.call(this,f.window);
});
}
},_2a=function(){
var win=_29(),r=(win.parent||win);
return r;
},_21=function(){
var r=_5("wpModules.toolbar.NavigationController",false,_2a());
return r;
},_62=_5("wpModules.toolbar",true);
_62.openToolbar=_c;
_62.openPrimaryTab=_1a;
_62.openSecondaryTab=_1c;
_62.closeTab=_1e;
_62.closeToolbar=_22;
_62.isToolbarOpened=_14;
_62.setEditModeActive=_31;
_62.isEditModeActive=_33;
_62.setInfoModeActive=_35;
_62.isInfoModeActive=_37;
_62.loadViewArea=_17;
_62.reloadViewArea=_41;
_62.getViewAreaWindow=_29;
_62.getToolbarMasterWindow=_2a;
_62.getBaseURL=_5f;
})(window);


}catch(e){console.log("Module 'wp_toolbar_utils': ",e);}
try{if(typeof (wpModules.toolbar)=="undefined"){
wpModules.toolbar={};
}
if(typeof (wpModules.toolbar.menuActions)=="undefined"){
wpModules.toolbar.menuActions={};
}


}catch(e){console.log("Module 'wp_toolbar_menuactions': ",e);}
try{(function(){
    i$.merge({
	"move_page_dialog_title":"De pagina '{0}' verplaatsen naar...",
	"edit_wiring_dialog_title":"Communicatie-eindpunten beheren voor '{0}'",
	"confirm_delete_page_anonymous":"Weet u zeker dat u deze pagina en alle onderliggende pagina's wilt wissen?",
	"delete_control_dialog_title":"Portlet wissen",
	"confirm_delete_page":"Weet u zeker dat u de pagina '{0}' en alle onderliggende pagina's daarvan wilt wissen?",
	"confirm_delete_control_anonymous":"Weet u zeker dat u deze portlet wilt verwijderen van de pagina?",
	"page_properties_dialog_title":"Paginaeigenschappen beheren",
	"delete_page_dialog_title":"Pagina wissen",
	"edit_wiring_dialog_title_anonymous":"Communicatie-eindpunten beheren",
	"preview_as_user_dialog_title":"Preview bekijken als gebruiker",
	"confirm_delete_control":"Weet u zeker dat u de portlet '{0}' wilt verwijderen van de pagina?"
},i$.fromPath("wpModules.toolbar.menuActions.nls",true));
})();
}catch(e){console.log("Module 'wp_toolbar_menuactions': ",e);}
try{/** Licensed Materials - Property of IBM, 5724-E76 and 5724-E77, (C) Copyright IBM Corp. 2012 - All Rights reserved.  **/
(function(){
var _1=ibmCfg.portalConfig.contentHandlerURI+((ibmCfg.portalConfig.contentHandlerURI.indexOf("?")<0)?"?":"&")+"uri=menu:${id}",_2=false,_3="Separator",_4="Header",_5=function(){
var _6=i$.hasClass(document.getElementsByTagName("body")[0],"edit-mode");
return _6;
},_7=i$.fromPath("wptheme",true),_8=i$.fromPath("wptheme.contextMenu",true),_9=i$.fromPath("wptheme.contextMenu.extension",true);
i$.mash(_7,{getWindowIDFromSkin:function(_a){
while((_a=_a.parentNode)!=null){
if(i$.hasClass(_a,"component-control")){
var m=_a&&(_a.className||"").match(/id-([\S]+)/);
var _b=m&&m[1];
return _b;
}
}
return null;
},getPortletState:function(_c){
var _d=i$.byId("portletState");
var _e={};
if(_d){
if(!_d._cache){
_d._cache=i$.fromJson(_d.innerHTML);
_d._cache._defaults={"windowState":"normal","portletMode":"view"};
}
if(_d._cache[_c]){
_e=_d._cache[_c];
}else{
_e=_d._cache._defaults;
}
}
return _e;
},isValidOp:function(_f){
if(_f.visibility===false){
return false;
}
var _10=_f.metadata||{};
switch(_f.id){
case "ibm.portal.operations.changePortletMode":
var _11=_7.getPortletState(_10.wid).portletMode!=_10.portletMode;
return _11;
case "ibm.portal.operations.changeWindowState":
var _11=_7.getPortletState(_10.wid).windowState!=_10.windowState;
return _11;
default:
}
return true;
},operation:{changeToHelpMode:function(_12){
var _13=window.location.href;
if(_12.actionUrl){
if(_12.actionUrl.indexOf("?")==0){
var _14=_13.indexOf("#");
if(_14!=-1){
var _15=_13.substring(0,_14);
var _16=_13.substring(_14);
_13=_15+(_15.indexOf("?")==-1?"?":"&")+_12.actionUrl.substring(1);
_13+=_16;
}else{
_13+=(_13.indexOf("?")==-1?"?":"&")+_12.actionUrl.substring(1);
}
}else{
_13=_12.actionUrl;
}
}
window.open(_13,"","resizable=yes,scrollbars=yes,menubar=no,toolbar=no,status=no,width=800,height=600,screenX=10,screenY=10,top=10,left=10");
}},canImpersonate:function(){
return ibmCfg.portalConfig.canImpersonate;
}});
i$.mash(_8,{cache:{},css:{focus:"wpthemeMenuFocus",disabled:"wpthemeMenuDisabled",show:"wpthemeMenuShow",error:"wpthemeMenuError",menuTemplate:"wpthemeTemplateMenu",submenuTemplate:"wpthemeTemplateSubmenu",loadingTemplate:"wpthemeTemplateLoading",complementaryContent:"wpthemeComplementaryContent",menuOverlay:"wpthemeMenuOverlay",alignLeft:"wpthemeMenuLeft",alignRight:"wpthemeMenuRight",noTouch:"wpthemeNoTouch"},init:function(){
var _17;
if(arguments.length==1){
_17=arguments[0];
}else{
_17={node:arguments[0],menuId:arguments[1],jsonQuery:(arguments.length>2)?arguments[2]:null};
}
this.init2(_17);
},init2:function(_18){
var _19=_18.node;
_18.params=_18.params||{};
var _1a=_18.params.autoScroll!==false;
_19._contextMenu=_19._contextMenu||{};
var _1b=_19._contextMenu;
_1b.id=_19._contextMenu.id||_19.getAttribute("id")||Math.round(Math.random()*1000000000);
_19.setAttribute("id",_1b.id);
_1b.menuId=_18.menuId;
_1b.jsonQuery=_18.jsonQuery;
_1b.templateId=_18.params.templateId||null;
_1b.alignLeft=(_18.params.alignment=="left")||false;
_1b.alignRight=(_18.params.alignment=="right")||false;
_1b.touchDevice=(com_ibm_device_class.indexOf("tablet")!=-1)||(com_ibm_device_class.indexOf("smartphone")!=-1);
_1b.closeFn=function(_1c,evt){
var fn=_18.onClose;
if(fn){
if(i$.isFunction(fn)){
try{
fn();
}
catch(exc){
console.log("error executing function "+fn+" - "+exc);
}
}
}
_7.contextMenu.close(_1b,_1c,evt);
};
if(_1b.touchDevice){
var _1d=i$.bindDomEvt(document.body,"touchmove",function(evt){
var _1e=(evt)?evt.target||evt.srcElement:null;
var _1f=i$.byId(_1b.id);
if(i$.hasClass((_1b.shadowNode)?_1b.shadowNode:_1f,_24.show)&&!i$.isDescendant(_1e,_1b.shadowNode)){
i$.unbindDomEvt(_1d);
if(_1b._inProgress){
_displayMenu=false;
}
_1b.closeFn(false);
}
});
}
var _20=function(_21){
if(_21.displayMenu){
_1b.activeAction=false;
i$.fireEvent("wptheme/contextMenu/close/all");
var _22=i$.byId(_1b.id);
if(!_1b._submenu){
i$.fireEvent("wptheme/contextMenu/close/all");
_7.contextMenu._updateAbsolutePosition(_22);
}
var _23=_7.contextMenu._adjustScreenPositionStart();
i$.addClass((_1b.shadowNode)?_1b.shadowNode:_22,_24.show);
if(_1a){
_7.contextMenu._adjustScreenPositionEnd(_23);
}
var _25=_22._firstSelectable;
if(_25){
_25.focus();
_22._currentSelected=_25;
}
i$.addClass((_1b.shadowNode)?_1b.shadowNode:_22,("ontouchstart" in document)?"":_24.noTouch);
}
};
_7.contextMenu._initialize(_19).then(_20,_20);
_19=null;
},initSubmenu:function(_26,_27,_28){
_26._contextMenu=_26._contextMenu||{};
var _29=_26._contextMenu;
_29._submenu=true;
_29._menuitemTemplate=_28._menuitemTemplate;
_29._subMenuTemplate=_28._subMenuTemplate;
_29._loadingTemplate=_28._loadingTemplate;
_7.contextMenu.init(_26,_27,_28.jsonQuery);
},_findFocusNode:function(_2a){
var _2b,i,_2c;
var _2d=function(_2e,_2f){
var l=_2e.childNodes.length;
for(i=0;i<l;i++){
if(_2b){
break;
}
_2c=_2e.childNodes[i];
if(i$.hasClass(_2c,_24.focus)){
_2b=_2c;
break;
}
if(_2c.childNodes){
i=_2d(_2c,i);
}
}
return _2f;
};
if(i$.hasClass(_2a,_24.focus)){
return _2a;
}
_2d(_2a);
return _2b;
},_findNodes:function(_30,_31){
var _32,_33,_34,_35,i,_36;
var _37=function(_38,_39){
for(i=_38.childNodes.length-1;i>=0;i--){
_36=_38.childNodes[i];
if(i$.hasClass(_36,_24.menuTemplate)){
_33=_36;
continue;
}
if(i$.hasClass(_36,_24.submenuTemplate)){
_34=_36;
continue;
}
if(i$.hasClass(_36,_24.loadingTemplate)){
_35=_36;
continue;
}
if(_36.childNodes){
i=_37(_36,i);
}
}
return _39;
};
if(_31&&!_30._contextMenu.menuNode){
_32=document.getElementById(_31);
if(_32){
_32=_32.cloneNode(true);
_30.appendChild(_32);
}
}
_37(_30);
if(!_33){
_32=document.getElementById("simpleMenuTemplate");
if(_32){
_32=_32.cloneNode(true);
_30.appendChild(_32);
_37(_30);
}
}
var _3a={"root":_32,"menu":_33,"submenu":_34,"loading":_35};
return _3a;
},_findNextNodeByKeyCode:function(_3b,_3c){
var _3d=_3b.parentNode;
var _3e,_3f,_40,i,j;
var l=_3d.childNodes.length;
for(i=0;i<l;i++){
if(_3d.childNodes[i]==_3b){
break;
}
}
for(j=i+1;j<l;j++){
_3e=_3d.childNodes[j];
_3f=_3e.textContent||_3e.innerText;
if(_3e._menuitem&&_3e._menuitem.type!=_4&&_3e._menuitem.type!=_3&&_3f&&_3f.charAt(0).toUpperCase().charCodeAt(0)==_3c){
_40=_3d.childNodes[j];
return _40;
}
}
for(j=0;j<i;j++){
_3e=_3d.childNodes[j];
_3f=_3e.textContent||_3e.innerText;
if(_3e._menuitem&&_3e._menuitem.type!=_4&&_3e._menuitem.type!=_3&&_3f&&_3f.charAt(0).toUpperCase().charCodeAt(0)==_3c){
_40=_3d.childNodes[j];
return _40;
}
}
return null;
},_invalidateCallback:function(){
_7.contextMenu.cache={};
},_initialize:function(_41){
var _42=true;
var _43=_41._contextMenu;
if(_7.contextMenu.cache[_43.id]||_43._inProgress){
return i$.promise.resolved({displayMenu:_42});
}
_43._inProgress=true;
i$.addListener("wptheme/contextMenu/invalidate/all",_7.contextMenu._invalidateCallback);
var _44,_45,tmp=i$.createDom("div"),_46;
if(_43._submenu){
tmp.innerHTML=_43._subMenuTemplate.replace(/\$\{submenu-id\}/g,_43.id+"_menu");
_41.appendChild(tmp.firstChild);
_44=i$.byId(_43.id+"_menu");
_45=i$.createDom("div");
_45.innerHTML=_43._loadingTemplate;
}else{
var _47=_7.contextMenu._findNodes((_43.shadowNode)?_43.shadowNode:_41,_41._contextMenu.templateId);
_44=_47.menu;
_46=_47.root;
if(_46){
if(_43.alignLeft||_43.alignRight){
i$.removeClass(_46,_24.alignLeft);
i$.removeClass(_46,_24.alignRight);
if(_43.alignLeft){
i$.addClass(_46,_24.alignLeft);
}else{
i$.addClass(_46,_24.alignRight);
}
}
_46.removeAttribute("id");
}
if(!_43._menuitemTemplate){
_43._menuitemTemplate=i$.trim(_44.innerHTML);
}
if(!_43._loadingTemplate){
_45=i$.createDom("div");
_45.appendChild(_47.loading);
_43._loadingTemplate=i$.trim(_45.innerHTML);
_43._loadingTemplate=_43._loadingTemplate.replace(/\$\{loading\}/g,_7.contextMenu.nls.LOADING_0);
_45=null;
}
_45=i$.createDom("div");
_45.innerHTML=_43._loadingTemplate;
if(_47.submenu){
tmp.appendChild(_47.submenu.cloneNode(true));
if(!_43._subMenuTemplate){
_43._subMenuTemplate=i$.trim(tmp.innerHTML);
}
}
}
while(_44.firstChild){
_44.removeChild(_44.firstChild);
}
_44.appendChild(_45);
var _48;
if(_43._submenu){
_48=_43.shadowNode;
}else{
if(_43.shadowNode){
_48=_43.shadowNode;
}else{
_48=_7.contextMenu._transformIntoAbsolutePosition(_41);
}
}
i$.addClass((_48)?_48:_41,_24.show);
i$.bindDomEvt((_48)?_48:_41,"onmouseleave",function(){
if(_43._inProgress){
_42=false;
}
_43.closeFn(false);
});
var _49=_7.contextMenu._load(_43).then(function(_4a){
var _4b=_7.contextMenu._parseData(_4a).then(function(_4c){
_4c=_7.contextMenu._filterMenu(_4c);
if(!_4c||_4c.length==0){
_4c=[{type:"Menuitem",_enabled:true,itemClass:_24.error,title:{value:_7.contextMenu.nls.NO_ITEMS_0,lang:"en"}}];
}
_7.contextMenu._buildMenu(_43,_44,_4c);
_43._inProgress=false;
_7.contextMenu.cache[_43.id]=true;
return {displayMenu:_42};
});
return _4b;
},function(){
var tmp=i$.createDom("div");
tmp.innerHTML=_7.contextMenu._fromTemplate(_43._menuitemTemplate,_24.error,_7.contextMenu.nls.ERROR_LOADING_0);
while(_44.firstChild){
_44.removeChild(_44.firstChild);
}
_44.appendChild(tmp);
_43._inProgress=false;
_7.contextMenu.cache[_43.id]=true;
return {displayMenu:_42};
});
return _49;
},close:function(_4d,_4e,evt){
var _4f=(evt)?evt.target||evt.srcElement:null;
var _50=i$.byId(_4d.id);
i$.removeClass((_4d.shadowNode)?_4d.shadowNode:_50,_24.show);
if(!_4d.activeAction){
var _51=_50._currentSelected;
if(_51){
_51.blur();
}
var _52=_7.contextMenu._findFocusNode(_50);
window.setTimeout(function(){
((_52)?_52:_50).focus();
if(_4e){
window.setTimeout(function(){
_7.contextMenu._applyAction(_4f);
},0);
}
},0);
}
},_load:function(_53){
var _54=_1.replace(/\$\{id\}/g,_53.menuId);
if(_53.jsonQuery){
_54+=(_54.indexOf("?")==-1?"?":"&")+i$.toQuery(_53.jsonQuery);
}
var _55=i$.xhrGet({url:_54,headers:{"X-IBM-XHR":"true","Cache-Control":"No-Cache"},responseType:"json"}).then(function(_56){
var _57=_53.jsonQuery.secondaryRootNode;
if(_57!=null){
_53.jsonQuery.rootNode=_57;
var _58=_1.replace(/\$\{id\}/g,_53.menuId);
_58+=(_54.indexOf("?")==-1?"?":"&")+i$.toQuery(_53.jsonQuery);
var _59=i$.xhrGet({url:_58,headers:{"X-IBM-XHR":"true"},responseType:"json"}).then(function(_5a){
return _56.data.concat(_5a.data);
});
return _59;
}
return _56.data;
},function(_5b){
var _5c=_5b.xhr.getResponseHeader("Content-Type")||"";
if((_5c.indexOf("text/html")==0)||(_5b.xhr.status==401)){
window.setTimeout(function(){
document.location.reload();
},0);
}
console.log("Error trying to load the context menu feed for '"+_53.menuId+"': "+_5b);
return null;
});
return _55;
},_parseData:function(_5d){
var _5e=[];
i$.each(_5d,function(_5f){
var _60=i$.fromPath("moduleInfo.deferred",false,_5f)?i$.modules.loadDeferred():i$.promise.resolved(true);
_5e.push(_60.then(function(){
var _61=_7.contextMenu._checkFunction(_5f,_5f.visibilityFn,_5f,(typeof _5f.visibility!="undefined")?_5f.visibility:true);
var _62=_7.contextMenu._checkFunction(_5f,_5f.enableFn,_5f,(typeof _5f.enabled!="undefined")?_5f.enabled:true);
return i$.whenAll(_61,_62).then(function(_63){
_5f._visible=_63[0];
_5f._enabled=_63[1];
return _5f;
});
}));
});
var _64=i$.whenAll.apply(i$,_5e);
return _64;
},_filterMenu:function(_65){
var _66=[],_67,_68={"type":_3};
for(var i=_65.length-1;i>=0;i--){
_67=_65[i];
if(!_67._visible){
continue;
}
if(_67.type==_3){
if(_68.type==_3){
continue;
}
}else{
if(_67.type==_4){
if((_68.type==_3)||(_68.type==_4)){
continue;
}
}
}
_68=_67;
_66.unshift(_67);
}
while(_66.length>0&&_66[0].type==_3){
_66=_66.slice(1);
}
return _66;
},_buildMenu:function(_69,_6a,_6b){
var _6c=document.createDocumentFragment(),tmp=i$.createDom("div"),_6d,_6e,_6f,_70,_71,_72,_73=i$.fromPath("wptheme.contextMenu.extension.badge");
for(var i=0,l=_6b.length;i<l;i++){
_6d=_6b[i];
tmp.innerHTML=_7.contextMenu._fromTemplate(_69._menuitemTemplate,_6d,_73);
while(_6e=tmp.firstChild){
if(_6e.nodeType==1){
if(_6d.type=="Submenu"){
_6e._menuitem=_6d;
_6e._jsonData=_69;
i$.bindDomEvt(_6e,"onmouseover",_7.contextMenu._applySubmenu);
}else{
if(_6d._enabled){
if(!_71){
_71=_6e;
}
_72=_6e;
_6e.links={previous:_6f,next:null,sub:null};
if(_6f){
_6f.links.next=_6e;
}
if(!_70&&_6d.type!=_4){
_70=_6e;
}
_6e._menuitem=_6d;
_6f=_6e;
i$.bindDomEvt(_6e,"onclick",function(evt){
_7.contextMenu._stopEventPropagation(evt);
_69.closeFn(true,evt);
});
i$.bindDomEvt(_6e,"onkeydown",function(evt){
return _7.contextMenu._applyKeyAction(evt);
});
i$.bindDomEvt(_6e,"onmouseover",function(evt){
return _7.contextMenu._applyFocusAction(evt);
});
}
}
if((_6d.title)&&(i$.isRTL(_6d.title.lang))){
i$.addClass(_6e,"rtl");
_6e.setAttribute("dir","RTL");
}
if(_6d.markupId){
_6e.setAttribute("id",_6d.markupId);
}
if(_73){
_73.injectBadge(_6e);
}
}
_6c.appendChild(_6e);
}
}
_71.links.previous=_72;
_72.links.next=_71;
while(_6a.firstChild){
_6a.removeChild(_6a.firstChild);
}
_6a.appendChild(_6c);
i$.byId(_69.id)._firstSelectable=_70;
i$.byId(_69.id)._currentSelected=null;
},_fromTemplate:function(_74,_75,_76){
var _77,_78,_79,_7a="";
if(typeof (_75)=="string"){
_77=_75;
_78=_76;
_79="";
}else{
_77="type"+_75.type;
if(_75.itemClass){
_77+=" "+_75.itemClass;
}
if(!_75._enabled){
_77+=" "+_24.disabled;
}
_78=(_75.title)?_75.title.value:"";
_79=((_75.description)?_75.description.value:"");
if(_76){
_7a=_76.getAnchor(_75);
}
}
var _7b=_74.replace(/\$\{title\}/g,_78).replace(/\$\{badge\}/g,_7a).replace(/"\$\{css-class\}"/g,"\""+(_77)+"\"").replace(/\$\{css-class\}/g,"\""+(_77)+"\"").replace(/"\$\{description\}"/g,"\""+_79+"\"").replace(/\$\{description\}/g,"\""+_79+"\"");
return _7b;
},_checkFunction:function(_7c,fn,arg,_7d){
if(fn){
if(!_7c.fromPath){
_7c.fromPath={};
}
var _7e=i$.fromPath("wptheme.contextMenu.extension.menuItemScope"),_7f=_7e?_7e.getWindow(_7c):null,_80=_7c.fromPath[fn]||i$.fromPath(fn,false,_7f);
_7c.fromPath[fn]=_80;
if(i$.isFunction(_80)){
try{
return _80(arg);
}
catch(exc){
console.log("error executing function "+fn+" - "+exc);
}
}
}
return i$.promise.resolved(_7d);
},_stopEventPropagation:function(evt){
if(evt){
if(evt.stopPropagation){
evt.stopPropagation();
}else{
evt.cancelBubble=true;
}
}
},_applyKeyAction:function(evt){
var _81=evt.target||evt.srcElement;
var _82=_81;
var _83=null;
while(!_83){
_82=_82.parentNode;
if(_82._contextMenu){
_83=_82;
}
}
var _84=_83._contextMenu;
switch(evt.keyCode){
case 32:
if(evt.preventDefault){
evt.preventDefault();
}
case 13:
_7.contextMenu._stopEventPropagation(evt);
_84.closeFn(true,evt);
return false;
case 9:
case 27:
_84.closeFn(false);
break;
case 40:
_7.contextMenu._moveFocus(evt,_84,_81,"next");
return false;
case 38:
_7.contextMenu._moveFocus(evt,_84,_81,"previous");
return false;
}
var _85=_7.contextMenu._findNextNodeByKeyCode(_81,evt.keyCode);
if(_85){
_85.focus();
return false;
}
return true;
},_moveFocus:function(evt,_86,_87,_88){
var _89=_87.links[_88];
if(_89&&(_89._menuitem.type==_4||_89._menuitem.type==_3)){
var _8a=false;
var _8b=null;
while(!_8b&&!_8a){
_89=_89.links[_88];
if(!_89){
_8a=true;
}else{
if(_89._menuitem.type!=_4&&_89._menuitem.type!=_3){
_8b=_89;
}
}
}
_89=_8b;
}
if(_89){
var _8c=i$.byId(_86.id)._currentSelected;
if(_8c){
_8c.blur();
}
i$.byId(_86.id)._currentSelected=_89;
_89.focus();
}
if(evt.preventDefault){
evt.preventDefault();
}
},_applyFocusAction:function(evt){
var _8d=evt.target||evt.srcElement;
var _8e=_8d;
var _8f=null;
var _90=_8d._menuitem;
while(!_8f){
_8e=_8e.parentNode;
if(_8e._contextMenu){
_8f=_8e;
}
if(!_90){
_8d=_8d.parentNode;
_90=_8d._menuitem;
}
}
var _91=_8f._contextMenu;
var _92=i$.byId(_91.id)._currentSelected;
if(_92!=_8d){
if(_92){
_92.blur();
i$.byId(_91.id)._currentSelected=null;
}
if(_90.type!=_4&&_90.type!=_3){
i$.byId(_91.id)._currentSelected=_8d;
_8d.focus();
}
}
return false;
},_applyAction:function(_93){
var _94=_93;
var _95=null;
var _96=_93._menuitem;
while(!_95){
_94=_94.parentNode;
if(_94._contextMenu){
_95=_94;
}
if(!_96){
_93=_93.parentNode;
_96=_93._menuitem;
}
}
var _97=_95._contextMenu;
_97.activeAction=true;
var p=_7.contextMenu._checkFunction(_96,_96.actionFn,_96,_96.actionUrl);
if(p){
p.then(function(_98){
if(_98&&i$.isString(_98)){
var _99=i$.fromPath("wptheme.contextMenu.extension.actionUrlTarget");
var _9a=(_99)?_99.getWindow(_96):window;
var _9b=_96.actionHttpMethod||"GET";
if(_9b!="GET"){
var _9c=_9a.i$.createDom("form");
_9c.setAttribute("action",_98);
_9b=_9b.toLowerCase();
switch(_9b){
case "get":
_9c.setAttribute("method","GET");
break;
case "delete":
case "put":
var _9d=_9a.i$.createDom("input",{"type":"hidden","name":"x-method-override","value":_9b.toUpperCase()});
_9c.appendChild(_9d);
case "post":
_9c.setAttribute("method","POST");
_9c.setAttribute("enctype","multipart/form-data");
break;
default:
}
_9a.i$.byId(_24.complementaryContent).appendChild(_9c);
_9c.submit();
}else{
var _9e=_9a.i$.createDom("a");
_9e.setAttribute("style","display:none");
_9e.setAttribute("href",_98);
_9a.i$.byId(_24.complementaryContent).appendChild(_9e);
_9e.click();
}
}
});
}
},_applySubmenu:function(evt){
var _9f=evt.target||evt.srcElement;
if(!_9f._jsonData){
_9f=_9f.parentNode;
}
if(_9f._jsonData){
_9f.setAttribute("id",_9f._jsonData.id+"_"+_9f._menuitem.id);
_7.contextMenu.initSubmenu(_9f,_9f._menuitem.id,_9f._jsonData);
}
},_transformIntoAbsolutePosition:function(_a0){
var _a1=_a0.childNodes,_a2,i=0,_a3=false;
while(_a2=_a1[i++]){
if(i$.hasClass(_a2,_24.alignRight)){
_a3=true;
break;
}else{
if(i$.hasClass(_a2,_24.alignLeft)){
break;
}
}
}
var _a4=i$.createDom("div");
_a4.className=_a0.className;
_a4.appendChild(_a2);
i$.byId(_24.complementaryContent).appendChild(_a4);
_a4._contextMenu=_a0._contextMenu;
_a0._contextMenu.shadowNode=_a4;
_a0._contextMenu._menuIsRight=_a3;
var _a5=i$.createDom("span");
_a4.appendChild(_a5);
i$.addClass(_a5,_24.menuOverlay);
_a0._contextMenu.overlayNode=_a5;
_a0._contextMenu.menuNode=_a2;
_7.contextMenu._updateAbsolutePosition(_a0);
return _a4;
},_updateAbsolutePosition:function(_a6){
var _a7=_a6._contextMenu._menuIsRight;
var _a8=_a6._contextMenu.menuNode;
var _a9=_a6._contextMenu.overlayNode;
var _aa=_7.contextMenu._findPos(_a6);
var _ab=2;
_a9.style.left=(_aa[0]-_ab)+"px";
_a9.style.top=(_aa[1]-_ab)+"px";
_a9.style.width=(_a6.offsetWidth+(2*_ab))+"px";
_a9.style.height=(_a6.offsetHeight+(2*_ab))+"px";
var dir=document.getElementsByTagName("html")[0].getAttribute("dir");
if(dir!=null){
dir=dir.toLowerCase();
}else{
dir="";
}
if(!(dir=="rtl")){
_a8.style.left=((_a7)?_aa[0]+_a6.offsetWidth:_aa[0])+"px";
}else{
_a8.style.left=((_a7)?_aa[0]+_a6.offsetWidth-_a6.scrollWidth:_aa[0]+_a6.scrollWidth)+"px";
}
_a8.style.top=_aa[1]+"px";
},_adjustScreenPositionStart:function(){
return document.documentElement.scrollHeight;
},_adjustScreenPositionEnd:function(_ac){
var _ad=document.documentElement.scrollHeight;
if(_ac!=_ad){
document.documentElement.scrollTop=document.documentElement.scrollHeight;
}
},_findPos:function(obj){
var _ae=curtop=0;
if(obj.offsetParent){
do{
_ae+=obj.offsetLeft;
curtop+=obj.offsetTop;
}while(obj=obj.offsetParent);
var _af=[_ae,curtop];
return _af;
}
},});
var _24=_7.contextMenu.css;
})();


}catch(e){console.log("Module 'wp_simple_contextmenu_js': ",e);}
try{(function(){
    i$.merge({
	"NO_ITEMS_0":"Geen items om af te beelden",
	"ERROR_LOADING_0":"Fout bij laden van het menu.",
	"LOADING_0":"Laden..."
},i$.fromPath("wptheme.contextMenu.nls",true));
})();
}catch(e){console.log("Module 'wp_simple_contextmenu_js': ",e);}
try{/** Licensed Materials - Property of IBM, 5724-E76 and 5724-E77, (C) Copyright IBM Corp. 2012 - All Rights reserved.  **/
(function(){
function _1(_2){
var _3=window,_4=_2.metadata;
if(_4&&_4._contributionWindow){
return _4._contributionWindow;
}
if(_4&&_4.contributor){
var _5=_4.contributor,_6=_5.lastIndexOf(":"),_7=_5.substr(_6+1),_8=i$.fromPath("wpModules.theme.WindowUtils");
if(_8){
_3=_8.getWindow(_7);
}
}
if(!_4){
_4=_2.metadata={};
}
_4._contributionWindow=_3;
return _3;
};
var _9={getWindow:function(_a){
var _b=(_a.metadata&&_a.metadata.actionUrlTarget)||"same",_c,wu=wpModules.theme.WindowUtils;
_c=_1(_a);
if(_b=="view"){
_c=wu&&wu.getWindow(wu.VIEW_AREA);
}else{
if(_b=="master"){
_c=wu&&wu.getWindow(wu.MASTER);
}
}
return _c||window;
}};
var _d={getWindow:function(_e){
return _1(_e);
}};
i$.toPath("wptheme.contextMenu.extension.actionUrlTarget",_9);
i$.toPath("wptheme.contextMenu.extension.menuItemScope",_d);
var _f={templates:{anchor:"<span class=\"wpthemeMenuBadgeAnchor\"></span>",loading:"<span class=\"wpthemeMenuLoading wpthemeTemplateLoading\"></span>",badge_info:"<span class=\"wpthemeMenuBadge wpthemeMenuBadgeInfo\" aria-live=\"polite\">${count}</span>",badge_warn:"<span class=\"wpthemeMenuBadge wpthemeMenuBadgeWarn\" aria-live=\"polite\">${count}</span>",badge_error:"<span class=\"wpthemeMenuBadge wpthemeMenuBadgeError\" aria-live=\"polite\">${count}</span>"},getAnchor:function(_10){
var md=(_10)?_10.metadata:null;
return (md&&(md.badgeUrl||md.badgeData))?_f.templates.anchor:"";
},injectBadge:function(_11,_12){
var _13=(_12)?_12:_11._menuitem,md=(_13)?_13.metadata:null;
if(md&&(md.badgeUrl||md.badgeData)){
var _14=_f._findNode(_11,"wpthemeMenuBadgeAnchor");
if(_14){
if(md.badgeUrl){
var _15,_16=md.badgeUrl,_17=ibmCfg.portalConfig.contentHandlerURI;
if(_16.indexOf("?")==0){
_15=_17+((_17.indexOf("?")<0)?"?":"&")+_16.substring(1);
}else{
_15=_16;
}
var tmp=i$.createDom("div");
tmp.innerHTML=_f.templates.loading;
_14.appendChild(tmp.firstChild);
i$.xhrGet({url:_15,headers:{"X-IBM-XHR":"true"},responseType:"json"}).then(function(_18){
_f._insertBadge(_18.data,md.badgeTitle,_14);
},function(_19){
while(_14.firstChild){
_14.removeChild(_14.firstChild);
}
});
}else{
_f._insertBadge(md.badgeData,md.badgeTitle,_14);
}
}
}
},_insertBadge:function(_1a,_1b,_1c){
while(_1c.firstChild){
_1c.removeChild(_1c.firstChild);
}
if(_1a&&_1a.count>0){
var tmp=i$.createDom("div");
if(_1a.level=="error"){
tmp.innerHTML=_f.templates.badge_error.replace(/\$\{count\}/g,_1a.count);
}else{
if(_1a.level=="warn"){
tmp.innerHTML=_f.templates.badge_warn.replace(/\$\{count\}/g,_1a.count);
}else{
tmp.innerHTML=_f.templates.badge_info.replace(/\$\{count\}/g,_1a.count);
}
}
if(_1b){
tmp.firstChild.setAttribute("title",_1b);
tmp.firstChild.setAttribute("aria-label",_1b);
}
_1c.appendChild(tmp.firstChild);
}
},_findNode:function(_1d,_1e){
var _1f,i,_20;
var _21=function(_22,_23){
for(i=_22.childNodes.length-1;i>=0;i--){
_20=_22.childNodes[i];
if(i$.hasClass(_20,_1e)){
_1f=_20;
continue;
}
if(_20.childNodes){
i=_21(_20,i);
}
}
return _23;
};
_21(_1d);
return _1f;
}};
i$.toPath("wptheme.contextMenu.extension.badge",_f);
})();


}catch(e){console.log("Module 'wp_simple_contextmenu_ext': ",e);}
try{(function(_1){
var _2="aria-labelledby",_3="aria-describedby",_4="aria-pressed",_5="title",_6="true",_7="false",_8="selected",_9="disabled",_a="show-text",_b="hide-text",_c="disableClick",_d="remove",_e="off-label",_f="on-label",_10="wpToolbarHighContrast",_11="http://www.ibm.com/xmlns/prod/websphere/portal/publicparams",_12="wpPageModeToggleIdContainer",_13="wpInfoModeToggle",_14="wpInfoModeToggleLink",_15="wpPageModeToggle",_16="wptoogleInput",_17="wpPageModeToggleLink",_18="wpPageIsPractitioner",_19="wpPageModeToggleIdContainer",_1a="wpToolbarToggle",_1b="ibm.portal.home.createpage",_1c="wpEditTooltip",_1d="ibm.portal.toolbar.NewPage",_1e="wps.content.root",_1f="wps.Administration",_20="ibm.portal.page.Applications",_21="hcl.portal.practitionerstudio",_22="hcl.portal.helplinks",_23="wpHelpContainerID",_24="wpHelpCenterDialogContent-root",_25="wpHelpCenterDialog",_26=[13,32,38,40],_27=[13,32],T=true,F=false,_28=i$.byId,_29=i$.hasClass,_2a=i$.addClass,_2b=i$.removeClass,_2c=i$.forEach,_2d=i$.toQuery,_2e=i$.fromPath,_2f=i$.bindDomEvt;
function _30(_31,_32){
var _33=_31||_28(_15),_34="valueoff",_35="valueon",_36=_28(_16),_37=_28(_e),_38=_28(_f),_39=document.getElementById("wpViewModeDesc").textContent,_3a=document.getElementById("wpEditModeDesc").textContent,_3b=document.getElementById(_1c);
if(_32){
if(!_29(_33,_35)){
_2b(_33,_34);
_2a(_33,_35);
_2b(_37,_a);
_2b(_38,_b);
_2a(_37,_b);
_2a(_38,_a);
_3b.innerHTML=_3a;
_3c(_33,_4,_6);
_36.setAttribute("checked",true);
}
}else{
if(_29(_33,_35)){
_2b(_33,_35);
_2a(_33,_34);
_2b(_37,_b);
_2b(_38,_a);
_2a(_37,_a);
_2a(_38,_b);
_3b.innerHTML=_39;
_3c(_33,_4,_7);
_36.removeAttribute("checked");
}
}
};
function _3d(_3e,_3f){
var _40=_3e||_28(_13),_41=_28(_14);
if(_3f){
if(!_29(_40,_8)){
_2a(_40,_8);
_3c(_41,_2,"wpInfoModeOnLabel");
_3c(_41,_3,"wpInfoModeOnDesc");
_3c(_41,_4,_6);
_3c(_40,_5,_42(_43(_28("wpInfoModeOnDesc"))));
}
}else{
if(_29(_40,_8)){
_2b(_40,_8);
_3c(_41,_2,"wpInfoModeOffLabel");
_3c(_41,_3,"wpInfoModeOffDesc");
_3c(_41,_4,_7);
_3c(_40,_5,_42(_43(_28("wpInfoModeOffDesc"))));
}
}
};
function _44(_45,e){
if(!_46(e,_27)){
return F;
}
_2a(_45,_8);
var _47=wpModules.toolbar;
if(_47.isToolbarOpened()){
_47.closeToolbar();
}else{
_47.openToolbar({"autoOpenDefaultTabs":true});
}
return T;
};
function _48(_49,_4a,e){
var _4b=_28(_16),_4c=_28(_e),_4d=_28(_f);
if(!_46(e,_27)){
return F;
}
if(!_29(_49,_9)){
var t=wpModules.toolbar,_4e=t.isEditModeActive();
if(_4e){
_2b(_4c,_a);
_2b(_4d,_b);
_2a(_4c,_b);
_2a(_4d,_a);
_4b.setAttribute("checked",true);
t.setEditModeActive(F);
}else{
_2b(_4c,_b);
_2b(_4d,_a);
_2a(_4c,_a);
_2a(_4d,_b);
_4b.removeAttribute("checked");
if(_4a&&_4f()){
var _50={"editMode":T};
if(!t.isToolbarOpened()){
_50.autoOpenDefaultTabs=true;
}
t.openToolbar(_50);
}else{
t.setEditModeActive(T);
}
}
_30(_49,!_4e);
}
return T;
};
function _51(_52,e){
if(!_46(e,_27)){
return F;
}
var t=wpModules.toolbar,_53=t.isInfoModeActive();
_3d(_52,!_53);
t.setInfoModeActive(!_53);
return T;
};
function _54(){
return _55().then(function(_56){
var _57=_56;
if(_57.length!=0&&wpModules.toolbar.isInfoModeActive()){
return T;
}else{
return F;
}
});
};
function _58(){
return _55().then(function(_59){
var _5a=_59;
if(_5a.length!=0&&!wpModules.toolbar.isInfoModeActive()){
return T;
}else{
return F;
}
});
};
function _55(){
return new Promise(function(_5b){
var _5c=ibmCfg.portalConfig.contentHandlerURI+((ibmCfg.portalConfig.contentHandlerURI.indexOf("?")<0)?"?":"&")+"uri=menu:navigationMenu";
var _5d={navID:_7f(),rootNode:_21};
if(_5d){
_5c+=(_5c.indexOf("?")==-1?"?":"&")+i$.toQuery(_5d);
}
i$.xhrGet({url:_5c,headers:{"X-IBM-XHR":"true"},responseType:"json"}).then(function(_5e){
_5b(_5e.data);
});
});
};
function _5f(){
var t=wpModules.toolbar;
t.setInfoModeActive(F);
};
function _60(){
var t=wpModules.toolbar;
t.setInfoModeActive(T);
};
function _61(_62,e){
var _63=_28(_23);
var _64=document.getElementById(_24);
var k=e.keyCode;
if(k&&k!==13&&k!==32&&k!==38&&k!==40&&k!==27){
return F;
}
_3c(_63,"style","display: none");
_64.innerHTML="";
};
function _65(_66,e,_67){
var _68=_28(_23);
var _69=document.getElementById(_24);
var _6a=document.getElementById(_25);
var k=e.keyCode;
if(k&&k!==13&&k!==32&&k!==38&&k!==40){
return F;
}
_3c(_68,"style","display: block");
_69.insertAdjacentHTML("beforeend","<iframe src=\""+_67+"\" class=\"wpHelpIFrame\" frameBorder=\"0\" tabindex=\"-1\"></iframe>");
_6a.onclick=function(e){
if(e.target==_6a){
_61(_66,e);
}
};
document.onkeyup=function(e){
if(e.keyCode===27){
_61(_66,e);
}
};
return T;
};
function _6b(_6c,e){
var _6d=F;
if(_6e()){
_6d=_6f(_6c,_1e,e);
}else{
_70(_1e);
_6d=T;
}
return _6d;
};
function _71(_72,e){
var _73=F;
if(_6e()){
_73=_6f(_72,_20,e);
}else{
_70(_20);
_73=T;
}
return _73;
};
function _74(_75,e){
var _76=F;
if(_6e()){
_76=_77(_75,_21,_22,e);
}else{
_70(_21);
_76=T;
}
return _76;
};
function _78(_79,e){
var _7a=T;
_70(_1f);
return _7a;
};
function _6e(){
var _7b=(typeof wptheme!="undefined"&&wptheme.contextMenu);
return _7b;
};
function _6f(_7c,_7d,e){
if(!_46(e,_26)){
return F;
}
var _7e={"navID":_7f(),"rootNode":_7d};
var _80=wpModules.toolbar;
if(_80&&_80.isToolbarOpened()){
_7e.contribURI="nm:oid:ibm.portal.Toolbar";
}
_81(_7c,"navigationMenu",_7e);
return T;
};
function _77(_82,_83,_84,e){
if(!_46(e,_26)){
return F;
}
var _85={"navID":_7f(),"rootNode":_83,"secondaryRootNode":_84};
var _86=wpModules.toolbar;
if(_86&&_86.isToolbarOpened()){
_85.contribURI="nm:oid:ibm.portal.Toolbar";
}
_81(_82,"navigationMenu",_85);
return T;
};
function _81(_87,_88,_89){
_2a(_87.parentNode,_8);
_3c(_87,_4,_6);
args={"node":_87.parentNode,"menuId":_88,"jsonQuery":_89,"params":{"templateId":"simpleMenuTemplate","alignment":"right","autoScroll":false},"onClose":function(){
_2b(_87.parentNode,_8);
_3c(_87,_4,_7);
}};
wptheme.contextMenu.init(args);
};
function _8a(){
return _28(_18).value;
};
function _3c(_8b,_8c,_8d){
_8b.setAttribute(_8c,_8d);
};
function _43(_8e){
return _8e.firstChild;
};
function _42(_8f){
return _8f.nodeValue;
};
function _90(_91){
var fc=_91.firstChild;
while(fc&&fc.nodeType!==1){
fc=fc.nextSibling;
}
return fc;
};
function _92(_93,_94,_95){
if(_95&&_93&&_94&&_94.length>0){
_2c(_94,function(p){
if(_93.name==p.name&&_93.nsuri==p.nsuri){
_95(p.value);
return F;
}
});
}
};
function _46(e,_96){
var k=e?e.keyCode:null;
if(k){
if(_96){
var r=_96.indexOf(k)>=0;
return r;
}else{
return F;
}
}
return T;
};
function _97(){
return wpModules.toolbar.getViewAreaWindow();
};
function _7f(){
var r=_97().ibmCfg.portalConfig.currentPageOID;
return r;
};
function _98(){
return _2e("ibmCfg.portalConfig.isCurrentPageEditable",false,_97());
};
function _4f(){
return _2e("wpModules.state.page.supportsToolbar",false,_97());
};
function _70(id){
wpModules.toolbar.loadViewArea("nm:oid:"+id);
};
function _99(_9a){
if(_9a&&_9a.pageId){
var id=_9a.pageId;
if(id&&id.value&&id.value.length>0){
_70(id.value[0]);
}
}
};
i$.addOnLoad(function(){
var _9b=i$.fromPath("wpModules.state.page",false);
if(_9b){
var _9c=_9b.getStateManager();
_9c.addListener(function(_9d){
var _9e=_9d.renderParams().getModified();
_92({"nsuri":_11,"name":"editMode"},_9e,function(_9f){
var res=(_9f&&_9f[0]=="true"),_a0=_28(_15);
if(_a0){
_30(_a0,res);
}
});
_92({"nsuri":_11,"name":"infoMode"},_9e,function(_a1){
var res=(_a1&&_a1[0]=="true"),_a2=_28(_13);
if(_a2){
_3d(_a2,res);
}
});
});
}
var _a3=wpModules.toolbar.getViewAreaWindow();
if(self===_a3){
var w=_a3.parent||_a3,_a4=w.document.getElementById(_15),_a5=_28(_19),_a6=w.document.getElementById(_1a),_a7=wpModules.toolbar.isEditModeActive(),_a8=w.document.getElementById(_1c),_a9=w.document.getElementById("wpEditModeDesc"),_aa=w.document.getElementById("wpViewModeDesc"),_ab=w.document.getElementById("wpEditModeDisable");
if(_a4){
if(_98()&&_ab){
_2b(_a4,_9);
_2b(_a4,_c);
_2b(_a5,_d);
if(_a7&&_a9){
_a8.innerHTML=_a9.textContent;
}else{
_a8.innerHTML=_aa.textContent;
}
}else{
_2a(_a4,_c);
_2a(_a4,_9);
_2a(_a5,_d);
_a8.innerHTML=_ab.innerText;
}
}
if(_a6){
if(_4f()){
_2b(_a6,_9);
}else{
_2a(_a6,_9);
}
}
}
var _ac=_28(_1b);
if(_ac){
var _ad=wpModules.toolbar;
_ac.onClose=_99;
if(_ad.isToolbarOpened()||_28(_15)){
var _ae={};
_ae.id=_1b;
_ae.key="onClose";
_2f(_ac,"click",function(e){
_ad.openToolbar({"primaryTab":"siteManagerTreeTab:context:oid:"+_7f()+":default:action:CREATE_CHILD_PAGE","onCloseDialog":_ae});
e.preventDefault?e.preventDefault():e.returnValue=F;
return F;
});
}
}
});
wpModules.a11y.highContrastMode.then(function(_af){
if(_af){
_2a(_28(_13),_10);
}
});
_1.toggleToolbar=_44;
_1.toggleEditMode=_48;
_1.toggleInfoMode=_51;
_1.openSitesMenu=_6b;
_1.openApplicationsMenu=_71;
_1.openAdministration=_78;
_1.openHelpArticle=_65;
_1.closeHelpArticle=_61;
_1.toggleInfoModeOff=_5f;
_1.toggleInfoModeOn=_60;
_1.isInfoModeActive=_54;
_1.isInfoModeInactive=_58;
_1.openPractitionersMenu=_74;
})(i$.fromPath("wpModules.theme.ActionBar",true));


}catch(e){console.log("Module 'wp_toolbar_actionbar': ",e);}
try{(function(){
if(!i$.isIE){
i$.addOnLoad(function(){
var _1=document.createElement("div");
_1.style.cssText="border:1px solid;border-color:red green;position:absolute;height:5px;top:-999px;background-image:url(\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\");";
document.body.appendChild(_1);
var _2=null;
try{
_2=document.defaultView.getComputedStyle(_1,"");
}
catch(e){
_2=_1.currentStyle;
}
if(_2){
var _3=_2.backgroundImage;
if((_2.borderTopColor==_2.borderRightColor)||(_3!=null&&(_3=="none"||_3=="url(invalid-url:)"))){
document.getElementsByTagName("body")[0].className+=" a11yHighContrast";
}
document.body.removeChild(_1);
}
});
}
})();


}catch(e){console.log("Module 'wp_high_contrast': ",e);}
try{(function(){
var _1=i$.addClass,_2=i$.hasClass,_3=i$.removeClass,_4=i$.fromPath,ln=function(o){
return o.length;
},_5="edit-mode",_6="edit-mode-disabled",_7="help-mode",_8="info-mode",_9="toolbar-opened",_a="toolbar-closed",_b=_4("wpModules.state.page");
if(_b){
var _c=_b.getStateManager();
_c&&_c.getState().then(function(_d){
var _e=_d.renderParams().get({nsuri:"http://www.ibm.com/xmlns/prod/websphere/portal/publicparams",name:"pageMode"}),_f=_d.renderParams().get({nsuri:"http://www.ibm.com/xmlns/prod/websphere/portal/publicparams",name:"showTools"}),_10=document.body;
_3(_10,_5);
_3(_10,_6);
_3(_10,_8);
_3(_10,_7);
if(_e&&ln(_e)>0&&_e[0].value&&ln(_e[0].value)>0){
var _11=_e[0].value;
for(var i=0;i<ln(_11);++i){
var _12=_11[i];
if("EDIT"==_12){
if(wpModules.state.page.supportsEditMode){
_1(_10,_5);
}else{
_1(_10,_6);
}
}else{
if("INFO"==_12){
_1(_10,_8);
}else{
if("HELP"==_12){
_1(_10,_7);
}
}
}
}
}
if(_f&&ln(_f)>0&&_f[0].value&&ln(_f[0].value)>0){
var _13=_f[0].value[0];
if("true"==_13){
_1(_10,_9);
}else{
_1(_10,_a);
}
}else{
_1(_10,_a);
}
});
}
})();


}catch(e){console.log("Module 'wp_state_page_modes': ",e);}
try{/** Licensed Materials - Property of IBM, 5724-E76 and 5724-E77, (C) Copyright IBM Corp. 2011, 2012 - All Rights reserved.  **/
(function(){
if(!i$.isIE){
i$.addOnLoad(function(){
var _1=document.getElementsByClassName("ibmPortalControl");
for(var i=0;i<_1.length;i++){
if(i$.hasClass(_1[i],"a11yRegionTarget")){
var _2=_1[i];
var _3=null;
var _4=_2.getElementsByTagName("SPAN");
for(var j=0;j<_4.length;j++){
if(i$.hasClass(_4[j],"a11yRegionLabel")){
_3=_4[j];
}
}
if(_3){
var _5=_3;
var _6=_2;
var _7=null;
while((_6=_6.parentNode)!=null){
if(i$.hasClass(_6,"component-control")){
var m=_6&&(_6.className||"").match(/id-([\S]+)/);
_7=m&&m[1];
break;
}
}
if(_7){
var _8="wpRegionId"+_7;
_5.setAttribute("id",_8);
_2.setAttribute("aria-labelledby",_8);
}
}
}
}
});
}
})();


}catch(e){console.log("Module 'wp_skin_region': ",e);}
try{(function(){
    i$.merge({
	"ICON_STOP":"msgError",
	"ICON_SUCCESS":"msgSuccess",
	"BUTTON_RETRY":"Opnieuw proberen",
	"BUTTON_YES":"Ja",
	"BUTTON_NO":"Nee",
	"BUTTON_IGNORE":"Overslaan",
	"LINK_LEARN_MORE":"Meer informatie",
	"ICON_WARNING":"msgWarning",
	"ICON_INFORMATION":"msgInfo",
	"LOADING_IMAGE_0":"afbeelding laden",
	"BUTTON_ABORT":"Afbreken",
	"ICON_EXCLAMATION":"msgWarning",
	"BUTTON_CANCEL":"Annuleren",
	"BUTTON_CONTINUE":"Doorgaan",
	"BUTTON_OK":"OK",
	"BUTTON_TRY":"Probeer het opnieuw",
	"LOADING_0":"Laden...",
	"ICON_ASTERISK":"msgInfo",
	"ICON_ERROR":"msgError",
	"CLOSE_IMAGE_0":"afbeelding sluiten",
	"CLOSE_0":"Sluiten"
},i$.fromPath("wpModules.dialog.nls",true));
})();
}catch(e){console.log("Module 'wp_dialog_main': ",e);}
try{/*
    Version: 0
    Updatelog:
            0:
*/
(function () {
  'use strict';

  angular
    .module('cgApp')
    .service('sharedProperties', function () {
      var EmailAdress;

      return {
        getProperty: function () {
          return EmailAdress;
        },
        setProperty: function (value) {
          EmailAdress = value;
        }
      };
    });

  /*  ------------------------
  service SharedProperties

  Load data

  */
  angular
    .module('cgApp')
    .service('getProjectFromUrl', function () {
      var url = location.href;
      var project = '';
      var urlArr = url.split('/');

      for (i = 0; i < urlArr.length; i++) {
        if (urlArr[i] == '$project') {
          project = urlArr[i + 1];
        }
      }

      this.getProject = function () {
        return project || null;
      };
    });

})();

}catch(e){console.log("Module 'angular_services': ",e);}
try{/*
    Version: 1.0.1
    Updatelog:
            1.0.1:  - Minor changes in searchform ctrl
                    - showSuggested on Menu ctrl
            1.0:    - initial creation of controllers.js
*/

/*  ------------------------
    Menu controller
    This controller is used in the main menu.
*/
(function () {
  'use strict';
  /*  ------------------------
      Filter without stream controller
      This controller is used on press releases.
  */

  angular
    .module('cgApp').controller('FilterNoStreamCtrl', ['$scope', '$attrs', '$document', function ($scope, $attrs, $document) {

    //get the filter
    var yearFilter = document.getElementById('cg-filter-year');
    //get the results
    var results = document.getElementsByClassName('cg-block-media');
    //array for active years
    $scope.allYears = [];
    $scope.ddValueYear = '';

//loop through results
    for (var i = 0; i < results.length; i++) {
      var year = results[i].getAttribute("year");
      if ($scope.allYears.indexOf(year) == -1) {
        //push years in array for filter
        $scope.allYears.push(year);
      }
    }
    $scope.filterYear = function (year, listTitle) {
      $scope.ddYear = false;
      $scope.ddValueYear = year;
      for (var i = 0; i < results.length; i++) {
        results[i].classList.remove('hide');
        var selectedYear = results[i].getAttribute("year");
        if (selectedYear !== year) {
          results[i].classList.add('hide');
        }
        if (year === 'all') {
          results[i].classList.remove('hide');
          $scope.ddValueYear = listTitle;
        }
      }
    };


  }]);

  /*  ------------------------
      Faq controller
      This controller is used on mobile Dashboard.
  */
  angular
    .module('cgApp').controller('FaqCtrl', ['$scope', '$attrs', function ($scope, $attrs) {
    $scope.open = false;

    //Set category id
    $scope.catId = $attrs.catid || null;

    //Set FAQ id
    $scope.faqId = $attrs.faqid || null;

    //Set search
    $scope.faqSearch = $attrs.query || '';

    //Object for active FAQs
    $scope.activeFaq = {};

    if ($scope.faqId) {
      $scope.activeFaq[$scope.faqId] = true;
    }

    function setTitle() {
      if ($scope.catId) {
        $scope.catTitle = document.getElementById('cat-' + $scope.catId).innerHTML;
      }
    }

    var oldStr;
    var searchInt;

    //Search for FAQs
    $scope.searchFaq = function () {

      setTitle();
      var count = 0;

      //Check if 2 or more search characters
      if ($scope.catId && $scope.query.length >= 2) {
        $scope.catId = null;
      }

      //Loop all results
      var results = document.getElementsByClassName('cg-faq-result');
      $scope.results = results;
      for (i = 0; i < results.length; i++) {

        var str = results[i].innerText.toLowerCase();

        //Check if search string matches FAQ content
        if (str.indexOf($scope.query.toLowerCase()) !== -1) {
          results[i].style.display = 'block';
          count++;
        } else {
          results[i].style.display = 'none';
        }
      }

      if (!searchInt) {
        searchInt = setInterval(function () {
          if (oldStr == str) {
            // utag_data.faq_search_keywords = $scope.query.toLowerCase();
            // utag_data.faq_search_results = $scope.total;
            clearInterval(searchInt);
            searchInt = null;
          }

          oldStr = str;
        }, 2000);
      }

      //Total results
      $scope.total = count;
    };

    //Submit the search, when the user pressed "enter"
    $scope.sendFaq = function (e) {
      if (e.keyCode == 13) {
        $scope.searchFaq();
      }
    };

    //Toggle FAQ open/closed
    $scope.toggleNav = function (f) {
      if ($scope.activeFaq[f]) {
        $scope.activeFaq = {};
      } else {
        $scope.activeFaq = {};
        $scope.activeFaq[f] = true;
      }
    };

    //Set a new category
    $scope.updateFaq = function (c) {
      $scope.catId = c;
      //Reset search
      $scope.query = '';
      $scope.searchFaq();
      $scope.newResults = document.getElementById(c).getElementsByClassName('cg-faq-result');
    };

    //Submit the search (FAQ block)
    //TODO: Implement "enter" search
    $scope.submitSearch = function () {
      if ($scope.query && $attrs.feed) {
        window.location.href = $attrs.feed + $scope.query;
      }
    };

    //$scope.searchFaq();
  }]);


  /*  ------------------------
      Media Material Controller
      This controller is used on media materials

      Make modals available
  */
  angular
    .module('cgApp').controller('MediaMaterialCtrl', ['$scope', '$rootScope', '$attrs', function ($scope, $rootScope, $attrs) {

    /*  ------------------------
        Toggles the modal for the clicked digital asset

        @param {string} id: id of the clicked digital asset
    */

    $scope.toggleModal = function (id) {
      //set current modal
      $scope.currentModal = id;
      //toggle modal
      $scope.modal = !$scope.modal;
    };

//get all digital assets blocks
    var activeAssets = document.getElementsByClassName('cg-digital-asset-active');
    var assets = document.getElementsByClassName('cg-digital-asset');

//show selected filter
    $scope.showCurrentBrand = false;
    $scope.showCurrentFileType = false;

//current
    $scope.currentBrand = '';
    $scope.currentFileType = '';

    $scope.assetTypeActive = false;

//pre selected brand
    var selectedBrand = $attrs.selectedbrand;

//original order
    var oOrder = [];
    for (var i = 0; i < assets.length; i++) {
      oOrder.push(assets[i]);
    }

    function resetOrder() {
      angular.forEach(assets, function (v, i) {
        oI = assets[oOrder.indexOf(v)];
        documents.replaceChild(v, oI);
        documents.insertBefore(oI, v);
      });
    }

    /*  ------------------------
        Check if brand is in brands array

        @return {bool}: true / false if the array contains the brand name
    */
    var inArray = function (arr, name) {
      for (var ii = 0; ii < arr.length; ii++) {
        if (arr[ii] === name || name === 'all') {
          return true;
        }
      }
      return false;
    };

    /*  ------------------------
        Check if filters should be available or hidden because there is no content for that filter

        @param {object} brandsArr: array of all brands of a single digital asset item
        @param {string} brandname: Name of the brand in the dropdownlist
        @return {bool}: true / false if brandname is inside of brands array
    */

    //push all brands in array
    var allBrands = [];
    for (var i = 0; i < assets.length; i++) {
      var brands = assets[i].getAttribute('brands').split(",");
      allBrands.push(brands);
    }

    //check which filters should be available
    $scope.checkAvailableFilters = function (filtername) {
      var brandInArray = false;

      allBrands.forEach(function (v, i) {
        if (inArray(v, filtername)) {
          brandInArray = true;
        }
      });
      if (brandInArray) {
        return true;
      }
      return false;
    };

    if (selectedBrand && $scope.checkAvailableFilters(selectedBrand)) {
      $scope.displayAllBrands = false;
    } else {
      $scope.displayAllBrands = true;
    }

    // for hide and show all title


    //check which assets should be displayed
    $scope.checkAssetFilter = function (filtername) {
      var AssetTypeInArray = false;
      var allAssetTypes = [];

      //loop through active assets
      for (var i = 0; i < activeAssets.length; i++) {
        var assetTypes = activeAssets[i].getAttribute('assettype').split(",");
        allAssetTypes.push(assetTypes);
      }

      allAssetTypes.forEach(function (v, i) {
        if (inArray(v, filtername)) {
          AssetTypeInArray = true;
        }
      });
      if (AssetTypeInArray) {
        return true;
      }
    };
    //get container
    var documents = document.getElementsByClassName('cg-mediamaterial-blocks')[0].children[0];

    //set default title of all filetypes
    $scope.ddValueFileType = $attrs.titleassets;
    //filter brands and asset type
    $scope.assetFilter = function (filtername, filtertype, filtertitle) {
      $scope.activeAsset = true;

      filtertype === 'assetType' ? $scope.assetTypeActive = true : $scope.assetTypeActive = false;

      function checkOrder() {

        // sort by value
        var dates = [];
        //original order
        var actua = false;
        //loop through assets and push date in array
        for (var i = 0; i < activeAssets.length; i++) {
          dates.push(activeAssets[i].getAttribute('data-assetdate'));
        }

        //Loop through assets and check index
        angular.forEach(activeAssets, function (v, i) {

          var date = v.getAttribute('data-assetdate');
          dates = dates.sort().reverse();

          //new index
          nI = activeAssets[dates.indexOf(date)];


          if (filtername === 'actua' && !v.classList.contains('hide')) {
            actua = true;
            //change the order
            documents.replaceChild(v, nI);
            documents.insertBefore(nI, v);
          }
          if (filtername !== 'actua') {
            resetOrder();
          }
          ;
        });
      };

      if (filtertype === 'brands') {
        for (var i = 0; i < assets.length; i++) {
          //get all available brands types
          var brandsArr = assets[i].getAttribute('brands').split(",");

          if (!inArray(brandsArr, filtername)) {
            assets[i].classList.add('hide');
            assets[i].classList.remove('cg-digital-asset-active');
          } else {
            assets[i].classList.remove('hide');
            assets[i].classList.add('cg-digital-asset-active');
          }
        }
      }

      if (filtertype === 'assettype') {
        for (var i = 0; i < activeAssets.length; i++) {
          //get all available asset types
          var fileTypeArr = activeAssets[i].getAttribute('assettype').split(",");

          if (!inArray(fileTypeArr, filtername)) {
            activeAssets[i].classList.add('hide');
          } else {
            activeAssets[i].classList.remove('hide');
          }
        }
        checkOrder();
      }

      $scope.showCurrentBrand = true;
      $scope.showCurrentFileType = true;

    };


    //checks if there is a brand parameter and if there is content for that brand
    if (selectedBrand && $scope.checkAvailableFilters(selectedBrand)) {
      $scope.showAllBrands = false;
      //change title and content
      $scope.assetFilter(selectedBrand, 'brands');
    }

    //reset the filter to all
    $scope.clearFilter = function (filterType, filterTitle) {
      //reset the order of the divs to the original
      resetOrder();

      if (filterType === 'brand') {
        for (var i = 0; i < assets.length; i++) {
          assets[i].classList.remove('hide');
          $scope.showCurrentBrand = false;
          $scope.showCurrentFileType = false;
        }
      }

      if (filterType === 'assetType') {
        for (var i = 0; i < activeAssets.length; i++) {
          activeAssets[i].classList.remove('hide');
          $scope.showCurrentBrand = true;
          $scope.showCurrentFileType = false;
        }
      }
    };
  }]);
  /*  ------------------------
      MapCtrl
      This controller is used on brand detail pages (enseignes)

      Creates custom Google map with infobox
  */
  angular
    .module('cgApp').controller('MapCtrl', ['$scope', '$attrs', function ($scope, $attrs) {
    var map;
    var longitude = $attrs.longitude || '';
    var latitude = $attrs.latitude || '';
    var title = $attrs.title || '';
    var adress = $attrs.adress || '';
    var zipcode = $attrs.pc || '';
    var city = $attrs.city || '';
    var brandUrl = $attrs.url || '';
    var btn = $attrs.btn || '';
    var hq = $attrs.hq || '';

    function initMap() {
      map = new google.maps.Map(document.getElementById('map'), {
        zoom: 13,
        center: new google.maps.LatLng(latitude, longitude),
        mapTypeId: 'roadmap',
        scrollwheel: false
      });

      var icons = {
        info: {
          icon: '../css/colruytgroup/images/assets/map-empty-marker.png'
        }
      };

      var features = [{
        position: new google.maps.LatLng(latitude, longitude),
        type: 'info'
      }];

      // Create markers.
      features.forEach(function (feature) {
        var marker = new google.maps.Marker({
          position: feature.position,
          icon: icons[feature.type].icon,
          map: map
        });
        // Create an info popup window for the marker
        var infowindow = new google.maps.InfoWindow({
          content: ('<div class="cg-gmap-info"><p><strong>' + hq + '</strong></p><p>' + title + '<br>' + adress + '<br>' + zipcode + ' ' + city + '</p><a href="https://www.google.nl/maps/dir//' + adress + ',+' + zipcode + '+' + city + '/@' + latitude + ',' + longitude + '" class="cg-btn cg-btn-secondary cg-btn-small" target="_blank"><i class="icon icon-cg-arrowround-right"></i>' + btn + '</a></div>')
        });
        infowindow.open(map, marker);
      });
    }

    initMap();
  }]);
})();

}catch(e){console.log("Module 'angular_controllers': ",e);}
try{(function(_1){
var _2="wpToolbarProjectMenuLink",_3="wpToolbarProjectInfoBox",_4="<edit-mode>",_5="<page-id>",_6="?uri=toolbar:projectTab:projectMenu:returnURI:dialog:CloseModalDialog@oid:"+_5+"&uri=pagemode:edit:"+_4,_7="project:oid:",_8="project:null",_9="title",_a="titleLang",_b="titleDir",_c="editMode",_d="action",_e="resultURI",_f="selectProject",_10="openDialog",_11="openToolbar",_12="closeToolbar",_13={"uri":"pagemode:edit:on"},_14={"uri":"pagemode:edit:off"},_15={"uri":"toolbar:open","params":{"primaryTabURI":"default","secondaryTabURI":"default"}},_16={"uri":"toolbar:open"},_1=_1,_17=_1.document,_18=i$.byId,_19=i$.bindDomEvt,_1a=i$.fromPath,_1b=i$.forEach,_1c=i$.toQuery,_1d=wpModules.toolbar,_1e=function(_1f,e){
var k=e.keyCode;
if(k&&k!==13&&k!==32&&k!==38&&k!==40){
return false;
}
var url=_6.replace(_5,_20()).replace(_4,(_21()?"on":"off")),_22={"url":url,"autoResize":true,"posHandler":"horizontallyBelow","autoPosition":_1f.parentNode,"modal":false,"padding":0,"callbackFn":function(_23){
_1f.focus();
if(_23){
var _24=get(_23,_d);
if(_f==_24){
_25(_23);
}else{
if(_10==_24){
_26(_23);
}else{
if(_11==_24){
_27(_23);
}
}
}
}
}};
_28(_22);
return true;
},_25=function(_29){
var uri=get(_29,_e),_2a=get(_29,_c)=="true";
if(uri){
var _2b=[],_2c=_1d.isToolbarOpened(),_2d=_2e(uri),_2f=_30(_29),_31=_32();
if(_2c&&!_2d){
if(_2f){
_1d.closeToolbar({"editMode":_2a});
}else{
_1d.setEditModeActive(_2a);
}
}else{
if(_2a!=_21()){
if(_2a){
_2b.push(_13);
if(!_2c&&_31){
_2b.push(_15);
}
}else{
_2b.push(_14);
}
}
if(_2c){
if(_2f){
_1d.closeTab();
}else{
if(_31){
if(_2a){
_2b.push(_15);
}else{
_2b.push(_16);
}
}
}
}
_2b.push(_33(uri));
var win=_34(),url=_35(_2b,win),_36=win.parent||win;
_36.location.href=url;
}
}
},_26=function(_37){
var _38=_39(_3a(_37,_e));
if(_38){
var _3b=get(_37,_9)||"Dialog",url=_3c(_38),_3d={"url":url,"title":_3b,"modal":true,"autoResize":true,"metrics":{"width":900},"padding":0,"callbackFn":function(_3e){
if(_3e&&_3e.result=="project_published"){
_1d.closeToolbar({"editMode":false});
}else{
_1d.reloadViewArea(true);
}
}};
_28(_3d);
}
},_27=function(_3f){
var uri=get(_3f,_e);
_1d.openToolbar({tab:uri});
},_28=function(_40){
var _41=new wpModules.dialog.Dialog(_40);
_41.open();
},_35=function(_42,_43){
var _44=_43?_45(_43):"",url=[_44];
_44.indexOf("?")<0?url.push("?"):url.push("&");
_1b(_42,function(_46){
var uri=_46.uri,_47=_46.params;
url.push("uri=");
url.push(uri);
url.push("&");
if(_47){
url.push(_1c(_47));
url.push("&");
}
});
var r=url.join("");
return r;
},_3c=function(_48,_49){
var _4a=_49?_45(_49):"",url=[_4a],uri=_48.uri,_4b=_48.params;
_4a.indexOf("?")<0?url.push("?"):url.push("&");
url.push("uri=");
url.push(uri);
if(_4b){
url.push("&");
url.push(_1c(_4b));
}
var r=url.join("");
return r;
},_33=function(uri,_4c){
var a={};
a.uri=uri;
if(_4c){
a.params=_4c;
}
return a;
},_39=function(_4d){
if(_4d&&_4d.length>0){
var o={};
o.uri=_4d[0];
o.params={};
for(var i=1,l=_4d.length;i<l;i+=2){
var key=_4d[i],val=_4d[i+1];
if(val){
o.params[key]=[val];
}
}
return o;
}
return null;
},get=function(obj,key){
var o=obj[key];
if(o){
var v=o.value;
if(v&&v.length>0){
var r=v[0];
return r;
}
}
return null;
},_3a=function(obj,key){
var o=obj[key];
if(o){
var r=o.value;
return r;
}
return null;
},_20=function(){
var r=_34().ibmCfg.portalConfig.currentPageOID;
return r;
},_21=function(){
var r=_1d.isEditModeActive();
return r;
},_34=function(){
var r=_1d.getViewAreaWindow();
return r;
},_32=function(){
var r=_1a("wpModules.state.page.supportsToolbar",false,_34());
return r;
},_45=function(win){
var r=_1d.getBaseURL(win);
return r;
},_2e=function(uri){
var _4e=_4f(),r=true;
if(_4e){
r=uri.substring(_7.length)!=_4e;
}else{
r=uri!=_8;
}
return r;
},_30=function(_50){
var _51=_3a(_50,_d),r=(_51&&_51.length>1&&_51[1]==_12);
return r;
},_4f=function(){
return _34().ibmCfg.portalConfig.projectUUID;
};
i$.addOnLoad(function(){
var _52=_18(_2);
if(_52){
var _53=function(e){
if(_1e(_52,e)){
e.preventDefault?e.preventDefault():e.returnValue=false;
return false;
}
};
_19(_52,"click",_53);
_19(_52,"keydown",_53);
}
});
})(window);


}catch(e){console.log("Module 'wp_toolbar_projectmenu': ",e);}
try{(function(_1,_2){
var _3="?uri=pagemode:edit:off&uri=op:ibm.portal.operations.showPreviewScreen()&returnURI=dialog:CloseModalDialog",_4={"then":function(){
}},_5=i$.fromPath,_1=_1,_6=_1.document,_7=wpModules.toolbar,_8=_2,_9=function(_a){
var _b=_3,_c=_d("preview_as_user_dialog_title")||"Preview as User",_e={"url":_b,"title":_c,"modal":true,"autoResize":true,"window":_1.parent||_1,"callbackFn":function(_f){
if(_f){
var _10=get(_f,"action");
if(_10=="ok"){
var _11=get(_f,"userID"),_12=get(_f,"path");
_13(_11,_12);
}
}
}},_14=new wpModules.dialog.Dialog(_e);
_14.open();
var r=_4;
return r;
},_13=function(_15,_16){
var url=_7.getBaseURL(_17());
url=url.replace(_16,_16+_15);
url+=url.indexOf("?")<0?"?":"&";
url+="uri=toolbar:close&uri=pagemode:edit:off";
top.location.href=url;
},_18=function(_19){
var r=_19.visibility!==false;
return r;
},_1a=function(_1b){
var r=_1c();
return r;
},_1c=function(){
var r=_5("ibmCfg.portalConfig.canAnonymousUserViewCurrentPage",false,_17());
return r;
},_17=function(){
var r=_7.getViewAreaWindow();
return r;
},_1d=function(_1e){
return {"then":function(cb){
cb(_1e);
}};
},_d=function(key){
var r=_8.nls[key];
return r;
},get=function(obj,key){
var o=obj[key],r=null;
if(o){
var v=o.value;
if(v&&v.length>0){
r=v[0];
}
}
return r;
};
_8.openPreviewAsUserDialog=_9;
_8.isPreviewAsUnauthenticatedUserVisible=_18;
_8.isPreviewAsUnauthenticatedUserEnabled=_1a;
})(window,i$.fromPath("wpModules.toolbar.menuActions",true));


}catch(e){console.log("Module 'wp_toolbar_sitepreview_menuactions': ",e);}
try{(function(_1,_2){
var _3="aria-pressed",_4="selected",_5="true",_6="false",_7=_1.document,_8=i$.addClass,_9=i$.removeClass,_a=wpModules.theme.WindowUtils,_b=_2,_c=function(_d,_e,e){
if(e){
var k=e.keyCode;
if(k&&k!==13&&k!==32&&k!==38&&k!==40){
return false;
}
}
if(typeof wptheme!="undefined"&&wptheme.contextMenu){
var _f=_10(),_11=[];
for(var i=0,l=_f.length;i<l;i++){
_11.push("nm:oid:"+_f[i]);
}
var _12={resURI:"nm:oid:"+_13(_14()),contribURI:_11},_15={"node":_d.parentNode,"menuId":_e,"jsonQuery":_12,"params":{"templateId":"simpleMenuTemplate","alignment":"right","autoScroll":false},"onClose":function(){
_16(_d);
}};
_17(_d);
wptheme.contextMenu.init(_15);
return true;
}else{
return false;
}
},_17=function(_18){
_8(_18.parentNode,_4);
_19(_18,_3,_5);
},_16=function(_1a){
_9(_1a.parentNode,_4);
_19(_1a,_3,_6);
},_19=function(_1b,_1c,_1d){
_1b.setAttribute(_1c,_1d);
},_14=function(){
var r=_a.getWindow(_a.VIEW_AREA);
return r;
},_13=function(win){
var r=win.ibmCfg.portalConfig.currentPageOID;
return r;
},_10=function(){
var r=_a.getPageIDs();
return r;
};
_b.open=_c;
})(window,i$.fromPath("wpModules.toolbar.ContextMenu",true));


}catch(e){console.log("Module 'wp_toolbar_contextmenu': ",e);}
try{(function(_1){
var _2=_1,_3=_1.document,_4=i$.addClass,_5=i$.removeClass,_6=i$.byId,_7=i$.bindDomEvt,_8="minimized",_9="utb-end-preview-btn",_a=3500,_b=500,_c=function(_d,_e){
var _f=function(){
_4(_d,_8);
};
return setTimeout(_f,_e);
},_10=function(_11,_12){
var _13=function(){
_5(_11,_8);
};
return setTimeout(_13,_12);
};
i$.addOnLoad(function(){
var _14=_6(_9);
if(_14){
var _15=_14.parentNode,_16=_c(_15,_a);
_7(_15,"mouseenter",function(){
if(_16){
clearTimeout(_16);
}
_16=_10(_15,_b);
});
_7(_15,"mouseleave",function(){
if(_16){
clearTimeout(_16);
}
_16=_c(_15,_a);
});
}
});
})(window);


}catch(e){console.log("Module 'wp_toolbar_sitepreview': ",e);}
try{function customLightbox(){for(var e=document.getElementsByClassName("cg-lightbox-thumbnails"),t=0;t<e.length;t++){g=t;if(0!==e[t].length){var n=e[t].querySelectorAll("a figure"),o=document.createElement("span");o.innerHTML="+"+(n.length-6),n.length>6&&n[6].appendChild(o);var a=e[t].querySelectorAll("a:nth-child(7)");a[0]&&a[0].classList.add("cg-last-thumbnail");for(var s=e[t].querySelectorAll("a:nth-child(n+"+(parseInt(7)+1)+")"),i=0;i<s.length;i++)s[i].classList.add("cg-hide");if(e[t]){var l=document.createElement("section");l.className="cg-lightbox-wrap";for(var c=e[t].querySelectorAll("img"),r=c.length,g=t,d=0;d<c.length;d++)!function(t){var n=g;c[t].onclick=function(){function o(){0==g?u[0].classList.add("hide"):u[0].classList.remove("hide"),g==d.length-1?u[1].classList.add("hide"):u[1].classList.remove("hide")}function a(t){e[n].querySelectorAll(".cg-lightbox-total")[0].innerHTML=d[t].alt,e[n].querySelectorAll(".cg-lightbox img")[0].src=d[t].src,e[n].querySelectorAll(".cg-lightbox figure")[0].style.backgroundImage="url("+d[t].src+")",e[n].querySelectorAll(".cg-lightbox img")[0].alt=d[t].alt,o()}g=t;var s=!0,i=this.alt,c=this.src,d=e[n].querySelectorAll("img");l.innerHTML='<div class="cg-lightbox-overlay"><div class="cg-lightbox" id="cg-lightbox"><i class="icon icon-close" id="cg-close-lightbox" aria-hidden="true"></i><div class="cg-lightbox-inside"><a href="javascript:;" id="cg-lightbox-previous"><span class="icon icon-cg-arrow-left"></span></a><a href="javascript:;" id="cg-lightbox-next"><span class="icon icon-cg-arrow-right"></span></a><figure style="background-image:url('+c+')"><img src="'+c+'" alt="'+i+'" /></figure><span class="ng-binding"><span class="cg-lightbox-total">'+i+"</span></div></div></div>";this.parentElement.parentElement.parentElement;e[n].appendChild(l);var u=e[n].querySelectorAll(".cg-lightbox a");o();var m=document.getElementById("cg-lightbox");u[0].onclick=function(){a(g-=1)},ontouch(m,function(e,t,n,o,s){"right"==t&&"end"==n&&g>0&&a(g-=1)});u[1].onclick=function(){a(g+=1)},ontouch(m,function(e,t,n,o,s){"left"==t&&"end"==n&&g<r-1&&a(g+=1)});var h=e[n].getElementsByClassName("cg-lightbox"),y=h[0].parentNode.parentNode;s&&(l.classList.add("show"),document.addEventListener("click",function(e){var t=h[0].contains(e.target),n=y.contains(e.target),o=document.getElementById("cg-close-lightbox"),a=o.contains(e.target);ontouch(o,function(e,t,n,o,a){l.classList.remove("show"),s=!1}),(!t&&n||a)&&(l.classList.remove("show"),s=!1)}))}}(d)}}}}function toggleCountryFilter(e){if(activeCountry="",e)for(t=countryBar.length-1;t>=0;t--)countryBar[t].classList.contains("cg-country-active")&&(activeCountry=countryBar[t].id.substring(countryBar[t].id.lastIndexOf("-")+1,countryBar[t].id.length)),countryBar[t].classList.remove("hidden-xs","hidden-sm"),toggleArrow.classList.add("hidden-xs","hidden-sm"),toggleTitle.classList.remove("hidden-xs","hidden-sm");else for(var t=countryBar.length-1;t>=0;t--)countryBar[t].classList.add("hidden-xs","hidden-sm"),toggleArrow.classList.remove("hidden-xs","hidden-sm"),toggleTitle.classList.add("hidden-xs","hidden-sm")}function filterBrandsByCountry(e){toggleCountryFilter(!1);for(var t=document.getElementById("cg-brands-"+e),n=document.getElementById("cg-country-"+e),o=0;o<allCountrySections.length;o++)allCountrySections[o].classList.add("hide");for(o=0;o<countryBar.length;o++)countryBar[o].classList.remove("cg-country-active");t.classList.remove("hide"),n.classList.add("cg-country-active");for(o=0;o<countryBar.length;o++)countryBar[o].classList.contains("cg-country-active")&&countryBar[o].classList.remove("hidden-xs","hidden-sm")}function toggleBrandsSections(e){for(var t=document.getElementsByClassName("cg-toggle-brands"),n=document.getElementsByClassName("cg-brand-row"),e=0;e<t.length;e++){!function(o){t[e].addEventListener("click",function(e){n[o].classList.toggle("cg-collapsed"),t[o].getElementsByClassName("icon-cg-arrow-up")[0].classList.toggle("show"),t[o].getElementsByClassName("icon-cg-arrow-down")[0].classList.toggle("hide")})}(e)}}function historyMonthFilter(){var e=document.getElementsByClassName("cg-year"),t=[],n=document.getElementsByClassName("cg-month");for(i=0;i<e.length;i++)t.push(e[i].innerHTML);var o=function(e){var t=[];return e.forEach(function(n,o){e.indexOf(n,o+1)>-1&&-1===t.indexOf(n)&&t.push(n)}),t}(t);for(i=0;i<o.length;i++)for(ii=0;ii<e.length;ii++)e[ii].innerHTML===o[i]&&n[ii].classList.remove("hide")}function checkContainer(){for(var e=document.getElementsByClassName("cg-content-layers"),t=0;t<e.length;t++)for(var n=e[t].getElementsByClassName("container"),o=0;o<n.length;o++)null==n[o].firstElementChild&&(n[o].parentElement.style.padding="0px")}function moveLayer(e,t){var n=new XMLHttpRequest;n.onreadystatechange=function(){4==this.readyState&&200==this.status&&location.reload()},n.open("GET",t,!0),n.send()}function buildLayerData(){var e=document.getElementsByClassName("cg-layer-data");for(i=0;i<e.length;i++)utag_data[e[i].name]=e[i].value}function countWords(e){var t=0;for(i=0;i<e.length;i++)t+=e[i].textContent.trim().split(/\s+/).length;return t}function checkIE(){var e=document.getElementsByTagName("body")[0];(/MSIE 9/i.test(navigator.userAgent)||/rv:11.0/i.test(navigator.userAgent)||/MSIE 10/i.test(navigator.userAgent))&&e.classList.add("browser-ie")}function previousPage(){window.history.back()}var toolBarApp=document.getElementsByClassName("wpToolbarCommon");toolBarApp&&toolBarApp.length&&document.body.classList.add("colruytgroup-toolbar-active"),customLightbox();var countryBar=document.getElementsByClassName("cg-country"),allCountrySections=document.getElementsByClassName("cg-brands-country-section"),toggleArrow=document.getElementById("cg-close-country-bar"),toggleTitle=document.getElementById("cg-country-bar-title");toggleBrandsSections();for(var videos=document.querySelectorAll(".cg-video-layer iframe"),videoWrappers=document.querySelectorAll(".cg-video-layer cg-video-wrapper"),videoImages=document.querySelectorAll(".cg-video-layer .cg-video-img"),i=0;i<videoImages.length;i++)!function(e){videoImages[i].addEventListener("click",function(t){this.style.display="none",-1===videos[e].src.indexOf("?autoplay=1")&&(videos[e].src+="?autoplay=1&controls=1",videos[e].style.opacity=1)})}(i);historyMonthFilter(),checkContainer();var moveUpBtn=document.querySelectorAll(".cg-authoring .fa-caret-up");moveUpBtn[0]&&moveUpBtn[0].classList.add("hide");var moveDownBtn=document.querySelectorAll(".cg-authoring .fa-caret-down"),moveDownBtnLast=moveDownBtn.length-1;moveDownBtn[moveDownBtnLast]&&moveDownBtn[moveDownBtnLast].classList.add("hide");var mainContent=document.getElementsByClassName("cg-main-content-section")[0];buildLayerData(),(document.getElementsByClassName("cg-body").length||document.getElementsByClassName("cg-intro").length)&&(utag_data.content_number_of_words=countWords(document.getElementsByClassName("cg-body")),utag_data.content_number_of_words+=countWords(document.getElementsByClassName("cg-intro")));var resultsPageElements=document.getElementsByClassName("cg-result-page");if(resultsPageElements.length)for(i=0;i<resultsPageElements.length;i++)resultsPageElements[i].value=window.location.href;checkIE();
}catch(e){console.log("Module 'custom_js': ",e);}