mirror of
https://github.com/pure-admin/vue-pure-admin.git
synced 2025-06-07 17:07:19 +08:00
349 lines
2.3 MiB
349 lines
2.3 MiB
var zm=Object.defineProperty,Im=Object.defineProperties;var Dm=Object.getOwnPropertyDescriptors;var ZR=Object.getOwnPropertySymbols,Em=Object.getPrototypeOf,wm=Object.prototype.hasOwnProperty,Cm=Object.prototype.propertyIsEnumerable,xm=Reflect.get;var RV=(U,l)=>(l=Symbol[U])?l:Symbol.for("Symbol."+U);var iF=Math.pow,tR=(U,l,d)=>l in U?zm(U,l,{enumerable:!0,configurable:!0,writable:!0,value:d}):U[l]=d,ul=(U,l)=>{for(var d in l||(l={}))wm.call(l,d)&&tR(U,d,l[d]);if(ZR)for(var d of ZR(l))Cm.call(l,d)&&tR(U,d,l[d]);return U},WU=(U,l)=>Im(U,Dm(l));var RF=(U,l,d)=>xm(Em(U),d,l);var z=(U,l,d)=>new Promise((Z,t)=>{var F=W=>{try{a(d.next(W))}catch(n){t(n)}},c=W=>{try{a(d.throw(W))}catch(n){t(n)}},a=W=>W.done?Z(W.value):Promise.resolve(W.value).then(F,c);a((d=d.apply(U,l)).next())}),qQ=function(U,l){this[0]=U,this[1]=l},NV=(U,l,d)=>{var Z=(c,a,W,n)=>{try{var V=d[c](a),s=(a=V.value)instanceof qQ,i=V.done;Promise.resolve(s?a[0]:a).then(R=>s?Z(c==="return"?c:"next",a[1]?{done:R.done,value:R.value}:R,W,n):W({value:R,done:i})).catch(R=>Z("throw",R,W,n))}catch(R){n(R)}},t=c=>F[c]=a=>new Promise((W,n)=>Z(c,a,W,n)),F={};return d=d.apply(U,l),F[RV("asyncIterator")]=()=>F,t("next"),t("throw"),t("return"),F};var FR=(U,l,d)=>(l=U[RV("asyncIterator")])?l.call(U):(U=U[RV("iterator")](),l={},d=(Z,t)=>(t=U[Z])&&(l[Z]=F=>new Promise((c,a,W)=>(F=t.call(U,F),W=F.done,Promise.resolve(F.value).then(n=>c({value:n,done:W}),a)))),d("next"),d("return"),l);import{M as Sn,N as rm,O as cR,n as bs,z as ch,d as Qh,a as Jt,P as jm,p as Om,f as ZZ,k as EZ,F as gm,l as Km,Q as QR,g as bQ,j as aR,s as vm,R as Hm,b as Pm,w as dt,e as NF,A as WR,i as RZ,h as $Q,B as hV,t as bV,u as nR}from"./index-BHcVNAp5.js";var fm=Object.defineProperty,ah=U=>{throw TypeError(U)},Am=(U,l,d)=>l in U?fm(U,l,{enumerable:!0,configurable:!0,writable:!0,value:d}):U[l]=d,f=(U,l,d)=>Am(U,typeof l!="symbol"?l+"":l,d),xi=(U,l,d)=>l.has(U)||ah("Cannot "+d),Q=(U,l,d)=>(xi(U,l,"read from private field"),d?d.call(U):l.get(U)),e=(U,l,d)=>l.has(U)?ah("Cannot add the same private member more than once"):l instanceof WeakSet?l.add(U):l.set(U,d),b=(U,l,d,Z)=>(xi(U,l,"write to private field"),l.set(U,d),d),N=(U,l,d)=>(xi(U,l,"access private method"),d),md=(U,l,d,Z)=>({set _(t){b(U,l,t)},get _(){return Q(U,l,Z)}}),_m={9306:(U,l,d)=>{var Z=d(4901),t=d(6823),F=TypeError;U.exports=function(c){if(Z(c))return c;throw new F(t(c)+" is not a function")}},3506:(U,l,d)=>{var Z=d(3925),t=String,F=TypeError;U.exports=function(c){if(Z(c))return c;throw new F("Can't set "+t(c)+" as a prototype")}},7080:(U,l,d)=>{var Z=d(4402).has;U.exports=function(t){return Z(t),t}},679:(U,l,d)=>{var Z=d(1625),t=TypeError;U.exports=function(F,c){if(Z(c,F))return F;throw new t("Incorrect invocation")}},8551:(U,l,d)=>{var Z=d(34),t=String,F=TypeError;U.exports=function(c){if(Z(c))return c;throw new F(t(c)+" is not an object")}},7811:U=>{U.exports=typeof ArrayBuffer<"u"&&typeof DataView<"u"},7394:(U,l,d)=>{var Z=d(4576),t=d(6706),F=d(2195),c=Z.ArrayBuffer,a=Z.TypeError;U.exports=c&&t(c.prototype,"byteLength","get")||function(W){if(F(W)!=="ArrayBuffer")throw new a("ArrayBuffer expected");return W.byteLength}},3238:(U,l,d)=>{var Z=d(4576),t=d(7476),F=d(7394),c=Z.ArrayBuffer,a=c&&c.prototype,W=a&&t(a.slice);U.exports=function(n){if(F(n)!==0||!W)return!1;try{return W(n,0,0),!1}catch(V){return!0}}},5169:(U,l,d)=>{var Z=d(3238),t=TypeError;U.exports=function(F){if(Z(F))throw new t("ArrayBuffer is detached");return F}},5636:(U,l,d)=>{var Z=d(4576),t=d(9504),F=d(6706),c=d(7696),a=d(5169),W=d(7394),n=d(4483),V=d(1548),s=Z.structuredClone,i=Z.ArrayBuffer,R=Z.DataView,h=Math.min,m=i.prototype,M=R.prototype,J=t(m.slice),T=F(m,"resizable","get"),G=F(m,"maxByteLength","get"),X=t(M.getInt8),Y=t(M.setInt8);U.exports=(V||n)&&function(p,o,k){var S=W(p),B=o===void 0?S:c(o),y=!T||!T(p),D;if(a(p),V&&(p=s(p,{transfer:[p]}),S===B&&(k||y)))return p;if(S>=B&&(!k||y))D=J(p,0,B);else{var E=k&&!y&&G?{maxByteLength:G(p)}:void 0;D=new i(B,E);for(var r=new R(p),w=new R(D),u=h(B,S),C=0;C<u;C++)Y(w,C,X(r,C))}return V||n(p),D}},4644:(U,l,d)=>{var Z=d(7811),t=d(3724),F=d(4576),c=d(4901),a=d(34),W=d(9297),n=d(6955),V=d(6823),s=d(6699),i=d(6840),R=d(2106),h=d(1625),m=d(2787),M=d(2967),J=d(8227),T=d(3392),G=d(1181),X=G.enforce,Y=G.get,p=F.Int8Array,o=p&&p.prototype,k=F.Uint8ClampedArray,S=k&&k.prototype,B=p&&m(p),y=o&&m(o),D=Object.prototype,E=F.TypeError,r=J("toStringTag"),w=T("TYPED_ARRAY_TAG"),u="TypedArrayConstructor",C=Z&&!!M&&n(F.opera)!=="Opera",Ul=!1,Wl,hl,Il,Vl={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},bl={BigInt64Array:8,BigUint64Array:8},QU=function(P){if(!a(P))return!1;var Jl=n(P);return Jl==="DataView"||W(Vl,Jl)||W(bl,Jl)},fd=function(P){var Jl=m(P);if(a(Jl)){var gl=Y(Jl);return gl&&W(gl,u)?gl[u]:fd(Jl)}},x=function(P){if(!a(P))return!1;var Jl=n(P);return W(Vl,Jl)||W(bl,Jl)},I=function(P){if(x(P))return P;throw new E("Target is not a typed array")},j=function(P){if(c(P)&&(!M||h(B,P)))return P;throw new E(V(P)+" is not a typed array constructor")},A=function(P,Jl,gl,aU){if(t){if(gl)for(var sd in Vl){var Kl=F[sd];if(Kl&&W(Kl.prototype,P))try{delete Kl.prototype[P]}catch(sF){try{Kl.prototype[P]=Jl}catch(iV){}}}(!y[P]||gl)&&i(y,P,gl?Jl:C&&o[P]||Jl,aU)}},sl=function(P,Jl,gl){var aU,sd;if(t){if(M){if(gl){for(aU in Vl)if(sd=F[aU],sd&&W(sd,P))try{delete sd[P]}catch(Kl){}}if(!B[P]||gl)try{return i(B,P,gl?Jl:C&&B[P]||Jl)}catch(Kl){}else return}for(aU in Vl)sd=F[aU],sd&&(!sd[P]||gl)&&i(sd,P,Jl)}};for(Wl in Vl)hl=F[Wl],Il=hl&&hl.prototype,Il?X(Il)[u]=hl:C=!1;for(Wl in bl)hl=F[Wl],Il=hl&&hl.prototype,Il&&(X(Il)[u]=hl);if((!C||!c(B)||B===Function.prototype)&&(B=function(){throw new E("Incorrect invocation")},C))for(Wl in Vl)F[Wl]&&M(F[Wl],B);if((!C||!y||y===D)&&(y=B.prototype,C))for(Wl in Vl)F[Wl]&&M(F[Wl].prototype,y);if(C&&m(S)!==y&&M(S,y),t&&!W(y,r)){Ul=!0,R(y,r,{configurable:!0,get:function(){return a(this)?this[w]:void 0}});for(Wl in Vl)F[Wl]&&s(F[Wl],w,Wl)}U.exports={NATIVE_ARRAY_BUFFER_VIEWS:C,TYPED_ARRAY_TAG:Ul&&w,aTypedArray:I,aTypedArrayConstructor:j,exportTypedArrayMethod:A,exportTypedArrayStaticMethod:sl,getTypedArrayConstructor:fd,isView:QU,isTypedArray:x,TypedArray:B,TypedArrayPrototype:y}},5370:(U,l,d)=>{var Z=d(6198);U.exports=function(t,F,c){for(var a=0,W=arguments.length>2?c:Z(F),n=new t(W);W>a;)n[a]=F[a++];return n}},9617:(U,l,d)=>{var Z=d(5397),t=d(5610),F=d(6198),c=function(a){return function(W,n,V){var s=Z(W),i=F(s);if(i===0)return!a&&-1;var R=t(V,i),h;if(a&&n!==n){for(;i>R;)if(h=s[R++],h!==h)return!0}else for(;i>R;R++)if((a||R in s)&&s[R]===n)return a||R||0;return!a&&-1}};U.exports={includes:c(!0),indexOf:c(!1)}},4527:(U,l,d)=>{var Z=d(3724),t=d(4376),F=TypeError,c=Object.getOwnPropertyDescriptor,a=Z&&!function(){if(this!==void 0)return!0;try{Object.defineProperty([],"length",{writable:!1}).length=1}catch(W){return W instanceof TypeError}}();U.exports=a?function(W,n){if(t(W)&&!c(W,"length").writable)throw new F("Cannot set read only .length");return W.length=n}:function(W,n){return W.length=n}},7628:(U,l,d)=>{var Z=d(6198);U.exports=function(t,F){for(var c=Z(t),a=new F(c),W=0;W<c;W++)a[W]=t[c-W-1];return a}},9928:(U,l,d)=>{var Z=d(6198),t=d(1291),F=RangeError;U.exports=function(c,a,W,n){var V=Z(c),s=t(W),i=s<0?V+s:s;if(i>=V||i<0)throw new F("Incorrect index");for(var R=new a(V),h=0;h<V;h++)R[h]=h===i?n:c[h];return R}},6319:(U,l,d)=>{var Z=d(8551),t=d(9539);U.exports=function(F,c,a,W){try{return W?c(Z(a)[0],a[1]):c(a)}catch(n){t(F,"throw",n)}}},2195:(U,l,d)=>{var Z=d(9504),t=Z({}.toString),F=Z("".slice);U.exports=function(c){return F(t(c),8,-1)}},6955:(U,l,d)=>{var Z=d(2140),t=d(4901),F=d(2195),c=d(8227),a=c("toStringTag"),W=Object,n=F(function(){return arguments}())==="Arguments",V=function(s,i){try{return s[i]}catch(R){}};U.exports=Z?F:function(s){var i,R,h;return s===void 0?"Undefined":s===null?"Null":typeof(R=V(i=W(s),a))=="string"?R:n?F(i):(h=F(i))==="Object"&&t(i.callee)?"Arguments":h}},7740:(U,l,d)=>{var Z=d(9297),t=d(5031),F=d(7347),c=d(4913);U.exports=function(a,W,n){for(var V=t(W),s=c.f,i=F.f,R=0;R<V.length;R++){var h=V[R];!Z(a,h)&&!(n&&Z(n,h))&&s(a,h,i(W,h))}}},2211:(U,l,d)=>{var Z=d(9039);U.exports=!Z(function(){function t(){}return t.prototype.constructor=null,Object.getPrototypeOf(new t)!==t.prototype})},2529:U=>{U.exports=function(l,d){return{value:l,done:d}}},6699:(U,l,d)=>{var Z=d(3724),t=d(4913),F=d(6980);U.exports=Z?function(c,a,W){return t.f(c,a,F(1,W))}:function(c,a,W){return c[a]=W,c}},6980:U=>{U.exports=function(l,d){return{enumerable:!(l&1),configurable:!(l&2),writable:!(l&4),value:d}}},4659:(U,l,d)=>{var Z=d(3724),t=d(4913),F=d(6980);U.exports=function(c,a,W){Z?t.f(c,a,F(0,W)):c[a]=W}},2106:(U,l,d)=>{var Z=d(283),t=d(4913);U.exports=function(F,c,a){return a.get&&Z(a.get,c,{getter:!0}),a.set&&Z(a.set,c,{setter:!0}),t.f(F,c,a)}},6840:(U,l,d)=>{var Z=d(4901),t=d(4913),F=d(283),c=d(9433);U.exports=function(a,W,n,V){V||(V={});var s=V.enumerable,i=V.name!==void 0?V.name:W;if(Z(n)&&F(n,i,V),V.global)s?a[W]=n:c(W,n);else{try{V.unsafe?a[W]&&(s=!0):delete a[W]}catch(R){}s?a[W]=n:t.f(a,W,{value:n,enumerable:!1,configurable:!V.nonConfigurable,writable:!V.nonWritable})}return a}},6279:(U,l,d)=>{var Z=d(6840);U.exports=function(t,F,c){for(var a in F)Z(t,a,F[a],c);return t}},9433:(U,l,d)=>{var Z=d(4576),t=Object.defineProperty;U.exports=function(F,c){try{t(Z,F,{value:c,configurable:!0,writable:!0})}catch(a){Z[F]=c}return c}},3724:(U,l,d)=>{var Z=d(9039);U.exports=!Z(function(){return Object.defineProperty({},1,{get:function(){return 7}})[1]!==7})},4483:(U,l,d)=>{var Z=d(4576),t=d(9429),F=d(1548),c=Z.structuredClone,a=Z.ArrayBuffer,W=Z.MessageChannel,n=!1,V,s,i,R;if(F)n=function(h){c(h,{transfer:[h]})};else if(a)try{W||(V=t("worker_threads"),V&&(W=V.MessageChannel)),W&&(s=new W,i=new a(2),R=function(h){s.port1.postMessage(null,[h])},i.byteLength===2&&(R(i),i.byteLength===0&&(n=R)))}catch(h){}U.exports=n},4055:(U,l,d)=>{var Z=d(4576),t=d(34),F=Z.document,c=t(F)&&t(F.createElement);U.exports=function(a){return c?F.createElement(a):{}}},6837:U=>{var l=TypeError,d=9007199254740991;U.exports=function(Z){if(Z>d)throw l("Maximum allowed index exceeded");return Z}},5002:U=>{U.exports={IndexSizeError:{s:"INDEX_SIZE_ERR",c:1,m:1},DOMStringSizeError:{s:"DOMSTRING_SIZE_ERR",c:2,m:0},HierarchyRequestError:{s:"HIERARCHY_REQUEST_ERR",c:3,m:1},WrongDocumentError:{s:"WRONG_DOCUMENT_ERR",c:4,m:1},InvalidCharacterError:{s:"INVALID_CHARACTER_ERR",c:5,m:1},NoDataAllowedError:{s:"NO_DATA_ALLOWED_ERR",c:6,m:0},NoModificationAllowedError:{s:"NO_MODIFICATION_ALLOWED_ERR",c:7,m:1},NotFoundError:{s:"NOT_FOUND_ERR",c:8,m:1},NotSupportedError:{s:"NOT_SUPPORTED_ERR",c:9,m:1},InUseAttributeError:{s:"INUSE_ATTRIBUTE_ERR",c:10,m:1},InvalidStateError:{s:"INVALID_STATE_ERR",c:11,m:1},SyntaxError:{s:"SYNTAX_ERR",c:12,m:1},InvalidModificationError:{s:"INVALID_MODIFICATION_ERR",c:13,m:1},NamespaceError:{s:"NAMESPACE_ERR",c:14,m:1},InvalidAccessError:{s:"INVALID_ACCESS_ERR",c:15,m:1},ValidationError:{s:"VALIDATION_ERR",c:16,m:0},TypeMismatchError:{s:"TYPE_MISMATCH_ERR",c:17,m:1},SecurityError:{s:"SECURITY_ERR",c:18,m:1},NetworkError:{s:"NETWORK_ERR",c:19,m:1},AbortError:{s:"ABORT_ERR",c:20,m:1},URLMismatchError:{s:"URL_MISMATCH_ERR",c:21,m:1},QuotaExceededError:{s:"QUOTA_EXCEEDED_ERR",c:22,m:1},TimeoutError:{s:"TIMEOUT_ERR",c:23,m:1},InvalidNodeTypeError:{s:"INVALID_NODE_TYPE_ERR",c:24,m:1},DataCloneError:{s:"DATA_CLONE_ERR",c:25,m:1}}},8727:U=>{U.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},6193:(U,l,d)=>{var Z=d(4215);U.exports=Z==="NODE"},2839:(U,l,d)=>{var Z=d(4576),t=Z.navigator,F=t&&t.userAgent;U.exports=F?String(F):""},9519:(U,l,d)=>{var Z=d(4576),t=d(2839),F=Z.process,c=Z.Deno,a=F&&F.versions||c&&c.version,W=a&&a.v8,n,V;W&&(n=W.split("."),V=n[0]>0&&n[0]<4?1:+(n[0]+n[1])),!V&&t&&(n=t.match(/Edge\/(\d+)/),(!n||n[1]>=74)&&(n=t.match(/Chrome\/(\d+)/),n&&(V=+n[1]))),U.exports=V},4215:(U,l,d)=>{var Z=d(4576),t=d(2839),F=d(2195),c=function(a){return t.slice(0,a.length)===a};U.exports=function(){return c("Bun/")?"BUN":c("Cloudflare-Workers")?"CLOUDFLARE":c("Deno/")?"DENO":c("Node.js/")?"NODE":Z.Bun&&typeof Bun.version=="string"?"BUN":Z.Deno&&typeof Deno.version=="object"?"DENO":F(Z.process)==="process"?"NODE":Z.window&&Z.document?"BROWSER":"REST"}()},8574:(U,l,d)=>{var Z=d(9504),t=Error,F=Z("".replace),c=function(n){return String(new t(n).stack)}("zxcasd"),a=/\n\s*at [^:]*:[^\n]*/,W=a.test(c);U.exports=function(n,V){if(W&&typeof n=="string"&&!t.prepareStackTrace)for(;V--;)n=F(n,a,"");return n}},6518:(U,l,d)=>{var Z=d(4576),t=d(7347).f,F=d(6699),c=d(6840),a=d(9433),W=d(7740),n=d(2796);U.exports=function(V,s){var i=V.target,R=V.global,h=V.stat,m,M,J,T,G,X;if(R?M=Z:h?M=Z[i]||a(i,{}):M=Z[i]&&Z[i].prototype,M)for(J in s){if(G=s[J],V.dontCallGetSet?(X=t(M,J),T=X&&X.value):T=M[J],m=n(R?J:i+(h?".":"#")+J,V.forced),!m&&T!==void 0){if(typeof G==typeof T)continue;W(G,T)}(V.sham||T&&T.sham)&&F(G,"sham",!0),c(M,J,G,V)}}},9039:U=>{U.exports=function(l){try{return!!l()}catch(d){return!0}}},6080:(U,l,d)=>{var Z=d(7476),t=d(9306),F=d(616),c=Z(Z.bind);U.exports=function(a,W){return t(a),W===void 0?a:F?c(a,W):function(){return a.apply(W,arguments)}}},616:(U,l,d)=>{var Z=d(9039);U.exports=!Z(function(){var t=function(){}.bind();return typeof t!="function"||t.hasOwnProperty("prototype")})},9565:(U,l,d)=>{var Z=d(616),t=Function.prototype.call;U.exports=Z?t.bind(t):function(){return t.apply(t,arguments)}},350:(U,l,d)=>{var Z=d(3724),t=d(9297),F=Function.prototype,c=Z&&Object.getOwnPropertyDescriptor,a=t(F,"name"),W=a&&function(){}.name==="something",n=a&&(!Z||Z&&c(F,"name").configurable);U.exports={EXISTS:a,PROPER:W,CONFIGURABLE:n}},6706:(U,l,d)=>{var Z=d(9504),t=d(9306);U.exports=function(F,c,a){try{return Z(t(Object.getOwnPropertyDescriptor(F,c)[a]))}catch(W){}}},7476:(U,l,d)=>{var Z=d(2195),t=d(9504);U.exports=function(F){if(Z(F)==="Function")return t(F)}},9504:(U,l,d)=>{var Z=d(616),t=Function.prototype,F=t.call,c=Z&&t.bind.bind(F,F);U.exports=Z?c:function(a){return function(){return F.apply(a,arguments)}}},9429:(U,l,d)=>{var Z=d(4576),t=d(6193);U.exports=function(F){if(t){try{return Z.process.getBuiltinModule(F)}catch(c){}try{return Function('return require("'+F+'")')()}catch(c){}}}},7751:(U,l,d)=>{var Z=d(4576),t=d(4901),F=function(c){return t(c)?c:void 0};U.exports=function(c,a){return arguments.length<2?F(Z[c]):Z[c]&&Z[c][a]}},1767:U=>{U.exports=function(l){return{iterator:l,next:l.next,done:!1}}},8646:(U,l,d)=>{var Z=d(9565),t=d(8551),F=d(1767),c=d(851);U.exports=function(a,W){(!W||typeof a!="string")&&t(a);var n=c(a);return F(t(n!==void 0?Z(n,a):a))}},851:(U,l,d)=>{var Z=d(6955),t=d(5966),F=d(4117),c=d(6269),a=d(8227),W=a("iterator");U.exports=function(n){if(!F(n))return t(n,W)||t(n,"@@iterator")||c[Z(n)]}},81:(U,l,d)=>{var Z=d(9565),t=d(9306),F=d(8551),c=d(6823),a=d(851),W=TypeError;U.exports=function(n,V){var s=arguments.length<2?a(n):V;if(t(s))return F(Z(s,n));throw new W(c(n)+" is not iterable")}},5966:(U,l,d)=>{var Z=d(9306),t=d(4117);U.exports=function(F,c){var a=F[c];return t(a)?void 0:Z(a)}},3789:(U,l,d)=>{var Z=d(9306),t=d(8551),F=d(9565),c=d(1291),a=d(1767),W="Invalid size",n=RangeError,V=TypeError,s=Math.max,i=function(R,h){this.set=R,this.size=s(h,0),this.has=Z(R.has),this.keys=Z(R.keys)};i.prototype={getIterator:function(){return a(t(F(this.keys,this.set)))},includes:function(R){return F(this.has,this.set,R)}},U.exports=function(R){t(R);var h=+R.size;if(h!==h)throw new V(W);var m=c(h);if(m<0)throw new n(W);return new i(R,m)}},4576:function(U){var l=function(d){return d&&d.Math===Math&&d};U.exports=l(typeof globalThis=="object"&&globalThis)||l(typeof window=="object"&&window)||l(typeof self=="object"&&self)||l(typeof global=="object"&&global)||l(typeof this=="object"&&this)||function(){return this}()||Function("return this")()},9297:(U,l,d)=>{var Z=d(9504),t=d(8981),F=Z({}.hasOwnProperty);U.exports=Object.hasOwn||function(c,a){return F(t(c),a)}},421:U=>{U.exports={}},397:(U,l,d)=>{var Z=d(7751);U.exports=Z("document","documentElement")},5917:(U,l,d)=>{var Z=d(3724),t=d(9039),F=d(4055);U.exports=!Z&&!t(function(){return Object.defineProperty(F("div"),"a",{get:function(){return 7}}).a!==7})},7055:(U,l,d)=>{var Z=d(9504),t=d(9039),F=d(2195),c=Object,a=Z("".split);U.exports=t(function(){return!c("z").propertyIsEnumerable(0)})?function(W){return F(W)==="String"?a(W,""):c(W)}:c},3167:(U,l,d)=>{var Z=d(4901),t=d(34),F=d(2967);U.exports=function(c,a,W){var n,V;return F&&Z(n=a.constructor)&&n!==W&&t(V=n.prototype)&&V!==W.prototype&&F(c,V),c}},3706:(U,l,d)=>{var Z=d(9504),t=d(4901),F=d(7629),c=Z(Function.toString);t(F.inspectSource)||(F.inspectSource=function(a){return c(a)}),U.exports=F.inspectSource},1181:(U,l,d)=>{var Z=d(8622),t=d(4576),F=d(34),c=d(6699),a=d(9297),W=d(7629),n=d(6119),V=d(421),s="Object already initialized",i=t.TypeError,R=t.WeakMap,h,m,M,J=function(Y){return M(Y)?m(Y):h(Y,{})},T=function(Y){return function(p){var o;if(!F(p)||(o=m(p)).type!==Y)throw new i("Incompatible receiver, "+Y+" required");return o}};if(Z||W.state){var G=W.state||(W.state=new R);G.get=G.get,G.has=G.has,G.set=G.set,h=function(Y,p){if(G.has(Y))throw new i(s);return p.facade=Y,G.set(Y,p),p},m=function(Y){return G.get(Y)||{}},M=function(Y){return G.has(Y)}}else{var X=n("state");V[X]=!0,h=function(Y,p){if(a(Y,X))throw new i(s);return p.facade=Y,c(Y,X,p),p},m=function(Y){return a(Y,X)?Y[X]:{}},M=function(Y){return a(Y,X)}}U.exports={set:h,get:m,has:M,enforce:J,getterFor:T}},4209:(U,l,d)=>{var Z=d(8227),t=d(6269),F=Z("iterator"),c=Array.prototype;U.exports=function(a){return a!==void 0&&(t.Array===a||c[F]===a)}},4376:(U,l,d)=>{var Z=d(2195);U.exports=Array.isArray||function(t){return Z(t)==="Array"}},1108:(U,l,d)=>{var Z=d(6955);U.exports=function(t){var F=Z(t);return F==="BigInt64Array"||F==="BigUint64Array"}},4901:U=>{var l=typeof document=="object"&&document.all;U.exports=typeof l>"u"&&l!==void 0?function(d){return typeof d=="function"||d===l}:function(d){return typeof d=="function"}},2796:(U,l,d)=>{var Z=d(9039),t=d(4901),F=/#|\.prototype\./,c=function(s,i){var R=W[a(s)];return R===V?!0:R===n?!1:t(i)?Z(i):!!i},a=c.normalize=function(s){return String(s).replace(F,".").toLowerCase()},W=c.data={},n=c.NATIVE="N",V=c.POLYFILL="P";U.exports=c},4117:U=>{U.exports=function(l){return l==null}},34:(U,l,d)=>{var Z=d(4901);U.exports=function(t){return typeof t=="object"?t!==null:Z(t)}},3925:(U,l,d)=>{var Z=d(34);U.exports=function(t){return Z(t)||t===null}},6395:U=>{U.exports=!1},757:(U,l,d)=>{var Z=d(7751),t=d(4901),F=d(1625),c=d(7040),a=Object;U.exports=c?function(W){return typeof W=="symbol"}:function(W){var n=Z("Symbol");return t(n)&&F(n.prototype,a(W))}},507:(U,l,d)=>{var Z=d(9565);U.exports=function(t,F,c){for(var a=c?t:t.iterator,W=t.next,n,V;!(n=Z(W,a)).done;)if(V=F(n.value),V!==void 0)return V}},2652:(U,l,d)=>{var Z=d(6080),t=d(9565),F=d(8551),c=d(6823),a=d(4209),W=d(6198),n=d(1625),V=d(81),s=d(851),i=d(9539),R=TypeError,h=function(M,J){this.stopped=M,this.result=J},m=h.prototype;U.exports=function(M,J,T){var G=T&&T.that,X=!!(T&&T.AS_ENTRIES),Y=!!(T&&T.IS_RECORD),p=!!(T&&T.IS_ITERATOR),o=!!(T&&T.INTERRUPTED),k=Z(J,G),S,B,y,D,E,r,w,u=function(Ul){return S&&i(S,"normal",Ul),new h(!0,Ul)},C=function(Ul){return X?(F(Ul),o?k(Ul[0],Ul[1],u):k(Ul[0],Ul[1])):o?k(Ul,u):k(Ul)};if(Y)S=M.iterator;else if(p)S=M;else{if(B=s(M),!B)throw new R(c(M)+" is not iterable");if(a(B)){for(y=0,D=W(M);D>y;y++)if(E=C(M[y]),E&&n(m,E))return E;return new h(!1)}S=V(M,B)}for(r=Y?M.next:S.next;!(w=t(r,S)).done;){try{E=C(w.value)}catch(Ul){i(S,"throw",Ul)}if(typeof E=="object"&&E&&n(m,E))return E}return new h(!1)}},9539:(U,l,d)=>{var Z=d(9565),t=d(8551),F=d(5966);U.exports=function(c,a,W){var n,V;t(c);try{if(n=F(c,"return"),!n){if(a==="throw")throw W;return W}n=Z(n,c)}catch(s){V=!0,n=s}if(a==="throw")throw W;if(V)throw n;return t(n),W}},9462:(U,l,d)=>{var Z=d(9565),t=d(2360),F=d(6699),c=d(6279),a=d(8227),W=d(1181),n=d(5966),V=d(7657).IteratorPrototype,s=d(2529),i=d(9539),R=a("toStringTag"),h="IteratorHelper",m="WrapForValidIterator",M=W.set,J=function(X){var Y=W.getterFor(X?m:h);return c(t(V),{next:function(){var p=Y(this);if(X)return p.nextHandler();try{var o=p.done?void 0:p.nextHandler();return s(o,p.done)}catch(k){throw p.done=!0,k}},return:function(){var p=Y(this),o=p.iterator;if(p.done=!0,X){var k=n(o,"return");return k?Z(k,o):s(void 0,!0)}if(p.inner)try{i(p.inner.iterator,"normal")}catch(S){return i(o,"throw",S)}return i(o,"normal"),s(void 0,!0)}})},T=J(!0),G=J(!1);F(G,R,"Iterator Helper"),U.exports=function(X,Y){var p=function(o,k){k?(k.iterator=o.iterator,k.next=o.next):k=o,k.type=Y?m:h,k.nextHandler=X,k.counter=0,k.done=!1,M(this,k)};return p.prototype=Y?T:G,p}},713:(U,l,d)=>{var Z=d(9565),t=d(9306),F=d(8551),c=d(1767),a=d(9462),W=d(6319),n=a(function(){var V=this.iterator,s=F(Z(this.next,V)),i=this.done=!!s.done;if(!i)return W(V,this.mapper,[s.value,this.counter++],!0)});U.exports=function(V){return F(this),t(V),new n(c(this),{mapper:V})}},7657:(U,l,d)=>{var Z=d(9039),t=d(4901),F=d(34),c=d(2360),a=d(2787),W=d(6840),n=d(8227),V=d(6395),s=n("iterator"),i=!1,R,h,m;[].keys&&(m=[].keys(),"next"in m?(h=a(a(m)),h!==Object.prototype&&(R=h)):i=!0);var M=!F(R)||Z(function(){var J={};return R[s].call(J)!==J});M?R={}:V&&(R=c(R)),t(R[s])||W(R,s,function(){return this}),U.exports={IteratorPrototype:R,BUGGY_SAFARI_ITERATORS:i}},6269:U=>{U.exports={}},6198:(U,l,d)=>{var Z=d(8014);U.exports=function(t){return Z(t.length)}},283:(U,l,d)=>{var Z=d(9504),t=d(9039),F=d(4901),c=d(9297),a=d(3724),W=d(350).CONFIGURABLE,n=d(3706),V=d(1181),s=V.enforce,i=V.get,R=String,h=Object.defineProperty,m=Z("".slice),M=Z("".replace),J=Z([].join),T=a&&!t(function(){return h(function(){},"length",{value:8}).length!==8}),G=String(String).split("String"),X=U.exports=function(Y,p,o){m(R(p),0,7)==="Symbol("&&(p="["+M(R(p),/^Symbol\(([^)]*)\).*$/,"$1")+"]"),o&&o.getter&&(p="get "+p),o&&o.setter&&(p="set "+p),(!c(Y,"name")||W&&Y.name!==p)&&(a?h(Y,"name",{value:p,configurable:!0}):Y.name=p),T&&o&&c(o,"arity")&&Y.length!==o.arity&&h(Y,"length",{value:o.arity});try{o&&c(o,"constructor")&&o.constructor?a&&h(Y,"prototype",{writable:!1}):Y.prototype&&(Y.prototype=void 0)}catch(S){}var k=s(Y);return c(k,"source")||(k.source=J(G,typeof p=="string"?p:"")),Y};Function.prototype.toString=X(function(){return F(this)&&i(this).source||n(this)},"toString")},741:U=>{var l=Math.ceil,d=Math.floor;U.exports=Math.trunc||function(Z){var t=+Z;return(t>0?d:l)(t)}},6043:(U,l,d)=>{var Z=d(9306),t=TypeError,F=function(c){var a,W;this.promise=new c(function(n,V){if(a!==void 0||W!==void 0)throw new t("Bad Promise constructor");a=n,W=V}),this.resolve=Z(a),this.reject=Z(W)};U.exports.f=function(c){return new F(c)}},2603:(U,l,d)=>{var Z=d(655);U.exports=function(t,F){return t===void 0?arguments.length<2?"":F:Z(t)}},4149:U=>{var l=RangeError;U.exports=function(d){if(d===d)return d;throw new l("NaN is not allowed")}},2360:(U,l,d)=>{var Z=d(8551),t=d(6801),F=d(8727),c=d(421),a=d(397),W=d(4055),n=d(6119),V=">",s="<",i="prototype",R="script",h=n("IE_PROTO"),m=function(){},M=function(Y){return s+R+V+Y+s+"/"+R+V},J=function(Y){Y.write(M("")),Y.close();var p=Y.parentWindow.Object;return Y=null,p},T=function(){var Y=W("iframe"),p="java"+R+":",o;return Y.style.display="none",a.appendChild(Y),Y.src=String(p),o=Y.contentWindow.document,o.open(),o.write(M("document.F=Object")),o.close(),o.F},G,X=function(){try{G=new ActiveXObject("htmlfile")}catch(p){}X=typeof document<"u"?document.domain&&G?J(G):T():J(G);for(var Y=F.length;Y--;)delete X[i][F[Y]];return X()};c[h]=!0,U.exports=Object.create||function(Y,p){var o;return Y!==null?(m[i]=Z(Y),o=new m,m[i]=null,o[h]=Y):o=X(),p===void 0?o:t.f(o,p)}},6801:(U,l,d)=>{var Z=d(3724),t=d(8686),F=d(4913),c=d(8551),a=d(5397),W=d(1072);l.f=Z&&!t?Object.defineProperties:function(n,V){c(n);for(var s=a(V),i=W(V),R=i.length,h=0,m;R>h;)F.f(n,m=i[h++],s[m]);return n}},4913:(U,l,d)=>{var Z=d(3724),t=d(5917),F=d(8686),c=d(8551),a=d(6969),W=TypeError,n=Object.defineProperty,V=Object.getOwnPropertyDescriptor,s="enumerable",i="configurable",R="writable";l.f=Z?F?function(h,m,M){if(c(h),m=a(m),c(M),typeof h=="function"&&m==="prototype"&&"value"in M&&R in M&&!M[R]){var J=V(h,m);J&&J[R]&&(h[m]=M.value,M={configurable:i in M?M[i]:J[i],enumerable:s in M?M[s]:J[s],writable:!1})}return n(h,m,M)}:n:function(h,m,M){if(c(h),m=a(m),c(M),t)try{return n(h,m,M)}catch(J){}if("get"in M||"set"in M)throw new W("Accessors not supported");return"value"in M&&(h[m]=M.value),h}},7347:(U,l,d)=>{var Z=d(3724),t=d(9565),F=d(8773),c=d(6980),a=d(5397),W=d(6969),n=d(9297),V=d(5917),s=Object.getOwnPropertyDescriptor;l.f=Z?s:function(i,R){if(i=a(i),R=W(R),V)try{return s(i,R)}catch(h){}if(n(i,R))return c(!t(F.f,i,R),i[R])}},8480:(U,l,d)=>{var Z=d(1828),t=d(8727),F=t.concat("length","prototype");l.f=Object.getOwnPropertyNames||function(c){return Z(c,F)}},3717:(U,l)=>{l.f=Object.getOwnPropertySymbols},2787:(U,l,d)=>{var Z=d(9297),t=d(4901),F=d(8981),c=d(6119),a=d(2211),W=c("IE_PROTO"),n=Object,V=n.prototype;U.exports=a?n.getPrototypeOf:function(s){var i=F(s);if(Z(i,W))return i[W];var R=i.constructor;return t(R)&&i instanceof R?R.prototype:i instanceof n?V:null}},1625:(U,l,d)=>{var Z=d(9504);U.exports=Z({}.isPrototypeOf)},1828:(U,l,d)=>{var Z=d(9504),t=d(9297),F=d(5397),c=d(9617).indexOf,a=d(421),W=Z([].push);U.exports=function(n,V){var s=F(n),i=0,R=[],h;for(h in s)!t(a,h)&&t(s,h)&&W(R,h);for(;V.length>i;)t(s,h=V[i++])&&(~c(R,h)||W(R,h));return R}},1072:(U,l,d)=>{var Z=d(1828),t=d(8727);U.exports=Object.keys||function(F){return Z(F,t)}},8773:(U,l)=>{var d={}.propertyIsEnumerable,Z=Object.getOwnPropertyDescriptor,t=Z&&!d.call({1:2},1);l.f=t?function(F){var c=Z(this,F);return!!c&&c.enumerable}:d},2967:(U,l,d)=>{var Z=d(6706),t=d(34),F=d(7750),c=d(3506);U.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var a=!1,W={},n;try{n=Z(Object.prototype,"__proto__","set"),n(W,[]),a=W instanceof Array}catch(V){}return function(V,s){return F(V),c(s),t(V)&&(a?n(V,s):V.__proto__=s),V}}():void 0)},4270:(U,l,d)=>{var Z=d(9565),t=d(4901),F=d(34),c=TypeError;U.exports=function(a,W){var n,V;if(W==="string"&&t(n=a.toString)&&!F(V=Z(n,a))||t(n=a.valueOf)&&!F(V=Z(n,a))||W!=="string"&&t(n=a.toString)&&!F(V=Z(n,a)))return V;throw new c("Can't convert object to primitive value")}},5031:(U,l,d)=>{var Z=d(7751),t=d(9504),F=d(8480),c=d(3717),a=d(8551),W=t([].concat);U.exports=Z("Reflect","ownKeys")||function(n){var V=F.f(a(n)),s=c.f;return s?W(V,s(n)):V}},8235:(U,l,d)=>{var Z=d(9504),t=d(9297),F=SyntaxError,c=parseInt,a=String.fromCharCode,W=Z("".charAt),n=Z("".slice),V=Z(/./.exec),s={'\\"':'"',"\\\\":"\\","\\/":"/","\\b":"\b","\\f":"\f","\\n":`
|
||
`,"\\r":"\r","\\t":" "},i=/^[\da-f]{4}$/i,R=/^[\u0000-\u001F]$/;U.exports=function(h,m){for(var M=!0,J="";m<h.length;){var T=W(h,m);if(T==="\\"){var G=n(h,m,m+2);if(t(s,G))J+=s[G],m+=2;else if(G==="\\u"){m+=2;var X=n(h,m,m+4);if(!V(i,X))throw new F("Bad Unicode escape at: "+m);J+=a(c(X,16)),m+=4}else throw new F('Unknown escape sequence: "'+G+'"')}else if(T==='"'){M=!1,m++;break}else{if(V(R,T))throw new F("Bad control character in string literal at: "+m);J+=T,m++}}if(M)throw new F("Unterminated string at: "+m);return{value:J,end:m}}},7750:(U,l,d)=>{var Z=d(4117),t=TypeError;U.exports=function(F){if(Z(F))throw new t("Can't call method on "+F);return F}},9286:(U,l,d)=>{var Z=d(4402),t=d(8469),F=Z.Set,c=Z.add;U.exports=function(a){var W=new F;return t(a,function(n){c(W,n)}),W}},3440:(U,l,d)=>{var Z=d(7080),t=d(4402),F=d(9286),c=d(5170),a=d(3789),W=d(8469),n=d(507),V=t.has,s=t.remove;U.exports=function(i){var R=Z(this),h=a(i),m=F(R);return c(R)<=h.size?W(R,function(M){h.includes(M)&&s(m,M)}):n(h.getIterator(),function(M){V(R,M)&&s(m,M)}),m}},4402:(U,l,d)=>{var Z=d(9504),t=Set.prototype;U.exports={Set,add:Z(t.add),has:Z(t.has),remove:Z(t.delete),proto:t}},8750:(U,l,d)=>{var Z=d(7080),t=d(4402),F=d(5170),c=d(3789),a=d(8469),W=d(507),n=t.Set,V=t.add,s=t.has;U.exports=function(i){var R=Z(this),h=c(i),m=new n;return F(R)>h.size?W(h.getIterator(),function(M){s(R,M)&&V(m,M)}):a(R,function(M){h.includes(M)&&V(m,M)}),m}},4449:(U,l,d)=>{var Z=d(7080),t=d(4402).has,F=d(5170),c=d(3789),a=d(8469),W=d(507),n=d(9539);U.exports=function(V){var s=Z(this),i=c(V);if(F(s)<=i.size)return a(s,function(h){if(i.includes(h))return!1},!0)!==!1;var R=i.getIterator();return W(R,function(h){if(t(s,h))return n(R,"normal",!1)})!==!1}},3838:(U,l,d)=>{var Z=d(7080),t=d(5170),F=d(8469),c=d(3789);U.exports=function(a){var W=Z(this),n=c(a);return t(W)>n.size?!1:F(W,function(V){if(!n.includes(V))return!1},!0)!==!1}},8527:(U,l,d)=>{var Z=d(7080),t=d(4402).has,F=d(5170),c=d(3789),a=d(507),W=d(9539);U.exports=function(n){var V=Z(this),s=c(n);if(F(V)<s.size)return!1;var i=s.getIterator();return a(i,function(R){if(!t(V,R))return W(i,"normal",!1)})!==!1}},8469:(U,l,d)=>{var Z=d(9504),t=d(507),F=d(4402),c=F.Set,a=F.proto,W=Z(a.forEach),n=Z(a.keys),V=n(new c).next;U.exports=function(s,i,R){return R?t({iterator:n(s),next:V},i):W(s,i)}},4916:(U,l,d)=>{var Z=d(7751),t=function(F){return{size:F,has:function(){return!1},keys:function(){return{next:function(){return{done:!0}}}}}};U.exports=function(F){var c=Z("Set");try{new c()[F](t(0));try{return new c()[F](t(-1)),!1}catch(a){return!0}}catch(a){return!1}}},5170:(U,l,d)=>{var Z=d(6706),t=d(4402);U.exports=Z(t.proto,"size","get")||function(F){return F.size}},3650:(U,l,d)=>{var Z=d(7080),t=d(4402),F=d(9286),c=d(3789),a=d(507),W=t.add,n=t.has,V=t.remove;U.exports=function(s){var i=Z(this),R=c(s).getIterator(),h=F(i);return a(R,function(m){n(i,m)?V(h,m):W(h,m)}),h}},4204:(U,l,d)=>{var Z=d(7080),t=d(4402).add,F=d(9286),c=d(3789),a=d(507);U.exports=function(W){var n=Z(this),V=c(W).getIterator(),s=F(n);return a(V,function(i){t(s,i)}),s}},6119:(U,l,d)=>{var Z=d(5745),t=d(3392),F=Z("keys");U.exports=function(c){return F[c]||(F[c]=t(c))}},7629:(U,l,d)=>{var Z=d(6395),t=d(4576),F=d(9433),c="__core-js_shared__",a=U.exports=t[c]||F(c,{});(a.versions||(a.versions=[])).push({version:"3.38.1",mode:Z?"pure":"global",copyright:"© 2014-2024 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.38.1/LICENSE",source:"https://github.com/zloirock/core-js"})},5745:(U,l,d)=>{var Z=d(7629);U.exports=function(t,F){return Z[t]||(Z[t]=F||{})}},1548:(U,l,d)=>{var Z=d(4576),t=d(9039),F=d(9519),c=d(4215),a=Z.structuredClone;U.exports=!!a&&!t(function(){if(c==="DENO"&&F>92||c==="NODE"&&F>94||c==="BROWSER"&&F>97)return!1;var W=new ArrayBuffer(8),n=a(W,{transfer:[W]});return W.byteLength!==0||n.byteLength!==8})},4495:(U,l,d)=>{var Z=d(9519),t=d(9039),F=d(4576),c=F.String;U.exports=!!Object.getOwnPropertySymbols&&!t(function(){var a=Symbol("symbol detection");return!c(a)||!(Object(a)instanceof Symbol)||!Symbol.sham&&Z&&Z<41})},5610:(U,l,d)=>{var Z=d(1291),t=Math.max,F=Math.min;U.exports=function(c,a){var W=Z(c);return W<0?t(W+a,0):F(W,a)}},5854:(U,l,d)=>{var Z=d(2777),t=TypeError;U.exports=function(F){var c=Z(F,"number");if(typeof c=="number")throw new t("Can't convert number to bigint");return BigInt(c)}},7696:(U,l,d)=>{var Z=d(1291),t=d(8014),F=RangeError;U.exports=function(c){if(c===void 0)return 0;var a=Z(c),W=t(a);if(a!==W)throw new F("Wrong length or index");return W}},5397:(U,l,d)=>{var Z=d(7055),t=d(7750);U.exports=function(F){return Z(t(F))}},1291:(U,l,d)=>{var Z=d(741);U.exports=function(t){var F=+t;return F!==F||F===0?0:Z(F)}},8014:(U,l,d)=>{var Z=d(1291),t=Math.min;U.exports=function(F){var c=Z(F);return c>0?t(c,9007199254740991):0}},8981:(U,l,d)=>{var Z=d(7750),t=Object;U.exports=function(F){return t(Z(F))}},9590:(U,l,d)=>{var Z=d(1291),t=RangeError;U.exports=function(F){var c=Z(F);if(c<0)throw new t("The argument can't be less than 0");return c}},2777:(U,l,d)=>{var Z=d(9565),t=d(34),F=d(757),c=d(5966),a=d(4270),W=d(8227),n=TypeError,V=W("toPrimitive");U.exports=function(s,i){if(!t(s)||F(s))return s;var R=c(s,V),h;if(R){if(i===void 0&&(i="default"),h=Z(R,s,i),!t(h)||F(h))return h;throw new n("Can't convert object to primitive value")}return i===void 0&&(i="number"),a(s,i)}},6969:(U,l,d)=>{var Z=d(2777),t=d(757);U.exports=function(F){var c=Z(F,"string");return t(c)?c:c+""}},2140:(U,l,d)=>{var Z=d(8227),t=Z("toStringTag"),F={};F[t]="z",U.exports=String(F)==="[object z]"},655:(U,l,d)=>{var Z=d(6955),t=String;U.exports=function(F){if(Z(F)==="Symbol")throw new TypeError("Cannot convert a Symbol value to a string");return t(F)}},6823:U=>{var l=String;U.exports=function(d){try{return l(d)}catch(Z){return"Object"}}},3392:(U,l,d)=>{var Z=d(9504),t=0,F=Math.random(),c=Z(1 .toString);U.exports=function(a){return"Symbol("+(a===void 0?"":a)+")_"+c(++t+F,36)}},7040:(U,l,d)=>{var Z=d(4495);U.exports=Z&&!Symbol.sham&&typeof Symbol.iterator=="symbol"},8686:(U,l,d)=>{var Z=d(3724),t=d(9039);U.exports=Z&&t(function(){return Object.defineProperty(function(){},"prototype",{value:42,writable:!1}).prototype!==42})},2812:U=>{var l=TypeError;U.exports=function(d,Z){if(d<Z)throw new l("Not enough arguments");return d}},8622:(U,l,d)=>{var Z=d(4576),t=d(4901),F=Z.WeakMap;U.exports=t(F)&&/native code/.test(String(F))},8227:(U,l,d)=>{var Z=d(4576),t=d(5745),F=d(9297),c=d(3392),a=d(4495),W=d(7040),n=Z.Symbol,V=t("wks"),s=W?n.for||n:n&&n.withoutSetter||c;U.exports=function(i){return F(V,i)||(V[i]=a&&F(n,i)?n[i]:s("Symbol."+i)),V[i]}},6573:(U,l,d)=>{var Z=d(3724),t=d(2106),F=d(3238),c=ArrayBuffer.prototype;Z&&!("detached"in c)&&t(c,"detached",{configurable:!0,get:function(){return F(this)}})},7936:(U,l,d)=>{var Z=d(6518),t=d(5636);t&&Z({target:"ArrayBuffer",proto:!0},{transferToFixedLength:function(){return t(this,arguments.length?arguments[0]:void 0,!1)}})},8100:(U,l,d)=>{var Z=d(6518),t=d(5636);t&&Z({target:"ArrayBuffer",proto:!0},{transfer:function(){return t(this,arguments.length?arguments[0]:void 0,!0)}})},4114:(U,l,d)=>{var Z=d(6518),t=d(8981),F=d(6198),c=d(4527),a=d(6837),W=d(9039),n=W(function(){return[].push.call({length:4294967296},1)!==4294967297}),V=function(){try{Object.defineProperty([],"length",{writable:!1}).push()}catch(i){return i instanceof TypeError}},s=n||!V();Z({target:"Array",proto:!0,arity:1,forced:s},{push:function(i){var R=t(this),h=F(R),m=arguments.length;a(h+m);for(var M=0;M<m;M++)R[h]=arguments[M],h++;return c(R,h),h}})},4628:(U,l,d)=>{var Z=d(6518),t=d(6043);Z({target:"Promise",stat:!0},{withResolvers:function(){var F=t.f(this);return{promise:F.promise,resolve:F.resolve,reject:F.reject}}})},7642:(U,l,d)=>{var Z=d(6518),t=d(3440),F=d(4916);Z({target:"Set",proto:!0,real:!0,forced:!F("difference")},{difference:t})},8004:(U,l,d)=>{var Z=d(6518),t=d(9039),F=d(8750),c=d(4916),a=!c("intersection")||t(function(){return String(Array.from(new Set([1,2,3]).intersection(new Set([3,2]))))!=="3,2"});Z({target:"Set",proto:!0,real:!0,forced:a},{intersection:F})},3853:(U,l,d)=>{var Z=d(6518),t=d(4449),F=d(4916);Z({target:"Set",proto:!0,real:!0,forced:!F("isDisjointFrom")},{isDisjointFrom:t})},5876:(U,l,d)=>{var Z=d(6518),t=d(3838),F=d(4916);Z({target:"Set",proto:!0,real:!0,forced:!F("isSubsetOf")},{isSubsetOf:t})},2475:(U,l,d)=>{var Z=d(6518),t=d(8527),F=d(4916);Z({target:"Set",proto:!0,real:!0,forced:!F("isSupersetOf")},{isSupersetOf:t})},5024:(U,l,d)=>{var Z=d(6518),t=d(3650),F=d(4916);Z({target:"Set",proto:!0,real:!0,forced:!F("symmetricDifference")},{symmetricDifference:t})},1698:(U,l,d)=>{var Z=d(6518),t=d(4204),F=d(4916);Z({target:"Set",proto:!0,real:!0,forced:!F("union")},{union:t})},7467:(U,l,d)=>{var Z=d(7628),t=d(4644),F=t.aTypedArray,c=t.exportTypedArrayMethod,a=t.getTypedArrayConstructor;c("toReversed",function(){return Z(F(this),a(this))})},4732:(U,l,d)=>{var Z=d(4644),t=d(9504),F=d(9306),c=d(5370),a=Z.aTypedArray,W=Z.getTypedArrayConstructor,n=Z.exportTypedArrayMethod,V=t(Z.TypedArrayPrototype.sort);n("toSorted",function(s){s!==void 0&&F(s);var i=a(this),R=c(W(i),i);return V(R,s)})},9577:(U,l,d)=>{var Z=d(9928),t=d(4644),F=d(1108),c=d(1291),a=d(5854),W=t.aTypedArray,n=t.getTypedArrayConstructor,V=t.exportTypedArrayMethod,s=!!function(){try{new Int8Array(1).with(2,{valueOf:function(){throw 8}})}catch(i){return i===8}}();V("with",function(i,R){var h=W(this),m=c(i),M=F(h)?a(R):+R;return Z(h,n(h),m,M)},!s)},8992:(U,l,d)=>{var Z=d(6518),t=d(4576),F=d(679),c=d(8551),a=d(4901),W=d(2787),n=d(2106),V=d(4659),s=d(9039),i=d(9297),R=d(8227),h=d(7657).IteratorPrototype,m=d(3724),M=d(6395),J="constructor",T="Iterator",G=R("toStringTag"),X=TypeError,Y=t[T],p=M||!a(Y)||Y.prototype!==h||!s(function(){Y({})}),o=function(){if(F(this,h),W(this)===h)throw new X("Abstract class Iterator not directly constructable")},k=function(S,B){m?n(h,S,{configurable:!0,get:function(){return B},set:function(y){if(c(this),this===h)throw new X("You can't redefine this property");i(this,S)?this[S]=y:V(this,S,y)}}):h[S]=B};i(h,G)||k(G,T),(p||!i(h,J)||h[J]===Object)&&k(J,o),o.prototype=h,Z({global:!0,constructor:!0,forced:p},{Iterator:o})},4743:(U,l,d)=>{var Z=d(6518),t=d(9565),F=d(8551),c=d(1767),a=d(4149),W=d(9590),n=d(9462),V=d(6395),s=n(function(){for(var i=this.iterator,R=this.next,h,m;this.remaining;)if(this.remaining--,h=F(t(R,i)),m=this.done=!!h.done,m)return;if(h=F(t(R,i)),m=this.done=!!h.done,!m)return h.value});Z({target:"Iterator",proto:!0,real:!0,forced:V},{drop:function(i){F(this);var R=W(a(+i));return new s(c(this),{remaining:R})}})},3215:(U,l,d)=>{var Z=d(6518),t=d(2652),F=d(9306),c=d(8551),a=d(1767);Z({target:"Iterator",proto:!0,real:!0},{every:function(W){c(this),F(W);var n=a(this),V=0;return!t(n,function(s,i){if(!W(s,V++))return i()},{IS_RECORD:!0,INTERRUPTED:!0}).stopped}})},4520:(U,l,d)=>{var Z=d(6518),t=d(9565),F=d(9306),c=d(8551),a=d(1767),W=d(9462),n=d(6319),V=d(6395),s=W(function(){for(var i=this.iterator,R=this.predicate,h=this.next,m,M,J;;){if(m=c(t(h,i)),M=this.done=!!m.done,M)return;if(J=m.value,n(i,R,[J,this.counter++],!0))return J}});Z({target:"Iterator",proto:!0,real:!0,forced:V},{filter:function(i){return c(this),F(i),new s(a(this),{predicate:i})}})},670:(U,l,d)=>{var Z=d(6518),t=d(9565),F=d(9306),c=d(8551),a=d(1767),W=d(8646),n=d(9462),V=d(9539),s=d(6395),i=n(function(){for(var R=this.iterator,h=this.mapper,m,M;;){if(M=this.inner)try{if(m=c(t(M.next,M.iterator)),!m.done)return m.value;this.inner=null}catch(J){V(R,"throw",J)}if(m=c(t(this.next,R)),this.done=!!m.done)return;try{this.inner=W(h(m.value,this.counter++),!1)}catch(J){V(R,"throw",J)}}});Z({target:"Iterator",proto:!0,real:!0,forced:s},{flatMap:function(R){return c(this),F(R),new i(a(this),{mapper:R,inner:null})}})},1454:(U,l,d)=>{var Z=d(6518),t=d(713),F=d(6395);Z({target:"Iterator",proto:!0,real:!0,forced:F},{map:t})},7550:(U,l,d)=>{var Z=d(6518),t=d(2652),F=d(9306),c=d(8551),a=d(1767);Z({target:"Iterator",proto:!0,real:!0},{some:function(W){c(this),F(W);var n=a(this),V=0;return t(n,function(s,i){if(W(s,V++))return i()},{IS_RECORD:!0,INTERRUPTED:!0}).stopped}})},8335:(U,l,d)=>{var Z=d(6518),t=d(3724),F=d(4576),c=d(7751),a=d(9504),W=d(9565),n=d(4901),V=d(34),s=d(4376),i=d(9297),R=d(655),h=d(6198),m=d(4659),M=d(9039),J=d(8235),T=d(4495),G=F.JSON,X=F.Number,Y=F.SyntaxError,p=G&&G.parse,o=c("Object","keys"),k=Object.getOwnPropertyDescriptor,S=a("".charAt),B=a("".slice),y=a(/./.exec),D=a([].push),E=/^\d$/,r=/^[1-9]$/,w=/^[\d-]$/,u=/^[\t\n\r ]$/,C=0,Ul=1,Wl=function(x,I){x=R(x);var j=new bl(x,0),A=j.parse(),sl=A.value,P=j.skip(u,A.end);if(P<x.length)throw new Y('Unexpected extra character: "'+S(x,P)+'" after the parsed data at: '+P);return n(I)?hl({"":sl},"",I,A):sl},hl=function(x,I,j,A){var sl=x[I],P=A&&sl===A.value,Jl=P&&typeof A.source=="string"?{source:A.source}:{},gl,aU,sd,Kl,sF;if(V(sl)){var iV=s(sl),_Q=P?A.nodes:iV?[]:{};if(iV)for(gl=_Q.length,sd=h(sl),Kl=0;Kl<sd;Kl++)Il(sl,Kl,hl(sl,""+Kl,j,Kl<gl?_Q[Kl]:void 0));else for(aU=o(sl),sd=h(aU),Kl=0;Kl<sd;Kl++)sF=aU[Kl],Il(sl,sF,hl(sl,sF,j,i(_Q,sF)?_Q[sF]:void 0))}return W(j,x,I,sl,Jl)},Il=function(x,I,j){if(t){var A=k(x,I);if(A&&!A.configurable)return}j===void 0?delete x[I]:m(x,I,j)},Vl=function(x,I,j,A){this.value=x,this.end=I,this.source=j,this.nodes=A},bl=function(x,I){this.source=x,this.index=I};bl.prototype={fork:function(x){return new bl(this.source,x)},parse:function(){var x=this.source,I=this.skip(u,this.index),j=this.fork(I),A=S(x,I);if(y(w,A))return j.number();switch(A){case"{":return j.object();case"[":return j.array();case'"':return j.string();case"t":return j.keyword(!0);case"f":return j.keyword(!1);case"n":return j.keyword(null)}throw new Y('Unexpected character: "'+A+'" at: '+I)},node:function(x,I,j,A,sl){return new Vl(I,A,x?null:B(this.source,j,A),sl)},object:function(){for(var x=this.source,I=this.index+1,j=!1,A={},sl={};I<x.length;){if(I=this.until(['"',"}"],I),S(x,I)==="}"&&!j){I++;break}var P=this.fork(I).string(),Jl=P.value;I=P.end,I=this.until([":"],I)+1,I=this.skip(u,I),P=this.fork(I).parse(),m(sl,Jl,P),m(A,Jl,P.value),I=this.until([",","}"],P.end);var gl=S(x,I);if(gl===",")j=!0,I++;else if(gl==="}"){I++;break}}return this.node(Ul,A,this.index,I,sl)},array:function(){for(var x=this.source,I=this.index+1,j=!1,A=[],sl=[];I<x.length;){if(I=this.skip(u,I),S(x,I)==="]"&&!j){I++;break}var P=this.fork(I).parse();if(D(sl,P),D(A,P.value),I=this.until([",","]"],P.end),S(x,I)===",")j=!0,I++;else if(S(x,I)==="]"){I++;break}}return this.node(Ul,A,this.index,I,sl)},string:function(){var x=this.index,I=J(this.source,this.index+1);return this.node(C,I.value,x,I.end)},number:function(){var x=this.source,I=this.index,j=I;if(S(x,j)==="-"&&j++,S(x,j)==="0")j++;else if(y(r,S(x,j)))j=this.skip(E,j+1);else throw new Y("Failed to parse number at: "+j);if(S(x,j)==="."&&(j=this.skip(E,j+1)),S(x,j)==="e"||S(x,j)==="E"){j++,(S(x,j)==="+"||S(x,j)==="-")&&j++;var A=j;if(j=this.skip(E,j),A===j)throw new Y("Failed to parse number's exponent value at: "+j)}return this.node(C,X(B(x,I,j)),I,j)},keyword:function(x){var I=""+x,j=this.index,A=j+I.length;if(B(this.source,j,A)!==I)throw new Y("Failed to parse value at: "+j);return this.node(C,x,j,A)},skip:function(x,I){for(var j=this.source;I<j.length&&y(x,S(j,I));I++);return I},until:function(x,I){I=this.skip(u,I);for(var j=S(this.source,I),A=0;A<x.length;A++)if(x[A]===j)return I;throw new Y('Unexpected character: "'+j+'" at: '+I)}};var QU=M(function(){var x="9007199254740993",I;return p(x,function(j,A,sl){I=sl.source}),I!==x}),fd=T&&!M(function(){return 1/p("-0 ")!==-1/0});Z({target:"JSON",stat:!0,forced:QU},{parse:function(x,I){return fd&&!n(I)?p(x):Wl(x,I)}})},4979:(U,l,d)=>{var Z=d(6518),t=d(4576),F=d(7751),c=d(6980),a=d(4913).f,W=d(9297),n=d(679),V=d(3167),s=d(2603),i=d(5002),R=d(8574),h=d(3724),m=d(6395),M="DOMException",J=F("Error"),T=F(M),G=function(){n(this,X);var w=arguments.length,u=s(w<1?void 0:arguments[0]),C=s(w<2?void 0:arguments[1],"Error"),Ul=new T(u,C),Wl=new J(u);return Wl.name=M,a(Ul,"stack",c(1,R(Wl.stack,1))),V(Ul,this,G),Ul},X=G.prototype=T.prototype,Y="stack"in new J(M),p="stack"in new T(1,2),o=T&&h&&Object.getOwnPropertyDescriptor(t,M),k=!!o&&!(o.writable&&o.configurable),S=Y&&!k&&!p;Z({global:!0,constructor:!0,forced:m||S},{DOMException:S?G:T});var B=F(M),y=B.prototype;if(y.constructor!==B){m||a(y,"constructor",c(1,B));for(var D in i)if(W(i,D)){var E=i[D],r=E.s;W(B,r)||a(B,r,c(6,E.c))}}},4603:(U,l,d)=>{var Z=d(6840),t=d(9504),F=d(655),c=d(2812),a=URLSearchParams,W=a.prototype,n=t(W.append),V=t(W.delete),s=t(W.forEach),i=t([].push),R=new a("a=1&a=2&b=3");R.delete("a",1),R.delete("b",void 0),R+""!="a=2"&&Z(W,"delete",function(h){var m=arguments.length,M=m<2?void 0:arguments[1];if(m&&M===void 0)return V(this,h);var J=[];s(this,function(S,B){i(J,{key:B,value:S})}),c(m,1);for(var T=F(h),G=F(M),X=0,Y=0,p=!1,o=J.length,k;X<o;)k=J[X++],p||k.key===T?(p=!0,V(this,k.key)):Y++;for(;Y<o;)k=J[Y++],k.key===T&&k.value===G||n(this,k.key,k.value)},{enumerable:!0,unsafe:!0})},7566:(U,l,d)=>{var Z=d(6840),t=d(9504),F=d(655),c=d(2812),a=URLSearchParams,W=a.prototype,n=t(W.getAll),V=t(W.has),s=new a("a=1");(s.has("a",2)||!s.has("a",void 0))&&Z(W,"has",function(i){var R=arguments.length,h=R<2?void 0:arguments[1];if(R&&h===void 0)return V(this,i);var m=n(this,i);c(R,1);for(var M=F(h),J=0;J<m.length;)if(m[J++]===M)return!0;return!1},{enumerable:!0,unsafe:!0})},8721:(U,l,d)=>{var Z=d(3724),t=d(9504),F=d(2106),c=URLSearchParams.prototype,a=t(c.forEach);Z&&!("size"in c)&&F(c,"size",{get:function(){var W=0;return a(this,function(){W++}),W},configurable:!0,enumerable:!0})}},VR={};function Ql(U){var l=VR[U];if(l!==void 0)return l.exports;var d=VR[U]={exports:{}};return _m[U].call(d.exports,d,d.exports,Ql),d.exports}Ql.d=(U,l)=>{for(var d in l)Ql.o(l,d)&&!Ql.o(U,d)&&Object.defineProperty(U,d,{enumerable:!0,get:l[d]})};Ql.o=(U,l)=>Object.prototype.hasOwnProperty.call(U,l);var q=globalThis.pdfjsLib={};Ql.d(q,{AbortException:()=>nF,AnnotationEditorLayer:()=>QM,AnnotationEditorParamsType:()=>_,AnnotationEditorType:()=>ll,AnnotationEditorUIManager:()=>gQ,AnnotationLayer:()=>UM,AnnotationMode:()=>wZ,CMapCompressionType:()=>es,ColorPicker:()=>Jb,DOMSVGFactory:()=>Oi,DrawLayer:()=>aM,FeatureTest:()=>Td,GlobalWorkerOptions:()=>N0,ImageKind:()=>Aa,InvalidPDFException:()=>nh,MissingPDFException:()=>WF,OPS:()=>ZU,OutputScale:()=>Hi,PDFDataRangeTransport:()=>Ah,PDFDateString:()=>eh,PDFWorker:()=>NW,PasswordResponses:()=>de,PermissionFlag:()=>le,PixelsPerInch:()=>O0,RenderingCancelledException:()=>gi,TextLayer:()=>js,UnexpectedResponseException:()=>FV,Util:()=>O,VerbosityLevel:()=>UV,XfaLayer:()=>$h,build:()=>D2,createValidAbsoluteUrl:()=>Fe,fetchData:()=>QV,getDocument:()=>X2,getFilenameFromUrl:()=>he,getPdfFilenameFromUrl:()=>be,getXfaPageViewport:()=>me,isDataScheme:()=>aV,isPdfFile:()=>Ki,noContextMenu:()=>Pd,normalizeUnicode:()=>Ve,setLayerDimensions:()=>QF,shadow:()=>Zl,version:()=>I2});Ql(4114);Ql(6573);Ql(8100);Ql(7936);Ql(7467);Ql(4732);Ql(9577);Ql(4603);Ql(7566);Ql(8721);const Vd=typeof process=="object"&&process+""=="[object process]"&&!process.versions.nw&&!(process.versions.electron&&process.type&&process.type!=="browser"),Wh=[1,0,0,1,0,0],ms=[.001,0,0,.001,0,0],qm=1e7,mV=1.35,kd={ANY:1,DISPLAY:2,PRINT:4,SAVE:8,ANNOTATIONS_FORMS:16,ANNOTATIONS_STORAGE:32,ANNOTATIONS_DISABLE:64,IS_EDITING:128,OPLIST:256},wZ={DISABLE:0,ENABLE:1,ENABLE_FORMS:2,ENABLE_STORAGE:3},$m="pdfjs_internal_editor_",ll={DISABLE:-1,NONE:0,FREETEXT:3,HIGHLIGHT:9,STAMP:13,INK:15},_={RESIZE:1,CREATE:2,FREETEXT_SIZE:11,FREETEXT_COLOR:12,FREETEXT_OPACITY:13,INK_COLOR:21,INK_THICKNESS:22,INK_OPACITY:23,HIGHLIGHT_COLOR:31,HIGHLIGHT_DEFAULT_COLOR:32,HIGHLIGHT_THICKNESS:33,HIGHLIGHT_FREE:34,HIGHLIGHT_SHOW_ALL:35},le={PRINT:4,MODIFY_CONTENTS:8,COPY:16,MODIFY_ANNOTATIONS:32,FILL_INTERACTIVE_FORMS:256,COPY_FOR_ACCESSIBILITY:512,ASSEMBLE:1024,PRINT_HIGH_QUALITY:2048},cd={FILL:0,STROKE:1,FILL_STROKE:2,INVISIBLE:3,FILL_ADD_TO_PATH:4,STROKE_ADD_TO_PATH:5,FILL_STROKE_ADD_TO_PATH:6,ADD_TO_PATH:7,FILL_STROKE_MASK:3,ADD_TO_PATH_FLAG:4},Aa={GRAYSCALE_1BPP:1,RGB_24BPP:2,RGBA_32BPP:3},wl={TEXT:1,LINK:2,FREETEXT:3,LINE:4,SQUARE:5,CIRCLE:6,POLYGON:7,POLYLINE:8,HIGHLIGHT:9,UNDERLINE:10,SQUIGGLY:11,STRIKEOUT:12,STAMP:13,CARET:14,INK:15,POPUP:16,FILEATTACHMENT:17,SOUND:18,MOVIE:19,WIDGET:20,SCREEN:21,PRINTERMARK:22,TRAPNET:23,WATERMARK:24,THREED:25,REDACT:26},K0={SOLID:1,DASHED:2,BEVELED:3,INSET:4,UNDERLINE:5},UV={ERRORS:0,WARNINGS:1,INFOS:5},es={NONE:0,BINARY:1},ZU={dependency:1,setLineWidth:2,setLineCap:3,setLineJoin:4,setMiterLimit:5,setDash:6,setRenderingIntent:7,setFlatness:8,setGState:9,save:10,restore:11,transform:12,moveTo:13,lineTo:14,curveTo:15,curveTo2:16,curveTo3:17,closePath:18,rectangle:19,stroke:20,closeStroke:21,fill:22,eoFill:23,fillStroke:24,eoFillStroke:25,closeFillStroke:26,closeEOFillStroke:27,endPath:28,clip:29,eoClip:30,beginText:31,endText:32,setCharSpacing:33,setWordSpacing:34,setHScale:35,setLeading:36,setFont:37,setTextRenderingMode:38,setTextRise:39,moveText:40,setLeadingMoveText:41,setTextMatrix:42,nextLine:43,showText:44,showSpacedText:45,nextLineShowText:46,nextLineSetSpacingShowText:47,setCharWidth:48,setCharWidthAndBounds:49,setStrokeColorSpace:50,setFillColorSpace:51,setStrokeColor:52,setStrokeColorN:53,setFillColor:54,setFillColorN:55,setStrokeGray:56,setFillGray:57,setStrokeRGBColor:58,setFillRGBColor:59,setStrokeCMYKColor:60,setFillCMYKColor:61,shadingFill:62,beginInlineImage:63,beginImageData:64,endInlineImage:65,paintXObject:66,markPoint:67,markPointProps:68,beginMarkedContent:69,beginMarkedContentProps:70,endMarkedContent:71,beginCompat:72,endCompat:73,paintFormXObjectBegin:74,paintFormXObjectEnd:75,beginGroup:76,endGroup:77,beginAnnotation:80,endAnnotation:81,paintImageMaskXObject:83,paintImageMaskXObjectGroup:84,paintImageXObject:85,paintInlineImageXObject:86,paintInlineImageXObjectGroup:87,paintImageXObjectRepeat:88,paintImageMaskXObjectRepeat:89,paintSolidColorImageMask:90,constructPath:91,setStrokeTransparent:92,setFillTransparent:93},de={NEED_PASSWORD:1,INCORRECT_PASSWORD:2};let ZV=UV.WARNINGS;function Ue(U){Number.isInteger(U)&&(ZV=U)}function Ze(){return ZV}function tV(U){ZV>=UV.INFOS&&console.log(`Info: ${U}`)}function dl(U){ZV>=UV.WARNINGS&&console.log(`Warning: ${U}`)}function zl(U){throw new Error(U)}function jl(U,l){U||zl(l)}function te(U){switch(U==null?void 0:U.protocol){case"http:":case"https:":case"ftp:":case"mailto:":case"tel:":return!0;default:return!1}}function Fe(U,l=null,d=null){if(!U)return null;try{if(d&&typeof U=="string"){if(d.addDefaultProtocol&&U.startsWith("www.")){const t=U.match(/\./g);(t==null?void 0:t.length)>=2&&(U=`http://${U}`)}if(d.tryConvertEncoding)try{U=ne(U)}catch(t){}}const Z=l?new URL(U,l):new URL(U);if(te(Z))return Z}catch(Z){}return null}function Zl(U,l,d,Z=!1){return Object.defineProperty(U,l,{value:d,enumerable:!Z,configurable:!0,writable:!1}),d}const lt=function(){function U(l,d){this.message=l,this.name=d}return U.prototype=new Error,U.constructor=U,U}();class Ms extends lt{constructor(l,d){super(l,"PasswordException"),this.code=d}}class Js extends lt{constructor(l,d){super(l,"UnknownErrorException"),this.details=d}}let nh=class extends lt{constructor(U){super(U,"InvalidPDFException")}},WF=class extends lt{constructor(U){super(U,"MissingPDFException")}},FV=class extends lt{constructor(U,l){super(U,"UnexpectedResponseException"),this.status=l}};class ce extends lt{constructor(l){super(l,"FormatError")}}let nF=class extends lt{constructor(U){super(U,"AbortException")}};function Vh(U){(typeof U!="object"||(U==null?void 0:U.length)===void 0)&&zl("Invalid argument for bytesToString");const l=U.length,d=8192;if(l<d)return String.fromCharCode.apply(null,U);const Z=[];for(let t=0;t<l;t+=d){const F=Math.min(t+d,l),c=U.subarray(t,F);Z.push(String.fromCharCode.apply(null,c))}return Z.join("")}function cV(U){typeof U!="string"&&zl("Invalid argument for stringToBytes");const l=U.length,d=new Uint8Array(l);for(let Z=0;Z<l;++Z)d[Z]=U.charCodeAt(Z)&255;return d}function Qe(U){return String.fromCharCode(U>>24&255,U>>16&255,U>>8&255,U&255)}function ri(U){const l=Object.create(null);for(const[d,Z]of U)l[d]=Z;return l}function ae(){const U=new Uint8Array(4);return U[0]=1,new Uint32Array(U.buffer,0,1)[0]===1}function We(){try{return new Function(""),!0}catch(U){return!1}}class Td{static get isLittleEndian(){return Zl(this,"isLittleEndian",ae())}static get isEvalSupported(){return Zl(this,"isEvalSupported",We())}static get isOffscreenCanvasSupported(){return Zl(this,"isOffscreenCanvasSupported",typeof OffscreenCanvas<"u")}static get platform(){return typeof navigator<"u"&&typeof(navigator==null?void 0:navigator.platform)=="string"?Zl(this,"platform",{isMac:navigator.platform.includes("Mac"),isWindows:navigator.platform.includes("Win"),isFirefox:typeof(navigator==null?void 0:navigator.userAgent)=="string"&&navigator.userAgent.includes("Firefox")}):Zl(this,"platform",{isMac:!1,isWindows:!1,isFirefox:!1})}static get isCSSRoundSupported(){var l,d;return Zl(this,"isCSSRoundSupported",(d=(l=globalThis.CSS)==null?void 0:l.supports)==null?void 0:d.call(l,"width: round(1.5px, 1px)"))}}const eV=Array.from(Array(256).keys(),U=>U.toString(16).padStart(2,"0"));var Ut,MV,la,JV;let O=(MV=class{static makeHexColor(U,l,d){return`#${eV[U]}${eV[l]}${eV[d]}`}static scaleMinMax(U,l){let d;U[0]?(U[0]<0&&(d=l[0],l[0]=l[2],l[2]=d),l[0]*=U[0],l[2]*=U[0],U[3]<0&&(d=l[1],l[1]=l[3],l[3]=d),l[1]*=U[3],l[3]*=U[3]):(d=l[0],l[0]=l[1],l[1]=d,d=l[2],l[2]=l[3],l[3]=d,U[1]<0&&(d=l[1],l[1]=l[3],l[3]=d),l[1]*=U[1],l[3]*=U[1],U[2]<0&&(d=l[0],l[0]=l[2],l[2]=d),l[0]*=U[2],l[2]*=U[2]),l[0]+=U[4],l[1]+=U[5],l[2]+=U[4],l[3]+=U[5]}static transform(U,l){return[U[0]*l[0]+U[2]*l[1],U[1]*l[0]+U[3]*l[1],U[0]*l[2]+U[2]*l[3],U[1]*l[2]+U[3]*l[3],U[0]*l[4]+U[2]*l[5]+U[4],U[1]*l[4]+U[3]*l[5]+U[5]]}static applyTransform(U,l){const d=U[0]*l[0]+U[1]*l[2]+l[4],Z=U[0]*l[1]+U[1]*l[3]+l[5];return[d,Z]}static applyInverseTransform(U,l){const d=l[0]*l[3]-l[1]*l[2],Z=(U[0]*l[3]-U[1]*l[2]+l[2]*l[5]-l[4]*l[3])/d,t=(-U[0]*l[1]+U[1]*l[0]+l[4]*l[1]-l[5]*l[0])/d;return[Z,t]}static getAxialAlignedBoundingBox(U,l){const d=this.applyTransform(U,l),Z=this.applyTransform(U.slice(2,4),l),t=this.applyTransform([U[0],U[3]],l),F=this.applyTransform([U[2],U[1]],l);return[Math.min(d[0],Z[0],t[0],F[0]),Math.min(d[1],Z[1],t[1],F[1]),Math.max(d[0],Z[0],t[0],F[0]),Math.max(d[1],Z[1],t[1],F[1])]}static inverseTransform(U){const l=U[0]*U[3]-U[1]*U[2];return[U[3]/l,-U[1]/l,-U[2]/l,U[0]/l,(U[2]*U[5]-U[4]*U[3])/l,(U[4]*U[1]-U[5]*U[0])/l]}static singularValueDecompose2dScale(U){const l=[U[0],U[2],U[1],U[3]],d=U[0]*l[0]+U[1]*l[2],Z=U[0]*l[1]+U[1]*l[3],t=U[2]*l[0]+U[3]*l[2],F=U[2]*l[1]+U[3]*l[3],c=(d+F)/2,a=Math.sqrt(iF(d+F,2)-4*(d*F-t*Z))/2,W=c+a||1,n=c-a||1;return[Math.sqrt(W),Math.sqrt(n)]}static normalizeRect(U){const l=U.slice(0);return U[0]>U[2]&&(l[0]=U[2],l[2]=U[0]),U[1]>U[3]&&(l[1]=U[3],l[3]=U[1]),l}static intersect(U,l){const d=Math.max(Math.min(U[0],U[2]),Math.min(l[0],l[2])),Z=Math.min(Math.max(U[0],U[2]),Math.max(l[0],l[2]));if(d>Z)return null;const t=Math.max(Math.min(U[1],U[3]),Math.min(l[1],l[3])),F=Math.min(Math.max(U[1],U[3]),Math.max(l[1],l[3]));return t>F?null:[d,t,Z,F]}static bezierBoundingBox(U,l,d,Z,t,F,c,a,W){return W?(W[0]=Math.min(W[0],U,c),W[1]=Math.min(W[1],l,a),W[2]=Math.max(W[2],U,c),W[3]=Math.max(W[3],l,a)):W=[Math.min(U,c),Math.min(l,a),Math.max(U,c),Math.max(l,a)],N(this,Ut,JV).call(this,U,d,t,c,l,Z,F,a,3*(-U+3*(d-t)+c),6*(U-2*d+t),3*(d-U),W),N(this,Ut,JV).call(this,U,d,t,c,l,Z,F,a,3*(-l+3*(Z-F)+a),6*(l-2*Z+F),3*(Z-l),W),W}},Ut=new WeakSet,la=function(U,l,d,Z,t,F,c,a,W,n){if(W<=0||W>=1)return;const V=1-W,s=W*W,i=s*W,R=V*(V*(V*U+3*W*l)+3*s*d)+i*Z,h=V*(V*(V*t+3*W*F)+3*s*c)+i*a;n[0]=Math.min(n[0],R),n[1]=Math.min(n[1],h),n[2]=Math.max(n[2],R),n[3]=Math.max(n[3],h)},JV=function(U,l,d,Z,t,F,c,a,W,n,V,s){if(Math.abs(W)<1e-12){Math.abs(n)>=1e-12&&N(this,Ut,la).call(this,U,l,d,Z,t,F,c,a,-V/n,s);return}const i=iF(n,2)-4*V*W;if(i<0)return;const R=Math.sqrt(i),h=2*W;N(this,Ut,la).call(this,U,l,d,Z,t,F,c,a,(-n+R)/h,s),N(this,Ut,la).call(this,U,l,d,Z,t,F,c,a,(-n-R)/h,s)},e(MV,Ut),MV);function ne(U){return decodeURIComponent(escape(U))}let GV=null,sR=null;function Ve(U){return GV||(GV=/([\u00a0\u00b5\u037e\u0eb3\u2000-\u200a\u202f\u2126\ufb00-\ufb04\ufb06\ufb20-\ufb36\ufb38-\ufb3c\ufb3e\ufb40-\ufb41\ufb43-\ufb44\ufb46-\ufba1\ufba4-\ufba9\ufbae-\ufbb1\ufbd3-\ufbdc\ufbde-\ufbe7\ufbea-\ufbf8\ufbfc-\ufbfd\ufc00-\ufc5d\ufc64-\ufcf1\ufcf5-\ufd3d\ufd88\ufdf4\ufdfa-\ufdfb\ufe71\ufe77\ufe79\ufe7b\ufe7d]+)|(\ufb05+)/gu,sR=new Map([["ſt","ſt"]])),U.replaceAll(GV,(l,d,Z)=>d?d.normalize("NFKC"):sR.get(Z))}function se(){if(typeof crypto<"u"&&typeof(crypto==null?void 0:crypto.randomUUID)=="function")return crypto.randomUUID();const U=new Uint8Array(32);if(typeof crypto<"u"&&typeof(crypto==null?void 0:crypto.getRandomValues)=="function")crypto.getRandomValues(U);else for(let l=0;l<32;l++)U[l]=Math.floor(Math.random()*255);return Vh(U)}const ji="pdfjs_internal_id_",yU={BEZIER_CURVE_TO:0,MOVE_TO:1,LINE_TO:2,QUADRATIC_CURVE_TO:3,RESTORE:4,SAVE:5,SCALE:6,TRANSFORM:7,TRANSLATE:8};Ql(4628);Ql(7642);Ql(8004);Ql(3853);Ql(5876);Ql(2475);Ql(5024);Ql(1698);Ql(1454);Ql(4979);Ql(8992);Ql(4743);Ql(3215);Ql(7550);Ql(8335);Ql(4520);class sh{addFilter(l){return"none"}addHCMFilter(l,d){return"none"}addAlphaFilter(l){return"none"}addLuminosityFilter(l){return"none"}addHighlightHCMFilter(l,d,Z,t,F){return"none"}destroy(l=!1){}}var _a;class ih{constructor({enableHWA:l=!1}){e(this,_a,!1),b(this,_a,l)}create(l,d){if(l<=0||d<=0)throw new Error("Invalid canvas size");const Z=this._createCanvas(l,d);return{canvas:Z,context:Z.getContext("2d",{willReadFrequently:!Q(this,_a)})}}reset(l,d,Z){if(!l.canvas)throw new Error("Canvas is not specified");if(d<=0||Z<=0)throw new Error("Invalid canvas size");l.canvas.width=d,l.canvas.height=Z}destroy(l){if(!l.canvas)throw new Error("Canvas is not specified");l.canvas.width=0,l.canvas.height=0,l.canvas=null,l.context=null}_createCanvas(l,d){zl("Abstract method `_createCanvas` called.")}}_a=new WeakMap;class Rh{constructor({baseUrl:l=null,isCompressed:d=!0}){this.baseUrl=l,this.isCompressed=d}fetch(d){return z(this,arguments,function*({name:l}){if(!this.baseUrl)throw new Error("Ensure that the `cMapUrl` and `cMapPacked` API parameters are provided.");if(!l)throw new Error("CMap name must be specified.");const Z=this.baseUrl+l+(this.isCompressed?".bcmap":""),t=this.isCompressed?es.BINARY:es.NONE;return this._fetchData(Z,t).catch(F=>{throw new Error(`Unable to load ${this.isCompressed?"binary ":""}CMap at: ${Z}`)})})}_fetchData(l,d){zl("Abstract method `_fetchData` called.")}}class Nh{constructor({baseUrl:l=null}){this.baseUrl=l}fetch(d){return z(this,arguments,function*({filename:l}){if(!this.baseUrl)throw new Error("Ensure that the `standardFontDataUrl` API parameter is provided.");if(!l)throw new Error("Font filename must be specified.");const Z=`${this.baseUrl}${l}`;return this._fetchData(Z).catch(t=>{throw new Error(`Unable to load font data at: ${Z}`)})})}_fetchData(l){zl("Abstract method `_fetchData` called.")}}class ie{create(l,d,Z=!1){if(l<=0||d<=0)throw new Error("Invalid SVG dimensions");const t=this._createSVG("svg:svg");return t.setAttribute("version","1.1"),Z||(t.setAttribute("width",`${l}px`),t.setAttribute("height",`${d}px`)),t.setAttribute("preserveAspectRatio","none"),t.setAttribute("viewBox",`0 0 ${l} ${d}`),t}createElement(l){if(typeof l!="string")throw new Error("Invalid SVG element type");return this._createSVG(l)}_createSVG(l){zl("Abstract method `_createSVG` called.")}}const CU="http://www.w3.org/2000/svg";var Zt;let O0=(Zt=class{},f(Zt,"CSS",96),f(Zt,"PDF",72),f(Zt,"PDF_TO_CSS_UNITS",Zt.CSS/Zt.PDF),Zt);var LF,qt,tZ,TZ,Nd,qa,zF,g,Qd,IF,n0,$a,DF,hh,Gs,EF,v0,Yc,Ts,pc;class Re extends sh{constructor({docId:l,ownerDocument:d=globalThis.document}){super(),e(this,g),e(this,LF),e(this,qt),e(this,tZ),e(this,TZ),e(this,Nd),e(this,qa),e(this,zF,0),b(this,TZ,l),b(this,Nd,d)}addFilter(l){if(!l)return"none";let d=Q(this,g,Qd).get(l);if(d)return d;const[Z,t,F]=N(this,g,$a).call(this,l),c=l.length===1?Z:`${Z}${t}${F}`;if(d=Q(this,g,Qd).get(c),d)return Q(this,g,Qd).set(l,d),d;const a=`g_${Q(this,TZ)}_transfer_map_${md(this,zF)._++}`,W=N(this,g,DF).call(this,a);Q(this,g,Qd).set(l,W),Q(this,g,Qd).set(c,W);const n=N(this,g,EF).call(this,a);return N(this,g,Yc).call(this,Z,t,F,n),W}addHCMFilter(l,d){var Z;const t=`${l}-${d}`,F="base";let c=Q(this,g,IF).get(F);if((c==null?void 0:c.key)===t||(c?((Z=c.filter)==null||Z.remove(),c.key=t,c.url="none",c.filter=null):(c={key:t,url:"none",filter:null},Q(this,g,IF).set(F,c)),!l||!d))return c.url;const a=N(this,g,pc).call(this,l);l=O.makeHexColor(...a);const W=N(this,g,pc).call(this,d);if(d=O.makeHexColor(...W),Q(this,g,n0).style.color="",l==="#000000"&&d==="#ffffff"||l===d)return c.url;const n=new Array(256);for(let h=0;h<=255;h++){const m=h/255;n[h]=m<=.03928?m/12.92:iF((m+.055)/1.055,2.4)}const V=n.join(","),s=`g_${Q(this,TZ)}_hcm_filter`,i=c.filter=N(this,g,EF).call(this,s);N(this,g,Yc).call(this,V,V,V,i),N(this,g,Gs).call(this,i);const R=(h,m)=>{const M=a[h]/255,J=W[h]/255,T=new Array(m+1);for(let G=0;G<=m;G++)T[G]=M+G/m*(J-M);return T.join(",")};return N(this,g,Yc).call(this,R(0,5),R(1,5),R(2,5),i),c.url=N(this,g,DF).call(this,s),c.url}addAlphaFilter(l){let d=Q(this,g,Qd).get(l);if(d)return d;const[Z]=N(this,g,$a).call(this,[l]),t=`alpha_${Z}`;if(d=Q(this,g,Qd).get(t),d)return Q(this,g,Qd).set(l,d),d;const F=`g_${Q(this,TZ)}_alpha_map_${md(this,zF)._++}`,c=N(this,g,DF).call(this,F);Q(this,g,Qd).set(l,c),Q(this,g,Qd).set(t,c);const a=N(this,g,EF).call(this,F);return N(this,g,Ts).call(this,Z,a),c}addLuminosityFilter(l){let d=Q(this,g,Qd).get(l||"luminosity");if(d)return d;let Z,t;if(l?([Z]=N(this,g,$a).call(this,[l]),t=`luminosity_${Z}`):t="luminosity",d=Q(this,g,Qd).get(t),d)return Q(this,g,Qd).set(l,d),d;const F=`g_${Q(this,TZ)}_luminosity_map_${md(this,zF)._++}`,c=N(this,g,DF).call(this,F);Q(this,g,Qd).set(l,c),Q(this,g,Qd).set(t,c);const a=N(this,g,EF).call(this,F);return N(this,g,hh).call(this,a),l&&N(this,g,Ts).call(this,Z,a),c}addHighlightHCMFilter(l,d,Z,t,F){var c;const a=`${d}-${Z}-${t}-${F}`;let W=Q(this,g,IF).get(l);if((W==null?void 0:W.key)===a||(W?((c=W.filter)==null||c.remove(),W.key=a,W.url="none",W.filter=null):(W={key:a,url:"none",filter:null},Q(this,g,IF).set(l,W)),!d||!Z))return W.url;const[n,V]=[d,Z].map(N(this,g,pc).bind(this));let s=Math.round(.2126*n[0]+.7152*n[1]+.0722*n[2]),i=Math.round(.2126*V[0]+.7152*V[1]+.0722*V[2]),[R,h]=[t,F].map(N(this,g,pc).bind(this));i<s&&([s,i,R,h]=[i,s,h,R]),Q(this,g,n0).style.color="";const m=(T,G,X)=>{const Y=new Array(256),p=(i-s)/X,o=T/255,k=(G-T)/(255*X);let S=0;for(let B=0;B<=X;B++){const y=Math.round(s+B*p),D=o+B*k;for(let E=S;E<=y;E++)Y[E]=D;S=y+1}for(let B=S;B<256;B++)Y[B]=Y[S-1];return Y.join(",")},M=`g_${Q(this,TZ)}_hcm_${l}_filter`,J=W.filter=N(this,g,EF).call(this,M);return N(this,g,Gs).call(this,J),N(this,g,Yc).call(this,m(R[0],h[0],5),m(R[1],h[1],5),m(R[2],h[2],5),J),W.url=N(this,g,DF).call(this,M),W.url}destroy(l=!1){l&&Q(this,g,IF).size!==0||(Q(this,tZ)&&(Q(this,tZ).parentNode.parentNode.remove(),b(this,tZ,null)),Q(this,qt)&&(Q(this,qt).clear(),b(this,qt,null)),b(this,zF,0))}}LF=new WeakMap,qt=new WeakMap,tZ=new WeakMap,TZ=new WeakMap,Nd=new WeakMap,qa=new WeakMap,zF=new WeakMap,g=new WeakSet,Qd=function(){return Q(this,qt)||b(this,qt,new Map)},IF=function(){return Q(this,qa)||b(this,qa,new Map)},n0=function(){if(!Q(this,tZ)){const U=Q(this,Nd).createElement("div"),{style:l}=U;l.visibility="hidden",l.contain="strict",l.width=l.height=0,l.position="absolute",l.top=l.left=0,l.zIndex=-1;const d=Q(this,Nd).createElementNS(CU,"svg");d.setAttribute("width",0),d.setAttribute("height",0),b(this,tZ,Q(this,Nd).createElementNS(CU,"defs")),U.append(d),d.append(Q(this,tZ)),Q(this,Nd).body.append(U)}return Q(this,tZ)},$a=function(U){if(U.length===1){const a=U[0],W=new Array(256);for(let V=0;V<256;V++)W[V]=a[V]/255;const n=W.join(",");return[n,n,n]}const[l,d,Z]=U,t=new Array(256),F=new Array(256),c=new Array(256);for(let a=0;a<256;a++)t[a]=l[a]/255,F[a]=d[a]/255,c[a]=Z[a]/255;return[t.join(","),F.join(","),c.join(",")]},DF=function(U){if(Q(this,LF)===void 0){b(this,LF,"");const l=Q(this,Nd).URL;l!==Q(this,Nd).baseURI&&(aV(l)?dl('#createUrl: ignore "data:"-URL for performance reasons.'):b(this,LF,l.split("#",1)[0]))}return`url(${Q(this,LF)}#${U})`},hh=function(U){const l=Q(this,Nd).createElementNS(CU,"feColorMatrix");l.setAttribute("type","matrix"),l.setAttribute("values","0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3 0.59 0.11 0 0"),U.append(l)},Gs=function(U){const l=Q(this,Nd).createElementNS(CU,"feColorMatrix");l.setAttribute("type","matrix"),l.setAttribute("values","0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0 0 0 1 0"),U.append(l)},EF=function(U){const l=Q(this,Nd).createElementNS(CU,"filter");return l.setAttribute("color-interpolation-filters","sRGB"),l.setAttribute("id",U),Q(this,g,n0).append(l),l},v0=function(U,l,d){const Z=Q(this,Nd).createElementNS(CU,l);Z.setAttribute("type","discrete"),Z.setAttribute("tableValues",d),U.append(Z)},Yc=function(U,l,d,Z){const t=Q(this,Nd).createElementNS(CU,"feComponentTransfer");Z.append(t),N(this,g,v0).call(this,t,"feFuncR",U),N(this,g,v0).call(this,t,"feFuncG",l),N(this,g,v0).call(this,t,"feFuncB",d)},Ts=function(U,l){const d=Q(this,Nd).createElementNS(CU,"feComponentTransfer");l.append(d),N(this,g,v0).call(this,d,"feFuncA",U)},pc=function(U){return Q(this,g,n0).style.color=U,vi(getComputedStyle(Q(this,g,n0)).getPropertyValue("color"))};class Ne extends ih{constructor({ownerDocument:l=globalThis.document,enableHWA:d=!1}){super({enableHWA:d}),this._document=l}_createCanvas(l,d){const Z=this._document.createElement("canvas");return Z.width=l,Z.height=d,Z}}function QV(U,l="text"){return z(this,null,function*(){if(uc(U,document.baseURI)){const d=yield fetch(U);if(!d.ok)throw new Error(d.statusText);switch(l){case"arraybuffer":return d.arrayBuffer();case"blob":return d.blob();case"json":return d.json()}return d.text()}return new Promise((d,Z)=>{const t=new XMLHttpRequest;t.open("GET",U,!0),t.responseType=l,t.onreadystatechange=()=>{if(t.readyState===XMLHttpRequest.DONE){if(t.status===200||t.status===0){switch(l){case"arraybuffer":case"blob":case"json":d(t.response);return}d(t.responseText);return}Z(new Error(t.statusText))}},t.send(null)})})}class bh extends Rh{_fetchData(l,d){return QV(l,this.isCompressed?"arraybuffer":"text").then(Z=>({cMapData:Z instanceof ArrayBuffer?new Uint8Array(Z):cV(Z),compressionType:d}))}}class mh extends Nh{_fetchData(l){return QV(l,"arraybuffer").then(d=>new Uint8Array(d))}}let Oi=class extends ie{_createSVG(U){return document.createElementNS(CU,U)}};class PQ{constructor({viewBox:l,scale:d,rotation:Z,offsetX:t=0,offsetY:F=0,dontFlip:c=!1}){this.viewBox=l,this.scale=d,this.rotation=Z,this.offsetX=t,this.offsetY=F;const a=(l[2]+l[0])/2,W=(l[3]+l[1])/2;let n,V,s,i;switch(Z%=360,Z<0&&(Z+=360),Z){case 180:n=-1,V=0,s=0,i=1;break;case 90:n=0,V=1,s=1,i=0;break;case 270:n=0,V=-1,s=-1,i=0;break;case 0:n=1,V=0,s=0,i=-1;break;default:throw new Error("PageViewport: Invalid rotation, must be a multiple of 90 degrees.")}c&&(s=-s,i=-i);let R,h,m,M;n===0?(R=Math.abs(W-l[1])*d+t,h=Math.abs(a-l[0])*d+F,m=(l[3]-l[1])*d,M=(l[2]-l[0])*d):(R=Math.abs(a-l[0])*d+t,h=Math.abs(W-l[1])*d+F,m=(l[2]-l[0])*d,M=(l[3]-l[1])*d),this.transform=[n*d,V*d,s*d,i*d,R-n*d*a-s*d*W,h-V*d*a-i*d*W],this.width=m,this.height=M}get rawDims(){const{viewBox:l}=this;return Zl(this,"rawDims",{pageWidth:l[2]-l[0],pageHeight:l[3]-l[1],pageX:l[0],pageY:l[1]})}clone({scale:l=this.scale,rotation:d=this.rotation,offsetX:Z=this.offsetX,offsetY:t=this.offsetY,dontFlip:F=!1}={}){return new PQ({viewBox:this.viewBox.slice(),scale:l,rotation:d,offsetX:Z,offsetY:t,dontFlip:F})}convertToViewportPoint(l,d){return O.applyTransform([l,d],this.transform)}convertToViewportRectangle(l){const d=O.applyTransform([l[0],l[1]],this.transform),Z=O.applyTransform([l[2],l[3]],this.transform);return[d[0],d[1],Z[0],Z[1]]}convertToPdfPoint(l,d){return O.applyInverseTransform([l,d],this.transform)}}let gi=class extends lt{constructor(U,l=0){super(U,"RenderingCancelledException"),this.extraDelay=l}};function aV(U){const l=U.length;let d=0;for(;d<l&&U[d].trim()==="";)d++;return U.substring(d,d+5).toLowerCase()==="data:"}function Ki(U){return typeof U=="string"&&/\.pdf$/i.test(U)}function he(U){return[U]=U.split(/[#?]/,1),U.substring(U.lastIndexOf("/")+1)}function be(U,l="document.pdf"){if(typeof U!="string")return l;if(aV(U))return dl('getPdfFilenameFromUrl: ignore "data:"-URL for performance reasons.'),l;const d=/^(?:(?:[^:]+:)?\/\/[^/]+)?([^?#]*)(\?[^#]*)?(#.*)?$/,Z=/[^/?#=]+\.pdf\b(?!.*\.pdf\b)/i,t=d.exec(U);let F=Z.exec(t[1])||Z.exec(t[2])||Z.exec(t[3]);if(F&&(F=F[0],F.includes("%")))try{F=Z.exec(decodeURIComponent(F))[0]}catch(c){}return F||l}class iR{constructor(){f(this,"started",Object.create(null)),f(this,"times",[])}time(l){l in this.started&&dl(`Timer is already running for ${l}`),this.started[l]=Date.now()}timeEnd(l){l in this.started||dl(`Timer has not been started for ${l}`),this.times.push({name:l,start:this.started[l],end:Date.now()}),delete this.started[l]}toString(){const l=[];let d=0;for(const{name:Z}of this.times)d=Math.max(Z.length,d);for(const{name:Z,start:t,end:F}of this.times)l.push(`${Z.padEnd(d)} ${F-t}ms
|
||
`);return l.join("")}}function uc(U,l){try{const{protocol:d}=l?new URL(U,l):new URL(U);return d==="http:"||d==="https:"}catch(d){return!1}}function Pd(U){U.preventDefault()}function RR(U){console.log("Deprecated API usage: "+U)}let TV,eh=class{static toDateObject(U){if(!U||typeof U!="string")return null;TV||(TV=new RegExp("^D:(\\d{4})(\\d{2})?(\\d{2})?(\\d{2})?(\\d{2})?(\\d{2})?([Z|+|-])?(\\d{2})?'?(\\d{2})?'?"));const l=TV.exec(U);if(!l)return null;const d=parseInt(l[1],10);let Z=parseInt(l[2],10);Z=Z>=1&&Z<=12?Z-1:0;let t=parseInt(l[3],10);t=t>=1&&t<=31?t:1;let F=parseInt(l[4],10);F=F>=0&&F<=23?F:0;let c=parseInt(l[5],10);c=c>=0&&c<=59?c:0;let a=parseInt(l[6],10);a=a>=0&&a<=59?a:0;const W=l[7]||"Z";let n=parseInt(l[8],10);n=n>=0&&n<=23?n:0;let V=parseInt(l[9],10)||0;return V=V>=0&&V<=59?V:0,W==="-"?(F+=n,c+=V):W==="+"&&(F-=n,c-=V),new Date(Date.UTC(d,Z,t,F,c,a))}};function me(U,{scale:l=1,rotation:d=0}){const{width:Z,height:t}=U.attributes.style,F=[0,0,parseInt(Z),parseInt(t)];return new PQ({viewBox:F,scale:l,rotation:d})}function vi(U){if(U.startsWith("#")){const l=parseInt(U.slice(1),16);return[(l&16711680)>>16,(l&65280)>>8,l&255]}return U.startsWith("rgb(")?U.slice(4,-1).split(",").map(l=>parseInt(l)):U.startsWith("rgba(")?U.slice(5,-1).split(",").map(l=>parseInt(l)).slice(0,3):(dl(`Not a valid color format: "${U}"`),[0,0,0])}function ee(U){const l=document.createElement("span");l.style.visibility="hidden",document.body.append(l);for(const d of U.keys()){l.style.color=d;const Z=window.getComputedStyle(l).color;U.set(d,vi(Z))}l.remove()}function Tl(U){const{a:l,b:d,c:Z,d:t,e:F,f:c}=U.getTransform();return[l,d,Z,t,F,c]}function kU(U){const{a:l,b:d,c:Z,d:t,e:F,f:c}=U.getTransform().invertSelf();return[l,d,Z,t,F,c]}function QF(U,l,d=!1,Z=!0){if(l instanceof PQ){const{pageWidth:t,pageHeight:F}=l.rawDims,{style:c}=U,a=Td.isCSSRoundSupported,W=`var(--scale-factor) * ${t}px`,n=`var(--scale-factor) * ${F}px`,V=a?`round(down, ${W}, var(--scale-round-x, 1px))`:`calc(${W})`,s=a?`round(down, ${n}, var(--scale-round-y, 1px))`:`calc(${n})`;!d||l.rotation%180===0?(c.width=V,c.height=s):(c.width=s,c.height=V)}Z&&U.setAttribute("data-main-rotation",l.rotation)}let Hi=class{constructor(){const U=window.devicePixelRatio||1;this.sx=U,this.sy=U}get scaled(){return this.sx!==1||this.sy!==1}get symmetric(){return this.sx===this.sy}};var Gt,wF,uU,V0,lW,mQ,Ss,Mh,YU,NR,hR,Xn,Jh,Xs;const dW=class UW{constructor(l){e(this,YU),e(this,Gt,null),e(this,wF,null),e(this,uU),e(this,V0,null),e(this,lW,null),b(this,uU,l),Q(UW,mQ)||b(UW,mQ,Object.freeze({freetext:"pdfjs-editor-remove-freetext-button",highlight:"pdfjs-editor-remove-highlight-button",ink:"pdfjs-editor-remove-ink-button",stamp:"pdfjs-editor-remove-stamp-button"}))}render(){const l=b(this,Gt,document.createElement("div"));l.classList.add("editToolbar","hidden"),l.setAttribute("role","toolbar");const d=Q(this,uU)._uiManager._signal;l.addEventListener("contextmenu",Pd,{signal:d}),l.addEventListener("pointerdown",N(UW,Ss,Mh),{signal:d});const Z=b(this,V0,document.createElement("div"));Z.className="buttons",l.append(Z);const t=Q(this,uU).toolbarPosition;if(t){const{style:F}=l,c=Q(this,uU)._uiManager.direction==="ltr"?1-t[0]:t[0];F.insetInlineEnd=`${100*c}%`,F.top=`calc(${100*t[1]}% + var(--editor-toolbar-vert-offset))`}return N(this,YU,Jh).call(this),l}get div(){return Q(this,Gt)}hide(){var l;Q(this,Gt).classList.add("hidden"),(l=Q(this,wF))==null||l.hideDropdown()}show(){var l;Q(this,Gt).classList.remove("hidden"),(l=Q(this,lW))==null||l.shown()}addAltText(l){return z(this,null,function*(){const d=yield l.render();N(this,YU,Xn).call(this,d),Q(this,V0).prepend(d,Q(this,YU,Xs)),b(this,lW,l)})}addColorPicker(l){b(this,wF,l);const d=l.renderButton();N(this,YU,Xn).call(this,d),Q(this,V0).prepend(d,Q(this,YU,Xs))}remove(){var l;Q(this,Gt).remove(),(l=Q(this,wF))==null||l.destroy(),b(this,wF,null)}};Gt=new WeakMap,wF=new WeakMap,uU=new WeakMap,V0=new WeakMap,lW=new WeakMap,mQ=new WeakMap,Ss=new WeakSet,Mh=function(U){U.stopPropagation()},YU=new WeakSet,NR=function(U){Q(this,uU)._focusEventsAllowed=!1,U.preventDefault(),U.stopPropagation()},hR=function(U){Q(this,uU)._focusEventsAllowed=!0,U.preventDefault(),U.stopPropagation()},Xn=function(U){const l=Q(this,uU)._uiManager._signal;U.addEventListener("focusin",N(this,YU,NR).bind(this),{capture:!0,signal:l}),U.addEventListener("focusout",N(this,YU,hR).bind(this),{capture:!0,signal:l}),U.addEventListener("contextmenu",Pd,{signal:l})},Jh=function(){const{editorType:U,_uiManager:l}=Q(this,uU),d=document.createElement("button");d.className="delete",d.tabIndex=0,d.setAttribute("data-l10n-id",Q(dW,mQ)[U]),N(this,YU,Xn).call(this,d),d.addEventListener("click",Z=>{l.delete()},{signal:l._signal}),Q(this,V0).append(d)},Xs=function(){const U=document.createElement("div");return U.className="divider",U},e(dW,Ss),e(dW,mQ,null);let Me=dW;var ZW,Ht,s0,eQ,Gh,Th,bR;class Je{constructor(l){e(this,eQ),e(this,ZW,null),e(this,Ht,null),e(this,s0),b(this,s0,l)}show(l,d,Z){const[t,F]=N(this,eQ,Th).call(this,d,Z),{style:c}=Q(this,Ht)||b(this,Ht,N(this,eQ,Gh).call(this));l.append(Q(this,Ht)),c.insetInlineEnd=`${100*t}%`,c.top=`calc(${100*F}% + var(--editor-toolbar-vert-offset))`}hide(){Q(this,Ht).remove()}}ZW=new WeakMap,Ht=new WeakMap,s0=new WeakMap,eQ=new WeakSet,Gh=function(){const U=b(this,Ht,document.createElement("div"));U.className="editToolbar",U.setAttribute("role","toolbar"),U.addEventListener("contextmenu",Pd,{signal:Q(this,s0)._signal});const l=b(this,ZW,document.createElement("div"));return l.className="buttons",U.append(l),N(this,eQ,bR).call(this),U},Th=function(U,l){let d=0,Z=0;for(const t of U){const F=t.y+t.height;if(F<d)continue;const c=t.x+(l?t.width:0);if(F>d){Z=c,d=F;continue}l?c>Z&&(Z=c):c<Z&&(Z=c)}return[l?1-Z:Z,d]},bR=function(){const U=document.createElement("button");U.className="highlightButton",U.tabIndex=0,U.setAttribute("data-l10n-id","pdfjs-highlight-floating-button1");const l=document.createElement("span");U.append(l),l.className="visuallyHidden",l.setAttribute("data-l10n-id","pdfjs-highlight-floating-button-label");const d=Q(this,s0)._signal;U.addEventListener("contextmenu",Pd,{signal:d}),U.addEventListener("click",()=>{Q(this,s0).highlightSelection("floating_button")},{signal:d}),Q(this,ZW).append(U)};function Yn(U,l,d){for(const Z of d)l.addEventListener(Z,U[Z].bind(U))}function Ge(U){return Math.round(Math.min(255,Math.max(1,255*U))).toString(16).padStart(2,"0")}var Ys;class Te{constructor(){e(this,Ys,0)}get id(){return`${$m}${md(this,Ys)._++}`}}Ys=new WeakMap;var MQ,pn,xl,oc,tW;const Sh=class{constructor(){e(this,oc),e(this,MQ,se()),e(this,pn,0),e(this,xl,null)}static get _isSVGFittingCanvas(){const l='data:image/svg+xml;charset=UTF-8,<svg viewBox="0 0 1 1" width="1" height="1" xmlns="http://www.w3.org/2000/svg"><rect width="1" height="1" style="fill:red;"/></svg>',d=new OffscreenCanvas(1,3).getContext("2d",{willReadFrequently:!0}),Z=new Image;Z.src=l;const t=Z.decode().then(()=>(d.drawImage(Z,0,0,1,1,0,0,1,3),new Uint32Array(d.getImageData(0,0,1,1).data.buffer)[0]===0));return Zl(this,"_isSVGFittingCanvas",t)}getFromFile(l){return z(this,null,function*(){const{lastModified:d,name:Z,size:t,type:F}=l;return N(this,oc,tW).call(this,`${d}_${Z}_${t}_${F}`,l)})}getFromUrl(l){return z(this,null,function*(){return N(this,oc,tW).call(this,l,l)})}getFromBlob(l,d){return z(this,null,function*(){const Z=yield d;return N(this,oc,tW).call(this,l,Z)})}getFromId(l){return z(this,null,function*(){Q(this,xl)||b(this,xl,new Map);const d=Q(this,xl).get(l);if(!d)return null;if(d.bitmap)return d.refCounter+=1,d;if(d.file)return this.getFromFile(d.file);if(d.blobPromise){const{blobPromise:Z}=d;return delete d.blobPromise,this.getFromBlob(d.id,Z)}return this.getFromUrl(d.url)})}getFromCanvas(l,d){Q(this,xl)||b(this,xl,new Map);let Z=Q(this,xl).get(l);if(Z!=null&&Z.bitmap)return Z.refCounter+=1,Z;const t=new OffscreenCanvas(d.width,d.height);return t.getContext("2d").drawImage(d,0,0),Z={bitmap:t.transferToImageBitmap(),id:`image_${Q(this,MQ)}_${md(this,pn)._++}`,refCounter:1,isSvg:!1},Q(this,xl).set(l,Z),Q(this,xl).set(Z.id,Z),Z}getSvgUrl(l){const d=Q(this,xl).get(l);return d!=null&&d.isSvg?d.svgUrl:null}deleteId(l){var d;Q(this,xl)||b(this,xl,new Map);const Z=Q(this,xl).get(l);if(!Z||(Z.refCounter-=1,Z.refCounter!==0))return;const{bitmap:t}=Z;if(!Z.url&&!Z.file){const F=new OffscreenCanvas(t.width,t.height);F.getContext("bitmaprenderer").transferFromImageBitmap(t),Z.blobPromise=F.convertToBlob()}(d=t.close)==null||d.call(t),Z.bitmap=null}isValidId(l){return l.startsWith(`image_${Q(this,MQ)}_`)}};MQ=new WeakMap,pn=new WeakMap,xl=new WeakMap,oc=new WeakSet,tW=function(U,l){return z(this,null,function*(){Q(this,xl)||b(this,xl,new Map);let d=Q(this,xl).get(U);if(d===null)return null;if(d!=null&&d.bitmap)return d.refCounter+=1,d;try{d||(d={bitmap:null,id:`image_${Q(this,MQ)}_${md(this,pn)._++}`,refCounter:0,isSvg:!1});let Z;if(typeof l=="string"?(d.url=l,Z=yield QV(l,"blob")):l instanceof File?Z=d.file=l:l instanceof Blob&&(Z=l),Z.type==="image/svg+xml"){const t=Sh._isSVGFittingCanvas,F=new FileReader,c=new Image,a=new Promise((W,n)=>{c.onload=()=>{d.bitmap=c,d.isSvg=!0,W()},F.onload=()=>z(this,null,function*(){const V=d.svgUrl=F.result;c.src=(yield t)?`${V}#svgView(preserveAspectRatio(none))`:V}),c.onerror=F.onerror=n});F.readAsDataURL(Z),yield a}else d.bitmap=yield createImageBitmap(Z);d.refCounter=1}catch(Z){console.error(Z),d=null}return Q(this,xl).set(U,d),d&&Q(this,xl).set(d.id,d),d})};let Se=Sh;var dd,Tt,FW,Cl;class Xe{constructor(l=128){e(this,dd,[]),e(this,Tt,!1),e(this,FW),e(this,Cl,-1),b(this,FW,l)}add({cmd:l,undo:d,post:Z,mustExec:t,type:F=NaN,overwriteIfSameType:c=!1,keepUndo:a=!1}){if(t&&l(),Q(this,Tt))return;const W={cmd:l,undo:d,post:Z,type:F};if(Q(this,Cl)===-1){Q(this,dd).length>0&&(Q(this,dd).length=0),b(this,Cl,0),Q(this,dd).push(W);return}if(c&&Q(this,dd)[Q(this,Cl)].type===F){a&&(W.undo=Q(this,dd)[Q(this,Cl)].undo),Q(this,dd)[Q(this,Cl)]=W;return}const n=Q(this,Cl)+1;n===Q(this,FW)?Q(this,dd).splice(0,1):(b(this,Cl,n),n<Q(this,dd).length&&Q(this,dd).splice(n)),Q(this,dd).push(W)}undo(){if(Q(this,Cl)===-1)return;b(this,Tt,!0);const{undo:l,post:d}=Q(this,dd)[Q(this,Cl)];l(),d==null||d(),b(this,Tt,!1),b(this,Cl,Q(this,Cl)-1)}redo(){if(Q(this,Cl)<Q(this,dd).length-1){b(this,Cl,Q(this,Cl)+1),b(this,Tt,!0);const{cmd:l,post:d}=Q(this,dd)[Q(this,Cl)];l(),d==null||d(),b(this,Tt,!1)}}hasSomethingToUndo(){return Q(this,Cl)!==-1}hasSomethingToRedo(){return Q(this,Cl)<Q(this,dd).length-1}destroy(){b(this,dd,null)}}dd=new WeakMap,Tt=new WeakMap,FW=new WeakMap,Cl=new WeakMap;var ps,Xh;class fQ{constructor(l){e(this,ps),this.buffer=[],this.callbacks=new Map,this.allKeys=new Set;const{isMac:d}=Td.platform;for(const[Z,t,F={}]of l)for(const c of Z){const a=c.startsWith("mac+");d&&a?(this.callbacks.set(c.slice(4),{callback:t,options:F}),this.allKeys.add(c.split("+").at(-1))):!d&&!a&&(this.callbacks.set(c,{callback:t,options:F}),this.allKeys.add(c.split("+").at(-1)))}}exec(l,d){if(!this.allKeys.has(d.key))return;const Z=this.callbacks.get(N(this,ps,Xh).call(this,d));if(!Z)return;const{callback:t,options:{bubbles:F=!1,args:c=[],checker:a=null}}=Z;a&&!a(l,d)||(t.bind(l,...c,d)(),F||(d.stopPropagation(),d.preventDefault()))}}ps=new WeakSet,Xh=function(U){U.altKey&&this.buffer.push("alt"),U.ctrlKey&&this.buffer.push("ctrl"),U.metaKey&&this.buffer.push("meta"),U.shiftKey&&this.buffer.push("shift"),this.buffer.push(U.key);const l=this.buffer.join("+");return this.buffer.length=0,l};const Yh=class ph{get _colors(){const l=new Map([["CanvasText",null],["Canvas",null]]);return ee(l),Zl(this,"_colors",l)}convert(l){const d=vi(l);if(!window.matchMedia("(forced-colors: active)").matches)return d;for(const[Z,t]of this._colors)if(t.every((F,c)=>F===d[c]))return ph._colorsMapping.get(Z);return d}getHexCode(l){const d=this._colors.get(l);return d?O.makeHexColor(...d):l}};f(Yh,"_colorsMapping",new Map([["CanvasText",[0,0,0]],["Canvas",[255,255,255]]]));let Ye=Yh;var H0,Id,vl,Fd,P0,NZ,hF,nU,tt,f0,bF,LU,VU,mF,da,Ua,A0,Za,zU,Ft,_0,ct,sU,SV,Qt,ta,at,eF,Fa,ca,$l,il,hZ,MF,q0,Qa,Wt,IU,bZ,aa,Ad,JF,K,Wa,XV,mR,eR,na,MR,JR,GR,YV,TR,pV,uV,SR,id,mZ,XR,YR,oV,pR,$0,BV;let gQ=(JF=class{constructor(U,l,d,Z,t,F,c,a,W,n,V){e(this,K),e(this,H0,new AbortController),e(this,Id,null),e(this,vl,new Map),e(this,Fd,new Map),e(this,P0,null),e(this,NZ,null),e(this,hF,null),e(this,nU,new Xe),e(this,tt,null),e(this,f0,0),e(this,bF,new Set),e(this,LU,null),e(this,VU,null),e(this,mF,new Set),e(this,da,!1),e(this,Ua,!1),e(this,A0,!1),e(this,Za,null),e(this,zU,null),e(this,Ft,null),e(this,_0,null),e(this,ct,!1),e(this,sU,null),e(this,SV,new Te),e(this,Qt,!1),e(this,ta,!1),e(this,at,null),e(this,eF,null),e(this,Fa,null),e(this,ca,null),e(this,$l,ll.NONE),e(this,il,new Set),e(this,hZ,null),e(this,MF,null),e(this,q0,null),e(this,Qa,{isEditing:!1,isEmpty:!0,hasSomethingToUndo:!1,hasSomethingToRedo:!1,hasSelectedEditor:!1,hasSelectedText:!1}),e(this,Wt,[0,0]),e(this,IU,null),e(this,bZ,null),e(this,aa,null),e(this,Ad,null);const s=this._signal=Q(this,H0).signal;b(this,bZ,U),b(this,aa,l),b(this,P0,d),this._eventBus=Z,Z._on("editingaction",this.onEditingAction.bind(this),{signal:s}),Z._on("pagechanging",this.onPageChanging.bind(this),{signal:s}),Z._on("scalechanging",this.onScaleChanging.bind(this),{signal:s}),Z._on("rotationchanging",this.onRotationChanging.bind(this),{signal:s}),Z._on("setpreference",this.onSetPreference.bind(this),{signal:s}),Z._on("switchannotationeditorparams",i=>this.updateParams(i.type,i.value),{signal:s}),N(this,K,MR).call(this),N(this,K,SR).call(this),N(this,K,YV).call(this),b(this,NZ,t.annotationStorage),b(this,Za,t.filterFactory),b(this,MF,F),b(this,_0,c||null),b(this,da,a),b(this,Ua,W),b(this,A0,n),b(this,ca,V||null),this.viewParameters={realScale:O0.PDF_TO_CSS_UNITS,rotation:0},this.isShiftKeyDown=!1}static get _keyboardManager(){const U=JF.prototype,l=F=>Q(F,bZ).contains(document.activeElement)&&document.activeElement.tagName!=="BUTTON"&&F.hasSomethingToControl(),d=(F,{target:c})=>{if(c instanceof HTMLInputElement){const{type:a}=c;return a!=="text"&&a!=="number"}return!0},Z=this.TRANSLATE_SMALL,t=this.TRANSLATE_BIG;return Zl(this,"_keyboardManager",new fQ([[["ctrl+a","mac+meta+a"],U.selectAll,{checker:d}],[["ctrl+z","mac+meta+z"],U.undo,{checker:d}],[["ctrl+y","ctrl+shift+z","mac+meta+shift+z","ctrl+shift+Z","mac+meta+shift+Z"],U.redo,{checker:d}],[["Backspace","alt+Backspace","ctrl+Backspace","shift+Backspace","mac+Backspace","mac+alt+Backspace","mac+ctrl+Backspace","Delete","ctrl+Delete","shift+Delete","mac+Delete"],U.delete,{checker:d}],[["Enter","mac+Enter"],U.addNewEditorFromKeyboard,{checker:(F,{target:c})=>!(c instanceof HTMLButtonElement)&&Q(F,bZ).contains(c)&&!F.isEnterHandled}],[[" ","mac+ "],U.addNewEditorFromKeyboard,{checker:(F,{target:c})=>!(c instanceof HTMLButtonElement)&&Q(F,bZ).contains(document.activeElement)}],[["Escape","mac+Escape"],U.unselectAll],[["ArrowLeft","mac+ArrowLeft"],U.translateSelectedEditors,{args:[-Z,0],checker:l}],[["ctrl+ArrowLeft","mac+shift+ArrowLeft"],U.translateSelectedEditors,{args:[-t,0],checker:l}],[["ArrowRight","mac+ArrowRight"],U.translateSelectedEditors,{args:[Z,0],checker:l}],[["ctrl+ArrowRight","mac+shift+ArrowRight"],U.translateSelectedEditors,{args:[t,0],checker:l}],[["ArrowUp","mac+ArrowUp"],U.translateSelectedEditors,{args:[0,-Z],checker:l}],[["ctrl+ArrowUp","mac+shift+ArrowUp"],U.translateSelectedEditors,{args:[0,-t],checker:l}],[["ArrowDown","mac+ArrowDown"],U.translateSelectedEditors,{args:[0,Z],checker:l}],[["ctrl+ArrowDown","mac+shift+ArrowDown"],U.translateSelectedEditors,{args:[0,t],checker:l}]]))}destroy(){var U,l,d,Z;(U=Q(this,Ad))==null||U.resolve(),b(this,Ad,null),(l=Q(this,H0))==null||l.abort(),b(this,H0,null),this._signal=null;for(const t of Q(this,Fd).values())t.destroy();Q(this,Fd).clear(),Q(this,vl).clear(),Q(this,mF).clear(),b(this,Id,null),Q(this,il).clear(),Q(this,nU).destroy(),(d=Q(this,P0))==null||d.destroy(),(Z=Q(this,sU))==null||Z.hide(),b(this,sU,null),Q(this,zU)&&(clearTimeout(Q(this,zU)),b(this,zU,null)),Q(this,IU)&&(clearTimeout(Q(this,IU)),b(this,IU,null))}combinedSignal(U){return AbortSignal.any([this._signal,U.signal])}get mlManager(){return Q(this,ca)}get useNewAltTextFlow(){return Q(this,Ua)}get useNewAltTextWhenAddingImage(){return Q(this,A0)}get hcmFilter(){return Zl(this,"hcmFilter",Q(this,MF)?Q(this,Za).addHCMFilter(Q(this,MF).foreground,Q(this,MF).background):"none")}get direction(){return Zl(this,"direction",getComputedStyle(Q(this,bZ)).direction)}get highlightColors(){return Zl(this,"highlightColors",Q(this,_0)?new Map(Q(this,_0).split(",").map(U=>U.split("=").map(l=>l.trim()))):null)}get highlightColorNames(){return Zl(this,"highlightColorNames",this.highlightColors?new Map(Array.from(this.highlightColors,U=>U.reverse())):null)}setMainHighlightColorPicker(U){b(this,Fa,U)}editAltText(U,l=!1){var d;(d=Q(this,P0))==null||d.editAltText(this,U,l)}switchToMode(U,l){this._eventBus.on("annotationeditormodechanged",l,{once:!0,signal:this._signal}),this._eventBus.dispatch("showannotationeditorui",{source:this,mode:U})}setPreference(U,l){this._eventBus.dispatch("setpreference",{source:this,name:U,value:l})}onSetPreference({name:U,value:l}){switch(U){case"enableNewAltTextWhenAddingImage":b(this,A0,l);break}}onPageChanging({pageNumber:U}){b(this,f0,U-1)}focusMainContainer(){Q(this,bZ).focus()}findParent(U,l){for(const d of Q(this,Fd).values()){const{x:Z,y:t,width:F,height:c}=d.div.getBoundingClientRect();if(U>=Z&&U<=Z+F&&l>=t&&l<=t+c)return d}return null}disableUserSelect(U=!1){Q(this,aa).classList.toggle("noUserSelect",U)}addShouldRescale(U){Q(this,mF).add(U)}removeShouldRescale(U){Q(this,mF).delete(U)}onScaleChanging({scale:U}){this.commitOrRemove(),this.viewParameters.realScale=U*O0.PDF_TO_CSS_UNITS;for(const l of Q(this,mF))l.onScaleChanging()}onRotationChanging({pagesRotation:U}){this.commitOrRemove(),this.viewParameters.rotation=U}highlightSelection(U=""){const l=document.getSelection();if(!l||l.isCollapsed)return;const{anchorNode:d,anchorOffset:Z,focusNode:t,focusOffset:F}=l,c=l.toString(),a=N(this,K,Wa).call(this,l).closest(".textLayer"),W=this.getSelectionBoxes(a);if(!W)return;l.empty();const n=N(this,K,XV).call(this,a),V=Q(this,$l)===ll.NONE,s=()=>{n==null||n.createAndAddNewEditor({x:0,y:0},!1,{methodOfCreation:U,boxes:W,anchorNode:d,anchorOffset:Z,focusNode:t,focusOffset:F,text:c}),V&&this.showAllEditors("highlight",!0,!0)};if(V){this.switchToMode(ll.HIGHLIGHT,s);return}s()}addToAnnotationStorage(U){!U.isEmpty()&&Q(this,NZ)&&!Q(this,NZ).has(U.id)&&Q(this,NZ).setValue(U.id,U)}blur(){if(this.isShiftKeyDown=!1,Q(this,ct)&&(b(this,ct,!1),N(this,K,na).call(this,"main_toolbar")),!this.hasSelection)return;const{activeElement:U}=document;for(const l of Q(this,il))if(l.div.contains(U)){b(this,eF,[l,U]),l._focusEventsAllowed=!1;break}}focus(){if(!Q(this,eF))return;const[U,l]=Q(this,eF);b(this,eF,null),l.addEventListener("focusin",()=>{U._focusEventsAllowed=!0},{once:!0,signal:this._signal}),l.focus()}addEditListeners(){N(this,K,YV).call(this),N(this,K,pV).call(this)}removeEditListeners(){N(this,K,TR).call(this),N(this,K,uV).call(this)}dragOver(U){for(const{type:l}of U.dataTransfer.items)for(const d of Q(this,VU))if(d.isHandlingMimeForPasting(l)){U.dataTransfer.dropEffect="copy",U.preventDefault();return}}drop(U){for(const l of U.dataTransfer.items)for(const d of Q(this,VU))if(d.isHandlingMimeForPasting(l.type)){d.paste(l,this.currentLayer),U.preventDefault();return}}copy(U){var l;if(U.preventDefault(),(l=Q(this,Id))==null||l.commitOrRemove(),!this.hasSelection)return;const d=[];for(const Z of Q(this,il)){const t=Z.serialize(!0);t&&d.push(t)}d.length!==0&&U.clipboardData.setData("application/pdfjs",JSON.stringify(d))}cut(U){this.copy(U),this.delete()}paste(U){return z(this,null,function*(){U.preventDefault();const{clipboardData:l}=U;for(const t of l.items)for(const F of Q(this,VU))if(F.isHandlingMimeForPasting(t.type)){F.paste(t,this.currentLayer);return}let d=l.getData("application/pdfjs");if(!d)return;try{d=JSON.parse(d)}catch(t){dl(`paste: "${t.message}".`);return}if(!Array.isArray(d))return;this.unselectAll();const Z=this.currentLayer;try{const t=[];for(const a of d){const W=yield Z.deserialize(a);if(!W)return;t.push(W)}const F=()=>{for(const a of t)N(this,K,oV).call(this,a);N(this,K,BV).call(this,t)},c=()=>{for(const a of t)a.remove()};this.addCommands({cmd:F,undo:c,mustExec:!0})}catch(t){dl(`paste: "${t.message}".`)}})}keydown(U){!this.isShiftKeyDown&&U.key==="Shift"&&(this.isShiftKeyDown=!0),Q(this,$l)!==ll.NONE&&!this.isEditorHandlingKeyboard&&JF._keyboardManager.exec(this,U)}keyup(U){this.isShiftKeyDown&&U.key==="Shift"&&(this.isShiftKeyDown=!1,Q(this,ct)&&(b(this,ct,!1),N(this,K,na).call(this,"main_toolbar")))}onEditingAction({name:U}){switch(U){case"undo":case"redo":case"delete":case"selectAll":this[U]();break;case"highlightSelection":this.highlightSelection("context_menu");break}}setEditingState(U){U?(N(this,K,JR).call(this),N(this,K,pV).call(this),N(this,K,id).call(this,{isEditing:Q(this,$l)!==ll.NONE,isEmpty:N(this,K,$0).call(this),hasSomethingToUndo:Q(this,nU).hasSomethingToUndo(),hasSomethingToRedo:Q(this,nU).hasSomethingToRedo(),hasSelectedEditor:!1})):(N(this,K,GR).call(this),N(this,K,uV).call(this),N(this,K,id).call(this,{isEditing:!1}),this.disableUserSelect(!1))}registerEditorTypes(U){if(!Q(this,VU)){b(this,VU,U);for(const l of Q(this,VU))N(this,K,mZ).call(this,l.defaultPropertiesToUpdate)}}getId(){return Q(this,SV).id}get currentLayer(){return Q(this,Fd).get(Q(this,f0))}getLayer(U){return Q(this,Fd).get(U)}get currentPageIndex(){return Q(this,f0)}addLayer(U){Q(this,Fd).set(U.pageIndex,U),Q(this,Qt)?U.enable():U.disable()}removeLayer(U){Q(this,Fd).delete(U.pageIndex)}updateMode(U,l=null,d=!1){return z(this,null,function*(){if(Q(this,$l)!==U&&!(Q(this,Ad)&&(yield Q(this,Ad).promise,!Q(this,Ad)))){if(b(this,Ad,Promise.withResolvers()),b(this,$l,U),U===ll.NONE){this.setEditingState(!1),N(this,K,YR).call(this),Q(this,Ad).resolve();return}this.setEditingState(!0),yield N(this,K,XR).call(this),this.unselectAll();for(const Z of Q(this,Fd).values())Z.updateMode(U);if(!l){d&&this.addNewEditorFromKeyboard(),Q(this,Ad).resolve();return}for(const Z of Q(this,vl).values())Z.annotationElementId===l?(this.setSelected(Z),Z.enterInEditMode()):Z.unselect();Q(this,Ad).resolve()}})}addNewEditorFromKeyboard(){this.currentLayer.canCreateNewEmptyEditor()&&this.currentLayer.addNewEditor()}updateToolbar(U){U!==Q(this,$l)&&this._eventBus.dispatch("switchannotationeditormode",{source:this,mode:U})}updateParams(U,l){var d;if(Q(this,VU)){switch(U){case _.CREATE:this.currentLayer.addNewEditor();return;case _.HIGHLIGHT_DEFAULT_COLOR:(d=Q(this,Fa))==null||d.updateColor(l);break;case _.HIGHLIGHT_SHOW_ALL:this._eventBus.dispatch("reporttelemetry",{source:this,details:{type:"editing",data:{type:"highlight",action:"toggle_visibility"}}}),(Q(this,q0)||b(this,q0,new Map)).set(U,l),this.showAllEditors("highlight",l);break}for(const Z of Q(this,il))Z.updateParams(U,l);for(const Z of Q(this,VU))Z.updateDefaultParams(U,l)}}showAllEditors(U,l,d=!1){var t;var Z;for(const F of Q(this,vl).values())F.editorType===U&&F.show(l);((t=(Z=Q(this,q0))==null?void 0:Z.get(_.HIGHLIGHT_SHOW_ALL))!=null?t:!0)!==l&&N(this,K,mZ).call(this,[[_.HIGHLIGHT_SHOW_ALL,l]])}enableWaiting(U=!1){if(Q(this,ta)!==U){b(this,ta,U);for(const l of Q(this,Fd).values())U?l.disableClick():l.enableClick(),l.div.classList.toggle("waiting",U)}}getEditors(U){const l=[];for(const d of Q(this,vl).values())d.pageIndex===U&&l.push(d);return l}getEditor(U){return Q(this,vl).get(U)}addEditor(U){Q(this,vl).set(U.id,U)}removeEditor(U){var l;U.div.contains(document.activeElement)&&(Q(this,zU)&&clearTimeout(Q(this,zU)),b(this,zU,setTimeout(()=>{this.focusMainContainer(),b(this,zU,null)},0))),Q(this,vl).delete(U.id),this.unselect(U),(!U.annotationElementId||!Q(this,bF).has(U.annotationElementId))&&((l=Q(this,NZ))==null||l.remove(U.id))}addDeletedAnnotationElement(U){Q(this,bF).add(U.annotationElementId),this.addChangedExistingAnnotation(U),U.deleted=!0}isDeletedAnnotationElement(U){return Q(this,bF).has(U)}removeDeletedAnnotationElement(U){Q(this,bF).delete(U.annotationElementId),this.removeChangedExistingAnnotation(U),U.deleted=!1}setActiveEditor(U){Q(this,Id)!==U&&(b(this,Id,U),U&&N(this,K,mZ).call(this,U.propertiesToUpdate))}updateUI(U){Q(this,K,pR)===U&&N(this,K,mZ).call(this,U.propertiesToUpdate)}toggleSelected(U){if(Q(this,il).has(U)){Q(this,il).delete(U),U.unselect(),N(this,K,id).call(this,{hasSelectedEditor:this.hasSelection});return}Q(this,il).add(U),U.select(),N(this,K,mZ).call(this,U.propertiesToUpdate),N(this,K,id).call(this,{hasSelectedEditor:!0})}setSelected(U){for(const l of Q(this,il))l!==U&&l.unselect();Q(this,il).clear(),Q(this,il).add(U),U.select(),N(this,K,mZ).call(this,U.propertiesToUpdate),N(this,K,id).call(this,{hasSelectedEditor:!0})}isSelected(U){return Q(this,il).has(U)}get firstSelectedEditor(){return Q(this,il).values().next().value}unselect(U){U.unselect(),Q(this,il).delete(U),N(this,K,id).call(this,{hasSelectedEditor:this.hasSelection})}get hasSelection(){return Q(this,il).size!==0}get isEnterHandled(){return Q(this,il).size===1&&this.firstSelectedEditor.isEnterHandled}undo(){Q(this,nU).undo(),N(this,K,id).call(this,{hasSomethingToUndo:Q(this,nU).hasSomethingToUndo(),hasSomethingToRedo:!0,isEmpty:N(this,K,$0).call(this)})}redo(){Q(this,nU).redo(),N(this,K,id).call(this,{hasSomethingToUndo:!0,hasSomethingToRedo:Q(this,nU).hasSomethingToRedo(),isEmpty:N(this,K,$0).call(this)})}addCommands(U){Q(this,nU).add(U),N(this,K,id).call(this,{hasSomethingToUndo:!0,hasSomethingToRedo:!1,isEmpty:N(this,K,$0).call(this)})}delete(){if(this.commitOrRemove(),!this.hasSelection)return;const U=[...Q(this,il)],l=()=>{for(const Z of U)Z.remove()},d=()=>{for(const Z of U)N(this,K,oV).call(this,Z)};this.addCommands({cmd:l,undo:d,mustExec:!0})}commitOrRemove(){var U;(U=Q(this,Id))==null||U.commitOrRemove()}hasSomethingToControl(){return Q(this,Id)||this.hasSelection}selectAll(){for(const U of Q(this,il))U.commit();N(this,K,BV).call(this,Q(this,vl).values())}unselectAll(){if(!(Q(this,Id)&&(Q(this,Id).commitOrRemove(),Q(this,$l)!==ll.NONE))&&this.hasSelection){for(const U of Q(this,il))U.unselect();Q(this,il).clear(),N(this,K,id).call(this,{hasSelectedEditor:!1})}}translateSelectedEditors(U,l,d=!1){if(d||this.commitOrRemove(),!this.hasSelection)return;Q(this,Wt)[0]+=U,Q(this,Wt)[1]+=l;const[Z,t]=Q(this,Wt),F=[...Q(this,il)];Q(this,IU)&&clearTimeout(Q(this,IU)),b(this,IU,setTimeout(()=>{b(this,IU,null),Q(this,Wt)[0]=Q(this,Wt)[1]=0,this.addCommands({cmd:()=>{for(const a of F)Q(this,vl).has(a.id)&&a.translateInPage(Z,t)},undo:()=>{for(const a of F)Q(this,vl).has(a.id)&&a.translateInPage(-Z,-t)},mustExec:!1})},1e3));for(const a of F)a.translateInPage(U,l)}setUpDragSession(){if(this.hasSelection){this.disableUserSelect(!0),b(this,LU,new Map);for(const U of Q(this,il))Q(this,LU).set(U,{savedX:U.x,savedY:U.y,savedPageIndex:U.pageIndex,newX:0,newY:0,newPageIndex:-1})}}endDragSession(){if(!Q(this,LU))return!1;this.disableUserSelect(!1);const U=Q(this,LU);b(this,LU,null);let l=!1;for(const[{x:Z,y:t,pageIndex:F},c]of U)c.newX=Z,c.newY=t,c.newPageIndex=F,l||(l=Z!==c.savedX||t!==c.savedY||F!==c.savedPageIndex);if(!l)return!1;const d=(Z,t,F,c)=>{if(Q(this,vl).has(Z.id)){const a=Q(this,Fd).get(c);a?Z._setParentAndPosition(a,t,F):(Z.pageIndex=c,Z.x=t,Z.y=F)}};return this.addCommands({cmd:()=>{for(const[Z,{newX:t,newY:F,newPageIndex:c}]of U)d(Z,t,F,c)},undo:()=>{for(const[Z,{savedX:t,savedY:F,savedPageIndex:c}]of U)d(Z,t,F,c)},mustExec:!0}),!0}dragSelectedEditors(U,l){if(Q(this,LU))for(const d of Q(this,LU).keys())d.drag(U,l)}rebuild(U){if(U.parent===null){const l=this.getLayer(U.pageIndex);l?(l.changeParent(U),l.addOrRebuild(U)):(this.addEditor(U),this.addToAnnotationStorage(U),U.rebuild())}else U.parent.addOrRebuild(U)}get isEditorHandlingKeyboard(){var U;return((U=this.getActive())==null?void 0:U.shouldGetKeyboardEvents())||Q(this,il).size===1&&this.firstSelectedEditor.shouldGetKeyboardEvents()}isActive(U){return Q(this,Id)===U}getActive(){return Q(this,Id)}getMode(){return Q(this,$l)}get imageManager(){return Zl(this,"imageManager",new Se)}getSelectionBoxes(U){if(!U)return null;const l=document.getSelection();for(let W=0,n=l.rangeCount;W<n;W++)if(!U.contains(l.getRangeAt(W).commonAncestorContainer))return null;const{x:d,y:Z,width:t,height:F}=U.getBoundingClientRect();let c;switch(U.getAttribute("data-main-rotation")){case"90":c=(W,n,V,s)=>({x:(n-Z)/F,y:1-(W+V-d)/t,width:s/F,height:V/t});break;case"180":c=(W,n,V,s)=>({x:1-(W+V-d)/t,y:1-(n+s-Z)/F,width:V/t,height:s/F});break;case"270":c=(W,n,V,s)=>({x:1-(n+s-Z)/F,y:(W-d)/t,width:s/F,height:V/t});break;default:c=(W,n,V,s)=>({x:(W-d)/t,y:(n-Z)/F,width:V/t,height:s/F});break}const a=[];for(let W=0,n=l.rangeCount;W<n;W++){const V=l.getRangeAt(W);if(!V.collapsed)for(const{x:s,y:i,width:R,height:h}of V.getClientRects())R===0||h===0||a.push(c(s,i,R,h))}return a.length===0?null:a}addChangedExistingAnnotation({annotationElementId:U,id:l}){(Q(this,hF)||b(this,hF,new Map)).set(U,l)}removeChangedExistingAnnotation({annotationElementId:U}){var l;(l=Q(this,hF))==null||l.delete(U)}renderAnnotationElement(U){var l;const d=(l=Q(this,hF))==null?void 0:l.get(U.data.id);if(!d)return;const Z=Q(this,NZ).getRawValue(d);Z&&(Q(this,$l)===ll.NONE&&!Z.hasBeenModified||Z.renderAnnotationElement(U))}},H0=new WeakMap,Id=new WeakMap,vl=new WeakMap,Fd=new WeakMap,P0=new WeakMap,NZ=new WeakMap,hF=new WeakMap,nU=new WeakMap,tt=new WeakMap,f0=new WeakMap,bF=new WeakMap,LU=new WeakMap,VU=new WeakMap,mF=new WeakMap,da=new WeakMap,Ua=new WeakMap,A0=new WeakMap,Za=new WeakMap,zU=new WeakMap,Ft=new WeakMap,_0=new WeakMap,ct=new WeakMap,sU=new WeakMap,SV=new WeakMap,Qt=new WeakMap,ta=new WeakMap,at=new WeakMap,eF=new WeakMap,Fa=new WeakMap,ca=new WeakMap,$l=new WeakMap,il=new WeakMap,hZ=new WeakMap,MF=new WeakMap,q0=new WeakMap,Qa=new WeakMap,Wt=new WeakMap,IU=new WeakMap,bZ=new WeakMap,aa=new WeakMap,Ad=new WeakMap,K=new WeakSet,Wa=function({anchorNode:U}){return U.nodeType===Node.TEXT_NODE?U.parentElement:U},XV=function(U){const{currentLayer:l}=this;if(l.hasTextLayer(U))return l;for(const d of Q(this,Fd).values())if(d.hasTextLayer(U))return d;return null},mR=function(){const U=document.getSelection();if(!U||U.isCollapsed)return;const l=N(this,K,Wa).call(this,U).closest(".textLayer"),d=this.getSelectionBoxes(l);d&&(Q(this,sU)||b(this,sU,new Je(this)),Q(this,sU).show(l,d,this.direction==="ltr"))},eR=function(){var U,l,d;const Z=document.getSelection();if(!Z||Z.isCollapsed){Q(this,hZ)&&((U=Q(this,sU))==null||U.hide(),b(this,hZ,null),N(this,K,id).call(this,{hasSelectedText:!1}));return}const{anchorNode:t}=Z;if(t===Q(this,hZ))return;const F=N(this,K,Wa).call(this,Z).closest(".textLayer");if(!F){Q(this,hZ)&&((l=Q(this,sU))==null||l.hide(),b(this,hZ,null),N(this,K,id).call(this,{hasSelectedText:!1}));return}if((d=Q(this,sU))==null||d.hide(),b(this,hZ,t),N(this,K,id).call(this,{hasSelectedText:!0}),!(Q(this,$l)!==ll.HIGHLIGHT&&Q(this,$l)!==ll.NONE)&&(Q(this,$l)===ll.HIGHLIGHT&&this.showAllEditors("highlight",!0,!0),b(this,ct,this.isShiftKeyDown),!this.isShiftKeyDown)){const c=Q(this,$l)===ll.HIGHLIGHT?N(this,K,XV).call(this,F):null;c==null||c.toggleDrawing();const a=new AbortController,W=this.combinedSignal(a),n=V=>{V.type==="pointerup"&&V.button!==0||(a.abort(),c==null||c.toggleDrawing(!0),V.type==="pointerup"&&N(this,K,na).call(this,"main_toolbar"))};window.addEventListener("pointerup",n,{signal:W}),window.addEventListener("blur",n,{signal:W})}},na=function(U=""){Q(this,$l)===ll.HIGHLIGHT?this.highlightSelection(U):Q(this,da)&&N(this,K,mR).call(this)},MR=function(){document.addEventListener("selectionchange",N(this,K,eR).bind(this),{signal:this._signal})},JR=function(){if(Q(this,Ft))return;b(this,Ft,new AbortController);const U=this.combinedSignal(Q(this,Ft));window.addEventListener("focus",this.focus.bind(this),{signal:U}),window.addEventListener("blur",this.blur.bind(this),{signal:U})},GR=function(){var U;(U=Q(this,Ft))==null||U.abort(),b(this,Ft,null)},YV=function(){if(Q(this,at))return;b(this,at,new AbortController);const U=this.combinedSignal(Q(this,at));window.addEventListener("keydown",this.keydown.bind(this),{signal:U}),window.addEventListener("keyup",this.keyup.bind(this),{signal:U})},TR=function(){var U;(U=Q(this,at))==null||U.abort(),b(this,at,null)},pV=function(){if(Q(this,tt))return;b(this,tt,new AbortController);const U=this.combinedSignal(Q(this,tt));document.addEventListener("copy",this.copy.bind(this),{signal:U}),document.addEventListener("cut",this.cut.bind(this),{signal:U}),document.addEventListener("paste",this.paste.bind(this),{signal:U})},uV=function(){var U;(U=Q(this,tt))==null||U.abort(),b(this,tt,null)},SR=function(){const U=this._signal;document.addEventListener("dragover",this.dragOver.bind(this),{signal:U}),document.addEventListener("drop",this.drop.bind(this),{signal:U})},id=function(U){Object.entries(U).some(([l,d])=>Q(this,Qa)[l]!==d)&&(this._eventBus.dispatch("annotationeditorstateschanged",{source:this,details:Object.assign(Q(this,Qa),U)}),Q(this,$l)===ll.HIGHLIGHT&&U.hasSelectedEditor===!1&&N(this,K,mZ).call(this,[[_.HIGHLIGHT_FREE,!0]]))},mZ=function(U){this._eventBus.dispatch("annotationeditorparamschanged",{source:this,details:U})},XR=function(){return z(this,null,function*(){if(!Q(this,Qt)){b(this,Qt,!0);const U=[];for(const l of Q(this,Fd).values())U.push(l.enable());yield Promise.all(U);for(const l of Q(this,vl).values())l.enable()}})},YR=function(){if(this.unselectAll(),Q(this,Qt)){b(this,Qt,!1);for(const U of Q(this,Fd).values())U.disable();for(const U of Q(this,vl).values())U.disable()}},oV=function(U){const l=Q(this,Fd).get(U.pageIndex);l?l.addOrRebuild(U):(this.addEditor(U),this.addToAnnotationStorage(U))},pR=function(){let U=null;for(U of Q(this,il));return U},$0=function(){if(Q(this,vl).size===0)return!0;if(Q(this,vl).size===1)for(const U of Q(this,vl).values())return U.isEmpty();return!1},BV=function(U){for(const l of Q(this,il))l.unselect();Q(this,il).clear();for(const l of U)l.isEmpty()||(Q(this,il).add(l),l.select());N(this,K,id).call(this,{hasSelectedEditor:this.hasSelection})},f(JF,"TRANSLATE_SMALL",1),f(JF,"TRANSLATE_BIG",10),JF);var td,UZ,mU,_U,gd,Bc,xU,zd,SZ,CF,qU,B0,kZ,un,cW;const St=class rU{constructor(l){e(this,kZ),e(this,td,null),e(this,UZ,!1),e(this,mU,null),e(this,_U,null),e(this,gd,null),e(this,Bc,!1),e(this,xU,null),e(this,zd,null),e(this,SZ,null),e(this,CF,null),e(this,qU,!1),b(this,zd,l),b(this,qU,l._uiManager.useNewAltTextFlow),Q(rU,B0)||b(rU,B0,Object.freeze({added:"pdfjs-editor-new-alt-text-added-button-label",missing:"pdfjs-editor-new-alt-text-missing-button-label",review:"pdfjs-editor-new-alt-text-to-review-button-label"}))}static initialize(l){rU._l10nPromise||(rU._l10nPromise=l)}render(){return z(this,null,function*(){const l=b(this,mU,document.createElement("button"));l.className="altText";let d;Q(this,qU)?(l.classList.add("new"),d=yield rU._l10nPromise.get(Q(rU,B0).missing)):d=yield rU._l10nPromise.get("pdfjs-editor-alt-text-button-label"),l.textContent=d,l.setAttribute("aria-label",d),l.tabIndex="0";const Z=Q(this,zd)._uiManager._signal;l.addEventListener("contextmenu",Pd,{signal:Z}),l.addEventListener("pointerdown",F=>F.stopPropagation(),{signal:Z});const t=F=>{F.preventDefault(),Q(this,zd)._uiManager.editAltText(Q(this,zd)),Q(this,qU)&&Q(this,zd)._reportTelemetry({action:"pdfjs.image.alt_text.image_status_label_clicked",data:{label:Q(this,kZ,un)}})};return l.addEventListener("click",t,{capture:!0,signal:Z}),l.addEventListener("keydown",F=>{F.target===l&&F.key==="Enter"&&(b(this,Bc,!0),t(F))},{signal:Z}),yield N(this,kZ,cW).call(this),l})}finish(){Q(this,mU)&&(Q(this,mU).focus({focusVisible:Q(this,Bc)}),b(this,Bc,!1))}isEmpty(){return Q(this,qU)?Q(this,td)===null:!Q(this,td)&&!Q(this,UZ)}hasData(){return Q(this,qU)?Q(this,td)!==null||!!Q(this,SZ):this.isEmpty()}get guessedText(){return Q(this,SZ)}setGuessedText(l){return z(this,null,function*(){Q(this,td)===null&&(b(this,SZ,l),b(this,CF,yield rU._l10nPromise.get("pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer")({generatedAltText:l})),N(this,kZ,cW).call(this))})}toggleAltTextBadge(l=!1){var d;if(!Q(this,qU)||Q(this,td)){(d=Q(this,xU))==null||d.remove(),b(this,xU,null);return}if(!Q(this,xU)){const Z=b(this,xU,document.createElement("div"));Z.className="noAltTextBadge",Q(this,zd).div.append(Z)}Q(this,xU).classList.toggle("hidden",!l)}serialize(l){let d=Q(this,td);return!l&&Q(this,SZ)===d&&(d=Q(this,CF)),{altText:d,decorative:Q(this,UZ),guessedText:Q(this,SZ),textWithDisclaimer:Q(this,CF)}}get data(){return{altText:Q(this,td),decorative:Q(this,UZ)}}set data({altText:l,decorative:d,guessedText:Z,textWithDisclaimer:t,cancel:F=!1}){Z&&(b(this,SZ,Z),b(this,CF,t)),!(Q(this,td)===l&&Q(this,UZ)===d)&&(F||(b(this,td,l),b(this,UZ,d)),N(this,kZ,cW).call(this))}toggle(l=!1){Q(this,mU)&&(!l&&Q(this,gd)&&(clearTimeout(Q(this,gd)),b(this,gd,null)),Q(this,mU).disabled=!l)}shown(){Q(this,zd)._reportTelemetry({action:"pdfjs.image.alt_text.image_status_label_displayed",data:{label:Q(this,kZ,un)}})}destroy(){var l,d;(l=Q(this,mU))==null||l.remove(),b(this,mU,null),b(this,_U,null),(d=Q(this,xU))==null||d.remove(),b(this,xU,null)}};td=new WeakMap,UZ=new WeakMap,mU=new WeakMap,_U=new WeakMap,gd=new WeakMap,Bc=new WeakMap,xU=new WeakMap,zd=new WeakMap,SZ=new WeakMap,CF=new WeakMap,qU=new WeakMap,B0=new WeakMap,kZ=new WeakSet,un=function(){return Q(this,td)&&"added"||Q(this,td)===null&&this.guessedText&&"review"||"missing"},cW=function(){return z(this,null,function*(){var U,l;const d=Q(this,mU);if(!d)return;if(Q(this,qU)){if(d.classList.toggle("done",!!Q(this,td)),St._l10nPromise.get(Q(St,B0)[Q(this,kZ,un)]).then(F=>{d.setAttribute("aria-label",F);for(const c of d.childNodes)if(c.nodeType===Node.TEXT_NODE){c.textContent=F;break}}),!Q(this,td)){(U=Q(this,_U))==null||U.remove();return}}else{if(!Q(this,td)&&!Q(this,UZ)){d.classList.remove("done"),(l=Q(this,_U))==null||l.remove();return}d.classList.add("done"),St._l10nPromise.get("pdfjs-editor-alt-text-edit-button-label").then(F=>{d.setAttribute("aria-label",F)})}let Z=Q(this,_U);if(!Z){b(this,_U,Z=document.createElement("span")),Z.className="tooltip",Z.setAttribute("role","tooltip"),Z.id=`alt-text-tooltip-${Q(this,zd).id}`;const F=100,c=Q(this,zd)._uiManager._signal;c.addEventListener("abort",()=>{clearTimeout(Q(this,gd)),b(this,gd,null)},{once:!0}),d.addEventListener("mouseenter",()=>{b(this,gd,setTimeout(()=>{b(this,gd,null),Q(this,_U).classList.add("show"),Q(this,zd)._reportTelemetry({action:"alt_text_tooltip"})},F))},{signal:c}),d.addEventListener("mouseleave",()=>{var a;Q(this,gd)&&(clearTimeout(Q(this,gd)),b(this,gd,null)),(a=Q(this,_U))==null||a.classList.remove("show")},{signal:c})}Z.innerText=Q(this,UZ)?yield St._l10nPromise.get("pdfjs-editor-alt-text-decorative-tooltip"):Q(this,td),Z.parentNode||d.append(Z);const t=Q(this,zd).getImageForAltText();t==null||t.setAttribute("aria-describedby",Z.id)})},e(St,B0,null),f(St,"_l10nPromise",null);let uR=St;var xF,GU,Xl,yc,rF,Wd,i0,$t,on,R0,jU,QW,jF,fZ,OU,kc,Lc,Cd,aW,us,el,os,Bn,Bs,yV,uh,oR,kV,ys,ks,oh,Ls,Bh,yh,kh,zs,JQ;const $d=class Pl{constructor(l){e(this,el),e(this,xF,null),e(this,GU,null),e(this,Xl,null),e(this,yc,!1),e(this,rF,!1),e(this,Wd,null),e(this,i0,null),e(this,$t,null),e(this,on,""),e(this,R0,!1),e(this,jU,null),e(this,QW,!1),e(this,jF,!1),e(this,fZ,!1),e(this,OU,null),e(this,kc,0),e(this,Lc,0),e(this,Cd,null),f(this,"_editToolbar",null),f(this,"_initialOptions",Object.create(null)),f(this,"_initialData",null),f(this,"_isVisible",!0),f(this,"_uiManager",null),f(this,"_focusEventsAllowed",!0),e(this,aW,!1),e(this,us,Pl._zIndex++),this.parent=l.parent,this.id=l.id,this.width=this.height=null,this.pageIndex=l.parent.pageIndex,this.name=l.name,this.div=null,this._uiManager=l.uiManager,this.annotationElementId=null,this._willKeepAspectRatio=!1,this._initialOptions.isCentered=l.isCentered,this._structTreeParentId=null;const{rotation:d,rawDims:{pageWidth:Z,pageHeight:t,pageX:F,pageY:c}}=this.parent.viewport;this.rotation=d,this.pageRotation=(360+d-this._uiManager.viewParameters.rotation)%360,this.pageDimensions=[Z,t],this.pageTranslation=[F,c];const[a,W]=this.parentDimensions;this.x=l.x/a,this.y=l.y/W,this.isAttachedToDOM=!1,this.deleted=!1}static get _resizerKeyboardManager(){const l=Pl.prototype._resizeWithKeyboard,d=gQ.TRANSLATE_SMALL,Z=gQ.TRANSLATE_BIG;return Zl(this,"_resizerKeyboardManager",new fQ([[["ArrowLeft","mac+ArrowLeft"],l,{args:[-d,0]}],[["ctrl+ArrowLeft","mac+shift+ArrowLeft"],l,{args:[-Z,0]}],[["ArrowRight","mac+ArrowRight"],l,{args:[d,0]}],[["ctrl+ArrowRight","mac+shift+ArrowRight"],l,{args:[Z,0]}],[["ArrowUp","mac+ArrowUp"],l,{args:[0,-d]}],[["ctrl+ArrowUp","mac+shift+ArrowUp"],l,{args:[0,-Z]}],[["ArrowDown","mac+ArrowDown"],l,{args:[0,d]}],[["ctrl+ArrowDown","mac+shift+ArrowDown"],l,{args:[0,Z]}],[["Escape","mac+Escape"],Pl.prototype._stopResizingWithKeyboard]]))}get editorType(){return Object.getPrototypeOf(this).constructor._type}static get _defaultLineColor(){return Zl(this,"_defaultLineColor",this._colorManager.getHexCode("CanvasText"))}static deleteAnnotationElement(l){const d=new pe({id:l.parent.getNextId(),parent:l.parent,uiManager:l._uiManager});d.annotationElementId=l.annotationElementId,d.deleted=!0,d._uiManager.addToAnnotationStorage(d)}static initialize(l,d,Z){if(Pl._l10nResizer||(Pl._l10nResizer=Object.freeze({topLeft:"pdfjs-editor-resizer-top-left",topMiddle:"pdfjs-editor-resizer-top-middle",topRight:"pdfjs-editor-resizer-top-right",middleRight:"pdfjs-editor-resizer-middle-right",bottomRight:"pdfjs-editor-resizer-bottom-right",bottomMiddle:"pdfjs-editor-resizer-bottom-middle",bottomLeft:"pdfjs-editor-resizer-bottom-left",middleLeft:"pdfjs-editor-resizer-middle-left"})),Pl._l10nPromise||(Pl._l10nPromise=new Map([...["pdfjs-editor-alt-text-button-label","pdfjs-editor-alt-text-edit-button-label","pdfjs-editor-alt-text-decorative-tooltip","pdfjs-editor-new-alt-text-added-button-label","pdfjs-editor-new-alt-text-missing-button-label","pdfjs-editor-new-alt-text-to-review-button-label"].map(F=>[F,l.get(F)]),...["pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer"].map(F=>[F,l.get.bind(l,F)])])),Z!=null&&Z.strings)for(const F of Z.strings)Pl._l10nPromise.set(F,l.get(F));if(Pl._borderLineWidth!==-1)return;const t=getComputedStyle(document.documentElement);Pl._borderLineWidth=parseFloat(t.getPropertyValue("--outline-width"))||0}static updateDefaultParams(l,d){}static get defaultPropertiesToUpdate(){return[]}static isHandlingMimeForPasting(l){return!1}static paste(l,d){zl("Not implemented")}get propertiesToUpdate(){return[]}get _isDraggable(){return Q(this,aW)}set _isDraggable(l){var d;b(this,aW,l),(d=this.div)==null||d.classList.toggle("draggable",l)}get isEnterHandled(){return!0}center(){const[l,d]=this.pageDimensions;switch(this.parentRotation){case 90:this.x-=this.height*d/(l*2),this.y+=this.width*l/(d*2);break;case 180:this.x+=this.width/2,this.y+=this.height/2;break;case 270:this.x+=this.height*d/(l*2),this.y-=this.width*l/(d*2);break;default:this.x-=this.width/2,this.y-=this.height/2;break}this.fixAndSetPosition()}addCommands(l){this._uiManager.addCommands(l)}get currentLayer(){return this._uiManager.currentLayer}setInBackground(){this.div.style.zIndex=0}setInForeground(){this.div.style.zIndex=Q(this,us)}setParent(l){l!==null?(this.pageIndex=l.pageIndex,this.pageDimensions=l.pageDimensions):N(this,el,JQ).call(this),this.parent=l}focusin(l){this._focusEventsAllowed&&(Q(this,R0)?b(this,R0,!1):this.parent.setSelected(this))}focusout(l){var d;if(!this._focusEventsAllowed||!this.isAttachedToDOM)return;const Z=l.relatedTarget;Z!=null&&Z.closest(`#${this.id}`)||(l.preventDefault(),(d=this.parent)!=null&&d.isMultipleSelection||this.commitOrRemove())}commitOrRemove(){this.isEmpty()?this.remove():this.commit()}commit(){this.addToAnnotationStorage()}addToAnnotationStorage(){this._uiManager.addToAnnotationStorage(this)}setAt(l,d,Z,t){const[F,c]=this.parentDimensions;[Z,t]=this.screenToPageTranslation(Z,t),this.x=(l+Z)/F,this.y=(d+t)/c,this.fixAndSetPosition()}translate(l,d){N(this,el,os).call(this,this.parentDimensions,l,d)}translateInPage(l,d){Q(this,jU)||b(this,jU,[this.x,this.y]),N(this,el,os).call(this,this.pageDimensions,l,d),this.div.scrollIntoView({block:"nearest"})}drag(l,d){Q(this,jU)||b(this,jU,[this.x,this.y]);const[Z,t]=this.parentDimensions;if(this.x+=l/Z,this.y+=d/t,this.parent&&(this.x<0||this.x>1||this.y<0||this.y>1)){const{x:n,y:V}=this.div.getBoundingClientRect();this.parent.findNewParent(this,n,V)&&(this.x-=Math.floor(this.x),this.y-=Math.floor(this.y))}let{x:F,y:c}=this;const[a,W]=this.getBaseTranslation();F+=a,c+=W,this.div.style.left=`${(100*F).toFixed(2)}%`,this.div.style.top=`${(100*c).toFixed(2)}%`,this.div.scrollIntoView({block:"nearest"})}get _hasBeenMoved(){return!!Q(this,jU)&&(Q(this,jU)[0]!==this.x||Q(this,jU)[1]!==this.y)}getBaseTranslation(){const[l,d]=this.parentDimensions,{_borderLineWidth:Z}=Pl,t=Z/l,F=Z/d;switch(this.rotation){case 90:return[-t,F];case 180:return[t,F];case 270:return[t,-F];default:return[-t,-F]}}get _mustFixPosition(){return!0}fixAndSetPosition(l=this.rotation){const[d,Z]=this.pageDimensions;let{x:t,y:F,width:c,height:a}=this;if(c*=d,a*=Z,t*=d,F*=Z,this._mustFixPosition)switch(l){case 0:t=Math.max(0,Math.min(d-c,t)),F=Math.max(0,Math.min(Z-a,F));break;case 90:t=Math.max(0,Math.min(d-a,t)),F=Math.min(Z,Math.max(c,F));break;case 180:t=Math.min(d,Math.max(c,t)),F=Math.min(Z,Math.max(a,F));break;case 270:t=Math.min(d,Math.max(a,t)),F=Math.max(0,Math.min(Z-c,F));break}this.x=t/=d,this.y=F/=Z;const[W,n]=this.getBaseTranslation();t+=W,F+=n;const{style:V}=this.div;V.left=`${(100*t).toFixed(2)}%`,V.top=`${(100*F).toFixed(2)}%`,this.moveInDOM()}screenToPageTranslation(l,d){var Z;return N(Z=Pl,Bn,Bs).call(Z,l,d,this.parentRotation)}pageTranslationToScreen(l,d){var Z;return N(Z=Pl,Bn,Bs).call(Z,l,d,360-this.parentRotation)}get parentScale(){return this._uiManager.viewParameters.realScale}get parentRotation(){return(this._uiManager.viewParameters.rotation+this.pageRotation)%360}get parentDimensions(){const{parentScale:l,pageDimensions:[d,Z]}=this;return[d*l,Z*l]}setDims(l,d){const[Z,t]=this.parentDimensions;this.div.style.width=`${(100*l/Z).toFixed(2)}%`,Q(this,rF)||(this.div.style.height=`${(100*d/t).toFixed(2)}%`)}fixDims(){const{style:l}=this.div,{height:d,width:Z}=l,t=Z.endsWith("%"),F=!Q(this,rF)&&d.endsWith("%");if(t&&F)return;const[c,a]=this.parentDimensions;t||(l.width=`${(100*parseFloat(Z)/c).toFixed(2)}%`),!Q(this,rF)&&!F&&(l.height=`${(100*parseFloat(d)/a).toFixed(2)}%`)}getInitialTranslation(){return[0,0]}altTextFinish(){var l;(l=Q(this,Xl))==null||l.finish()}addEditToolbar(){return z(this,null,function*(){return this._editToolbar||Q(this,jF)?this._editToolbar:(this._editToolbar=new Me(this),this.div.append(this._editToolbar.render()),Q(this,Xl)&&(yield this._editToolbar.addAltText(Q(this,Xl))),this._editToolbar)})}removeEditToolbar(){var l;this._editToolbar&&(this._editToolbar.remove(),this._editToolbar=null,(l=Q(this,Xl))==null||l.destroy())}addContainer(l){var d;const Z=(d=this._editToolbar)==null?void 0:d.div;Z?Z.before(l):this.div.append(l)}getClientDimensions(){return this.div.getBoundingClientRect()}addAltTextButton(){return z(this,null,function*(){Q(this,Xl)||(uR.initialize(Pl._l10nPromise),b(this,Xl,new uR(this)),Q(this,xF)&&(Q(this,Xl).data=Q(this,xF),b(this,xF,null)),yield this.addEditToolbar())})}get altTextData(){var l;return(l=Q(this,Xl))==null?void 0:l.data}set altTextData(l){Q(this,Xl)&&(Q(this,Xl).data=l)}get guessedAltText(){var l;return(l=Q(this,Xl))==null?void 0:l.guessedText}setGuessedAltText(l){return z(this,null,function*(){var d;yield(d=Q(this,Xl))==null?void 0:d.setGuessedText(l)})}serializeAltText(l){var d;return(d=Q(this,Xl))==null?void 0:d.serialize(l)}hasAltText(){return!!Q(this,Xl)&&!Q(this,Xl).isEmpty()}hasAltTextData(){var d;var l;return(d=(l=Q(this,Xl))==null?void 0:l.hasData())!=null?d:!1}render(){this.div=document.createElement("div"),this.div.setAttribute("data-editor-rotation",(360-this.rotation)%360),this.div.className=this.name,this.div.setAttribute("id",this.id),this.div.tabIndex=Q(this,yc)?-1:0,this._isVisible||this.div.classList.add("hidden"),this.setInForeground(),N(this,el,Ls).call(this);const[l,d]=this.parentDimensions;this.parentRotation%180!==0&&(this.div.style.maxWidth=`${(100*d/l).toFixed(2)}%`,this.div.style.maxHeight=`${(100*l/d).toFixed(2)}%`);const[Z,t]=this.getInitialTranslation();return this.translate(Z,t),Yn(this,this.div,["pointerdown"]),this.div}pointerdown(l){const{isMac:d}=Td.platform;if(l.button!==0||l.ctrlKey&&d){l.preventDefault();return}if(b(this,R0,!0),this._isDraggable){N(this,el,oh).call(this,l);return}N(this,el,ks).call(this,l)}moveInDOM(){Q(this,OU)&&clearTimeout(Q(this,OU)),b(this,OU,setTimeout(()=>{var l;b(this,OU,null),(l=this.parent)==null||l.moveEditorInDOM(this)},0))}_setParentAndPosition(l,d,Z){l.changeParent(this),this.x=d,this.y=Z,this.fixAndSetPosition()}getRect(l,d,Z=this.rotation){const t=this.parentScale,[F,c]=this.pageDimensions,[a,W]=this.pageTranslation,n=l/t,V=d/t,s=this.x*F,i=this.y*c,R=this.width*F,h=this.height*c;switch(Z){case 0:return[s+n+a,c-i-V-h+W,s+n+R+a,c-i-V+W];case 90:return[s+V+a,c-i+n+W,s+V+h+a,c-i+n+R+W];case 180:return[s-n-R+a,c-i+V+W,s-n+a,c-i+V+h+W];case 270:return[s-V-h+a,c-i-n-R+W,s-V+a,c-i-n+W];default:throw new Error("Invalid rotation")}}getRectInCurrentCoords(l,d){const[Z,t,F,c]=l,a=F-Z,W=c-t;switch(this.rotation){case 0:return[Z,d-c,a,W];case 90:return[Z,d-t,W,a];case 180:return[F,d-t,a,W];case 270:return[F,d-c,W,a];default:throw new Error("Invalid rotation")}}onceAdded(){}isEmpty(){return!1}enableEditMode(){b(this,jF,!0)}disableEditMode(){b(this,jF,!1)}isInEditMode(){return Q(this,jF)}shouldGetKeyboardEvents(){return Q(this,fZ)}needsToBeRebuilt(){return this.div&&!this.isAttachedToDOM}rebuild(){N(this,el,Ls).call(this)}rotate(l){}serializeDeleted(){var l;return{id:this.annotationElementId,deleted:!0,pageIndex:this.pageIndex,popupRef:((l=this._initialData)==null?void 0:l.popupRef)||""}}serialize(l=!1,d=null){zl("An editor must be serializable")}static deserialize(l,d,Z){return z(this,null,function*(){const t=new this.prototype.constructor({parent:d,id:d.getNextId(),uiManager:Z});t.rotation=l.rotation,b(t,xF,l.accessibilityData);const[F,c]=t.pageDimensions,[a,W,n,V]=t.getRectInCurrentCoords(l.rect,c);return t.x=a/F,t.y=W/c,t.width=n/F,t.height=V/c,t})}get hasBeenModified(){return!!this.annotationElementId&&(this.deleted||this.serialize()!==null)}remove(){var l;if((l=Q(this,$t))==null||l.abort(),b(this,$t,null),this.isEmpty()||this.commit(),this.parent?this.parent.remove(this):this._uiManager.removeEditor(this),Q(this,OU)&&(clearTimeout(Q(this,OU)),b(this,OU,null)),N(this,el,JQ).call(this),this.removeEditToolbar(),Q(this,Cd)){for(const d of Q(this,Cd).values())clearTimeout(d);b(this,Cd,null)}this.parent=null}get isResizable(){return!1}makeResizable(){this.isResizable&&(N(this,el,uh).call(this),Q(this,Wd).classList.remove("hidden"),Yn(this,this.div,["keydown"]))}get toolbarPosition(){return null}keydown(l){if(!this.isResizable||l.target!==this.div||l.key!=="Enter")return;this._uiManager.setSelected(this),b(this,i0,{savedX:this.x,savedY:this.y,savedWidth:this.width,savedHeight:this.height});const d=Q(this,Wd).children;if(!Q(this,GU)){b(this,GU,Array.from(d));const c=N(this,el,Bh).bind(this),a=N(this,el,yh).bind(this),W=this._uiManager._signal;for(const n of Q(this,GU)){const V=n.getAttribute("data-resizer-name");n.setAttribute("role","spinbutton"),n.addEventListener("keydown",c,{signal:W}),n.addEventListener("blur",a,{signal:W}),n.addEventListener("focus",N(this,el,kh).bind(this,V),{signal:W}),n.setAttribute("data-l10n-id",Pl._l10nResizer[V])}}const Z=Q(this,GU)[0];let t=0;for(const c of d){if(c===Z)break;t++}const F=(360-this.rotation+this.parentRotation)%360/90*(Q(this,GU).length/4);if(F!==t){if(F<t)for(let a=0;a<t-F;a++)Q(this,Wd).append(Q(this,Wd).firstChild);else if(F>t)for(let a=0;a<F-t;a++)Q(this,Wd).firstChild.before(Q(this,Wd).lastChild);let c=0;for(const a of d){const W=Q(this,GU)[c++].getAttribute("data-resizer-name");a.setAttribute("data-l10n-id",Pl._l10nResizer[W])}}N(this,el,zs).call(this,0),b(this,fZ,!0),Q(this,Wd).firstChild.focus({focusVisible:!0}),l.preventDefault(),l.stopImmediatePropagation()}_resizeWithKeyboard(l,d){Q(this,fZ)&&N(this,el,ys).call(this,Q(this,on),{movementX:l,movementY:d})}_stopResizingWithKeyboard(){N(this,el,JQ).call(this),this.div.focus()}select(){var l,d,Z;if(this.makeResizable(),(l=this.div)==null||l.classList.add("selectedEditor"),!this._editToolbar){this.addEditToolbar().then(()=>{var t,F;(t=this.div)!=null&&t.classList.contains("selectedEditor")&&((F=this._editToolbar)==null||F.show())});return}(d=this._editToolbar)==null||d.show(),(Z=Q(this,Xl))==null||Z.toggleAltTextBadge(!1)}unselect(){var l,d,Z,t,F;(l=Q(this,Wd))==null||l.classList.add("hidden"),(d=this.div)==null||d.classList.remove("selectedEditor"),(Z=this.div)!=null&&Z.contains(document.activeElement)&&this._uiManager.currentLayer.div.focus({preventScroll:!0}),(t=this._editToolbar)==null||t.hide(),(F=Q(this,Xl))==null||F.toggleAltTextBadge(!0)}updateParams(l,d){}disableEditing(){}enableEditing(){}enterInEditMode(){}getImageForAltText(){return null}get contentDiv(){return this.div}get isEditing(){return Q(this,QW)}set isEditing(l){b(this,QW,l),this.parent&&(l?(this.parent.setSelected(this),this.parent.setActiveEditor(this)):this.parent.setActiveEditor(null))}setAspectRatio(l,d){b(this,rF,!0);const Z=l/d,{style:t}=this.div;t.aspectRatio=Z,t.height="auto"}static get MIN_SIZE(){return 16}static canCreateNewEmptyEditor(){return!0}get telemetryInitialData(){return{action:"added"}}get telemetryFinalData(){return null}_reportTelemetry(l,d=!1){if(d){Q(this,Cd)||b(this,Cd,new Map);const{action:Z}=l;let t=Q(this,Cd).get(Z);t&&clearTimeout(t),t=setTimeout(()=>{this._reportTelemetry(l),Q(this,Cd).delete(Z),Q(this,Cd).size===0&&b(this,Cd,null)},Pl._telemetryTimeout),Q(this,Cd).set(Z,t);return}l.type||(l.type=this.editorType),this._uiManager._eventBus.dispatch("reporttelemetry",{source:this,details:{type:"editing",data:l}})}show(l=this._isVisible){this.div.classList.toggle("hidden",!l),this._isVisible=l}enable(){this.div&&(this.div.tabIndex=0),b(this,yc,!1)}disable(){this.div&&(this.div.tabIndex=-1),b(this,yc,!0)}renderAnnotationElement(l){let d=l.container.querySelector(".annotationContent");if(!d)d=document.createElement("div"),d.classList.add("annotationContent",this.editorType),l.container.prepend(d);else if(d.nodeName==="CANVAS"){const Z=d;d=document.createElement("div"),d.classList.add("annotationContent",this.editorType),Z.before(d)}return d}resetAnnotationElement(l){const{firstChild:d}=l.container;(d==null?void 0:d.nodeName)==="DIV"&&d.classList.contains("annotationContent")&&d.remove()}};xF=new WeakMap,GU=new WeakMap,Xl=new WeakMap,yc=new WeakMap,rF=new WeakMap,Wd=new WeakMap,i0=new WeakMap,$t=new WeakMap,on=new WeakMap,R0=new WeakMap,jU=new WeakMap,QW=new WeakMap,jF=new WeakMap,fZ=new WeakMap,OU=new WeakMap,kc=new WeakMap,Lc=new WeakMap,Cd=new WeakMap,aW=new WeakMap,us=new WeakMap,el=new WeakSet,os=function([U,l],d,Z){[d,Z]=this.screenToPageTranslation(d,Z),this.x+=d/U,this.y+=Z/l,this.fixAndSetPosition()},Bn=new WeakSet,Bs=function(U,l,d){switch(d){case 90:return[l,-U];case 180:return[-U,-l];case 270:return[-l,U];default:return[U,l]}},yV=function(U){switch(U){case 90:{const[l,d]=this.pageDimensions;return[0,-l/d,d/l,0]}case 180:return[-1,0,0,-1];case 270:{const[l,d]=this.pageDimensions;return[0,l/d,-d/l,0]}default:return[1,0,0,1]}},uh=function(){if(Q(this,Wd))return;b(this,Wd,document.createElement("div")),Q(this,Wd).classList.add("resizers");const U=this._willKeepAspectRatio?["topLeft","topRight","bottomRight","bottomLeft"]:["topLeft","topMiddle","topRight","middleRight","bottomRight","bottomMiddle","bottomLeft","middleLeft"],l=this._uiManager._signal;for(const d of U){const Z=document.createElement("div");Q(this,Wd).append(Z),Z.classList.add("resizer",d),Z.setAttribute("data-resizer-name",d),Z.addEventListener("pointerdown",N(this,el,oR).bind(this,d),{signal:l}),Z.addEventListener("contextmenu",Pd,{signal:l}),Z.tabIndex=-1}this.div.prepend(Q(this,Wd))},oR=function(U,l){var d;l.preventDefault();const{isMac:Z}=Td.platform;if(l.button!==0||l.ctrlKey&&Z)return;(d=Q(this,Xl))==null||d.toggle(!1);const t=this._isDraggable;this._isDraggable=!1;const F=new AbortController,c=this._uiManager.combinedSignal(F);this.parent.togglePointerEvents(!1),window.addEventListener("pointermove",N(this,el,ys).bind(this,U),{passive:!0,capture:!0,signal:c}),window.addEventListener("contextmenu",Pd,{signal:c});const a=this.x,W=this.y,n=this.width,V=this.height,s=this.parent.div.style.cursor,i=this.div.style.cursor;this.div.style.cursor=this.parent.div.style.cursor=window.getComputedStyle(l.target).cursor;const R=()=>{var h;F.abort(),this.parent.togglePointerEvents(!0),(h=Q(this,Xl))==null||h.toggle(!0),this._isDraggable=t,this.parent.div.style.cursor=s,this.div.style.cursor=i,N(this,el,kV).call(this,a,W,n,V)};window.addEventListener("pointerup",R,{signal:c}),window.addEventListener("blur",R,{signal:c})},kV=function(U,l,d,Z){const t=this.x,F=this.y,c=this.width,a=this.height;t===U&&F===l&&c===d&&a===Z||this.addCommands({cmd:()=>{this.width=c,this.height=a,this.x=t,this.y=F;const[W,n]=this.parentDimensions;this.setDims(W*c,n*a),this.fixAndSetPosition()},undo:()=>{this.width=d,this.height=Z,this.x=U,this.y=l;const[W,n]=this.parentDimensions;this.setDims(W*d,n*Z),this.fixAndSetPosition()},mustExec:!0})},ys=function(U,l){const[d,Z]=this.parentDimensions,t=this.x,F=this.y,c=this.width,a=this.height,W=$d.MIN_SIZE/d,n=$d.MIN_SIZE/Z,V=u=>Math.round(u*1e4)/1e4,s=N(this,el,yV).call(this,this.rotation),i=(u,C)=>[s[0]*u+s[2]*C,s[1]*u+s[3]*C],R=N(this,el,yV).call(this,360-this.rotation),h=(u,C)=>[R[0]*u+R[2]*C,R[1]*u+R[3]*C];let m,M,J=!1,T=!1;switch(U){case"topLeft":J=!0,m=(u,C)=>[0,0],M=(u,C)=>[u,C];break;case"topMiddle":m=(u,C)=>[u/2,0],M=(u,C)=>[u/2,C];break;case"topRight":J=!0,m=(u,C)=>[u,0],M=(u,C)=>[0,C];break;case"middleRight":T=!0,m=(u,C)=>[u,C/2],M=(u,C)=>[0,C/2];break;case"bottomRight":J=!0,m=(u,C)=>[u,C],M=(u,C)=>[0,0];break;case"bottomMiddle":m=(u,C)=>[u/2,C],M=(u,C)=>[u/2,0];break;case"bottomLeft":J=!0,m=(u,C)=>[0,C],M=(u,C)=>[u,0];break;case"middleLeft":T=!0,m=(u,C)=>[0,C/2],M=(u,C)=>[u,C/2];break}const G=m(c,a),X=M(c,a);let Y=i(...X);const p=V(t+Y[0]),o=V(F+Y[1]);let k=1,S=1,[B,y]=this.screenToPageTranslation(l.movementX,l.movementY);if([B,y]=h(B/d,y/Z),J){const u=Math.hypot(c,a);k=S=Math.max(Math.min(Math.hypot(X[0]-G[0]-B,X[1]-G[1]-y)/u,1/c,1/a),W/c,n/a)}else T?k=Math.max(W,Math.min(1,Math.abs(X[0]-G[0]-B)))/c:S=Math.max(n,Math.min(1,Math.abs(X[1]-G[1]-y)))/a;const D=V(c*k),E=V(a*S);Y=i(...M(D,E));const r=p-Y[0],w=o-Y[1];this.width=D,this.height=E,this.x=r,this.y=w,this.setDims(d*D,Z*E),this.fixAndSetPosition()},ks=function(U){const{isMac:l}=Td.platform;U.ctrlKey&&!l||U.shiftKey||U.metaKey&&l?this.parent.toggleSelected(this):this.parent.setSelected(this)},oh=function(U){const l=this._uiManager.isSelected(this);this._uiManager.setUpDragSession();const d=new AbortController,Z=this._uiManager.combinedSignal(d);if(l){this.div.classList.add("moving"),b(this,kc,U.clientX),b(this,Lc,U.clientY);const F=c=>{const{clientX:a,clientY:W}=c,[n,V]=this.screenToPageTranslation(a-Q(this,kc),W-Q(this,Lc));b(this,kc,a),b(this,Lc,W),this._uiManager.dragSelectedEditors(n,V)};window.addEventListener("pointermove",F,{passive:!0,capture:!0,signal:Z})}const t=()=>{d.abort(),l&&this.div.classList.remove("moving"),b(this,R0,!1),this._uiManager.endDragSession()||N(this,el,ks).call(this,U)};window.addEventListener("pointerup",t,{signal:Z}),window.addEventListener("blur",t,{signal:Z})},Ls=function(){if(Q(this,$t)||!this.div)return;b(this,$t,new AbortController);const U=this._uiManager.combinedSignal(Q(this,$t));this.div.addEventListener("focusin",this.focusin.bind(this),{signal:U}),this.div.addEventListener("focusout",this.focusout.bind(this),{signal:U})},Bh=function(U){$d._resizerKeyboardManager.exec(this,U)},yh=function(U){var l;Q(this,fZ)&&((l=U.relatedTarget)==null?void 0:l.parentNode)!==Q(this,Wd)&&N(this,el,JQ).call(this)},kh=function(U){b(this,on,Q(this,fZ)?U:"")},zs=function(U){if(Q(this,GU))for(const l of Q(this,GU))l.tabIndex=U},JQ=function(){if(b(this,fZ,!1),N(this,el,zs).call(this,-1),Q(this,i0)){const{savedX:U,savedY:l,savedWidth:d,savedHeight:Z}=Q(this,i0);N(this,el,kV).call(this,U,l,d,Z),b(this,i0,null)}},e($d,Bn),f($d,"_l10nPromise",null),f($d,"_l10nResizer",null),f($d,"_borderLineWidth",-1),f($d,"_colorManager",new Ye),f($d,"_zIndex",1),f($d,"_telemetryTimeout",1e3);let Nl=$d;class pe extends Nl{constructor(l){super(l),this.annotationElementId=l.annotationElementId,this.deleted=!0}serialize(){return this.serializeDeleted()}}const BR=3285377520,Dd=4294901760,iU=65535;class Lh{constructor(l){this.h1=l?l&4294967295:BR,this.h2=l?l&4294967295:BR}update(l){let d,Z;if(typeof l=="string"){d=new Uint8Array(l.length*2),Z=0;for(let m=0,M=l.length;m<M;m++){const J=l.charCodeAt(m);J<=255?d[Z++]=J:(d[Z++]=J>>>8,d[Z++]=J&255)}}else if(ArrayBuffer.isView(l))d=l.slice(),Z=d.byteLength;else throw new Error("Invalid data format, must be a string or TypedArray.");const t=Z>>2,F=Z-t*4,c=new Uint32Array(d.buffer,0,t);let a=0,W=0,n=this.h1,V=this.h2;const s=3432918353,i=461845907,R=s&iU,h=i&iU;for(let m=0;m<t;m++)m&1?(a=c[m],a=a*s&Dd|a*R&iU,a=a<<15|a>>>17,a=a*i&Dd|a*h&iU,n^=a,n=n<<13|n>>>19,n=n*5+3864292196):(W=c[m],W=W*s&Dd|W*R&iU,W=W<<15|W>>>17,W=W*i&Dd|W*h&iU,V^=W,V=V<<13|V>>>19,V=V*5+3864292196);switch(a=0,F){case 3:a^=d[t*4+2]<<16;case 2:a^=d[t*4+1]<<8;case 1:a^=d[t*4],a=a*s&Dd|a*R&iU,a=a<<15|a>>>17,a=a*i&Dd|a*h&iU,t&1?n^=a:V^=a}this.h1=n,this.h2=V}hexdigest(){let l=this.h1,d=this.h2;return l^=d>>>1,l=l*3981806797&Dd|l*36045&iU,d=d*4283543511&Dd|((d<<16|l>>>16)*2950163797&Dd)>>>16,l^=d>>>1,l=l*444984403&Dd|l*60499&iU,d=d*3301882366&Dd|((d<<16|l>>>16)*3120437893&Dd)>>>16,l^=d>>>1,(l>>>0).toString(16).padStart(8,"0")+(d>>>0).toString(16).padStart(8,"0")}}const Is=Object.freeze({map:null,hash:"",transfer:void 0});var y0,OF,Ud,Ds,zh;class Pi{constructor(){e(this,Ds),e(this,y0,!1),e(this,OF,null),e(this,Ud,new Map),this.onSetModified=null,this.onResetModified=null,this.onAnnotationEditor=null}getValue(l,d){const Z=Q(this,Ud).get(l);return Z===void 0?d:Object.assign(d,Z)}getRawValue(l){return Q(this,Ud).get(l)}remove(l){if(Q(this,Ud).delete(l),Q(this,Ud).size===0&&this.resetModified(),typeof this.onAnnotationEditor=="function"){for(const d of Q(this,Ud).values())if(d instanceof Nl)return;this.onAnnotationEditor(null)}}setValue(l,d){const Z=Q(this,Ud).get(l);let t=!1;if(Z!==void 0)for(const[F,c]of Object.entries(d))Z[F]!==c&&(t=!0,Z[F]=c);else t=!0,Q(this,Ud).set(l,d);t&&N(this,Ds,zh).call(this),d instanceof Nl&&typeof this.onAnnotationEditor=="function"&&this.onAnnotationEditor(d.constructor._type)}has(l){return Q(this,Ud).has(l)}getAll(){return Q(this,Ud).size>0?ri(Q(this,Ud)):null}setAll(l){for(const[d,Z]of Object.entries(l))this.setValue(d,Z)}get size(){return Q(this,Ud).size}resetModified(){Q(this,y0)&&(b(this,y0,!1),typeof this.onResetModified=="function"&&this.onResetModified())}get print(){return new Ih(this)}get serializable(){if(Q(this,Ud).size===0)return Is;const l=new Map,d=new Lh,Z=[],t=Object.create(null);let F=!1;for(const[c,a]of Q(this,Ud)){const W=a instanceof Nl?a.serialize(!1,t):a;W&&(l.set(c,W),d.update(`${c}:${JSON.stringify(W)}`),F||(F=!!W.bitmap))}if(F)for(const c of l.values())c.bitmap&&Z.push(c.bitmap);return l.size>0?{map:l,hash:d.hexdigest(),transfer:Z}:Is}get editorStats(){var Z;let l=null;const d=new Map;for(const t of Q(this,Ud).values()){if(!(t instanceof Nl))continue;const F=t.telemetryFinalData;if(!F)continue;const{type:c}=F;d.has(c)||d.set(c,Object.getPrototypeOf(t).constructor),l||(l=Object.create(null));const a=l[c]||(l[c]=new Map);for(const[W,n]of Object.entries(F)){if(W==="type")continue;let V=a.get(W);V||(V=new Map,a.set(W,V));const s=(Z=V.get(n))!=null?Z:0;V.set(n,s+1)}}for(const[t,F]of d)l[t]=F.computeTelemetryFinalData(l[t]);return l}resetModifiedIds(){b(this,OF,null)}get modifiedIds(){if(Q(this,OF))return Q(this,OF);const l=[];for(const d of Q(this,Ud).values())!(d instanceof Nl)||!d.annotationElementId||!d.serialize()||l.push(d.annotationElementId);return b(this,OF,{ids:new Set(l),hash:l.join(",")})}}y0=new WeakMap,OF=new WeakMap,Ud=new WeakMap,Ds=new WeakSet,zh=function(){Q(this,y0)||(b(this,y0,!0),typeof this.onSetModified=="function"&&this.onSetModified())};var WW;class Ih extends Pi{constructor(l){super(),e(this,WW);const{map:d,hash:Z,transfer:t}=l.serializable,F=structuredClone(d,t?{transfer:t}:null);b(this,WW,{map:F,hash:Z,transfer:t})}get print(){zl("Should not call PrintAnnotationStorage.print")}get serializable(){return Q(this,WW)}get modifiedIds(){return Zl(this,"modifiedIds",{ids:new Set,hash:""})}}WW=new WeakMap;var zc;class ue{constructor({ownerDocument:l=globalThis.document,styleElement:d=null}){e(this,zc,new Set),this._document=l,this.nativeFontFaces=new Set,this.styleElement=null,this.loadingRequests=[],this.loadTestFontId=0}addNativeFontFace(l){this.nativeFontFaces.add(l),this._document.fonts.add(l)}removeNativeFontFace(l){this.nativeFontFaces.delete(l),this._document.fonts.delete(l)}insertRule(l){this.styleElement||(this.styleElement=this._document.createElement("style"),this._document.documentElement.getElementsByTagName("head")[0].append(this.styleElement));const d=this.styleElement.sheet;d.insertRule(l,d.cssRules.length)}clear(){for(const l of this.nativeFontFaces)this._document.fonts.delete(l);this.nativeFontFaces.clear(),Q(this,zc).clear(),this.styleElement&&(this.styleElement.remove(),this.styleElement=null)}loadSystemFont(Z){return z(this,arguments,function*({systemFontInfo:l,_inspectFont:d}){if(!(!l||Q(this,zc).has(l.loadedName))){if(jl(!this.disableFontFace,"loadSystemFont shouldn't be called when `disableFontFace` is set."),this.isFontLoadingAPISupported){const{loadedName:t,src:F,style:c}=l,a=new FontFace(t,F,c);this.addNativeFontFace(a);try{yield a.load(),Q(this,zc).add(t),d==null||d(l)}catch(W){dl(`Cannot load system font: ${l.baseFontName}, installing it could help to improve PDF rendering.`),this.removeNativeFontFace(a)}return}zl("Not implemented: loadSystemFont without the Font Loading API.")}})}bind(l){return z(this,null,function*(){if(l.attached||l.missingFile&&!l.systemFontInfo)return;if(l.attached=!0,l.systemFontInfo){yield this.loadSystemFont(l);return}if(this.isFontLoadingAPISupported){const Z=l.createNativeFontFace();if(Z){this.addNativeFontFace(Z);try{yield Z.loaded}catch(t){throw dl(`Failed to load font '${Z.family}': '${t}'.`),l.disableFontFace=!0,t}}return}const d=l.createFontFaceRule();if(d){if(this.insertRule(d),this.isSyncFontLoadingSupported)return;yield new Promise(Z=>{const t=this._queueLoadingCallback(Z);this._prepareFontLoadEvent(l,t)})}})}get isFontLoadingAPISupported(){var l;const d=!!((l=this._document)!=null&&l.fonts);return Zl(this,"isFontLoadingAPISupported",d)}get isSyncFontLoadingSupported(){let l=!1;return(Vd||typeof navigator<"u"&&typeof(navigator==null?void 0:navigator.userAgent)=="string"&&/Mozilla\/5.0.*?rv:\d+.*? Gecko/.test(navigator.userAgent))&&(l=!0),Zl(this,"isSyncFontLoadingSupported",l)}_queueLoadingCallback(l){function d(){for(jl(!t.done,"completeRequest() cannot be called twice."),t.done=!0;Z.length>0&&Z[0].done;){const F=Z.shift();setTimeout(F.callback,0)}}const{loadingRequests:Z}=this,t={done:!1,complete:d,callback:l};return Z.push(t),t}get _loadTestFont(){const l=atob("T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQAFQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAAALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgAAAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACMAooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4DIP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAAAAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUAAQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgABAAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABYAAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAAAC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAAAAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQACAQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTjFQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==");return Zl(this,"_loadTestFont",l)}_prepareFontLoadEvent(l,d){function Z(G,X){return G.charCodeAt(X)<<24|G.charCodeAt(X+1)<<16|G.charCodeAt(X+2)<<8|G.charCodeAt(X+3)&255}function t(G,X,Y,p){const o=G.substring(0,X),k=G.substring(X+Y);return o+p+k}let F,c;const a=this._document.createElement("canvas");a.width=1,a.height=1;const W=a.getContext("2d");let n=0;function V(G,X){if(++n>30){dl("Load test font never loaded."),X();return}if(W.font="30px "+G,W.fillText(".",0,20),W.getImageData(0,0,1,1).data[3]>0){X();return}setTimeout(V.bind(null,G,X))}const s=`lt${Date.now()}${this.loadTestFontId++}`;let i=this._loadTestFont;i=t(i,976,s.length,s);const R=16,h=1482184792;let m=Z(i,R);for(F=0,c=s.length-3;F<c;F+=4)m=m-h+Z(s,F)|0;F<s.length&&(m=m-h+Z(s+"XXX",F)|0),i=t(i,R,4,Qe(m));const M=`url(data:font/opentype;base64,${btoa(i)});`,J=`@font-face {font-family:"${s}";src:${M}}`;this.insertRule(J);const T=this._document.createElement("div");T.style.visibility="hidden",T.style.width=T.style.height="10px",T.style.position="absolute",T.style.top=T.style.left="0px";for(const G of[l.loadedName,s]){const X=this._document.createElement("span");X.textContent="Hi",X.style.fontFamily=G,T.append(X)}this._document.body.append(T),V(s,()=>{T.remove(),d.complete()})}}zc=new WeakMap;class oe{constructor(l,{disableFontFace:d=!1,inspectFont:Z=null}){this.compiledGlyphs=Object.create(null);for(const t in l)this[t]=l[t];this.disableFontFace=d===!0,this._inspectFont=Z}createNativeFontFace(){var l;if(!this.data||this.disableFontFace)return null;let d;if(!this.cssFontInfo)d=new FontFace(this.loadedName,this.data,{});else{const Z={weight:this.cssFontInfo.fontWeight};this.cssFontInfo.italicAngle&&(Z.style=`oblique ${this.cssFontInfo.italicAngle}deg`),d=new FontFace(this.cssFontInfo.fontFamily,this.data,Z)}return(l=this._inspectFont)==null||l.call(this,this),d}createFontFaceRule(){var l;if(!this.data||this.disableFontFace)return null;const d=Vh(this.data),Z=`url(data:${this.mimetype};base64,${btoa(d)});`;let t;if(!this.cssFontInfo)t=`@font-face {font-family:"${this.loadedName}";src:${Z}}`;else{let F=`font-weight: ${this.cssFontInfo.fontWeight};`;this.cssFontInfo.italicAngle&&(F+=`font-style: oblique ${this.cssFontInfo.italicAngle}deg;`),t=`@font-face {font-family:"${this.cssFontInfo.fontFamily}";${F}src:${Z}}`}return(l=this._inspectFont)==null||l.call(this,this,Z),t}getPathGenerator(l,d){if(this.compiledGlyphs[d]!==void 0)return this.compiledGlyphs[d];let Z;try{Z=l.get(this.loadedName+"_path_"+d)}catch(F){dl(`getPathGenerator - ignoring character: "${F}".`)}if(!Array.isArray(Z)||Z.length===0)return this.compiledGlyphs[d]=function(F,c){};const t=[];for(let F=0,c=Z.length;F<c;)switch(Z[F++]){case yU.BEZIER_CURVE_TO:{const[a,W,n,V,s,i]=Z.slice(F,F+6);t.push(R=>R.bezierCurveTo(a,W,n,V,s,i)),F+=6}break;case yU.MOVE_TO:{const[a,W]=Z.slice(F,F+2);t.push(n=>n.moveTo(a,W)),F+=2}break;case yU.LINE_TO:{const[a,W]=Z.slice(F,F+2);t.push(n=>n.lineTo(a,W)),F+=2}break;case yU.QUADRATIC_CURVE_TO:{const[a,W,n,V]=Z.slice(F,F+4);t.push(s=>s.quadraticCurveTo(a,W,n,V)),F+=4}break;case yU.RESTORE:t.push(a=>a.restore());break;case yU.SAVE:t.push(a=>a.save());break;case yU.SCALE:jl(t.length===2,"Scale command is only valid at the third position.");break;case yU.TRANSFORM:{const[a,W,n,V,s,i]=Z.slice(F,F+6);t.push(R=>R.transform(a,W,n,V,s,i)),F+=6}break;case yU.TRANSLATE:{const[a,W]=Z.slice(F,F+2);t.push(n=>n.translate(a,W)),F+=2}break}return this.compiledGlyphs[d]=function(F,c){t[0](F),t[1](F),F.scale(c,-c);for(let a=2,W=t.length;a<W;a++)t[a](F)}}}if(Vd){var Es=Promise.withResolvers(),yn=null;z(void 0,null,function*(){const U=yield Promise.resolve().then(()=>Sc),l=yield Promise.resolve().then(()=>Sc),d=yield Promise.resolve().then(()=>Sc),Z=yield Promise.resolve().then(()=>Sc);let t,F;try{t=yield Promise.resolve().then(()=>Sc)}catch(c){}try{F=yield Promise.resolve().then(()=>jG)}catch(c){}return new Map(Object.entries({fs:U,http:l,https:d,url:Z,canvas:t,path2d:F}))}).then(U=>{var l,d,Z,t;if(yn=U,Es.resolve(),!globalThis.DOMMatrix){const F=(l=U.get("canvas"))==null?void 0:l.DOMMatrix;F?globalThis.DOMMatrix=F:dl("Cannot polyfill `DOMMatrix`, rendering may be broken.")}if(!globalThis.Path2D){const F=(d=U.get("canvas"))==null?void 0:d.CanvasRenderingContext2D,c=(Z=U.get("path2d"))==null?void 0:Z.applyPath2DToCanvasRenderingContext,a=(t=U.get("path2d"))==null?void 0:t.Path2D;F&&c&&a?(c(F),globalThis.Path2D=a):dl("Cannot polyfill `Path2D`, rendering may be broken.")}},U=>{dl(`loadPackages: ${U}`),yn=new Map,Es.resolve()})}class $Z{static get promise(){return Es.promise}static get(l){return yn==null?void 0:yn.get(l)}}const Dh=function(U){return $Z.get("fs").promises.readFile(U).then(l=>new Uint8Array(l))};class Be extends sh{}class ye extends ih{_createCanvas(l,d){return $Z.get("canvas").createCanvas(l,d)}}class ke extends Rh{_fetchData(l,d){return Dh(l).then(Z=>({cMapData:Z,compressionType:d}))}}class Le extends Nh{_fetchData(l){return Dh(l)}}const bd={FILL:"Fill",STROKE:"Stroke",SHADING:"Shading"};function ws(U,l){if(!l)return;const d=l[2]-l[0],Z=l[3]-l[1],t=new Path2D;t.rect(l[0],l[1],d,Z),U.clip(t)}class fi{getPattern(){zl("Abstract method `getPattern` called.")}}class ze extends fi{constructor(l){super(),this._type=l[1],this._bbox=l[2],this._colorStops=l[3],this._p0=l[4],this._p1=l[5],this._r0=l[6],this._r1=l[7],this.matrix=null}_createGradient(l){let d;this._type==="axial"?d=l.createLinearGradient(this._p0[0],this._p0[1],this._p1[0],this._p1[1]):this._type==="radial"&&(d=l.createRadialGradient(this._p0[0],this._p0[1],this._r0,this._p1[0],this._p1[1],this._r1));for(const Z of this._colorStops)d.addColorStop(Z[0],Z[1]);return d}getPattern(l,d,Z,t){let F;if(t===bd.STROKE||t===bd.FILL){const c=d.current.getClippedPathBoundingBox(t,Tl(l))||[0,0,0,0],a=Math.ceil(c[2]-c[0])||1,W=Math.ceil(c[3]-c[1])||1,n=d.cachedCanvases.getCanvas("pattern",a,W),V=n.context;V.clearRect(0,0,V.canvas.width,V.canvas.height),V.beginPath(),V.rect(0,0,V.canvas.width,V.canvas.height),V.translate(-c[0],-c[1]),Z=O.transform(Z,[1,0,0,1,c[0],c[1]]),V.transform(...d.baseTransform),this.matrix&&V.transform(...this.matrix),ws(V,this._bbox),V.fillStyle=this._createGradient(V),V.fill(),F=l.createPattern(n.canvas,"no-repeat");const s=new DOMMatrix(Z);F.setTransform(s)}else ws(l,this._bbox),F=this._createGradient(l);return F}}function LV(U,l,d,Z,t,F,c,a){const W=l.coords,n=l.colors,V=U.data,s=U.width*4;let i;W[d+1]>W[Z+1]&&(i=d,d=Z,Z=i,i=F,F=c,c=i),W[Z+1]>W[t+1]&&(i=Z,Z=t,t=i,i=c,c=a,a=i),W[d+1]>W[Z+1]&&(i=d,d=Z,Z=i,i=F,F=c,c=i);const R=(W[d]+l.offsetX)*l.scaleX,h=(W[d+1]+l.offsetY)*l.scaleY,m=(W[Z]+l.offsetX)*l.scaleX,M=(W[Z+1]+l.offsetY)*l.scaleY,J=(W[t]+l.offsetX)*l.scaleX,T=(W[t+1]+l.offsetY)*l.scaleY;if(h>=T)return;const G=n[F],X=n[F+1],Y=n[F+2],p=n[c],o=n[c+1],k=n[c+2],S=n[a],B=n[a+1],y=n[a+2],D=Math.round(h),E=Math.round(T);let r,w,u,C,Ul,Wl,hl,Il;for(let Vl=D;Vl<=E;Vl++){if(Vl<M){const I=Vl<h?0:(h-Vl)/(h-M);r=R-(R-m)*I,w=G-(G-p)*I,u=X-(X-o)*I,C=Y-(Y-k)*I}else{let I;Vl>T?I=1:M===T?I=0:I=(M-Vl)/(M-T),r=m-(m-J)*I,w=p-(p-S)*I,u=o-(o-B)*I,C=k-(k-y)*I}let bl;Vl<h?bl=0:Vl>T?bl=1:bl=(h-Vl)/(h-T),Ul=R-(R-J)*bl,Wl=G-(G-S)*bl,hl=X-(X-B)*bl,Il=Y-(Y-y)*bl;const QU=Math.round(Math.min(r,Ul)),fd=Math.round(Math.max(r,Ul));let x=s*Vl+QU*4;for(let I=QU;I<=fd;I++)bl=(r-I)/(r-Ul),bl<0?bl=0:bl>1&&(bl=1),V[x++]=w-(w-Wl)*bl|0,V[x++]=u-(u-hl)*bl|0,V[x++]=C-(C-Il)*bl|0,V[x++]=255}}function Ie(U,l,d){const Z=l.coords,t=l.colors;let F,c;switch(l.type){case"lattice":const a=l.verticesPerRow,W=Math.floor(Z.length/a)-1,n=a-1;for(F=0;F<W;F++){let V=F*a;for(let s=0;s<n;s++,V++)LV(U,d,Z[V],Z[V+1],Z[V+a],t[V],t[V+1],t[V+a]),LV(U,d,Z[V+a+1],Z[V+1],Z[V+a],t[V+a+1],t[V+1],t[V+a])}break;case"triangles":for(F=0,c=Z.length;F<c;F+=3)LV(U,d,Z[F],Z[F+1],Z[F+2],t[F],t[F+1],t[F+2]);break;default:throw new Error("illegal figure")}}class De extends fi{constructor(l){super(),this._coords=l[2],this._colors=l[3],this._figures=l[4],this._bounds=l[5],this._bbox=l[7],this._background=l[8],this.matrix=null}_createMeshCanvas(l,d,Z){const t=Math.floor(this._bounds[0]),F=Math.floor(this._bounds[1]),c=Math.ceil(this._bounds[2])-t,a=Math.ceil(this._bounds[3])-F,W=Math.min(Math.ceil(Math.abs(c*l[0]*1.1)),3e3),n=Math.min(Math.ceil(Math.abs(a*l[1]*1.1)),3e3),V=c/W,s=a/n,i={coords:this._coords,colors:this._colors,offsetX:-t,offsetY:-F,scaleX:1/V,scaleY:1/s},R=W+2*2,h=n+2*2,m=Z.getCanvas("mesh",R,h),M=m.context,J=M.createImageData(W,n);if(d){const T=J.data;for(let G=0,X=T.length;G<X;G+=4)T[G]=d[0],T[G+1]=d[1],T[G+2]=d[2],T[G+3]=255}for(const T of this._figures)Ie(J,T,i);return M.putImageData(J,2,2),{canvas:m.canvas,offsetX:t-2*V,offsetY:F-2*s,scaleX:V,scaleY:s}}getPattern(l,d,Z,t){ws(l,this._bbox);let F;if(t===bd.SHADING)F=O.singularValueDecompose2dScale(Tl(l));else if(F=O.singularValueDecompose2dScale(d.baseTransform),this.matrix){const a=O.singularValueDecompose2dScale(this.matrix);F=[F[0]*a[0],F[1]*a[1]]}const c=this._createMeshCanvas(F,t===bd.SHADING?null:this._background,d.cachedCanvases);return t!==bd.SHADING&&(l.setTransform(...d.baseTransform),this.matrix&&l.transform(...this.matrix)),l.translate(c.offsetX,c.offsetY),l.scale(c.scaleX,c.scaleY),l.createPattern(c.canvas,"no-repeat")}}class Ee extends fi{getPattern(){return"hotpink"}}function we(U){switch(U[0]){case"RadialAxial":return new ze(U);case"Mesh":return new De(U);case"Dummy":return new Ee}throw new Error(`Unknown IR type: ${U[0]}`)}const yR={COLORED:1,UNCOLORED:2},Eh=class wh{constructor(l,d,Z,t,F){this.operatorList=l[2],this.matrix=l[3],this.bbox=l[4],this.xstep=l[5],this.ystep=l[6],this.paintType=l[7],this.tilingType=l[8],this.color=d,this.ctx=Z,this.canvasGraphicsFactory=t,this.baseTransform=F}createPatternCanvas(l){const{bbox:d,operatorList:Z,paintType:t,tilingType:F,color:c,canvasGraphicsFactory:a}=this;let{xstep:W,ystep:n}=this;W=Math.abs(W),n=Math.abs(n),tV("TilingType: "+F);const V=d[0],s=d[1],i=d[2],R=d[3],h=i-V,m=R-s,M=O.singularValueDecompose2dScale(this.matrix),J=O.singularValueDecompose2dScale(this.baseTransform),T=M[0]*J[0],G=M[1]*J[1];let X=h,Y=m,p=!1,o=!1;const k=Math.ceil(W*T),S=Math.ceil(n*G),B=Math.ceil(h*T),y=Math.ceil(m*G);k>=B?X=W:p=!0,S>=y?Y=n:o=!0;const D=this.getSizeAndScale(X,this.ctx.canvas.width,T),E=this.getSizeAndScale(Y,this.ctx.canvas.height,G),r=l.cachedCanvases.getCanvas("pattern",D.size,E.size),w=r.context,u=a.createCanvasGraphics(w);if(u.groupLevel=l.groupLevel,this.setFillAndStrokeStyleToContext(u,t,c),w.translate(-D.scale*V,-E.scale*s),u.transform(D.scale,0,0,E.scale,0,0),w.save(),this.clipBbox(u,V,s,i,R),u.baseTransform=Tl(u.ctx),u.executeOperatorList(Z),u.endDrawing(),w.restore(),p||o){const C=r.canvas;p&&(X=W),o&&(Y=n);const Ul=this.getSizeAndScale(X,this.ctx.canvas.width,T),Wl=this.getSizeAndScale(Y,this.ctx.canvas.height,G),hl=Ul.size,Il=Wl.size,Vl=l.cachedCanvases.getCanvas("pattern-workaround",hl,Il),bl=Vl.context,QU=p?Math.floor(h/W):0,fd=o?Math.floor(m/n):0;for(let x=0;x<=QU;x++)for(let I=0;I<=fd;I++)bl.drawImage(C,hl*x,Il*I,hl,Il,0,0,hl,Il);return{canvas:Vl.canvas,scaleX:Ul.scale,scaleY:Wl.scale,offsetX:V,offsetY:s}}return{canvas:r.canvas,scaleX:D.scale,scaleY:E.scale,offsetX:V,offsetY:s}}getSizeAndScale(l,d,Z){const t=Math.max(wh.MAX_PATTERN_SIZE,d);let F=Math.ceil(l*Z);return F>=t?F=t:Z=F/l,{scale:Z,size:F}}clipBbox(l,d,Z,t,F){const c=t-d,a=F-Z;l.ctx.rect(d,Z,c,a),l.current.updateRectMinMax(Tl(l.ctx),[d,Z,t,F]),l.clip(),l.endPath()}setFillAndStrokeStyleToContext(l,d,Z){const t=l.ctx,F=l.current;switch(d){case yR.COLORED:const c=this.ctx;t.fillStyle=c.fillStyle,t.strokeStyle=c.strokeStyle,F.fillColor=c.fillStyle,F.strokeColor=c.strokeStyle;break;case yR.UNCOLORED:const a=O.makeHexColor(Z[0],Z[1],Z[2]);t.fillStyle=a,t.strokeStyle=a,F.fillColor=a,F.strokeColor=a;break;default:throw new ce(`Unsupported paint type: ${d}`)}}getPattern(l,d,Z,t){let F=Z;t!==bd.SHADING&&(F=O.transform(F,d.baseTransform),this.matrix&&(F=O.transform(F,this.matrix)));const c=this.createPatternCanvas(d);let a=new DOMMatrix(F);a=a.translate(c.offsetX,c.offsetY),a=a.scale(1/c.scaleX,1/c.scaleY);const W=l.createPattern(c.canvas,"repeat");return W.setTransform(a),W}};f(Eh,"MAX_PATTERN_SIZE",3e3);let Ce=Eh;function xe({src:U,srcPos:l=0,dest:d,width:Z,height:t,nonBlackColor:F=4294967295,inverseDecode:c=!1}){const a=Td.isLittleEndian?4278190080:255,[W,n]=c?[F,a]:[a,F],V=Z>>3,s=Z&7,i=U.length;d=new Uint32Array(d.buffer);let R=0;for(let h=0;h<t;h++){for(const M=l+V;l<M;l++){const J=l<i?U[l]:255;d[R++]=J&128?n:W,d[R++]=J&64?n:W,d[R++]=J&32?n:W,d[R++]=J&16?n:W,d[R++]=J&8?n:W,d[R++]=J&4?n:W,d[R++]=J&2?n:W,d[R++]=J&1?n:W}if(s===0)continue;const m=l<i?U[l++]:255;for(let M=0;M<s;M++)d[R++]=m&1<<7-M?n:W}return{srcPos:l,destPos:R}}const kR=16,LR=100,re=15,zR=10,IR=1e3,Jd=16;function je(U,l){if(U._removeMirroring)throw new Error("Context is already forwarding operations.");U.__originalSave=U.save,U.__originalRestore=U.restore,U.__originalRotate=U.rotate,U.__originalScale=U.scale,U.__originalTranslate=U.translate,U.__originalTransform=U.transform,U.__originalSetTransform=U.setTransform,U.__originalResetTransform=U.resetTransform,U.__originalClip=U.clip,U.__originalMoveTo=U.moveTo,U.__originalLineTo=U.lineTo,U.__originalBezierCurveTo=U.bezierCurveTo,U.__originalRect=U.rect,U.__originalClosePath=U.closePath,U.__originalBeginPath=U.beginPath,U._removeMirroring=()=>{U.save=U.__originalSave,U.restore=U.__originalRestore,U.rotate=U.__originalRotate,U.scale=U.__originalScale,U.translate=U.__originalTranslate,U.transform=U.__originalTransform,U.setTransform=U.__originalSetTransform,U.resetTransform=U.__originalResetTransform,U.clip=U.__originalClip,U.moveTo=U.__originalMoveTo,U.lineTo=U.__originalLineTo,U.bezierCurveTo=U.__originalBezierCurveTo,U.rect=U.__originalRect,U.closePath=U.__originalClosePath,U.beginPath=U.__originalBeginPath,delete U._removeMirroring},U.save=function(){l.save(),this.__originalSave()},U.restore=function(){l.restore(),this.__originalRestore()},U.translate=function(d,Z){l.translate(d,Z),this.__originalTranslate(d,Z)},U.scale=function(d,Z){l.scale(d,Z),this.__originalScale(d,Z)},U.transform=function(d,Z,t,F,c,a){l.transform(d,Z,t,F,c,a),this.__originalTransform(d,Z,t,F,c,a)},U.setTransform=function(d,Z,t,F,c,a){l.setTransform(d,Z,t,F,c,a),this.__originalSetTransform(d,Z,t,F,c,a)},U.resetTransform=function(){l.resetTransform(),this.__originalResetTransform()},U.rotate=function(d){l.rotate(d),this.__originalRotate(d)},U.clip=function(d){l.clip(d),this.__originalClip(d)},U.moveTo=function(d,Z){l.moveTo(d,Z),this.__originalMoveTo(d,Z)},U.lineTo=function(d,Z){l.lineTo(d,Z),this.__originalLineTo(d,Z)},U.bezierCurveTo=function(d,Z,t,F,c,a){l.bezierCurveTo(d,Z,t,F,c,a),this.__originalBezierCurveTo(d,Z,t,F,c,a)},U.rect=function(d,Z,t,F){l.rect(d,Z,t,F),this.__originalRect(d,Z,t,F)},U.closePath=function(){l.closePath(),this.__originalClosePath()},U.beginPath=function(){l.beginPath(),this.__originalBeginPath()}}class Oe{constructor(l){this.canvasFactory=l,this.cache=Object.create(null)}getCanvas(l,d,Z){let t;return this.cache[l]!==void 0?(t=this.cache[l],this.canvasFactory.reset(t,d,Z)):(t=this.canvasFactory.create(d,Z),this.cache[l]=t),t}delete(l){delete this.cache[l]}clear(){for(const l in this.cache){const d=this.cache[l];this.canvasFactory.destroy(d),delete this.cache[l]}}}function Va(U,l,d,Z,t,F,c,a,W,n){const[V,s,i,R,h,m]=Tl(U);if(s===0&&i===0){const T=c*V+h,G=Math.round(T),X=a*R+m,Y=Math.round(X),p=(c+W)*V+h,o=Math.abs(Math.round(p)-G)||1,k=(a+n)*R+m,S=Math.abs(Math.round(k)-Y)||1;return U.setTransform(Math.sign(V),0,0,Math.sign(R),G,Y),U.drawImage(l,d,Z,t,F,0,0,o,S),U.setTransform(V,s,i,R,h,m),[o,S]}if(V===0&&R===0){const T=a*i+h,G=Math.round(T),X=c*s+m,Y=Math.round(X),p=(a+n)*i+h,o=Math.abs(Math.round(p)-G)||1,k=(c+W)*s+m,S=Math.abs(Math.round(k)-Y)||1;return U.setTransform(0,Math.sign(s),Math.sign(i),0,G,Y),U.drawImage(l,d,Z,t,F,0,0,S,o),U.setTransform(V,s,i,R,h,m),[S,o]}U.drawImage(l,d,Z,t,F,c,a,W,n);const M=Math.hypot(V,s),J=Math.hypot(i,R);return[M*W,J*n]}function ge(U){const{width:l,height:d}=U;if(l>IR||d>IR)return null;const Z=1e3,t=new Uint8Array([0,2,4,0,1,0,5,4,8,10,0,8,0,2,1,0]),F=l+1;let c=new Uint8Array(F*(d+1)),a,W,n;const V=l+7&-8;let s=new Uint8Array(V*d),i=0;for(const M of U.data){let J=128;for(;J>0;)s[i++]=M&J?0:255,J>>=1}let R=0;for(i=0,s[i]!==0&&(c[0]=1,++R),W=1;W<l;W++)s[i]!==s[i+1]&&(c[W]=s[i]?2:1,++R),i++;for(s[i]!==0&&(c[W]=2,++R),a=1;a<d;a++){i=a*V,n=a*F,s[i-V]!==s[i]&&(c[n]=s[i]?1:8,++R);let M=(s[i]?4:0)+(s[i-V]?8:0);for(W=1;W<l;W++)M=(M>>2)+(s[i+1]?4:0)+(s[i-V+1]?8:0),t[M]&&(c[n+W]=t[M],++R),i++;if(s[i-V]!==s[i]&&(c[n+W]=s[i]?2:4,++R),R>Z)return null}for(i=V*(d-1),n=a*F,s[i]!==0&&(c[n]=8,++R),W=1;W<l;W++)s[i]!==s[i+1]&&(c[n+W]=s[i]?4:8,++R),i++;if(s[i]!==0&&(c[n+W]=4,++R),R>Z)return null;const h=new Int32Array([0,F,-1,0,-F,0,0,0,1]),m=new Path2D;for(a=0;R&&a<=d;a++){let M=a*F;const J=M+l;for(;M<J&&!c[M];)M++;if(M===J)continue;m.moveTo(M%F,a);const T=M;let G=c[M];do{const X=h[G];do M+=X;while(!c[M]);const Y=c[M];Y!==5&&Y!==10?(G=Y,c[M]=0):(G=Y&51*G>>4,c[M]&=G>>2|G<<2),m.lineTo(M%F,M/F|0),c[M]||--R}while(T!==M);--a}return s=null,c=null,function(M){M.save(),M.scale(1/l,-1/d),M.translate(0,-d),M.fill(m),M.beginPath(),M.restore()}}class DR{constructor(l,d){this.alphaIsShape=!1,this.fontSize=0,this.fontSizeScale=1,this.textMatrix=Wh,this.textMatrixScale=1,this.fontMatrix=ms,this.leading=0,this.x=0,this.y=0,this.lineX=0,this.lineY=0,this.charSpacing=0,this.wordSpacing=0,this.textHScale=1,this.textRenderingMode=cd.FILL,this.textRise=0,this.fillColor="#000000",this.strokeColor="#000000",this.patternFill=!1,this.fillAlpha=1,this.strokeAlpha=1,this.lineWidth=1,this.activeSMask=null,this.transferMaps="none",this.startNewPathAndClipBox([0,0,l,d])}clone(){const l=Object.create(this);return l.clipBox=this.clipBox.slice(),l}setCurrentPoint(l,d){this.x=l,this.y=d}updatePathMinMax(l,d,Z){[d,Z]=O.applyTransform([d,Z],l),this.minX=Math.min(this.minX,d),this.minY=Math.min(this.minY,Z),this.maxX=Math.max(this.maxX,d),this.maxY=Math.max(this.maxY,Z)}updateRectMinMax(l,d){const Z=O.applyTransform(d,l),t=O.applyTransform(d.slice(2),l),F=O.applyTransform([d[0],d[3]],l),c=O.applyTransform([d[2],d[1]],l);this.minX=Math.min(this.minX,Z[0],t[0],F[0],c[0]),this.minY=Math.min(this.minY,Z[1],t[1],F[1],c[1]),this.maxX=Math.max(this.maxX,Z[0],t[0],F[0],c[0]),this.maxY=Math.max(this.maxY,Z[1],t[1],F[1],c[1])}updateScalingPathMinMax(l,d){O.scaleMinMax(l,d),this.minX=Math.min(this.minX,d[0]),this.minY=Math.min(this.minY,d[1]),this.maxX=Math.max(this.maxX,d[2]),this.maxY=Math.max(this.maxY,d[3])}updateCurvePathMinMax(l,d,Z,t,F,c,a,W,n,V){const s=O.bezierBoundingBox(d,Z,t,F,c,a,W,n,V);V||this.updateRectMinMax(l,s)}getPathBoundingBox(l=bd.FILL,d=null){const Z=[this.minX,this.minY,this.maxX,this.maxY];if(l===bd.STROKE){d||zl("Stroke bounding box must include transform.");const t=O.singularValueDecompose2dScale(d),F=t[0]*this.lineWidth/2,c=t[1]*this.lineWidth/2;Z[0]-=F,Z[1]-=c,Z[2]+=F,Z[3]+=c}return Z}updateClipFromPath(){const l=O.intersect(this.clipBox,this.getPathBoundingBox());this.startNewPathAndClipBox(l||[0,0,0,0])}isEmptyClip(){return this.minX===1/0}startNewPathAndClipBox(l){this.clipBox=l,this.minX=1/0,this.minY=1/0,this.maxX=0,this.maxY=0}getClippedPathBoundingBox(l=bd.FILL,d=null){return O.intersect(this.clipBox,this.getPathBoundingBox(l,d))}}function ER(U,l){if(typeof ImageData<"u"&&l instanceof ImageData){U.putImageData(l,0,0);return}const d=l.height,Z=l.width,t=d%Jd,F=(d-t)/Jd,c=t===0?F:F+1,a=U.createImageData(Z,Jd);let W=0,n;const V=l.data,s=a.data;let i,R,h,m;if(l.kind===Aa.GRAYSCALE_1BPP){const M=V.byteLength,J=new Uint32Array(s.buffer,0,s.byteLength>>2),T=J.length,G=Z+7>>3,X=4294967295,Y=Td.isLittleEndian?4278190080:255;for(i=0;i<c;i++){for(h=i<F?Jd:t,n=0,R=0;R<h;R++){const p=M-W;let o=0;const k=p>G?Z:p*8-7,S=k&-8;let B=0,y=0;for(;o<S;o+=8)y=V[W++],J[n++]=y&128?X:Y,J[n++]=y&64?X:Y,J[n++]=y&32?X:Y,J[n++]=y&16?X:Y,J[n++]=y&8?X:Y,J[n++]=y&4?X:Y,J[n++]=y&2?X:Y,J[n++]=y&1?X:Y;for(;o<k;o++)B===0&&(y=V[W++],B=128),J[n++]=y&B?X:Y,B>>=1}for(;n<T;)J[n++]=0;U.putImageData(a,0,i*Jd)}}else if(l.kind===Aa.RGBA_32BPP){for(R=0,m=Z*Jd*4,i=0;i<F;i++)s.set(V.subarray(W,W+m)),W+=m,U.putImageData(a,0,R),R+=Jd;i<c&&(m=Z*t*4,s.set(V.subarray(W,W+m)),U.putImageData(a,0,R))}else if(l.kind===Aa.RGB_24BPP)for(h=Jd,m=Z*h,i=0;i<c;i++){for(i>=F&&(h=t,m=Z*h),n=0,R=m;R--;)s[n++]=V[W++],s[n++]=V[W++],s[n++]=V[W++],s[n++]=255;U.putImageData(a,0,i*Jd)}else throw new Error(`bad image kind: ${l.kind}`)}function wR(U,l){if(l.bitmap){U.drawImage(l.bitmap,0,0);return}const d=l.height,Z=l.width,t=d%Jd,F=(d-t)/Jd,c=t===0?F:F+1,a=U.createImageData(Z,Jd);let W=0;const n=l.data,V=a.data;for(let s=0;s<c;s++){const i=s<F?Jd:t;({srcPos:W}=xe({src:n,srcPos:W,dest:V,width:Z,height:i,nonBlackColor:0})),U.putImageData(a,0,s*Jd)}}function lc(U,l){const d=["strokeStyle","fillStyle","fillRule","globalAlpha","lineWidth","lineCap","lineJoin","miterLimit","globalCompositeOperation","font","filter"];for(const Z of d)U[Z]!==void 0&&(l[Z]=U[Z]);U.setLineDash!==void 0&&(l.setLineDash(U.getLineDash()),l.lineDashOffset=U.lineDashOffset)}function sa(U){if(U.strokeStyle=U.fillStyle="#000000",U.fillRule="nonzero",U.globalAlpha=1,U.lineWidth=1,U.lineCap="butt",U.lineJoin="miter",U.miterLimit=10,U.globalCompositeOperation="source-over",U.font="10px sans-serif",U.setLineDash!==void 0&&(U.setLineDash([]),U.lineDashOffset=0),!Vd){const{filter:l}=U;l!=="none"&&l!==""&&(U.filter="none")}}function CR(U,l){if(l)return!0;const d=O.singularValueDecompose2dScale(U);d[0]=Math.fround(d[0]),d[1]=Math.fround(d[1]);const Z=Math.fround((globalThis.devicePixelRatio||1)*O0.PDF_TO_CSS_UNITS);return d[0]<=Z&&d[1]<=Z}const Ke=["butt","round","square"],ve=["miter","round","bevel"],He={},xR={};var gF,Cs,xs;const Pe=class Ch{constructor(l,d,Z,t,F,{optionalContentConfig:c,markedContentStack:a=null},W,n){e(this,gF),this.ctx=l,this.current=new DR(this.ctx.canvas.width,this.ctx.canvas.height),this.stateStack=[],this.pendingClip=null,this.pendingEOFill=!1,this.res=null,this.xobjs=null,this.commonObjs=d,this.objs=Z,this.canvasFactory=t,this.filterFactory=F,this.groupStack=[],this.processingType3=null,this.baseTransform=null,this.baseTransformStack=[],this.groupLevel=0,this.smaskStack=[],this.smaskCounter=0,this.tempSMask=null,this.suspendedCtx=null,this.contentVisible=!0,this.markedContentStack=a||[],this.optionalContentConfig=c,this.cachedCanvases=new Oe(this.canvasFactory),this.cachedPatterns=new Map,this.annotationCanvasMap=W,this.viewportScale=1,this.outputScaleX=1,this.outputScaleY=1,this.pageColors=n,this._cachedScaleForStroking=[-1,0],this._cachedGetSinglePixelWidth=null,this._cachedBitmapsMap=new Map}getObject(l,d=null){return typeof l=="string"?l.startsWith("g_")?this.commonObjs.get(l):this.objs.get(l):d}beginDrawing({transform:l,viewport:d,transparency:Z=!1,background:t=null}){const F=this.ctx.canvas.width,c=this.ctx.canvas.height,a=this.ctx.fillStyle;if(this.ctx.fillStyle=t||"#ffffff",this.ctx.fillRect(0,0,F,c),this.ctx.fillStyle=a,Z){const W=this.cachedCanvases.getCanvas("transparent",F,c);this.compositeCtx=this.ctx,this.transparentCanvas=W.canvas,this.ctx=W.context,this.ctx.save(),this.ctx.transform(...Tl(this.compositeCtx))}this.ctx.save(),sa(this.ctx),l&&(this.ctx.transform(...l),this.outputScaleX=l[0],this.outputScaleY=l[0]),this.ctx.transform(...d.transform),this.viewportScale=d.scale,this.baseTransform=Tl(this.ctx)}executeOperatorList(l,d,Z,t){const F=l.argsArray,c=l.fnArray;let a=d||0;const W=F.length;if(W===a)return a;const n=W-a>zR&&typeof Z=="function",V=n?Date.now()+re:0;let s=0;const i=this.commonObjs,R=this.objs;let h;for(;;){if(t!==void 0&&a===t.nextBreakPoint)return t.breakIt(a,Z),a;if(h=c[a],h!==ZU.dependency)this[h].apply(this,F[a]);else for(const m of F[a]){const M=m.startsWith("g_")?i:R;if(!M.has(m))return M.get(m,Z),a}if(a++,a===W)return a;if(n&&++s>zR){if(Date.now()>V)return Z(),a;s=0}}}endDrawing(){N(this,gF,Cs).call(this),this.cachedCanvases.clear(),this.cachedPatterns.clear();for(const l of this._cachedBitmapsMap.values()){for(const d of l.values())typeof HTMLCanvasElement<"u"&&d instanceof HTMLCanvasElement&&(d.width=d.height=0);l.clear()}this._cachedBitmapsMap.clear(),N(this,gF,xs).call(this)}_scaleImage(l,d){const Z=l.width,t=l.height;let F=Math.max(Math.hypot(d[0],d[1]),1),c=Math.max(Math.hypot(d[2],d[3]),1),a=Z,W=t,n="prescale1",V,s;for(;F>2&&a>1||c>2&&W>1;){let i=a,R=W;F>2&&a>1&&(i=a>=16384?Math.floor(a/2)-1||1:Math.ceil(a/2),F/=a/i),c>2&&W>1&&(R=W>=16384?Math.floor(W/2)-1||1:Math.ceil(W)/2,c/=W/R),V=this.cachedCanvases.getCanvas(n,i,R),s=V.context,s.clearRect(0,0,i,R),s.drawImage(l,0,0,a,W,0,0,i,R),l=V.canvas,a=i,W=R,n=n==="prescale1"?"prescale2":"prescale1"}return{img:l,paintWidth:a,paintHeight:W}}_createMaskCanvas(l){const d=this.ctx,{width:Z,height:t}=l,F=this.current.fillColor,c=this.current.patternFill,a=Tl(d);let W,n,V,s;if((l.bitmap||l.data)&&l.count>1){const k=l.bitmap||l.data.buffer;n=JSON.stringify(c?a:[a.slice(0,4),F]),W=this._cachedBitmapsMap.get(k),W||(W=new Map,this._cachedBitmapsMap.set(k,W));const S=W.get(n);if(S&&!c){const B=Math.round(Math.min(a[0],a[2])+a[4]),y=Math.round(Math.min(a[1],a[3])+a[5]);return{canvas:S,offsetX:B,offsetY:y}}V=S}V||(s=this.cachedCanvases.getCanvas("maskCanvas",Z,t),wR(s.context,l));let i=O.transform(a,[1/Z,0,0,-1/t,0,0]);i=O.transform(i,[1,0,0,1,0,-t]);const[R,h,m,M]=O.getAxialAlignedBoundingBox([0,0,Z,t],i),J=Math.round(m-R)||1,T=Math.round(M-h)||1,G=this.cachedCanvases.getCanvas("fillCanvas",J,T),X=G.context,Y=R,p=h;X.translate(-Y,-p),X.transform(...i),V||(V=this._scaleImage(s.canvas,kU(X)),V=V.img,W&&c&&W.set(n,V)),X.imageSmoothingEnabled=CR(Tl(X),l.interpolate),Va(X,V,0,0,V.width,V.height,0,0,Z,t),X.globalCompositeOperation="source-in";const o=O.transform(kU(X),[1,0,0,1,-Y,-p]);return X.fillStyle=c?F.getPattern(d,this,o,bd.FILL):F,X.fillRect(0,0,Z,t),W&&!c&&(this.cachedCanvases.delete("fillCanvas"),W.set(n,G.canvas)),{canvas:G.canvas,offsetX:Math.round(Y),offsetY:Math.round(p)}}setLineWidth(l){l!==this.current.lineWidth&&(this._cachedScaleForStroking[0]=-1),this.current.lineWidth=l,this.ctx.lineWidth=l}setLineCap(l){this.ctx.lineCap=Ke[l]}setLineJoin(l){this.ctx.lineJoin=ve[l]}setMiterLimit(l){this.ctx.miterLimit=l}setDash(l,d){const Z=this.ctx;Z.setLineDash!==void 0&&(Z.setLineDash(l),Z.lineDashOffset=d)}setRenderingIntent(l){}setFlatness(l){}setGState(l){for(const[d,Z]of l)switch(d){case"LW":this.setLineWidth(Z);break;case"LC":this.setLineCap(Z);break;case"LJ":this.setLineJoin(Z);break;case"ML":this.setMiterLimit(Z);break;case"D":this.setDash(Z[0],Z[1]);break;case"RI":this.setRenderingIntent(Z);break;case"FL":this.setFlatness(Z);break;case"Font":this.setFont(Z[0],Z[1]);break;case"CA":this.current.strokeAlpha=Z;break;case"ca":this.current.fillAlpha=Z,this.ctx.globalAlpha=Z;break;case"BM":this.ctx.globalCompositeOperation=Z;break;case"SMask":this.current.activeSMask=Z?this.tempSMask:null,this.tempSMask=null,this.checkSMaskState();break;case"TR":this.ctx.filter=this.current.transferMaps=this.filterFactory.addFilter(Z);break}}get inSMaskMode(){return!!this.suspendedCtx}checkSMaskState(){const l=this.inSMaskMode;this.current.activeSMask&&!l?this.beginSMaskMode():!this.current.activeSMask&&l&&this.endSMaskMode()}beginSMaskMode(){if(this.inSMaskMode)throw new Error("beginSMaskMode called while already in smask mode");const l=this.ctx.canvas.width,d=this.ctx.canvas.height,Z="smaskGroupAt"+this.groupLevel,t=this.cachedCanvases.getCanvas(Z,l,d);this.suspendedCtx=this.ctx,this.ctx=t.context;const F=this.ctx;F.setTransform(...Tl(this.suspendedCtx)),lc(this.suspendedCtx,F),je(F,this.suspendedCtx),this.setGState([["BM","source-over"],["ca",1],["CA",1]])}endSMaskMode(){if(!this.inSMaskMode)throw new Error("endSMaskMode called while not in smask mode");this.ctx._removeMirroring(),lc(this.ctx,this.suspendedCtx),this.ctx=this.suspendedCtx,this.suspendedCtx=null}compose(l){if(!this.current.activeSMask)return;l?(l[0]=Math.floor(l[0]),l[1]=Math.floor(l[1]),l[2]=Math.ceil(l[2]),l[3]=Math.ceil(l[3])):l=[0,0,this.ctx.canvas.width,this.ctx.canvas.height];const d=this.current.activeSMask,Z=this.suspendedCtx;this.composeSMask(Z,d,this.ctx,l),this.ctx.save(),this.ctx.setTransform(1,0,0,1,0,0),this.ctx.clearRect(0,0,this.ctx.canvas.width,this.ctx.canvas.height),this.ctx.restore()}composeSMask(l,d,Z,t){const F=t[0],c=t[1],a=t[2]-F,W=t[3]-c;a===0||W===0||(this.genericComposeSMask(d.context,Z,a,W,d.subtype,d.backdrop,d.transferMap,F,c,d.offsetX,d.offsetY),l.save(),l.globalAlpha=1,l.globalCompositeOperation="source-over",l.setTransform(1,0,0,1,0,0),l.drawImage(Z.canvas,0,0),l.restore())}genericComposeSMask(l,d,Z,t,F,c,a,W,n,V,s){let i=l.canvas,R=W-V,h=n-s;if(c){if(R<0||h<0||R+Z>i.width||h+t>i.height){const M=this.cachedCanvases.getCanvas("maskExtension",Z,t),J=M.context;J.drawImage(i,-R,-h),c.some(T=>T!==0)&&(J.globalCompositeOperation="destination-atop",J.fillStyle=O.makeHexColor(...c),J.fillRect(0,0,Z,t),J.globalCompositeOperation="source-over"),i=M.canvas,R=h=0}else if(c.some(M=>M!==0)){l.save(),l.globalAlpha=1,l.setTransform(1,0,0,1,0,0);const M=new Path2D;M.rect(R,h,Z,t),l.clip(M),l.globalCompositeOperation="destination-atop",l.fillStyle=O.makeHexColor(...c),l.fillRect(R,h,Z,t),l.restore()}}d.save(),d.globalAlpha=1,d.setTransform(1,0,0,1,0,0),F==="Alpha"&&a?d.filter=this.filterFactory.addAlphaFilter(a):F==="Luminosity"&&(d.filter=this.filterFactory.addLuminosityFilter(a));const m=new Path2D;m.rect(W,n,Z,t),d.clip(m),d.globalCompositeOperation="destination-in",d.drawImage(i,R,h,Z,t,W,n,Z,t),d.restore()}save(){this.inSMaskMode?(lc(this.ctx,this.suspendedCtx),this.suspendedCtx.save()):this.ctx.save();const l=this.current;this.stateStack.push(l),this.current=l.clone()}restore(){this.stateStack.length===0&&this.inSMaskMode&&this.endSMaskMode(),this.stateStack.length!==0&&(this.current=this.stateStack.pop(),this.inSMaskMode?(this.suspendedCtx.restore(),lc(this.suspendedCtx,this.ctx)):this.ctx.restore(),this.checkSMaskState(),this.pendingClip=null,this._cachedScaleForStroking[0]=-1,this._cachedGetSinglePixelWidth=null)}transform(l,d,Z,t,F,c){this.ctx.transform(l,d,Z,t,F,c),this._cachedScaleForStroking[0]=-1,this._cachedGetSinglePixelWidth=null}constructPath(l,d,Z){const t=this.ctx,F=this.current;let c=F.x,a=F.y,W,n;const V=Tl(t),s=V[0]===0&&V[3]===0||V[1]===0&&V[2]===0,i=s?Z.slice(0):null;for(let R=0,h=0,m=l.length;R<m;R++)switch(l[R]|0){case ZU.rectangle:c=d[h++],a=d[h++];const M=d[h++],J=d[h++],T=c+M,G=a+J;t.moveTo(c,a),M===0||J===0?t.lineTo(T,G):(t.lineTo(T,a),t.lineTo(T,G),t.lineTo(c,G)),s||F.updateRectMinMax(V,[c,a,T,G]),t.closePath();break;case ZU.moveTo:c=d[h++],a=d[h++],t.moveTo(c,a),s||F.updatePathMinMax(V,c,a);break;case ZU.lineTo:c=d[h++],a=d[h++],t.lineTo(c,a),s||F.updatePathMinMax(V,c,a);break;case ZU.curveTo:W=c,n=a,c=d[h+4],a=d[h+5],t.bezierCurveTo(d[h],d[h+1],d[h+2],d[h+3],c,a),F.updateCurvePathMinMax(V,W,n,d[h],d[h+1],d[h+2],d[h+3],c,a,i),h+=6;break;case ZU.curveTo2:W=c,n=a,t.bezierCurveTo(c,a,d[h],d[h+1],d[h+2],d[h+3]),F.updateCurvePathMinMax(V,W,n,c,a,d[h],d[h+1],d[h+2],d[h+3],i),c=d[h+2],a=d[h+3],h+=4;break;case ZU.curveTo3:W=c,n=a,c=d[h+2],a=d[h+3],t.bezierCurveTo(d[h],d[h+1],c,a,c,a),F.updateCurvePathMinMax(V,W,n,d[h],d[h+1],c,a,c,a,i),h+=4;break;case ZU.closePath:t.closePath();break}s&&F.updateScalingPathMinMax(V,i),F.setCurrentPoint(c,a)}closePath(){this.ctx.closePath()}stroke(l=!0){const d=this.ctx,Z=this.current.strokeColor;d.globalAlpha=this.current.strokeAlpha,this.contentVisible&&(typeof Z=="object"&&Z!=null&&Z.getPattern?(d.save(),d.strokeStyle=Z.getPattern(d,this,kU(d),bd.STROKE),this.rescaleAndStroke(!1),d.restore()):this.rescaleAndStroke(!0)),l&&this.consumePath(this.current.getClippedPathBoundingBox()),d.globalAlpha=this.current.fillAlpha}closeStroke(){this.closePath(),this.stroke()}fill(l=!0){const d=this.ctx,Z=this.current.fillColor,t=this.current.patternFill;let F=!1;t&&(d.save(),d.fillStyle=Z.getPattern(d,this,kU(d),bd.FILL),F=!0);const c=this.current.getClippedPathBoundingBox();this.contentVisible&&c!==null&&(this.pendingEOFill?(d.fill("evenodd"),this.pendingEOFill=!1):d.fill()),F&&d.restore(),l&&this.consumePath(c)}eoFill(){this.pendingEOFill=!0,this.fill()}fillStroke(){this.fill(!1),this.stroke(!1),this.consumePath()}eoFillStroke(){this.pendingEOFill=!0,this.fillStroke()}closeFillStroke(){this.closePath(),this.fillStroke()}closeEOFillStroke(){this.pendingEOFill=!0,this.closePath(),this.fillStroke()}endPath(){this.consumePath()}clip(){this.pendingClip=He}eoClip(){this.pendingClip=xR}beginText(){this.current.textMatrix=Wh,this.current.textMatrixScale=1,this.current.x=this.current.lineX=0,this.current.y=this.current.lineY=0}endText(){const l=this.pendingTextPaths,d=this.ctx;if(l===void 0){d.beginPath();return}d.save(),d.beginPath();for(const Z of l)d.setTransform(...Z.transform),d.translate(Z.x,Z.y),Z.addToPath(d,Z.fontSize);d.restore(),d.clip(),d.beginPath(),delete this.pendingTextPaths}setCharSpacing(l){this.current.charSpacing=l}setWordSpacing(l){this.current.wordSpacing=l}setHScale(l){this.current.textHScale=l/100}setLeading(l){this.current.leading=-l}setFont(l,d){var Z;const t=this.commonObjs.get(l),F=this.current;if(!t)throw new Error(`Can't find font for ${l}`);if(F.fontMatrix=t.fontMatrix||ms,(F.fontMatrix[0]===0||F.fontMatrix[3]===0)&&dl("Invalid font matrix for font "+l),d<0?(d=-d,F.fontDirection=-1):F.fontDirection=1,this.current.font=t,this.current.fontSize=d,t.isType3Font)return;const c=t.loadedName||"sans-serif",a=((Z=t.systemFontInfo)==null?void 0:Z.css)||`"${c}", ${t.fallbackName}`;let W="normal";t.black?W="900":t.bold&&(W="bold");const n=t.italic?"italic":"normal";let V=d;d<kR?V=kR:d>LR&&(V=LR),this.current.fontSizeScale=d/V,this.ctx.font=`${n} ${W} ${V}px ${a}`}setTextRenderingMode(l){this.current.textRenderingMode=l}setTextRise(l){this.current.textRise=l}moveText(l,d){this.current.x=this.current.lineX+=l,this.current.y=this.current.lineY+=d}setLeadingMoveText(l,d){this.setLeading(-d),this.moveText(l,d)}setTextMatrix(l,d,Z,t,F,c){this.current.textMatrix=[l,d,Z,t,F,c],this.current.textMatrixScale=Math.hypot(l,d),this.current.x=this.current.lineX=0,this.current.y=this.current.lineY=0}nextLine(){this.moveText(0,this.current.leading)}paintChar(l,d,Z,t){const F=this.ctx,c=this.current,a=c.font,W=c.textRenderingMode,n=c.fontSize/c.fontSizeScale,V=W&cd.FILL_STROKE_MASK,s=!!(W&cd.ADD_TO_PATH_FLAG),i=c.patternFill&&!a.missingFile;let R;(a.disableFontFace||s||i)&&(R=a.getPathGenerator(this.commonObjs,l)),a.disableFontFace||i?(F.save(),F.translate(d,Z),F.beginPath(),R(F,n),t&&F.setTransform(...t),(V===cd.FILL||V===cd.FILL_STROKE)&&F.fill(),(V===cd.STROKE||V===cd.FILL_STROKE)&&F.stroke(),F.restore()):((V===cd.FILL||V===cd.FILL_STROKE)&&F.fillText(l,d,Z),(V===cd.STROKE||V===cd.FILL_STROKE)&&F.strokeText(l,d,Z)),s&&(this.pendingTextPaths||(this.pendingTextPaths=[])).push({transform:Tl(F),x:d,y:Z,fontSize:n,addToPath:R})}get isFontSubpixelAAEnabled(){const{context:l}=this.cachedCanvases.getCanvas("isFontSubpixelAAEnabled",10,10);l.scale(1.5,1),l.fillText("I",0,10);const d=l.getImageData(0,0,10,10).data;let Z=!1;for(let t=3;t<d.length;t+=4)if(d[t]>0&&d[t]<255){Z=!0;break}return Zl(this,"isFontSubpixelAAEnabled",Z)}showText(l){const d=this.current,Z=d.font;if(Z.isType3Font)return this.showType3Text(l);const t=d.fontSize;if(t===0)return;const F=this.ctx,c=d.fontSizeScale,a=d.charSpacing,W=d.wordSpacing,n=d.fontDirection,V=d.textHScale*n,s=l.length,i=Z.vertical,R=i?1:-1,h=Z.defaultVMetrics,m=t*d.fontMatrix[0],M=d.textRenderingMode===cd.FILL&&!Z.disableFontFace&&!d.patternFill;F.save(),F.transform(...d.textMatrix),F.translate(d.x,d.y+d.textRise),n>0?F.scale(V,-1):F.scale(V,1);let J;if(d.patternFill){F.save();const p=d.fillColor.getPattern(F,this,kU(F),bd.FILL);J=Tl(F),F.restore(),F.fillStyle=p}let T=d.lineWidth;const G=d.textMatrixScale;if(G===0||T===0){const p=d.textRenderingMode&cd.FILL_STROKE_MASK;(p===cd.STROKE||p===cd.FILL_STROKE)&&(T=this.getSinglePixelWidth())}else T/=G;if(c!==1&&(F.scale(c,c),T/=c),F.lineWidth=T,Z.isInvalidPDFjsFont){const p=[];let o=0;for(const k of l)p.push(k.unicode),o+=k.width;F.fillText(p.join(""),0,0),d.x+=o*m*V,F.restore(),this.compose();return}let X=0,Y;for(Y=0;Y<s;++Y){const p=l[Y];if(typeof p=="number"){X+=R*p*t/1e3;continue}let o=!1;const k=(p.isSpace?W:0)+a,S=p.fontChar,B=p.accent;let y,D,E=p.width;if(i){const w=p.vmetric||h,u=-(p.vmetric?w[1]:E*.5)*m,C=w[2]*m;E=w?-w[0]:E,y=u/c,D=(X+C)/c}else y=X/c,D=0;if(Z.remeasure&&E>0){const w=F.measureText(S).width*1e3/t*c;if(E<w&&this.isFontSubpixelAAEnabled){const u=E/w;o=!0,F.save(),F.scale(u,1),y/=u}else E!==w&&(y+=(E-w)/2e3*t/c)}if(this.contentVisible&&(p.isInFont||Z.missingFile)){if(M&&!B)F.fillText(S,y,D);else if(this.paintChar(S,y,D,J),B){const w=y+t*B.offset.x/c,u=D-t*B.offset.y/c;this.paintChar(B.fontChar,w,u,J)}}const r=i?E*m-k*n:E*m+k*n;X+=r,o&&F.restore()}i?d.y-=X:d.x+=X*V,F.restore(),this.compose()}showType3Text(l){const d=this.ctx,Z=this.current,t=Z.font,F=Z.fontSize,c=Z.fontDirection,a=t.vertical?1:-1,W=Z.charSpacing,n=Z.wordSpacing,V=Z.textHScale*c,s=Z.fontMatrix||ms,i=l.length,R=Z.textRenderingMode===cd.INVISIBLE;let h,m,M,J;if(!(R||F===0)){for(this._cachedScaleForStroking[0]=-1,this._cachedGetSinglePixelWidth=null,d.save(),d.transform(...Z.textMatrix),d.translate(Z.x,Z.y),d.scale(V,c),h=0;h<i;++h){if(m=l[h],typeof m=="number"){J=a*m*F/1e3,this.ctx.translate(J,0),Z.x+=J*V;continue}const T=(m.isSpace?n:0)+W,G=t.charProcOperatorList[m.operatorListId];if(!G){dl(`Type3 character "${m.operatorListId}" is not available.`);continue}this.contentVisible&&(this.processingType3=m,this.save(),d.scale(F,F),d.transform(...s),this.executeOperatorList(G),this.restore()),M=O.applyTransform([m.width,0],s)[0]*F+T,d.translate(M,0),Z.x+=M*V}d.restore(),this.processingType3=null}}setCharWidth(l,d){}setCharWidthAndBounds(l,d,Z,t,F,c){this.ctx.rect(Z,t,F-Z,c-t),this.ctx.clip(),this.endPath()}getColorN_Pattern(l){let d;if(l[0]==="TilingPattern"){const Z=l[1],t=this.baseTransform||Tl(this.ctx),F={createCanvasGraphics:c=>new Ch(c,this.commonObjs,this.objs,this.canvasFactory,this.filterFactory,{optionalContentConfig:this.optionalContentConfig,markedContentStack:this.markedContentStack})};d=new Ce(l,Z,this.ctx,F,t)}else d=this._getPattern(l[1],l[2]);return d}setStrokeColorN(){this.current.strokeColor=this.getColorN_Pattern(arguments)}setFillColorN(){this.current.fillColor=this.getColorN_Pattern(arguments),this.current.patternFill=!0}setStrokeRGBColor(l,d,Z){this.ctx.strokeStyle=this.current.strokeColor=O.makeHexColor(l,d,Z)}setStrokeTransparent(){this.ctx.strokeStyle=this.current.strokeColor="transparent"}setFillRGBColor(l,d,Z){this.ctx.fillStyle=this.current.fillColor=O.makeHexColor(l,d,Z),this.current.patternFill=!1}setFillTransparent(){this.ctx.fillStyle=this.current.fillColor="transparent",this.current.patternFill=!1}_getPattern(l,d=null){let Z;return this.cachedPatterns.has(l)?Z=this.cachedPatterns.get(l):(Z=we(this.getObject(l)),this.cachedPatterns.set(l,Z)),d&&(Z.matrix=d),Z}shadingFill(l){if(!this.contentVisible)return;const d=this.ctx;this.save();const Z=this._getPattern(l);d.fillStyle=Z.getPattern(d,this,kU(d),bd.SHADING);const t=kU(d);if(t){const{width:F,height:c}=d.canvas,[a,W,n,V]=O.getAxialAlignedBoundingBox([0,0,F,c],t);this.ctx.fillRect(a,W,n-a,V-W)}else this.ctx.fillRect(-1e10,-1e10,2e10,2e10);this.compose(this.current.getClippedPathBoundingBox()),this.restore()}beginInlineImage(){zl("Should not call beginInlineImage")}beginImageData(){zl("Should not call beginImageData")}paintFormXObjectBegin(l,d){if(this.contentVisible&&(this.save(),this.baseTransformStack.push(this.baseTransform),l&&this.transform(...l),this.baseTransform=Tl(this.ctx),d)){const Z=d[2]-d[0],t=d[3]-d[1];this.ctx.rect(d[0],d[1],Z,t),this.current.updateRectMinMax(Tl(this.ctx),d),this.clip(),this.endPath()}}paintFormXObjectEnd(){this.contentVisible&&(this.restore(),this.baseTransform=this.baseTransformStack.pop())}beginGroup(l){if(!this.contentVisible)return;this.save(),this.inSMaskMode&&(this.endSMaskMode(),this.current.activeSMask=null);const d=this.ctx;l.isolated||tV("TODO: Support non-isolated groups."),l.knockout&&dl("Knockout groups not supported.");const Z=Tl(d);if(l.matrix&&d.transform(...l.matrix),!l.bbox)throw new Error("Bounding box is required.");let t=O.getAxialAlignedBoundingBox(l.bbox,Tl(d));const F=[0,0,d.canvas.width,d.canvas.height];t=O.intersect(t,F)||[0,0,0,0];const c=Math.floor(t[0]),a=Math.floor(t[1]),W=Math.max(Math.ceil(t[2])-c,1),n=Math.max(Math.ceil(t[3])-a,1);this.current.startNewPathAndClipBox([0,0,W,n]);let V="groupAt"+this.groupLevel;l.smask&&(V+="_smask_"+this.smaskCounter++%2);const s=this.cachedCanvases.getCanvas(V,W,n),i=s.context;i.translate(-c,-a),i.transform(...Z),l.smask?this.smaskStack.push({canvas:s.canvas,context:i,offsetX:c,offsetY:a,subtype:l.smask.subtype,backdrop:l.smask.backdrop,transferMap:l.smask.transferMap||null,startTransformInverse:null}):(d.setTransform(1,0,0,1,0,0),d.translate(c,a),d.save()),lc(d,i),this.ctx=i,this.setGState([["BM","source-over"],["ca",1],["CA",1]]),this.groupStack.push(d),this.groupLevel++}endGroup(l){if(!this.contentVisible)return;this.groupLevel--;const d=this.ctx,Z=this.groupStack.pop();if(this.ctx=Z,this.ctx.imageSmoothingEnabled=!1,l.smask)this.tempSMask=this.smaskStack.pop(),this.restore();else{this.ctx.restore();const t=Tl(this.ctx);this.restore(),this.ctx.save(),this.ctx.setTransform(...t);const F=O.getAxialAlignedBoundingBox([0,0,d.canvas.width,d.canvas.height],t);this.ctx.drawImage(d.canvas,0,0),this.ctx.restore(),this.compose(F)}}beginAnnotation(l,d,Z,t,F){if(N(this,gF,Cs).call(this),sa(this.ctx),this.ctx.save(),this.save(),this.baseTransform&&this.ctx.setTransform(...this.baseTransform),d){const c=d[2]-d[0],a=d[3]-d[1];if(F&&this.annotationCanvasMap){Z=Z.slice(),Z[4]-=d[0],Z[5]-=d[1],d=d.slice(),d[0]=d[1]=0,d[2]=c,d[3]=a;const[W,n]=O.singularValueDecompose2dScale(Tl(this.ctx)),{viewportScale:V}=this,s=Math.ceil(c*this.outputScaleX*V),i=Math.ceil(a*this.outputScaleY*V);this.annotationCanvas=this.canvasFactory.create(s,i);const{canvas:R,context:h}=this.annotationCanvas;this.annotationCanvasMap.set(l,R),this.annotationCanvas.savedCtx=this.ctx,this.ctx=h,this.ctx.save(),this.ctx.setTransform(W,0,0,-n,0,a*n),sa(this.ctx)}else sa(this.ctx),this.endPath(),this.ctx.rect(d[0],d[1],c,a),this.ctx.clip(),this.ctx.beginPath()}this.current=new DR(this.ctx.canvas.width,this.ctx.canvas.height),this.transform(...Z),this.transform(...t)}endAnnotation(){this.annotationCanvas&&(this.ctx.restore(),N(this,gF,xs).call(this),this.ctx=this.annotationCanvas.savedCtx,delete this.annotationCanvas.savedCtx,delete this.annotationCanvas)}paintImageMaskXObject(l){if(!this.contentVisible)return;const d=l.count;l=this.getObject(l.data,l),l.count=d;const Z=this.ctx,t=this.processingType3;if(t&&(t.compiled===void 0&&(t.compiled=ge(l)),t.compiled)){t.compiled(Z);return}const F=this._createMaskCanvas(l),c=F.canvas;Z.save(),Z.setTransform(1,0,0,1,0,0),Z.drawImage(c,F.offsetX,F.offsetY),Z.restore(),this.compose()}paintImageMaskXObjectRepeat(l,d,Z=0,t=0,F,c){if(!this.contentVisible)return;l=this.getObject(l.data,l);const a=this.ctx;a.save();const W=Tl(a);a.transform(d,Z,t,F,0,0);const n=this._createMaskCanvas(l);a.setTransform(1,0,0,1,n.offsetX-W[4],n.offsetY-W[5]);for(let V=0,s=c.length;V<s;V+=2){const i=O.transform(W,[d,Z,t,F,c[V],c[V+1]]),[R,h]=O.applyTransform([0,0],i);a.drawImage(n.canvas,R,h)}a.restore(),this.compose()}paintImageMaskXObjectGroup(l){if(!this.contentVisible)return;const d=this.ctx,Z=this.current.fillColor,t=this.current.patternFill;for(const F of l){const{data:c,width:a,height:W,transform:n}=F,V=this.cachedCanvases.getCanvas("maskCanvas",a,W),s=V.context;s.save();const i=this.getObject(c,F);wR(s,i),s.globalCompositeOperation="source-in",s.fillStyle=t?Z.getPattern(s,this,kU(d),bd.FILL):Z,s.fillRect(0,0,a,W),s.restore(),d.save(),d.transform(...n),d.scale(1,-1),Va(d,V.canvas,0,0,a,W,0,-1,1,1),d.restore()}this.compose()}paintImageXObject(l){if(!this.contentVisible)return;const d=this.getObject(l);if(!d){dl("Dependent image isn't ready yet");return}this.paintInlineImageXObject(d)}paintImageXObjectRepeat(l,d,Z,t){if(!this.contentVisible)return;const F=this.getObject(l);if(!F){dl("Dependent image isn't ready yet");return}const c=F.width,a=F.height,W=[];for(let n=0,V=t.length;n<V;n+=2)W.push({transform:[d,0,0,Z,t[n],t[n+1]],x:0,y:0,w:c,h:a});this.paintInlineImageXObjectGroup(F,W)}applyTransferMapsToCanvas(l){return this.current.transferMaps!=="none"&&(l.filter=this.current.transferMaps,l.drawImage(l.canvas,0,0),l.filter="none"),l.canvas}applyTransferMapsToBitmap(l){if(this.current.transferMaps==="none")return l.bitmap;const{bitmap:d,width:Z,height:t}=l,F=this.cachedCanvases.getCanvas("inlineImage",Z,t),c=F.context;return c.filter=this.current.transferMaps,c.drawImage(d,0,0),c.filter="none",F.canvas}paintInlineImageXObject(l){if(!this.contentVisible)return;const d=l.width,Z=l.height,t=this.ctx;if(this.save(),!Vd){const{filter:a}=t;a!=="none"&&a!==""&&(t.filter="none")}t.scale(1/d,-1/Z);let F;if(l.bitmap)F=this.applyTransferMapsToBitmap(l);else if(typeof HTMLElement=="function"&&l instanceof HTMLElement||!l.data)F=l;else{const a=this.cachedCanvases.getCanvas("inlineImage",d,Z).context;ER(a,l),F=this.applyTransferMapsToCanvas(a)}const c=this._scaleImage(F,kU(t));t.imageSmoothingEnabled=CR(Tl(t),l.interpolate),Va(t,c.img,0,0,c.paintWidth,c.paintHeight,0,-Z,d,Z),this.compose(),this.restore()}paintInlineImageXObjectGroup(l,d){if(!this.contentVisible)return;const Z=this.ctx;let t;if(l.bitmap)t=l.bitmap;else{const F=l.width,c=l.height,a=this.cachedCanvases.getCanvas("inlineImage",F,c).context;ER(a,l),t=this.applyTransferMapsToCanvas(a)}for(const F of d)Z.save(),Z.transform(...F.transform),Z.scale(1,-1),Va(Z,t,F.x,F.y,F.w,F.h,0,-1,1,1),Z.restore();this.compose()}paintSolidColorImageMask(){this.contentVisible&&(this.ctx.fillRect(0,0,1,1),this.compose())}markPoint(l){}markPointProps(l,d){}beginMarkedContent(l){this.markedContentStack.push({visible:!0})}beginMarkedContentProps(l,d){l==="OC"?this.markedContentStack.push({visible:this.optionalContentConfig.isVisible(d)}):this.markedContentStack.push({visible:!0}),this.contentVisible=this.isContentVisible()}endMarkedContent(){this.markedContentStack.pop(),this.contentVisible=this.isContentVisible()}beginCompat(){}endCompat(){}consumePath(l){const d=this.current.isEmptyClip();this.pendingClip&&this.current.updateClipFromPath(),this.pendingClip||this.compose(l);const Z=this.ctx;this.pendingClip&&(d||(this.pendingClip===xR?Z.clip("evenodd"):Z.clip()),this.pendingClip=null),this.current.startNewPathAndClipBox(this.current.clipBox),Z.beginPath()}getSinglePixelWidth(){if(!this._cachedGetSinglePixelWidth){const l=Tl(this.ctx);if(l[1]===0&&l[2]===0)this._cachedGetSinglePixelWidth=1/Math.min(Math.abs(l[0]),Math.abs(l[3]));else{const d=Math.abs(l[0]*l[3]-l[2]*l[1]),Z=Math.hypot(l[0],l[2]),t=Math.hypot(l[1],l[3]);this._cachedGetSinglePixelWidth=Math.max(Z,t)/d}}return this._cachedGetSinglePixelWidth}getScaleForStroking(){if(this._cachedScaleForStroking[0]===-1){const{lineWidth:l}=this.current,{a:d,b:Z,c:t,d:F}=this.ctx.getTransform();let c,a;if(Z===0&&t===0){const W=Math.abs(d),n=Math.abs(F);if(W===n)if(l===0)c=a=1/W;else{const V=W*l;c=a=V<1?1/V:1}else if(l===0)c=1/W,a=1/n;else{const V=W*l,s=n*l;c=V<1?1/V:1,a=s<1?1/s:1}}else{const W=Math.abs(d*F-Z*t),n=Math.hypot(d,Z),V=Math.hypot(t,F);if(l===0)c=V/W,a=n/W;else{const s=l*W;c=V>s?V/s:1,a=n>s?n/s:1}}this._cachedScaleForStroking[0]=c,this._cachedScaleForStroking[1]=a}return this._cachedScaleForStroking}rescaleAndStroke(l){const{ctx:d}=this,{lineWidth:Z}=this.current,[t,F]=this.getScaleForStroking();if(d.lineWidth=Z||1,t===1&&F===1){d.stroke();return}const c=d.getLineDash();if(l&&d.save(),d.scale(t,F),c.length>0){const a=Math.max(t,F);d.setLineDash(c.map(W=>W/a)),d.lineDashOffset/=a}d.stroke(),l&&d.restore()}isContentVisible(){for(let l=this.markedContentStack.length-1;l>=0;l--)if(!this.markedContentStack[l].visible)return!1;return!0}};gF=new WeakSet,Cs=function(){for(;this.stateStack.length||this.inSMaskMode;)this.restore();this.current.activeSMask=null,this.ctx.restore(),this.transparentCanvas&&(this.ctx=this.compositeCtx,this.ctx.save(),this.ctx.setTransform(1,0,0,1,0,0),this.ctx.drawImage(this.transparentCanvas,0,0),this.ctx.restore(),this.transparentCanvas=null)},xs=function(){if(this.pageColors){const U=this.filterFactory.addHCMFilter(this.pageColors.foreground,this.pageColors.background);if(U!=="none"){const l=this.ctx.filter;this.ctx.filter=U,this.ctx.drawImage(this.ctx.canvas,0,0),this.ctx.filter=l}}};let nW=Pe;for(const U in ZU)nW.prototype[U]!==void 0&&(nW.prototype[ZU[U]]=nW.prototype[U]);var ia,Ra,Na;let N0=(ia=class{static get workerPort(){return Q(this,Ra)}static set workerPort(U){if(!(typeof Worker<"u"&&U instanceof Worker)&&U!==null)throw new Error("Invalid `workerPort` type.");b(this,Ra,U)}static get workerSrc(){return Q(this,Na)}static set workerSrc(U){if(typeof U!="string")throw new Error("Invalid `workerSrc` type.");b(this,Na,U)}},Ra=new WeakMap,Na=new WeakMap,e(ia,Ra,null),e(ia,Na,""),ia);const ha={UNKNOWN:0,DATA:1,ERROR:2},yl={UNKNOWN:0,CANCEL:1,CANCEL_COMPLETE:2,CLOSE:3,ENQUEUE:4,ERROR:5,PULL:6,PULL_COMPLETE:7,START_COMPLETE:8};function Bd(U){switch(U instanceof Error||typeof U=="object"&&U!==null||zl('wrapReason: Expected "reason" to be a (possibly cloned) Error.'),U.name){case"AbortException":return new nF(U.message);case"MissingPDFException":return new WF(U.message);case"PasswordException":return new Ms(U.message,U.code);case"UnexpectedResponseException":return new FV(U.message,U.status);case"UnknownErrorException":return new Js(U.message,U.details);default:return new Js(U.message,U.toString())}}var lF,xh,rh,ba;class Ic{constructor(l,d,Z){e(this,lF),this.sourceName=l,this.targetName=d,this.comObj=Z,this.callbackId=1,this.streamId=1,this.streamSinks=Object.create(null),this.streamControllers=Object.create(null),this.callbackCapabilities=Object.create(null),this.actionHandler=Object.create(null),this._onComObjOnMessage=t=>{const F=t.data;if(F.targetName!==this.sourceName)return;if(F.stream){N(this,lF,rh).call(this,F);return}if(F.callback){const a=F.callbackId,W=this.callbackCapabilities[a];if(!W)throw new Error(`Cannot resolve callback ${a}`);if(delete this.callbackCapabilities[a],F.callback===ha.DATA)W.resolve(F.data);else if(F.callback===ha.ERROR)W.reject(Bd(F.reason));else throw new Error("Unexpected callback case");return}const c=this.actionHandler[F.action];if(!c)throw new Error(`Unknown action from worker: ${F.action}`);if(F.callbackId){const a=this.sourceName,W=F.sourceName;new Promise(function(n){n(c(F.data))}).then(function(n){Z.postMessage({sourceName:a,targetName:W,callback:ha.DATA,callbackId:F.callbackId,data:n})},function(n){Z.postMessage({sourceName:a,targetName:W,callback:ha.ERROR,callbackId:F.callbackId,reason:Bd(n)})});return}if(F.streamId){N(this,lF,xh).call(this,F);return}c(F.data)},Z.addEventListener("message",this._onComObjOnMessage)}on(l,d){const Z=this.actionHandler;if(Z[l])throw new Error(`There is already an actionName called "${l}"`);Z[l]=d}send(l,d,Z){this.comObj.postMessage({sourceName:this.sourceName,targetName:this.targetName,action:l,data:d},Z)}sendWithPromise(l,d,Z){const t=this.callbackId++,F=Promise.withResolvers();this.callbackCapabilities[t]=F;try{this.comObj.postMessage({sourceName:this.sourceName,targetName:this.targetName,action:l,callbackId:t,data:d},Z)}catch(c){F.reject(c)}return F.promise}sendWithStream(l,d,Z,t){const F=this.streamId++,c=this.sourceName,a=this.targetName,W=this.comObj;return new ReadableStream({start:n=>{const V=Promise.withResolvers();return this.streamControllers[F]={controller:n,startCall:V,pullCall:null,cancelCall:null,isClosed:!1},W.postMessage({sourceName:c,targetName:a,action:l,streamId:F,data:d,desiredSize:n.desiredSize},t),V.promise},pull:n=>{const V=Promise.withResolvers();return this.streamControllers[F].pullCall=V,W.postMessage({sourceName:c,targetName:a,stream:yl.PULL,streamId:F,desiredSize:n.desiredSize}),V.promise},cancel:n=>{jl(n instanceof Error,"cancel must have a valid reason");const V=Promise.withResolvers();return this.streamControllers[F].cancelCall=V,this.streamControllers[F].isClosed=!0,W.postMessage({sourceName:c,targetName:a,stream:yl.CANCEL,streamId:F,reason:Bd(n)}),V.promise}},Z)}destroy(){this.comObj.removeEventListener("message",this._onComObjOnMessage)}}lF=new WeakSet,xh=function(U){const l=U.streamId,d=this.sourceName,Z=U.sourceName,t=this.comObj,F=this,c=this.actionHandler[U.action],a={enqueue(W,n=1,V){if(this.isCancelled)return;const s=this.desiredSize;this.desiredSize-=n,s>0&&this.desiredSize<=0&&(this.sinkCapability=Promise.withResolvers(),this.ready=this.sinkCapability.promise),t.postMessage({sourceName:d,targetName:Z,stream:yl.ENQUEUE,streamId:l,chunk:W},V)},close(){this.isCancelled||(this.isCancelled=!0,t.postMessage({sourceName:d,targetName:Z,stream:yl.CLOSE,streamId:l}),delete F.streamSinks[l])},error(W){jl(W instanceof Error,"error must have a valid reason"),!this.isCancelled&&(this.isCancelled=!0,t.postMessage({sourceName:d,targetName:Z,stream:yl.ERROR,streamId:l,reason:Bd(W)}))},sinkCapability:Promise.withResolvers(),onPull:null,onCancel:null,isCancelled:!1,desiredSize:U.desiredSize,ready:null};a.sinkCapability.resolve(),a.ready=a.sinkCapability.promise,this.streamSinks[l]=a,new Promise(function(W){W(c(U.data,a))}).then(function(){t.postMessage({sourceName:d,targetName:Z,stream:yl.START_COMPLETE,streamId:l,success:!0})},function(W){t.postMessage({sourceName:d,targetName:Z,stream:yl.START_COMPLETE,streamId:l,reason:Bd(W)})})},rh=function(U){const l=U.streamId,d=this.sourceName,Z=U.sourceName,t=this.comObj,F=this.streamControllers[l],c=this.streamSinks[l];switch(U.stream){case yl.START_COMPLETE:U.success?F.startCall.resolve():F.startCall.reject(Bd(U.reason));break;case yl.PULL_COMPLETE:U.success?F.pullCall.resolve():F.pullCall.reject(Bd(U.reason));break;case yl.PULL:if(!c){t.postMessage({sourceName:d,targetName:Z,stream:yl.PULL_COMPLETE,streamId:l,success:!0});break}c.desiredSize<=0&&U.desiredSize>0&&c.sinkCapability.resolve(),c.desiredSize=U.desiredSize,new Promise(function(a){var W;a((W=c.onPull)==null?void 0:W.call(c))}).then(function(){t.postMessage({sourceName:d,targetName:Z,stream:yl.PULL_COMPLETE,streamId:l,success:!0})},function(a){t.postMessage({sourceName:d,targetName:Z,stream:yl.PULL_COMPLETE,streamId:l,reason:Bd(a)})});break;case yl.ENQUEUE:if(jl(F,"enqueue should have stream controller"),F.isClosed)break;F.controller.enqueue(U.chunk);break;case yl.CLOSE:if(jl(F,"close should have stream controller"),F.isClosed)break;F.isClosed=!0,F.controller.close(),N(this,lF,ba).call(this,F,l);break;case yl.ERROR:jl(F,"error should have stream controller"),F.controller.error(Bd(U.reason)),N(this,lF,ba).call(this,F,l);break;case yl.CANCEL_COMPLETE:U.success?F.cancelCall.resolve():F.cancelCall.reject(Bd(U.reason)),N(this,lF,ba).call(this,F,l);break;case yl.CANCEL:if(!c)break;new Promise(function(a){var W;a((W=c.onCancel)==null?void 0:W.call(c,Bd(U.reason)))}).then(function(){t.postMessage({sourceName:d,targetName:Z,stream:yl.CANCEL_COMPLETE,streamId:l,success:!0})},function(a){t.postMessage({sourceName:d,targetName:Z,stream:yl.CANCEL_COMPLETE,streamId:l,reason:Bd(a)})}),c.sinkCapability.reject(Bd(U.reason)),c.isCancelled=!0,delete this.streamSinks[l];break;default:throw new Error("Unexpected stream case")}},ba=function(U,l){return z(this,null,function*(){var d,Z,t;yield Promise.allSettled([(d=U.startCall)==null?void 0:d.promise,(Z=U.pullCall)==null?void 0:Z.promise,(t=U.cancelCall)==null?void 0:t.promise]),delete this.streamControllers[l]})};var KF,VW;class fe{constructor({parsedData:l,rawData:d}){e(this,KF),e(this,VW),b(this,KF,l),b(this,VW,d)}getRaw(){return Q(this,VW)}get(l){var d;return(d=Q(this,KF).get(l))!=null?d:null}getAll(){return ri(Q(this,KF))}has(l){return Q(this,KF).has(l)}}KF=new WeakMap,VW=new WeakMap;const XZ=Symbol("INTERNAL");var sW,iW,RW,Dc;class Ae{constructor(l,{name:d,intent:Z,usage:t}){e(this,sW,!1),e(this,iW,!1),e(this,RW,!1),e(this,Dc,!0),b(this,sW,!!(l&kd.DISPLAY)),b(this,iW,!!(l&kd.PRINT)),this.name=d,this.intent=Z,this.usage=t}get visible(){if(Q(this,RW))return Q(this,Dc);if(!Q(this,Dc))return!1;const{print:l,view:d}=this.usage;return Q(this,sW)?(d==null?void 0:d.viewState)!=="OFF":Q(this,iW)?(l==null?void 0:l.printState)!=="OFF":!0}_setVisible(l,d,Z=!1){l!==XZ&&zl("Internal method `_setVisible` called."),b(this,RW,Z),b(this,Dc,d)}}sW=new WeakMap,iW=new WeakMap,RW=new WeakMap,Dc=new WeakMap;var Xt,ml,Ec,wc,kn,rs;class _e{constructor(l,d=kd.DISPLAY){if(e(this,kn),e(this,Xt,null),e(this,ml,new Map),e(this,Ec,null),e(this,wc,null),this.renderingIntent=d,this.name=null,this.creator=null,l!==null){this.name=l.name,this.creator=l.creator,b(this,wc,l.order);for(const Z of l.groups)Q(this,ml).set(Z.id,new Ae(d,Z));if(l.baseState==="OFF")for(const Z of Q(this,ml).values())Z._setVisible(XZ,!1);for(const Z of l.on)Q(this,ml).get(Z)._setVisible(XZ,!0);for(const Z of l.off)Q(this,ml).get(Z)._setVisible(XZ,!1);b(this,Ec,this.getHash())}}isVisible(l){if(Q(this,ml).size===0)return!0;if(!l)return tV("Optional content group not defined."),!0;if(l.type==="OCG")return Q(this,ml).has(l.id)?Q(this,ml).get(l.id).visible:(dl(`Optional content group not found: ${l.id}`),!0);if(l.type==="OCMD"){if(l.expression)return N(this,kn,rs).call(this,l.expression);if(!l.policy||l.policy==="AnyOn"){for(const d of l.ids){if(!Q(this,ml).has(d))return dl(`Optional content group not found: ${d}`),!0;if(Q(this,ml).get(d).visible)return!0}return!1}else if(l.policy==="AllOn"){for(const d of l.ids){if(!Q(this,ml).has(d))return dl(`Optional content group not found: ${d}`),!0;if(!Q(this,ml).get(d).visible)return!1}return!0}else if(l.policy==="AnyOff"){for(const d of l.ids){if(!Q(this,ml).has(d))return dl(`Optional content group not found: ${d}`),!0;if(!Q(this,ml).get(d).visible)return!0}return!1}else if(l.policy==="AllOff"){for(const d of l.ids){if(!Q(this,ml).has(d))return dl(`Optional content group not found: ${d}`),!0;if(Q(this,ml).get(d).visible)return!1}return!0}return dl(`Unknown optional content policy ${l.policy}.`),!0}return dl(`Unknown group type ${l.type}.`),!0}setVisibility(l,d=!0){const Z=Q(this,ml).get(l);if(!Z){dl(`Optional content group not found: ${l}`);return}Z._setVisible(XZ,!!d,!0),b(this,Xt,null)}setOCGState({state:l,preserveRB:d}){let Z;for(const t of l){switch(t){case"ON":case"OFF":case"Toggle":Z=t;continue}const F=Q(this,ml).get(t);if(F)switch(Z){case"ON":F._setVisible(XZ,!0);break;case"OFF":F._setVisible(XZ,!1);break;case"Toggle":F._setVisible(XZ,!F.visible);break}}b(this,Xt,null)}get hasInitialVisibility(){return Q(this,Ec)===null||this.getHash()===Q(this,Ec)}getOrder(){return Q(this,ml).size?Q(this,wc)?Q(this,wc).slice():[...Q(this,ml).keys()]:null}getGroups(){return Q(this,ml).size>0?ri(Q(this,ml)):null}getGroup(l){return Q(this,ml).get(l)||null}getHash(){if(Q(this,Xt)!==null)return Q(this,Xt);const l=new Lh;for(const[d,Z]of Q(this,ml))l.update(`${d}:${Z.visible}`);return b(this,Xt,l.hexdigest())}}Xt=new WeakMap,ml=new WeakMap,Ec=new WeakMap,wc=new WeakMap,kn=new WeakSet,rs=function(U){const l=U.length;if(l<2)return!0;const d=U[0];for(let Z=1;Z<l;Z++){const t=U[Z];let F;if(Array.isArray(t))F=N(this,kn,rs).call(this,t);else if(Q(this,ml).has(t))F=Q(this,ml).get(t).visible;else return dl(`Optional content group not found: ${t}`),!0;switch(d){case"And":if(!F)return!1;break;case"Or":if(F)return!0;break;case"Not":return!F;default:return!0}}return d==="And"};class qe{constructor(l,{disableRange:d=!1,disableStream:Z=!1}){jl(l,'PDFDataTransportStream - missing required "pdfDataRangeTransport" argument.');const{length:t,initialData:F,progressiveDone:c,contentDispositionFilename:a}=l;if(this._queuedChunks=[],this._progressiveDone=c,this._contentDispositionFilename=a,(F==null?void 0:F.length)>0){const W=F instanceof Uint8Array&&F.byteLength===F.buffer.byteLength?F.buffer:new Uint8Array(F).buffer;this._queuedChunks.push(W)}this._pdfDataRangeTransport=l,this._isStreamingSupported=!Z,this._isRangeSupported=!d,this._contentLength=t,this._fullRequestReader=null,this._rangeReaders=[],l.addRangeListener((W,n)=>{this._onReceiveData({begin:W,chunk:n})}),l.addProgressListener((W,n)=>{this._onProgress({loaded:W,total:n})}),l.addProgressiveReadListener(W=>{this._onReceiveData({chunk:W})}),l.addProgressiveDoneListener(()=>{this._onProgressiveDone()}),l.transportReady()}_onReceiveData({begin:l,chunk:d}){const Z=d instanceof Uint8Array&&d.byteLength===d.buffer.byteLength?d.buffer:new Uint8Array(d).buffer;if(l===void 0)this._fullRequestReader?this._fullRequestReader._enqueue(Z):this._queuedChunks.push(Z);else{const t=this._rangeReaders.some(function(F){return F._begin!==l?!1:(F._enqueue(Z),!0)});jl(t,"_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found.")}}get _progressiveDataLength(){var d;var l;return(d=(l=this._fullRequestReader)==null?void 0:l._loaded)!=null?d:0}_onProgress(l){var d,Z,t,F;l.total===void 0?(Z=(d=this._rangeReaders[0])==null?void 0:d.onProgress)==null||Z.call(d,{loaded:l.loaded}):(F=(t=this._fullRequestReader)==null?void 0:t.onProgress)==null||F.call(t,{loaded:l.loaded,total:l.total})}_onProgressiveDone(){var l;(l=this._fullRequestReader)==null||l.progressiveDone(),this._progressiveDone=!0}_removeRangeReader(l){const d=this._rangeReaders.indexOf(l);d>=0&&this._rangeReaders.splice(d,1)}getFullReader(){jl(!this._fullRequestReader,"PDFDataTransportStream.getFullReader can only be called once.");const l=this._queuedChunks;return this._queuedChunks=null,new $e(this,l,this._progressiveDone,this._contentDispositionFilename)}getRangeReader(l,d){if(d<=this._progressiveDataLength)return null;const Z=new l2(this,l,d);return this._pdfDataRangeTransport.requestDataRange(l,d),this._rangeReaders.push(Z),Z}cancelAllRequests(l){var d;(d=this._fullRequestReader)==null||d.cancel(l);for(const Z of this._rangeReaders.slice(0))Z.cancel(l);this._pdfDataRangeTransport.abort()}}class $e{constructor(l,d,Z=!1,t=null){this._stream=l,this._done=Z||!1,this._filename=Ki(t)?t:null,this._queuedChunks=d||[],this._loaded=0;for(const F of this._queuedChunks)this._loaded+=F.byteLength;this._requests=[],this._headersReady=Promise.resolve(),l._fullRequestReader=this,this.onProgress=null}_enqueue(l){this._done||(this._requests.length>0?this._requests.shift().resolve({value:l,done:!1}):this._queuedChunks.push(l),this._loaded+=l.byteLength)}get headersReady(){return this._headersReady}get filename(){return this._filename}get isRangeSupported(){return this._stream._isRangeSupported}get isStreamingSupported(){return this._stream._isStreamingSupported}get contentLength(){return this._stream._contentLength}read(){return z(this,null,function*(){if(this._queuedChunks.length>0)return{value:this._queuedChunks.shift(),done:!1};if(this._done)return{value:void 0,done:!0};const l=Promise.withResolvers();return this._requests.push(l),l.promise})}cancel(l){this._done=!0;for(const d of this._requests)d.resolve({value:void 0,done:!0});this._requests.length=0}progressiveDone(){this._done||(this._done=!0)}}class l2{constructor(l,d,Z){this._stream=l,this._begin=d,this._end=Z,this._queuedChunk=null,this._requests=[],this._done=!1,this.onProgress=null}_enqueue(l){if(!this._done){if(this._requests.length===0)this._queuedChunk=l;else{this._requests.shift().resolve({value:l,done:!1});for(const d of this._requests)d.resolve({value:void 0,done:!0});this._requests.length=0}this._done=!0,this._stream._removeRangeReader(this)}}get isStreamingSupported(){return!1}read(){return z(this,null,function*(){if(this._queuedChunk){const d=this._queuedChunk;return this._queuedChunk=null,{value:d,done:!1}}if(this._done)return{value:void 0,done:!0};const l=Promise.withResolvers();return this._requests.push(l),l.promise})}cancel(l){this._done=!0;for(const d of this._requests)d.resolve({value:void 0,done:!0});this._requests.length=0,this._stream._removeRangeReader(this)}}function d2(U){let l=!0,d=Z("filename\\*","i").exec(U);if(d){d=d[1];let V=a(d);return V=unescape(V),V=W(V),V=n(V),F(V)}if(d=c(U),d){const V=n(d);return F(V)}if(d=Z("filename","i").exec(U),d){d=d[1];let V=a(d);return V=n(V),F(V)}function Z(V,s){return new RegExp("(?:^|;)\\s*"+V+'\\s*=\\s*([^";\\s][^;\\s]*|"(?:[^"\\\\]|\\\\"?)+"?)',s)}function t(V,s){if(V){if(!/^[\x00-\xFF]+$/.test(s))return s;try{const i=new TextDecoder(V,{fatal:!0}),R=cV(s);s=i.decode(R),l=!1}catch(i){}}return s}function F(V){return l&&/[\x80-\xff]/.test(V)&&(V=t("utf-8",V),l&&(V=t("iso-8859-1",V))),V}function c(V){const s=[];let i;const R=Z("filename\\*((?!0\\d)\\d+)(\\*?)","ig");for(;(i=R.exec(V))!==null;){let[,m,M,J]=i;if(m=parseInt(m,10),m in s){if(m===0)break;continue}s[m]=[M,J]}const h=[];for(let m=0;m<s.length&&m in s;++m){let[M,J]=s[m];J=a(J),M&&(J=unescape(J),m===0&&(J=W(J))),h.push(J)}return h.join("")}function a(V){if(V.startsWith('"')){const s=V.slice(1).split('\\"');for(let i=0;i<s.length;++i){const R=s[i].indexOf('"');R!==-1&&(s[i]=s[i].slice(0,R),s.length=i+1),s[i]=s[i].replaceAll(/\\(.)/g,"$1")}V=s.join('"')}return V}function W(V){const s=V.indexOf("'");if(s===-1)return V;const i=V.slice(0,s),R=V.slice(s+1).replace(/^[^']*'/,"");return t(i,R)}function n(V){return!V.startsWith("=?")||/[\x00-\x19\x80-\xff]/.test(V)?V:V.replaceAll(/=\?([\w-]*)\?([QqBb])\?((?:[^?]|\?(?!=))*)\?=/g,function(s,i,R,h){if(R==="q"||R==="Q")return h=h.replaceAll("_"," "),h=h.replaceAll(/=([0-9a-fA-F]{2})/g,function(m,M){return String.fromCharCode(parseInt(M,16))}),t(i,h);try{h=atob(h)}catch(m){}return t(i,h)})}return""}function Ai(U,l){const d=new Headers;if(!U||!l||typeof l!="object")return d;for(const Z in l){const t=l[Z];t!==void 0&&d.append(Z,t)}return d}function _i({responseHeaders:U,isHttp:l,rangeChunkSize:d,disableRange:Z}){const t={allowRangeRequests:!1,suggestedLength:void 0},F=parseInt(U.get("Content-Length"),10);return!Number.isInteger(F)||(t.suggestedLength=F,F<=2*d)||Z||!l||U.get("Accept-Ranges")!=="bytes"||(U.get("Content-Encoding")||"identity")!=="identity"||(t.allowRangeRequests=!0),t}function qi(U){const l=U.get("Content-Disposition");if(l){let d=d2(l);if(d.includes("%"))try{d=decodeURIComponent(d)}catch(Z){}if(Ki(d))return d}return null}function WV(U,l){return U===404||U===0&&l.startsWith("file:")?new WF('Missing PDF "'+l+'".'):new FV(`Unexpected server response (${U}) while retrieving PDF "${l}".`,U)}function jh(U){return U===200||U===206}function Oh(U,l,d){return{method:"GET",headers:U,signal:d.signal,mode:"cors",credentials:l?"include":"same-origin",redirect:"follow"}}function gh(U){return U instanceof Uint8Array?U.buffer:U instanceof ArrayBuffer?U:(dl(`getArrayBuffer - unexpected data format: ${U}`),new Uint8Array(U).buffer)}class rR{constructor(l){this.source=l,this.isHttp=/^https?:/i.test(l.url),this.headers=Ai(this.isHttp,l.httpHeaders),this._fullRequestReader=null,this._rangeRequestReaders=[]}get _progressiveDataLength(){var d;var l;return(d=(l=this._fullRequestReader)==null?void 0:l._loaded)!=null?d:0}getFullReader(){return jl(!this._fullRequestReader,"PDFFetchStream.getFullReader can only be called once."),this._fullRequestReader=new U2(this),this._fullRequestReader}getRangeReader(l,d){if(d<=this._progressiveDataLength)return null;const Z=new Z2(this,l,d);return this._rangeRequestReaders.push(Z),Z}cancelAllRequests(l){var d;(d=this._fullRequestReader)==null||d.cancel(l);for(const Z of this._rangeRequestReaders.slice(0))Z.cancel(l)}}class U2{constructor(l){this._stream=l,this._reader=null,this._loaded=0,this._filename=null;const d=l.source;this._withCredentials=d.withCredentials||!1,this._contentLength=d.length,this._headersCapability=Promise.withResolvers(),this._disableRange=d.disableRange||!1,this._rangeChunkSize=d.rangeChunkSize,!this._rangeChunkSize&&!this._disableRange&&(this._disableRange=!0),this._abortController=new AbortController,this._isStreamingSupported=!d.disableStream,this._isRangeSupported=!d.disableRange;const Z=new Headers(l.headers),t=d.url;fetch(t,Oh(Z,this._withCredentials,this._abortController)).then(F=>{if(!jh(F.status))throw WV(F.status,t);this._reader=F.body.getReader(),this._headersCapability.resolve();const c=F.headers,{allowRangeRequests:a,suggestedLength:W}=_i({responseHeaders:c,isHttp:l.isHttp,rangeChunkSize:this._rangeChunkSize,disableRange:this._disableRange});this._isRangeSupported=a,this._contentLength=W||this._contentLength,this._filename=qi(c),!this._isStreamingSupported&&this._isRangeSupported&&this.cancel(new nF("Streaming is disabled."))}).catch(this._headersCapability.reject),this.onProgress=null}get headersReady(){return this._headersCapability.promise}get filename(){return this._filename}get contentLength(){return this._contentLength}get isRangeSupported(){return this._isRangeSupported}get isStreamingSupported(){return this._isStreamingSupported}read(){return z(this,null,function*(){var l;yield this._headersCapability.promise;const{value:d,done:Z}=yield this._reader.read();return Z?{value:d,done:Z}:(this._loaded+=d.byteLength,(l=this.onProgress)==null||l.call(this,{loaded:this._loaded,total:this._contentLength}),{value:gh(d),done:!1})})}cancel(l){var d;(d=this._reader)==null||d.cancel(l),this._abortController.abort()}}class Z2{constructor(l,d,Z){this._stream=l,this._reader=null,this._loaded=0;const t=l.source;this._withCredentials=t.withCredentials||!1,this._readCapability=Promise.withResolvers(),this._isStreamingSupported=!t.disableStream,this._abortController=new AbortController;const F=new Headers(l.headers);F.append("Range",`bytes=${d}-${Z-1}`);const c=t.url;fetch(c,Oh(F,this._withCredentials,this._abortController)).then(a=>{if(!jh(a.status))throw WV(a.status,c);this._readCapability.resolve(),this._reader=a.body.getReader()}).catch(this._readCapability.reject),this.onProgress=null}get isStreamingSupported(){return this._isStreamingSupported}read(){return z(this,null,function*(){var l;yield this._readCapability.promise;const{value:d,done:Z}=yield this._reader.read();return Z?{value:d,done:Z}:(this._loaded+=d.byteLength,(l=this.onProgress)==null||l.call(this,{loaded:this._loaded}),{value:gh(d),done:!1})})}cancel(l){var d;(d=this._reader)==null||d.cancel(l),this._abortController.abort()}}const zV=200,IV=206;function t2(U){const l=U.response;return typeof l!="string"?l:cV(l).buffer}class F2{constructor({url:l,httpHeaders:d,withCredentials:Z}){this.url=l,this.isHttp=/^https?:/i.test(l),this.headers=Ai(this.isHttp,d),this.withCredentials=Z||!1,this.currXhrId=0,this.pendingRequests=Object.create(null)}requestRange(l,d,Z){const t={begin:l,end:d};for(const F in Z)t[F]=Z[F];return this.request(t)}requestFull(l){return this.request(l)}request(l){const d=new XMLHttpRequest,Z=this.currXhrId++,t=this.pendingRequests[Z]={xhr:d};d.open("GET",this.url),d.withCredentials=this.withCredentials;for(const[F,c]of this.headers)d.setRequestHeader(F,c);return this.isHttp&&"begin"in l&&"end"in l?(d.setRequestHeader("Range",`bytes=${l.begin}-${l.end-1}`),t.expectedStatus=IV):t.expectedStatus=zV,d.responseType="arraybuffer",l.onError&&(d.onerror=function(F){l.onError(d.status)}),d.onreadystatechange=this.onStateChange.bind(this,Z),d.onprogress=this.onProgress.bind(this,Z),t.onHeadersReceived=l.onHeadersReceived,t.onDone=l.onDone,t.onError=l.onError,t.onProgress=l.onProgress,d.send(null),Z}onProgress(l,d){var Z;const t=this.pendingRequests[l];t&&((Z=t.onProgress)==null||Z.call(t,d))}onStateChange(l,d){var Z,t,F;const c=this.pendingRequests[l];if(!c)return;const a=c.xhr;if(a.readyState>=2&&c.onHeadersReceived&&(c.onHeadersReceived(),delete c.onHeadersReceived),a.readyState!==4||!(l in this.pendingRequests))return;if(delete this.pendingRequests[l],a.status===0&&this.isHttp){(Z=c.onError)==null||Z.call(c,a.status);return}const W=a.status||zV;if(!(W===zV&&c.expectedStatus===IV)&&W!==c.expectedStatus){(t=c.onError)==null||t.call(c,a.status);return}const n=t2(a);if(W===IV){const V=a.getResponseHeader("Content-Range"),s=/bytes (\d+)-(\d+)\/(\d+)/.exec(V);c.onDone({begin:parseInt(s[1],10),chunk:n})}else n?c.onDone({begin:0,chunk:n}):(F=c.onError)==null||F.call(c,a.status)}getRequestXhr(l){return this.pendingRequests[l].xhr}isPendingRequest(l){return l in this.pendingRequests}abortRequest(l){const d=this.pendingRequests[l].xhr;delete this.pendingRequests[l],d.abort()}}class c2{constructor(l){this._source=l,this._manager=new F2(l),this._rangeChunkSize=l.rangeChunkSize,this._fullRequestReader=null,this._rangeRequestReaders=[]}_onRangeRequestReaderClosed(l){const d=this._rangeRequestReaders.indexOf(l);d>=0&&this._rangeRequestReaders.splice(d,1)}getFullReader(){return jl(!this._fullRequestReader,"PDFNetworkStream.getFullReader can only be called once."),this._fullRequestReader=new Q2(this._manager,this._source),this._fullRequestReader}getRangeReader(l,d){const Z=new a2(this._manager,l,d);return Z.onClosed=this._onRangeRequestReaderClosed.bind(this),this._rangeRequestReaders.push(Z),Z}cancelAllRequests(l){var d;(d=this._fullRequestReader)==null||d.cancel(l);for(const Z of this._rangeRequestReaders.slice(0))Z.cancel(l)}}class Q2{constructor(l,d){this._manager=l;const Z={onHeadersReceived:this._onHeadersReceived.bind(this),onDone:this._onDone.bind(this),onError:this._onError.bind(this),onProgress:this._onProgress.bind(this)};this._url=d.url,this._fullRequestId=l.requestFull(Z),this._headersCapability=Promise.withResolvers(),this._disableRange=d.disableRange||!1,this._contentLength=d.length,this._rangeChunkSize=d.rangeChunkSize,!this._rangeChunkSize&&!this._disableRange&&(this._disableRange=!0),this._isStreamingSupported=!1,this._isRangeSupported=!1,this._cachedChunks=[],this._requests=[],this._done=!1,this._storedError=void 0,this._filename=null,this.onProgress=null}_onHeadersReceived(){const l=this._fullRequestId,d=this._manager.getRequestXhr(l),Z=new Headers(d.getAllResponseHeaders().trim().split(/[\r\n]+/).map(c=>{const[a,...W]=c.split(": ");return[a,W.join(": ")]})),{allowRangeRequests:t,suggestedLength:F}=_i({responseHeaders:Z,isHttp:this._manager.isHttp,rangeChunkSize:this._rangeChunkSize,disableRange:this._disableRange});t&&(this._isRangeSupported=!0),this._contentLength=F||this._contentLength,this._filename=qi(Z),this._isRangeSupported&&this._manager.abortRequest(l),this._headersCapability.resolve()}_onDone(l){if(l&&(this._requests.length>0?this._requests.shift().resolve({value:l.chunk,done:!1}):this._cachedChunks.push(l.chunk)),this._done=!0,!(this._cachedChunks.length>0)){for(const d of this._requests)d.resolve({value:void 0,done:!0});this._requests.length=0}}_onError(l){this._storedError=WV(l,this._url),this._headersCapability.reject(this._storedError);for(const d of this._requests)d.reject(this._storedError);this._requests.length=0,this._cachedChunks.length=0}_onProgress(l){var d;(d=this.onProgress)==null||d.call(this,{loaded:l.loaded,total:l.lengthComputable?l.total:this._contentLength})}get filename(){return this._filename}get isRangeSupported(){return this._isRangeSupported}get isStreamingSupported(){return this._isStreamingSupported}get contentLength(){return this._contentLength}get headersReady(){return this._headersCapability.promise}read(){return z(this,null,function*(){if(this._storedError)throw this._storedError;if(this._cachedChunks.length>0)return{value:this._cachedChunks.shift(),done:!1};if(this._done)return{value:void 0,done:!0};const l=Promise.withResolvers();return this._requests.push(l),l.promise})}cancel(l){this._done=!0,this._headersCapability.reject(l);for(const d of this._requests)d.resolve({value:void 0,done:!0});this._requests.length=0,this._manager.isPendingRequest(this._fullRequestId)&&this._manager.abortRequest(this._fullRequestId),this._fullRequestReader=null}}class a2{constructor(l,d,Z){this._manager=l;const t={onDone:this._onDone.bind(this),onError:this._onError.bind(this),onProgress:this._onProgress.bind(this)};this._url=l.url,this._requestId=l.requestRange(d,Z,t),this._requests=[],this._queuedChunk=null,this._done=!1,this._storedError=void 0,this.onProgress=null,this.onClosed=null}_close(){var l;(l=this.onClosed)==null||l.call(this,this)}_onDone(l){const d=l.chunk;this._requests.length>0?this._requests.shift().resolve({value:d,done:!1}):this._queuedChunk=d,this._done=!0;for(const Z of this._requests)Z.resolve({value:void 0,done:!0});this._requests.length=0,this._close()}_onError(l){this._storedError=WV(l,this._url);for(const d of this._requests)d.reject(this._storedError);this._requests.length=0,this._queuedChunk=null}_onProgress(l){var d;this.isStreamingSupported||(d=this.onProgress)==null||d.call(this,{loaded:l.loaded})}get isStreamingSupported(){return!1}read(){return z(this,null,function*(){if(this._storedError)throw this._storedError;if(this._queuedChunk!==null){const d=this._queuedChunk;return this._queuedChunk=null,{value:d,done:!1}}if(this._done)return{value:void 0,done:!0};const l=Promise.withResolvers();return this._requests.push(l),l.promise})}cancel(l){this._done=!0;for(const d of this._requests)d.resolve({value:void 0,done:!0});this._requests.length=0,this._manager.isPendingRequest(this._requestId)&&this._manager.abortRequest(this._requestId),this._close()}}const W2=/^[a-z][a-z0-9\-+.]+:/i;function n2(U){if(W2.test(U))return new URL(U);const l=$Z.get("url");return new URL(l.pathToFileURL(U))}function Kh(U,l,d){return U.protocol==="http:"?$Z.get("http").request(U,{headers:l},d):$Z.get("https").request(U,{headers:l},d)}class V2{constructor(l){this.source=l,this.url=n2(l.url),this.isHttp=this.url.protocol==="http:"||this.url.protocol==="https:",this.isFsUrl=this.url.protocol==="file:",this.headers=Ai(this.isHttp,l.httpHeaders),this._fullRequestReader=null,this._rangeRequestReaders=[]}get _progressiveDataLength(){var d;var l;return(d=(l=this._fullRequestReader)==null?void 0:l._loaded)!=null?d:0}getFullReader(){return jl(!this._fullRequestReader,"PDFNodeStream.getFullReader can only be called once."),this._fullRequestReader=this.isFsUrl?new R2(this):new s2(this),this._fullRequestReader}getRangeReader(l,d){if(d<=this._progressiveDataLength)return null;const Z=this.isFsUrl?new N2(this,l,d):new i2(this,l,d);return this._rangeRequestReaders.push(Z),Z}cancelAllRequests(l){var d;(d=this._fullRequestReader)==null||d.cancel(l);for(const Z of this._rangeRequestReaders.slice(0))Z.cancel(l)}}class vh{constructor(l){this._url=l.url,this._done=!1,this._storedError=null,this.onProgress=null;const d=l.source;this._contentLength=d.length,this._loaded=0,this._filename=null,this._disableRange=d.disableRange||!1,this._rangeChunkSize=d.rangeChunkSize,!this._rangeChunkSize&&!this._disableRange&&(this._disableRange=!0),this._isStreamingSupported=!d.disableStream,this._isRangeSupported=!d.disableRange,this._readableStream=null,this._readCapability=Promise.withResolvers(),this._headersCapability=Promise.withResolvers()}get headersReady(){return this._headersCapability.promise}get filename(){return this._filename}get contentLength(){return this._contentLength}get isRangeSupported(){return this._isRangeSupported}get isStreamingSupported(){return this._isStreamingSupported}read(){return z(this,null,function*(){var l;if(yield this._readCapability.promise,this._done)return{value:void 0,done:!0};if(this._storedError)throw this._storedError;const d=this._readableStream.read();return d===null?(this._readCapability=Promise.withResolvers(),this.read()):(this._loaded+=d.length,(l=this.onProgress)==null||l.call(this,{loaded:this._loaded,total:this._contentLength}),{value:new Uint8Array(d).buffer,done:!1})})}cancel(l){if(!this._readableStream){this._error(l);return}this._readableStream.destroy(l)}_error(l){this._storedError=l,this._readCapability.resolve()}_setReadableStream(l){this._readableStream=l,l.on("readable",()=>{this._readCapability.resolve()}),l.on("end",()=>{l.destroy(),this._done=!0,this._readCapability.resolve()}),l.on("error",d=>{this._error(d)}),!this._isStreamingSupported&&this._isRangeSupported&&this._error(new nF("streaming is disabled")),this._storedError&&this._readableStream.destroy(this._storedError)}}class Hh{constructor(l){this._url=l.url,this._done=!1,this._storedError=null,this.onProgress=null,this._loaded=0,this._readableStream=null,this._readCapability=Promise.withResolvers();const d=l.source;this._isStreamingSupported=!d.disableStream}get isStreamingSupported(){return this._isStreamingSupported}read(){return z(this,null,function*(){var l;if(yield this._readCapability.promise,this._done)return{value:void 0,done:!0};if(this._storedError)throw this._storedError;const d=this._readableStream.read();return d===null?(this._readCapability=Promise.withResolvers(),this.read()):(this._loaded+=d.length,(l=this.onProgress)==null||l.call(this,{loaded:this._loaded}),{value:new Uint8Array(d).buffer,done:!1})})}cancel(l){if(!this._readableStream){this._error(l);return}this._readableStream.destroy(l)}_error(l){this._storedError=l,this._readCapability.resolve()}_setReadableStream(l){this._readableStream=l,l.on("readable",()=>{this._readCapability.resolve()}),l.on("end",()=>{l.destroy(),this._done=!0,this._readCapability.resolve()}),l.on("error",d=>{this._error(d)}),this._storedError&&this._readableStream.destroy(this._storedError)}}class s2 extends vh{constructor(l){super(l);const d=Object.fromEntries(l.headers),Z=t=>{if(t.statusCode===404){const W=new WF(`Missing PDF "${this._url}".`);this._storedError=W,this._headersCapability.reject(W);return}this._headersCapability.resolve(),this._setReadableStream(t);const F=new Headers(this._readableStream.headers),{allowRangeRequests:c,suggestedLength:a}=_i({responseHeaders:F,isHttp:l.isHttp,rangeChunkSize:this._rangeChunkSize,disableRange:this._disableRange});this._isRangeSupported=c,this._contentLength=a||this._contentLength,this._filename=qi(F)};this._request=Kh(this._url,d,Z),this._request.on("error",t=>{this._storedError=t,this._headersCapability.reject(t)}),this._request.end()}}class i2 extends Hh{constructor(l,d,Z){super(l);const t=Object.fromEntries(l.headers);t.Range=`bytes=${d}-${Z-1}`;const F=c=>{if(c.statusCode===404){const a=new WF(`Missing PDF "${this._url}".`);this._storedError=a;return}this._setReadableStream(c)};this._request=Kh(this._url,t,F),this._request.on("error",c=>{this._storedError=c}),this._request.end()}}class R2 extends vh{constructor(l){super(l);const d=$Z.get("fs");d.promises.lstat(this._url).then(Z=>{this._contentLength=Z.size,this._setReadableStream(d.createReadStream(this._url)),this._headersCapability.resolve()},Z=>{Z.code==="ENOENT"&&(Z=new WF(`Missing PDF "${this._url}".`)),this._storedError=Z,this._headersCapability.reject(Z)})}}class N2 extends Hh{constructor(l,d,Z){super(l);const t=$Z.get("fs");this._setReadableStream(t.createReadStream(this._url,{start:d,end:Z-1}))}}const h2=1e5,ed=30,b2=.8;var jR,nt,Sd,ma,ea,Vt,eZ,Ma,Ja,GF,dc,Uc,st,Zc,Ga,tc,TF,Ta,Sa,Dl,SF,XF,Xa,it,Fc,YF,OR,gR,DV,DU,Ya,EV,KR,vR;let js=(Dl=class{constructor({textContentSource:U,container:l,viewport:d}){e(this,YF),e(this,nt,Promise.withResolvers()),e(this,Sd,null),e(this,ma,!1),e(this,ea,!!((jR=globalThis.FontInspector)!=null&&jR.enabled)),e(this,Vt,null),e(this,eZ,null),e(this,Ma,0),e(this,Ja,0),e(this,GF,null),e(this,dc,null),e(this,Uc,0),e(this,st,0),e(this,Zc,Object.create(null)),e(this,Ga,[]),e(this,tc,null),e(this,TF,[]),e(this,Ta,new WeakMap),e(this,Sa,null);var Z;if(U instanceof ReadableStream)b(this,tc,U);else if(typeof U=="object")b(this,tc,new ReadableStream({start(W){W.enqueue(U),W.close()}}));else throw new Error('No "textContentSource" parameter specified.');b(this,Sd,b(this,dc,l)),b(this,st,d.scale*(globalThis.devicePixelRatio||1)),b(this,Uc,d.rotation),b(this,eZ,{div:null,properties:null,ctx:null});const{pageWidth:t,pageHeight:F,pageX:c,pageY:a}=d.rawDims;b(this,Sa,[1,0,0,-1,-c,a+F]),b(this,Ja,t),b(this,Ma,F),N(Z=Dl,DU,KR).call(Z),QF(l,d),Q(this,nt).promise.finally(()=>{Q(Dl,Fc).delete(this),b(this,eZ,null),b(this,Zc,null)}).catch(()=>{})}static get fontFamilyMap(){const{isWindows:U,isFirefox:l}=Td.platform;return Zl(this,"fontFamilyMap",new Map([["sans-serif",`${U&&l?"Calibri, ":""}sans-serif`],["monospace",`${U&&l?"Lucida Console, ":""}monospace`]]))}render(){const U=()=>{Q(this,GF).read().then(({value:l,done:d})=>{var Z;if(d){Q(this,nt).resolve();return}(Z=Q(this,Vt))!=null||b(this,Vt,l.lang),Object.assign(Q(this,Zc),l.styles),N(this,YF,OR).call(this,l.items),U()},Q(this,nt).reject)};return b(this,GF,Q(this,tc).getReader()),Q(Dl,Fc).add(this),U(),Q(this,nt).promise}update({viewport:U,onBefore:l=null}){var d;const Z=U.scale*(globalThis.devicePixelRatio||1),t=U.rotation;if(t!==Q(this,Uc)&&(l==null||l(),b(this,Uc,t),QF(Q(this,dc),{rotation:t})),Z!==Q(this,st)){l==null||l(),b(this,st,Z);const F={div:null,properties:null,ctx:N(d=Dl,DU,Ya).call(d,Q(this,Vt))};for(const c of Q(this,TF))F.properties=Q(this,Ta).get(c),F.div=c,N(this,YF,DV).call(this,F)}}cancel(){var U;const l=new nF("TextLayer task cancelled.");(U=Q(this,GF))==null||U.cancel(l).catch(()=>{}),b(this,GF,null),Q(this,nt).reject(l)}get textDivs(){return Q(this,TF)}get textContentItemsStr(){return Q(this,Ga)}static cleanup(){if(!(Q(this,Fc).size>0)){Q(this,SF).clear();for(const{canvas:U}of Q(this,XF).values())U.remove();Q(this,XF).clear()}}},nt=new WeakMap,Sd=new WeakMap,ma=new WeakMap,ea=new WeakMap,Vt=new WeakMap,eZ=new WeakMap,Ma=new WeakMap,Ja=new WeakMap,GF=new WeakMap,dc=new WeakMap,Uc=new WeakMap,st=new WeakMap,Zc=new WeakMap,Ga=new WeakMap,tc=new WeakMap,TF=new WeakMap,Ta=new WeakMap,Sa=new WeakMap,SF=new WeakMap,XF=new WeakMap,Xa=new WeakMap,it=new WeakMap,Fc=new WeakMap,YF=new WeakSet,OR=function(U){var F;var l,d;if(Q(this,ma))return;(F=(d=Q(this,eZ)).ctx)!=null||(d.ctx=N(l=Dl,DU,Ya).call(l,Q(this,Vt)));const Z=Q(this,TF),t=Q(this,Ga);for(const c of U){if(Z.length>h2){dl("Ignoring additional textDivs for performance reasons."),b(this,ma,!0);return}if(c.str===void 0){if(c.type==="beginMarkedContentProps"||c.type==="beginMarkedContent"){const a=Q(this,Sd);b(this,Sd,document.createElement("span")),Q(this,Sd).classList.add("markedContent"),c.id!==null&&Q(this,Sd).setAttribute("id",`${c.id}`),a.append(Q(this,Sd))}else c.type==="endMarkedContent"&&b(this,Sd,Q(this,Sd).parentNode);continue}t.push(c.str),N(this,YF,gR).call(this,c)}},gR=function(U){var l;const d=document.createElement("span"),Z={angle:0,canvasWidth:0,hasText:U.str!=="",hasEOL:U.hasEOL,fontSize:0};Q(this,TF).push(d);const t=O.transform(Q(this,Sa),U.transform);let F=Math.atan2(t[1],t[0]);const c=Q(this,Zc)[U.fontName];c.vertical&&(F+=Math.PI/2);let a=Q(this,ea)&&c.fontSubstitution||c.fontFamily;a=Dl.fontFamilyMap.get(a)||a;const W=Math.hypot(t[2],t[3]),n=W*N(l=Dl,DU,vR).call(l,a,Q(this,Vt));let V,s;F===0?(V=t[4],s=t[5]-n):(V=t[4]+n*Math.sin(F),s=t[5]-n*Math.cos(F));const i="calc(var(--scale-factor)*",R=d.style;Q(this,Sd)===Q(this,dc)?(R.left=`${(100*V/Q(this,Ja)).toFixed(2)}%`,R.top=`${(100*s/Q(this,Ma)).toFixed(2)}%`):(R.left=`${i}${V.toFixed(2)}px)`,R.top=`${i}${s.toFixed(2)}px)`),R.fontSize=`${i}${(Q(Dl,it)*W).toFixed(2)}px)`,R.fontFamily=a,Z.fontSize=W,d.setAttribute("role","presentation"),d.textContent=U.str,d.dir=U.dir,Q(this,ea)&&(d.dataset.fontName=c.fontSubstitutionLoadedName||U.fontName),F!==0&&(Z.angle=F*(180/Math.PI));let h=!1;if(U.str.length>1)h=!0;else if(U.str!==" "&&U.transform[0]!==U.transform[3]){const m=Math.abs(U.transform[0]),M=Math.abs(U.transform[3]);m!==M&&Math.max(m,M)/Math.min(m,M)>1.5&&(h=!0)}if(h&&(Z.canvasWidth=c.vertical?U.height:U.width),Q(this,Ta).set(d,Z),Q(this,eZ).div=d,Q(this,eZ).properties=Z,N(this,YF,DV).call(this,Q(this,eZ)),Z.hasText&&Q(this,Sd).append(d),Z.hasEOL){const m=document.createElement("br");m.setAttribute("role","presentation"),Q(this,Sd).append(m)}},DV=function(U){var l;const{div:d,properties:Z,ctx:t}=U,{style:F}=d;let c="";if(Q(Dl,it)>1&&(c=`scale(${1/Q(Dl,it)})`),Z.canvasWidth!==0&&Z.hasText){const{fontFamily:a}=F,{canvasWidth:W,fontSize:n}=Z;N(l=Dl,DU,EV).call(l,t,n*Q(this,st),a);const{width:V}=t.measureText(d.textContent);V>0&&(c=`scaleX(${W*Q(this,st)/V}) ${c}`)}Z.angle!==0&&(c=`rotate(${Z.angle}deg) ${c}`),c.length>0&&(F.transform=c)},DU=new WeakSet,Ya=function(U=null){let l=Q(this,XF).get(U||(U=""));if(!l){const d=document.createElement("canvas");d.className="hiddenCanvasElement",d.lang=U,document.body.append(d),l=d.getContext("2d",{alpha:!1,willReadFrequently:!0}),Q(this,XF).set(U,l),Q(this,Xa).set(l,{size:0,family:""})}return l},EV=function(U,l,d){const Z=Q(this,Xa).get(U);l===Z.size&&d===Z.family||(U.font=`${l}px ${d}`,Z.size=l,Z.family=d)},KR=function(){if(Q(this,it)!==null)return;const U=document.createElement("div");U.style.opacity=0,U.style.lineHeight=1,U.style.fontSize="1px",U.style.position="absolute",U.textContent="X",document.body.append(U),b(this,it,U.getBoundingClientRect().height),U.remove()},vR=function(U,l){const d=Q(this,SF).get(U);if(d)return d;const Z=N(this,DU,Ya).call(this,l);Z.canvas.width=Z.canvas.height=ed,N(this,DU,EV).call(this,Z,ed,U);const t=Z.measureText("");let F=t.fontBoundingBoxAscent,c=Math.abs(t.fontBoundingBoxDescent);if(F){const n=F/(F+c);return Q(this,SF).set(U,n),Z.canvas.width=Z.canvas.height=0,n}Z.strokeStyle="red",Z.clearRect(0,0,ed,ed),Z.strokeText("g",0,0);let a=Z.getImageData(0,0,ed,ed).data;c=0;for(let n=a.length-1-3;n>=0;n-=4)if(a[n]>0){c=Math.ceil(n/4/ed);break}Z.clearRect(0,0,ed,ed),Z.strokeText("A",0,ed),a=Z.getImageData(0,0,ed,ed).data,F=0;for(let n=0,V=a.length;n<V;n+=4)if(a[n]>0){F=ed-Math.floor(n/4/ed);break}Z.canvas.width=Z.canvas.height=0;const W=F?F/(F+c):b2;return Q(this,SF).set(U,W),W},e(Dl,DU),e(Dl,SF,new Map),e(Dl,XF,new Map),e(Dl,Xa,new WeakMap),e(Dl,it,null),e(Dl,Fc,new Set),Dl);class KQ{static textContent(l){const d=[],Z={items:d,styles:Object.create(null)};function t(F){var c;if(!F)return;let a=null;const W=F.name;if(W==="#text")a=F.value;else if(KQ.shouldBuildText(W))(c=F==null?void 0:F.attributes)!=null&&c.textContent?a=F.attributes.textContent:F.value&&(a=F.value);else return;if(a!==null&&d.push({str:a}),!!F.children)for(const n of F.children)t(n)}return t(l),Z}static shouldBuildText(l){return!(l==="textarea"||l==="input"||l==="option"||l==="select")}}const m2=65536,e2=100,M2=5e3,J2=Vd?ye:Ne,G2=Vd?ke:bh,T2=Vd?Be:Re,S2=Vd?Le:mh;function X2(U={}){var fd,x;typeof U=="string"||U instanceof URL?U={url:U}:(U instanceof ArrayBuffer||ArrayBuffer.isView(U))&&(U={data:U});const l=new u2,{docId:d}=l,Z=U.url?Y2(U.url):null,t=U.data?p2(U.data):null,F=U.httpHeaders||null,c=U.withCredentials===!0,a=(fd=U.password)!=null?fd:null,W=U.range instanceof Ah?U.range:null,n=Number.isInteger(U.rangeChunkSize)&&U.rangeChunkSize>0?U.rangeChunkSize:m2;let V=U.worker instanceof NW?U.worker:null;const s=U.verbosity,i=typeof U.docBaseUrl=="string"&&!aV(U.docBaseUrl)?U.docBaseUrl:null,R=typeof U.cMapUrl=="string"?U.cMapUrl:null,h=U.cMapPacked!==!1,m=U.CMapReaderFactory||G2,M=typeof U.standardFontDataUrl=="string"?U.standardFontDataUrl:null,J=U.StandardFontDataFactory||S2,T=U.stopAtErrors!==!0,G=Number.isInteger(U.maxImageSize)&&U.maxImageSize>-1?U.maxImageSize:-1,X=U.isEvalSupported!==!1,Y=typeof U.isOffscreenCanvasSupported=="boolean"?U.isOffscreenCanvasSupported:!Vd,p=Number.isInteger(U.canvasMaxAreaInBytes)?U.canvasMaxAreaInBytes:-1,o=typeof U.disableFontFace=="boolean"?U.disableFontFace:Vd,k=U.fontExtraProperties===!0,S=U.enableXfa===!0,B=U.ownerDocument||globalThis.document,y=U.disableRange===!0,D=U.disableStream===!0,E=U.disableAutoFetch===!0,r=U.pdfBug===!0,w=U.CanvasFactory||J2,u=U.FilterFactory||T2,C=U.enableHWA===!0,Ul=W?W.length:(x=U.length)!=null?x:NaN,Wl=typeof U.useSystemFonts=="boolean"?U.useSystemFonts:!Vd&&!o,hl=typeof U.useWorkerFetch=="boolean"?U.useWorkerFetch:m===bh&&J===mh&&R&&M&&uc(R,document.baseURI)&&uc(M,document.baseURI);U.canvasFactory&&RR("`canvasFactory`-instance option, please use `CanvasFactory` instead."),U.filterFactory&&RR("`filterFactory`-instance option, please use `FilterFactory` instead.");const Il=null;Ue(s);const Vl={canvasFactory:new w({ownerDocument:B,enableHWA:C}),filterFactory:new u({docId:d,ownerDocument:B}),cMapReaderFactory:hl?null:new m({baseUrl:R,isCompressed:h}),standardFontDataFactory:hl?null:new J({baseUrl:M})};if(!V){const I={verbosity:s,port:N0.workerPort};V=I.port?NW.fromPort(I):new NW(I),l._worker=V}const bl={docId:d,apiVersion:"4.7.76",data:t,password:a,disableAutoFetch:E,rangeChunkSize:n,length:Ul,docBaseUrl:i,enableXfa:S,evaluatorOptions:{maxImageSize:G,disableFontFace:o,ignoreErrors:T,isEvalSupported:X,isOffscreenCanvasSupported:Y,canvasMaxAreaInBytes:p,fontExtraProperties:k,useSystemFonts:Wl,cMapUrl:hl?R:null,standardFontDataUrl:hl?M:null}},QU={disableFontFace:o,fontExtraProperties:k,ownerDocument:B,pdfBug:r,styleElement:Il,loadingParams:{disableAutoFetch:E,enableXfa:S}};return V.promise.then(function(){if(l.destroyed)throw new Error("Loading aborted");if(V.destroyed)throw new Error("Worker was destroyed");const I=V.messageHandler.sendWithPromise("GetDocRequest",bl,t?[t.buffer]:null);let j;if(W)j=new qe(W,{disableRange:y,disableStream:D});else if(!t){if(!Z)throw new Error("getDocument - no `url` parameter provided.");let A;Vd?A=typeof fetch<"u"&&typeof Response<"u"&&"body"in Response.prototype&&uc(Z)?rR:V2:A=uc(Z)?rR:c2,j=new A({url:Z,length:Ul,httpHeaders:F,withCredentials:c,rangeChunkSize:n,disableRange:y,disableStream:D})}return I.then(A=>{if(l.destroyed)throw new Error("Loading aborted");if(V.destroyed)throw new Error("Worker was destroyed");const sl=new Ic(d,A,V.port),P=new k2(sl,l,j,QU,Vl);l._transport=P,sl.send("Ready",null)})}).catch(l._capability.reject),l}function Y2(U){if(U instanceof URL)return U.href;try{return new URL(U,window.location).href}catch(l){if(Vd&&typeof U=="string")return U}throw new Error("Invalid PDF url data: either string or URL-object is expected in the url property.")}function p2(U){if(Vd&&typeof Buffer<"u"&&U instanceof Buffer)throw new Error("Please provide binary data as `Uint8Array`, rather than `Buffer`.");if(U instanceof Uint8Array&&U.byteLength===U.buffer.byteLength)return U;if(typeof U=="string")return cV(U);if(U instanceof ArrayBuffer||ArrayBuffer.isView(U)||typeof U=="object"&&!isNaN(U==null?void 0:U.length))return new Uint8Array(U);throw new Error("Invalid PDF binary data: either TypedArray, string, or array-like object is expected in the data property.")}function HR(U){return typeof U=="object"&&Number.isInteger(U==null?void 0:U.num)&&U.num>=0&&Number.isInteger(U==null?void 0:U.gen)&&U.gen>=0}var Os;const Ph=class fh{constructor(){this._capability=Promise.withResolvers(),this._transport=null,this._worker=null,this.docId=`d${md(fh,Os)._++}`,this.destroyed=!1,this.onPassword=null,this.onProgress=null}get promise(){return this._capability.promise}destroy(){return z(this,null,function*(){var l,d,Z;this.destroyed=!0;try{(l=this._worker)!=null&&l.port&&(this._worker._pendingDestroy=!0),yield(d=this._transport)==null?void 0:d.destroy()}catch(t){throw(Z=this._worker)!=null&&Z.port&&delete this._worker._pendingDestroy,t}this._transport=null,this._worker&&(this._worker.destroy(),this._worker=null)})}};Os=new WeakMap,e(Ph,Os,0);let u2=Ph,Ah=class{constructor(U,l,d=!1,Z=null){this.length=U,this.initialData=l,this.progressiveDone=d,this.contentDispositionFilename=Z,this._rangeListeners=[],this._progressListeners=[],this._progressiveReadListeners=[],this._progressiveDoneListeners=[],this._readyCapability=Promise.withResolvers()}addRangeListener(U){this._rangeListeners.push(U)}addProgressListener(U){this._progressListeners.push(U)}addProgressiveReadListener(U){this._progressiveReadListeners.push(U)}addProgressiveDoneListener(U){this._progressiveDoneListeners.push(U)}onDataRange(U,l){for(const d of this._rangeListeners)d(U,l)}onDataProgress(U,l){this._readyCapability.promise.then(()=>{for(const d of this._progressListeners)d(U,l)})}onDataProgressiveRead(U){this._readyCapability.promise.then(()=>{for(const l of this._progressiveReadListeners)l(U)})}onDataProgressiveDone(){this._readyCapability.promise.then(()=>{for(const U of this._progressiveDoneListeners)U()})}transportReady(){this._readyCapability.resolve()}requestDataRange(U,l){zl("Abstract method PDFDataRangeTransport.requestDataRange")}abort(){}};class o2{constructor(l,d){this._pdfInfo=l,this._transport=d}get annotationStorage(){return this._transport.annotationStorage}get canvasFactory(){return this._transport.canvasFactory}get filterFactory(){return this._transport.filterFactory}get numPages(){return this._pdfInfo.numPages}get fingerprints(){return this._pdfInfo.fingerprints}get isPureXfa(){return Zl(this,"isPureXfa",!!this._transport._htmlForXfa)}get allXfaHtml(){return this._transport._htmlForXfa}getPage(l){return this._transport.getPage(l)}getPageIndex(l){return this._transport.getPageIndex(l)}getDestinations(){return this._transport.getDestinations()}getDestination(l){return this._transport.getDestination(l)}getPageLabels(){return this._transport.getPageLabels()}getPageLayout(){return this._transport.getPageLayout()}getPageMode(){return this._transport.getPageMode()}getViewerPreferences(){return this._transport.getViewerPreferences()}getOpenAction(){return this._transport.getOpenAction()}getAttachments(){return this._transport.getAttachments()}getJSActions(){return this._transport.getDocJSActions()}getOutline(){return this._transport.getOutline()}getOptionalContentConfig({intent:l="display"}={}){const{renderingIntent:d}=this._transport.getRenderingIntent(l);return this._transport.getOptionalContentConfig(d)}getPermissions(){return this._transport.getPermissions()}getMetadata(){return this._transport.getMetadata()}getMarkInfo(){return this._transport.getMarkInfo()}getData(){return this._transport.getData()}saveDocument(){return this._transport.saveDocument()}getDownloadInfo(){return this._transport.downloadInfoCapability.promise}cleanup(l=!1){return this._transport.startCleanup(l||this.isPureXfa)}destroy(){return this.loadingTask.destroy()}cachedPageNumber(l){return this._transport.cachedPageNumber(l)}get loadingParams(){return this._transport.loadingParams}get loadingTask(){return this._transport.loadingTask}getFieldObjects(){return this._transport.getFieldObjects()}hasJSActions(){return this._transport.hasJSActions()}getCalculationOrderIds(){return this._transport.getCalculationOrderIds()}}var Yt,CZ,TU,h0,Ln;class B2{constructor(l,d,Z,t=!1){e(this,TU),e(this,Yt,null),e(this,CZ,!1),this._pageIndex=l,this._pageInfo=d,this._transport=Z,this._stats=t?new iR:null,this._pdfBug=t,this.commonObjs=Z.commonObjs,this.objs=new _h,this._maybeCleanupAfterRender=!1,this._intentStates=new Map,this.destroyed=!1}get pageNumber(){return this._pageIndex+1}get rotate(){return this._pageInfo.rotate}get ref(){return this._pageInfo.ref}get userUnit(){return this._pageInfo.userUnit}get view(){return this._pageInfo.view}getViewport({scale:l,rotation:d=this.rotate,offsetX:Z=0,offsetY:t=0,dontFlip:F=!1}={}){return new PQ({viewBox:this.view,scale:l,rotation:d,offsetX:Z,offsetY:t,dontFlip:F})}getAnnotations({intent:l="display"}={}){const{renderingIntent:d}=this._transport.getRenderingIntent(l);return this._transport.getAnnotations(this._pageIndex,d)}getJSActions(){return this._transport.getPageJSActions(this._pageIndex)}get filterFactory(){return this._transport.filterFactory}get isPureXfa(){return Zl(this,"isPureXfa",!!this._transport._htmlForXfa)}getXfa(){return z(this,null,function*(){var l;return((l=this._transport._htmlForXfa)==null?void 0:l.children[this._pageIndex])||null})}render({canvasContext:l,viewport:d,intent:Z="display",annotationMode:t=wZ.ENABLE,transform:F=null,background:c=null,optionalContentConfigPromise:a=null,annotationCanvasMap:W=null,pageColors:n=null,printAnnotationStorage:V=null,isEditing:s=!1}){var i,R;(i=this._stats)==null||i.time("Overall");const h=this._transport.getRenderingIntent(Z,t,V,s),{renderingIntent:m,cacheKey:M}=h;b(this,CZ,!1),N(this,TU,Ln).call(this),a||(a=this._transport.getOptionalContentConfig(m));let J=this._intentStates.get(M);J||(J=Object.create(null),this._intentStates.set(M,J)),J.streamReaderCancelTimeout&&(clearTimeout(J.streamReaderCancelTimeout),J.streamReaderCancelTimeout=null);const T=!!(m&kd.PRINT);J.displayReadyCapability||(J.displayReadyCapability=Promise.withResolvers(),J.operatorList={fnArray:[],argsArray:[],lastChunk:!1,separateAnnots:null},(R=this._stats)==null||R.time("Page Request"),this._pumpOperatorList(h));const G=p=>{var o;J.renderTasks.delete(X),(this._maybeCleanupAfterRender||T)&&b(this,CZ,!0),N(this,TU,h0).call(this,!T),p?(X.capability.reject(p),this._abortOperatorList({intentState:J,reason:p instanceof Error?p:new Error(p)})):X.capability.resolve(),this._stats&&(this._stats.timeEnd("Rendering"),this._stats.timeEnd("Overall"),(o=globalThis.Stats)!=null&&o.enabled&&globalThis.Stats.add(this.pageNumber,this._stats))},X=new z2({callback:G,params:{canvasContext:l,viewport:d,transform:F,background:c},objs:this.objs,commonObjs:this.commonObjs,annotationCanvasMap:W,operatorList:J.operatorList,pageIndex:this._pageIndex,canvasFactory:this._transport.canvasFactory,filterFactory:this._transport.filterFactory,useRequestAnimationFrame:!T,pdfBug:this._pdfBug,pageColors:n});(J.renderTasks||(J.renderTasks=new Set)).add(X);const Y=X.task;return Promise.all([J.displayReadyCapability.promise,a]).then(([p,o])=>{var k;if(this.destroyed){G();return}if((k=this._stats)==null||k.time("Rendering"),!(o.renderingIntent&m))throw new Error("Must use the same `intent`-argument when calling the `PDFPageProxy.render` and `PDFDocumentProxy.getOptionalContentConfig` methods.");X.initializeGraphics({transparency:p,optionalContentConfig:o}),X.operatorListChanged()}).catch(G),Y}getOperatorList({intent:l="display",annotationMode:d=wZ.ENABLE,printAnnotationStorage:Z=null,isEditing:t=!1}={}){var F;function c(){W.operatorList.lastChunk&&(W.opListReadCapability.resolve(W.operatorList),W.renderTasks.delete(n))}const a=this._transport.getRenderingIntent(l,d,Z,t,!0);let W=this._intentStates.get(a.cacheKey);W||(W=Object.create(null),this._intentStates.set(a.cacheKey,W));let n;return W.opListReadCapability||(n=Object.create(null),n.operatorListChanged=c,W.opListReadCapability=Promise.withResolvers(),(W.renderTasks||(W.renderTasks=new Set)).add(n),W.operatorList={fnArray:[],argsArray:[],lastChunk:!1,separateAnnots:null},(F=this._stats)==null||F.time("Page Request"),this._pumpOperatorList(a)),W.opListReadCapability.promise}streamTextContent({includeMarkedContent:l=!1,disableNormalization:d=!1}={}){return this._transport.messageHandler.sendWithStream("GetTextContent",{pageIndex:this._pageIndex,includeMarkedContent:l===!0,disableNormalization:d===!0},{highWaterMark:100,size(Z){return Z.items.length}})}getTextContent(l={}){if(this._transport._htmlForXfa)return this.getXfa().then(Z=>KQ.textContent(Z));const d=this.streamTextContent(l);return new Promise(function(Z,t){function F(){c.read().then(function({value:W,done:n}){var V;if(n){Z(a);return}(V=a.lang)!=null||(a.lang=W.lang),Object.assign(a.styles,W.styles),a.items.push(...W.items),F()},t)}const c=d.getReader(),a={items:[],styles:Object.create(null),lang:null};F()})}getStructTree(){return this._transport.getStructTree(this._pageIndex)}_destroy(){this.destroyed=!0;const l=[];for(const d of this._intentStates.values())if(this._abortOperatorList({intentState:d,reason:new Error("Page was destroyed."),force:!0}),!d.opListReadCapability)for(const Z of d.renderTasks)l.push(Z.completed),Z.cancel();return this.objs.clear(),b(this,CZ,!1),N(this,TU,Ln).call(this),Promise.all(l)}cleanup(l=!1){b(this,CZ,!0);const d=N(this,TU,h0).call(this,!1);return l&&d&&this._stats&&(this._stats=new iR),d}_startRenderPage(l,d){var Z,t;const F=this._intentStates.get(d);F&&((Z=this._stats)==null||Z.timeEnd("Page Request"),(t=F.displayReadyCapability)==null||t.resolve(l))}_renderPageChunk(l,d){for(let Z=0,t=l.length;Z<t;Z++)d.operatorList.fnArray.push(l.fnArray[Z]),d.operatorList.argsArray.push(l.argsArray[Z]);d.operatorList.lastChunk=l.lastChunk,d.operatorList.separateAnnots=l.separateAnnots;for(const Z of d.renderTasks)Z.operatorListChanged();l.lastChunk&&N(this,TU,h0).call(this,!0)}_pumpOperatorList({renderingIntent:l,cacheKey:d,annotationStorageSerializable:Z,modifiedIds:t}){const{map:F,transfer:c}=Z,a=this._transport.messageHandler.sendWithStream("GetOperatorList",{pageIndex:this._pageIndex,intent:l,cacheKey:d,annotationStorage:F,modifiedIds:t},c).getReader(),W=this._intentStates.get(d);W.streamReader=a;const n=()=>{a.read().then(({value:V,done:s})=>{if(s){W.streamReader=null;return}this._transport.destroyed||(this._renderPageChunk(V,W),n())},V=>{if(W.streamReader=null,!this._transport.destroyed){if(W.operatorList){W.operatorList.lastChunk=!0;for(const s of W.renderTasks)s.operatorListChanged();N(this,TU,h0).call(this,!0)}if(W.displayReadyCapability)W.displayReadyCapability.reject(V);else if(W.opListReadCapability)W.opListReadCapability.reject(V);else throw V}})};n()}_abortOperatorList({intentState:l,reason:d,force:Z=!1}){if(l.streamReader){if(l.streamReaderCancelTimeout&&(clearTimeout(l.streamReaderCancelTimeout),l.streamReaderCancelTimeout=null),!Z){if(l.renderTasks.size>0)return;if(d instanceof gi){let t=e2;d.extraDelay>0&&d.extraDelay<1e3&&(t+=d.extraDelay),l.streamReaderCancelTimeout=setTimeout(()=>{l.streamReaderCancelTimeout=null,this._abortOperatorList({intentState:l,reason:d,force:!0})},t);return}}if(l.streamReader.cancel(new nF(d.message)).catch(()=>{}),l.streamReader=null,!this._transport.destroyed){for(const[t,F]of this._intentStates)if(F===l){this._intentStates.delete(t);break}this.cleanup()}}}get stats(){return this._stats}}Yt=new WeakMap,CZ=new WeakMap,TU=new WeakSet,h0=function(U=!1){if(N(this,TU,Ln).call(this),!Q(this,CZ)||this.destroyed)return!1;if(U)return b(this,Yt,setTimeout(()=>{b(this,Yt,null),N(this,TU,h0).call(this,!1)},M2)),!1;for(const{renderTasks:l,operatorList:d}of this._intentStates.values())if(l.size>0||!d.lastChunk)return!1;return this._intentStates.clear(),this.objs.clear(),b(this,CZ,!1),!0},Ln=function(){Q(this,Yt)&&(clearTimeout(Q(this,Yt)),b(this,Yt,null))};var vF,gs;class y2{constructor(){e(this,vF,new Set),e(this,gs,Promise.resolve())}postMessage(l,d){const Z={data:structuredClone(l,d?{transfer:d}:null)};Q(this,gs).then(()=>{for(const t of Q(this,vF))t.call(this,Z)})}addEventListener(l,d){Q(this,vF).add(d)}removeEventListener(l,d){Q(this,vF).delete(d)}terminate(){Q(this,vF).clear()}}vF=new WeakMap,gs=new WeakMap;var Gl,wV,pF,Rt,cc,pa,Qc,ua;let NW=(Gl=class{constructor({name:U=null,port:l=null,verbosity:d=Ze()}={}){e(this,cc);var Z;if(this.name=U,this.destroyed=!1,this.verbosity=d,this._readyCapability=Promise.withResolvers(),this._port=null,this._webWorker=null,this._messageHandler=null,l){if((Z=Q(Gl,Rt))!=null&&Z.has(l))throw new Error("Cannot use more than one PDFWorker per port.");(Q(Gl,Rt)||b(Gl,Rt,new WeakMap)).set(l,this),this._initializeFromPort(l);return}this._initialize()}get promise(){return Vd?Promise.all([$Z.promise,this._readyCapability.promise]):this._readyCapability.promise}get port(){return this._port}get messageHandler(){return this._messageHandler}_initializeFromPort(U){this._port=U,this._messageHandler=new Ic("main","worker",U),this._messageHandler.on("ready",function(){}),N(this,cc,pa).call(this)}_initialize(){if(Q(Gl,pF)||Q(Gl,Qc,ua)){this._setupFakeWorker();return}let{workerSrc:U}=Gl;try{Gl._isSameOrigin(window.location.href,U)||(U=Gl._createCDNWrapper(new URL(U,window.location).href));const l=new Worker(U,{type:"module"}),d=new Ic("main","worker",l),Z=()=>{t.abort(),d.destroy(),l.terminate(),this.destroyed?this._readyCapability.reject(new Error("Worker was destroyed")):this._setupFakeWorker()},t=new AbortController;l.addEventListener("error",()=>{this._webWorker||Z()},{signal:t.signal}),d.on("test",c=>{if(t.abort(),this.destroyed||!c){Z();return}this._messageHandler=d,this._port=l,this._webWorker=l,N(this,cc,pa).call(this)}),d.on("ready",c=>{if(t.abort(),this.destroyed){Z();return}try{F()}catch(a){this._setupFakeWorker()}});const F=()=>{const c=new Uint8Array;d.send("test",c,[c.buffer])};F();return}catch(l){tV("The worker has been disabled.")}this._setupFakeWorker()}_setupFakeWorker(){Q(Gl,pF)||(dl("Setting up fake worker."),b(Gl,pF,!0)),Gl._setupFakeWorkerGlobal.then(U=>{if(this.destroyed){this._readyCapability.reject(new Error("Worker was destroyed"));return}const l=new y2;this._port=l;const d=`fake${md(Gl,wV)._++}`,Z=new Ic(d+"_worker",d,l);U.setup(Z,l),this._messageHandler=new Ic(d,d+"_worker",l),N(this,cc,pa).call(this)}).catch(U=>{this._readyCapability.reject(new Error(`Setting up fake worker failed: "${U.message}".`))})}destroy(){var U;this.destroyed=!0,this._webWorker&&(this._webWorker.terminate(),this._webWorker=null),(U=Q(Gl,Rt))==null||U.delete(this._port),this._port=null,this._messageHandler&&(this._messageHandler.destroy(),this._messageHandler=null)}static fromPort(U){var l;if(!(U!=null&&U.port))throw new Error("PDFWorker.fromPort - invalid method signature.");const d=(l=Q(this,Rt))==null?void 0:l.get(U.port);if(d){if(d._pendingDestroy)throw new Error("PDFWorker.fromPort - the worker is being destroyed.\nPlease remember to await `PDFDocumentLoadingTask.destroy()`-calls.");return d}return new Gl(U)}static get workerSrc(){if(N0.workerSrc)return N0.workerSrc;throw new Error('No "GlobalWorkerOptions.workerSrc" specified.')}static get _setupFakeWorkerGlobal(){return Zl(this,"_setupFakeWorkerGlobal",z(this,null,function*(){return Q(this,Qc,ua)?Q(this,Qc,ua):(yield import(this.workerSrc)).WorkerMessageHandler}))}},wV=new WeakMap,pF=new WeakMap,Rt=new WeakMap,cc=new WeakSet,pa=function(){this._readyCapability.resolve(),this._messageHandler.send("configure",{verbosity:this.verbosity})},Qc=new WeakSet,ua=function(){var U;try{return((U=globalThis.pdfjsWorker)==null?void 0:U.WorkerMessageHandler)||null}catch(l){return null}},e(Gl,Qc),e(Gl,wV,0),e(Gl,pF,!1),e(Gl,Rt),Vd&&(b(Gl,pF,!0),N0.workerSrc||(N0.workerSrc="./pdf.worker.mjs")),Gl._isSameOrigin=(U,l)=>{let d;try{if(d=new URL(U),!d.origin||d.origin==="null")return!1}catch(t){return!1}const Z=new URL(l,d);return d.origin===Z.origin},Gl._createCDNWrapper=U=>{const l=`await import("${U}");`;return URL.createObjectURL(new Blob([l],{type:"text/javascript"}))},Gl);var xZ,gU,Cc,xc,KU,HF,rc;class k2{constructor(l,d,Z,t,F){e(this,HF),e(this,xZ,new Map),e(this,gU,new Map),e(this,Cc,new Map),e(this,xc,new Map),e(this,KU,null),this.messageHandler=l,this.loadingTask=d,this.commonObjs=new _h,this.fontLoader=new ue({ownerDocument:t.ownerDocument,styleElement:t.styleElement}),this.loadingParams=t.loadingParams,this._params=t,this.canvasFactory=F.canvasFactory,this.filterFactory=F.filterFactory,this.cMapReaderFactory=F.cMapReaderFactory,this.standardFontDataFactory=F.standardFontDataFactory,this.destroyed=!1,this.destroyCapability=null,this._networkStream=Z,this._fullReader=null,this._lastProgress=null,this.downloadInfoCapability=Promise.withResolvers(),this.setupMessageHandler()}get annotationStorage(){return Zl(this,"annotationStorage",new Pi)}getRenderingIntent(l,d=wZ.ENABLE,Z=null,t=!1,F=!1){let c=kd.DISPLAY,a=Is;switch(l){case"any":c=kd.ANY;break;case"display":break;case"print":c=kd.PRINT;break;default:dl(`getRenderingIntent - invalid intent: ${l}`)}const W=c&kd.PRINT&&Z instanceof Ih?Z:this.annotationStorage;switch(d){case wZ.DISABLE:c+=kd.ANNOTATIONS_DISABLE;break;case wZ.ENABLE:break;case wZ.ENABLE_FORMS:c+=kd.ANNOTATIONS_FORMS;break;case wZ.ENABLE_STORAGE:c+=kd.ANNOTATIONS_STORAGE,a=W.serializable;break;default:dl(`getRenderingIntent - invalid annotationMode: ${d}`)}t&&(c+=kd.IS_EDITING),F&&(c+=kd.OPLIST);const{ids:n,hash:V}=W.modifiedIds,s=[c,a.hash,V];return{renderingIntent:c,cacheKey:s.join("_"),annotationStorageSerializable:a,modifiedIds:n}}destroy(){var l;if(this.destroyCapability)return this.destroyCapability.promise;this.destroyed=!0,this.destroyCapability=Promise.withResolvers(),(l=Q(this,KU))==null||l.reject(new Error("Worker was destroyed during onPassword callback"));const d=[];for(const t of Q(this,gU).values())d.push(t._destroy());Q(this,gU).clear(),Q(this,Cc).clear(),Q(this,xc).clear(),this.hasOwnProperty("annotationStorage")&&this.annotationStorage.resetModified();const Z=this.messageHandler.sendWithPromise("Terminate",null);return d.push(Z),Promise.all(d).then(()=>{var t;this.commonObjs.clear(),this.fontLoader.clear(),Q(this,xZ).clear(),this.filterFactory.destroy(),js.cleanup(),(t=this._networkStream)==null||t.cancelAllRequests(new nF("Worker was terminated.")),this.messageHandler&&(this.messageHandler.destroy(),this.messageHandler=null),this.destroyCapability.resolve()},this.destroyCapability.reject),this.destroyCapability.promise}setupMessageHandler(){const{messageHandler:l,loadingTask:d}=this;l.on("GetReader",(Z,t)=>{jl(this._networkStream,"GetReader - no `IPDFStream` instance available."),this._fullReader=this._networkStream.getFullReader(),this._fullReader.onProgress=F=>{this._lastProgress={loaded:F.loaded,total:F.total}},t.onPull=()=>{this._fullReader.read().then(function({value:F,done:c}){if(c){t.close();return}jl(F instanceof ArrayBuffer,"GetReader - expected an ArrayBuffer."),t.enqueue(new Uint8Array(F),1,[F])}).catch(F=>{t.error(F)})},t.onCancel=F=>{this._fullReader.cancel(F),t.ready.catch(c=>{if(!this.destroyed)throw c})}}),l.on("ReaderHeadersReady",Z=>{const t=Promise.withResolvers(),F=this._fullReader;return F.headersReady.then(()=>{var c;(!F.isStreamingSupported||!F.isRangeSupported)&&(this._lastProgress&&((c=d.onProgress)==null||c.call(d,this._lastProgress)),F.onProgress=a=>{var W;(W=d.onProgress)==null||W.call(d,{loaded:a.loaded,total:a.total})}),t.resolve({isStreamingSupported:F.isStreamingSupported,isRangeSupported:F.isRangeSupported,contentLength:F.contentLength})},t.reject),t.promise}),l.on("GetRangeReader",(Z,t)=>{jl(this._networkStream,"GetRangeReader - no `IPDFStream` instance available.");const F=this._networkStream.getRangeReader(Z.begin,Z.end);if(!F){t.close();return}t.onPull=()=>{F.read().then(function({value:c,done:a}){if(a){t.close();return}jl(c instanceof ArrayBuffer,"GetRangeReader - expected an ArrayBuffer."),t.enqueue(new Uint8Array(c),1,[c])}).catch(c=>{t.error(c)})},t.onCancel=c=>{F.cancel(c),t.ready.catch(a=>{if(!this.destroyed)throw a})}}),l.on("GetDoc",({pdfInfo:Z})=>{this._numPages=Z.numPages,this._htmlForXfa=Z.htmlForXfa,delete Z.htmlForXfa,d._capability.resolve(new o2(Z,this))}),l.on("DocException",function(Z){let t;switch(Z.name){case"PasswordException":t=new Ms(Z.message,Z.code);break;case"InvalidPDFException":t=new nh(Z.message);break;case"MissingPDFException":t=new WF(Z.message);break;case"UnexpectedResponseException":t=new FV(Z.message,Z.status);break;case"UnknownErrorException":t=new Js(Z.message,Z.details);break;default:zl("DocException - expected a valid Error.")}d._capability.reject(t)}),l.on("PasswordRequest",Z=>{if(b(this,KU,Promise.withResolvers()),d.onPassword){const t=F=>{F instanceof Error?Q(this,KU).reject(F):Q(this,KU).resolve({password:F})};try{d.onPassword(t,Z.code)}catch(F){Q(this,KU).reject(F)}}else Q(this,KU).reject(new Ms(Z.message,Z.code));return Q(this,KU).promise}),l.on("DataLoaded",Z=>{var t;(t=d.onProgress)==null||t.call(d,{loaded:Z.length,total:Z.length}),this.downloadInfoCapability.resolve(Z)}),l.on("StartRenderPage",Z=>{this.destroyed||Q(this,gU).get(Z.pageIndex)._startRenderPage(Z.transparency,Z.cacheKey)}),l.on("commonobj",([Z,t,F])=>{var c;if(this.destroyed||this.commonObjs.has(Z))return null;switch(t){case"Font":const{disableFontFace:a,fontExtraProperties:W,pdfBug:n}=this._params;if("error"in F){const R=F.error;dl(`Error during font loading: ${R}`),this.commonObjs.resolve(Z,R);break}const V=n&&(c=globalThis.FontInspector)!=null&&c.enabled?(R,h)=>globalThis.FontInspector.fontAdded(R,h):null,s=new oe(F,{disableFontFace:a,inspectFont:V});this.fontLoader.bind(s).catch(()=>l.sendWithPromise("FontFallback",{id:Z})).finally(()=>{!W&&s.data&&(s.data=null),this.commonObjs.resolve(Z,s)});break;case"CopyLocalImage":const{imageRef:i}=F;jl(i,"The imageRef must be defined.");for(const R of Q(this,gU).values())for(const[,h]of R.objs)if((h==null?void 0:h.ref)===i)return h.dataLen?(this.commonObjs.resolve(Z,structuredClone(h)),h.dataLen):null;break;case"FontPath":case"Image":case"Pattern":this.commonObjs.resolve(Z,F);break;default:throw new Error(`Got unknown common object type ${t}`)}return null}),l.on("obj",([Z,t,F,c])=>{var a;if(this.destroyed)return;const W=Q(this,gU).get(t);if(!W.objs.has(Z)){if(W._intentStates.size===0){(a=c==null?void 0:c.bitmap)==null||a.close();return}switch(F){case"Image":W.objs.resolve(Z,c),(c==null?void 0:c.dataLen)>qm&&(W._maybeCleanupAfterRender=!0);break;case"Pattern":W.objs.resolve(Z,c);break;default:throw new Error(`Got unknown object type ${F}`)}}}),l.on("DocProgress",Z=>{var t;this.destroyed||(t=d.onProgress)==null||t.call(d,{loaded:Z.loaded,total:Z.total})}),l.on("FetchBuiltInCMap",Z=>this.destroyed?Promise.reject(new Error("Worker was destroyed.")):this.cMapReaderFactory?this.cMapReaderFactory.fetch(Z):Promise.reject(new Error("CMapReaderFactory not initialized, see the `useWorkerFetch` parameter."))),l.on("FetchStandardFontData",Z=>this.destroyed?Promise.reject(new Error("Worker was destroyed.")):this.standardFontDataFactory?this.standardFontDataFactory.fetch(Z):Promise.reject(new Error("StandardFontDataFactory not initialized, see the `useWorkerFetch` parameter.")))}getData(){return this.messageHandler.sendWithPromise("GetData",null)}saveDocument(){var t;var l;this.annotationStorage.size<=0&&dl("saveDocument called while `annotationStorage` is empty, please use the getData-method instead.");const{map:d,transfer:Z}=this.annotationStorage.serializable;return this.messageHandler.sendWithPromise("SaveDocument",{isPureXfa:!!this._htmlForXfa,numPages:this._numPages,annotationStorage:d,filename:(t=(l=this._fullReader)==null?void 0:l.filename)!=null?t:null},Z).finally(()=>{this.annotationStorage.resetModified()})}getPage(l){if(!Number.isInteger(l)||l<=0||l>this._numPages)return Promise.reject(new Error("Invalid page request."));const d=l-1,Z=Q(this,Cc).get(d);if(Z)return Z;const t=this.messageHandler.sendWithPromise("GetPage",{pageIndex:d}).then(F=>{if(this.destroyed)throw new Error("Transport destroyed");F.refStr&&Q(this,xc).set(F.refStr,l);const c=new B2(d,F,this,this._params.pdfBug);return Q(this,gU).set(d,c),c});return Q(this,Cc).set(d,t),t}getPageIndex(l){return HR(l)?this.messageHandler.sendWithPromise("GetPageIndex",{num:l.num,gen:l.gen}):Promise.reject(new Error("Invalid pageIndex request."))}getAnnotations(l,d){return this.messageHandler.sendWithPromise("GetAnnotations",{pageIndex:l,intent:d})}getFieldObjects(){return N(this,HF,rc).call(this,"GetFieldObjects")}hasJSActions(){return N(this,HF,rc).call(this,"HasJSActions")}getCalculationOrderIds(){return this.messageHandler.sendWithPromise("GetCalculationOrderIds",null)}getDestinations(){return this.messageHandler.sendWithPromise("GetDestinations",null)}getDestination(l){return typeof l!="string"?Promise.reject(new Error("Invalid destination request.")):this.messageHandler.sendWithPromise("GetDestination",{id:l})}getPageLabels(){return this.messageHandler.sendWithPromise("GetPageLabels",null)}getPageLayout(){return this.messageHandler.sendWithPromise("GetPageLayout",null)}getPageMode(){return this.messageHandler.sendWithPromise("GetPageMode",null)}getViewerPreferences(){return this.messageHandler.sendWithPromise("GetViewerPreferences",null)}getOpenAction(){return this.messageHandler.sendWithPromise("GetOpenAction",null)}getAttachments(){return this.messageHandler.sendWithPromise("GetAttachments",null)}getDocJSActions(){return N(this,HF,rc).call(this,"GetDocJSActions")}getPageJSActions(l){return this.messageHandler.sendWithPromise("GetPageJSActions",{pageIndex:l})}getStructTree(l){return this.messageHandler.sendWithPromise("GetStructTree",{pageIndex:l})}getOutline(){return this.messageHandler.sendWithPromise("GetOutline",null)}getOptionalContentConfig(l){return N(this,HF,rc).call(this,"GetOptionalContentConfig").then(d=>new _e(d,l))}getPermissions(){return this.messageHandler.sendWithPromise("GetPermissions",null)}getMetadata(){const l="GetMetadata",d=Q(this,xZ).get(l);if(d)return d;const Z=this.messageHandler.sendWithPromise(l,null).then(t=>{var a,W;var F,c;return{info:t[0],metadata:t[1]?new fe(t[1]):null,contentDispositionFilename:(a=(F=this._fullReader)==null?void 0:F.filename)!=null?a:null,contentLength:(W=(c=this._fullReader)==null?void 0:c.contentLength)!=null?W:null}});return Q(this,xZ).set(l,Z),Z}getMarkInfo(){return this.messageHandler.sendWithPromise("GetMarkInfo",null)}startCleanup(l=!1){return z(this,null,function*(){if(!this.destroyed){yield this.messageHandler.sendWithPromise("Cleanup",null);for(const d of Q(this,gU).values())if(!d.cleanup())throw new Error(`startCleanup: Page ${d.pageNumber} is currently rendering.`);this.commonObjs.clear(),l||this.fontLoader.clear(),Q(this,xZ).clear(),this.filterFactory.destroy(!0),js.cleanup()}})}cachedPageNumber(l){var Z;if(!HR(l))return null;const d=l.gen===0?`${l.num}R`:`${l.num}R${l.gen}`;return(Z=Q(this,xc).get(d))!=null?Z:null}}xZ=new WeakMap,gU=new WeakMap,Cc=new WeakMap,xc=new WeakMap,KU=new WeakMap,HF=new WeakSet,rc=function(U,l=null){const d=Q(this,xZ).get(U);if(d)return d;const Z=this.messageHandler.sendWithPromise(U,l);return Q(this,xZ).set(U,Z),Z};const hW=Symbol("INITIAL_DATA");var eU,bW,Ks;class _h{constructor(){e(this,bW),e(this,eU,Object.create(null))}get(l,d=null){if(d){const t=N(this,bW,Ks).call(this,l);return t.promise.then(()=>d(t.data)),null}const Z=Q(this,eU)[l];if(!Z||Z.data===hW)throw new Error(`Requesting object that isn't resolved yet ${l}.`);return Z.data}has(l){const d=Q(this,eU)[l];return!!d&&d.data!==hW}resolve(l,d=null){const Z=N(this,bW,Ks).call(this,l);Z.data=d,Z.resolve()}clear(){var l;for(const d in Q(this,eU)){const{data:Z}=Q(this,eU)[d];(l=Z==null?void 0:Z.bitmap)==null||l.close()}b(this,eU,Object.create(null))}*[Symbol.iterator](){for(const l in Q(this,eU)){const{data:d}=Q(this,eU)[l];d!==hW&&(yield[l,d])}}}eU=new WeakMap,bW=new WeakSet,Ks=function(U){var l;return(l=Q(this,eU))[U]||(l[U]=WU(ul({},Promise.withResolvers()),{data:hW}))};var pt;class L2{constructor(l){e(this,pt,null),b(this,pt,l),this.onContinue=null}get promise(){return Q(this,pt).capability.promise}cancel(l=0){Q(this,pt).cancel(null,l)}get separateAnnots(){const{separateAnnots:l}=Q(this,pt).operatorList;if(!l)return!1;const{annotationCanvasMap:d}=Q(this,pt);return l.form||l.canvas&&(d==null?void 0:d.size)>0}}pt=new WeakMap;var ut,b0;const qh=class jc{constructor({callback:l,params:d,objs:Z,commonObjs:t,annotationCanvasMap:F,operatorList:c,pageIndex:a,canvasFactory:W,filterFactory:n,useRequestAnimationFrame:V=!1,pdfBug:s=!1,pageColors:i=null}){e(this,ut,null),this.callback=l,this.params=d,this.objs=Z,this.commonObjs=t,this.annotationCanvasMap=F,this.operatorListIdx=null,this.operatorList=c,this._pageIndex=a,this.canvasFactory=W,this.filterFactory=n,this._pdfBug=s,this.pageColors=i,this.running=!1,this.graphicsReadyCallback=null,this.graphicsReady=!1,this._useRequestAnimationFrame=V===!0&&typeof window<"u",this.cancelled=!1,this.capability=Promise.withResolvers(),this.task=new L2(this),this._cancelBound=this.cancel.bind(this),this._continueBound=this._continue.bind(this),this._scheduleNextBound=this._scheduleNext.bind(this),this._nextBound=this._next.bind(this),this._canvas=d.canvasContext.canvas}get completed(){return this.capability.promise.catch(function(){})}initializeGraphics({transparency:l=!1,optionalContentConfig:d}){var Z,t;if(this.cancelled)return;if(this._canvas){if(Q(jc,b0).has(this._canvas))throw new Error("Cannot use the same canvas during multiple render() operations. Use different canvas or ensure previous operations were cancelled or completed.");Q(jc,b0).add(this._canvas)}this._pdfBug&&(Z=globalThis.StepperManager)!=null&&Z.enabled&&(this.stepper=globalThis.StepperManager.create(this._pageIndex),this.stepper.init(this.operatorList),this.stepper.nextBreakPoint=this.stepper.getNextBreakPoint());const{canvasContext:F,viewport:c,transform:a,background:W}=this.params;this.gfx=new nW(F,this.commonObjs,this.objs,this.canvasFactory,this.filterFactory,{optionalContentConfig:d},this.annotationCanvasMap,this.pageColors),this.gfx.beginDrawing({transform:a,viewport:c,transparency:l,background:W}),this.operatorListIdx=0,this.graphicsReady=!0,(t=this.graphicsReadyCallback)==null||t.call(this)}cancel(l=null,d=0){var Z;this.running=!1,this.cancelled=!0,(Z=this.gfx)==null||Z.endDrawing(),Q(this,ut)&&(window.cancelAnimationFrame(Q(this,ut)),b(this,ut,null)),Q(jc,b0).delete(this._canvas),this.callback(l||new gi(`Rendering cancelled, page ${this._pageIndex+1}`,d))}operatorListChanged(){var l;if(!this.graphicsReady){this.graphicsReadyCallback||(this.graphicsReadyCallback=this._continueBound);return}(l=this.stepper)==null||l.updateOperatorList(this.operatorList),!this.running&&this._continue()}_continue(){this.running=!0,!this.cancelled&&(this.task.onContinue?this.task.onContinue(this._scheduleNextBound):this._scheduleNext())}_scheduleNext(){this._useRequestAnimationFrame?b(this,ut,window.requestAnimationFrame(()=>{b(this,ut,null),this._nextBound().catch(this._cancelBound)})):Promise.resolve().then(this._nextBound).catch(this._cancelBound)}_next(){return z(this,null,function*(){this.cancelled||(this.operatorListIdx=this.gfx.executeOperatorList(this.operatorList,this.operatorListIdx,this._continueBound,this.stepper),this.operatorListIdx===this.operatorList.argsArray.length&&(this.running=!1,this.operatorList.lastChunk&&(this.gfx.endDrawing(),Q(jc,b0).delete(this._canvas),this.callback())))})}};ut=new WeakMap,b0=new WeakMap,e(qh,b0,new WeakSet);let z2=qh;const I2="4.7.76",D2="8b73b828b";Ql(670);function PR(U){return Math.floor(Math.max(0,Math.min(1,U))*255).toString(16).padStart(2,"0")}function ac(U){return Math.max(0,Math.min(255,255*U))}class fR{static CMYK_G([l,d,Z,t]){return["G",1-Math.min(1,.3*l+.59*Z+.11*d+t)]}static G_CMYK([l]){return["CMYK",0,0,0,1-l]}static G_RGB([l]){return["RGB",l,l,l]}static G_rgb([l]){return l=ac(l),[l,l,l]}static G_HTML([l]){const d=PR(l);return`#${d}${d}${d}`}static RGB_G([l,d,Z]){return["G",.3*l+.59*d+.11*Z]}static RGB_rgb(l){return l.map(ac)}static RGB_HTML(l){return`#${l.map(PR).join("")}`}static T_HTML(){return"#00000000"}static T_rgb(){return[null]}static CMYK_RGB([l,d,Z,t]){return["RGB",1-Math.min(1,l+t),1-Math.min(1,Z+t),1-Math.min(1,d+t)]}static CMYK_rgb([l,d,Z,t]){return[ac(1-Math.min(1,l+t)),ac(1-Math.min(1,Z+t)),ac(1-Math.min(1,d+t))]}static CMYK_HTML(l){const d=this.CMYK_RGB(l).slice(1);return this.RGB_HTML(d)}static RGB_CMYK([l,d,Z]){const t=1-l,F=1-d,c=1-Z,a=Math.min(t,F,c);return["CMYK",t,F,c,a]}}let $h=class{static setupStorage(U,l,d,Z,t){const F=Z.getValue(l,{value:null});switch(d.name){case"textarea":if(F.value!==null&&(U.textContent=F.value),t==="print")break;U.addEventListener("input",c=>{Z.setValue(l,{value:c.target.value})});break;case"input":if(d.attributes.type==="radio"||d.attributes.type==="checkbox"){if(F.value===d.attributes.xfaOn?U.setAttribute("checked",!0):F.value===d.attributes.xfaOff&&U.removeAttribute("checked"),t==="print")break;U.addEventListener("change",c=>{Z.setValue(l,{value:c.target.checked?c.target.getAttribute("xfaOn"):c.target.getAttribute("xfaOff")})})}else{if(F.value!==null&&U.setAttribute("value",F.value),t==="print")break;U.addEventListener("input",c=>{Z.setValue(l,{value:c.target.value})})}break;case"select":if(F.value!==null){U.setAttribute("value",F.value);for(const c of d.children)c.attributes.value===F.value?c.attributes.selected=!0:c.attributes.hasOwnProperty("selected")&&delete c.attributes.selected}U.addEventListener("input",c=>{const a=c.target.options,W=a.selectedIndex===-1?"":a[a.selectedIndex].value;Z.setValue(l,{value:W})});break}}static setAttributes({html:U,element:l,storage:d=null,intent:Z,linkService:t}){const{attributes:F}=l,c=U instanceof HTMLAnchorElement;F.type==="radio"&&(F.name=`${F.name}-${Z}`);for(const[a,W]of Object.entries(F))if(W!=null)switch(a){case"class":W.length&&U.setAttribute(a,W.join(" "));break;case"dataId":break;case"id":U.setAttribute("data-element-id",W);break;case"style":Object.assign(U.style,W);break;case"textContent":U.textContent=W;break;default:(!c||a!=="href"&&a!=="newWindow")&&U.setAttribute(a,W)}c&&t.addLinkAttributes(U,F.href,F.newWindow),d&&F.dataId&&this.setupStorage(U,F.dataId,l,d)}static render(U){var l,d;const Z=U.annotationStorage,t=U.linkService,F=U.xfaHtml,c=U.intent||"display",a=document.createElement(F.name);F.attributes&&this.setAttributes({html:a,element:F,intent:c,linkService:t});const W=c!=="richText",n=U.div;if(n.append(a),U.viewport){const i=`matrix(${U.viewport.transform.join(",")})`;n.style.transform=i}W&&n.setAttribute("class","xfaLayer xfaFont");const V=[];if(F.children.length===0){if(F.value){const i=document.createTextNode(F.value);a.append(i),W&&KQ.shouldBuildText(F.name)&&V.push(i)}return{textDivs:V}}const s=[[F,-1,a]];for(;s.length>0;){const[i,R,h]=s.at(-1);if(R+1===i.children.length){s.pop();continue}const m=i.children[++s.at(-1)[1]];if(m===null)continue;const{name:M}=m;if(M==="#text"){const T=document.createTextNode(m.value);V.push(T),h.append(T);continue}const J=(l=m==null?void 0:m.attributes)!=null&&l.xmlns?document.createElementNS(m.attributes.xmlns,M):document.createElement(M);if(h.append(J),m.attributes&&this.setAttributes({html:J,element:m,storage:Z,intent:c,linkService:t}),((d=m.children)==null?void 0:d.length)>0)s.push([m,-1,J]);else if(m.value){const T=document.createTextNode(m.value);W&&KQ.shouldBuildText(M)&&V.push(T),J.append(T)}}for(const i of n.querySelectorAll(".xfaNonInteractive input, .xfaNonInteractive textarea"))i.setAttribute("readOnly",!0);return{textDivs:V}}static update(U){const l=`matrix(${U.viewport.transform.join(",")})`;U.div.style.transform=l,U.div.hidden=!1}};const AQ=1e3,E2=9,aF=new WeakSet;function iZ(U){return{width:U[2]-U[0],height:U[3]-U[1]}}class w2{static create(l){switch(l.data.annotationType){case wl.LINK:return new Zb(l);case wl.TEXT:return new x2(l);case wl.WIDGET:switch(l.data.fieldType){case"Tx":return new r2(l);case"Btn":return l.data.radioButton?new tb(l):l.data.checkBox?new O2(l):new g2(l);case"Ch":return new K2(l);case"Sig":return new j2(l)}return new VF(l);case wl.POPUP:return new Hs(l);case wl.FREETEXT:return new Qb(l);case wl.LINE:return new H2(l);case wl.SQUARE:return new P2(l);case wl.CIRCLE:return new f2(l);case wl.POLYLINE:return new ab(l);case wl.CARET:return new _2(l);case wl.INK:return new $i(l);case wl.POLYGON:return new A2(l);case wl.HIGHLIGHT:return new Wb(l);case wl.UNDERLINE:return new q2(l);case wl.SQUIGGLY:return new $2(l);case wl.STRIKEOUT:return new lM(l);case wl.STAMP:return new nb(l);case wl.FILEATTACHMENT:return new dM(l);default:return new Ol(l)}}}var ot,Oc,gc,mW,vs;const C2=class lb{constructor(l,{isRenderable:d=!1,ignoreBorder:Z=!1,createQuadrilaterals:t=!1}={}){e(this,mW),e(this,ot,null),e(this,Oc,!1),e(this,gc,null),this.isRenderable=d,this.data=l.data,this.layer=l.layer,this.linkService=l.linkService,this.downloadManager=l.downloadManager,this.imageResourcesPath=l.imageResourcesPath,this.renderForms=l.renderForms,this.svgFactory=l.svgFactory,this.annotationStorage=l.annotationStorage,this.enableScripting=l.enableScripting,this.hasJSActions=l.hasJSActions,this._fieldObjects=l.fieldObjects,this.parent=l.parent,d&&(this.container=this._createContainer(Z)),t&&this._createQuadrilaterals()}static _hasPopupData({titleObj:l,contentsObj:d,richText:Z}){return!!(l!=null&&l.str||d!=null&&d.str||Z!=null&&Z.str)}get _isEditable(){return this.data.isEditable}get hasPopupData(){return lb._hasPopupData(this.data)}updateEdited(l){var d;if(!this.container)return;Q(this,ot)||b(this,ot,{rect:this.data.rect.slice(0)});const{rect:Z}=l;Z&&N(this,mW,vs).call(this,Z),(d=Q(this,gc))==null||d.popup.updateEdited(l)}resetEdited(){var l;Q(this,ot)&&(N(this,mW,vs).call(this,Q(this,ot).rect),(l=Q(this,gc))==null||l.popup.resetEdited(),b(this,ot,null))}_createContainer(l){const{data:d,parent:{page:Z,viewport:t}}=this,F=document.createElement("section");F.setAttribute("data-annotation-id",d.id),this instanceof VF||(F.tabIndex=AQ);const{style:c}=F;if(c.zIndex=this.parent.zIndex++,d.popupRef&&F.setAttribute("aria-haspopup","dialog"),d.alternativeText&&(F.title=d.alternativeText),d.noRotate&&F.classList.add("norotate"),!d.rect||this instanceof Hs){const{rotation:m}=d;return!d.hasOwnCanvas&&m!==0&&this.setRotation(m,F),F}const{width:a,height:W}=iZ(d.rect);if(!l&&d.borderStyle.width>0){c.borderWidth=`${d.borderStyle.width}px`;const m=d.borderStyle.horizontalCornerRadius,M=d.borderStyle.verticalCornerRadius;if(m>0||M>0){const T=`calc(${m}px * var(--scale-factor)) / calc(${M}px * var(--scale-factor))`;c.borderRadius=T}else if(this instanceof tb){const T=`calc(${a}px * var(--scale-factor)) / calc(${W}px * var(--scale-factor))`;c.borderRadius=T}switch(d.borderStyle.style){case K0.SOLID:c.borderStyle="solid";break;case K0.DASHED:c.borderStyle="dashed";break;case K0.BEVELED:dl("Unimplemented border style: beveled");break;case K0.INSET:dl("Unimplemented border style: inset");break;case K0.UNDERLINE:c.borderBottomStyle="solid";break}const J=d.borderColor||null;J?(b(this,Oc,!0),c.borderColor=O.makeHexColor(J[0]|0,J[1]|0,J[2]|0)):c.borderWidth=0}const n=O.normalizeRect([d.rect[0],Z.view[3]-d.rect[1]+Z.view[1],d.rect[2],Z.view[3]-d.rect[3]+Z.view[1]]),{pageWidth:V,pageHeight:s,pageX:i,pageY:R}=t.rawDims;c.left=`${100*(n[0]-i)/V}%`,c.top=`${100*(n[1]-R)/s}%`;const{rotation:h}=d;return d.hasOwnCanvas||h===0?(c.width=`${100*a/V}%`,c.height=`${100*W/s}%`):this.setRotation(h,F),F}setRotation(l,d=this.container){if(!this.data.rect)return;const{pageWidth:Z,pageHeight:t}=this.parent.viewport.rawDims,{width:F,height:c}=iZ(this.data.rect);let a,W;l%180===0?(a=100*F/Z,W=100*c/t):(a=100*c/Z,W=100*F/t),d.style.width=`${a}%`,d.style.height=`${W}%`,d.setAttribute("data-main-rotation",(360-l)%360)}get _commonActions(){const l=(d,Z,t)=>{const F=t.detail[d],c=F[0],a=F.slice(1);t.target.style[Z]=fR[`${c}_HTML`](a),this.annotationStorage.setValue(this.data.id,{[Z]:fR[`${c}_rgb`](a)})};return Zl(this,"_commonActions",{display:d=>{const{display:Z}=d.detail,t=Z%2===1;this.container.style.visibility=t?"hidden":"visible",this.annotationStorage.setValue(this.data.id,{noView:t,noPrint:Z===1||Z===2})},print:d=>{this.annotationStorage.setValue(this.data.id,{noPrint:!d.detail.print})},hidden:d=>{const{hidden:Z}=d.detail;this.container.style.visibility=Z?"hidden":"visible",this.annotationStorage.setValue(this.data.id,{noPrint:Z,noView:Z})},focus:d=>{setTimeout(()=>d.target.focus({preventScroll:!1}),0)},userName:d=>{d.target.title=d.detail.userName},readonly:d=>{d.target.disabled=d.detail.readonly},required:d=>{this._setRequired(d.target,d.detail.required)},bgColor:d=>{l("bgColor","backgroundColor",d)},fillColor:d=>{l("fillColor","backgroundColor",d)},fgColor:d=>{l("fgColor","color",d)},textColor:d=>{l("textColor","color",d)},borderColor:d=>{l("borderColor","borderColor",d)},strokeColor:d=>{l("strokeColor","borderColor",d)},rotation:d=>{const Z=d.detail.rotation;this.setRotation(Z),this.annotationStorage.setValue(this.data.id,{rotation:Z})}})}_dispatchEventFromSandbox(l,d){const Z=this._commonActions;for(const t of Object.keys(d.detail)){const F=l[t]||Z[t];F==null||F(d)}}_setDefaultPropertiesFromJS(l){if(!this.enableScripting)return;const d=this.annotationStorage.getRawValue(this.data.id);if(!d)return;const Z=this._commonActions;for(const[t,F]of Object.entries(d)){const c=Z[t];if(c){const a={detail:{[t]:F},target:l};c(a),delete d[t]}}}_createQuadrilaterals(){if(!this.container)return;const{quadPoints:l}=this.data;if(!l)return;const[d,Z,t,F]=this.data.rect.map(m=>Math.fround(m));if(l.length===8){const[m,M,J,T]=l.subarray(2,6);if(t===m&&F===M&&d===J&&Z===T)return}const{style:c}=this.container;let a;if(Q(this,Oc)){const{borderColor:m,borderWidth:M}=c;c.borderWidth=0,a=["url('data:image/svg+xml;utf8,",'<svg xmlns="http://www.w3.org/2000/svg"',' preserveAspectRatio="none" viewBox="0 0 1 1">',`<g fill="transparent" stroke="${m}" stroke-width="${M}">`],this.container.classList.add("hasBorder")}const W=t-d,n=F-Z,{svgFactory:V}=this,s=V.createElement("svg");s.classList.add("quadrilateralsContainer"),s.setAttribute("width",0),s.setAttribute("height",0);const i=V.createElement("defs");s.append(i);const R=V.createElement("clipPath"),h=`clippath_${this.data.id}`;R.setAttribute("id",h),R.setAttribute("clipPathUnits","objectBoundingBox"),i.append(R);for(let m=2,M=l.length;m<M;m+=8){const J=l[m],T=l[m+1],G=l[m+2],X=l[m+3],Y=V.createElement("rect"),p=(G-d)/W,o=(F-T)/n,k=(J-G)/W,S=(T-X)/n;Y.setAttribute("x",p),Y.setAttribute("y",o),Y.setAttribute("width",k),Y.setAttribute("height",S),R.append(Y),a==null||a.push(`<rect vector-effect="non-scaling-stroke" x="${p}" y="${o}" width="${k}" height="${S}"/>`)}Q(this,Oc)&&(a.push("</g></svg>')"),c.backgroundImage=a.join("")),this.container.append(s),this.container.style.clipPath=`url(#${h})`}_createPopup(){const{container:l,data:d}=this;l.setAttribute("aria-haspopup","dialog");const Z=b(this,gc,new Hs({data:{color:d.color,titleObj:d.titleObj,modificationDate:d.modificationDate,contentsObj:d.contentsObj,richText:d.richText,parentRect:d.rect,borderStyle:0,id:`popup_${d.id}`,rotation:d.rotation},parent:this.parent,elements:[this]}));this.parent.div.append(Z.render())}render(){zl("Abstract method `AnnotationElement.render` called")}_getElementsByName(l,d=null){const Z=[];if(this._fieldObjects){const t=this._fieldObjects[l];if(t)for(const{page:F,id:c,exportValues:a}of t){if(F===-1||c===d)continue;const W=typeof a=="string"?a:null,n=document.querySelector(`[data-element-id="${c}"]`);if(n&&!aF.has(n)){dl(`_getElementsByName - element not allowed: ${c}`);continue}Z.push({id:c,exportValue:W,domElement:n})}return Z}for(const t of document.getElementsByName(l)){const{exportValue:F}=t,c=t.getAttribute("data-element-id");c!==d&&aF.has(t)&&Z.push({id:c,exportValue:F,domElement:t})}return Z}show(){var l;this.container&&(this.container.hidden=!1),(l=this.popup)==null||l.maybeShow()}hide(){var l;this.container&&(this.container.hidden=!0),(l=this.popup)==null||l.forceHide()}getElementsToTriggerPopup(){return this.container}addHighlightArea(){const l=this.getElementsToTriggerPopup();if(Array.isArray(l))for(const d of l)d.classList.add("highlightArea");else l.classList.add("highlightArea")}_editOnDoubleClick(){if(!this._isEditable)return;const{annotationEditorType:l,data:{id:d}}=this;this.container.addEventListener("dblclick",()=>{var Z;(Z=this.linkService.eventBus)==null||Z.dispatch("switchannotationeditormode",{source:this,mode:l,editId:d})})}};ot=new WeakMap,Oc=new WeakMap,gc=new WeakMap,mW=new WeakSet,vs=function(U){const{container:{style:l},data:{rect:d,rotation:Z},parent:{viewport:{rawDims:{pageWidth:t,pageHeight:F,pageX:c,pageY:a}}}}=this;d==null||d.splice(0,4,...U);const{width:W,height:n}=iZ(U);l.left=`${100*(U[0]-c)/t}%`,l.top=`${100*(F-U[3]+a)/F}%`,Z===0?(l.width=`${100*W/t}%`,l.height=`${100*n/F}%`):this.setRotation(Z)};let Ol=C2;var SU,dF,db,Ub;class Zb extends Ol{constructor(l,d=null){super(l,{isRenderable:!0,ignoreBorder:!!(d!=null&&d.ignoreBorder),createQuadrilaterals:!0}),e(this,SU),this.isTooltipOnly=l.data.isTooltipOnly}render(){const{data:l,linkService:d}=this,Z=document.createElement("a");Z.setAttribute("data-element-id",l.id);let t=!1;return l.url?(d.addLinkAttributes(Z,l.url,l.newWindow),t=!0):l.action?(this._bindNamedAction(Z,l.action),t=!0):l.attachment?(N(this,SU,db).call(this,Z,l.attachment,l.attachmentDest),t=!0):l.setOCGState?(N(this,SU,Ub).call(this,Z,l.setOCGState),t=!0):l.dest?(this._bindLink(Z,l.dest),t=!0):(l.actions&&(l.actions.Action||l.actions["Mouse Up"]||l.actions["Mouse Down"])&&this.enableScripting&&this.hasJSActions&&(this._bindJSAction(Z,l),t=!0),l.resetForm?(this._bindResetFormAction(Z,l.resetForm),t=!0):this.isTooltipOnly&&!t&&(this._bindLink(Z,""),t=!0)),this.container.classList.add("linkAnnotation"),t&&this.container.append(Z),this.container}_bindLink(l,d){l.href=this.linkService.getDestinationHash(d),l.onclick=()=>(d&&this.linkService.goToDestination(d),!1),(d||d==="")&&N(this,SU,dF).call(this)}_bindNamedAction(l,d){l.href=this.linkService.getAnchorUrl(""),l.onclick=()=>(this.linkService.executeNamedAction(d),!1),N(this,SU,dF).call(this)}_bindJSAction(l,d){l.href=this.linkService.getAnchorUrl("");const Z=new Map([["Action","onclick"],["Mouse Up","onmouseup"],["Mouse Down","onmousedown"]]);for(const t of Object.keys(d.actions)){const F=Z.get(t);F&&(l[F]=()=>{var c;return(c=this.linkService.eventBus)==null||c.dispatch("dispatcheventinsandbox",{source:this,detail:{id:d.id,name:t}}),!1})}l.onclick||(l.onclick=()=>!1),N(this,SU,dF).call(this)}_bindResetFormAction(l,d){const Z=l.onclick;if(Z||(l.href=this.linkService.getAnchorUrl("")),N(this,SU,dF).call(this),!this._fieldObjects){dl('_bindResetFormAction - "resetForm" action not supported, ensure that the `fieldObjects` parameter is provided.'),Z||(l.onclick=()=>!1);return}l.onclick=()=>{var t;Z==null||Z();const{fields:F,refs:c,include:a}=d,W=[];if(F.length!==0||c.length!==0){const s=new Set(c);for(const i of F){const R=this._fieldObjects[i]||[];for(const{id:h}of R)s.add(h)}for(const i of Object.values(this._fieldObjects))for(const R of i)s.has(R.id)===a&&W.push(R)}else for(const s of Object.values(this._fieldObjects))W.push(...s);const n=this.annotationStorage,V=[];for(const s of W){const{id:i}=s;switch(V.push(i),s.type){case"text":{const h=s.defaultValue||"";n.setValue(i,{value:h});break}case"checkbox":case"radiobutton":{const h=s.defaultValue===s.exportValues;n.setValue(i,{value:h});break}case"combobox":case"listbox":{const h=s.defaultValue||"";n.setValue(i,{value:h});break}default:continue}const R=document.querySelector(`[data-element-id="${i}"]`);if(R){if(!aF.has(R)){dl(`_bindResetFormAction - element not allowed: ${i}`);continue}}else continue;R.dispatchEvent(new Event("resetform"))}return this.enableScripting&&((t=this.linkService.eventBus)==null||t.dispatch("dispatcheventinsandbox",{source:this,detail:{id:"app",ids:V,name:"ResetForm"}})),!1}}}SU=new WeakSet,dF=function(){this.container.setAttribute("data-internal-link","")},db=function(U,l,d=null){U.href=this.linkService.getAnchorUrl(""),l.description&&(U.title=l.description),U.onclick=()=>{var Z;return(Z=this.downloadManager)==null||Z.openOrDownloadData(l.content,l.filename,d),!1},N(this,SU,dF).call(this)},Ub=function(U,l){U.href=this.linkService.getAnchorUrl(""),U.onclick=()=>(this.linkService.executeSetOCGState(l),!1),N(this,SU,dF).call(this)};class x2 extends Ol{constructor(l){super(l,{isRenderable:!0})}render(){this.container.classList.add("textAnnotation");const l=document.createElement("img");return l.src=this.imageResourcesPath+"annotation-"+this.data.name.toLowerCase()+".svg",l.setAttribute("data-l10n-id","pdfjs-text-annotation-type"),l.setAttribute("data-l10n-args",JSON.stringify({type:this.data.name})),!this.data.popupRef&&this.hasPopupData&&this._createPopup(),this.container.append(l),this.container}}class VF extends Ol{render(){return this.container}showElementAndHideCanvas(l){var d;this.data.hasOwnCanvas&&(((d=l.previousSibling)==null?void 0:d.nodeName)==="CANVAS"&&(l.previousSibling.hidden=!0),l.hidden=!1)}_getKeyModifier(l){return Td.platform.isMac?l.metaKey:l.ctrlKey}_setEventListener(l,d,Z,t,F){Z.includes("mouse")?l.addEventListener(Z,c=>{var a;(a=this.linkService.eventBus)==null||a.dispatch("dispatcheventinsandbox",{source:this,detail:{id:this.data.id,name:t,value:F(c),shift:c.shiftKey,modifier:this._getKeyModifier(c)}})}):l.addEventListener(Z,c=>{var a;if(Z==="blur"){if(!d.focused||!c.relatedTarget)return;d.focused=!1}else if(Z==="focus"){if(d.focused)return;d.focused=!0}F&&((a=this.linkService.eventBus)==null||a.dispatch("dispatcheventinsandbox",{source:this,detail:{id:this.data.id,name:t,value:F(c)}}))})}_setEventListeners(l,d,Z,t){var F,c,a;for(const[W,n]of Z)(n==="Action"||(F=this.data.actions)!=null&&F[n])&&((n==="Focus"||n==="Blur")&&(d||(d={focused:!1})),this._setEventListener(l,d,W,n,t),n==="Focus"&&!((c=this.data.actions)!=null&&c.Blur)?this._setEventListener(l,d,"blur","Blur",null):n==="Blur"&&!((a=this.data.actions)!=null&&a.Focus)&&this._setEventListener(l,d,"focus","Focus",null))}_setBackgroundColor(l){const d=this.data.backgroundColor||null;l.style.backgroundColor=d===null?"transparent":O.makeHexColor(d[0],d[1],d[2])}_setTextStyle(l){const d=["left","center","right"],{fontColor:Z}=this.data.defaultAppearanceData,t=this.data.defaultAppearanceData.fontSize||E2,F=l.style;let c;const a=2,W=n=>Math.round(10*n)/10;if(this.data.multiLine){const n=Math.abs(this.data.rect[3]-this.data.rect[1]-a),V=Math.round(n/(mV*t))||1,s=n/V;c=Math.min(t,W(s/mV))}else{const n=Math.abs(this.data.rect[3]-this.data.rect[1]-a);c=Math.min(t,W(n/mV))}F.fontSize=`calc(${c}px * var(--scale-factor))`,F.color=O.makeHexColor(Z[0],Z[1],Z[2]),this.data.textAlignment!==null&&(F.textAlign=d[this.data.textAlignment])}_setRequired(l,d){d?l.setAttribute("required",!0):l.removeAttribute("required"),l.setAttribute("aria-required",d)}}class r2 extends VF{constructor(l){const d=l.renderForms||l.data.hasOwnCanvas||!l.data.hasAppearance&&!!l.data.fieldValue;super(l,{isRenderable:d})}setPropertyOnSiblings(l,d,Z,t){const F=this.annotationStorage;for(const c of this._getElementsByName(l.name,l.id))c.domElement&&(c.domElement[d]=Z),F.setValue(c.id,{[t]:Z})}render(){var l,d;const Z=this.annotationStorage,t=this.data.id;this.container.classList.add("textWidgetAnnotation");let F=null;if(this.renderForms){const c=Z.getValue(t,{value:this.data.fieldValue});let a=c.value||"";const W=Z.getValue(t,{charLimit:this.data.maxLen}).charLimit;W&&a.length>W&&(a=a.slice(0,W));let n=c.formattedValue||((l=this.data.textContent)==null?void 0:l.join(`
|
||
`))||null;n&&this.data.comb&&(n=n.replaceAll(/\s+/g,""));const V={userValue:a,formattedValue:n,lastCommittedValue:null,commitKey:1,focused:!1};this.data.multiLine?(F=document.createElement("textarea"),F.textContent=n!=null?n:a,this.data.doNotScroll&&(F.style.overflowY="hidden")):(F=document.createElement("input"),F.type="text",F.setAttribute("value",n!=null?n:a),this.data.doNotScroll&&(F.style.overflowX="hidden")),this.data.hasOwnCanvas&&(F.hidden=!0),aF.add(F),F.setAttribute("data-element-id",t),F.disabled=this.data.readOnly,F.name=this.data.fieldName,F.tabIndex=AQ,this._setRequired(F,this.data.required),W&&(F.maxLength=W),F.addEventListener("input",i=>{Z.setValue(t,{value:i.target.value}),this.setPropertyOnSiblings(F,"value",i.target.value,"value"),V.formattedValue=null}),F.addEventListener("resetform",i=>{var h;const R=(h=this.data.defaultFieldValue)!=null?h:"";F.value=V.userValue=R,V.formattedValue=null});let s=i=>{const{formattedValue:R}=V;R!=null&&(i.target.value=R),i.target.scrollLeft=0};if(this.enableScripting&&this.hasJSActions){F.addEventListener("focus",R=>{var h;if(V.focused)return;const{target:m}=R;V.userValue&&(m.value=V.userValue),V.lastCommittedValue=m.value,V.commitKey=1,(h=this.data.actions)!=null&&h.Focus||(V.focused=!0)}),F.addEventListener("updatefromsandbox",R=>{this.showElementAndHideCanvas(R.target);const h={value(m){var M;V.userValue=(M=m.detail.value)!=null?M:"",Z.setValue(t,{value:V.userValue.toString()}),m.target.value=V.userValue},formattedValue(m){const{formattedValue:M}=m.detail;V.formattedValue=M,M!=null&&m.target!==document.activeElement&&(m.target.value=M),Z.setValue(t,{formattedValue:M})},selRange(m){m.target.setSelectionRange(...m.detail.selRange)},charLimit:m=>{var M;const{charLimit:J}=m.detail,{target:T}=m;if(J===0){T.removeAttribute("maxLength");return}T.setAttribute("maxLength",J);let G=V.userValue;!G||G.length<=J||(G=G.slice(0,J),T.value=V.userValue=G,Z.setValue(t,{value:G}),(M=this.linkService.eventBus)==null||M.dispatch("dispatcheventinsandbox",{source:this,detail:{id:t,name:"Keystroke",value:G,willCommit:!0,commitKey:1,selStart:T.selectionStart,selEnd:T.selectionEnd}}))}};this._dispatchEventFromSandbox(h,R)}),F.addEventListener("keydown",R=>{var h;V.commitKey=1;let m=-1;if(R.key==="Escape"?m=0:R.key==="Enter"&&!this.data.multiLine?m=2:R.key==="Tab"&&(V.commitKey=3),m===-1)return;const{value:M}=R.target;V.lastCommittedValue!==M&&(V.lastCommittedValue=M,V.userValue=M,(h=this.linkService.eventBus)==null||h.dispatch("dispatcheventinsandbox",{source:this,detail:{id:t,name:"Keystroke",value:M,willCommit:!0,commitKey:m,selStart:R.target.selectionStart,selEnd:R.target.selectionEnd}}))});const i=s;s=null,F.addEventListener("blur",R=>{var h,m;if(!V.focused||!R.relatedTarget)return;(h=this.data.actions)!=null&&h.Blur||(V.focused=!1);const{value:M}=R.target;V.userValue=M,V.lastCommittedValue!==M&&((m=this.linkService.eventBus)==null||m.dispatch("dispatcheventinsandbox",{source:this,detail:{id:t,name:"Keystroke",value:M,willCommit:!0,commitKey:V.commitKey,selStart:R.target.selectionStart,selEnd:R.target.selectionEnd}})),i(R)}),(d=this.data.actions)!=null&&d.Keystroke&&F.addEventListener("beforeinput",R=>{var h;V.lastCommittedValue=null;const{data:m,target:M}=R,{value:J,selectionStart:T,selectionEnd:G}=M;let X=T,Y=G;switch(R.inputType){case"deleteWordBackward":{const p=J.substring(0,T).match(/\w*[^\w]*$/);p&&(X-=p[0].length);break}case"deleteWordForward":{const p=J.substring(T).match(/^[^\w]*\w*/);p&&(Y+=p[0].length);break}case"deleteContentBackward":T===G&&(X-=1);break;case"deleteContentForward":T===G&&(Y+=1);break}R.preventDefault(),(h=this.linkService.eventBus)==null||h.dispatch("dispatcheventinsandbox",{source:this,detail:{id:t,name:"Keystroke",value:J,change:m||"",willCommit:!1,selStart:X,selEnd:Y}})}),this._setEventListeners(F,V,[["focus","Focus"],["blur","Blur"],["mousedown","Mouse Down"],["mouseenter","Mouse Enter"],["mouseleave","Mouse Exit"],["mouseup","Mouse Up"]],R=>R.target.value)}if(s&&F.addEventListener("blur",s),this.data.comb){const i=(this.data.rect[2]-this.data.rect[0])/W;F.classList.add("comb"),F.style.letterSpacing=`calc(${i}px * var(--scale-factor) - 1ch)`}}else F=document.createElement("div"),F.textContent=this.data.fieldValue,F.style.verticalAlign="middle",F.style.display="table-cell",this.data.hasOwnCanvas&&(F.hidden=!0);return this._setTextStyle(F),this._setBackgroundColor(F),this._setDefaultPropertiesFromJS(F),this.container.append(F),this.container}}class j2 extends VF{constructor(l){super(l,{isRenderable:!!l.data.hasOwnCanvas})}}class O2 extends VF{constructor(l){super(l,{isRenderable:l.renderForms})}render(){const l=this.annotationStorage,d=this.data,Z=d.id;let t=l.getValue(Z,{value:d.exportValue===d.fieldValue}).value;typeof t=="string"&&(t=t!=="Off",l.setValue(Z,{value:t})),this.container.classList.add("buttonWidgetAnnotation","checkBox");const F=document.createElement("input");return aF.add(F),F.setAttribute("data-element-id",Z),F.disabled=d.readOnly,this._setRequired(F,this.data.required),F.type="checkbox",F.name=d.fieldName,t&&F.setAttribute("checked",!0),F.setAttribute("exportValue",d.exportValue),F.tabIndex=AQ,F.addEventListener("change",c=>{const{name:a,checked:W}=c.target;for(const n of this._getElementsByName(a,Z)){const V=W&&n.exportValue===d.exportValue;n.domElement&&(n.domElement.checked=V),l.setValue(n.id,{value:V})}l.setValue(Z,{value:W})}),F.addEventListener("resetform",c=>{const a=d.defaultFieldValue||"Off";c.target.checked=a===d.exportValue}),this.enableScripting&&this.hasJSActions&&(F.addEventListener("updatefromsandbox",c=>{const a={value(W){W.target.checked=W.detail.value!=="Off",l.setValue(Z,{value:W.target.checked})}};this._dispatchEventFromSandbox(a,c)}),this._setEventListeners(F,null,[["change","Validate"],["change","Action"],["focus","Focus"],["blur","Blur"],["mousedown","Mouse Down"],["mouseenter","Mouse Enter"],["mouseleave","Mouse Exit"],["mouseup","Mouse Up"]],c=>c.target.checked)),this._setBackgroundColor(F),this._setDefaultPropertiesFromJS(F),this.container.append(F),this.container}}class tb extends VF{constructor(l){super(l,{isRenderable:l.renderForms})}render(){this.container.classList.add("buttonWidgetAnnotation","radioButton");const l=this.annotationStorage,d=this.data,Z=d.id;let t=l.getValue(Z,{value:d.fieldValue===d.buttonValue}).value;if(typeof t=="string"&&(t=t!==d.buttonValue,l.setValue(Z,{value:t})),t)for(const c of this._getElementsByName(d.fieldName,Z))l.setValue(c.id,{value:!1});const F=document.createElement("input");if(aF.add(F),F.setAttribute("data-element-id",Z),F.disabled=d.readOnly,this._setRequired(F,this.data.required),F.type="radio",F.name=d.fieldName,t&&F.setAttribute("checked",!0),F.tabIndex=AQ,F.addEventListener("change",c=>{const{name:a,checked:W}=c.target;for(const n of this._getElementsByName(a,Z))l.setValue(n.id,{value:!1});l.setValue(Z,{value:W})}),F.addEventListener("resetform",c=>{const a=d.defaultFieldValue;c.target.checked=a!=null&&a===d.buttonValue}),this.enableScripting&&this.hasJSActions){const c=d.buttonValue;F.addEventListener("updatefromsandbox",a=>{const W={value:n=>{const V=c===n.detail.value;for(const s of this._getElementsByName(n.target.name)){const i=V&&s.id===Z;s.domElement&&(s.domElement.checked=i),l.setValue(s.id,{value:i})}}};this._dispatchEventFromSandbox(W,a)}),this._setEventListeners(F,null,[["change","Validate"],["change","Action"],["focus","Focus"],["blur","Blur"],["mousedown","Mouse Down"],["mouseenter","Mouse Enter"],["mouseleave","Mouse Exit"],["mouseup","Mouse Up"]],a=>a.target.checked)}return this._setBackgroundColor(F),this._setDefaultPropertiesFromJS(F),this.container.append(F),this.container}}class g2 extends Zb{constructor(l){super(l,{ignoreBorder:l.data.hasAppearance})}render(){const l=super.render();l.classList.add("buttonWidgetAnnotation","pushButton");const d=l.lastChild;return this.enableScripting&&this.hasJSActions&&d&&(this._setDefaultPropertiesFromJS(d),d.addEventListener("updatefromsandbox",Z=>{this._dispatchEventFromSandbox({},Z)})),l}}class K2 extends VF{constructor(l){super(l,{isRenderable:l.renderForms})}render(){this.container.classList.add("choiceWidgetAnnotation");const l=this.annotationStorage,d=this.data.id,Z=l.getValue(d,{value:this.data.fieldValue}),t=document.createElement("select");aF.add(t),t.setAttribute("data-element-id",d),t.disabled=this.data.readOnly,this._setRequired(t,this.data.required),t.name=this.data.fieldName,t.tabIndex=AQ;let F=this.data.combo&&this.data.options.length>0;this.data.combo||(t.size=this.data.options.length,this.data.multiSelect&&(t.multiple=!0)),t.addEventListener("resetform",V=>{const s=this.data.defaultFieldValue;for(const i of t.options)i.selected=i.value===s});for(const V of this.data.options){const s=document.createElement("option");s.textContent=V.displayValue,s.value=V.exportValue,Z.value.includes(V.exportValue)&&(s.setAttribute("selected",!0),F=!1),t.append(s)}let c=null;if(F){const V=document.createElement("option");V.value=" ",V.setAttribute("hidden",!0),V.setAttribute("selected",!0),t.prepend(V),c=()=>{V.remove(),t.removeEventListener("input",c),c=null},t.addEventListener("input",c)}const a=V=>{const s=V?"value":"textContent",{options:i,multiple:R}=t;return R?Array.prototype.filter.call(i,h=>h.selected).map(h=>h[s]):i.selectedIndex===-1?null:i[i.selectedIndex][s]};let W=a(!1);const n=V=>{const s=V.target.options;return Array.prototype.map.call(s,i=>({displayValue:i.textContent,exportValue:i.value}))};return this.enableScripting&&this.hasJSActions?(t.addEventListener("updatefromsandbox",V=>{const s={value(i){c==null||c();const R=i.detail.value,h=new Set(Array.isArray(R)?R:[R]);for(const m of t.options)m.selected=h.has(m.value);l.setValue(d,{value:a(!0)}),W=a(!1)},multipleSelection(i){t.multiple=!0},remove(i){const R=t.options,h=i.detail.remove;R[h].selected=!1,t.remove(h),R.length>0&&Array.prototype.findIndex.call(R,m=>m.selected)===-1&&(R[0].selected=!0),l.setValue(d,{value:a(!0),items:n(i)}),W=a(!1)},clear(i){for(;t.length!==0;)t.remove(0);l.setValue(d,{value:null,items:[]}),W=a(!1)},insert(i){const{index:R,displayValue:h,exportValue:m}=i.detail.insert,M=t.children[R],J=document.createElement("option");J.textContent=h,J.value=m,M?M.before(J):t.append(J),l.setValue(d,{value:a(!0),items:n(i)}),W=a(!1)},items(i){const{items:R}=i.detail;for(;t.length!==0;)t.remove(0);for(const h of R){const{displayValue:m,exportValue:M}=h,J=document.createElement("option");J.textContent=m,J.value=M,t.append(J)}t.options.length>0&&(t.options[0].selected=!0),l.setValue(d,{value:a(!0),items:n(i)}),W=a(!1)},indices(i){const R=new Set(i.detail.indices);for(const h of i.target.options)h.selected=R.has(h.index);l.setValue(d,{value:a(!0)}),W=a(!1)},editable(i){i.target.disabled=!i.detail.editable}};this._dispatchEventFromSandbox(s,V)}),t.addEventListener("input",V=>{var s;const i=a(!0),R=a(!1);l.setValue(d,{value:i}),V.preventDefault(),(s=this.linkService.eventBus)==null||s.dispatch("dispatcheventinsandbox",{source:this,detail:{id:d,name:"Keystroke",value:W,change:R,changeEx:i,willCommit:!1,commitKey:1,keyDown:!1}})}),this._setEventListeners(t,null,[["focus","Focus"],["blur","Blur"],["mousedown","Mouse Down"],["mouseenter","Mouse Enter"],["mouseleave","Mouse Exit"],["mouseup","Mouse Up"],["input","Action"],["input","Validate"]],V=>V.target.value)):t.addEventListener("input",function(V){l.setValue(d,{value:a(!0)})}),this.data.combo&&this._setTextStyle(t),this._setBackgroundColor(t),this._setDefaultPropertiesFromJS(t),this.container.append(t),this.container}}class Hs extends Ol{constructor(l){const{data:d,elements:Z}=l;super(l,{isRenderable:Ol._hasPopupData(d)}),this.elements=Z,this.popup=null}render(){this.container.classList.add("popupAnnotation");const l=this.popup=new v2({container:this.container,color:this.data.color,titleObj:this.data.titleObj,modificationDate:this.data.modificationDate,contentsObj:this.data.contentsObj,richText:this.data.richText,rect:this.data.rect,parentRect:this.data.parentRect||null,parent:this.parent,elements:this.elements,open:this.data.open}),d=[];for(const Z of this.elements)Z.popup=l,d.push(Z.data.id),Z.addHighlightArea();return this.container.setAttribute("aria-controls",d.map(Z=>`${ji}${Z}`).join(",")),this.container}}var GQ,Ps,fs,TQ,PF,Bl,LZ,Kc,zn,In,SQ,YZ,MU,rZ,Dn,jZ,eW,Bt,fF,rl,MW,CV,AR,Fb,cb,_R,En,wn,As;class v2{constructor({container:l,color:d,elements:Z,titleObj:t,modificationDate:F,contentsObj:c,richText:a,parent:W,rect:n,parentRect:V,open:s}){e(this,rl),e(this,GQ,N(this,rl,cb).bind(this)),e(this,Ps,N(this,rl,As).bind(this)),e(this,fs,N(this,rl,wn).bind(this)),e(this,TQ,N(this,rl,En).bind(this)),e(this,PF,null),e(this,Bl,null),e(this,LZ,null),e(this,Kc,null),e(this,zn,null),e(this,In,null),e(this,SQ,null),e(this,YZ,!1),e(this,MU,null),e(this,rZ,null),e(this,Dn,null),e(this,jZ,null),e(this,eW,null),e(this,Bt,null),e(this,fF,!1);var i;b(this,Bl,l),b(this,eW,t),b(this,LZ,c),b(this,jZ,a),b(this,In,W),b(this,PF,d),b(this,Dn,n),b(this,SQ,V),b(this,zn,Z),b(this,Kc,eh.toDateObject(F)),this.trigger=Z.flatMap(R=>R.getElementsToTriggerPopup());for(const R of this.trigger)R.addEventListener("click",Q(this,TQ)),R.addEventListener("mouseenter",Q(this,fs)),R.addEventListener("mouseleave",Q(this,Ps)),R.classList.add("popupTriggerArea");for(const R of Z)(i=R.container)==null||i.addEventListener("keydown",Q(this,GQ));Q(this,Bl).hidden=!0,s&&N(this,rl,En).call(this)}render(){if(Q(this,MU))return;const l=b(this,MU,document.createElement("div"));if(l.className="popup",Q(this,PF)){const F=l.style.outlineColor=O.makeHexColor(...Q(this,PF));CSS.supports("background-color","color-mix(in srgb, red 30%, white)")?l.style.backgroundColor=`color-mix(in srgb, ${F} 30%, white)`:l.style.backgroundColor=O.makeHexColor(...Q(this,PF).map(c=>Math.floor(.7*(255-c)+c)))}const d=document.createElement("span");d.className="header";const Z=document.createElement("h1");if(d.append(Z),{dir:Z.dir,str:Z.textContent}=Q(this,eW),l.append(d),Q(this,Kc)){const F=document.createElement("span");F.classList.add("popupDate"),F.setAttribute("data-l10n-id","pdfjs-annotation-date-time-string"),F.setAttribute("data-l10n-args",JSON.stringify({dateObj:Q(this,Kc).valueOf()})),d.append(F)}const t=Q(this,rl,MW);if(t)$h.render({xfaHtml:t,intent:"richText",div:l}),l.lastChild.classList.add("richText","popupContent");else{const F=this._formatContents(Q(this,LZ));l.append(F)}Q(this,Bl).append(l)}_formatContents({str:l,dir:d}){const Z=document.createElement("p");Z.classList.add("popupContent"),Z.dir=d;const t=l.split(/(?:\r\n?|\n)/);for(let F=0,c=t.length;F<c;++F){const a=t[F];Z.append(document.createTextNode(a)),F<c-1&&Z.append(document.createElement("br"))}return Z}updateEdited({rect:l,popupContent:d}){var Z;Q(this,Bt)||b(this,Bt,{contentsObj:Q(this,LZ),richText:Q(this,jZ)}),l&&b(this,rZ,null),d&&(b(this,jZ,N(this,rl,Fb).call(this,d)),b(this,LZ,null)),(Z=Q(this,MU))==null||Z.remove(),b(this,MU,null)}resetEdited(){var l;Q(this,Bt)&&({contentsObj:md(this,LZ)._,richText:md(this,jZ)._}=Q(this,Bt),b(this,Bt,null),(l=Q(this,MU))==null||l.remove(),b(this,MU,null),b(this,rZ,null))}forceHide(){b(this,fF,this.isVisible),Q(this,fF)&&(Q(this,Bl).hidden=!0)}maybeShow(){Q(this,fF)&&(Q(this,MU)||N(this,rl,wn).call(this),b(this,fF,!1),Q(this,Bl).hidden=!1)}get isVisible(){return Q(this,Bl).hidden===!1}}GQ=new WeakMap,Ps=new WeakMap,fs=new WeakMap,TQ=new WeakMap,PF=new WeakMap,Bl=new WeakMap,LZ=new WeakMap,Kc=new WeakMap,zn=new WeakMap,In=new WeakMap,SQ=new WeakMap,YZ=new WeakMap,MU=new WeakMap,rZ=new WeakMap,Dn=new WeakMap,jZ=new WeakMap,eW=new WeakMap,Bt=new WeakMap,fF=new WeakMap,rl=new WeakSet,MW=function(){const U=Q(this,jZ),l=Q(this,LZ);return U!=null&&U.str&&(!(l!=null&&l.str)||l.str===U.str)&&Q(this,jZ).html||null},CV=function(){var U,l,d;return((d=(l=(U=Q(this,rl,MW))==null?void 0:U.attributes)==null?void 0:l.style)==null?void 0:d.fontSize)||0},AR=function(){var U,l,d;return((d=(l=(U=Q(this,rl,MW))==null?void 0:U.attributes)==null?void 0:l.style)==null?void 0:d.color)||null},Fb=function(U){const l=[],d={str:U,html:{name:"div",attributes:{dir:"auto"},children:[{name:"p",children:l}]}},Z={style:{color:Q(this,rl,AR),fontSize:Q(this,rl,CV)?`calc(${Q(this,rl,CV)}px * var(--scale-factor))`:""}};for(const t of U.split(`
|
||
`))l.push({name:"span",value:t,attributes:Z});return d},cb=function(U){U.altKey||U.shiftKey||U.ctrlKey||U.metaKey||(U.key==="Enter"||U.key==="Escape"&&Q(this,YZ))&&N(this,rl,En).call(this)},_R=function(){if(Q(this,rZ)!==null)return;const{page:{view:U},viewport:{rawDims:{pageWidth:l,pageHeight:d,pageX:Z,pageY:t}}}=Q(this,In);let F=!!Q(this,SQ),c=F?Q(this,SQ):Q(this,Dn);for(const i of Q(this,zn))if(!c||O.intersect(i.data.rect,c)!==null){c=i.data.rect,F=!0;break}const a=O.normalizeRect([c[0],U[3]-c[1]+U[1],c[2],U[3]-c[3]+U[1]]),W=F?c[2]-c[0]+5:0,n=a[0]+W,V=a[1];b(this,rZ,[100*(n-Z)/l,100*(V-t)/d]);const{style:s}=Q(this,Bl);s.left=`${Q(this,rZ)[0]}%`,s.top=`${Q(this,rZ)[1]}%`},En=function(){b(this,YZ,!Q(this,YZ)),Q(this,YZ)?(N(this,rl,wn).call(this),Q(this,Bl).addEventListener("click",Q(this,TQ)),Q(this,Bl).addEventListener("keydown",Q(this,GQ))):(N(this,rl,As).call(this),Q(this,Bl).removeEventListener("click",Q(this,TQ)),Q(this,Bl).removeEventListener("keydown",Q(this,GQ)))},wn=function(){Q(this,MU)||this.render(),this.isVisible?Q(this,YZ)&&Q(this,Bl).classList.add("focused"):(N(this,rl,_R).call(this),Q(this,Bl).hidden=!1,Q(this,Bl).style.zIndex=parseInt(Q(this,Bl).style.zIndex)+1e3)},As=function(){Q(this,Bl).classList.remove("focused"),!(Q(this,YZ)||!this.isVisible)&&(Q(this,Bl).hidden=!0,Q(this,Bl).style.zIndex=parseInt(Q(this,Bl).style.zIndex)-1e3)};class Qb extends Ol{constructor(l){super(l,{isRenderable:!0,ignoreBorder:!0}),this.textContent=l.data.textContent,this.textPosition=l.data.textPosition,this.annotationEditorType=ll.FREETEXT}render(){if(this.container.classList.add("freeTextAnnotation"),this.textContent){const l=document.createElement("div");l.classList.add("annotationTextContent"),l.setAttribute("role","comment");for(const d of this.textContent){const Z=document.createElement("span");Z.textContent=d,l.append(Z)}this.container.append(l)}return!this.data.popupRef&&this.hasPopupData&&this._createPopup(),this._editOnDoubleClick(),this.container}}var JW;class H2 extends Ol{constructor(l){super(l,{isRenderable:!0,ignoreBorder:!0}),e(this,JW,null)}render(){this.container.classList.add("lineAnnotation");const l=this.data,{width:d,height:Z}=iZ(l.rect),t=this.svgFactory.create(d,Z,!0),F=b(this,JW,this.svgFactory.createElement("svg:line"));return F.setAttribute("x1",l.rect[2]-l.lineCoordinates[0]),F.setAttribute("y1",l.rect[3]-l.lineCoordinates[1]),F.setAttribute("x2",l.rect[2]-l.lineCoordinates[2]),F.setAttribute("y2",l.rect[3]-l.lineCoordinates[3]),F.setAttribute("stroke-width",l.borderStyle.width||1),F.setAttribute("stroke","transparent"),F.setAttribute("fill","transparent"),t.append(F),this.container.append(t),!l.popupRef&&this.hasPopupData&&this._createPopup(),this.container}getElementsToTriggerPopup(){return Q(this,JW)}addHighlightArea(){this.container.classList.add("highlightArea")}}JW=new WeakMap;var GW;class P2 extends Ol{constructor(l){super(l,{isRenderable:!0,ignoreBorder:!0}),e(this,GW,null)}render(){this.container.classList.add("squareAnnotation");const l=this.data,{width:d,height:Z}=iZ(l.rect),t=this.svgFactory.create(d,Z,!0),F=l.borderStyle.width,c=b(this,GW,this.svgFactory.createElement("svg:rect"));return c.setAttribute("x",F/2),c.setAttribute("y",F/2),c.setAttribute("width",d-F),c.setAttribute("height",Z-F),c.setAttribute("stroke-width",F||1),c.setAttribute("stroke","transparent"),c.setAttribute("fill","transparent"),t.append(c),this.container.append(t),!l.popupRef&&this.hasPopupData&&this._createPopup(),this.container}getElementsToTriggerPopup(){return Q(this,GW)}addHighlightArea(){this.container.classList.add("highlightArea")}}GW=new WeakMap;var TW;class f2 extends Ol{constructor(l){super(l,{isRenderable:!0,ignoreBorder:!0}),e(this,TW,null)}render(){this.container.classList.add("circleAnnotation");const l=this.data,{width:d,height:Z}=iZ(l.rect),t=this.svgFactory.create(d,Z,!0),F=l.borderStyle.width,c=b(this,TW,this.svgFactory.createElement("svg:ellipse"));return c.setAttribute("cx",d/2),c.setAttribute("cy",Z/2),c.setAttribute("rx",d/2-F/2),c.setAttribute("ry",Z/2-F/2),c.setAttribute("stroke-width",F||1),c.setAttribute("stroke","transparent"),c.setAttribute("fill","transparent"),t.append(c),this.container.append(t),!l.popupRef&&this.hasPopupData&&this._createPopup(),this.container}getElementsToTriggerPopup(){return Q(this,TW)}addHighlightArea(){this.container.classList.add("highlightArea")}}TW=new WeakMap;var SW;class ab extends Ol{constructor(l){super(l,{isRenderable:!0,ignoreBorder:!0}),e(this,SW,null),this.containerClassName="polylineAnnotation",this.svgElementName="svg:polyline"}render(){this.container.classList.add(this.containerClassName);const{data:{rect:l,vertices:d,borderStyle:Z,popupRef:t}}=this;if(!d)return this.container;const{width:F,height:c}=iZ(l),a=this.svgFactory.create(F,c,!0);let W=[];for(let V=0,s=d.length;V<s;V+=2){const i=d[V]-l[0],R=l[3]-d[V+1];W.push(`${i},${R}`)}W=W.join(" ");const n=b(this,SW,this.svgFactory.createElement(this.svgElementName));return n.setAttribute("points",W),n.setAttribute("stroke-width",Z.width||1),n.setAttribute("stroke","transparent"),n.setAttribute("fill","transparent"),a.append(n),this.container.append(a),!t&&this.hasPopupData&&this._createPopup(),this.container}getElementsToTriggerPopup(){return Q(this,SW)}addHighlightArea(){this.container.classList.add("highlightArea")}}SW=new WeakMap;class A2 extends ab{constructor(l){super(l),this.containerClassName="polygonAnnotation",this.svgElementName="svg:polygon"}}class _2 extends Ol{constructor(l){super(l,{isRenderable:!0,ignoreBorder:!0})}render(){return this.container.classList.add("caretAnnotation"),!this.data.popupRef&&this.hasPopupData&&this._createPopup(),this.container}}var XW;class $i extends Ol{constructor(l){super(l,{isRenderable:!0,ignoreBorder:!0}),e(this,XW,[]),this.containerClassName="inkAnnotation",this.svgElementName="svg:polyline",this.annotationEditorType=this.data.it==="InkHighlight"?ll.HIGHLIGHT:ll.INK}render(){this.container.classList.add(this.containerClassName);const{data:{rect:l,inkLists:d,borderStyle:Z,popupRef:t}}=this,{width:F,height:c}=iZ(l),a=this.svgFactory.create(F,c,!0);for(const W of d){let n=[];for(let s=0,i=W.length;s<i;s+=2){const R=W[s]-l[0],h=l[3]-W[s+1];n.push(`${R},${h}`)}n=n.join(" ");const V=this.svgFactory.createElement(this.svgElementName);Q(this,XW).push(V),V.setAttribute("points",n),V.setAttribute("stroke-width",Z.width||1),V.setAttribute("stroke","transparent"),V.setAttribute("fill","transparent"),!t&&this.hasPopupData&&this._createPopup(),a.append(V)}return this.container.append(a),this._editOnDoubleClick(),this.container}getElementsToTriggerPopup(){return Q(this,XW)}addHighlightArea(){this.container.classList.add("highlightArea")}}XW=new WeakMap;class Wb extends Ol{constructor(l){super(l,{isRenderable:!0,ignoreBorder:!0,createQuadrilaterals:!0}),this.annotationEditorType=ll.HIGHLIGHT}render(){return!this.data.popupRef&&this.hasPopupData&&this._createPopup(),this.container.classList.add("highlightAnnotation"),this._editOnDoubleClick(),this.container}}class q2 extends Ol{constructor(l){super(l,{isRenderable:!0,ignoreBorder:!0,createQuadrilaterals:!0})}render(){return!this.data.popupRef&&this.hasPopupData&&this._createPopup(),this.container.classList.add("underlineAnnotation"),this.container}}class $2 extends Ol{constructor(l){super(l,{isRenderable:!0,ignoreBorder:!0,createQuadrilaterals:!0})}render(){return!this.data.popupRef&&this.hasPopupData&&this._createPopup(),this.container.classList.add("squigglyAnnotation"),this.container}}class lM extends Ol{constructor(l){super(l,{isRenderable:!0,ignoreBorder:!0,createQuadrilaterals:!0})}render(){return!this.data.popupRef&&this.hasPopupData&&this._createPopup(),this.container.classList.add("strikeoutAnnotation"),this.container}}class nb extends Ol{constructor(l){super(l,{isRenderable:!0,ignoreBorder:!0}),this.annotationEditorType=ll.STAMP}render(){return this.container.classList.add("stampAnnotation"),this.container.setAttribute("role","img"),!this.data.popupRef&&this.hasPopupData&&this._createPopup(),this._editOnDoubleClick(),this.container}}var YW,pW,_s;class dM extends Ol{constructor(l){var d;super(l,{isRenderable:!0}),e(this,pW),e(this,YW,null);const{file:Z}=this.data;this.filename=Z.filename,this.content=Z.content,(d=this.linkService.eventBus)==null||d.dispatch("fileattachmentannotation",ul({source:this},Z))}render(){this.container.classList.add("fileAttachmentAnnotation");const{container:l,data:d}=this;let Z;d.hasAppearance||d.fillAlpha===0?Z=document.createElement("div"):(Z=document.createElement("img"),Z.src=`${this.imageResourcesPath}annotation-${/paperclip/i.test(d.name)?"paperclip":"pushpin"}.svg`,d.fillAlpha&&d.fillAlpha<1&&(Z.style=`filter: opacity(${Math.round(d.fillAlpha*100)}%);`)),Z.addEventListener("dblclick",N(this,pW,_s).bind(this)),b(this,YW,Z);const{isMac:t}=Td.platform;return l.addEventListener("keydown",F=>{F.key==="Enter"&&(t?F.metaKey:F.ctrlKey)&&N(this,pW,_s).call(this)}),!d.popupRef&&this.hasPopupData?this._createPopup():Z.classList.add("popupTriggerArea"),l.append(Z),l}getElementsToTriggerPopup(){return Q(this,YW)}addHighlightArea(){this.container.classList.add("highlightArea")}}YW=new WeakMap,pW=new WeakSet,_s=function(){var U;(U=this.downloadManager)==null||U.openOrDownloadData(this.content,this.filename)};var oa,uF,oF,Ba,Wc,qR,xV,$R;let UM=($R=class{constructor({div:U,accessibilityManager:l,annotationCanvasMap:d,annotationEditorUIManager:Z,page:t,viewport:F,structTreeLayer:c}){e(this,Wc),e(this,oa,null),e(this,uF,null),e(this,oF,new Map),e(this,Ba,null),this.div=U,b(this,oa,l),b(this,uF,d),b(this,Ba,c||null),this.page=t,this.viewport=F,this.zIndex=0,this._annotationEditorUIManager=Z}hasEditableAnnotations(){return Q(this,oF).size>0}render(U){return z(this,null,function*(){var l;const{annotations:d}=U,Z=this.div;QF(Z,this.viewport);const t=new Map,F={data:null,layer:Z,linkService:U.linkService,downloadManager:U.downloadManager,imageResourcesPath:U.imageResourcesPath||"",renderForms:U.renderForms!==!1,svgFactory:new Oi,annotationStorage:U.annotationStorage||new Pi,enableScripting:U.enableScripting===!0,hasJSActions:U.hasJSActions,fieldObjects:U.fieldObjects,parent:this,elements:null};for(const c of d){if(c.noHTML)continue;const a=c.annotationType===wl.POPUP;if(a){const V=t.get(c.id);if(!V)continue;F.elements=V}else{const{width:V,height:s}=iZ(c.rect);if(V<=0||s<=0)continue}F.data=c;const W=w2.create(F);if(!W.isRenderable)continue;if(!a&&c.popupRef){const V=t.get(c.popupRef);V?V.push(W):t.set(c.popupRef,[W])}const n=W.render();c.hidden&&(n.style.visibility="hidden"),yield N(this,Wc,qR).call(this,n,c.id),W._isEditable&&(Q(this,oF).set(W.data.id,W),(l=this._annotationEditorUIManager)==null||l.renderAnnotationElement(W))}N(this,Wc,xV).call(this)})}update({viewport:U}){const l=this.div;this.viewport=U,QF(l,{rotation:U.rotation}),N(this,Wc,xV).call(this),l.hidden=!1}getEditableAnnotations(){return Array.from(Q(this,oF).values())}getEditableAnnotation(U){return Q(this,oF).get(U)}},oa=new WeakMap,uF=new WeakMap,oF=new WeakMap,Ba=new WeakMap,Wc=new WeakSet,qR=function(U,l){return z(this,null,function*(){var d,Z;const t=U.firstChild||U,F=t.id=`${ji}${l}`,c=yield(d=Q(this,Ba))==null?void 0:d.getAriaAttributes(F);if(c)for(const[a,W]of c)t.setAttribute(a,W);this.div.append(U),(Z=Q(this,oa))==null||Z.moveElementInDOM(this.div,U,t,!1)})},xV=function(){if(!Q(this,uF))return;const U=this.div;for(const[l,d]of Q(this,uF)){const Z=U.querySelector(`[data-annotation-id="${l}"]`);if(!Z)continue;d.className="annotationContent";const{firstChild:t}=Z;t?t.nodeName==="CANVAS"?t.replaceWith(d):t.classList.contains("annotationContent")?t.after(d):t.before(d):Z.append(d)}Q(this,uF).clear()},$R);const uW=/\r\n?|\n/g;var XU,Kd,oW,AF,vd,od,Vb,sb,ib,Cn,UF,xn,BW,Rb,qs,Nb;const vU=class fl extends Nl{constructor(l){super(WU(ul({},l),{name:"freeTextEditor"})),e(this,od),e(this,XU),e(this,Kd,""),e(this,oW,`${this.id}-editor`),e(this,AF,null),e(this,vd),b(this,XU,l.color||fl._defaultColor||Nl._defaultLineColor),b(this,vd,l.fontSize||fl._defaultFontSize)}static get _keyboardManager(){const l=fl.prototype,d=F=>F.isEmpty(),Z=gQ.TRANSLATE_SMALL,t=gQ.TRANSLATE_BIG;return Zl(this,"_keyboardManager",new fQ([[["ctrl+s","mac+meta+s","ctrl+p","mac+meta+p"],l.commitOrRemove,{bubbles:!0}],[["ctrl+Enter","mac+meta+Enter","Escape","mac+Escape"],l.commitOrRemove],[["ArrowLeft","mac+ArrowLeft"],l._translateEmpty,{args:[-Z,0],checker:d}],[["ctrl+ArrowLeft","mac+shift+ArrowLeft"],l._translateEmpty,{args:[-t,0],checker:d}],[["ArrowRight","mac+ArrowRight"],l._translateEmpty,{args:[Z,0],checker:d}],[["ctrl+ArrowRight","mac+shift+ArrowRight"],l._translateEmpty,{args:[t,0],checker:d}],[["ArrowUp","mac+ArrowUp"],l._translateEmpty,{args:[0,-Z],checker:d}],[["ctrl+ArrowUp","mac+shift+ArrowUp"],l._translateEmpty,{args:[0,-t],checker:d}],[["ArrowDown","mac+ArrowDown"],l._translateEmpty,{args:[0,Z],checker:d}],[["ctrl+ArrowDown","mac+shift+ArrowDown"],l._translateEmpty,{args:[0,t],checker:d}]]))}static initialize(l,d){Nl.initialize(l,d,{strings:["pdfjs-free-text-default-content"]});const Z=getComputedStyle(document.documentElement);this._internalPadding=parseFloat(Z.getPropertyValue("--freetext-padding"))}static updateDefaultParams(l,d){switch(l){case _.FREETEXT_SIZE:fl._defaultFontSize=d;break;case _.FREETEXT_COLOR:fl._defaultColor=d;break}}updateParams(l,d){switch(l){case _.FREETEXT_SIZE:N(this,od,Vb).call(this,d);break;case _.FREETEXT_COLOR:N(this,od,sb).call(this,d);break}}static get defaultPropertiesToUpdate(){return[[_.FREETEXT_SIZE,fl._defaultFontSize],[_.FREETEXT_COLOR,fl._defaultColor||Nl._defaultLineColor]]}get propertiesToUpdate(){return[[_.FREETEXT_SIZE,Q(this,vd)],[_.FREETEXT_COLOR,Q(this,XU)]]}_translateEmpty(l,d){this._uiManager.translateSelectedEditors(l,d,!0)}getInitialTranslation(){const l=this.parentScale;return[-fl._internalPadding*l,-(fl._internalPadding+Q(this,vd))*l]}rebuild(){this.parent&&(super.rebuild(),this.div!==null&&(this.isAttachedToDOM||this.parent.add(this)))}enableEditMode(){if(this.isInEditMode())return;this.parent.setEditingState(!1),this.parent.updateToolbar(ll.FREETEXT),super.enableEditMode(),this.overlayDiv.classList.remove("enabled"),this.editorDiv.contentEditable=!0,this._isDraggable=!1,this.div.removeAttribute("aria-activedescendant"),b(this,AF,new AbortController);const l=this._uiManager.combinedSignal(Q(this,AF));this.editorDiv.addEventListener("keydown",this.editorDivKeydown.bind(this),{signal:l}),this.editorDiv.addEventListener("focus",this.editorDivFocus.bind(this),{signal:l}),this.editorDiv.addEventListener("blur",this.editorDivBlur.bind(this),{signal:l}),this.editorDiv.addEventListener("input",this.editorDivInput.bind(this),{signal:l}),this.editorDiv.addEventListener("paste",this.editorDivPaste.bind(this),{signal:l})}disableEditMode(){var l;this.isInEditMode()&&(this.parent.setEditingState(!0),super.disableEditMode(),this.overlayDiv.classList.add("enabled"),this.editorDiv.contentEditable=!1,this.div.setAttribute("aria-activedescendant",Q(this,oW)),this._isDraggable=!0,(l=Q(this,AF))==null||l.abort(),b(this,AF,null),this.div.focus({preventScroll:!0}),this.isEditing=!1,this.parent.div.classList.add("freetextEditing"))}focusin(l){this._focusEventsAllowed&&(super.focusin(l),l.target!==this.editorDiv&&this.editorDiv.focus())}onceAdded(){var l;this.width||(this.enableEditMode(),this.editorDiv.focus(),(l=this._initialOptions)!=null&&l.isCentered&&this.center(),this._initialOptions=null)}isEmpty(){return!this.editorDiv||this.editorDiv.innerText.trim()===""}remove(){this.isEditing=!1,this.parent&&(this.parent.setEditingState(!0),this.parent.div.classList.add("freetextEditing")),super.remove()}commit(){if(!this.isInEditMode())return;super.commit(),this.disableEditMode();const l=Q(this,Kd),d=b(this,Kd,N(this,od,ib).call(this).trimEnd());if(l===d)return;const Z=t=>{if(b(this,Kd,t),!t){this.remove();return}N(this,od,BW).call(this),this._uiManager.rebuild(this),N(this,od,Cn).call(this)};this.addCommands({cmd:()=>{Z(d)},undo:()=>{Z(l)},mustExec:!1}),N(this,od,Cn).call(this)}shouldGetKeyboardEvents(){return this.isInEditMode()}enterInEditMode(){this.enableEditMode(),this.editorDiv.focus()}dblclick(l){this.enterInEditMode()}keydown(l){l.target===this.div&&l.key==="Enter"&&(this.enterInEditMode(),l.preventDefault())}editorDivKeydown(l){fl._keyboardManager.exec(this,l)}editorDivFocus(l){this.isEditing=!0}editorDivBlur(l){this.isEditing=!1}editorDivInput(l){this.parent.div.classList.toggle("freetextEditing",this.isEmpty())}disableEditing(){this.editorDiv.setAttribute("role","comment"),this.editorDiv.removeAttribute("aria-multiline")}enableEditing(){this.editorDiv.setAttribute("role","textbox"),this.editorDiv.setAttribute("aria-multiline",!0)}render(){if(this.div)return this.div;let l,d;this.width&&(l=this.x,d=this.y),super.render(),this.editorDiv=document.createElement("div"),this.editorDiv.className="internal",this.editorDiv.setAttribute("id",Q(this,oW)),this.editorDiv.setAttribute("data-l10n-id","pdfjs-free-text"),this.enableEditing(),Nl._l10nPromise.get("pdfjs-free-text-default-content").then(t=>{var F;return(F=this.editorDiv)==null?void 0:F.setAttribute("default-content",t)}),this.editorDiv.contentEditable=!0;const{style:Z}=this.editorDiv;if(Z.fontSize=`calc(${Q(this,vd)}px * var(--scale-factor))`,Z.color=Q(this,XU),this.div.append(this.editorDiv),this.overlayDiv=document.createElement("div"),this.overlayDiv.classList.add("overlay","enabled"),this.div.append(this.overlayDiv),Yn(this,this.div,["dblclick","keydown"]),this.width){const[t,F]=this.parentDimensions;if(this.annotationElementId){const{position:c}=this._initialData;let[a,W]=this.getInitialTranslation();[a,W]=this.pageTranslationToScreen(a,W);const[n,V]=this.pageDimensions,[s,i]=this.pageTranslation;let R,h;switch(this.rotation){case 0:R=l+(c[0]-s)/n,h=d+this.height-(c[1]-i)/V;break;case 90:R=l+(c[0]-s)/n,h=d-(c[1]-i)/V,[a,W]=[W,-a];break;case 180:R=l-this.width+(c[0]-s)/n,h=d-(c[1]-i)/V,[a,W]=[-a,-W];break;case 270:R=l+(c[0]-s-this.height*V)/n,h=d+(c[1]-i-this.width*n)/V,[a,W]=[-W,a];break}this.setAt(R*t,h*F,a,W)}else this.setAt(l*t,d*F,this.width*t,this.height*F);N(this,od,BW).call(this),this._isDraggable=!0,this.editorDiv.contentEditable=!1}else this._isDraggable=!1,this.editorDiv.contentEditable=!0;return this.div}editorDivPaste(l){var d,Z,t;const F=l.clipboardData||window.clipboardData,{types:c}=F;if(c.length===1&&c[0]==="text/plain")return;l.preventDefault();const a=N(d=fl,UF,qs).call(d,F.getData("text")||"").replaceAll(uW,`
|
||
`);if(!a)return;const W=window.getSelection();if(!W.rangeCount)return;this.editorDiv.normalize(),W.deleteFromDocument();const n=W.getRangeAt(0);if(!a.includes(`
|
||
`)){n.insertNode(document.createTextNode(a)),this.editorDiv.normalize(),W.collapseToStart();return}const{startContainer:V,startOffset:s}=n,i=[],R=[];if(V.nodeType===Node.TEXT_NODE){const M=V.parentElement;if(R.push(V.nodeValue.slice(s).replaceAll(uW,"")),M!==this.editorDiv){let J=i;for(const T of this.editorDiv.childNodes){if(T===M){J=R;continue}J.push(N(Z=fl,UF,xn).call(Z,T))}}i.push(V.nodeValue.slice(0,s).replaceAll(uW,""))}else if(V===this.editorDiv){let M=i,J=0;for(const T of this.editorDiv.childNodes)J++===s&&(M=R),M.push(N(t=fl,UF,xn).call(t,T))}b(this,Kd,`${i.join(`
|
||
`)}${a}${R.join(`
|
||
`)}`),N(this,od,BW).call(this);const h=new Range;let m=i.reduce((M,J)=>M+J.length,0);for(const{firstChild:M}of this.editorDiv.childNodes)if(M.nodeType===Node.TEXT_NODE){const J=M.nodeValue.length;if(m<=J){h.setStart(M,m),h.setEnd(M,m);break}m-=J}W.removeAllRanges(),W.addRange(h)}get contentDiv(){return this.editorDiv}static deserialize(l,d,Z){return z(this,null,function*(){var t;let F=null;if(l instanceof Qb){const{data:{defaultAppearanceData:{fontSize:a,fontColor:W},rect:n,rotation:V,id:s,popupRef:i},textContent:R,textPosition:h,parent:{page:{pageNumber:m}}}=l;if(!R||R.length===0)return null;F=l={annotationType:ll.FREETEXT,color:Array.from(W),fontSize:a,value:R.join(`
|
||
`),position:h,pageIndex:m-1,rect:n.slice(0),rotation:V,id:s,deleted:!1,popupRef:i}}const c=yield RF(fl,this,"deserialize").call(this,l,d,Z);return b(c,vd,l.fontSize),b(c,XU,O.makeHexColor(...l.color)),b(c,Kd,N(t=fl,UF,qs).call(t,l.value)),c.annotationElementId=l.id||null,c._initialData=F,c})}serialize(l=!1){if(this.isEmpty())return null;if(this.deleted)return this.serializeDeleted();const d=fl._internalPadding*this.parentScale,Z=this.getRect(d,d),t=Nl._colorManager.convert(this.isAttachedToDOM?getComputedStyle(this.editorDiv).color:Q(this,XU)),F={annotationType:ll.FREETEXT,color:t,fontSize:Q(this,vd),value:N(this,od,Rb).call(this),pageIndex:this.pageIndex,rect:Z,rotation:this.rotation,structTreeParentId:this._structTreeParentId};return l?F:this.annotationElementId&&!N(this,od,Nb).call(this,F)?null:(F.id=this.annotationElementId,F)}renderAnnotationElement(l){const d=super.renderAnnotationElement(l);if(this.deleted)return d;const{style:Z}=d;Z.fontSize=`calc(${Q(this,vd)}px * var(--scale-factor))`,Z.color=Q(this,XU),d.replaceChildren();for(const F of Q(this,Kd).split(`
|
||
`)){const c=document.createElement("div");c.append(F?document.createTextNode(F):document.createElement("br")),d.append(c)}const t=fl._internalPadding*this.parentScale;return l.updateEdited({rect:this.getRect(t,t),popupContent:Q(this,Kd)}),d}resetAnnotationElement(l){super.resetAnnotationElement(l),l.resetEdited()}};XU=new WeakMap,Kd=new WeakMap,oW=new WeakMap,AF=new WeakMap,vd=new WeakMap,od=new WeakSet,Vb=function(U){const l=Z=>{this.editorDiv.style.fontSize=`calc(${Z}px * var(--scale-factor))`,this.translate(0,-(Z-Q(this,vd))*this.parentScale),b(this,vd,Z),N(this,od,Cn).call(this)},d=Q(this,vd);this.addCommands({cmd:l.bind(this,U),undo:l.bind(this,d),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:_.FREETEXT_SIZE,overwriteIfSameType:!0,keepUndo:!0})},sb=function(U){const l=Z=>{b(this,XU,this.editorDiv.style.color=Z)},d=Q(this,XU);this.addCommands({cmd:l.bind(this,U),undo:l.bind(this,d),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:_.FREETEXT_COLOR,overwriteIfSameType:!0,keepUndo:!0})},ib=function(){var U;const l=[];this.editorDiv.normalize();let d=null;for(const Z of this.editorDiv.childNodes)(d==null?void 0:d.nodeType)===Node.TEXT_NODE&&Z.nodeName==="BR"||(l.push(N(U=vU,UF,xn).call(U,Z)),d=Z);return l.join(`
|
||
`)},Cn=function(){const[U,l]=this.parentDimensions;let d;if(this.isAttachedToDOM)d=this.div.getBoundingClientRect();else{const{currentLayer:Z,div:t}=this,F=t.style.display,c=t.classList.contains("hidden");t.classList.remove("hidden"),t.style.display="hidden",Z.div.append(this.div),d=t.getBoundingClientRect(),t.remove(),t.style.display=F,t.classList.toggle("hidden",c)}this.rotation%180===this.parentRotation%180?(this.width=d.width/U,this.height=d.height/l):(this.width=d.height/U,this.height=d.width/l),this.fixAndSetPosition()},UF=new WeakSet,xn=function(U){return(U.nodeType===Node.TEXT_NODE?U.nodeValue:U.innerText).replaceAll(uW,"")},BW=function(){if(this.editorDiv.replaceChildren(),!!Q(this,Kd))for(const U of Q(this,Kd).split(`
|
||
`)){const l=document.createElement("div");l.append(U?document.createTextNode(U):document.createElement("br")),this.editorDiv.append(l)}},Rb=function(){return Q(this,Kd).replaceAll(" "," ")},qs=function(U){return U.replaceAll(" "," ")},Nb=function(U){const{value:l,fontSize:d,color:Z,pageIndex:t}=this._initialData;return this._hasBeenMoved||U.value!==l||U.fontSize!==d||U.color.some((F,c)=>F!==Z[c])||U.pageIndex!==t},e(vU,UF),f(vU,"_freeTextDefaultContent",""),f(vU,"_internalPadding",0),f(vU,"_defaultColor",null),f(vU,"_defaultFontSize",10),f(vU,"_type","freetext"),f(vU,"_editorType",ll.FREETEXT);let ZM=vU;var rn,yt,hU,pU,hb,ya,bb,mb,$s;class lN{constructor(l,d=0,Z=0,t=!0){e(this,pU),e(this,rn),e(this,yt,[]),e(this,hU,[]);let F=1/0,c=-1/0,a=1/0,W=-1/0;const n=iF(10,-4);for(const{x:M,y:J,width:T,height:G}of l){const X=Math.floor((M-d)/n)*n,Y=Math.ceil((M+T+d)/n)*n,p=Math.floor((J-d)/n)*n,o=Math.ceil((J+G+d)/n)*n,k=[X,p,o,!0],S=[Y,p,o,!1];Q(this,yt).push(k,S),F=Math.min(F,X),c=Math.max(c,Y),a=Math.min(a,p),W=Math.max(W,o)}const V=c-F+2*Z,s=W-a+2*Z,i=F-Z,R=a-Z,h=Q(this,yt).at(t?-1:-2),m=[h[0],h[2]];for(const M of Q(this,yt)){const[J,T,G]=M;M[0]=(J-i)/V,M[1]=(T-R)/s,M[2]=(G-R)/s}b(this,rn,{x:i,y:R,width:V,height:s,lastPoint:m})}getOutlines(){Q(this,yt).sort((d,Z)=>d[0]-Z[0]||d[1]-Z[1]||d[2]-Z[2]);const l=[];for(const d of Q(this,yt))d[3]?(l.push(...N(this,pU,$s).call(this,d)),N(this,pU,bb).call(this,d)):(N(this,pU,mb).call(this,d),l.push(...N(this,pU,$s).call(this,d)));return N(this,pU,hb).call(this,l)}}rn=new WeakMap,yt=new WeakMap,hU=new WeakMap,pU=new WeakSet,hb=function(U){const l=[],d=new Set;for(const F of U){const[c,a,W]=F;l.push([c,a,F],[c,W,F])}l.sort((F,c)=>F[1]-c[1]||F[0]-c[0]);for(let F=0,c=l.length;F<c;F+=2){const a=l[F][2],W=l[F+1][2];a.push(W),W.push(a),d.add(a),d.add(W)}const Z=[];let t;for(;d.size>0;){const F=d.values().next().value;let[c,a,W,n,V]=F;d.delete(F);let s=c,i=a;for(t=[c,W],Z.push(t);;){let R;if(d.has(n))R=n;else if(d.has(V))R=V;else break;d.delete(R),[c,a,W,n,V]=R,s!==c&&(t.push(s,i,c,i===a?a:W),s=c),i=i===a?W:a}t.push(s,i)}return new tM(Z,Q(this,rn))},ya=function(U){const l=Q(this,hU);let d=0,Z=l.length-1;for(;d<=Z;){const t=d+Z>>1,F=l[t][0];if(F===U)return t;F<U?d=t+1:Z=t-1}return Z+1},bb=function([,U,l]){const d=N(this,pU,ya).call(this,U);Q(this,hU).splice(d,0,[U,l])},mb=function([,U,l]){const d=N(this,pU,ya).call(this,U);for(let Z=d;Z<Q(this,hU).length;Z++){const[t,F]=Q(this,hU)[Z];if(t!==U)break;if(t===U&&F===l){Q(this,hU).splice(Z,1);return}}for(let Z=d-1;Z>=0;Z--){const[t,F]=Q(this,hU)[Z];if(t!==U)break;if(t===U&&F===l){Q(this,hU).splice(Z,1);return}}},$s=function(U){const[l,d,Z]=U,t=[[l,d,Z]],F=N(this,pU,ya).call(this,Z);for(let c=0;c<F;c++){const[a,W]=Q(this,hU)[c];for(let n=0,V=t.length;n<V;n++){const[,s,i]=t[n];if(!(W<=s||i<=a)){if(s>=a){if(i>W)t[n][1]=W;else{if(V===1)return[];t.splice(n,1),n--,V--}continue}t[n][2]=a,i>W&&t.push([l,W,i])}}}return t};class eb{toSVGPath(){throw new Error("Abstract method `toSVGPath` must be implemented.")}get box(){throw new Error("Abstract getter `box` must be implemented.")}serialize(l,d){throw new Error("Abstract method `serialize` must be implemented.")}get free(){return this instanceof ti}}var yW,vc;class tM extends eb{constructor(l,d){super(),e(this,yW),e(this,vc),b(this,vc,l),b(this,yW,d)}toSVGPath(){const l=[];for(const d of Q(this,vc)){let[Z,t]=d;l.push(`M${Z} ${t}`);for(let F=2;F<d.length;F+=2){const c=d[F],a=d[F+1];c===Z?(l.push(`V${a}`),t=a):a===t&&(l.push(`H${c}`),Z=c)}l.push("Z")}return l.join(" ")}serialize([l,d,Z,t],F){const c=[],a=Z-l,W=t-d;for(const n of Q(this,vc)){const V=new Array(n.length);for(let s=0;s<n.length;s+=2)V[s]=l+n[s]*a,V[s+1]=t-n[s+1]*W;c.push(V)}return c}get box(){return Q(this,yW)}}yW=new WeakMap,vc=new WeakMap;var $U,pZ,Hc,Pc,HU,tl,k0,L0,kW,LW,fc,Ac,kt,zW,rV,li,IW,di;const _F=class Ui{constructor({x:l,y:d},Z,t,F,c,a=0){e(this,IW),e(this,$U),e(this,pZ,[]),e(this,Hc),e(this,Pc),e(this,HU,[]),e(this,tl,new Float64Array(18)),e(this,k0),e(this,L0),e(this,kW),e(this,LW),e(this,fc),e(this,Ac),e(this,kt,[]),b(this,$U,Z),b(this,Ac,F*t),b(this,Pc,c),Q(this,tl).set([NaN,NaN,NaN,NaN,l,d],6),b(this,Hc,a),b(this,LW,Q(Ui,zW)*t),b(this,kW,Q(Ui,li)*t),b(this,fc,t),Q(this,kt).push(l,d)}get free(){return!0}isEmpty(){return isNaN(Q(this,tl)[8])}add({x:l,y:d}){var Z;b(this,k0,l),b(this,L0,d);const[t,F,c,a]=Q(this,$U);let[W,n,V,s]=Q(this,tl).subarray(8,12);const i=l-V,R=d-s,h=Math.hypot(i,R);if(h<Q(this,kW))return!1;const m=h-Q(this,LW),M=m/h,J=M*i,T=M*R;let G=W,X=n;W=V,n=s,V+=J,s+=T,(Z=Q(this,kt))==null||Z.push(l,d);const Y=-T/m,p=J/m,o=Y*Q(this,Ac),k=p*Q(this,Ac);return Q(this,tl).set(Q(this,tl).subarray(2,8),0),Q(this,tl).set([V+o,s+k],4),Q(this,tl).set(Q(this,tl).subarray(14,18),12),Q(this,tl).set([V-o,s-k],16),isNaN(Q(this,tl)[6])?(Q(this,HU).length===0&&(Q(this,tl).set([W+o,n+k],2),Q(this,HU).push(NaN,NaN,NaN,NaN,(W+o-t)/c,(n+k-F)/a),Q(this,tl).set([W-o,n-k],14),Q(this,pZ).push(NaN,NaN,NaN,NaN,(W-o-t)/c,(n-k-F)/a)),Q(this,tl).set([G,X,W,n,V,s],6),!this.isEmpty()):(Q(this,tl).set([G,X,W,n,V,s],6),Math.abs(Math.atan2(X-n,G-W)-Math.atan2(T,J))<Math.PI/2?([W,n,V,s]=Q(this,tl).subarray(2,6),Q(this,HU).push(NaN,NaN,NaN,NaN,((W+V)/2-t)/c,((n+s)/2-F)/a),[W,n,G,X]=Q(this,tl).subarray(14,18),Q(this,pZ).push(NaN,NaN,NaN,NaN,((G+W)/2-t)/c,((X+n)/2-F)/a),!0):([G,X,W,n,V,s]=Q(this,tl).subarray(0,6),Q(this,HU).push(((G+5*W)/6-t)/c,((X+5*n)/6-F)/a,((5*W+V)/6-t)/c,((5*n+s)/6-F)/a,((W+V)/2-t)/c,((n+s)/2-F)/a),[V,s,W,n,G,X]=Q(this,tl).subarray(12,18),Q(this,pZ).push(((G+5*W)/6-t)/c,((X+5*n)/6-F)/a,((5*W+V)/6-t)/c,((5*n+s)/6-F)/a,((W+V)/2-t)/c,((n+s)/2-F)/a),!0))}toSVGPath(){if(this.isEmpty())return"";const l=Q(this,HU),d=Q(this,pZ),Z=Q(this,tl).subarray(4,6),t=Q(this,tl).subarray(16,18),[F,c,a,W]=Q(this,$U),[n,V,s,i]=N(this,IW,di).call(this);if(isNaN(Q(this,tl)[6])&&!this.isEmpty())return`M${(Q(this,tl)[2]-F)/a} ${(Q(this,tl)[3]-c)/W} L${(Q(this,tl)[4]-F)/a} ${(Q(this,tl)[5]-c)/W} L${n} ${V} L${s} ${i} L${(Q(this,tl)[16]-F)/a} ${(Q(this,tl)[17]-c)/W} L${(Q(this,tl)[14]-F)/a} ${(Q(this,tl)[15]-c)/W} Z`;const R=[];R.push(`M${l[4]} ${l[5]}`);for(let h=6;h<l.length;h+=6)isNaN(l[h])?R.push(`L${l[h+4]} ${l[h+5]}`):R.push(`C${l[h]} ${l[h+1]} ${l[h+2]} ${l[h+3]} ${l[h+4]} ${l[h+5]}`);R.push(`L${(Z[0]-F)/a} ${(Z[1]-c)/W} L${n} ${V} L${s} ${i} L${(t[0]-F)/a} ${(t[1]-c)/W}`);for(let h=d.length-6;h>=6;h-=6)isNaN(d[h])?R.push(`L${d[h+4]} ${d[h+5]}`):R.push(`C${d[h]} ${d[h+1]} ${d[h+2]} ${d[h+3]} ${d[h+4]} ${d[h+5]}`);return R.push(`L${d[4]} ${d[5]} Z`),R.join(" ")}getOutlines(){var T;var l;const d=Q(this,HU),Z=Q(this,pZ),t=Q(this,tl),F=t.subarray(4,6),c=t.subarray(16,18),[a,W,n,V]=Q(this,$U),s=new Float64Array(((T=(l=Q(this,kt))==null?void 0:l.length)!=null?T:0)+2);for(let G=0,X=s.length-2;G<X;G+=2)s[G]=(Q(this,kt)[G]-a)/n,s[G+1]=(Q(this,kt)[G+1]-W)/V;s[s.length-2]=(Q(this,k0)-a)/n,s[s.length-1]=(Q(this,L0)-W)/V;const[i,R,h,m]=N(this,IW,di).call(this);if(isNaN(t[6])&&!this.isEmpty()){const G=new Float64Array(36);return G.set([NaN,NaN,NaN,NaN,(t[2]-a)/n,(t[3]-W)/V,NaN,NaN,NaN,NaN,(t[4]-a)/n,(t[5]-W)/V,NaN,NaN,NaN,NaN,i,R,NaN,NaN,NaN,NaN,h,m,NaN,NaN,NaN,NaN,(t[16]-a)/n,(t[17]-W)/V,NaN,NaN,NaN,NaN,(t[14]-a)/n,(t[15]-W)/V],0),new ti(G,s,Q(this,$U),Q(this,fc),Q(this,Hc),Q(this,Pc))}const M=new Float64Array(Q(this,HU).length+24+Q(this,pZ).length);let J=d.length;for(let G=0;G<J;G+=2){if(isNaN(d[G])){M[G]=M[G+1]=NaN;continue}M[G]=d[G],M[G+1]=d[G+1]}M.set([NaN,NaN,NaN,NaN,(F[0]-a)/n,(F[1]-W)/V,NaN,NaN,NaN,NaN,i,R,NaN,NaN,NaN,NaN,h,m,NaN,NaN,NaN,NaN,(c[0]-a)/n,(c[1]-W)/V],J),J+=24;for(let G=Z.length-6;G>=6;G-=6)for(let X=0;X<6;X+=2){if(isNaN(Z[G+X])){M[J]=M[J+1]=NaN,J+=2;continue}M[J]=Z[G+X],M[J+1]=Z[G+X+1],J+=2}return M.set([NaN,NaN,NaN,NaN,Z[4],Z[5]],J),new ti(M,s,Q(this,$U),Q(this,fc),Q(this,Hc),Q(this,Pc))}};$U=new WeakMap,pZ=new WeakMap,Hc=new WeakMap,Pc=new WeakMap,HU=new WeakMap,tl=new WeakMap,k0=new WeakMap,L0=new WeakMap,kW=new WeakMap,LW=new WeakMap,fc=new WeakMap,Ac=new WeakMap,kt=new WeakMap,zW=new WeakMap,rV=new WeakMap,li=new WeakMap,IW=new WeakSet,di=function(){const U=Q(this,tl).subarray(4,6),l=Q(this,tl).subarray(16,18),[d,Z,t,F]=Q(this,$U);return[(Q(this,k0)+(U[0]-l[0])/2-d)/t,(Q(this,L0)+(U[1]-l[1])/2-Z)/F,(Q(this,k0)+(l[0]-U[0])/2-d)/t,(Q(this,L0)+(l[1]-U[1])/2-Z)/F]},e(_F,zW,8),e(_F,rV,2),e(_F,li,Q(_F,zW)+Q(_F,rV));let Zi=_F;var _c,m0,OZ,DW,xd,EW,kl,lU,qc,$c,Mb;class ti extends eb{constructor(l,d,Z,t,F,c){super(),e(this,lU),e(this,_c),e(this,m0,null),e(this,OZ),e(this,DW),e(this,xd),e(this,EW),e(this,kl),b(this,kl,l),b(this,xd,d),b(this,_c,Z),b(this,EW,t),b(this,OZ,F),b(this,DW,c),N(this,lU,Mb).call(this,c);const{x:a,y:W,width:n,height:V}=Q(this,m0);for(let s=0,i=l.length;s<i;s+=2)l[s]=(l[s]-a)/n,l[s+1]=(l[s+1]-W)/V;for(let s=0,i=d.length;s<i;s+=2)d[s]=(d[s]-a)/n,d[s+1]=(d[s+1]-W)/V}toSVGPath(){const l=[`M${Q(this,kl)[4]} ${Q(this,kl)[5]}`];for(let d=6,Z=Q(this,kl).length;d<Z;d+=6){if(isNaN(Q(this,kl)[d])){l.push(`L${Q(this,kl)[d+4]} ${Q(this,kl)[d+5]}`);continue}l.push(`C${Q(this,kl)[d]} ${Q(this,kl)[d+1]} ${Q(this,kl)[d+2]} ${Q(this,kl)[d+3]} ${Q(this,kl)[d+4]} ${Q(this,kl)[d+5]}`)}return l.push("Z"),l.join(" ")}serialize([l,d,Z,t],F){const c=Z-l,a=t-d;let W,n;switch(F){case 0:W=N(this,lU,qc).call(this,Q(this,kl),l,t,c,-a),n=N(this,lU,qc).call(this,Q(this,xd),l,t,c,-a);break;case 90:W=N(this,lU,$c).call(this,Q(this,kl),l,d,c,a),n=N(this,lU,$c).call(this,Q(this,xd),l,d,c,a);break;case 180:W=N(this,lU,qc).call(this,Q(this,kl),Z,d,-c,a),n=N(this,lU,qc).call(this,Q(this,xd),Z,d,-c,a);break;case 270:W=N(this,lU,$c).call(this,Q(this,kl),Z,t,-c,-a),n=N(this,lU,$c).call(this,Q(this,xd),Z,t,-c,-a);break}return{outline:Array.from(W),points:[Array.from(n)]}}get box(){return Q(this,m0)}getNewOutline(l,d){const{x:Z,y:t,width:F,height:c}=Q(this,m0),[a,W,n,V]=Q(this,_c),s=F*n,i=c*V,R=Z*n+a,h=t*V+W,m=new Zi({x:Q(this,xd)[0]*s+R,y:Q(this,xd)[1]*i+h},Q(this,_c),Q(this,EW),l,Q(this,DW),d!=null?d:Q(this,OZ));for(let M=2;M<Q(this,xd).length;M+=2)m.add({x:Q(this,xd)[M]*s+R,y:Q(this,xd)[M+1]*i+h});return m.getOutlines()}}_c=new WeakMap,m0=new WeakMap,OZ=new WeakMap,DW=new WeakMap,xd=new WeakMap,EW=new WeakMap,kl=new WeakMap,lU=new WeakSet,qc=function(U,l,d,Z,t){const F=new Float64Array(U.length);for(let c=0,a=U.length;c<a;c+=2)F[c]=l+U[c]*Z,F[c+1]=d+U[c+1]*t;return F},$c=function(U,l,d,Z,t){const F=new Float64Array(U.length);for(let c=0,a=U.length;c<a;c+=2)F[c]=l+U[c+1]*Z,F[c+1]=d+U[c]*t;return F},Mb=function(U){const l=Q(this,kl);let d=l[4],Z=l[5],t=d,F=Z,c=d,a=Z,W=d,n=Z;const V=U?Math.max:Math.min;for(let m=6,M=l.length;m<M;m+=6){if(isNaN(l[m]))t=Math.min(t,l[m+4]),F=Math.min(F,l[m+5]),c=Math.max(c,l[m+4]),a=Math.max(a,l[m+5]),n<l[m+5]?(W=l[m+4],n=l[m+5]):n===l[m+5]&&(W=V(W,l[m+4]));else{const J=O.bezierBoundingBox(d,Z,...l.slice(m,m+6));t=Math.min(t,J[0]),F=Math.min(F,J[1]),c=Math.max(c,J[2]),a=Math.max(a,J[3]),n<J[3]?(W=J[2],n=J[3]):n===J[3]&&(W=V(W,J[2]))}d=l[m+4],Z=l[m+5]}const s=t-Q(this,OZ),i=F-Q(this,OZ),R=c-t+2*Q(this,OZ),h=a-F+2*Q(this,OZ);b(this,m0,{x:s,y:i,width:R,height:h,lastPoint:[W,n]})};var ka,La,RU,BF,nc,Hl,za,Vc,Ia,Da,NU,sc,Xd,ic,ol,jV,OV,dN,Nt,UN,MZ;let Jb=(Xd=class{constructor({editor:U=null,uiManager:l=null}){e(this,ol),e(this,ka,N(this,ol,dN).bind(this)),e(this,La,N(this,ol,UN).bind(this)),e(this,RU,null),e(this,BF,null),e(this,nc),e(this,Hl,null),e(this,za,!1),e(this,Vc,!1),e(this,Ia,null),e(this,Da),e(this,NU,null),e(this,sc);var d;U?(b(this,Vc,!1),b(this,sc,_.HIGHLIGHT_COLOR),b(this,Ia,U)):(b(this,Vc,!0),b(this,sc,_.HIGHLIGHT_DEFAULT_COLOR)),b(this,NU,(U==null?void 0:U._uiManager)||l),b(this,Da,Q(this,NU)._eventBus),b(this,nc,(U==null?void 0:U.color)||((d=Q(this,NU))==null?void 0:d.highlightColors.values().next().value)||"#FFFF98"),Q(Xd,ic)||b(Xd,ic,Object.freeze({blue:"pdfjs-editor-colorpicker-blue",green:"pdfjs-editor-colorpicker-green",pink:"pdfjs-editor-colorpicker-pink",red:"pdfjs-editor-colorpicker-red",yellow:"pdfjs-editor-colorpicker-yellow"}))}static get _keyboardManager(){return Zl(this,"_keyboardManager",new fQ([[["Escape","mac+Escape"],Xd.prototype._hideDropdownFromKeyboard],[[" ","mac+ "],Xd.prototype._colorSelectFromKeyboard],[["ArrowDown","ArrowRight","mac+ArrowDown","mac+ArrowRight"],Xd.prototype._moveToNext],[["ArrowUp","ArrowLeft","mac+ArrowUp","mac+ArrowLeft"],Xd.prototype._moveToPrevious],[["Home","mac+Home"],Xd.prototype._moveToBeginning],[["End","mac+End"],Xd.prototype._moveToEnd]]))}renderButton(){const U=b(this,RU,document.createElement("button"));U.className="colorPicker",U.tabIndex="0",U.setAttribute("data-l10n-id","pdfjs-editor-colorpicker-button"),U.setAttribute("aria-haspopup",!0);const l=Q(this,NU)._signal;U.addEventListener("click",N(this,ol,Nt).bind(this),{signal:l}),U.addEventListener("keydown",Q(this,ka),{signal:l});const d=b(this,BF,document.createElement("span"));return d.className="swatch",d.setAttribute("aria-hidden",!0),d.style.backgroundColor=Q(this,nc),U.append(d),U}renderMainDropdown(){const U=b(this,Hl,N(this,ol,jV).call(this));return U.setAttribute("aria-orientation","horizontal"),U.setAttribute("aria-labelledby","highlightColorPickerLabel"),U}_colorSelectFromKeyboard(U){if(U.target===Q(this,RU)){N(this,ol,Nt).call(this,U);return}const l=U.target.getAttribute("data-color");l&&N(this,ol,OV).call(this,l,U)}_moveToNext(U){var l,d;if(!Q(this,ol,MZ)){N(this,ol,Nt).call(this,U);return}if(U.target===Q(this,RU)){(l=Q(this,Hl).firstChild)==null||l.focus();return}(d=U.target.nextSibling)==null||d.focus()}_moveToPrevious(U){var l,d;if(U.target===((l=Q(this,Hl))==null?void 0:l.firstChild)||U.target===Q(this,RU)){Q(this,ol,MZ)&&this._hideDropdownFromKeyboard();return}Q(this,ol,MZ)||N(this,ol,Nt).call(this,U),(d=U.target.previousSibling)==null||d.focus()}_moveToBeginning(U){var l;if(!Q(this,ol,MZ)){N(this,ol,Nt).call(this,U);return}(l=Q(this,Hl).firstChild)==null||l.focus()}_moveToEnd(U){var l;if(!Q(this,ol,MZ)){N(this,ol,Nt).call(this,U);return}(l=Q(this,Hl).lastChild)==null||l.focus()}hideDropdown(){var U;(U=Q(this,Hl))==null||U.classList.add("hidden"),window.removeEventListener("pointerdown",Q(this,La))}_hideDropdownFromKeyboard(){var U;if(!Q(this,Vc)){if(!Q(this,ol,MZ)){(U=Q(this,Ia))==null||U.unselect();return}this.hideDropdown(),Q(this,RU).focus({preventScroll:!0,focusVisible:Q(this,za)})}}updateColor(U){if(Q(this,BF)&&(Q(this,BF).style.backgroundColor=U),!Q(this,Hl))return;const l=Q(this,NU).highlightColors.values();for(const d of Q(this,Hl).children)d.setAttribute("aria-selected",l.next().value===U)}destroy(){var U,l;(U=Q(this,RU))==null||U.remove(),b(this,RU,null),b(this,BF,null),(l=Q(this,Hl))==null||l.remove(),b(this,Hl,null)}},ka=new WeakMap,La=new WeakMap,RU=new WeakMap,BF=new WeakMap,nc=new WeakMap,Hl=new WeakMap,za=new WeakMap,Vc=new WeakMap,Ia=new WeakMap,Da=new WeakMap,NU=new WeakMap,sc=new WeakMap,ic=new WeakMap,ol=new WeakSet,jV=function(){const U=document.createElement("div"),l=Q(this,NU)._signal;U.addEventListener("contextmenu",Pd,{signal:l}),U.className="dropdown",U.role="listbox",U.setAttribute("aria-multiselectable",!1),U.setAttribute("aria-orientation","vertical"),U.setAttribute("data-l10n-id","pdfjs-editor-colorpicker-dropdown");for(const[d,Z]of Q(this,NU).highlightColors){const t=document.createElement("button");t.tabIndex="0",t.role="option",t.setAttribute("data-color",Z),t.title=d,t.setAttribute("data-l10n-id",Q(Xd,ic)[d]);const F=document.createElement("span");t.append(F),F.className="swatch",F.style.backgroundColor=Z,t.setAttribute("aria-selected",Z===Q(this,nc)),t.addEventListener("click",N(this,ol,OV).bind(this,Z),{signal:l}),U.append(t)}return U.addEventListener("keydown",Q(this,ka),{signal:l}),U},OV=function(U,l){l.stopPropagation(),Q(this,Da).dispatch("switchannotationeditorparams",{source:this,type:Q(this,sc),value:U})},dN=function(U){Xd._keyboardManager.exec(this,U)},Nt=function(U){if(Q(this,ol,MZ)){this.hideDropdown();return}if(b(this,za,U.detail===0),window.addEventListener("pointerdown",Q(this,La),{signal:Q(this,NU)._signal}),Q(this,Hl)){Q(this,Hl).classList.remove("hidden");return}const l=b(this,Hl,N(this,ol,jV).call(this));Q(this,RU).append(l)},UN=function(U){var l;(l=Q(this,Hl))!=null&&l.contains(U.target)||this.hideDropdown()},MZ=function(){return Q(this,Hl)&&!Q(this,Hl).classList.contains("hidden")},e(Xd,ic,null),Xd);var XQ,jn,AZ,e0,YQ,UU,On,gn,z0,JU,hd,Ld,pQ,_Z,_l,lQ,FU,wW,nl,Fi,Kn,Gb,Tb,ZN,ci,Lt,FZ,I0,Sb,CW,uQ,Xb,Yb,pb,ub,ob;const Md=class Al extends Nl{constructor(l){super(WU(ul({},l),{name:"highlightEditor"})),e(this,nl),e(this,XQ,null),e(this,jn,0),e(this,AZ),e(this,e0,null),e(this,YQ,null),e(this,UU,null),e(this,On,null),e(this,gn,0),e(this,z0,null),e(this,JU,null),e(this,hd,null),e(this,Ld,!1),e(this,pQ,null),e(this,_Z),e(this,_l,null),e(this,lQ,""),e(this,FU),e(this,wW,""),this.color=l.color||Al._defaultColor,b(this,FU,l.thickness||Al._defaultThickness),b(this,_Z,l.opacity||Al._defaultOpacity),b(this,AZ,l.boxes||null),b(this,wW,l.methodOfCreation||""),b(this,lQ,l.text||""),this._isDraggable=!1,l.highlightId>-1?(b(this,Ld,!0),N(this,nl,Kn).call(this,l),N(this,nl,Lt).call(this)):Q(this,AZ)&&(b(this,XQ,l.anchorNode),b(this,jn,l.anchorOffset),b(this,On,l.focusNode),b(this,gn,l.focusOffset),N(this,nl,Fi).call(this),N(this,nl,Lt).call(this),this.rotate(this.rotation))}static get _keyboardManager(){const l=Al.prototype;return Zl(this,"_keyboardManager",new fQ([[["ArrowLeft","mac+ArrowLeft"],l._moveCaret,{args:[0]}],[["ArrowRight","mac+ArrowRight"],l._moveCaret,{args:[1]}],[["ArrowUp","mac+ArrowUp"],l._moveCaret,{args:[2]}],[["ArrowDown","mac+ArrowDown"],l._moveCaret,{args:[3]}]]))}get telemetryInitialData(){return{action:"added",type:Q(this,Ld)?"free_highlight":"highlight",color:this._uiManager.highlightColorNames.get(this.color),thickness:Q(this,FU),methodOfCreation:Q(this,wW)}}get telemetryFinalData(){return{type:"highlight",color:this._uiManager.highlightColorNames.get(this.color)}}static computeTelemetryFinalData(l){return{numberOfColors:l.get("color").size}}static initialize(l,d){var Z;Nl.initialize(l,d),Al._defaultColor||(Al._defaultColor=((Z=d.highlightColors)==null?void 0:Z.values().next().value)||"#fff066")}static updateDefaultParams(l,d){switch(l){case _.HIGHLIGHT_DEFAULT_COLOR:Al._defaultColor=d;break;case _.HIGHLIGHT_THICKNESS:Al._defaultThickness=d;break}}translateInPage(l,d){}get toolbarPosition(){return Q(this,pQ)}updateParams(l,d){switch(l){case _.HIGHLIGHT_COLOR:N(this,nl,Gb).call(this,d);break;case _.HIGHLIGHT_THICKNESS:N(this,nl,Tb).call(this,d);break}}static get defaultPropertiesToUpdate(){return[[_.HIGHLIGHT_DEFAULT_COLOR,Al._defaultColor],[_.HIGHLIGHT_THICKNESS,Al._defaultThickness]]}get propertiesToUpdate(){return[[_.HIGHLIGHT_COLOR,this.color||Al._defaultColor],[_.HIGHLIGHT_THICKNESS,Q(this,FU)||Al._defaultThickness],[_.HIGHLIGHT_FREE,Q(this,Ld)]]}addEditToolbar(){return z(this,null,function*(){const l=yield RF(Al.prototype,this,"addEditToolbar").call(this);return l?(this._uiManager.highlightColors&&(b(this,YQ,new Jb({editor:this})),l.addColorPicker(Q(this,YQ))),l):null})}disableEditing(){super.disableEditing(),this.div.classList.toggle("disabled",!0)}enableEditing(){super.enableEditing(),this.div.classList.toggle("disabled",!1)}fixAndSetPosition(){return super.fixAndSetPosition(N(this,nl,uQ).call(this))}getBaseTranslation(){return[0,0]}getRect(l,d){return super.getRect(l,d,N(this,nl,uQ).call(this))}onceAdded(){this.annotationElementId||this.parent.addUndoableEditor(this),this.div.focus()}remove(){N(this,nl,ci).call(this),this._reportTelemetry({action:"deleted"}),super.remove()}rebuild(){this.parent&&(super.rebuild(),this.div!==null&&(N(this,nl,Lt).call(this),this.isAttachedToDOM||this.parent.add(this)))}setParent(l){var d;let Z=!1;this.parent&&!l?N(this,nl,ci).call(this):l&&(N(this,nl,Lt).call(this,l),Z=!this.parent&&((d=this.div)==null?void 0:d.classList.contains("selectedEditor"))),super.setParent(l),this.show(this._isVisible),Z&&this.select()}rotate(l){var d,Z,t;const{drawLayer:F}=this.parent;let c;Q(this,Ld)?(l=(l-this.rotation+360)%360,c=N(d=Al,FZ,I0).call(d,Q(this,JU).box,l)):c=N(Z=Al,FZ,I0).call(Z,this,l),F.rotate(Q(this,hd),l),F.rotate(Q(this,_l),l),F.updateBox(Q(this,hd),c),F.updateBox(Q(this,_l),N(t=Al,FZ,I0).call(t,Q(this,UU).box,l))}render(){if(this.div)return this.div;const l=super.render();Q(this,lQ)&&(l.setAttribute("aria-label",Q(this,lQ)),l.setAttribute("role","mark")),Q(this,Ld)?l.classList.add("free"):this.div.addEventListener("keydown",N(this,nl,Sb).bind(this),{signal:this._uiManager._signal});const d=b(this,z0,document.createElement("div"));l.append(d),d.setAttribute("aria-hidden","true"),d.className="internal",d.style.clipPath=Q(this,e0);const[Z,t]=this.parentDimensions;return this.setDims(this.width*Z,this.height*t),Yn(this,Q(this,z0),["pointerover","pointerleave"]),this.enableEditing(),l}pointerover(){this.parent.drawLayer.addClass(Q(this,_l),"hovered")}pointerleave(){this.parent.drawLayer.removeClass(Q(this,_l),"hovered")}_moveCaret(l){switch(this.parent.unselect(this),l){case 0:case 2:N(this,nl,CW).call(this,!0);break;case 1:case 3:N(this,nl,CW).call(this,!1);break}}select(){var l,d;super.select(),Q(this,_l)&&((l=this.parent)==null||l.drawLayer.removeClass(Q(this,_l),"hovered"),(d=this.parent)==null||d.drawLayer.addClass(Q(this,_l),"selected"))}unselect(){var l;super.unselect(),Q(this,_l)&&((l=this.parent)==null||l.drawLayer.removeClass(Q(this,_l),"selected"),Q(this,Ld)||N(this,nl,CW).call(this,!1))}get _mustFixPosition(){return!Q(this,Ld)}show(l=this._isVisible){super.show(l),this.parent&&(this.parent.drawLayer.show(Q(this,hd),l),this.parent.drawLayer.show(Q(this,_l),l))}static startHighlighting(l,d,{target:Z,x:t,y:F}){const{x:c,y:a,width:W,height:n}=Z.getBoundingClientRect(),V=new AbortController,s=l.combinedSignal(V),i=h=>{h.preventDefault(),h.stopPropagation()},R=h=>{V.abort(),N(this,FZ,ub).call(this,l,h)};window.addEventListener("blur",R,{signal:s}),window.addEventListener("pointerup",R,{signal:s}),window.addEventListener("pointerdown",i,{capture:!0,passive:!1,signal:s}),window.addEventListener("contextmenu",Pd,{signal:s}),Z.addEventListener("pointermove",N(this,FZ,pb).bind(this,l),{signal:s}),this._freeHighlight=new Zi({x:t,y:F},[c,a,W,n],l.scale,this._defaultThickness/2,d,.001),{id:this._freeHighlightId,clipPathId:this._freeHighlightClipId}=l.drawLayer.highlight(this._freeHighlight,this._defaultColor,this._defaultOpacity,!0)}static deserialize(l,d,Z){return z(this,null,function*(){var t,F,c,a;let W=null;if(l instanceof Wb){const{data:{quadPoints:T,rect:G,rotation:X,id:Y,color:p,opacity:o,popupRef:k},parent:{page:{pageNumber:S}}}=l;W=l={annotationType:ll.HIGHLIGHT,color:Array.from(p),opacity:o,quadPoints:T,boxes:null,pageIndex:S-1,rect:G.slice(0),rotation:X,id:Y,deleted:!1,popupRef:k}}else if(l instanceof $i){const{data:{inkLists:T,rect:G,rotation:X,id:Y,color:p,borderStyle:{rawWidth:o},popupRef:k},parent:{page:{pageNumber:S}}}=l;W=l={annotationType:ll.HIGHLIGHT,color:Array.from(p),thickness:o,inkLists:T,boxes:null,pageIndex:S-1,rect:G.slice(0),rotation:X,id:Y,deleted:!1,popupRef:k}}const{color:n,quadPoints:V,inkLists:s,opacity:i}=l,R=yield RF(Al,this,"deserialize").call(this,l,d,Z);R.color=O.makeHexColor(...n),b(R,_Z,i||1),s&&b(R,FU,l.thickness),R.annotationElementId=l.id||null,R._initialData=W;const[h,m]=R.pageDimensions,[M,J]=R.pageTranslation;if(V){const T=b(R,AZ,[]);for(let G=0;G<V.length;G+=8)T.push({x:(V[G]-M)/h,y:1-(V[G+1]-J)/m,width:(V[G+2]-V[G])/h,height:(V[G+1]-V[G+5])/m});N(t=R,nl,Fi).call(t),N(F=R,nl,Lt).call(F),R.rotate(R.rotation)}else if(s){b(R,Ld,!0);const T=s[0],G={x:T[0]-M,y:m-(T[1]-J)},X=new Zi(G,[0,0,h,m],1,Q(R,FU)/2,!0,.001);for(let o=0,k=T.length;o<k;o+=2)G.x=T[o]-M,G.y=m-(T[o+1]-J),X.add(G);const{id:Y,clipPathId:p}=d.drawLayer.highlight(X,R.color,R._defaultOpacity,!0);N(c=R,nl,Kn).call(c,{highlightOutlines:X.getOutlines(),highlightId:Y,clipPathId:p}),N(a=R,nl,Lt).call(a)}return R})}serialize(l=!1){if(this.isEmpty()||l)return null;if(this.deleted)return this.serializeDeleted();const d=this.getRect(0,0),Z=Nl._colorManager.convert(this.color),t={annotationType:ll.HIGHLIGHT,color:Z,opacity:Q(this,_Z),thickness:Q(this,FU),quadPoints:N(this,nl,Xb).call(this),outlines:N(this,nl,Yb).call(this,d),pageIndex:this.pageIndex,rect:d,rotation:N(this,nl,uQ).call(this),structTreeParentId:this._structTreeParentId};return this.annotationElementId&&!N(this,nl,ob).call(this,t)?null:(t.id=this.annotationElementId,t)}renderAnnotationElement(l){return l.updateEdited({rect:this.getRect(0,0)}),null}static canCreateNewEmptyEditor(){return!1}};XQ=new WeakMap,jn=new WeakMap,AZ=new WeakMap,e0=new WeakMap,YQ=new WeakMap,UU=new WeakMap,On=new WeakMap,gn=new WeakMap,z0=new WeakMap,JU=new WeakMap,hd=new WeakMap,Ld=new WeakMap,pQ=new WeakMap,_Z=new WeakMap,_l=new WeakMap,lQ=new WeakMap,FU=new WeakMap,wW=new WeakMap,nl=new WeakSet,Fi=function(){const U=new lN(Q(this,AZ),.001);b(this,JU,U.getOutlines()),{x:this.x,y:this.y,width:this.width,height:this.height}=Q(this,JU).box;const l=new lN(Q(this,AZ),.0025,.001,this._uiManager.direction==="ltr");b(this,UU,l.getOutlines());const{lastPoint:d}=Q(this,UU).box;b(this,pQ,[(d[0]-this.x)/this.width,(d[1]-this.y)/this.height])},Kn=function({highlightOutlines:U,highlightId:l,clipPathId:d}){var Z,t;if(b(this,JU,U),b(this,UU,U.getNewOutline(Q(this,FU)/2+1.5,.0025)),l>=0)b(this,hd,l),b(this,e0,d),this.parent.drawLayer.finalizeLine(l,U),b(this,_l,this.parent.drawLayer.highlightOutline(Q(this,UU)));else if(this.parent){const V=this.parent.viewport.rotation;this.parent.drawLayer.updateLine(Q(this,hd),U),this.parent.drawLayer.updateBox(Q(this,hd),N(Z=Md,FZ,I0).call(Z,Q(this,JU).box,(V-this.rotation+360)%360)),this.parent.drawLayer.updateLine(Q(this,_l),Q(this,UU)),this.parent.drawLayer.updateBox(Q(this,_l),N(t=Md,FZ,I0).call(t,Q(this,UU).box,V))}const{x:F,y:c,width:a,height:W}=U.box;switch(this.rotation){case 0:this.x=F,this.y=c,this.width=a,this.height=W;break;case 90:{const[V,s]=this.parentDimensions;this.x=c,this.y=1-F,this.width=a*s/V,this.height=W*V/s;break}case 180:this.x=1-F,this.y=1-c,this.width=a,this.height=W;break;case 270:{const[V,s]=this.parentDimensions;this.x=1-c,this.y=F,this.width=a*s/V,this.height=W*V/s;break}}const{lastPoint:n}=Q(this,UU).box;b(this,pQ,[(n[0]-F)/a,(n[1]-c)/W])},Gb=function(U){const l=(t,F)=>{var c,a,W;this.color=t,(c=this.parent)==null||c.drawLayer.changeColor(Q(this,hd),t),(a=Q(this,YQ))==null||a.updateColor(t),b(this,_Z,F),(W=this.parent)==null||W.drawLayer.changeOpacity(Q(this,hd),F)},d=this.color,Z=Q(this,_Z);this.addCommands({cmd:l.bind(this,U,Md._defaultOpacity),undo:l.bind(this,d,Z),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:_.HIGHLIGHT_COLOR,overwriteIfSameType:!0,keepUndo:!0}),this._reportTelemetry({action:"color_changed",color:this._uiManager.highlightColorNames.get(U)},!0)},Tb=function(U){const l=Q(this,FU),d=Z=>{b(this,FU,Z),N(this,nl,ZN).call(this,Z)};this.addCommands({cmd:d.bind(this,U),undo:d.bind(this,l),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:_.INK_THICKNESS,overwriteIfSameType:!0,keepUndo:!0}),this._reportTelemetry({action:"thickness_changed",thickness:U},!0)},ZN=function(U){if(!Q(this,Ld))return;N(this,nl,Kn).call(this,{highlightOutlines:Q(this,JU).getNewOutline(U/2)}),this.fixAndSetPosition();const[l,d]=this.parentDimensions;this.setDims(this.width*l,this.height*d)},ci=function(){Q(this,hd)===null||!this.parent||(this.parent.drawLayer.remove(Q(this,hd)),b(this,hd,null),this.parent.drawLayer.remove(Q(this,_l)),b(this,_l,null))},Lt=function(U=this.parent){Q(this,hd)===null&&({id:md(this,hd)._,clipPathId:md(this,e0)._}=U.drawLayer.highlight(Q(this,JU),this.color,Q(this,_Z)),b(this,_l,U.drawLayer.highlightOutline(Q(this,UU))),Q(this,z0)&&(Q(this,z0).style.clipPath=Q(this,e0)))},FZ=new WeakSet,I0=function({x:U,y:l,width:d,height:Z},t){switch(t){case 90:return{x:1-l-Z,y:U,width:Z,height:d};case 180:return{x:1-U-d,y:1-l-Z,width:d,height:Z};case 270:return{x:l,y:1-U-d,width:Z,height:d}}return{x:U,y:l,width:d,height:Z}},Sb=function(U){Md._keyboardManager.exec(this,U)},CW=function(U){if(!Q(this,XQ))return;const l=window.getSelection();U?l.setPosition(Q(this,XQ),Q(this,jn)):l.setPosition(Q(this,On),Q(this,gn))},uQ=function(){return Q(this,Ld)?this.rotation:0},Xb=function(){if(Q(this,Ld))return null;const[U,l]=this.pageDimensions,[d,Z]=this.pageTranslation,t=Q(this,AZ),F=new Float32Array(t.length*8);let c=0;for(const{x:a,y:W,width:n,height:V}of t){const s=a*U+d,i=(1-W-V)*l+Z;F[c]=F[c+4]=s,F[c+1]=F[c+3]=i,F[c+2]=F[c+6]=s+n*U,F[c+5]=F[c+7]=i+V*l,c+=8}return F},Yb=function(U){return Q(this,JU).serialize(U,N(this,nl,uQ).call(this))},pb=function(U,l){this._freeHighlight.add(l)&&U.drawLayer.updatePath(this._freeHighlightId,this._freeHighlight)},ub=function(U,l){this._freeHighlight.isEmpty()?U.drawLayer.removeFreeHighlight(this._freeHighlightId):U.createAndAddNewEditor(l,!1,{highlightId:this._freeHighlightId,highlightOutlines:this._freeHighlight.getOutlines(),clipPathId:this._freeHighlightClipId,methodOfCreation:"main_toolbar"}),this._freeHighlightId=-1,this._freeHighlight=null,this._freeHighlightClipId=""},ob=function(U){const{color:l}=this._initialData;return U.color.some((d,Z)=>d!==l[Z])},e(Md,FZ),f(Md,"_defaultColor",null),f(Md,"_defaultOpacity",1),f(Md,"_defaultThickness",12),f(Md,"_type","highlight"),f(Md,"_editorType",ll.HIGHLIGHT),f(Md,"_freeHighlightId",-1),f(Md,"_freeHighlight",null),f(Md,"_freeHighlightClipId","");let tN=Md;var M0,J0,cZ,uZ,tU,qF,$F,G0,gZ,dQ,T0,S0,zt,H,Bb,yb,kb,Lb,gV,zb,Qi,FN,cN,QN,aN,WN,Pt,ai,Wi,ni,vn,Hn,D0,Vi,Ea,X0,Ib,KV,Db,Eb,si,wa,oQ;const rd=class jd extends Nl{constructor(l){super(WU(ul({},l),{name:"inkEditor"})),e(this,H),e(this,M0,0),e(this,J0,0),e(this,cZ,null),e(this,uZ,new Path2D),e(this,tU,!1),e(this,qF,null),e(this,$F,!1),e(this,G0,!1),e(this,gZ,null),e(this,dQ,null),e(this,T0,0),e(this,S0,0),e(this,zt,null),this.color=l.color||null,this.thickness=l.thickness||null,this.opacity=l.opacity||null,this.paths=[],this.bezierPath2D=[],this.allRawPaths=[],this.currentPath=[],this.scaleFactor=1,this.translationX=this.translationY=0,this.x=0,this.y=0,this._willKeepAspectRatio=!0}static initialize(l,d){Nl.initialize(l,d)}static updateDefaultParams(l,d){switch(l){case _.INK_THICKNESS:jd._defaultThickness=d;break;case _.INK_COLOR:jd._defaultColor=d;break;case _.INK_OPACITY:jd._defaultOpacity=d/100;break}}updateParams(l,d){switch(l){case _.INK_THICKNESS:N(this,H,Bb).call(this,d);break;case _.INK_COLOR:N(this,H,yb).call(this,d);break;case _.INK_OPACITY:N(this,H,kb).call(this,d);break}}static get defaultPropertiesToUpdate(){return[[_.INK_THICKNESS,jd._defaultThickness],[_.INK_COLOR,jd._defaultColor||Nl._defaultLineColor],[_.INK_OPACITY,Math.round(jd._defaultOpacity*100)]]}get propertiesToUpdate(){var l;return[[_.INK_THICKNESS,this.thickness||jd._defaultThickness],[_.INK_COLOR,this.color||jd._defaultColor||Nl._defaultLineColor],[_.INK_OPACITY,Math.round(100*((l=this.opacity)!=null?l:jd._defaultOpacity))]]}rebuild(){this.parent&&(super.rebuild(),this.div!==null&&(this.canvas||(N(this,H,vn).call(this),N(this,H,Hn).call(this)),this.isAttachedToDOM||(this.parent.add(this),N(this,H,D0).call(this)),N(this,H,oQ).call(this)))}remove(){var l;this.canvas!==null&&(this.isEmpty()||this.commit(),this.canvas.width=this.canvas.height=0,this.canvas.remove(),this.canvas=null,Q(this,cZ)&&(clearTimeout(Q(this,cZ)),b(this,cZ,null)),(l=Q(this,gZ))==null||l.disconnect(),b(this,gZ,null),super.remove())}setParent(l){!this.parent&&l?this._uiManager.removeShouldRescale(this):this.parent&&l===null&&this._uiManager.addShouldRescale(this),super.setParent(l)}onScaleChanging(){const[l,d]=this.parentDimensions,Z=this.width*l,t=this.height*d;this.setDimensions(Z,t)}enableEditMode(){Q(this,tU)||this.canvas===null||(super.enableEditMode(),this._isDraggable=!1,N(this,H,ai).call(this))}disableEditMode(){!this.isInEditMode()||this.canvas===null||(super.disableEditMode(),this._isDraggable=!this.isEmpty(),this.div.classList.remove("editing"),N(this,H,Wi).call(this))}onceAdded(){this._isDraggable=!this.isEmpty()}isEmpty(){return this.paths.length===0||this.paths.length===1&&this.paths[0].length===0}commit(){Q(this,tU)||(super.commit(),this.isEditing=!1,this.disableEditMode(),this.setInForeground(),b(this,tU,!0),this.div.classList.add("disabled"),N(this,H,oQ).call(this,!0),this.select(),this.parent.addInkEditorIfNeeded(!0),this.moveInDOM(),this.div.focus({preventScroll:!0}))}focusin(l){this._focusEventsAllowed&&(super.focusin(l),this.enableEditMode())}canvasPointerdown(l){l.button!==0||!this.isInEditMode()||Q(this,tU)||(this.setInForeground(),l.preventDefault(),this.div.contains(document.activeElement)||this.div.focus({preventScroll:!0}),N(this,H,zb).call(this,l.offsetX,l.offsetY))}canvasPointermove(l){l.preventDefault(),N(this,H,Qi).call(this,l.offsetX,l.offsetY)}canvasPointerup(l){l.preventDefault(),N(this,H,ni).call(this,l)}canvasPointerleave(l){N(this,H,ni).call(this,l)}get isResizable(){return!this.isEmpty()&&Q(this,tU)}render(){if(this.div)return this.div;let l,d;this.width&&(l=this.x,d=this.y),super.render(),this.div.setAttribute("data-l10n-id","pdfjs-ink");const[Z,t,F,c]=N(this,H,Lb).call(this);if(this.setAt(Z,t,0,0),this.setDims(F,c),N(this,H,vn).call(this),this.width){const[a,W]=this.parentDimensions;this.setAspectRatio(this.width*a,this.height*W),this.setAt(l*a,d*W,this.width*a,this.height*W),b(this,G0,!0),N(this,H,D0).call(this),this.setDims(this.width*a,this.height*W),N(this,H,Pt).call(this),this.div.classList.add("disabled")}else this.div.classList.add("editing"),this.enableEditMode();return N(this,H,Hn).call(this),this.div}setDimensions(l,d){const Z=Math.round(l),t=Math.round(d);if(Q(this,T0)===Z&&Q(this,S0)===t)return;b(this,T0,Z),b(this,S0,t),this.canvas.style.visibility="hidden";const[F,c]=this.parentDimensions;this.width=l/F,this.height=d/c,this.fixAndSetPosition(),Q(this,tU)&&N(this,H,Vi).call(this,l,d),N(this,H,D0).call(this),N(this,H,Pt).call(this),this.canvas.style.visibility="visible",this.fixDims()}static deserialize(l,d,Z){return z(this,null,function*(){var t,F,c;if(l instanceof $i)return null;const a=yield RF(jd,this,"deserialize").call(this,l,d,Z);a.thickness=l.thickness,a.color=O.makeHexColor(...l.color),a.opacity=l.opacity;const[W,n]=a.pageDimensions,V=a.width*W,s=a.height*n,i=a.parentScale,R=l.thickness/2;b(a,tU,!0),b(a,T0,Math.round(V)),b(a,S0,Math.round(s));const{paths:h,rect:m,rotation:M}=l;for(let{bezier:T}of h){T=N(t=jd,X0,Db).call(t,T,m,M);const G=[];a.paths.push(G);let X=i*(T[0]-R),Y=i*(T[1]-R);for(let o=2,k=T.length;o<k;o+=6){const S=i*(T[o]-R),B=i*(T[o+1]-R),y=i*(T[o+2]-R),D=i*(T[o+3]-R),E=i*(T[o+4]-R),r=i*(T[o+5]-R);G.push([[X,Y],[S,B],[y,D],[E,r]]),X=E,Y=r}const p=N(this,X0,Ib).call(this,G);a.bezierPath2D.push(p)}const J=N(F=a,H,si).call(F);return b(a,J0,Math.max(Nl.MIN_SIZE,J[2]-J[0])),b(a,M0,Math.max(Nl.MIN_SIZE,J[3]-J[1])),N(c=a,H,Vi).call(c,V,s),a})}serialize(){if(this.isEmpty())return null;const l=this.getRect(0,0),d=Nl._colorManager.convert(this.ctx.strokeStyle);return{annotationType:ll.INK,color:d,thickness:this.thickness,opacity:this.opacity,paths:N(this,H,Eb).call(this,this.scaleFactor/this.parentScale,this.translationX,this.translationY,l),pageIndex:this.pageIndex,rect:l,rotation:this.rotation,structTreeParentId:this._structTreeParentId}}};M0=new WeakMap,J0=new WeakMap,cZ=new WeakMap,uZ=new WeakMap,tU=new WeakMap,qF=new WeakMap,$F=new WeakMap,G0=new WeakMap,gZ=new WeakMap,dQ=new WeakMap,T0=new WeakMap,S0=new WeakMap,zt=new WeakMap,H=new WeakSet,Bb=function(U){const l=Z=>{this.thickness=Z,N(this,H,oQ).call(this)},d=this.thickness;this.addCommands({cmd:l.bind(this,U),undo:l.bind(this,d),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:_.INK_THICKNESS,overwriteIfSameType:!0,keepUndo:!0})},yb=function(U){const l=Z=>{this.color=Z,N(this,H,Pt).call(this)},d=this.color;this.addCommands({cmd:l.bind(this,U),undo:l.bind(this,d),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:_.INK_COLOR,overwriteIfSameType:!0,keepUndo:!0})},kb=function(U){const l=Z=>{this.opacity=Z,N(this,H,Pt).call(this)};U/=100;const d=this.opacity;this.addCommands({cmd:l.bind(this,U),undo:l.bind(this,d),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:_.INK_OPACITY,overwriteIfSameType:!0,keepUndo:!0})},Lb=function(){const{parentRotation:U,parentDimensions:[l,d]}=this;switch(U){case 90:return[0,d,d,l];case 180:return[l,d,l,d];case 270:return[l,0,d,l];default:return[0,0,l,d]}},gV=function(){const{ctx:U,color:l,opacity:d,thickness:Z,parentScale:t,scaleFactor:F}=this;U.lineWidth=Z*t/F,U.lineCap="round",U.lineJoin="round",U.miterLimit=10,U.strokeStyle=`${l}${Ge(d)}`},zb=function(U,l){var Z;this.canvas.addEventListener("contextmenu",Pd,{signal:this._uiManager._signal}),N(this,H,Wi).call(this),b(this,qF,new AbortController);const d=this._uiManager.combinedSignal(Q(this,qF));this.canvas.addEventListener("pointerleave",this.canvasPointerleave.bind(this),{signal:d}),this.canvas.addEventListener("pointermove",this.canvasPointermove.bind(this),{signal:d}),this.canvas.addEventListener("pointerup",this.canvasPointerup.bind(this),{signal:d}),this.isEditing=!0,Q(this,G0)||(b(this,G0,!0),N(this,H,D0).call(this),this.thickness||(this.thickness=rd._defaultThickness),this.color||(this.color=rd._defaultColor||Nl._defaultLineColor),(Z=this.opacity)!=null||(this.opacity=rd._defaultOpacity)),this.currentPath.push([U,l]),b(this,$F,!1),N(this,H,gV).call(this),b(this,zt,()=>{N(this,H,QN).call(this),Q(this,zt)&&window.requestAnimationFrame(Q(this,zt))}),window.requestAnimationFrame(Q(this,zt))},Qi=function(U,l){const[d,Z]=this.currentPath.at(-1);if(this.currentPath.length>1&&U===d&&l===Z)return;const t=this.currentPath;let F=Q(this,uZ);if(t.push([U,l]),b(this,$F,!0),t.length<=2){F.moveTo(...t[0]),F.lineTo(U,l);return}t.length===3&&(b(this,uZ,F=new Path2D),F.moveTo(...t[0])),N(this,H,aN).call(this,F,...t.at(-3),...t.at(-2),U,l)},FN=function(){if(this.currentPath.length===0)return;const U=this.currentPath.at(-1);Q(this,uZ).lineTo(...U)},cN=function(U,l){b(this,zt,null),U=Math.min(Math.max(U,0),this.canvas.width),l=Math.min(Math.max(l,0),this.canvas.height),N(this,H,Qi).call(this,U,l),N(this,H,FN).call(this);let d;if(this.currentPath.length!==1)d=N(this,H,WN).call(this);else{const a=[U,l];d=[[a,a.slice(),a.slice(),a]]}const Z=Q(this,uZ),t=this.currentPath;this.currentPath=[],b(this,uZ,new Path2D);const F=()=>{this.allRawPaths.push(t),this.paths.push(d),this.bezierPath2D.push(Z),this._uiManager.rebuild(this)},c=()=>{this.allRawPaths.pop(),this.paths.pop(),this.bezierPath2D.pop(),this.paths.length===0?this.remove():(this.canvas||(N(this,H,vn).call(this),N(this,H,Hn).call(this)),N(this,H,oQ).call(this))};this.addCommands({cmd:F,undo:c,mustExec:!0})},QN=function(){if(!Q(this,$F))return;b(this,$F,!1);const U=Math.ceil(this.thickness*this.parentScale),l=this.currentPath.slice(-3),d=l.map(F=>F[0]),Z=l.map(F=>F[1]);Math.min(...d)-U,Math.max(...d)+U,Math.min(...Z)-U,Math.max(...Z)+U;const{ctx:t}=this;t.save(),t.clearRect(0,0,this.canvas.width,this.canvas.height);for(const F of this.bezierPath2D)t.stroke(F);t.stroke(Q(this,uZ)),t.restore()},aN=function(U,l,d,Z,t,F,c){const a=(l+Z)/2,W=(d+t)/2,n=(Z+F)/2,V=(t+c)/2;U.bezierCurveTo(a+2*(Z-a)/3,W+2*(t-W)/3,n+2*(Z-n)/3,V+2*(t-V)/3,n,V)},WN=function(){const U=this.currentPath;if(U.length<=2)return[[U[0],U[0],U.at(-1),U.at(-1)]];const l=[];let d,[Z,t]=U[0];for(d=1;d<U.length-2;d++){const[s,i]=U[d],[R,h]=U[d+1],m=(s+R)/2,M=(i+h)/2,J=[Z+2*(s-Z)/3,t+2*(i-t)/3],T=[m+2*(s-m)/3,M+2*(i-M)/3];l.push([[Z,t],J,T,[m,M]]),[Z,t]=[m,M]}const[F,c]=U[d],[a,W]=U[d+1],n=[Z+2*(F-Z)/3,t+2*(c-t)/3],V=[a+2*(F-a)/3,W+2*(c-W)/3];return l.push([[Z,t],n,V,[a,W]]),l},Pt=function(){if(this.isEmpty()){N(this,H,Ea).call(this);return}N(this,H,gV).call(this);const{canvas:U,ctx:l}=this;l.setTransform(1,0,0,1,0,0),l.clearRect(0,0,U.width,U.height),N(this,H,Ea).call(this);for(const d of this.bezierPath2D)l.stroke(d)},ai=function(){if(Q(this,dQ))return;b(this,dQ,new AbortController);const U=this._uiManager.combinedSignal(Q(this,dQ));this.canvas.addEventListener("pointerdown",this.canvasPointerdown.bind(this),{signal:U})},Wi=function(){var U;(U=this.pointerdownAC)==null||U.abort(),this.pointerdownAC=null},ni=function(U){var l;(l=Q(this,qF))==null||l.abort(),b(this,qF,null),N(this,H,ai).call(this),Q(this,cZ)&&clearTimeout(Q(this,cZ)),b(this,cZ,setTimeout(()=>{b(this,cZ,null),this.canvas.removeEventListener("contextmenu",Pd)},10)),N(this,H,cN).call(this,U.offsetX,U.offsetY),this.addToAnnotationStorage(),this.setInBackground()},vn=function(){this.canvas=document.createElement("canvas"),this.canvas.width=this.canvas.height=0,this.canvas.className="inkEditorCanvas",this.canvas.setAttribute("data-l10n-id","pdfjs-ink-canvas"),this.div.append(this.canvas),this.ctx=this.canvas.getContext("2d")},Hn=function(){b(this,gZ,new ResizeObserver(U=>{const l=U[0].contentRect;l.width&&l.height&&this.setDimensions(l.width,l.height)})),Q(this,gZ).observe(this.div),this._uiManager._signal.addEventListener("abort",()=>{var U;(U=Q(this,gZ))==null||U.disconnect(),b(this,gZ,null)},{once:!0})},D0=function(){if(!Q(this,G0))return;const[U,l]=this.parentDimensions;this.canvas.width=Math.ceil(this.width*U),this.canvas.height=Math.ceil(this.height*l),N(this,H,Ea).call(this)},Vi=function(U,l){const d=N(this,H,wa).call(this),Z=(U-d)/Q(this,J0),t=(l-d)/Q(this,M0);this.scaleFactor=Math.min(Z,t)},Ea=function(){const U=N(this,H,wa).call(this)/2;this.ctx.setTransform(this.scaleFactor,0,0,this.scaleFactor,this.translationX*this.scaleFactor+U,this.translationY*this.scaleFactor+U)},X0=new WeakSet,Ib=function(U){const l=new Path2D;for(let d=0,Z=U.length;d<Z;d++){const[t,F,c,a]=U[d];d===0&&l.moveTo(...t),l.bezierCurveTo(F[0],F[1],c[0],c[1],a[0],a[1])}return l},KV=function(U,l,d){const[Z,t,F,c]=l;switch(d){case 0:for(let a=0,W=U.length;a<W;a+=2)U[a]+=Z,U[a+1]=c-U[a+1];break;case 90:for(let a=0,W=U.length;a<W;a+=2){const n=U[a];U[a]=U[a+1]+Z,U[a+1]=n+t}break;case 180:for(let a=0,W=U.length;a<W;a+=2)U[a]=F-U[a],U[a+1]+=t;break;case 270:for(let a=0,W=U.length;a<W;a+=2){const n=U[a];U[a]=F-U[a+1],U[a+1]=c-n}break;default:throw new Error("Invalid rotation")}return U},Db=function(U,l,d){const[Z,t,F,c]=l;switch(d){case 0:for(let a=0,W=U.length;a<W;a+=2)U[a]-=Z,U[a+1]=c-U[a+1];break;case 90:for(let a=0,W=U.length;a<W;a+=2){const n=U[a];U[a]=U[a+1]-t,U[a+1]=n-Z}break;case 180:for(let a=0,W=U.length;a<W;a+=2)U[a]=F-U[a],U[a+1]-=t;break;case 270:for(let a=0,W=U.length;a<W;a+=2){const n=U[a];U[a]=c-U[a+1],U[a+1]=F-n}break;default:throw new Error("Invalid rotation")}return U},Eb=function(U,l,d,Z){var t,F;const c=[],a=this.thickness/2,W=U*l+a,n=U*d+a;for(const V of this.paths){const s=[],i=[];for(let R=0,h=V.length;R<h;R++){const[m,M,J,T]=V[R];if(m[0]===T[0]&&m[1]===T[1]&&h===1){const y=U*m[0]+W,D=U*m[1]+n;s.push(y,D),i.push(y,D);break}const G=U*m[0]+W,X=U*m[1]+n,Y=U*M[0]+W,p=U*M[1]+n,o=U*J[0]+W,k=U*J[1]+n,S=U*T[0]+W,B=U*T[1]+n;R===0&&(s.push(G,X),i.push(G,X)),s.push(Y,p,o,k,S,B),i.push(Y,p),R===h-1&&i.push(S,B)}c.push({bezier:N(t=rd,X0,KV).call(t,s,Z,this.rotation),points:N(F=rd,X0,KV).call(F,i,Z,this.rotation)})}return c},si=function(){let U=1/0,l=-1/0,d=1/0,Z=-1/0;for(const t of this.paths)for(const[F,c,a,W]of t){const n=O.bezierBoundingBox(...F,...c,...a,...W);U=Math.min(U,n[0]),d=Math.min(d,n[1]),l=Math.max(l,n[2]),Z=Math.max(Z,n[3])}return[U,d,l,Z]},wa=function(){return Q(this,tU)?Math.ceil(this.thickness*this.parentScale):0},oQ=function(U=!1){if(this.isEmpty())return;if(!Q(this,tU)){N(this,H,Pt).call(this);return}const l=N(this,H,si).call(this),d=N(this,H,wa).call(this);b(this,J0,Math.max(Nl.MIN_SIZE,l[2]-l[0])),b(this,M0,Math.max(Nl.MIN_SIZE,l[3]-l[1]));const Z=Math.ceil(d+Q(this,J0)*this.scaleFactor),t=Math.ceil(d+Q(this,M0)*this.scaleFactor),[F,c]=this.parentDimensions;this.width=Z/F,this.height=t/c,this.setAspectRatio(Z,t);const a=this.translationX,W=this.translationY;this.translationX=-l[0],this.translationY=-l[1],N(this,H,D0).call(this),N(this,H,Pt).call(this),b(this,T0,Z),b(this,S0,t),this.setDims(Z,t);const n=U?d/this.scaleFactor/2:0;this.translate(a-this.translationX-n,W-this.translationY-n)},e(rd,X0),f(rd,"_defaultColor",null),f(rd,"_defaultOpacity",1),f(rd,"_defaultThickness",1),f(rd,"_type","ink"),f(rd,"_editorType",ll.INK);let FM=rd;var Yl,ad,ft,qZ,ZF,UQ,QZ,KZ,aZ,Hd,BQ,Ml,Rc,Nc,xW,ii,nN,Pn,vV,rW,VN,wb;const jW=class Cb extends Nl{constructor(l){super(WU(ul({},l),{name:"stampEditor"})),e(this,Ml),e(this,Yl,null),e(this,ad,null),e(this,ft,null),e(this,qZ,null),e(this,ZF,null),e(this,UQ,""),e(this,QZ,null),e(this,KZ,null),e(this,aZ,null),e(this,Hd,!1),e(this,BQ,!1),b(this,qZ,l.bitmapUrl),b(this,ZF,l.bitmapFile)}static initialize(l,d){Nl.initialize(l,d)}static get supportedTypes(){return Zl(this,"supportedTypes",["apng","avif","bmp","gif","jpeg","png","svg+xml","webp","x-icon"].map(l=>`image/${l}`))}static get supportedTypesStr(){return Zl(this,"supportedTypesStr",this.supportedTypes.join(","))}static isHandlingMimeForPasting(l){return this.supportedTypes.includes(l)}static paste(l,d){d.pasteEditor(ll.STAMP,{bitmapFile:l.getAsFile()})}altTextFinish(){this._uiManager.useNewAltTextFlow&&(this.div.hidden=!1),super.altTextFinish()}get telemetryFinalData(){var l;return{type:"stamp",hasAltText:!!((l=this.altTextData)!=null&&l.altText)}}static computeTelemetryFinalData(l){var Z,t;const d=l.get("hasAltText");return{hasAltText:(Z=d.get(!0))!=null?Z:0,hasNoAltText:(t=d.get(!1))!=null?t:0}}mlGuessAltText(l=null,d=!0){return z(this,null,function*(){if(this.hasAltTextData())return null;const{mlManager:Z}=this._uiManager;if(!Z)throw new Error("No ML.");if(!(yield Z.isEnabledFor("altText")))throw new Error("ML isn't enabled for alt text.");const{data:t,width:F,height:c}=l||this.copyCanvas(null,null,!0).imageData,a=yield Z.guess({name:"altText",request:{data:t,width:F,height:c,channels:t.length/(F*c)}});if(!a)throw new Error("No response from the AI service.");if(a.error)throw new Error("Error from the AI service.");if(a.cancel)return null;if(!a.output)throw new Error("No valid response from the AI service.");const W=a.output;return yield this.setGuessedAltText(W),d&&!this.hasAltTextData()&&(this.altTextData={alt:W,decorative:!1}),W})}remove(){var l,d;Q(this,ad)&&(b(this,Yl,null),this._uiManager.imageManager.deleteId(Q(this,ad)),(l=Q(this,QZ))==null||l.remove(),b(this,QZ,null),(d=Q(this,KZ))==null||d.disconnect(),b(this,KZ,null),Q(this,aZ)&&(clearTimeout(Q(this,aZ)),b(this,aZ,null))),super.remove()}rebuild(){if(!this.parent){Q(this,ad)&&N(this,Ml,xW).call(this);return}super.rebuild(),this.div!==null&&(Q(this,ad)&&Q(this,QZ)===null&&N(this,Ml,xW).call(this),this.isAttachedToDOM||this.parent.add(this))}onceAdded(){this._isDraggable=!0,this.div.focus()}isEmpty(){return!(Q(this,ft)||Q(this,Yl)||Q(this,qZ)||Q(this,ZF)||Q(this,ad))}get isResizable(){return!0}render(){if(this.div)return this.div;let l,d;if(this.width&&(l=this.x,d=this.y),super.render(),this.div.hidden=!0,this.div.setAttribute("role","figure"),this.addAltTextButton(),Q(this,Yl)?N(this,Ml,ii).call(this):N(this,Ml,xW).call(this),this.width&&!this.annotationElementId){const[Z,t]=this.parentDimensions;this.setAt(l*Z,d*t,this.width*Z,this.height*t)}return this.div}copyCanvas(l,d,Z=!1){var t;l||(l=224);const{width:F,height:c}=Q(this,Yl),a=new Hi;let W=Q(this,Yl),n=F,V=c,s=null;if(d){if(F>d||c>d){const o=Math.min(d/F,d/c);n=Math.floor(F*o),V=Math.floor(c*o)}s=document.createElement("canvas");const R=s.width=Math.ceil(n*a.sx),h=s.height=Math.ceil(V*a.sy);Q(this,Hd)||(W=N(this,Ml,Pn).call(this,R,h));const m=s.getContext("2d");m.filter=this._uiManager.hcmFilter;let M="white",J="#cfcfd8";this._uiManager.hcmFilter!=="none"?J="black":(t=window.matchMedia)!=null&&t.call(window,"(prefers-color-scheme: dark)").matches&&(M="#8f8f9d",J="#42414d");const T=15,G=T*a.sx,X=T*a.sy,Y=new OffscreenCanvas(G*2,X*2),p=Y.getContext("2d");p.fillStyle=M,p.fillRect(0,0,G*2,X*2),p.fillStyle=J,p.fillRect(0,0,G,X),p.fillRect(G,X,G,X),m.fillStyle=m.createPattern(Y,"repeat"),m.fillRect(0,0,R,h),m.drawImage(W,0,0,W.width,W.height,0,0,R,h)}let i=null;if(Z){let R,h;if(a.symmetric&&W.width<l&&W.height<l)R=W.width,h=W.height;else if(W=Q(this,Yl),F>l||c>l){const M=Math.min(l/F,l/c);R=Math.floor(F*M),h=Math.floor(c*M),Q(this,Hd)||(W=N(this,Ml,Pn).call(this,R,h))}const m=new OffscreenCanvas(R,h).getContext("2d",{willReadFrequently:!0});m.drawImage(W,0,0,W.width,W.height,0,0,R,h),i={width:R,height:h,data:m.getImageData(0,0,R,h).data}}return{canvas:s,width:n,height:V,imageData:i}}getImageForAltText(){return Q(this,QZ)}static deserialize(l,d,Z){return z(this,null,function*(){var t;let F=null;if(l instanceof nb){const{data:{rect:m,rotation:M,id:J,structParent:T,popupRef:G},container:X,parent:{page:{pageNumber:Y}}}=l,p=X.querySelector("canvas"),o=Z.imageManager.getFromCanvas(X.id,p);p.remove();const k=((t=yield d._structTree.getAriaAttributes(`${ji}${J}`))==null?void 0:t.get("aria-label"))||"";F=l={annotationType:ll.STAMP,bitmapId:o.id,bitmap:o.bitmap,pageIndex:Y-1,rect:m.slice(0),rotation:M,id:J,deleted:!1,accessibilityData:{decorative:!1,altText:k},isSvg:!1,structParent:T,popupRef:G}}const c=yield RF(Cb,this,"deserialize").call(this,l,d,Z),{rect:a,bitmap:W,bitmapUrl:n,bitmapId:V,isSvg:s,accessibilityData:i}=l;V&&Z.imageManager.isValidId(V)?(b(c,ad,V),W&&b(c,Yl,W)):b(c,qZ,n),b(c,Hd,s);const[R,h]=c.pageDimensions;return c.width=(a[2]-a[0])/R,c.height=(a[3]-a[1])/h,c.annotationElementId=l.id||null,i&&(c.altTextData=i),c._initialData=F,b(c,BQ,!!F),c})}serialize(l=!1,d=null){var a;if(this.isEmpty())return null;if(this.deleted)return this.serializeDeleted();const Z={annotationType:ll.STAMP,bitmapId:Q(this,ad),pageIndex:this.pageIndex,rect:this.getRect(0,0),rotation:this.rotation,isSvg:Q(this,Hd),structTreeParentId:this._structTreeParentId};if(l)return Z.bitmapUrl=N(this,Ml,rW).call(this,!0),Z.accessibilityData=this.serializeAltText(!0),Z;const{decorative:t,altText:F}=this.serializeAltText(!1);if(!t&&F&&(Z.accessibilityData={type:"Figure",alt:F}),this.annotationElementId){const W=N(this,Ml,wb).call(this,Z);if(W.isSame)return null;W.isSameAltText?delete Z.accessibilityData:Z.accessibilityData.structParent=(a=this._initialData.structParent)!=null?a:-1}if(Z.id=this.annotationElementId,d===null)return Z;d.stamps||(d.stamps=new Map);const c=Q(this,Hd)?(Z.rect[2]-Z.rect[0])*(Z.rect[3]-Z.rect[1]):null;if(!d.stamps.has(Q(this,ad)))d.stamps.set(Q(this,ad),{area:c,serialized:Z}),Z.bitmap=N(this,Ml,rW).call(this,!1);else if(Q(this,Hd)){const W=d.stamps.get(Q(this,ad));c>W.area&&(W.area=c,W.serialized.bitmap.close(),W.serialized.bitmap=N(this,Ml,rW).call(this,!1))}return Z}renderAnnotationElement(l){return l.updateEdited({rect:this.getRect(0,0)}),null}};Yl=new WeakMap,ad=new WeakMap,ft=new WeakMap,qZ=new WeakMap,ZF=new WeakMap,UQ=new WeakMap,QZ=new WeakMap,KZ=new WeakMap,aZ=new WeakMap,Hd=new WeakMap,BQ=new WeakMap,Ml=new WeakSet,Rc=function(U,l=!1){if(!U){this.remove();return}b(this,Yl,U.bitmap),l||(b(this,ad,U.id),b(this,Hd,U.isSvg)),U.file&&b(this,UQ,U.file.name),N(this,Ml,ii).call(this)},Nc=function(){if(b(this,ft,null),this._uiManager.enableWaiting(!1),!!Q(this,QZ)){if(this._uiManager.useNewAltTextWhenAddingImage&&this._uiManager.useNewAltTextFlow&&Q(this,Yl)){this._editToolbar.hide(),this._uiManager.editAltText(this,!0);return}if(!this._uiManager.useNewAltTextWhenAddingImage&&this._uiManager.useNewAltTextFlow&&Q(this,Yl)){this._reportTelemetry({action:"pdfjs.image.image_added",data:{alt_text_modal:!1,alt_text_type:"empty"}});try{this.mlGuessAltText()}catch(U){}}this.div.focus()}},xW=function(){if(Q(this,ad)){this._uiManager.enableWaiting(!0),this._uiManager.imageManager.getFromId(Q(this,ad)).then(d=>N(this,Ml,Rc).call(this,d,!0)).finally(()=>N(this,Ml,Nc).call(this));return}if(Q(this,qZ)){const d=Q(this,qZ);b(this,qZ,null),this._uiManager.enableWaiting(!0),b(this,ft,this._uiManager.imageManager.getFromUrl(d).then(Z=>N(this,Ml,Rc).call(this,Z)).finally(()=>N(this,Ml,Nc).call(this)));return}if(Q(this,ZF)){const d=Q(this,ZF);b(this,ZF,null),this._uiManager.enableWaiting(!0),b(this,ft,this._uiManager.imageManager.getFromFile(d).then(Z=>N(this,Ml,Rc).call(this,Z)).finally(()=>N(this,Ml,Nc).call(this)));return}const U=document.createElement("input");U.type="file",U.accept=jW.supportedTypesStr;const l=this._uiManager._signal;b(this,ft,new Promise(d=>{U.addEventListener("change",()=>z(this,null,function*(){if(!U.files||U.files.length===0)this.remove();else{this._uiManager.enableWaiting(!0);const Z=yield this._uiManager.imageManager.getFromFile(U.files[0]);this._reportTelemetry({action:"pdfjs.image.image_selected",data:{alt_text_modal:this._uiManager.useNewAltTextFlow}}),N(this,Ml,Rc).call(this,Z)}d()}),{signal:l}),U.addEventListener("cancel",()=>{this.remove(),d()},{signal:l})}).finally(()=>N(this,Ml,Nc).call(this))),U.click()},ii=function(){const{div:U}=this;let{width:l,height:d}=Q(this,Yl);const[Z,t]=this.pageDimensions,F=.75;if(this.width)l=this.width*Z,d=this.height*t;else if(l>F*Z||d>F*t){const n=Math.min(F*Z/l,F*t/d);l*=n,d*=n}const[c,a]=this.parentDimensions;this.setDims(l*c/Z,d*a/t),this._uiManager.enableWaiting(!1);const W=b(this,QZ,document.createElement("canvas"));W.setAttribute("role","img"),this.addContainer(W),(!this._uiManager.useNewAltTextWhenAddingImage||!this._uiManager.useNewAltTextFlow||this.annotationElementId)&&(U.hidden=!1),N(this,Ml,vV).call(this,l,d),N(this,Ml,VN).call(this),Q(this,BQ)||(this.parent.addUndoableEditor(this),b(this,BQ,!0)),this._reportTelemetry({action:"inserted_image"}),Q(this,UQ)&&W.setAttribute("aria-label",Q(this,UQ))},nN=function(U,l){var d;const[Z,t]=this.parentDimensions;this.width=U/Z,this.height=l/t,(d=this._initialOptions)!=null&&d.isCentered?this.center():this.fixAndSetPosition(),this._initialOptions=null,Q(this,aZ)!==null&&clearTimeout(Q(this,aZ)),b(this,aZ,setTimeout(()=>{b(this,aZ,null),N(this,Ml,vV).call(this,U,l)},200))},Pn=function(U,l){const{width:d,height:Z}=Q(this,Yl);let t=d,F=Z,c=Q(this,Yl);for(;t>2*U||F>2*l;){const a=t,W=F;t>2*U&&(t=t>=16384?Math.floor(t/2)-1:Math.ceil(t/2)),F>2*l&&(F=F>=16384?Math.floor(F/2)-1:Math.ceil(F/2));const n=new OffscreenCanvas(t,F);n.getContext("2d").drawImage(c,0,0,a,W,0,0,t,F),c=n.transferToImageBitmap()}return c},vV=function(U,l){const d=new Hi,Z=Math.ceil(U*d.sx),t=Math.ceil(l*d.sy),F=Q(this,QZ);if(!F||F.width===Z&&F.height===t)return;F.width=Z,F.height=t;const c=Q(this,Hd)?Q(this,Yl):N(this,Ml,Pn).call(this,Z,t),a=F.getContext("2d");a.filter=this._uiManager.hcmFilter,a.drawImage(c,0,0,c.width,c.height,0,0,Z,t)},rW=function(U){if(U){if(Q(this,Hd)){const d=this._uiManager.imageManager.getSvgUrl(Q(this,ad));if(d)return d}const l=document.createElement("canvas");return{width:l.width,height:l.height}=Q(this,Yl),l.getContext("2d").drawImage(Q(this,Yl),0,0),l.toDataURL()}if(Q(this,Hd)){const[l,d]=this.pageDimensions,Z=Math.round(this.width*l*O0.PDF_TO_CSS_UNITS),t=Math.round(this.height*d*O0.PDF_TO_CSS_UNITS),F=new OffscreenCanvas(Z,t);return F.getContext("2d").drawImage(Q(this,Yl),0,0,Q(this,Yl).width,Q(this,Yl).height,0,0,Z,t),F.transferToImageBitmap()}return structuredClone(Q(this,Yl))},VN=function(){this._uiManager._signal&&(b(this,KZ,new ResizeObserver(U=>{const l=U[0].contentRect;l.width&&l.height&&N(this,Ml,nN).call(this,l.width,l.height)})),Q(this,KZ).observe(this.div),this._uiManager._signal.addEventListener("abort",()=>{var U;(U=Q(this,KZ))==null||U.disconnect(),b(this,KZ,null)},{once:!0}))},wb=function(U){var l;const{rect:d,pageIndex:Z,accessibilityData:{altText:t}}=this._initialData,F=U.rect.every((W,n)=>Math.abs(W-d[n])<1),c=U.pageIndex===Z,a=(((l=U.accessibilityData)==null?void 0:l.alt)||"")===t;return{isSame:F&&c&&a,isSameAltText:a}},f(jW,"_type","stamp"),f(jW,"_editorType",ll.STAMP);let cM=jW;var yF,hc,EU,ht,JZ,Ed,bt,bc,mc,Rd,GZ,v,_d,mt,wd,sN,HV,PV,fV,Ca;let QM=(_d=class{constructor({uiManager:U,pageIndex:l,div:d,structTreeLayer:Z,accessibilityManager:t,annotationLayer:F,drawLayer:c,textLayer:a,viewport:W,l10n:n}){e(this,wd),e(this,yF),e(this,hc,!1),e(this,EU,null),e(this,ht,null),e(this,JZ,null),e(this,Ed,new Map),e(this,bt,!1),e(this,bc,!1),e(this,mc,!1),e(this,Rd,null),e(this,GZ,null),e(this,v);const V=[...Q(_d,mt).values()];if(!_d._initialized){_d._initialized=!0;for(const s of V)s.initialize(n,U)}U.registerEditorTypes(V),b(this,v,U),this.pageIndex=l,this.div=d,b(this,yF,t),b(this,EU,F),this.viewport=W,b(this,Rd,a),this.drawLayer=c,this._structTree=Z,Q(this,v).addLayer(this)}get isEmpty(){return Q(this,Ed).size===0}get isInvisible(){return this.isEmpty&&Q(this,v).getMode()===ll.NONE}updateToolbar(U){Q(this,v).updateToolbar(U)}updateMode(U=Q(this,v).getMode()){switch(N(this,wd,Ca).call(this),U){case ll.NONE:this.disableTextSelection(),this.togglePointerEvents(!1),this.toggleAnnotationLayerPointerEvents(!0),this.disableClick();return;case ll.INK:this.addInkEditorIfNeeded(!1),this.disableTextSelection(),this.togglePointerEvents(!0),this.disableClick();break;case ll.HIGHLIGHT:this.enableTextSelection(),this.togglePointerEvents(!1),this.disableClick();break;default:this.disableTextSelection(),this.togglePointerEvents(!0),this.enableClick()}this.toggleAnnotationLayerPointerEvents(!1);const{classList:l}=this.div;for(const d of Q(_d,mt).values())l.toggle(`${d._type}Editing`,U===d._editorType);this.div.hidden=!1}hasTextLayer(U){var l;return U===((l=Q(this,Rd))==null?void 0:l.div)}addInkEditorIfNeeded(U){if(Q(this,v).getMode()===ll.INK){if(!U){for(const l of Q(this,Ed).values())if(l.isEmpty()){l.setInBackground();return}}this.createAndAddNewEditor({offsetX:0,offsetY:0},!1).setInBackground()}}setEditingState(U){Q(this,v).setEditingState(U)}addCommands(U){Q(this,v).addCommands(U)}toggleDrawing(U=!1){this.div.classList.toggle("drawing",!U)}togglePointerEvents(U=!1){this.div.classList.toggle("disabled",!U)}toggleAnnotationLayerPointerEvents(U=!1){var l;(l=Q(this,EU))==null||l.div.classList.toggle("disabled",!U)}enable(){return z(this,null,function*(){this.div.tabIndex=0,this.togglePointerEvents(!0);const U=new Set;for(const d of Q(this,Ed).values())d.enableEditing(),d.show(!0),d.annotationElementId&&(Q(this,v).removeChangedExistingAnnotation(d),U.add(d.annotationElementId));if(!Q(this,EU))return;const l=Q(this,EU).getEditableAnnotations();for(const d of l){if(d.hide(),Q(this,v).isDeletedAnnotationElement(d.data.id)||U.has(d.data.id))continue;const Z=yield this.deserialize(d);Z&&(this.addOrRebuild(Z),Z.enableEditing())}})}disable(){var U;b(this,mc,!0),this.div.tabIndex=-1,this.togglePointerEvents(!1);const l=new Map,d=new Map;for(const t of Q(this,Ed).values())if(t.disableEditing(),!!t.annotationElementId){if(t.serialize()!==null){l.set(t.annotationElementId,t);continue}else d.set(t.annotationElementId,t);(U=this.getEditableAnnotation(t.annotationElementId))==null||U.show(),t.remove()}if(Q(this,EU)){const t=Q(this,EU).getEditableAnnotations();for(const F of t){const{id:c}=F.data;if(Q(this,v).isDeletedAnnotationElement(c))continue;let a=d.get(c);if(a){a.resetAnnotationElement(F),a.show(!1),F.show();continue}a=l.get(c),a&&(Q(this,v).addChangedExistingAnnotation(a),a.renderAnnotationElement(F)&&a.show(!1)),F.show()}}N(this,wd,Ca).call(this),this.isEmpty&&(this.div.hidden=!0);const{classList:Z}=this.div;for(const t of Q(_d,mt).values())Z.remove(`${t._type}Editing`);this.disableTextSelection(),this.toggleAnnotationLayerPointerEvents(!0),b(this,mc,!1)}getEditableAnnotation(U){var l;return((l=Q(this,EU))==null?void 0:l.getEditableAnnotation(U))||null}setActiveEditor(U){Q(this,v).getActive()!==U&&Q(this,v).setActiveEditor(U)}enableTextSelection(){var U;if(this.div.tabIndex=-1,(U=Q(this,Rd))!=null&&U.div&&!Q(this,GZ)){b(this,GZ,new AbortController);const l=Q(this,v).combinedSignal(Q(this,GZ));Q(this,Rd).div.addEventListener("pointerdown",N(this,wd,sN).bind(this),{signal:l}),Q(this,Rd).div.classList.add("highlighting")}}disableTextSelection(){var U;this.div.tabIndex=0,(U=Q(this,Rd))!=null&&U.div&&Q(this,GZ)&&(Q(this,GZ).abort(),b(this,GZ,null),Q(this,Rd).div.classList.remove("highlighting"))}enableClick(){if(Q(this,ht))return;b(this,ht,new AbortController);const U=Q(this,v).combinedSignal(Q(this,ht));this.div.addEventListener("pointerdown",this.pointerdown.bind(this),{signal:U}),this.div.addEventListener("pointerup",this.pointerup.bind(this),{signal:U})}disableClick(){var U;(U=Q(this,ht))==null||U.abort(),b(this,ht,null)}attach(U){Q(this,Ed).set(U.id,U);const{annotationElementId:l}=U;l&&Q(this,v).isDeletedAnnotationElement(l)&&Q(this,v).removeDeletedAnnotationElement(U)}detach(U){var l;Q(this,Ed).delete(U.id),(l=Q(this,yF))==null||l.removePointerInTextLayer(U.contentDiv),!Q(this,mc)&&U.annotationElementId&&Q(this,v).addDeletedAnnotationElement(U)}remove(U){this.detach(U),Q(this,v).removeEditor(U),U.div.remove(),U.isAttachedToDOM=!1,Q(this,bc)||this.addInkEditorIfNeeded(!1)}changeParent(U){var l;U.parent!==this&&(U.parent&&U.annotationElementId&&(Q(this,v).addDeletedAnnotationElement(U.annotationElementId),Nl.deleteAnnotationElement(U),U.annotationElementId=null),this.attach(U),(l=U.parent)==null||l.detach(U),U.setParent(this),U.div&&U.isAttachedToDOM&&(U.div.remove(),this.div.append(U.div)))}add(U){if(!(U.parent===this&&U.isAttachedToDOM)){if(this.changeParent(U),Q(this,v).addEditor(U),this.attach(U),!U.isAttachedToDOM){const l=U.render();this.div.append(l),U.isAttachedToDOM=!0}U.fixAndSetPosition(),U.onceAdded(),Q(this,v).addToAnnotationStorage(U),U._reportTelemetry(U.telemetryInitialData)}}moveEditorInDOM(U){var l;if(!U.isAttachedToDOM)return;const{activeElement:d}=document;U.div.contains(d)&&!Q(this,JZ)&&(U._focusEventsAllowed=!1,b(this,JZ,setTimeout(()=>{b(this,JZ,null),U.div.contains(document.activeElement)?U._focusEventsAllowed=!0:(U.div.addEventListener("focusin",()=>{U._focusEventsAllowed=!0},{once:!0,signal:Q(this,v)._signal}),d.focus())},0))),U._structTreeParentId=(l=Q(this,yF))==null?void 0:l.moveElementInDOM(this.div,U.div,U.contentDiv,!0)}addOrRebuild(U){U.needsToBeRebuilt()?(U.parent||(U.parent=this),U.rebuild(),U.show()):this.add(U)}addUndoableEditor(U){const l=()=>U._uiManager.rebuild(U),d=()=>{U.remove()};this.addCommands({cmd:l,undo:d,mustExec:!1})}getNextId(){return Q(this,v).getId()}combinedSignal(U){return Q(this,v).combinedSignal(U)}canCreateNewEmptyEditor(){var U;return(U=Q(this,wd,HV))==null?void 0:U.canCreateNewEmptyEditor()}pasteEditor(U,l){Q(this,v).updateToolbar(U),Q(this,v).updateMode(U);const{offsetX:d,offsetY:Z}=N(this,wd,fV).call(this),t=this.getNextId(),F=N(this,wd,PV).call(this,ul({parent:this,id:t,x:d,y:Z,uiManager:Q(this,v),isCentered:!0},l));F&&this.add(F)}deserialize(U){return z(this,null,function*(){var d;var l;return(yield(l=Q(_d,mt).get((d=U.annotationType)!=null?d:U.annotationEditorType))==null?void 0:l.deserialize(U,this,Q(this,v)))||null})}createAndAddNewEditor(U,l,d={}){const Z=this.getNextId(),t=N(this,wd,PV).call(this,ul({parent:this,id:Z,x:U.offsetX,y:U.offsetY,uiManager:Q(this,v),isCentered:l},d));return t&&this.add(t),t}addNewEditor(){this.createAndAddNewEditor(N(this,wd,fV).call(this),!0)}setSelected(U){Q(this,v).setSelected(U)}toggleSelected(U){Q(this,v).toggleSelected(U)}isSelected(U){return Q(this,v).isSelected(U)}unselect(U){Q(this,v).unselect(U)}pointerup(U){const{isMac:l}=Td.platform;if(!(U.button!==0||U.ctrlKey&&l)&&U.target===this.div&&Q(this,bt)){if(b(this,bt,!1),!Q(this,hc)){b(this,hc,!0);return}if(Q(this,v).getMode()===ll.STAMP){Q(this,v).unselectAll();return}this.createAndAddNewEditor(U,!1)}}pointerdown(U){if(Q(this,v).getMode()===ll.HIGHLIGHT&&this.enableTextSelection(),Q(this,bt)){b(this,bt,!1);return}const{isMac:l}=Td.platform;if(U.button!==0||U.ctrlKey&&l||U.target!==this.div)return;b(this,bt,!0);const d=Q(this,v).getActive();b(this,hc,!d||d.isEmpty())}findNewParent(U,l,d){const Z=Q(this,v).findParent(l,d);return Z===null||Z===this?!1:(Z.changeParent(U),!0)}destroy(){var U,l;((U=Q(this,v).getActive())==null?void 0:U.parent)===this&&(Q(this,v).commitOrRemove(),Q(this,v).setActiveEditor(null)),Q(this,JZ)&&(clearTimeout(Q(this,JZ)),b(this,JZ,null));for(const d of Q(this,Ed).values())(l=Q(this,yF))==null||l.removePointerInTextLayer(d.contentDiv),d.setParent(null),d.isAttachedToDOM=!1,d.div.remove();this.div=null,Q(this,Ed).clear(),Q(this,v).removeLayer(this)}render({viewport:U}){this.viewport=U,QF(this.div,U);for(const l of Q(this,v).getEditors(this.pageIndex))this.add(l),l.rebuild();this.updateMode()}update({viewport:U}){Q(this,v).commitOrRemove(),N(this,wd,Ca).call(this);const l=this.viewport.rotation,d=U.rotation;if(this.viewport=U,QF(this.div,{rotation:d}),l!==d)for(const Z of Q(this,Ed).values())Z.rotate(d);this.addInkEditorIfNeeded(!1)}get pageDimensions(){const{pageWidth:U,pageHeight:l}=this.viewport.rawDims;return[U,l]}get scale(){return Q(this,v).viewParameters.realScale}},yF=new WeakMap,hc=new WeakMap,EU=new WeakMap,ht=new WeakMap,JZ=new WeakMap,Ed=new WeakMap,bt=new WeakMap,bc=new WeakMap,mc=new WeakMap,Rd=new WeakMap,GZ=new WeakMap,v=new WeakMap,mt=new WeakMap,wd=new WeakSet,sN=function(U){Q(this,v).unselectAll();const{target:l}=U;if(l===Q(this,Rd).div||(l.getAttribute("role")==="img"||l.classList.contains("endOfContent"))&&Q(this,Rd).div.contains(l)){const{isMac:d}=Td.platform;if(U.button!==0||U.ctrlKey&&d)return;Q(this,v).showAllEditors("highlight",!0,!0),Q(this,Rd).div.classList.add("free"),this.toggleDrawing(),tN.startHighlighting(this,Q(this,v).direction==="ltr",{target:Q(this,Rd).div,x:U.x,y:U.y}),Q(this,Rd).div.addEventListener("pointerup",()=>{Q(this,Rd).div.classList.remove("free"),this.toggleDrawing(!0)},{once:!0,signal:Q(this,v)._signal}),U.preventDefault()}},HV=function(){return Q(_d,mt).get(Q(this,v).getMode())},PV=function(U){const l=Q(this,wd,HV);return l?new l.prototype.constructor(U):null},fV=function(){const{x:U,y:l,width:d,height:Z}=this.div.getBoundingClientRect(),t=Math.max(0,U),F=Math.max(0,l),c=Math.min(window.innerWidth,U+d),a=Math.min(window.innerHeight,l+Z),W=(t+c)/2-U,n=(F+a)/2-l,[V,s]=this.viewport.rotation%180===0?[W,n]:[n,W];return{offsetX:V,offsetY:s}},Ca=function(){b(this,bc,!0);for(const U of Q(this,Ed).values())U.isEmpty()&&U.remove();b(this,bc,!1)},f(_d,"_initialized",!1),e(_d,mt,new Map([ZM,FM,cM,tN].map(U=>[U._editorType,U]))),_d);var wU,xa,El,et,ra,ld,AV,ec,_V,iN;let aM=(ld=class{constructor({pageIndex:U}){e(this,ec),e(this,wU,null),e(this,xa,0),e(this,El,new Map),e(this,et,new Map),this.pageIndex=U}setParent(U){if(!Q(this,wU)){b(this,wU,U);return}if(Q(this,wU)!==U){if(Q(this,El).size>0)for(const l of Q(this,El).values())l.remove(),U.append(l);b(this,wU,U)}}static get _svgFactory(){return Zl(this,"_svgFactory",new Oi)}highlight(U,l,d,Z=!1){const t=md(this,xa)._++,F=N(this,ec,_V).call(this,U.box);F.classList.add("highlight"),U.free&&F.classList.add("free");const c=ld._svgFactory.createElement("defs");F.append(c);const a=ld._svgFactory.createElement("path");c.append(a);const W=`path_p${this.pageIndex}_${t}`;a.setAttribute("id",W),a.setAttribute("d",U.toSVGPath()),Z&&Q(this,et).set(t,a);const n=N(this,ec,iN).call(this,c,W),V=ld._svgFactory.createElement("use");return F.append(V),F.setAttribute("fill",l),F.setAttribute("fill-opacity",d),V.setAttribute("href",`#${W}`),Q(this,El).set(t,F),{id:t,clipPathId:`url(#${n})`}}highlightOutline(U){const l=md(this,xa)._++,d=N(this,ec,_V).call(this,U.box);d.classList.add("highlightOutline");const Z=ld._svgFactory.createElement("defs");d.append(Z);const t=ld._svgFactory.createElement("path");Z.append(t);const F=`path_p${this.pageIndex}_${l}`;t.setAttribute("id",F),t.setAttribute("d",U.toSVGPath()),t.setAttribute("vector-effect","non-scaling-stroke");let c;if(U.free){d.classList.add("free");const n=ld._svgFactory.createElement("mask");Z.append(n),c=`mask_p${this.pageIndex}_${l}`,n.setAttribute("id",c),n.setAttribute("maskUnits","objectBoundingBox");const V=ld._svgFactory.createElement("rect");n.append(V),V.setAttribute("width","1"),V.setAttribute("height","1"),V.setAttribute("fill","white");const s=ld._svgFactory.createElement("use");n.append(s),s.setAttribute("href",`#${F}`),s.setAttribute("stroke","none"),s.setAttribute("fill","black"),s.setAttribute("fill-rule","nonzero"),s.classList.add("mask")}const a=ld._svgFactory.createElement("use");d.append(a),a.setAttribute("href",`#${F}`),c&&a.setAttribute("mask",`url(#${c})`);const W=a.cloneNode();return d.append(W),a.classList.add("mainOutline"),W.classList.add("secondaryOutline"),Q(this,El).set(l,d),l}finalizeLine(U,l){const d=Q(this,et).get(U);Q(this,et).delete(U),this.updateBox(U,l.box),d.setAttribute("d",l.toSVGPath())}updateLine(U,l){Q(this,El).get(U).firstChild.firstChild.setAttribute("d",l.toSVGPath())}removeFreeHighlight(U){this.remove(U),Q(this,et).delete(U)}updatePath(U,l){Q(this,et).get(U).setAttribute("d",l.toSVGPath())}updateBox(U,l){var d;N(d=ld,ra,AV).call(d,Q(this,El).get(U),l)}show(U,l){Q(this,El).get(U).classList.toggle("hidden",!l)}rotate(U,l){Q(this,El).get(U).setAttribute("data-main-rotation",l)}changeColor(U,l){Q(this,El).get(U).setAttribute("fill",l)}changeOpacity(U,l){Q(this,El).get(U).setAttribute("fill-opacity",l)}addClass(U,l){Q(this,El).get(U).classList.add(l)}removeClass(U,l){Q(this,El).get(U).classList.remove(l)}getSVGRoot(U){return Q(this,El).get(U)}remove(U){Q(this,wU)!==null&&(Q(this,El).get(U).remove(),Q(this,El).delete(U))}destroy(){b(this,wU,null);for(const U of Q(this,El).values())U.remove();Q(this,El).clear()}},wU=new WeakMap,xa=new WeakMap,El=new WeakMap,et=new WeakMap,ra=new WeakSet,AV=function(U,{x:l=0,y:d=0,width:Z=1,height:t=1}={}){const{style:F}=U;F.top=`${100*d}%`,F.left=`${100*l}%`,F.width=`${100*Z}%`,F.height=`${100*t}%`},ec=new WeakSet,_V=function(U){var l;const d=ld._svgFactory.create(1,1,!0);return Q(this,wU).append(d),d.setAttribute("aria-hidden",!0),N(l=ld,ra,AV).call(l,d,U),d},iN=function(U,l){const d=ld._svgFactory.createElement("clipPath");U.append(d);const Z=`clip_${l}`;d.setAttribute("id",Z),d.setAttribute("clipPathUnits","objectBoundingBox");const t=ld._svgFactory.createElement("use");return d.append(t),t.setAttribute("href",`#${l}`),t.classList.add("clip"),Z},e(ld,ra),ld);q.AbortException;q.AnnotationEditorLayer;q.AnnotationEditorParamsType;q.AnnotationEditorType;q.AnnotationEditorUIManager;var WM=q.AnnotationLayer;q.AnnotationMode;q.CMapCompressionType;q.ColorPicker;q.DOMSVGFactory;q.DrawLayer;q.FeatureTest;var qV=q.GlobalWorkerOptions;q.ImageKind;q.InvalidPDFException;q.MissingPDFException;q.OPS;q.OutputScale;q.PDFDataRangeTransport;q.PDFDateString;q.PDFWorker;var nM=q.PasswordResponses;q.PermissionFlag;q.PixelsPerInch;q.RenderingCancelledException;var VM=q.TextLayer;q.UnexpectedResponseException;q.Util;q.VerbosityLevel;q.XfaLayer;q.build;q.createValidAbsoluteUrl;q.fetchData;var sM=q.getDocument;q.getFilenameFromUrl;q.getPdfFilenameFromUrl;q.getXfaPageViewport;q.isDataScheme;q.isPdfFile;q.noContextMenu;q.normalizeUnicode;q.setLayerDimensions;q.shadow;q.version;const iM="data:text/javascript;base64,LyoqCiAqIEBsaWNzdGFydCBUaGUgZm9sbG93aW5nIGlzIHRoZSBlbnRpcmUgbGljZW5zZSBub3RpY2UgZm9yIHRoZQogKiBKYXZhU2NyaXB0IGNvZGUgaW4gdGhpcyBwYWdlCiAqCiAqIENvcHlyaWdodCAyMDI0IE1vemlsbGEgRm91bmRhdGlvbgogKgogKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKICoKICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogKgogKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgogKgogKiBAbGljZW5kIFRoZSBhYm92ZSBpcyB0aGUgZW50aXJlIGxpY2Vuc2Ugbm90aWNlIGZvciB0aGUKICogSmF2YVNjcmlwdCBjb2RlIGluIHRoaXMgcGFnZQogKi92YXIgZT17OTMwNjooZSx0LGkpPT57dmFyIGE9aSg0OTAxKSxyPWkoNjgyMykscz1UeXBlRXJyb3I7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKGEoZSkpcmV0dXJuIGU7dGhyb3cgbmV3IHMocihlKSsiIGlzIG5vdCBhIGZ1bmN0aW9uIil9fSwzNTA2OihlLHQsaSk9Pnt2YXIgYT1pKDM5MjUpLHI9U3RyaW5nLHM9VHlwZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZihhKGUpKXJldHVybiBlO3Rocm93IG5ldyBzKCJDYW4ndCBzZXQgIityKGUpKyIgYXMgYSBwcm90b3R5cGUiKX19LDcwODA6KGUsdCxpKT0+e3ZhciBhPWkoNDQwMikuaGFzO2UuZXhwb3J0cz1mdW5jdGlvbihlKXthKGUpO3JldHVybiBlfX0sNjc5OihlLHQsaSk9Pnt2YXIgYT1pKDE2MjUpLHI9VHlwZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2lmKGEodCxlKSlyZXR1cm4gZTt0aHJvdyBuZXcgcigiSW5jb3JyZWN0IGludm9jYXRpb24iKX19LDg1NTE6KGUsdCxpKT0+e3ZhciBhPWkoMzQpLHI9U3RyaW5nLHM9VHlwZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZihhKGUpKXJldHVybiBlO3Rocm93IG5ldyBzKHIoZSkrIiBpcyBub3QgYW4gb2JqZWN0Iil9fSw3ODExOmU9PntlLmV4cG9ydHM9InVuZGVmaW5lZCIhPXR5cGVvZiBBcnJheUJ1ZmZlciYmInVuZGVmaW5lZCIhPXR5cGVvZiBEYXRhVmlld30sNzM5NDooZSx0LGkpPT57dmFyIGE9aSg0NTc2KSxyPWkoNjcwNikscz1pKDIxOTUpLG49YS5BcnJheUJ1ZmZlcixvPWEuVHlwZUVycm9yO2UuZXhwb3J0cz1uJiZyKG4ucHJvdG90eXBlLCJieXRlTGVuZ3RoIiwiZ2V0Iil8fGZ1bmN0aW9uKGUpe2lmKCJBcnJheUJ1ZmZlciIhPT1zKGUpKXRocm93IG5ldyBvKCJBcnJheUJ1ZmZlciBleHBlY3RlZCIpO3JldHVybiBlLmJ5dGVMZW5ndGh9fSwzMjM4OihlLHQsaSk9Pnt2YXIgYT1pKDQ1NzYpLHI9aSg3NDc2KSxzPWkoNzM5NCksbj1hLkFycmF5QnVmZmVyLG89biYmbi5wcm90b3R5cGUsZz1vJiZyKG8uc2xpY2UpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZigwIT09cyhlKSlyZXR1cm4hMTtpZighZylyZXR1cm4hMTt0cnl7ZyhlLDAsMCk7cmV0dXJuITF9Y2F0Y2goZSl7cmV0dXJuITB9fX0sNTE2OTooZSx0LGkpPT57dmFyIGE9aSgzMjM4KSxyPVR5cGVFcnJvcjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYoYShlKSl0aHJvdyBuZXcgcigiQXJyYXlCdWZmZXIgaXMgZGV0YWNoZWQiKTtyZXR1cm4gZX19LDU2MzY6KGUsdCxpKT0+e3ZhciBhPWkoNDU3Nikscj1pKDk1MDQpLHM9aSg2NzA2KSxuPWkoNzY5Niksbz1pKDUxNjkpLGc9aSg3Mzk0KSxjPWkoNDQ4MyksQz1pKDE1NDgpLGg9YS5zdHJ1Y3R1cmVkQ2xvbmUsbD1hLkFycmF5QnVmZmVyLFE9YS5EYXRhVmlldyxFPU1hdGgubWluLHU9bC5wcm90b3R5cGUsZD1RLnByb3RvdHlwZSxmPXIodS5zbGljZSkscD1zKHUsInJlc2l6YWJsZSIsImdldCIpLG09cyh1LCJtYXhCeXRlTGVuZ3RoIiwiZ2V0IikseT1yKGQuZ2V0SW50OCksdz1yKGQuc2V0SW50OCk7ZS5leHBvcnRzPShDfHxjKSYmZnVuY3Rpb24oZSx0LGkpe3ZhciBhLHI9ZyhlKSxzPXZvaWQgMD09PXQ/cjpuKHQpLHU9IXB8fCFwKGUpO28oZSk7aWYoQyl7ZT1oKGUse3RyYW5zZmVyOltlXX0pO2lmKHI9PT1zJiYoaXx8dSkpcmV0dXJuIGV9aWYocj49cyYmKCFpfHx1KSlhPWYoZSwwLHMpO2Vsc2V7dmFyIGQ9aSYmIXUmJm0/e21heEJ5dGVMZW5ndGg6bShlKX06dm9pZCAwO2E9bmV3IGwocyxkKTtmb3IodmFyIGI9bmV3IFEoZSksRD1uZXcgUShhKSxTPUUocyxyKSxrPTA7azxTO2srKyl3KEQsayx5KGIsaykpfUN8fGMoZSk7cmV0dXJuIGF9fSw0NjQ0OihlLHQsaSk9Pnt2YXIgYSxyLHMsbj1pKDc4MTEpLG89aSgzNzI0KSxnPWkoNDU3NiksYz1pKDQ5MDEpLEM9aSgzNCksaD1pKDkyOTcpLGw9aSg2OTU1KSxRPWkoNjgyMyksRT1pKDY2OTkpLHU9aSg2ODQwKSxkPWkoMjEwNiksZj1pKDE2MjUpLHA9aSgyNzg3KSxtPWkoMjk2NykseT1pKDgyMjcpLHc9aSgzMzkyKSxiPWkoMTE4MSksRD1iLmVuZm9yY2UsUz1iLmdldCxrPWcuSW50OEFycmF5LFI9ayYmay5wcm90b3R5cGUsTj1nLlVpbnQ4Q2xhbXBlZEFycmF5LEc9TiYmTi5wcm90b3R5cGUseD1rJiZwKGspLFU9UiYmcChSKSxNPU9iamVjdC5wcm90b3R5cGUsTD1nLlR5cGVFcnJvcixIPXkoInRvU3RyaW5nVGFnIiksSj13KCJUWVBFRF9BUlJBWV9UQUciKSx2PSJUeXBlZEFycmF5Q29uc3RydWN0b3IiLFk9biYmISFtJiYiT3BlcmEiIT09bChnLm9wZXJhKSxUPSExLEs9e0ludDhBcnJheToxLFVpbnQ4QXJyYXk6MSxVaW50OENsYW1wZWRBcnJheToxLEludDE2QXJyYXk6MixVaW50MTZBcnJheToyLEludDMyQXJyYXk6NCxVaW50MzJBcnJheTo0LEZsb2F0MzJBcnJheTo0LEZsb2F0NjRBcnJheTo4fSxxPXtCaWdJbnQ2NEFycmF5OjgsQmlnVWludDY0QXJyYXk6OH0sZ2V0VHlwZWRBcnJheUNvbnN0cnVjdG9yPWZ1bmN0aW9uKGUpe3ZhciB0PXAoZSk7aWYoQyh0KSl7dmFyIGk9Uyh0KTtyZXR1cm4gaSYmaChpLHYpP2lbdl06Z2V0VHlwZWRBcnJheUNvbnN0cnVjdG9yKHQpfX0saXNUeXBlZEFycmF5PWZ1bmN0aW9uKGUpe2lmKCFDKGUpKXJldHVybiExO3ZhciB0PWwoZSk7cmV0dXJuIGgoSyx0KXx8aChxLHQpfTtmb3IoYSBpbiBLKShzPShyPWdbYV0pJiZyLnByb3RvdHlwZSk/RChzKVt2XT1yOlk9ITE7Zm9yKGEgaW4gcSkocz0ocj1nW2FdKSYmci5wcm90b3R5cGUpJiYoRChzKVt2XT1yKTtpZighWXx8IWMoeCl8fHg9PT1GdW5jdGlvbi5wcm90b3R5cGUpe3g9ZnVuY3Rpb24gVHlwZWRBcnJheSgpe3Rocm93IG5ldyBMKCJJbmNvcnJlY3QgaW52b2NhdGlvbiIpfTtpZihZKWZvcihhIGluIEspZ1thXSYmbShnW2FdLHgpfWlmKCFZfHwhVXx8VT09PU0pe1U9eC5wcm90b3R5cGU7aWYoWSlmb3IoYSBpbiBLKWdbYV0mJm0oZ1thXS5wcm90b3R5cGUsVSl9WSYmcChHKSE9PVUmJm0oRyxVKTtpZihvJiYhaChVLEgpKXtUPSEwO2QoVSxILHtjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEModGhpcyk/dGhpc1tKXTp2b2lkIDB9fSk7Zm9yKGEgaW4gSylnW2FdJiZFKGdbYV0sSixhKX1lLmV4cG9ydHM9e05BVElWRV9BUlJBWV9CVUZGRVJfVklFV1M6WSxUWVBFRF9BUlJBWV9UQUc6VCYmSixhVHlwZWRBcnJheTpmdW5jdGlvbihlKXtpZihpc1R5cGVkQXJyYXkoZSkpcmV0dXJuIGU7dGhyb3cgbmV3IEwoIlRhcmdldCBpcyBub3QgYSB0eXBlZCBhcnJheSIpfSxhVHlwZWRBcnJheUNvbnN0cnVjdG9yOmZ1bmN0aW9uKGUpe2lmKGMoZSkmJighbXx8Zih4LGUpKSlyZXR1cm4gZTt0aHJvdyBuZXcgTChRKGUpKyIgaXMgbm90IGEgdHlwZWQgYXJyYXkgY29uc3RydWN0b3IiKX0sZXhwb3J0VHlwZWRBcnJheU1ldGhvZDpmdW5jdGlvbihlLHQsaSxhKXtpZihvKXtpZihpKWZvcih2YXIgciBpbiBLKXt2YXIgcz1nW3JdO2lmKHMmJmgocy5wcm90b3R5cGUsZSkpdHJ5e2RlbGV0ZSBzLnByb3RvdHlwZVtlXX1jYXRjaChpKXt0cnl7cy5wcm90b3R5cGVbZV09dH1jYXRjaChlKXt9fX1VW2VdJiYhaXx8dShVLGUsaT90OlkmJlJbZV18fHQsYSl9fSxleHBvcnRUeXBlZEFycmF5U3RhdGljTWV0aG9kOmZ1bmN0aW9uKGUsdCxpKXt2YXIgYSxyO2lmKG8pe2lmKG0pe2lmKGkpZm9yKGEgaW4gSylpZigocj1nW2FdKSYmaChyLGUpKXRyeXtkZWxldGUgcltlXX1jYXRjaChlKXt9aWYoeFtlXSYmIWkpcmV0dXJuO3RyeXtyZXR1cm4gdSh4LGUsaT90OlkmJnhbZV18fHQpfWNhdGNoKGUpe319Zm9yKGEgaW4gSykhKHI9Z1thXSl8fHJbZV0mJiFpfHx1KHIsZSx0KX19LGdldFR5cGVkQXJyYXlDb25zdHJ1Y3Rvcixpc1ZpZXc6ZnVuY3Rpb24gaXNWaWV3KGUpe2lmKCFDKGUpKXJldHVybiExO3ZhciB0PWwoZSk7cmV0dXJuIkRhdGFWaWV3Ij09PXR8fGgoSyx0KXx8aChxLHQpfSxpc1R5cGVkQXJyYXksVHlwZWRBcnJheTp4LFR5cGVkQXJyYXlQcm90b3R5cGU6VX19LDUzNzA6KGUsdCxpKT0+e3ZhciBhPWkoNjE5OCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxpKXtmb3IodmFyIHI9MCxzPWFyZ3VtZW50cy5sZW5ndGg+Mj9pOmEodCksbj1uZXcgZShzKTtzPnI7KW5bcl09dFtyKytdO3JldHVybiBufX0sOTYxNzooZSx0LGkpPT57dmFyIGE9aSg1Mzk3KSxyPWkoNTYxMCkscz1pKDYxOTgpLGNyZWF0ZU1ldGhvZD1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCxpLG4pe3ZhciBvPWEodCksZz1zKG8pO2lmKDA9PT1nKXJldHVybiFlJiYtMTt2YXIgYyxDPXIobixnKTtpZihlJiZpIT1pKXtmb3IoO2c+QzspaWYoKGM9b1tDKytdKSE9YylyZXR1cm4hMH1lbHNlIGZvcig7Zz5DO0MrKylpZigoZXx8QyBpbiBvKSYmb1tDXT09PWkpcmV0dXJuIGV8fEN8fDA7cmV0dXJuIWUmJi0xfX07ZS5leHBvcnRzPXtpbmNsdWRlczpjcmVhdGVNZXRob2QoITApLGluZGV4T2Y6Y3JlYXRlTWV0aG9kKCExKX19LDQ1Mjc6KGUsdCxpKT0+e3ZhciBhPWkoMzcyNCkscj1pKDQzNzYpLHM9VHlwZUVycm9yLG49T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixvPWEmJiFmdW5jdGlvbigpe2lmKHZvaWQgMCE9PXRoaXMpcmV0dXJuITA7dHJ5e09iamVjdC5kZWZpbmVQcm9wZXJ0eShbXSwibGVuZ3RoIix7d3JpdGFibGU6ITF9KS5sZW5ndGg9MX1jYXRjaChlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIFR5cGVFcnJvcn19KCk7ZS5leHBvcnRzPW8/ZnVuY3Rpb24oZSx0KXtpZihyKGUpJiYhbihlLCJsZW5ndGgiKS53cml0YWJsZSl0aHJvdyBuZXcgcygiQ2Fubm90IHNldCByZWFkIG9ubHkgLmxlbmd0aCIpO3JldHVybiBlLmxlbmd0aD10fTpmdW5jdGlvbihlLHQpe3JldHVybiBlLmxlbmd0aD10fX0sNzYyODooZSx0LGkpPT57dmFyIGE9aSg2MTk4KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIGk9YShlKSxyPW5ldyB0KGkpLHM9MDtzPGk7cysrKXJbc109ZVtpLXMtMV07cmV0dXJuIHJ9fSw5OTI4OihlLHQsaSk9Pnt2YXIgYT1pKDYxOTgpLHI9aSgxMjkxKSxzPVJhbmdlRXJyb3I7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxpLG4pe3ZhciBvPWEoZSksZz1yKGkpLGM9ZzwwP28rZzpnO2lmKGM+PW98fGM8MCl0aHJvdyBuZXcgcygiSW5jb3JyZWN0IGluZGV4Iik7Zm9yKHZhciBDPW5ldyB0KG8pLGg9MDtoPG87aCsrKUNbaF09aD09PWM/bjplW2hdO3JldHVybiBDfX0sNjMxOTooZSx0LGkpPT57dmFyIGE9aSg4NTUxKSxyPWkoOTUzOSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxpLHMpe3RyeXtyZXR1cm4gcz90KGEoaSlbMF0saVsxXSk6dChpKX1jYXRjaCh0KXtyKGUsInRocm93Iix0KX19fSwyMTk1OihlLHQsaSk9Pnt2YXIgYT1pKDk1MDQpLHI9YSh7fS50b1N0cmluZykscz1hKCIiLnNsaWNlKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIHMocihlKSw4LC0xKX19LDY5NTU6KGUsdCxpKT0+e3ZhciBhPWkoMjE0MCkscj1pKDQ5MDEpLHM9aSgyMTk1KSxuPWkoODIyNykoInRvU3RyaW5nVGFnIiksbz1PYmplY3QsZz0iQXJndW1lbnRzIj09PXMoZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzfSgpKTtlLmV4cG9ydHM9YT9zOmZ1bmN0aW9uKGUpe3ZhciB0LGksYTtyZXR1cm4gdm9pZCAwPT09ZT8iVW5kZWZpbmVkIjpudWxsPT09ZT8iTnVsbCI6InN0cmluZyI9PXR5cGVvZihpPWZ1bmN0aW9uKGUsdCl7dHJ5e3JldHVybiBlW3RdfWNhdGNoKGUpe319KHQ9byhlKSxuKSk/aTpnP3ModCk6Ik9iamVjdCI9PT0oYT1zKHQpKSYmcih0LmNhbGxlZSk/IkFyZ3VtZW50cyI6YX19LDc3NDA6KGUsdCxpKT0+e3ZhciBhPWkoOTI5Nykscj1pKDUwMzEpLHM9aSg3MzQ3KSxuPWkoNDkxMyk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxpKXtmb3IodmFyIG89cih0KSxnPW4uZixjPXMuZixDPTA7QzxvLmxlbmd0aDtDKyspe3ZhciBoPW9bQ107YShlLGgpfHxpJiZhKGksaCl8fGcoZSxoLGModCxoKSl9fX0sMjIxMTooZSx0LGkpPT57dmFyIGE9aSg5MDM5KTtlLmV4cG9ydHM9IWEoKGZ1bmN0aW9uKCl7ZnVuY3Rpb24gRigpe31GLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1udWxsO3JldHVybiBPYmplY3QuZ2V0UHJvdG90eXBlT2YobmV3IEYpIT09Ri5wcm90b3R5cGV9KSl9LDI1Mjk6ZT0+e2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybnt2YWx1ZTplLGRvbmU6dH19fSw2Njk5OihlLHQsaSk9Pnt2YXIgYT1pKDM3MjQpLHI9aSg0OTEzKSxzPWkoNjk4MCk7ZS5leHBvcnRzPWE/ZnVuY3Rpb24oZSx0LGkpe3JldHVybiByLmYoZSx0LHMoMSxpKSl9OmZ1bmN0aW9uKGUsdCxpKXtlW3RdPWk7cmV0dXJuIGV9fSw2OTgwOmU9PntlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm57ZW51bWVyYWJsZTohKDEmZSksY29uZmlndXJhYmxlOiEoMiZlKSx3cml0YWJsZTohKDQmZSksdmFsdWU6dH19fSw0NjU5OihlLHQsaSk9Pnt2YXIgYT1pKDM3MjQpLHI9aSg0OTEzKSxzPWkoNjk4MCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxpKXthP3IuZihlLHQscygwLGkpKTplW3RdPWl9fSwyMTA2OihlLHQsaSk9Pnt2YXIgYT1pKDI4Mykscj1pKDQ5MTMpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsaSl7aS5nZXQmJmEoaS5nZXQsdCx7Z2V0dGVyOiEwfSk7aS5zZXQmJmEoaS5zZXQsdCx7c2V0dGVyOiEwfSk7cmV0dXJuIHIuZihlLHQsaSl9fSw2ODQwOihlLHQsaSk9Pnt2YXIgYT1pKDQ5MDEpLHI9aSg0OTEzKSxzPWkoMjgzKSxuPWkoOTQzMyk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxpLG8pe298fChvPXt9KTt2YXIgZz1vLmVudW1lcmFibGUsYz12b2lkIDAhPT1vLm5hbWU/by5uYW1lOnQ7YShpKSYmcyhpLGMsbyk7aWYoby5nbG9iYWwpZz9lW3RdPWk6bih0LGkpO2Vsc2V7dHJ5e28udW5zYWZlP2VbdF0mJihnPSEwKTpkZWxldGUgZVt0XX1jYXRjaChlKXt9Zz9lW3RdPWk6ci5mKGUsdCx7dmFsdWU6aSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohby5ub25Db25maWd1cmFibGUsd3JpdGFibGU6IW8ubm9uV3JpdGFibGV9KX1yZXR1cm4gZX19LDYyNzk6KGUsdCxpKT0+e3ZhciBhPWkoNjg0MCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxpKXtmb3IodmFyIHIgaW4gdClhKGUscix0W3JdLGkpO3JldHVybiBlfX0sOTQzMzooZSx0LGkpPT57dmFyIGE9aSg0NTc2KSxyPU9iamVjdC5kZWZpbmVQcm9wZXJ0eTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt0cnl7cihhLGUse3ZhbHVlOnQsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSl9Y2F0Y2goaSl7YVtlXT10fXJldHVybiB0fX0sMzcyNDooZSx0LGkpPT57dmFyIGE9aSg5MDM5KTtlLmV4cG9ydHM9IWEoKGZ1bmN0aW9uKCl7cmV0dXJuIDchPT1PYmplY3QuZGVmaW5lUHJvcGVydHkoe30sMSx7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDd9fSlbMV19KSl9LDQ0ODM6KGUsdCxpKT0+e3ZhciBhLHIscyxuLG89aSg0NTc2KSxnPWkoOTQyOSksYz1pKDE1NDgpLEM9by5zdHJ1Y3R1cmVkQ2xvbmUsaD1vLkFycmF5QnVmZmVyLGw9by5NZXNzYWdlQ2hhbm5lbCxRPSExO2lmKGMpUT1mdW5jdGlvbihlKXtDKGUse3RyYW5zZmVyOltlXX0pfTtlbHNlIGlmKGgpdHJ5e2x8fChhPWcoIndvcmtlcl90aHJlYWRzIikpJiYobD1hLk1lc3NhZ2VDaGFubmVsKTtpZihsKXtyPW5ldyBsO3M9bmV3IGgoMik7bj1mdW5jdGlvbihlKXtyLnBvcnQxLnBvc3RNZXNzYWdlKG51bGwsW2VdKX07aWYoMj09PXMuYnl0ZUxlbmd0aCl7bihzKTswPT09cy5ieXRlTGVuZ3RoJiYoUT1uKX19fWNhdGNoKGUpe31lLmV4cG9ydHM9UX0sNDA1NTooZSx0LGkpPT57dmFyIGE9aSg0NTc2KSxyPWkoMzQpLHM9YS5kb2N1bWVudCxuPXIocykmJnIocy5jcmVhdGVFbGVtZW50KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIG4/cy5jcmVhdGVFbGVtZW50KGUpOnt9fX0sNjgzNzplPT57dmFyIHQ9VHlwZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZihlPjkwMDcxOTkyNTQ3NDA5OTEpdGhyb3cgdCgiTWF4aW11bSBhbGxvd2VkIGluZGV4IGV4Y2VlZGVkIik7cmV0dXJuIGV9fSw1MDAyOmU9PntlLmV4cG9ydHM9e0luZGV4U2l6ZUVycm9yOntzOiJJTkRFWF9TSVpFX0VSUiIsYzoxLG06MX0sRE9NU3RyaW5nU2l6ZUVycm9yOntzOiJET01TVFJJTkdfU0laRV9FUlIiLGM6MixtOjB9LEhpZXJhcmNoeVJlcXVlc3RFcnJvcjp7czoiSElFUkFSQ0hZX1JFUVVFU1RfRVJSIixjOjMsbToxfSxXcm9uZ0RvY3VtZW50RXJyb3I6e3M6IldST05HX0RPQ1VNRU5UX0VSUiIsYzo0LG06MX0sSW52YWxpZENoYXJhY3RlckVycm9yOntzOiJJTlZBTElEX0NIQVJBQ1RFUl9FUlIiLGM6NSxtOjF9LE5vRGF0YUFsbG93ZWRFcnJvcjp7czoiTk9fREFUQV9BTExPV0VEX0VSUiIsYzo2LG06MH0sTm9Nb2RpZmljYXRpb25BbGxvd2VkRXJyb3I6e3M6Ik5PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUiIsYzo3LG06MX0sTm90Rm91bmRFcnJvcjp7czoiTk9UX0ZPVU5EX0VSUiIsYzo4LG06MX0sTm90U3VwcG9ydGVkRXJyb3I6e3M6Ik5PVF9TVVBQT1JURURfRVJSIixjOjksbToxfSxJblVzZUF0dHJpYnV0ZUVycm9yOntzOiJJTlVTRV9BVFRSSUJVVEVfRVJSIixjOjEwLG06MX0sSW52YWxpZFN0YXRlRXJyb3I6e3M6IklOVkFMSURfU1RBVEVfRVJSIixjOjExLG06MX0sU3ludGF4RXJyb3I6e3M6IlNZTlRBWF9FUlIiLGM6MTIsbToxfSxJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3I6e3M6IklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUiIsYzoxMyxtOjF9LE5hbWVzcGFjZUVycm9yOntzOiJOQU1FU1BBQ0VfRVJSIixjOjE0LG06MX0sSW52YWxpZEFjY2Vzc0Vycm9yOntzOiJJTlZBTElEX0FDQ0VTU19FUlIiLGM6MTUsbToxfSxWYWxpZGF0aW9uRXJyb3I6e3M6IlZBTElEQVRJT05fRVJSIixjOjE2LG06MH0sVHlwZU1pc21hdGNoRXJyb3I6e3M6IlRZUEVfTUlTTUFUQ0hfRVJSIixjOjE3LG06MX0sU2VjdXJpdHlFcnJvcjp7czoiU0VDVVJJVFlfRVJSIixjOjE4LG06MX0sTmV0d29ya0Vycm9yOntzOiJORVRXT1JLX0VSUiIsYzoxOSxtOjF9LEFib3J0RXJyb3I6e3M6IkFCT1JUX0VSUiIsYzoyMCxtOjF9LFVSTE1pc21hdGNoRXJyb3I6e3M6IlVSTF9NSVNNQVRDSF9FUlIiLGM6MjEsbToxfSxRdW90YUV4Y2VlZGVkRXJyb3I6e3M6IlFVT1RBX0VYQ0VFREVEX0VSUiIsYzoyMixtOjF9LFRpbWVvdXRFcnJvcjp7czoiVElNRU9VVF9FUlIiLGM6MjMsbToxfSxJbnZhbGlkTm9kZVR5cGVFcnJvcjp7czoiSU5WQUxJRF9OT0RFX1RZUEVfRVJSIixjOjI0LG06MX0sRGF0YUNsb25lRXJyb3I6e3M6IkRBVEFfQ0xPTkVfRVJSIixjOjI1LG06MX19fSw4NzI3OmU9PntlLmV4cG9ydHM9WyJjb25zdHJ1Y3RvciIsImhhc093blByb3BlcnR5IiwiaXNQcm90b3R5cGVPZiIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwidG9Mb2NhbGVTdHJpbmciLCJ0b1N0cmluZyIsInZhbHVlT2YiXX0sNjE5MzooZSx0LGkpPT57dmFyIGE9aSg0MjE1KTtlLmV4cG9ydHM9Ik5PREUiPT09YX0sMjgzOTooZSx0LGkpPT57dmFyIGE9aSg0NTc2KS5uYXZpZ2F0b3Iscj1hJiZhLnVzZXJBZ2VudDtlLmV4cG9ydHM9cj9TdHJpbmcocik6IiJ9LDk1MTk6KGUsdCxpKT0+e3ZhciBhLHIscz1pKDQ1NzYpLG49aSgyODM5KSxvPXMucHJvY2VzcyxnPXMuRGVubyxjPW8mJm8udmVyc2lvbnN8fGcmJmcudmVyc2lvbixDPWMmJmMudjg7QyYmKHI9KGE9Qy5zcGxpdCgiLiIpKVswXT4wJiZhWzBdPDQ/MTorKGFbMF0rYVsxXSkpOyFyJiZuJiYoIShhPW4ubWF0Y2goL0VkZ2VcLyhcZCspLykpfHxhWzFdPj03NCkmJihhPW4ubWF0Y2goL0Nocm9tZVwvKFxkKykvKSkmJihyPSthWzFdKTtlLmV4cG9ydHM9cn0sNDIxNTooZSx0LGkpPT57dmFyIGE9aSg0NTc2KSxyPWkoMjgzOSkscz1pKDIxOTUpLHVzZXJBZ2VudFN0YXJ0c1dpdGg9ZnVuY3Rpb24oZSl7cmV0dXJuIHIuc2xpY2UoMCxlLmxlbmd0aCk9PT1lfTtlLmV4cG9ydHM9dXNlckFnZW50U3RhcnRzV2l0aCgiQnVuLyIpPyJCVU4iOnVzZXJBZ2VudFN0YXJ0c1dpdGgoIkNsb3VkZmxhcmUtV29ya2VycyIpPyJDTE9VREZMQVJFIjp1c2VyQWdlbnRTdGFydHNXaXRoKCJEZW5vLyIpPyJERU5PIjp1c2VyQWdlbnRTdGFydHNXaXRoKCJOb2RlLmpzLyIpPyJOT0RFIjphLkJ1biYmInN0cmluZyI9PXR5cGVvZiBCdW4udmVyc2lvbj8iQlVOIjphLkRlbm8mJiJvYmplY3QiPT10eXBlb2YgRGVuby52ZXJzaW9uPyJERU5PIjoicHJvY2VzcyI9PT1zKGEucHJvY2Vzcyk/Ik5PREUiOmEud2luZG93JiZhLmRvY3VtZW50PyJCUk9XU0VSIjoiUkVTVCJ9LDg1NzQ6KGUsdCxpKT0+e3ZhciBhPWkoOTUwNCkscj1FcnJvcixzPWEoIiIucmVwbGFjZSksbj1TdHJpbmcobmV3IHIoInp4Y2FzZCIpLnN0YWNrKSxvPS9cblxzKmF0IFteOl0qOlteXG5dKi8sZz1vLnRlc3Qobik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7aWYoZyYmInN0cmluZyI9PXR5cGVvZiBlJiYhci5wcmVwYXJlU3RhY2tUcmFjZSlmb3IoO3QtLTspZT1zKGUsbywiIik7cmV0dXJuIGV9fSw2NTE4OihlLHQsaSk9Pnt2YXIgYT1pKDQ1NzYpLHI9aSg3MzQ3KS5mLHM9aSg2Njk5KSxuPWkoNjg0MCksbz1pKDk0MzMpLGc9aSg3NzQwKSxjPWkoMjc5Nik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIGksQyxoLGwsUSxFPWUudGFyZ2V0LHU9ZS5nbG9iYWwsZD1lLnN0YXQ7aWYoaT11P2E6ZD9hW0VdfHxvKEUse30pOmFbRV0mJmFbRV0ucHJvdG90eXBlKWZvcihDIGluIHQpe2w9dFtDXTtoPWUuZG9udENhbGxHZXRTZXQ/KFE9cihpLEMpKSYmUS52YWx1ZTppW0NdO2lmKCFjKHU/QzpFKyhkPyIuIjoiIyIpK0MsZS5mb3JjZWQpJiZ2b2lkIDAhPT1oKXtpZih0eXBlb2YgbD09dHlwZW9mIGgpY29udGludWU7ZyhsLGgpfShlLnNoYW18fGgmJmguc2hhbSkmJnMobCwic2hhbSIsITApO24oaSxDLGwsZSl9fX0sOTAzOTplPT57ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3RyeXtyZXR1cm4hIWUoKX1jYXRjaChlKXtyZXR1cm4hMH19fSw2MDgwOihlLHQsaSk9Pnt2YXIgYT1pKDc0NzYpLHI9aSg5MzA2KSxzPWkoNjE2KSxuPWEoYS5iaW5kKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyKGUpO3JldHVybiB2b2lkIDA9PT10P2U6cz9uKGUsdCk6ZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseSh0LGFyZ3VtZW50cyl9fX0sNjE2OihlLHQsaSk9Pnt2YXIgYT1pKDkwMzkpO2UuZXhwb3J0cz0hYSgoZnVuY3Rpb24oKXt2YXIgZT1mdW5jdGlvbigpe30uYmluZCgpO3JldHVybiJmdW5jdGlvbiIhPXR5cGVvZiBlfHxlLmhhc093blByb3BlcnR5KCJwcm90b3R5cGUiKX0pKX0sOTU2NTooZSx0LGkpPT57dmFyIGE9aSg2MTYpLHI9RnVuY3Rpb24ucHJvdG90eXBlLmNhbGw7ZS5leHBvcnRzPWE/ci5iaW5kKHIpOmZ1bmN0aW9uKCl7cmV0dXJuIHIuYXBwbHkocixhcmd1bWVudHMpfX0sMzUwOihlLHQsaSk9Pnt2YXIgYT1pKDM3MjQpLHI9aSg5Mjk3KSxzPUZ1bmN0aW9uLnByb3RvdHlwZSxuPWEmJk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Isbz1yKHMsIm5hbWUiKSxnPW8mJiJzb21ldGhpbmciPT09ZnVuY3Rpb24gc29tZXRoaW5nKCl7fS5uYW1lLGM9byYmKCFhfHxhJiZuKHMsIm5hbWUiKS5jb25maWd1cmFibGUpO2UuZXhwb3J0cz17RVhJU1RTOm8sUFJPUEVSOmcsQ09ORklHVVJBQkxFOmN9fSw2NzA2OihlLHQsaSk9Pnt2YXIgYT1pKDk1MDQpLHI9aSg5MzA2KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LGkpe3RyeXtyZXR1cm4gYShyKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KVtpXSkpfWNhdGNoKGUpe319fSw3NDc2OihlLHQsaSk9Pnt2YXIgYT1pKDIxOTUpLHI9aSg5NTA0KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYoIkZ1bmN0aW9uIj09PWEoZSkpcmV0dXJuIHIoZSl9fSw5NTA0OihlLHQsaSk9Pnt2YXIgYT1pKDYxNikscj1GdW5jdGlvbi5wcm90b3R5cGUscz1yLmNhbGwsbj1hJiZyLmJpbmQuYmluZChzLHMpO2UuZXhwb3J0cz1hP246ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHMuYXBwbHkoZSxhcmd1bWVudHMpfX19LDk0Mjk6KGUsdCxpKT0+e3ZhciBhPWkoNDU3Nikscj1pKDYxOTMpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZihyKXt0cnl7cmV0dXJuIGEucHJvY2Vzcy5nZXRCdWlsdGluTW9kdWxlKGUpfWNhdGNoKGUpe310cnl7cmV0dXJuIEZ1bmN0aW9uKCdyZXR1cm4gcmVxdWlyZSgiJytlKyciKScpKCl9Y2F0Y2goZSl7fX19fSw3NzUxOihlLHQsaSk9Pnt2YXIgYT1pKDQ1NzYpLHI9aSg0OTAxKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwyPyhpPWFbZV0scihpKT9pOnZvaWQgMCk6YVtlXSYmYVtlXVt0XTt2YXIgaX19LDE3Njc6ZT0+e2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm57aXRlcmF0b3I6ZSxuZXh0OmUubmV4dCxkb25lOiExfX19LDg1MTooZSx0LGkpPT57dmFyIGE9aSg2OTU1KSxyPWkoNTk2Nikscz1pKDQxMTcpLG49aSg2MjY5KSxvPWkoODIyNykoIml0ZXJhdG9yIik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKCFzKGUpKXJldHVybiByKGUsbyl8fHIoZSwiQEBpdGVyYXRvciIpfHxuW2EoZSldfX0sODE6KGUsdCxpKT0+e3ZhciBhPWkoOTU2NSkscj1pKDkzMDYpLHM9aSg4NTUxKSxuPWkoNjgyMyksbz1pKDg1MSksZz1UeXBlRXJyb3I7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIGk9YXJndW1lbnRzLmxlbmd0aDwyP28oZSk6dDtpZihyKGkpKXJldHVybiBzKGEoaSxlKSk7dGhyb3cgbmV3IGcobihlKSsiIGlzIG5vdCBpdGVyYWJsZSIpfX0sNTk2NjooZSx0LGkpPT57dmFyIGE9aSg5MzA2KSxyPWkoNDExNyk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIGk9ZVt0XTtyZXR1cm4gcihpKT92b2lkIDA6YShpKX19LDM3ODk6KGUsdCxpKT0+e3ZhciBhPWkoOTMwNikscj1pKDg1NTEpLHM9aSg5NTY1KSxuPWkoMTI5MSksbz1pKDE3NjcpLGc9IkludmFsaWQgc2l6ZSIsYz1SYW5nZUVycm9yLEM9VHlwZUVycm9yLGg9TWF0aC5tYXgsU2V0UmVjb3JkPWZ1bmN0aW9uKGUsdCl7dGhpcy5zZXQ9ZTt0aGlzLnNpemU9aCh0LDApO3RoaXMuaGFzPWEoZS5oYXMpO3RoaXMua2V5cz1hKGUua2V5cyl9O1NldFJlY29yZC5wcm90b3R5cGU9e2dldEl0ZXJhdG9yOmZ1bmN0aW9uKCl7cmV0dXJuIG8ocihzKHRoaXMua2V5cyx0aGlzLnNldCkpKX0saW5jbHVkZXM6ZnVuY3Rpb24oZSl7cmV0dXJuIHModGhpcy5oYXMsdGhpcy5zZXQsZSl9fTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cihlKTt2YXIgdD0rZS5zaXplO2lmKHQhPXQpdGhyb3cgbmV3IEMoZyk7dmFyIGk9bih0KTtpZihpPDApdGhyb3cgbmV3IGMoZyk7cmV0dXJuIG5ldyBTZXRSZWNvcmQoZSxpKX19LDQ1NzY6ZnVuY3Rpb24oZSl7dmFyIGNoZWNrPWZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLk1hdGg9PT1NYXRoJiZlfTtlLmV4cG9ydHM9Y2hlY2soIm9iamVjdCI9PXR5cGVvZiBnbG9iYWxUaGlzJiZnbG9iYWxUaGlzKXx8Y2hlY2soIm9iamVjdCI9PXR5cGVvZiB3aW5kb3cmJndpbmRvdyl8fGNoZWNrKCJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZil8fGNoZWNrKCJvYmplY3QiPT10eXBlb2YgZ2xvYmFsJiZnbG9iYWwpfHxjaGVjaygib2JqZWN0Ij09dHlwZW9mIHRoaXMmJnRoaXMpfHxmdW5jdGlvbigpe3JldHVybiB0aGlzfSgpfHxGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpfSw5Mjk3OihlLHQsaSk9Pnt2YXIgYT1pKDk1MDQpLHI9aSg4OTgxKSxzPWEoe30uaGFzT3duUHJvcGVydHkpO2UuZXhwb3J0cz1PYmplY3QuaGFzT3dufHxmdW5jdGlvbiBoYXNPd24oZSx0KXtyZXR1cm4gcyhyKGUpLHQpfX0sNDIxOmU9PntlLmV4cG9ydHM9e319LDM5NzooZSx0LGkpPT57dmFyIGE9aSg3NzUxKTtlLmV4cG9ydHM9YSgiZG9jdW1lbnQiLCJkb2N1bWVudEVsZW1lbnQiKX0sNTkxNzooZSx0LGkpPT57dmFyIGE9aSgzNzI0KSxyPWkoOTAzOSkscz1pKDQwNTUpO2UuZXhwb3J0cz0hYSYmIXIoKGZ1bmN0aW9uKCl7cmV0dXJuIDchPT1PYmplY3QuZGVmaW5lUHJvcGVydHkocygiZGl2IiksImEiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gN319KS5hfSkpfSw3MDU1OihlLHQsaSk9Pnt2YXIgYT1pKDk1MDQpLHI9aSg5MDM5KSxzPWkoMjE5NSksbj1PYmplY3Qsbz1hKCIiLnNwbGl0KTtlLmV4cG9ydHM9cigoZnVuY3Rpb24oKXtyZXR1cm4hbigieiIpLnByb3BlcnR5SXNFbnVtZXJhYmxlKDApfSkpP2Z1bmN0aW9uKGUpe3JldHVybiJTdHJpbmciPT09cyhlKT9vKGUsIiIpOm4oZSl9Om59LDMxNjc6KGUsdCxpKT0+e3ZhciBhPWkoNDkwMSkscj1pKDM0KSxzPWkoMjk2Nyk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxpKXt2YXIgbixvO3MmJmEobj10LmNvbnN0cnVjdG9yKSYmbiE9PWkmJnIobz1uLnByb3RvdHlwZSkmJm8hPT1pLnByb3RvdHlwZSYmcyhlLG8pO3JldHVybiBlfX0sMzcwNjooZSx0LGkpPT57dmFyIGE9aSg5NTA0KSxyPWkoNDkwMSkscz1pKDc2MjkpLG49YShGdW5jdGlvbi50b1N0cmluZyk7cihzLmluc3BlY3RTb3VyY2UpfHwocy5pbnNwZWN0U291cmNlPWZ1bmN0aW9uKGUpe3JldHVybiBuKGUpfSk7ZS5leHBvcnRzPXMuaW5zcGVjdFNvdXJjZX0sMTE4MTooZSx0LGkpPT57dmFyIGEscixzLG49aSg4NjIyKSxvPWkoNDU3NiksZz1pKDM0KSxjPWkoNjY5OSksQz1pKDkyOTcpLGg9aSg3NjI5KSxsPWkoNjExOSksUT1pKDQyMSksRT0iT2JqZWN0IGFscmVhZHkgaW5pdGlhbGl6ZWQiLHU9by5UeXBlRXJyb3IsZD1vLldlYWtNYXA7aWYobnx8aC5zdGF0ZSl7dmFyIGY9aC5zdGF0ZXx8KGguc3RhdGU9bmV3IGQpO2YuZ2V0PWYuZ2V0O2YuaGFzPWYuaGFzO2Yuc2V0PWYuc2V0O2E9ZnVuY3Rpb24oZSx0KXtpZihmLmhhcyhlKSl0aHJvdyBuZXcgdShFKTt0LmZhY2FkZT1lO2Yuc2V0KGUsdCk7cmV0dXJuIHR9O3I9ZnVuY3Rpb24oZSl7cmV0dXJuIGYuZ2V0KGUpfHx7fX07cz1mdW5jdGlvbihlKXtyZXR1cm4gZi5oYXMoZSl9fWVsc2V7dmFyIHA9bCgic3RhdGUiKTtRW3BdPSEwO2E9ZnVuY3Rpb24oZSx0KXtpZihDKGUscCkpdGhyb3cgbmV3IHUoRSk7dC5mYWNhZGU9ZTtjKGUscCx0KTtyZXR1cm4gdH07cj1mdW5jdGlvbihlKXtyZXR1cm4gQyhlLHApP2VbcF06e319O3M9ZnVuY3Rpb24oZSl7cmV0dXJuIEMoZSxwKX19ZS5leHBvcnRzPXtzZXQ6YSxnZXQ6cixoYXM6cyxlbmZvcmNlOmZ1bmN0aW9uKGUpe3JldHVybiBzKGUpP3IoZSk6YShlLHt9KX0sZ2V0dGVyRm9yOmZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0KXt2YXIgaTtpZighZyh0KXx8KGk9cih0KSkudHlwZSE9PWUpdGhyb3cgbmV3IHUoIkluY29tcGF0aWJsZSByZWNlaXZlciwgIitlKyIgcmVxdWlyZWQiKTtyZXR1cm4gaX19fX0sNDIwOTooZSx0LGkpPT57dmFyIGE9aSg4MjI3KSxyPWkoNjI2OSkscz1hKCJpdGVyYXRvciIpLG49QXJyYXkucHJvdG90eXBlO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwIT09ZSYmKHIuQXJyYXk9PT1lfHxuW3NdPT09ZSl9fSw0Mzc2OihlLHQsaSk9Pnt2YXIgYT1pKDIxOTUpO2UuZXhwb3J0cz1BcnJheS5pc0FycmF5fHxmdW5jdGlvbiBpc0FycmF5KGUpe3JldHVybiJBcnJheSI9PT1hKGUpfX0sMTEwODooZSx0LGkpPT57dmFyIGE9aSg2OTU1KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9YShlKTtyZXR1cm4iQmlnSW50NjRBcnJheSI9PT10fHwiQmlnVWludDY0QXJyYXkiPT09dH19LDQ5MDE6ZT0+e3ZhciB0PSJvYmplY3QiPT10eXBlb2YgZG9jdW1lbnQmJmRvY3VtZW50LmFsbDtlLmV4cG9ydHM9dm9pZCAwPT09dCYmdm9pZCAwIT09dD9mdW5jdGlvbihlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZXx8ZT09PXR9OmZ1bmN0aW9uKGUpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBlfX0sMjc5NjooZSx0LGkpPT57dmFyIGE9aSg5MDM5KSxyPWkoNDkwMSkscz0vI3xcLnByb3RvdHlwZVwuLyxpc0ZvcmNlZD1mdW5jdGlvbihlLHQpe3ZhciBpPW9bbihlKV07cmV0dXJuIGk9PT1jfHxpIT09ZyYmKHIodCk/YSh0KTohIXQpfSxuPWlzRm9yY2VkLm5vcm1hbGl6ZT1mdW5jdGlvbihlKXtyZXR1cm4gU3RyaW5nKGUpLnJlcGxhY2UocywiLiIpLnRvTG93ZXJDYXNlKCl9LG89aXNGb3JjZWQuZGF0YT17fSxnPWlzRm9yY2VkLk5BVElWRT0iTiIsYz1pc0ZvcmNlZC5QT0xZRklMTD0iUCI7ZS5leHBvcnRzPWlzRm9yY2VkfSw0MTE3OmU9PntlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWV9fSwzNDooZSx0LGkpPT57dmFyIGE9aSg0OTAxKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBlP251bGwhPT1lOmEoZSl9fSwzOTI1OihlLHQsaSk9Pnt2YXIgYT1pKDM0KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGEoZSl8fG51bGw9PT1lfX0sNjM5NTplPT57ZS5leHBvcnRzPSExfSw3NTc6KGUsdCxpKT0+e3ZhciBhPWkoNzc1MSkscj1pKDQ5MDEpLHM9aSgxNjI1KSxuPWkoNzA0MCksbz1PYmplY3Q7ZS5leHBvcnRzPW4/ZnVuY3Rpb24oZSl7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiBlfTpmdW5jdGlvbihlKXt2YXIgdD1hKCJTeW1ib2wiKTtyZXR1cm4gcih0KSYmcyh0LnByb3RvdHlwZSxvKGUpKX19LDUwNzooZSx0LGkpPT57dmFyIGE9aSg5NTY1KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LGkpe2Zvcih2YXIgcixzLG49aT9lOmUuaXRlcmF0b3Isbz1lLm5leHQ7IShyPWEobyxuKSkuZG9uZTspaWYodm9pZCAwIT09KHM9dChyLnZhbHVlKSkpcmV0dXJuIHN9fSwyNjUyOihlLHQsaSk9Pnt2YXIgYT1pKDYwODApLHI9aSg5NTY1KSxzPWkoODU1MSksbj1pKDY4MjMpLG89aSg0MjA5KSxnPWkoNjE5OCksYz1pKDE2MjUpLEM9aSg4MSksaD1pKDg1MSksbD1pKDk1MzkpLFE9VHlwZUVycm9yLFJlc3VsdD1mdW5jdGlvbihlLHQpe3RoaXMuc3RvcHBlZD1lO3RoaXMucmVzdWx0PXR9LEU9UmVzdWx0LnByb3RvdHlwZTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LGkpe3ZhciB1LGQsZixwLG0seSx3LGI9aSYmaS50aGF0LEQ9ISghaXx8IWkuQVNfRU5UUklFUyksUz0hKCFpfHwhaS5JU19SRUNPUkQpLGs9ISghaXx8IWkuSVNfSVRFUkFUT1IpLFI9ISghaXx8IWkuSU5URVJSVVBURUQpLE49YSh0LGIpLHN0b3A9ZnVuY3Rpb24oZSl7dSYmbCh1LCJub3JtYWwiLGUpO3JldHVybiBuZXcgUmVzdWx0KCEwLGUpfSxjYWxsRm49ZnVuY3Rpb24oZSl7aWYoRCl7cyhlKTtyZXR1cm4gUj9OKGVbMF0sZVsxXSxzdG9wKTpOKGVbMF0sZVsxXSl9cmV0dXJuIFI/TihlLHN0b3ApOk4oZSl9O2lmKFMpdT1lLml0ZXJhdG9yO2Vsc2UgaWYoayl1PWU7ZWxzZXtpZighKGQ9aChlKSkpdGhyb3cgbmV3IFEobihlKSsiIGlzIG5vdCBpdGVyYWJsZSIpO2lmKG8oZCkpe2ZvcihmPTAscD1nKGUpO3A+ZjtmKyspaWYoKG09Y2FsbEZuKGVbZl0pKSYmYyhFLG0pKXJldHVybiBtO3JldHVybiBuZXcgUmVzdWx0KCExKX11PUMoZSxkKX15PVM/ZS5uZXh0OnUubmV4dDtmb3IoOyEodz1yKHksdSkpLmRvbmU7KXt0cnl7bT1jYWxsRm4ody52YWx1ZSl9Y2F0Y2goZSl7bCh1LCJ0aHJvdyIsZSl9aWYoIm9iamVjdCI9PXR5cGVvZiBtJiZtJiZjKEUsbSkpcmV0dXJuIG19cmV0dXJuIG5ldyBSZXN1bHQoITEpfX0sOTUzOTooZSx0LGkpPT57dmFyIGE9aSg5NTY1KSxyPWkoODU1MSkscz1pKDU5NjYpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsaSl7dmFyIG4sbztyKGUpO3RyeXtpZighKG49cyhlLCJyZXR1cm4iKSkpe2lmKCJ0aHJvdyI9PT10KXRocm93IGk7cmV0dXJuIGl9bj1hKG4sZSl9Y2F0Y2goZSl7bz0hMDtuPWV9aWYoInRocm93Ij09PXQpdGhyb3cgaTtpZihvKXRocm93IG47cihuKTtyZXR1cm4gaX19LDk0NjI6KGUsdCxpKT0+e3ZhciBhPWkoOTU2NSkscj1pKDIzNjApLHM9aSg2Njk5KSxuPWkoNjI3OSksbz1pKDgyMjcpLGc9aSgxMTgxKSxjPWkoNTk2NiksQz1pKDc2NTcpLkl0ZXJhdG9yUHJvdG90eXBlLGg9aSgyNTI5KSxsPWkoOTUzOSksUT1vKCJ0b1N0cmluZ1RhZyIpLEU9Ikl0ZXJhdG9ySGVscGVyIix1PSJXcmFwRm9yVmFsaWRJdGVyYXRvciIsZD1nLnNldCxjcmVhdGVJdGVyYXRvclByb3h5UHJvdG90eXBlPWZ1bmN0aW9uKGUpe3ZhciB0PWcuZ2V0dGVyRm9yKGU/dTpFKTtyZXR1cm4gbihyKEMpLHtuZXh0OmZ1bmN0aW9uIG5leHQoKXt2YXIgaT10KHRoaXMpO2lmKGUpcmV0dXJuIGkubmV4dEhhbmRsZXIoKTt0cnl7dmFyIGE9aS5kb25lP3ZvaWQgMDppLm5leHRIYW5kbGVyKCk7cmV0dXJuIGgoYSxpLmRvbmUpfWNhdGNoKGUpe2kuZG9uZT0hMDt0aHJvdyBlfX0scmV0dXJuOmZ1bmN0aW9uKCl7dmFyIGk9dCh0aGlzKSxyPWkuaXRlcmF0b3I7aS5kb25lPSEwO2lmKGUpe3ZhciBzPWMociwicmV0dXJuIik7cmV0dXJuIHM/YShzLHIpOmgodm9pZCAwLCEwKX1pZihpLmlubmVyKXRyeXtsKGkuaW5uZXIuaXRlcmF0b3IsIm5vcm1hbCIpfWNhdGNoKGUpe3JldHVybiBsKHIsInRocm93IixlKX1sKHIsIm5vcm1hbCIpO3JldHVybiBoKHZvaWQgMCwhMCl9fSl9LGY9Y3JlYXRlSXRlcmF0b3JQcm94eVByb3RvdHlwZSghMCkscD1jcmVhdGVJdGVyYXRvclByb3h5UHJvdG90eXBlKCExKTtzKHAsUSwiSXRlcmF0b3IgSGVscGVyIik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIGk9ZnVuY3Rpb24gSXRlcmF0b3IoaSxhKXtpZihhKXthLml0ZXJhdG9yPWkuaXRlcmF0b3I7YS5uZXh0PWkubmV4dH1lbHNlIGE9aTthLnR5cGU9dD91OkU7YS5uZXh0SGFuZGxlcj1lO2EuY291bnRlcj0wO2EuZG9uZT0hMTtkKHRoaXMsYSl9O2kucHJvdG90eXBlPXQ/ZjpwO3JldHVybiBpfX0sNzEzOihlLHQsaSk9Pnt2YXIgYT1pKDk1NjUpLHI9aSg5MzA2KSxzPWkoODU1MSksbj1pKDE3NjcpLG89aSg5NDYyKSxnPWkoNjMxOSksYz1vKChmdW5jdGlvbigpe3ZhciBlPXRoaXMuaXRlcmF0b3IsdD1zKGEodGhpcy5uZXh0LGUpKTtpZighKHRoaXMuZG9uZT0hIXQuZG9uZSkpcmV0dXJuIGcoZSx0aGlzLm1hcHBlcixbdC52YWx1ZSx0aGlzLmNvdW50ZXIrK10sITApfSkpO2UuZXhwb3J0cz1mdW5jdGlvbiBtYXAoZSl7cyh0aGlzKTtyKGUpO3JldHVybiBuZXcgYyhuKHRoaXMpLHttYXBwZXI6ZX0pfX0sNzY1NzooZSx0LGkpPT57dmFyIGEscixzLG49aSg5MDM5KSxvPWkoNDkwMSksZz1pKDM0KSxjPWkoMjM2MCksQz1pKDI3ODcpLGg9aSg2ODQwKSxsPWkoODIyNyksUT1pKDYzOTUpLEU9bCgiaXRlcmF0b3IiKSx1PSExO1tdLmtleXMmJigibmV4dCJpbihzPVtdLmtleXMoKSk/KHI9QyhDKHMpKSkhPT1PYmplY3QucHJvdG90eXBlJiYoYT1yKTp1PSEwKTshZyhhKXx8bigoZnVuY3Rpb24oKXt2YXIgZT17fTtyZXR1cm4gYVtFXS5jYWxsKGUpIT09ZX0pKT9hPXt9OlEmJihhPWMoYSkpO28oYVtFXSl8fGgoYSxFLChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpO2UuZXhwb3J0cz17SXRlcmF0b3JQcm90b3R5cGU6YSxCVUdHWV9TQUZBUklfSVRFUkFUT1JTOnV9fSw2MjY5OmU9PntlLmV4cG9ydHM9e319LDYxOTg6KGUsdCxpKT0+e3ZhciBhPWkoODAxNCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBhKGUubGVuZ3RoKX19LDI4MzooZSx0LGkpPT57dmFyIGE9aSg5NTA0KSxyPWkoOTAzOSkscz1pKDQ5MDEpLG49aSg5Mjk3KSxvPWkoMzcyNCksZz1pKDM1MCkuQ09ORklHVVJBQkxFLGM9aSgzNzA2KSxDPWkoMTE4MSksaD1DLmVuZm9yY2UsbD1DLmdldCxRPVN0cmluZyxFPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSx1PWEoIiIuc2xpY2UpLGQ9YSgiIi5yZXBsYWNlKSxmPWEoW10uam9pbikscD1vJiYhcigoZnVuY3Rpb24oKXtyZXR1cm4gOCE9PUUoKGZ1bmN0aW9uKCl7fSksImxlbmd0aCIse3ZhbHVlOjh9KS5sZW5ndGh9KSksbT1TdHJpbmcoU3RyaW5nKS5zcGxpdCgiU3RyaW5nIikseT1lLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LGkpeyJTeW1ib2woIj09PXUoUSh0KSwwLDcpJiYodD0iWyIrZChRKHQpLC9eU3ltYm9sXCgoW14pXSopXCkuKiQvLCIkMSIpKyJdIik7aSYmaS5nZXR0ZXImJih0PSJnZXQgIit0KTtpJiZpLnNldHRlciYmKHQ9InNldCAiK3QpOyghbihlLCJuYW1lIil8fGcmJmUubmFtZSE9PXQpJiYobz9FKGUsIm5hbWUiLHt2YWx1ZTp0LGNvbmZpZ3VyYWJsZTohMH0pOmUubmFtZT10KTtwJiZpJiZuKGksImFyaXR5IikmJmUubGVuZ3RoIT09aS5hcml0eSYmRShlLCJsZW5ndGgiLHt2YWx1ZTppLmFyaXR5fSk7dHJ5e2kmJm4oaSwiY29uc3RydWN0b3IiKSYmaS5jb25zdHJ1Y3Rvcj9vJiZFKGUsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSk6ZS5wcm90b3R5cGUmJihlLnByb3RvdHlwZT12b2lkIDApfWNhdGNoKGUpe312YXIgYT1oKGUpO24oYSwic291cmNlIil8fChhLnNvdXJjZT1mKG0sInN0cmluZyI9PXR5cGVvZiB0P3Q6IiIpKTtyZXR1cm4gZX07RnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nPXkoKGZ1bmN0aW9uIHRvU3RyaW5nKCl7cmV0dXJuIHModGhpcykmJmwodGhpcykuc291cmNlfHxjKHRoaXMpfSksInRvU3RyaW5nIil9LDc0MTplPT57dmFyIHQ9TWF0aC5jZWlsLGk9TWF0aC5mbG9vcjtlLmV4cG9ydHM9TWF0aC50cnVuY3x8ZnVuY3Rpb24gdHJ1bmMoZSl7dmFyIGE9K2U7cmV0dXJuKGE+MD9pOnQpKGEpfX0sNjA0MzooZSx0LGkpPT57dmFyIGE9aSg5MzA2KSxyPVR5cGVFcnJvcixQcm9taXNlQ2FwYWJpbGl0eT1mdW5jdGlvbihlKXt2YXIgdCxpO3RoaXMucHJvbWlzZT1uZXcgZSgoZnVuY3Rpb24oZSxhKXtpZih2b2lkIDAhPT10fHx2b2lkIDAhPT1pKXRocm93IG5ldyByKCJCYWQgUHJvbWlzZSBjb25zdHJ1Y3RvciIpO3Q9ZTtpPWF9KSk7dGhpcy5yZXNvbHZlPWEodCk7dGhpcy5yZWplY3Q9YShpKX07ZS5leHBvcnRzLmY9ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBQcm9taXNlQ2FwYWJpbGl0eShlKX19LDI2MDM6KGUsdCxpKT0+e3ZhciBhPWkoNjU1KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdm9pZCAwPT09ZT9hcmd1bWVudHMubGVuZ3RoPDI/IiI6dDphKGUpfX0sMjM2MDooZSx0LGkpPT57dmFyIGEscj1pKDg1NTEpLHM9aSg2ODAxKSxuPWkoODcyNyksbz1pKDQyMSksZz1pKDM5NyksYz1pKDQwNTUpLEM9aSg2MTE5KSxoPSJwcm90b3R5cGUiLGw9InNjcmlwdCIsUT1DKCJJRV9QUk9UTyIpLEVtcHR5Q29uc3RydWN0b3I9ZnVuY3Rpb24oKXt9LHNjcmlwdFRhZz1mdW5jdGlvbihlKXtyZXR1cm4iPCIrbCsiPiIrZSsiPC8iK2wrIj4ifSxOdWxsUHJvdG9PYmplY3RWaWFBY3RpdmVYPWZ1bmN0aW9uKGUpe2Uud3JpdGUoc2NyaXB0VGFnKCIiKSk7ZS5jbG9zZSgpO3ZhciB0PWUucGFyZW50V2luZG93Lk9iamVjdDtlPW51bGw7cmV0dXJuIHR9LE51bGxQcm90b09iamVjdD1mdW5jdGlvbigpe3RyeXthPW5ldyBBY3RpdmVYT2JqZWN0KCJodG1sZmlsZSIpfWNhdGNoKGUpe31OdWxsUHJvdG9PYmplY3Q9InVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudD9kb2N1bWVudC5kb21haW4mJmE/TnVsbFByb3RvT2JqZWN0VmlhQWN0aXZlWChhKTpmdW5jdGlvbigpe3ZhciBlLHQ9YygiaWZyYW1lIiksaT0iamF2YSIrbCsiOiI7dC5zdHlsZS5kaXNwbGF5PSJub25lIjtnLmFwcGVuZENoaWxkKHQpO3Quc3JjPVN0cmluZyhpKTsoZT10LmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQpLm9wZW4oKTtlLndyaXRlKHNjcmlwdFRhZygiZG9jdW1lbnQuRj1PYmplY3QiKSk7ZS5jbG9zZSgpO3JldHVybiBlLkZ9KCk6TnVsbFByb3RvT2JqZWN0VmlhQWN0aXZlWChhKTtmb3IodmFyIGU9bi5sZW5ndGg7ZS0tOylkZWxldGUgTnVsbFByb3RvT2JqZWN0W2hdW25bZV1dO3JldHVybiBOdWxsUHJvdG9PYmplY3QoKX07b1tRXT0hMDtlLmV4cG9ydHM9T2JqZWN0LmNyZWF0ZXx8ZnVuY3Rpb24gY3JlYXRlKGUsdCl7dmFyIGk7aWYobnVsbCE9PWUpe0VtcHR5Q29uc3RydWN0b3JbaF09cihlKTtpPW5ldyBFbXB0eUNvbnN0cnVjdG9yO0VtcHR5Q29uc3RydWN0b3JbaF09bnVsbDtpW1FdPWV9ZWxzZSBpPU51bGxQcm90b09iamVjdCgpO3JldHVybiB2b2lkIDA9PT10P2k6cy5mKGksdCl9fSw2ODAxOihlLHQsaSk9Pnt2YXIgYT1pKDM3MjQpLHI9aSg4Njg2KSxzPWkoNDkxMyksbj1pKDg1NTEpLG89aSg1Mzk3KSxnPWkoMTA3Mik7dC5mPWEmJiFyP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzOmZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXMoZSx0KXtuKGUpO2Zvcih2YXIgaSxhPW8odCkscj1nKHQpLGM9ci5sZW5ndGgsQz0wO2M+Qzspcy5mKGUsaT1yW0MrK10sYVtpXSk7cmV0dXJuIGV9fSw0OTEzOihlLHQsaSk9Pnt2YXIgYT1pKDM3MjQpLHI9aSg1OTE3KSxzPWkoODY4Niksbj1pKDg1NTEpLG89aSg2OTY5KSxnPVR5cGVFcnJvcixjPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxDPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsaD0iZW51bWVyYWJsZSIsbD0iY29uZmlndXJhYmxlIixRPSJ3cml0YWJsZSI7dC5mPWE/cz9mdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eShlLHQsaSl7bihlKTt0PW8odCk7bihpKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgZSYmInByb3RvdHlwZSI9PT10JiYidmFsdWUiaW4gaSYmUSBpbiBpJiYhaVtRXSl7dmFyIGE9QyhlLHQpO2lmKGEmJmFbUV0pe2VbdF09aS52YWx1ZTtpPXtjb25maWd1cmFibGU6bCBpbiBpP2lbbF06YVtsXSxlbnVtZXJhYmxlOmggaW4gaT9pW2hdOmFbaF0sd3JpdGFibGU6ITF9fX1yZXR1cm4gYyhlLHQsaSl9OmM6ZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoZSx0LGkpe24oZSk7dD1vKHQpO24oaSk7aWYocil0cnl7cmV0dXJuIGMoZSx0LGkpfWNhdGNoKGUpe31pZigiZ2V0ImluIGl8fCJzZXQiaW4gaSl0aHJvdyBuZXcgZygiQWNjZXNzb3JzIG5vdCBzdXBwb3J0ZWQiKTsidmFsdWUiaW4gaSYmKGVbdF09aS52YWx1ZSk7cmV0dXJuIGV9fSw3MzQ3OihlLHQsaSk9Pnt2YXIgYT1pKDM3MjQpLHI9aSg5NTY1KSxzPWkoODc3Myksbj1pKDY5ODApLG89aSg1Mzk3KSxnPWkoNjk2OSksYz1pKDkyOTcpLEM9aSg1OTE3KSxoPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7dC5mPWE/aDpmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KXtlPW8oZSk7dD1nKHQpO2lmKEMpdHJ5e3JldHVybiBoKGUsdCl9Y2F0Y2goZSl7fWlmKGMoZSx0KSlyZXR1cm4gbighcihzLmYsZSx0KSxlW3RdKX19LDg0ODA6KGUsdCxpKT0+e3ZhciBhPWkoMTgyOCkscj1pKDg3MjcpLmNvbmNhdCgibGVuZ3RoIiwicHJvdG90eXBlIik7dC5mPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzfHxmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eU5hbWVzKGUpe3JldHVybiBhKGUscil9fSwzNzE3OihlLHQpPT57dC5mPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHN9LDI3ODc6KGUsdCxpKT0+e3ZhciBhPWkoOTI5Nykscj1pKDQ5MDEpLHM9aSg4OTgxKSxuPWkoNjExOSksbz1pKDIyMTEpLGc9bigiSUVfUFJPVE8iKSxjPU9iamVjdCxDPWMucHJvdG90eXBlO2UuZXhwb3J0cz1vP2MuZ2V0UHJvdG90eXBlT2Y6ZnVuY3Rpb24oZSl7dmFyIHQ9cyhlKTtpZihhKHQsZykpcmV0dXJuIHRbZ107dmFyIGk9dC5jb25zdHJ1Y3RvcjtyZXR1cm4gcihpKSYmdCBpbnN0YW5jZW9mIGk/aS5wcm90b3R5cGU6dCBpbnN0YW5jZW9mIGM/QzpudWxsfX0sMTYyNTooZSx0LGkpPT57dmFyIGE9aSg5NTA0KTtlLmV4cG9ydHM9YSh7fS5pc1Byb3RvdHlwZU9mKX0sMTgyODooZSx0LGkpPT57dmFyIGE9aSg5NTA0KSxyPWkoOTI5Nykscz1pKDUzOTcpLG49aSg5NjE3KS5pbmRleE9mLG89aSg0MjEpLGc9YShbXS5wdXNoKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgaSxhPXMoZSksYz0wLEM9W107Zm9yKGkgaW4gYSkhcihvLGkpJiZyKGEsaSkmJmcoQyxpKTtmb3IoO3QubGVuZ3RoPmM7KXIoYSxpPXRbYysrXSkmJih+bihDLGkpfHxnKEMsaSkpO3JldHVybiBDfX0sMTA3MjooZSx0LGkpPT57dmFyIGE9aSgxODI4KSxyPWkoODcyNyk7ZS5leHBvcnRzPU9iamVjdC5rZXlzfHxmdW5jdGlvbiBrZXlzKGUpe3JldHVybiBhKGUscil9fSw4NzczOihlLHQpPT57dmFyIGk9e30ucHJvcGVydHlJc0VudW1lcmFibGUsYT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLHI9YSYmIWkuY2FsbCh7MToyfSwxKTt0LmY9cj9mdW5jdGlvbiBwcm9wZXJ0eUlzRW51bWVyYWJsZShlKXt2YXIgdD1hKHRoaXMsZSk7cmV0dXJuISF0JiZ0LmVudW1lcmFibGV9Oml9LDI5Njc6KGUsdCxpKT0+e3ZhciBhPWkoNjcwNikscj1pKDM0KSxzPWkoNzc1MCksbj1pKDM1MDYpO2UuZXhwb3J0cz1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fCgiX19wcm90b19fImlue30/ZnVuY3Rpb24oKXt2YXIgZSx0PSExLGk9e307dHJ5eyhlPWEoT2JqZWN0LnByb3RvdHlwZSwiX19wcm90b19fIiwic2V0IikpKGksW10pO3Q9aSBpbnN0YW5jZW9mIEFycmF5fWNhdGNoKGUpe31yZXR1cm4gZnVuY3Rpb24gc2V0UHJvdG90eXBlT2YoaSxhKXtzKGkpO24oYSk7aWYoIXIoaSkpcmV0dXJuIGk7dD9lKGksYSk6aS5fX3Byb3RvX189YTtyZXR1cm4gaX19KCk6dm9pZCAwKX0sNDI3MDooZSx0LGkpPT57dmFyIGE9aSg5NTY1KSxyPWkoNDkwMSkscz1pKDM0KSxuPVR5cGVFcnJvcjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgaSxvO2lmKCJzdHJpbmciPT09dCYmcihpPWUudG9TdHJpbmcpJiYhcyhvPWEoaSxlKSkpcmV0dXJuIG87aWYocihpPWUudmFsdWVPZikmJiFzKG89YShpLGUpKSlyZXR1cm4gbztpZigic3RyaW5nIiE9PXQmJnIoaT1lLnRvU3RyaW5nKSYmIXMobz1hKGksZSkpKXJldHVybiBvO3Rocm93IG5ldyBuKCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWUiKX19LDUwMzE6KGUsdCxpKT0+e3ZhciBhPWkoNzc1MSkscj1pKDk1MDQpLHM9aSg4NDgwKSxuPWkoMzcxNyksbz1pKDg1NTEpLGc9cihbXS5jb25jYXQpO2UuZXhwb3J0cz1hKCJSZWZsZWN0Iiwib3duS2V5cyIpfHxmdW5jdGlvbiBvd25LZXlzKGUpe3ZhciB0PXMuZihvKGUpKSxpPW4uZjtyZXR1cm4gaT9nKHQsaShlKSk6dH19LDc5Nzk6KGUsdCxpKT0+e3ZhciBhPWkoODU1MSk7ZS5leHBvcnRzPWZ1bmN0aW9uKCl7dmFyIGU9YSh0aGlzKSx0PSIiO2UuaGFzSW5kaWNlcyYmKHQrPSJkIik7ZS5nbG9iYWwmJih0Kz0iZyIpO2UuaWdub3JlQ2FzZSYmKHQrPSJpIik7ZS5tdWx0aWxpbmUmJih0Kz0ibSIpO2UuZG90QWxsJiYodCs9InMiKTtlLnVuaWNvZGUmJih0Kz0idSIpO2UudW5pY29kZVNldHMmJih0Kz0idiIpO2Uuc3RpY2t5JiYodCs9InkiKTtyZXR1cm4gdH19LDc3NTA6KGUsdCxpKT0+e3ZhciBhPWkoNDExNykscj1UeXBlRXJyb3I7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKGEoZSkpdGhyb3cgbmV3IHIoIkNhbid0IGNhbGwgbWV0aG9kIG9uICIrZSk7cmV0dXJuIGV9fSw5Mjg2OihlLHQsaSk9Pnt2YXIgYT1pKDQ0MDIpLHI9aSg4NDY5KSxzPWEuU2V0LG49YS5hZGQ7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBzO3IoZSwoZnVuY3Rpb24oZSl7bih0LGUpfSkpO3JldHVybiB0fX0sMzQ0MDooZSx0LGkpPT57dmFyIGE9aSg3MDgwKSxyPWkoNDQwMikscz1pKDkyODYpLG49aSg1MTcwKSxvPWkoMzc4OSksZz1pKDg0NjkpLGM9aSg1MDcpLEM9ci5oYXMsaD1yLnJlbW92ZTtlLmV4cG9ydHM9ZnVuY3Rpb24gZGlmZmVyZW5jZShlKXt2YXIgdD1hKHRoaXMpLGk9byhlKSxyPXModCk7bih0KTw9aS5zaXplP2codCwoZnVuY3Rpb24oZSl7aS5pbmNsdWRlcyhlKSYmaChyLGUpfSkpOmMoaS5nZXRJdGVyYXRvcigpLChmdW5jdGlvbihlKXtDKHQsZSkmJmgocixlKX0pKTtyZXR1cm4gcn19LDQ0MDI6KGUsdCxpKT0+e3ZhciBhPWkoOTUwNCkscj1TZXQucHJvdG90eXBlO2UuZXhwb3J0cz17U2V0LGFkZDphKHIuYWRkKSxoYXM6YShyLmhhcykscmVtb3ZlOmEoci5kZWxldGUpLHByb3RvOnJ9fSw4NzUwOihlLHQsaSk9Pnt2YXIgYT1pKDcwODApLHI9aSg0NDAyKSxzPWkoNTE3MCksbj1pKDM3ODkpLG89aSg4NDY5KSxnPWkoNTA3KSxjPXIuU2V0LEM9ci5hZGQsaD1yLmhhcztlLmV4cG9ydHM9ZnVuY3Rpb24gaW50ZXJzZWN0aW9uKGUpe3ZhciB0PWEodGhpcyksaT1uKGUpLHI9bmV3IGM7cyh0KT5pLnNpemU/ZyhpLmdldEl0ZXJhdG9yKCksKGZ1bmN0aW9uKGUpe2godCxlKSYmQyhyLGUpfSkpOm8odCwoZnVuY3Rpb24oZSl7aS5pbmNsdWRlcyhlKSYmQyhyLGUpfSkpO3JldHVybiByfX0sNDQ0OTooZSx0LGkpPT57dmFyIGE9aSg3MDgwKSxyPWkoNDQwMikuaGFzLHM9aSg1MTcwKSxuPWkoMzc4OSksbz1pKDg0NjkpLGc9aSg1MDcpLGM9aSg5NTM5KTtlLmV4cG9ydHM9ZnVuY3Rpb24gaXNEaXNqb2ludEZyb20oZSl7dmFyIHQ9YSh0aGlzKSxpPW4oZSk7aWYocyh0KTw9aS5zaXplKXJldHVybiExIT09byh0LChmdW5jdGlvbihlKXtpZihpLmluY2x1ZGVzKGUpKXJldHVybiExfSksITApO3ZhciBDPWkuZ2V0SXRlcmF0b3IoKTtyZXR1cm4hMSE9PWcoQywoZnVuY3Rpb24oZSl7aWYocih0LGUpKXJldHVybiBjKEMsIm5vcm1hbCIsITEpfSkpfX0sMzgzODooZSx0LGkpPT57dmFyIGE9aSg3MDgwKSxyPWkoNTE3MCkscz1pKDg0NjkpLG49aSgzNzg5KTtlLmV4cG9ydHM9ZnVuY3Rpb24gaXNTdWJzZXRPZihlKXt2YXIgdD1hKHRoaXMpLGk9bihlKTtyZXR1cm4hKHIodCk+aS5zaXplKSYmITEhPT1zKHQsKGZ1bmN0aW9uKGUpe2lmKCFpLmluY2x1ZGVzKGUpKXJldHVybiExfSksITApfX0sODUyNzooZSx0LGkpPT57dmFyIGE9aSg3MDgwKSxyPWkoNDQwMikuaGFzLHM9aSg1MTcwKSxuPWkoMzc4OSksbz1pKDUwNyksZz1pKDk1MzkpO2UuZXhwb3J0cz1mdW5jdGlvbiBpc1N1cGVyc2V0T2YoZSl7dmFyIHQ9YSh0aGlzKSxpPW4oZSk7aWYocyh0KTxpLnNpemUpcmV0dXJuITE7dmFyIGM9aS5nZXRJdGVyYXRvcigpO3JldHVybiExIT09byhjLChmdW5jdGlvbihlKXtpZighcih0LGUpKXJldHVybiBnKGMsIm5vcm1hbCIsITEpfSkpfX0sODQ2OTooZSx0LGkpPT57dmFyIGE9aSg5NTA0KSxyPWkoNTA3KSxzPWkoNDQwMiksbj1zLlNldCxvPXMucHJvdG8sZz1hKG8uZm9yRWFjaCksYz1hKG8ua2V5cyksQz1jKG5ldyBuKS5uZXh0O2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsaSl7cmV0dXJuIGk/cih7aXRlcmF0b3I6YyhlKSxuZXh0OkN9LHQpOmcoZSx0KX19LDQ5MTY6KGUsdCxpKT0+e3ZhciBhPWkoNzc1MSksY3JlYXRlU2V0TGlrZT1mdW5jdGlvbihlKXtyZXR1cm57c2l6ZTplLGhhczpmdW5jdGlvbigpe3JldHVybiExfSxrZXlzOmZ1bmN0aW9uKCl7cmV0dXJue25leHQ6ZnVuY3Rpb24oKXtyZXR1cm57ZG9uZTohMH19fX19fTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9YSgiU2V0Iik7dHJ5eyhuZXcgdClbZV0oY3JlYXRlU2V0TGlrZSgwKSk7dHJ5eyhuZXcgdClbZV0oY3JlYXRlU2V0TGlrZSgtMSkpO3JldHVybiExfWNhdGNoKGUpe3JldHVybiEwfX1jYXRjaChlKXtyZXR1cm4hMX19fSw1MTcwOihlLHQsaSk9Pnt2YXIgYT1pKDY3MDYpLHI9aSg0NDAyKTtlLmV4cG9ydHM9YShyLnByb3RvLCJzaXplIiwiZ2V0Iil8fGZ1bmN0aW9uKGUpe3JldHVybiBlLnNpemV9fSwzNjUwOihlLHQsaSk9Pnt2YXIgYT1pKDcwODApLHI9aSg0NDAyKSxzPWkoOTI4Niksbj1pKDM3ODkpLG89aSg1MDcpLGc9ci5hZGQsYz1yLmhhcyxDPXIucmVtb3ZlO2UuZXhwb3J0cz1mdW5jdGlvbiBzeW1tZXRyaWNEaWZmZXJlbmNlKGUpe3ZhciB0PWEodGhpcyksaT1uKGUpLmdldEl0ZXJhdG9yKCkscj1zKHQpO28oaSwoZnVuY3Rpb24oZSl7Yyh0LGUpP0MocixlKTpnKHIsZSl9KSk7cmV0dXJuIHJ9fSw0MjA0OihlLHQsaSk9Pnt2YXIgYT1pKDcwODApLHI9aSg0NDAyKS5hZGQscz1pKDkyODYpLG49aSgzNzg5KSxvPWkoNTA3KTtlLmV4cG9ydHM9ZnVuY3Rpb24gdW5pb24oZSl7dmFyIHQ9YSh0aGlzKSxpPW4oZSkuZ2V0SXRlcmF0b3IoKSxnPXModCk7byhpLChmdW5jdGlvbihlKXtyKGcsZSl9KSk7cmV0dXJuIGd9fSw2MTE5OihlLHQsaSk9Pnt2YXIgYT1pKDU3NDUpLHI9aSgzMzkyKSxzPWEoImtleXMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIHNbZV18fChzW2VdPXIoZSkpfX0sNzYyOTooZSx0LGkpPT57dmFyIGE9aSg2Mzk1KSxyPWkoNDU3Nikscz1pKDk0MzMpLG49Il9fY29yZS1qc19zaGFyZWRfXyIsbz1lLmV4cG9ydHM9cltuXXx8cyhuLHt9KTsoby52ZXJzaW9uc3x8KG8udmVyc2lvbnM9W10pKS5wdXNoKHt2ZXJzaW9uOiIzLjM4LjEiLG1vZGU6YT8icHVyZSI6Imdsb2JhbCIsY29weXJpZ2h0OiLCqSAyMDE0LTIwMjQgRGVuaXMgUHVzaGthcmV2ICh6bG9pcm9jay5ydSkiLGxpY2Vuc2U6Imh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2Jsb2IvdjMuMzguMS9MSUNFTlNFIixzb3VyY2U6Imh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzIn0pfSw1NzQ1OihlLHQsaSk9Pnt2YXIgYT1pKDc2MjkpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybiBhW2VdfHwoYVtlXT10fHx7fSl9fSwxNTQ4OihlLHQsaSk9Pnt2YXIgYT1pKDQ1NzYpLHI9aSg5MDM5KSxzPWkoOTUxOSksbj1pKDQyMTUpLG89YS5zdHJ1Y3R1cmVkQ2xvbmU7ZS5leHBvcnRzPSEhbyYmIXIoKGZ1bmN0aW9uKCl7aWYoIkRFTk8iPT09biYmcz45Mnx8Ik5PREUiPT09biYmcz45NHx8IkJST1dTRVIiPT09biYmcz45NylyZXR1cm4hMTt2YXIgZT1uZXcgQXJyYXlCdWZmZXIoOCksdD1vKGUse3RyYW5zZmVyOltlXX0pO3JldHVybiAwIT09ZS5ieXRlTGVuZ3RofHw4IT09dC5ieXRlTGVuZ3RofSkpfSw0NDk1OihlLHQsaSk9Pnt2YXIgYT1pKDk1MTkpLHI9aSg5MDM5KSxzPWkoNDU3NikuU3RyaW5nO2UuZXhwb3J0cz0hIU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJiFyKChmdW5jdGlvbigpe3ZhciBlPVN5bWJvbCgic3ltYm9sIGRldGVjdGlvbiIpO3JldHVybiFzKGUpfHwhKE9iamVjdChlKWluc3RhbmNlb2YgU3ltYm9sKXx8IVN5bWJvbC5zaGFtJiZhJiZhPDQxfSkpfSw1NjEwOihlLHQsaSk9Pnt2YXIgYT1pKDEyOTEpLHI9TWF0aC5tYXgscz1NYXRoLm1pbjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgaT1hKGUpO3JldHVybiBpPDA/cihpK3QsMCk6cyhpLHQpfX0sNTg1NDooZSx0LGkpPT57dmFyIGE9aSgyNzc3KSxyPVR5cGVFcnJvcjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9YShlLCJudW1iZXIiKTtpZigibnVtYmVyIj09dHlwZW9mIHQpdGhyb3cgbmV3IHIoIkNhbid0IGNvbnZlcnQgbnVtYmVyIHRvIGJpZ2ludCIpO3JldHVybiBCaWdJbnQodCl9fSw3Njk2OihlLHQsaSk9Pnt2YXIgYT1pKDEyOTEpLHI9aSg4MDE0KSxzPVJhbmdlRXJyb3I7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKHZvaWQgMD09PWUpcmV0dXJuIDA7dmFyIHQ9YShlKSxpPXIodCk7aWYodCE9PWkpdGhyb3cgbmV3IHMoIldyb25nIGxlbmd0aCBvciBpbmRleCIpO3JldHVybiBpfX0sNTM5NzooZSx0LGkpPT57dmFyIGE9aSg3MDU1KSxyPWkoNzc1MCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBhKHIoZSkpfX0sMTI5MTooZSx0LGkpPT57dmFyIGE9aSg3NDEpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD0rZTtyZXR1cm4gdCE9dHx8MD09PXQ/MDphKHQpfX0sODAxNDooZSx0LGkpPT57dmFyIGE9aSgxMjkxKSxyPU1hdGgubWluO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD1hKGUpO3JldHVybiB0PjA/cih0LDkwMDcxOTkyNTQ3NDA5OTEpOjB9fSw4OTgxOihlLHQsaSk9Pnt2YXIgYT1pKDc3NTApLHI9T2JqZWN0O2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gcihhKGUpKX19LDI3Nzc6KGUsdCxpKT0+e3ZhciBhPWkoOTU2NSkscj1pKDM0KSxzPWkoNzU3KSxuPWkoNTk2Niksbz1pKDQyNzApLGc9aSg4MjI3KSxjPVR5cGVFcnJvcixDPWcoInRvUHJpbWl0aXZlIik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7aWYoIXIoZSl8fHMoZSkpcmV0dXJuIGU7dmFyIGksZz1uKGUsQyk7aWYoZyl7dm9pZCAwPT09dCYmKHQ9ImRlZmF1bHQiKTtpPWEoZyxlLHQpO2lmKCFyKGkpfHxzKGkpKXJldHVybiBpO3Rocm93IG5ldyBjKCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWUiKX12b2lkIDA9PT10JiYodD0ibnVtYmVyIik7cmV0dXJuIG8oZSx0KX19LDY5Njk6KGUsdCxpKT0+e3ZhciBhPWkoMjc3Nykscj1pKDc1Nyk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PWEoZSwic3RyaW5nIik7cmV0dXJuIHIodCk/dDp0KyIifX0sMjE0MDooZSx0LGkpPT57dmFyIGE9e307YVtpKDgyMjcpKCJ0b1N0cmluZ1RhZyIpXT0ieiI7ZS5leHBvcnRzPSJbb2JqZWN0IHpdIj09PVN0cmluZyhhKX0sNjU1OihlLHQsaSk9Pnt2YXIgYT1pKDY5NTUpLHI9U3RyaW5nO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZigiU3ltYm9sIj09PWEoZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNvbnZlcnQgYSBTeW1ib2wgdmFsdWUgdG8gYSBzdHJpbmciKTtyZXR1cm4gcihlKX19LDY4MjM6ZT0+e3ZhciB0PVN0cmluZztlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dHJ5e3JldHVybiB0KGUpfWNhdGNoKGUpe3JldHVybiJPYmplY3QifX19LDMzOTI6KGUsdCxpKT0+e3ZhciBhPWkoOTUwNCkscj0wLHM9TWF0aC5yYW5kb20oKSxuPWEoMS4udG9TdHJpbmcpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4iU3ltYm9sKCIrKHZvaWQgMD09PWU/IiI6ZSkrIilfIituKCsrcitzLDM2KX19LDcwNDA6KGUsdCxpKT0+e3ZhciBhPWkoNDQ5NSk7ZS5leHBvcnRzPWEmJiFTeW1ib2wuc2hhbSYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3J9LDg2ODY6KGUsdCxpKT0+e3ZhciBhPWkoMzcyNCkscj1pKDkwMzkpO2UuZXhwb3J0cz1hJiZyKChmdW5jdGlvbigpe3JldHVybiA0MiE9PU9iamVjdC5kZWZpbmVQcm9wZXJ0eSgoZnVuY3Rpb24oKXt9KSwicHJvdG90eXBlIix7dmFsdWU6NDIsd3JpdGFibGU6ITF9KS5wcm90b3R5cGV9KSl9LDI4MTI6ZT0+e3ZhciB0PVR5cGVFcnJvcjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSxpKXtpZihlPGkpdGhyb3cgbmV3IHQoIk5vdCBlbm91Z2ggYXJndW1lbnRzIik7cmV0dXJuIGV9fSw4NjIyOihlLHQsaSk9Pnt2YXIgYT1pKDQ1NzYpLHI9aSg0OTAxKSxzPWEuV2Vha01hcDtlLmV4cG9ydHM9cihzKSYmL25hdGl2ZSBjb2RlLy50ZXN0KFN0cmluZyhzKSl9LDgyMjc6KGUsdCxpKT0+e3ZhciBhPWkoNDU3Nikscj1pKDU3NDUpLHM9aSg5Mjk3KSxuPWkoMzM5Miksbz1pKDQ0OTUpLGc9aSg3MDQwKSxjPWEuU3ltYm9sLEM9cigid2tzIiksaD1nP2MuZm9yfHxjOmMmJmMud2l0aG91dFNldHRlcnx8bjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cyhDLGUpfHwoQ1tlXT1vJiZzKGMsZSk/Y1tlXTpoKCJTeW1ib2wuIitlKSk7cmV0dXJuIENbZV19fSw2NTczOihlLHQsaSk9Pnt2YXIgYT1pKDM3MjQpLHI9aSgyMTA2KSxzPWkoMzIzOCksbj1BcnJheUJ1ZmZlci5wcm90b3R5cGU7YSYmISgiZGV0YWNoZWQiaW4gbikmJnIobiwiZGV0YWNoZWQiLHtjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uIGRldGFjaGVkKCl7cmV0dXJuIHModGhpcyl9fSl9LDc5MzY6KGUsdCxpKT0+e3ZhciBhPWkoNjUxOCkscj1pKDU2MzYpO3ImJmEoe3RhcmdldDoiQXJyYXlCdWZmZXIiLHByb3RvOiEwfSx7dHJhbnNmZXJUb0ZpeGVkTGVuZ3RoOmZ1bmN0aW9uIHRyYW5zZmVyVG9GaXhlZExlbmd0aCgpe3JldHVybiByKHRoaXMsYXJndW1lbnRzLmxlbmd0aD9hcmd1bWVudHNbMF06dm9pZCAwLCExKX19KX0sODEwMDooZSx0LGkpPT57dmFyIGE9aSg2NTE4KSxyPWkoNTYzNik7ciYmYSh7dGFyZ2V0OiJBcnJheUJ1ZmZlciIscHJvdG86ITB9LHt0cmFuc2ZlcjpmdW5jdGlvbiB0cmFuc2Zlcigpe3JldHVybiByKHRoaXMsYXJndW1lbnRzLmxlbmd0aD9hcmd1bWVudHNbMF06dm9pZCAwLCEwKX19KX0sNDExNDooZSx0LGkpPT57dmFyIGE9aSg2NTE4KSxyPWkoODk4MSkscz1pKDYxOTgpLG49aSg0NTI3KSxvPWkoNjgzNyk7YSh7dGFyZ2V0OiJBcnJheSIscHJvdG86ITAsYXJpdHk6MSxmb3JjZWQ6aSg5MDM5KSgoZnVuY3Rpb24oKXtyZXR1cm4gNDI5NDk2NzI5NyE9PVtdLnB1c2guY2FsbCh7bGVuZ3RoOjQyOTQ5NjcyOTZ9LDEpfSkpfHwhZnVuY3Rpb24oKXt0cnl7T2JqZWN0LmRlZmluZVByb3BlcnR5KFtdLCJsZW5ndGgiLHt3cml0YWJsZTohMX0pLnB1c2goKX1jYXRjaChlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIFR5cGVFcnJvcn19KCl9LHtwdXNoOmZ1bmN0aW9uIHB1c2goZSl7dmFyIHQ9cih0aGlzKSxpPXModCksYT1hcmd1bWVudHMubGVuZ3RoO28oaSthKTtmb3IodmFyIGc9MDtnPGE7ZysrKXt0W2ldPWFyZ3VtZW50c1tnXTtpKyt9bih0LGkpO3JldHVybiBpfX0pfSw0NjI4OihlLHQsaSk9Pnt2YXIgYT1pKDY1MTgpLHI9aSg2MDQzKTthKHt0YXJnZXQ6IlByb21pc2UiLHN0YXQ6ITB9LHt3aXRoUmVzb2x2ZXJzOmZ1bmN0aW9uIHdpdGhSZXNvbHZlcnMoKXt2YXIgZT1yLmYodGhpcyk7cmV0dXJue3Byb21pc2U6ZS5wcm9taXNlLHJlc29sdmU6ZS5yZXNvbHZlLHJlamVjdDplLnJlamVjdH19fSl9LDk0Nzk6KGUsdCxpKT0+e3ZhciBhPWkoNDU3Nikscj1pKDM3MjQpLHM9aSgyMTA2KSxuPWkoNzk3OSksbz1pKDkwMzkpLGc9YS5SZWdFeHAsYz1nLnByb3RvdHlwZTtyJiZvKChmdW5jdGlvbigpe3ZhciBlPSEwO3RyeXtnKCIuIiwiZCIpfWNhdGNoKHQpe2U9ITF9dmFyIHQ9e30saT0iIixhPWU/ImRnaW1zeSI6ImdpbXN5IixhZGRHZXR0ZXI9ZnVuY3Rpb24oZSxhKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLHtnZXQ6ZnVuY3Rpb24oKXtpKz1hO3JldHVybiEwfX0pfSxyPXtkb3RBbGw6InMiLGdsb2JhbDoiZyIsaWdub3JlQ2FzZToiaSIsbXVsdGlsaW5lOiJtIixzdGlja3k6InkifTtlJiYoci5oYXNJbmRpY2VzPSJkIik7Zm9yKHZhciBzIGluIHIpYWRkR2V0dGVyKHMscltzXSk7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoYywiZmxhZ3MiKS5nZXQuY2FsbCh0KSE9PWF8fGkhPT1hfSkpJiZzKGMsImZsYWdzIix7Y29uZmlndXJhYmxlOiEwLGdldDpufSl9LDc2NDI6KGUsdCxpKT0+e3ZhciBhPWkoNjUxOCkscj1pKDM0NDApO2Eoe3RhcmdldDoiU2V0Iixwcm90bzohMCxyZWFsOiEwLGZvcmNlZDohaSg0OTE2KSgiZGlmZmVyZW5jZSIpfSx7ZGlmZmVyZW5jZTpyfSl9LDgwMDQ6KGUsdCxpKT0+e3ZhciBhPWkoNjUxOCkscj1pKDkwMzkpLHM9aSg4NzUwKTthKHt0YXJnZXQ6IlNldCIscHJvdG86ITAscmVhbDohMCxmb3JjZWQ6IWkoNDkxNikoImludGVyc2VjdGlvbiIpfHxyKChmdW5jdGlvbigpe3JldHVybiIzLDIiIT09U3RyaW5nKEFycmF5LmZyb20obmV3IFNldChbMSwyLDNdKS5pbnRlcnNlY3Rpb24obmV3IFNldChbMywyXSkpKSl9KSl9LHtpbnRlcnNlY3Rpb246c30pfSwzODUzOihlLHQsaSk9Pnt2YXIgYT1pKDY1MTgpLHI9aSg0NDQ5KTthKHt0YXJnZXQ6IlNldCIscHJvdG86ITAscmVhbDohMCxmb3JjZWQ6IWkoNDkxNikoImlzRGlzam9pbnRGcm9tIil9LHtpc0Rpc2pvaW50RnJvbTpyfSl9LDU4NzY6KGUsdCxpKT0+e3ZhciBhPWkoNjUxOCkscj1pKDM4MzgpO2Eoe3RhcmdldDoiU2V0Iixwcm90bzohMCxyZWFsOiEwLGZvcmNlZDohaSg0OTE2KSgiaXNTdWJzZXRPZiIpfSx7aXNTdWJzZXRPZjpyfSl9LDI0NzU6KGUsdCxpKT0+e3ZhciBhPWkoNjUxOCkscj1pKDg1MjcpO2Eoe3RhcmdldDoiU2V0Iixwcm90bzohMCxyZWFsOiEwLGZvcmNlZDohaSg0OTE2KSgiaXNTdXBlcnNldE9mIil9LHtpc1N1cGVyc2V0T2Y6cn0pfSw1MDI0OihlLHQsaSk9Pnt2YXIgYT1pKDY1MTgpLHI9aSgzNjUwKTthKHt0YXJnZXQ6IlNldCIscHJvdG86ITAscmVhbDohMCxmb3JjZWQ6IWkoNDkxNikoInN5bW1ldHJpY0RpZmZlcmVuY2UiKX0se3N5bW1ldHJpY0RpZmZlcmVuY2U6cn0pfSwxNjk4OihlLHQsaSk9Pnt2YXIgYT1pKDY1MTgpLHI9aSg0MjA0KTthKHt0YXJnZXQ6IlNldCIscHJvdG86ITAscmVhbDohMCxmb3JjZWQ6IWkoNDkxNikoInVuaW9uIil9LHt1bmlvbjpyfSl9LDc0Njc6KGUsdCxpKT0+e3ZhciBhPWkoNzYyOCkscj1pKDQ2NDQpLHM9ci5hVHlwZWRBcnJheSxuPXIuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCxvPXIuZ2V0VHlwZWRBcnJheUNvbnN0cnVjdG9yO24oInRvUmV2ZXJzZWQiLChmdW5jdGlvbiB0b1JldmVyc2VkKCl7cmV0dXJuIGEocyh0aGlzKSxvKHRoaXMpKX0pKX0sNDczMjooZSx0LGkpPT57dmFyIGE9aSg0NjQ0KSxyPWkoOTUwNCkscz1pKDkzMDYpLG49aSg1MzcwKSxvPWEuYVR5cGVkQXJyYXksZz1hLmdldFR5cGVkQXJyYXlDb25zdHJ1Y3RvcixjPWEuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCxDPXIoYS5UeXBlZEFycmF5UHJvdG90eXBlLnNvcnQpO2MoInRvU29ydGVkIiwoZnVuY3Rpb24gdG9Tb3J0ZWQoZSl7dm9pZCAwIT09ZSYmcyhlKTt2YXIgdD1vKHRoaXMpLGk9bihnKHQpLHQpO3JldHVybiBDKGksZSl9KSl9LDk1Nzc6KGUsdCxpKT0+e3ZhciBhPWkoOTkyOCkscj1pKDQ2NDQpLHM9aSgxMTA4KSxuPWkoMTI5MSksbz1pKDU4NTQpLGc9ci5hVHlwZWRBcnJheSxjPXIuZ2V0VHlwZWRBcnJheUNvbnN0cnVjdG9yLEM9ci5leHBvcnRUeXBlZEFycmF5TWV0aG9kLGg9ISFmdW5jdGlvbigpe3RyeXtuZXcgSW50OEFycmF5KDEpLndpdGgoMix7dmFsdWVPZjpmdW5jdGlvbigpe3Rocm93IDh9fSl9Y2F0Y2goZSl7cmV0dXJuIDg9PT1lfX0oKTtDKCJ3aXRoIix7d2l0aDpmdW5jdGlvbihlLHQpe3ZhciBpPWcodGhpcykscj1uKGUpLEM9cyhpKT9vKHQpOit0O3JldHVybiBhKGksYyhpKSxyLEMpfX0ud2l0aCwhaCl9LDg5OTI6KGUsdCxpKT0+e3ZhciBhPWkoNjUxOCkscj1pKDQ1NzYpLHM9aSg2NzkpLG49aSg4NTUxKSxvPWkoNDkwMSksZz1pKDI3ODcpLGM9aSgyMTA2KSxDPWkoNDY1OSksaD1pKDkwMzkpLGw9aSg5Mjk3KSxRPWkoODIyNyksRT1pKDc2NTcpLkl0ZXJhdG9yUHJvdG90eXBlLHU9aSgzNzI0KSxkPWkoNjM5NSksZj0iY29uc3RydWN0b3IiLHA9Ikl0ZXJhdG9yIixtPVEoInRvU3RyaW5nVGFnIikseT1UeXBlRXJyb3Isdz1yW3BdLGI9ZHx8IW8odyl8fHcucHJvdG90eXBlIT09RXx8IWgoKGZ1bmN0aW9uKCl7dyh7fSl9KSksRD1mdW5jdGlvbiBJdGVyYXRvcigpe3ModGhpcyxFKTtpZihnKHRoaXMpPT09RSl0aHJvdyBuZXcgeSgiQWJzdHJhY3QgY2xhc3MgSXRlcmF0b3Igbm90IGRpcmVjdGx5IGNvbnN0cnVjdGFibGUiKX0sZGVmaW5lSXRlcmF0b3JQcm90b3R5cGVBY2Nlc3Nvcj1mdW5jdGlvbihlLHQpe3U/YyhFLGUse2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdH0sc2V0OmZ1bmN0aW9uKHQpe24odGhpcyk7aWYodGhpcz09PUUpdGhyb3cgbmV3IHkoIllvdSBjYW4ndCByZWRlZmluZSB0aGlzIHByb3BlcnR5Iik7bCh0aGlzLGUpP3RoaXNbZV09dDpDKHRoaXMsZSx0KX19KTpFW2VdPXR9O2woRSxtKXx8ZGVmaW5lSXRlcmF0b3JQcm90b3R5cGVBY2Nlc3NvcihtLHApOyFiJiZsKEUsZikmJkVbZl0hPT1PYmplY3R8fGRlZmluZUl0ZXJhdG9yUHJvdG90eXBlQWNjZXNzb3IoZixEKTtELnByb3RvdHlwZT1FO2Eoe2dsb2JhbDohMCxjb25zdHJ1Y3RvcjohMCxmb3JjZWQ6Yn0se0l0ZXJhdG9yOkR9KX0sMzIxNTooZSx0LGkpPT57dmFyIGE9aSg2NTE4KSxyPWkoMjY1Mikscz1pKDkzMDYpLG49aSg4NTUxKSxvPWkoMTc2Nyk7YSh7dGFyZ2V0OiJJdGVyYXRvciIscHJvdG86ITAscmVhbDohMH0se2V2ZXJ5OmZ1bmN0aW9uIGV2ZXJ5KGUpe24odGhpcyk7cyhlKTt2YXIgdD1vKHRoaXMpLGk9MDtyZXR1cm4hcih0LChmdW5jdGlvbih0LGEpe2lmKCFlKHQsaSsrKSlyZXR1cm4gYSgpfSkse0lTX1JFQ09SRDohMCxJTlRFUlJVUFRFRDohMH0pLnN0b3BwZWR9fSl9LDQ1MjA6KGUsdCxpKT0+e3ZhciBhPWkoNjUxOCkscj1pKDk1NjUpLHM9aSg5MzA2KSxuPWkoODU1MSksbz1pKDE3NjcpLGc9aSg5NDYyKSxjPWkoNjMxOSksQz1pKDYzOTUpLGg9ZygoZnVuY3Rpb24oKXtmb3IodmFyIGUsdCxpPXRoaXMuaXRlcmF0b3IsYT10aGlzLnByZWRpY2F0ZSxzPXRoaXMubmV4dDs7KXtlPW4ocihzLGkpKTtpZih0aGlzLmRvbmU9ISFlLmRvbmUpcmV0dXJuO3Q9ZS52YWx1ZTtpZihjKGksYSxbdCx0aGlzLmNvdW50ZXIrK10sITApKXJldHVybiB0fX0pKTthKHt0YXJnZXQ6Ikl0ZXJhdG9yIixwcm90bzohMCxyZWFsOiEwLGZvcmNlZDpDfSx7ZmlsdGVyOmZ1bmN0aW9uIGZpbHRlcihlKXtuKHRoaXMpO3MoZSk7cmV0dXJuIG5ldyBoKG8odGhpcykse3ByZWRpY2F0ZTplfSl9fSl9LDI1Nzc6KGUsdCxpKT0+e3ZhciBhPWkoNjUxOCkscj1pKDI2NTIpLHM9aSg5MzA2KSxuPWkoODU1MSksbz1pKDE3NjcpO2Eoe3RhcmdldDoiSXRlcmF0b3IiLHByb3RvOiEwLHJlYWw6ITB9LHtmaW5kOmZ1bmN0aW9uIGZpbmQoZSl7bih0aGlzKTtzKGUpO3ZhciB0PW8odGhpcyksaT0wO3JldHVybiByKHQsKGZ1bmN0aW9uKHQsYSl7aWYoZSh0LGkrKykpcmV0dXJuIGEodCl9KSx7SVNfUkVDT1JEOiEwLElOVEVSUlVQVEVEOiEwfSkucmVzdWx0fX0pfSwzOTQ5OihlLHQsaSk9Pnt2YXIgYT1pKDY1MTgpLHI9aSgyNjUyKSxzPWkoOTMwNiksbj1pKDg1NTEpLG89aSgxNzY3KTthKHt0YXJnZXQ6Ikl0ZXJhdG9yIixwcm90bzohMCxyZWFsOiEwfSx7Zm9yRWFjaDpmdW5jdGlvbiBmb3JFYWNoKGUpe24odGhpcyk7cyhlKTt2YXIgdD1vKHRoaXMpLGk9MDtyKHQsKGZ1bmN0aW9uKHQpe2UodCxpKyspfSkse0lTX1JFQ09SRDohMH0pfX0pfSwxNDU0OihlLHQsaSk9Pnt2YXIgYT1pKDY1MTgpLHI9aSg3MTMpO2Eoe3RhcmdldDoiSXRlcmF0b3IiLHByb3RvOiEwLHJlYWw6ITAsZm9yY2VkOmkoNjM5NSl9LHttYXA6cn0pfSw4ODcyOihlLHQsaSk9Pnt2YXIgYT1pKDY1MTgpLHI9aSgyNjUyKSxzPWkoOTMwNiksbj1pKDg1NTEpLG89aSgxNzY3KSxnPVR5cGVFcnJvcjthKHt0YXJnZXQ6Ikl0ZXJhdG9yIixwcm90bzohMCxyZWFsOiEwfSx7cmVkdWNlOmZ1bmN0aW9uIHJlZHVjZShlKXtuKHRoaXMpO3MoZSk7dmFyIHQ9byh0aGlzKSxpPWFyZ3VtZW50cy5sZW5ndGg8MixhPWk/dm9pZCAwOmFyZ3VtZW50c1sxXSxjPTA7cih0LChmdW5jdGlvbih0KXtpZihpKXtpPSExO2E9dH1lbHNlIGE9ZShhLHQsYyk7YysrfSkse0lTX1JFQ09SRDohMH0pO2lmKGkpdGhyb3cgbmV3IGcoIlJlZHVjZSBvZiBlbXB0eSBpdGVyYXRvciB3aXRoIG5vIGluaXRpYWwgdmFsdWUiKTtyZXR1cm4gYX19KX0sNzU1MDooZSx0LGkpPT57dmFyIGE9aSg2NTE4KSxyPWkoMjY1Mikscz1pKDkzMDYpLG49aSg4NTUxKSxvPWkoMTc2Nyk7YSh7dGFyZ2V0OiJJdGVyYXRvciIscHJvdG86ITAscmVhbDohMH0se3NvbWU6ZnVuY3Rpb24gc29tZShlKXtuKHRoaXMpO3MoZSk7dmFyIHQ9byh0aGlzKSxpPTA7cmV0dXJuIHIodCwoZnVuY3Rpb24odCxhKXtpZihlKHQsaSsrKSlyZXR1cm4gYSgpfSkse0lTX1JFQ09SRDohMCxJTlRFUlJVUFRFRDohMH0pLnN0b3BwZWR9fSl9LDE3OTU6KGUsdCxpKT0+e3ZhciBhPWkoNjUxOCkscj1pKDg1NTEpLHM9aSgyNjUyKSxuPWkoMTc2Nyksbz1bXS5wdXNoO2Eoe3RhcmdldDoiSXRlcmF0b3IiLHByb3RvOiEwLHJlYWw6ITB9LHt0b0FycmF5OmZ1bmN0aW9uIHRvQXJyYXkoKXt2YXIgZT1bXTtzKG4ocih0aGlzKSksbyx7dGhhdDplLElTX1JFQ09SRDohMH0pO3JldHVybiBlfX0pfSw0OTc5OihlLHQsaSk9Pnt2YXIgYT1pKDY1MTgpLHI9aSg0NTc2KSxzPWkoNzc1MSksbj1pKDY5ODApLG89aSg0OTEzKS5mLGc9aSg5Mjk3KSxjPWkoNjc5KSxDPWkoMzE2NyksaD1pKDI2MDMpLGw9aSg1MDAyKSxRPWkoODU3NCksRT1pKDM3MjQpLHU9aSg2Mzk1KSxkPSJET01FeGNlcHRpb24iLGY9cygiRXJyb3IiKSxwPXMoZCksbT1mdW5jdGlvbiBET01FeGNlcHRpb24oKXtjKHRoaXMseSk7dmFyIGU9YXJndW1lbnRzLmxlbmd0aCx0PWgoZTwxP3ZvaWQgMDphcmd1bWVudHNbMF0pLGk9aChlPDI/dm9pZCAwOmFyZ3VtZW50c1sxXSwiRXJyb3IiKSxhPW5ldyBwKHQsaSkscj1uZXcgZih0KTtyLm5hbWU9ZDtvKGEsInN0YWNrIixuKDEsUShyLnN0YWNrLDEpKSk7QyhhLHRoaXMsbSk7cmV0dXJuIGF9LHk9bS5wcm90b3R5cGU9cC5wcm90b3R5cGUsdz0ic3RhY2siaW4gbmV3IGYoZCksYj0ic3RhY2siaW4gbmV3IHAoMSwyKSxEPXAmJkUmJk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocixkKSxTPSEoIUR8fEQud3JpdGFibGUmJkQuY29uZmlndXJhYmxlKSxrPXcmJiFTJiYhYjthKHtnbG9iYWw6ITAsY29uc3RydWN0b3I6ITAsZm9yY2VkOnV8fGt9LHtET01FeGNlcHRpb246az9tOnB9KTt2YXIgUj1zKGQpLE49Ui5wcm90b3R5cGU7aWYoTi5jb25zdHJ1Y3RvciE9PVIpe3V8fG8oTiwiY29uc3RydWN0b3IiLG4oMSxSKSk7Zm9yKHZhciBHIGluIGwpaWYoZyhsLEcpKXt2YXIgeD1sW0ddLFU9eC5zO2coUixVKXx8byhSLFUsbig2LHguYykpfX19LDM2MTE6KGUsdCxpKT0+e3ZhciBhPWkoNjUxOCkscj1pKDQ1NzYpLHM9aSgyMTA2KSxuPWkoMzcyNCksbz1UeXBlRXJyb3IsZz1PYmplY3QuZGVmaW5lUHJvcGVydHksYz1yLnNlbGYhPT1yO3RyeXtpZihuKXt2YXIgQz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHIsInNlbGYiKTshYyYmQyYmQy5nZXQmJkMuZW51bWVyYWJsZXx8cyhyLCJzZWxmIix7Z2V0OmZ1bmN0aW9uIHNlbGYoKXtyZXR1cm4gcn0sc2V0OmZ1bmN0aW9uIHNlbGYoZSl7aWYodGhpcyE9PXIpdGhyb3cgbmV3IG8oIklsbGVnYWwgaW52b2NhdGlvbiIpO2cociwic2VsZiIse3ZhbHVlOmUsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITB9KX0sY29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITB9KX1lbHNlIGEoe2dsb2JhbDohMCxzaW1wbGU6ITAsZm9yY2VkOmN9LHtzZWxmOnJ9KX1jYXRjaChlKXt9fSw0NjAzOihlLHQsaSk9Pnt2YXIgYT1pKDY4NDApLHI9aSg5NTA0KSxzPWkoNjU1KSxuPWkoMjgxMiksbz1VUkxTZWFyY2hQYXJhbXMsZz1vLnByb3RvdHlwZSxjPXIoZy5hcHBlbmQpLEM9cihnLmRlbGV0ZSksaD1yKGcuZm9yRWFjaCksbD1yKFtdLnB1c2gpLFE9bmV3IG8oImE9MSZhPTImYj0zIik7US5kZWxldGUoImEiLDEpO1EuZGVsZXRlKCJiIix2b2lkIDApO1ErIiIhPSJhPTIiJiZhKGcsImRlbGV0ZSIsKGZ1bmN0aW9uKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGgsaT10PDI/dm9pZCAwOmFyZ3VtZW50c1sxXTtpZih0JiZ2b2lkIDA9PT1pKXJldHVybiBDKHRoaXMsZSk7dmFyIGE9W107aCh0aGlzLChmdW5jdGlvbihlLHQpe2woYSx7a2V5OnQsdmFsdWU6ZX0pfSkpO24odCwxKTtmb3IodmFyIHIsbz1zKGUpLGc9cyhpKSxRPTAsRT0wLHU9ITEsZD1hLmxlbmd0aDtRPGQ7KXtyPWFbUSsrXTtpZih1fHxyLmtleT09PW8pe3U9ITA7Qyh0aGlzLHIua2V5KX1lbHNlIEUrK31mb3IoO0U8ZDspKHI9YVtFKytdKS5rZXk9PT1vJiZyLnZhbHVlPT09Z3x8Yyh0aGlzLHIua2V5LHIudmFsdWUpfSkse2VudW1lcmFibGU6ITAsdW5zYWZlOiEwfSl9LDc1NjY6KGUsdCxpKT0+e3ZhciBhPWkoNjg0MCkscj1pKDk1MDQpLHM9aSg2NTUpLG49aSgyODEyKSxvPVVSTFNlYXJjaFBhcmFtcyxnPW8ucHJvdG90eXBlLGM9cihnLmdldEFsbCksQz1yKGcuaGFzKSxoPW5ldyBvKCJhPTEiKTshaC5oYXMoImEiLDIpJiZoLmhhcygiYSIsdm9pZCAwKXx8YShnLCJoYXMiLChmdW5jdGlvbiBoYXMoZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aCxpPXQ8Mj92b2lkIDA6YXJndW1lbnRzWzFdO2lmKHQmJnZvaWQgMD09PWkpcmV0dXJuIEModGhpcyxlKTt2YXIgYT1jKHRoaXMsZSk7bih0LDEpO2Zvcih2YXIgcj1zKGkpLG89MDtvPGEubGVuZ3RoOylpZihhW28rK109PT1yKXJldHVybiEwO3JldHVybiExfSkse2VudW1lcmFibGU6ITAsdW5zYWZlOiEwfSl9LDg3MjE6KGUsdCxpKT0+e3ZhciBhPWkoMzcyNCkscj1pKDk1MDQpLHM9aSgyMTA2KSxuPVVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGUsbz1yKG4uZm9yRWFjaCk7YSYmISgic2l6ZSJpbiBuKSYmcyhuLCJzaXplIix7Z2V0OmZ1bmN0aW9uIHNpemUoKXt2YXIgZT0wO28odGhpcywoZnVuY3Rpb24oKXtlKyt9KSk7cmV0dXJuIGV9LGNvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwfSl9fSx0PXt9O2Z1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18oaSl7dmFyIGE9dFtpXTtpZih2b2lkIDAhPT1hKXJldHVybiBhLmV4cG9ydHM7dmFyIHI9dFtpXT17ZXhwb3J0czp7fX07ZVtpXS5jYWxsKHIuZXhwb3J0cyxyLHIuZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKTtyZXR1cm4gci5leHBvcnRzfV9fd2VicGFja19yZXF1aXJlX18uZD0oZSx0KT0+e2Zvcih2YXIgaSBpbiB0KV9fd2VicGFja19yZXF1aXJlX18ubyh0LGkpJiYhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGUsaSkmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLGkse2VudW1lcmFibGU6ITAsZ2V0OnRbaV19KX07X193ZWJwYWNrX3JlcXVpcmVfXy5vPShlLHQpPT5PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSx0KTt2YXIgX193ZWJwYWNrX2V4cG9ydHNfXyA9IGdsb2JhbFRoaXMucGRmanNXb3JrZXIgPSB7fTtfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXyx7V29ya2VyTWVzc2FnZUhhbmRsZXI6KCk9Pldvcmtlck1lc3NhZ2VIYW5kbGVyfSk7X193ZWJwYWNrX3JlcXVpcmVfXyg0MTE0KSxfX3dlYnBhY2tfcmVxdWlyZV9fKDY1NzMpLF9fd2VicGFja19yZXF1aXJlX18oODEwMCksX193ZWJwYWNrX3JlcXVpcmVfXyg3OTM2KSxfX3dlYnBhY2tfcmVxdWlyZV9fKDQ2MjgpLF9fd2VicGFja19yZXF1aXJlX18oNzY0MiksX193ZWJwYWNrX3JlcXVpcmVfXyg4MDA0KSxfX3dlYnBhY2tfcmVxdWlyZV9fKDM4NTMpLF9fd2VicGFja19yZXF1aXJlX18oNTg3NiksX193ZWJwYWNrX3JlcXVpcmVfXygyNDc1KSxfX3dlYnBhY2tfcmVxdWlyZV9fKDUwMjQpLF9fd2VicGFja19yZXF1aXJlX18oMTY5OCksX193ZWJwYWNrX3JlcXVpcmVfXyg3NDY3KSxfX3dlYnBhY2tfcmVxdWlyZV9fKDQ3MzIpLF9fd2VicGFja19yZXF1aXJlX18oOTU3NyksX193ZWJwYWNrX3JlcXVpcmVfXyg4OTkyKSxfX3dlYnBhY2tfcmVxdWlyZV9fKDM5NDkpLF9fd2VicGFja19yZXF1aXJlX18oMTQ1NCksX193ZWJwYWNrX3JlcXVpcmVfXyg3NTUwKSxfX3dlYnBhY2tfcmVxdWlyZV9fKDM2MTEpLF9fd2VicGFja19yZXF1aXJlX18oNDYwMyksX193ZWJwYWNrX3JlcXVpcmVfXyg3NTY2KSxfX3dlYnBhY2tfcmVxdWlyZV9fKDg3MjEpO2NvbnN0IGk9ISgib2JqZWN0IiE9dHlwZW9mIHByb2Nlc3N8fHByb2Nlc3MrIiIhPSJbb2JqZWN0IHByb2Nlc3NdInx8cHJvY2Vzcy52ZXJzaW9ucy5ud3x8cHJvY2Vzcy52ZXJzaW9ucy5lbGVjdHJvbiYmcHJvY2Vzcy50eXBlJiYiYnJvd3NlciIhPT1wcm9jZXNzLnR5cGUpLGE9WzEsMCwwLDEsMCwwXSxyPVsuMDAxLDAsMCwuMDAxLDAsMF0scz0xLjM1LG49LjM1LG89LjI1OTI1OTI1OTI1OTI1OTI0LGc9MSxjPTIsQz00LGg9OCxsPTE2LFE9NjQsRT0xMjgsdT0yNTYsZD0icGRmanNfaW50ZXJuYWxfZWRpdG9yXyIsZj0zLHA9OSxtPTEzLHk9MTUsdz17UFJJTlQ6NCxNT0RJRllfQ09OVEVOVFM6OCxDT1BZOjE2LE1PRElGWV9BTk5PVEFUSU9OUzozMixGSUxMX0lOVEVSQUNUSVZFX0ZPUk1TOjI1NixDT1BZX0ZPUl9BQ0NFU1NJQklMSVRZOjUxMixBU1NFTUJMRToxMDI0LFBSSU5UX0hJR0hfUVVBTElUWToyMDQ4fSxiPTAsRD00LFM9MSxrPTIsUj0zLE49MSxHPTIseD0zLFU9NCxNPTUsTD02LEg9NyxKPTgsdj05LFk9MTAsVD0xMSxLPTEyLHE9MTMsTz0xNCxXPTE1LGo9MTYsWD0xNyxaPTIwLFY9Ikdyb3VwIixfPSJSIix6PTEsJD0yLEFBPTQsZUE9MTYsdEE9MzIsaUE9MTI4LGFBPTUxMixyQT0xLHNBPTIsbkE9NDA5NixvQT04MTkyLGdBPTMyNzY4LElBPTY1NTM2LGNBPTEzMTA3MixDQT0xMDQ4NTc2LGhBPTIwOTcxNTIsbEE9ODM4ODYwOCxCQT0xNjc3NzIxNixRQT0xLEVBPTIsdUE9MyxkQT00LGZBPTUscEE9e0U6Ik1vdXNlIEVudGVyIixYOiJNb3VzZSBFeGl0IixEOiJNb3VzZSBEb3duIixVOiJNb3VzZSBVcCIsRm86IkZvY3VzIixCbDoiQmx1ciIsUE86IlBhZ2VPcGVuIixQQzoiUGFnZUNsb3NlIixQVjoiUGFnZVZpc2libGUiLFBJOiJQYWdlSW52aXNpYmxlIixLOiJLZXlzdHJva2UiLEY6IkZvcm1hdCIsVjoiVmFsaWRhdGUiLEM6IkNhbGN1bGF0ZSJ9LG1BPXtXQzoiV2lsbENsb3NlIixXUzoiV2lsbFNhdmUiLERTOiJEaWRTYXZlIixXUDoiV2lsbFByaW50IixEUDoiRGlkUHJpbnQifSx5QT17TzoiUGFnZU9wZW4iLEM6IlBhZ2VDbG9zZSJ9LHdBPXtFUlJPUlM6MCxXQVJOSU5HUzoxLElORk9TOjV9LGJBPXtOT05FOjAsQklOQVJZOjF9LERBPTEsRkE9MixTQT0zLGtBPTQsUkE9NSxOQT02LEdBPTcseEE9OCxVQT05LE1BPTEwLExBPTExLEhBPTEyLEpBPTEzLHZBPTE0LFlBPTE1LFRBPTE2LEtBPTE3LHFBPTE4LE9BPTE5LFBBPTIwLFdBPTIxLGpBPTIyLFhBPTIzLFpBPTI0LFZBPTI1LF9BPTI2LHpBPTI3LCRBPTI4LEFlPTI5LGVlPTMwLHRlPTMxLGllPTMyLGFlPTMzLHJlPTM0LHNlPTM1LG5lPTM2LG9lPTM3LGdlPTM4LEllPTM5LGNlPTQwLENlPTQxLGhlPTQyLGxlPTQzLEJlPTQ0LFFlPTQ1LEVlPTQ2LHVlPTQ3LGRlPTQ4LGZlPTQ5LHBlPTUwLG1lPTUxLHllPTUyLHdlPTUzLGJlPTU0LERlPTU1LEZlPTU2LFNlPTU3LGtlPTU4LFJlPTU5LE5lPTYwLEdlPTYxLHhlPTYyLFVlPTYzLE1lPTY0LExlPTY1LEhlPTY2LEplPTY3LHZlPTY4LFllPTY5LFRlPTcwLEtlPTcxLHFlPTcyLE9lPTczLFBlPTc0LFdlPTc1LGplPTc2LFhlPTc3LFplPTgwLFZlPTgxLF9lPTgzLHplPTg0LCRlPTg1LEF0PTg2LGV0PTg3LHR0PTg4LGl0PTg5LGF0PTkwLHJ0PTkxLHN0PTkyLG50PTkzLG90PTEsZ3Q9MjtsZXQgSXQ9d0EuV0FSTklOR1M7ZnVuY3Rpb24gZ2V0VmVyYm9zaXR5TGV2ZWwoKXtyZXR1cm4gSXR9ZnVuY3Rpb24gaW5mbyhlKXtJdD49d0EuSU5GT1MmJmNvbnNvbGUubG9nKGBJbmZvOiAke2V9YCl9ZnVuY3Rpb24gd2FybihlKXtJdD49d0EuV0FSTklOR1MmJmNvbnNvbGUubG9nKGBXYXJuaW5nOiAke2V9YCl9ZnVuY3Rpb24gdW5yZWFjaGFibGUoZSl7dGhyb3cgbmV3IEVycm9yKGUpfWZ1bmN0aW9uIGFzc2VydChlLHQpe2V8fHVucmVhY2hhYmxlKHQpfWZ1bmN0aW9uIGNyZWF0ZVZhbGlkQWJzb2x1dGVVcmwoZSx0PW51bGwsaT1udWxsKXtpZighZSlyZXR1cm4gbnVsbDt0cnl7aWYoaSYmInN0cmluZyI9PXR5cGVvZiBlKXtpZihpLmFkZERlZmF1bHRQcm90b2NvbCYmZS5zdGFydHNXaXRoKCJ3d3cuIikpe2NvbnN0IHQ9ZS5tYXRjaCgvXC4vZyk7dD8ubGVuZ3RoPj0yJiYoZT1gaHR0cDovLyR7ZX1gKX1pZihpLnRyeUNvbnZlcnRFbmNvZGluZyl0cnl7ZT1zdHJpbmdUb1VURjhTdHJpbmcoZSl9Y2F0Y2h7fX1jb25zdCBhPXQ/bmV3IFVSTChlLHQpOm5ldyBVUkwoZSk7aWYoZnVuY3Rpb24gX2lzVmFsaWRQcm90b2NvbChlKXtzd2l0Y2goZT8ucHJvdG9jb2wpe2Nhc2UiaHR0cDoiOmNhc2UiaHR0cHM6IjpjYXNlImZ0cDoiOmNhc2UibWFpbHRvOiI6Y2FzZSJ0ZWw6IjpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiExfX0oYSkpcmV0dXJuIGF9Y2F0Y2h7fXJldHVybiBudWxsfWZ1bmN0aW9uIHNoYWRvdyhlLHQsaSxhPSExKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTppLGVudW1lcmFibGU6IWEsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiExfSk7cmV0dXJuIGl9Y29uc3QgY3Q9ZnVuY3Rpb24gQmFzZUV4Y2VwdGlvbkNsb3N1cmUoKXtmdW5jdGlvbiBCYXNlRXhjZXB0aW9uKGUsdCl7dGhpcy5tZXNzYWdlPWU7dGhpcy5uYW1lPXR9QmFzZUV4Y2VwdGlvbi5wcm90b3R5cGU9bmV3IEVycm9yO0Jhc2VFeGNlcHRpb24uY29uc3RydWN0b3I9QmFzZUV4Y2VwdGlvbjtyZXR1cm4gQmFzZUV4Y2VwdGlvbn0oKTtjbGFzcyBQYXNzd29yZEV4Y2VwdGlvbiBleHRlbmRzIGN0e2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSwiUGFzc3dvcmRFeGNlcHRpb24iKTt0aGlzLmNvZGU9dH19Y2xhc3MgVW5rbm93bkVycm9yRXhjZXB0aW9uIGV4dGVuZHMgY3R7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLCJVbmtub3duRXJyb3JFeGNlcHRpb24iKTt0aGlzLmRldGFpbHM9dH19Y2xhc3MgSW52YWxpZFBERkV4Y2VwdGlvbiBleHRlbmRzIGN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIkludmFsaWRQREZFeGNlcHRpb24iKX19Y2xhc3MgTWlzc2luZ1BERkV4Y2VwdGlvbiBleHRlbmRzIGN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIk1pc3NpbmdQREZFeGNlcHRpb24iKX19Y2xhc3MgVW5leHBlY3RlZFJlc3BvbnNlRXhjZXB0aW9uIGV4dGVuZHMgY3R7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLCJVbmV4cGVjdGVkUmVzcG9uc2VFeGNlcHRpb24iKTt0aGlzLnN0YXR1cz10fX1jbGFzcyBGb3JtYXRFcnJvciBleHRlbmRzIGN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIkZvcm1hdEVycm9yIil9fWNsYXNzIEFib3J0RXhjZXB0aW9uIGV4dGVuZHMgY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiQWJvcnRFeGNlcHRpb24iKX19ZnVuY3Rpb24gYnl0ZXNUb1N0cmluZyhlKXsib2JqZWN0Ij09dHlwZW9mIGUmJnZvaWQgMCE9PWU/Lmxlbmd0aHx8dW5yZWFjaGFibGUoIkludmFsaWQgYXJndW1lbnQgZm9yIGJ5dGVzVG9TdHJpbmciKTtjb25zdCB0PWUubGVuZ3RoLGk9ODE5MjtpZih0PGkpcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCxlKTtjb25zdCBhPVtdO2ZvcihsZXQgcj0wO3I8dDtyKz1pKXtjb25zdCBzPU1hdGgubWluKHIraSx0KSxuPWUuc3ViYXJyYXkocixzKTthLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLG4pKX1yZXR1cm4gYS5qb2luKCIiKX1mdW5jdGlvbiBzdHJpbmdUb0J5dGVzKGUpeyJzdHJpbmciIT10eXBlb2YgZSYmdW5yZWFjaGFibGUoIkludmFsaWQgYXJndW1lbnQgZm9yIHN0cmluZ1RvQnl0ZXMiKTtjb25zdCB0PWUubGVuZ3RoLGk9bmV3IFVpbnQ4QXJyYXkodCk7Zm9yKGxldCBhPTA7YTx0OysrYSlpW2FdPTI1NSZlLmNoYXJDb2RlQXQoYSk7cmV0dXJuIGl9ZnVuY3Rpb24gc3RyaW5nMzIoZSl7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoZT4+MjQmMjU1LGU+PjE2JjI1NSxlPj44JjI1NSwyNTUmZSl9ZnVuY3Rpb24gb2JqZWN0U2l6ZShlKXtyZXR1cm4gT2JqZWN0LmtleXMoZSkubGVuZ3RofWNsYXNzIEZlYXR1cmVUZXN0e3N0YXRpYyBnZXQgaXNMaXR0bGVFbmRpYW4oKXtyZXR1cm4gc2hhZG93KHRoaXMsImlzTGl0dGxlRW5kaWFuIixmdW5jdGlvbiBpc0xpdHRsZUVuZGlhbigpe2NvbnN0IGU9bmV3IFVpbnQ4QXJyYXkoNCk7ZVswXT0xO3JldHVybiAxPT09bmV3IFVpbnQzMkFycmF5KGUuYnVmZmVyLDAsMSlbMF19KCkpfXN0YXRpYyBnZXQgaXNFdmFsU3VwcG9ydGVkKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJpc0V2YWxTdXBwb3J0ZWQiLGZ1bmN0aW9uIGlzRXZhbFN1cHBvcnRlZCgpe3RyeXtuZXcgRnVuY3Rpb24oIiIpO3JldHVybiEwfWNhdGNoe3JldHVybiExfX0oKSl9c3RhdGljIGdldCBpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZCgpe3JldHVybiBzaGFkb3codGhpcywiaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQiLCJ1bmRlZmluZWQiIT10eXBlb2YgT2Zmc2NyZWVuQ2FudmFzKX1zdGF0aWMgZ2V0IHBsYXRmb3JtKCl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBuYXZpZ2F0b3ImJiJzdHJpbmciPT10eXBlb2YgbmF2aWdhdG9yPy5wbGF0Zm9ybT9zaGFkb3codGhpcywicGxhdGZvcm0iLHtpc01hYzpuYXZpZ2F0b3IucGxhdGZvcm0uaW5jbHVkZXMoIk1hYyIpLGlzV2luZG93czpuYXZpZ2F0b3IucGxhdGZvcm0uaW5jbHVkZXMoIldpbiIpLGlzRmlyZWZveDoic3RyaW5nIj09dHlwZW9mIG5hdmlnYXRvcj8udXNlckFnZW50JiZuYXZpZ2F0b3IudXNlckFnZW50LmluY2x1ZGVzKCJGaXJlZm94Iil9KTpzaGFkb3codGhpcywicGxhdGZvcm0iLHtpc01hYzohMSxpc1dpbmRvd3M6ITEsaXNGaXJlZm94OiExfSl9c3RhdGljIGdldCBpc0NTU1JvdW5kU3VwcG9ydGVkKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJpc0NTU1JvdW5kU3VwcG9ydGVkIixnbG9iYWxUaGlzLkNTUz8uc3VwcG9ydHM/Ligid2lkdGg6IHJvdW5kKDEuNXB4LCAxcHgpIikpfX1jb25zdCBDdD1BcnJheS5mcm9tKEFycmF5KDI1Nikua2V5cygpLChlPT5lLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCIwIikpKTtjbGFzcyBVdGlse3N0YXRpYyBtYWtlSGV4Q29sb3IoZSx0LGkpe3JldHVybmAjJHtDdFtlXX0ke0N0W3RdfSR7Q3RbaV19YH1zdGF0aWMgc2NhbGVNaW5NYXgoZSx0KXtsZXQgaTtpZihlWzBdKXtpZihlWzBdPDApe2k9dFswXTt0WzBdPXRbMl07dFsyXT1pfXRbMF0qPWVbMF07dFsyXSo9ZVswXTtpZihlWzNdPDApe2k9dFsxXTt0WzFdPXRbM107dFszXT1pfXRbMV0qPWVbM107dFszXSo9ZVszXX1lbHNle2k9dFswXTt0WzBdPXRbMV07dFsxXT1pO2k9dFsyXTt0WzJdPXRbM107dFszXT1pO2lmKGVbMV08MCl7aT10WzFdO3RbMV09dFszXTt0WzNdPWl9dFsxXSo9ZVsxXTt0WzNdKj1lWzFdO2lmKGVbMl08MCl7aT10WzBdO3RbMF09dFsyXTt0WzJdPWl9dFswXSo9ZVsyXTt0WzJdKj1lWzJdfXRbMF0rPWVbNF07dFsxXSs9ZVs1XTt0WzJdKz1lWzRdO3RbM10rPWVbNV19c3RhdGljIHRyYW5zZm9ybShlLHQpe3JldHVybltlWzBdKnRbMF0rZVsyXSp0WzFdLGVbMV0qdFswXStlWzNdKnRbMV0sZVswXSp0WzJdK2VbMl0qdFszXSxlWzFdKnRbMl0rZVszXSp0WzNdLGVbMF0qdFs0XStlWzJdKnRbNV0rZVs0XSxlWzFdKnRbNF0rZVszXSp0WzVdK2VbNV1dfXN0YXRpYyBhcHBseVRyYW5zZm9ybShlLHQpe3JldHVybltlWzBdKnRbMF0rZVsxXSp0WzJdK3RbNF0sZVswXSp0WzFdK2VbMV0qdFszXSt0WzVdXX1zdGF0aWMgYXBwbHlJbnZlcnNlVHJhbnNmb3JtKGUsdCl7Y29uc3QgaT10WzBdKnRbM10tdFsxXSp0WzJdO3JldHVyblsoZVswXSp0WzNdLWVbMV0qdFsyXSt0WzJdKnRbNV0tdFs0XSp0WzNdKS9pLCgtZVswXSp0WzFdK2VbMV0qdFswXSt0WzRdKnRbMV0tdFs1XSp0WzBdKS9pXX1zdGF0aWMgZ2V0QXhpYWxBbGlnbmVkQm91bmRpbmdCb3goZSx0KXtjb25zdCBpPXRoaXMuYXBwbHlUcmFuc2Zvcm0oZSx0KSxhPXRoaXMuYXBwbHlUcmFuc2Zvcm0oZS5zbGljZSgyLDQpLHQpLHI9dGhpcy5hcHBseVRyYW5zZm9ybShbZVswXSxlWzNdXSx0KSxzPXRoaXMuYXBwbHlUcmFuc2Zvcm0oW2VbMl0sZVsxXV0sdCk7cmV0dXJuW01hdGgubWluKGlbMF0sYVswXSxyWzBdLHNbMF0pLE1hdGgubWluKGlbMV0sYVsxXSxyWzFdLHNbMV0pLE1hdGgubWF4KGlbMF0sYVswXSxyWzBdLHNbMF0pLE1hdGgubWF4KGlbMV0sYVsxXSxyWzFdLHNbMV0pXX1zdGF0aWMgaW52ZXJzZVRyYW5zZm9ybShlKXtjb25zdCB0PWVbMF0qZVszXS1lWzFdKmVbMl07cmV0dXJuW2VbM10vdCwtZVsxXS90LC1lWzJdL3QsZVswXS90LChlWzJdKmVbNV0tZVs0XSplWzNdKS90LChlWzRdKmVbMV0tZVs1XSplWzBdKS90XX1zdGF0aWMgc2luZ3VsYXJWYWx1ZURlY29tcG9zZTJkU2NhbGUoZSl7Y29uc3QgdD1bZVswXSxlWzJdLGVbMV0sZVszXV0saT1lWzBdKnRbMF0rZVsxXSp0WzJdLGE9ZVswXSp0WzFdK2VbMV0qdFszXSxyPWVbMl0qdFswXStlWzNdKnRbMl0scz1lWzJdKnRbMV0rZVszXSp0WzNdLG49KGkrcykvMixvPU1hdGguc3FydCgoaStzKSoqMi00KihpKnMtciphKSkvMixnPW4rb3x8MSxjPW4tb3x8MTtyZXR1cm5bTWF0aC5zcXJ0KGcpLE1hdGguc3FydChjKV19c3RhdGljIG5vcm1hbGl6ZVJlY3QoZSl7Y29uc3QgdD1lLnNsaWNlKDApO2lmKGVbMF0+ZVsyXSl7dFswXT1lWzJdO3RbMl09ZVswXX1pZihlWzFdPmVbM10pe3RbMV09ZVszXTt0WzNdPWVbMV19cmV0dXJuIHR9c3RhdGljIGludGVyc2VjdChlLHQpe2NvbnN0IGk9TWF0aC5tYXgoTWF0aC5taW4oZVswXSxlWzJdKSxNYXRoLm1pbih0WzBdLHRbMl0pKSxhPU1hdGgubWluKE1hdGgubWF4KGVbMF0sZVsyXSksTWF0aC5tYXgodFswXSx0WzJdKSk7aWYoaT5hKXJldHVybiBudWxsO2NvbnN0IHI9TWF0aC5tYXgoTWF0aC5taW4oZVsxXSxlWzNdKSxNYXRoLm1pbih0WzFdLHRbM10pKSxzPU1hdGgubWluKE1hdGgubWF4KGVbMV0sZVszXSksTWF0aC5tYXgodFsxXSx0WzNdKSk7cmV0dXJuIHI+cz9udWxsOltpLHIsYSxzXX1zdGF0aWMjQShlLHQsaSxhLHIscyxuLG8sZyxjKXtpZihnPD0wfHxnPj0xKXJldHVybjtjb25zdCBDPTEtZyxoPWcqZyxsPWgqZyxRPUMqKEMqKEMqZSszKmcqdCkrMypoKmkpK2wqYSxFPUMqKEMqKEMqciszKmcqcykrMypoKm4pK2wqbztjWzBdPU1hdGgubWluKGNbMF0sUSk7Y1sxXT1NYXRoLm1pbihjWzFdLEUpO2NbMl09TWF0aC5tYXgoY1syXSxRKTtjWzNdPU1hdGgubWF4KGNbM10sRSl9c3RhdGljI2UoZSx0LGksYSxyLHMsbixvLGcsYyxDLGgpe2lmKE1hdGguYWJzKGcpPDFlLTEyKXtNYXRoLmFicyhjKT49MWUtMTImJnRoaXMuI0EoZSx0LGksYSxyLHMsbixvLC1DL2MsaCk7cmV0dXJufWNvbnN0IGw9YyoqMi00KkMqZztpZihsPDApcmV0dXJuO2NvbnN0IFE9TWF0aC5zcXJ0KGwpLEU9MipnO3RoaXMuI0EoZSx0LGksYSxyLHMsbixvLCgtYytRKS9FLGgpO3RoaXMuI0EoZSx0LGksYSxyLHMsbixvLCgtYy1RKS9FLGgpfXN0YXRpYyBiZXppZXJCb3VuZGluZ0JveChlLHQsaSxhLHIscyxuLG8sZyl7aWYoZyl7Z1swXT1NYXRoLm1pbihnWzBdLGUsbik7Z1sxXT1NYXRoLm1pbihnWzFdLHQsbyk7Z1syXT1NYXRoLm1heChnWzJdLGUsbik7Z1szXT1NYXRoLm1heChnWzNdLHQsbyl9ZWxzZSBnPVtNYXRoLm1pbihlLG4pLE1hdGgubWluKHQsbyksTWF0aC5tYXgoZSxuKSxNYXRoLm1heCh0LG8pXTt0aGlzLiNlKGUsaSxyLG4sdCxhLHMsbywzKigzKihpLXIpLWUrbiksNiooZS0yKmkrciksMyooaS1lKSxnKTt0aGlzLiNlKGUsaSxyLG4sdCxhLHMsbywzKigzKihhLXMpLXQrbyksNioodC0yKmErcyksMyooYS10KSxnKTtyZXR1cm4gZ319Y29uc3QgaHQ9WzAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDcyOCw3MTEsNzEwLDcyOSw3MzMsNzMxLDczMCw3MzIsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsODIyNiw4MjI0LDgyMjUsODIzMCw4MjEyLDgyMTEsNDAyLDgyNjAsODI0OSw4MjUwLDg3MjIsODI0MCw4MjIyLDgyMjAsODIyMSw4MjE2LDgyMTcsODIxOCw4NDgyLDY0MjU3LDY0MjU4LDMyMSwzMzgsMzUyLDM3NiwzODEsMzA1LDMyMiwzMzksMzUzLDM4MiwwLDgzNjRdO2Z1bmN0aW9uIHN0cmluZ1RvUERGU3RyaW5nKGUpe2lmKGVbMF0+PSLDryIpe2xldCB0O2lmKCLDviI9PT1lWzBdJiYiw78iPT09ZVsxXSl7dD0idXRmLTE2YmUiO2UubGVuZ3RoJTI9PTEmJihlPWUuc2xpY2UoMCwtMSkpfWVsc2UgaWYoIsO/Ij09PWVbMF0mJiLDviI9PT1lWzFdKXt0PSJ1dGYtMTZsZSI7ZS5sZW5ndGglMj09MSYmKGU9ZS5zbGljZSgwLC0xKSl9ZWxzZSLDryI9PT1lWzBdJiYiwrsiPT09ZVsxXSYmIsK/Ij09PWVbMl0mJih0PSJ1dGYtOCIpO2lmKHQpdHJ5e2NvbnN0IGk9bmV3IFRleHREZWNvZGVyKHQse2ZhdGFsOiEwfSksYT1zdHJpbmdUb0J5dGVzKGUpLHI9aS5kZWNvZGUoYSk7cmV0dXJuIHIuaW5jbHVkZXMoIhsiKT9yLnJlcGxhY2VBbGwoL1x4MWJbXlx4MWJdKig/Olx4MWJ8JCkvZywiIik6cn1jYXRjaChlKXt3YXJuKGBzdHJpbmdUb1BERlN0cmluZzogIiR7ZX0iLmApfX1jb25zdCB0PVtdO2ZvcihsZXQgaT0wLGE9ZS5sZW5ndGg7aTxhO2krKyl7Y29uc3Qgcj1lLmNoYXJDb2RlQXQoaSk7aWYoMjc9PT1yKXtmb3IoOysraTxhJiYyNyE9PWUuY2hhckNvZGVBdChpKTspO2NvbnRpbnVlfWNvbnN0IHM9aHRbcl07dC5wdXNoKHM/U3RyaW5nLmZyb21DaGFyQ29kZShzKTplLmNoYXJBdChpKSl9cmV0dXJuIHQuam9pbigiIil9ZnVuY3Rpb24gc3RyaW5nVG9VVEY4U3RyaW5nKGUpe3JldHVybiBkZWNvZGVVUklDb21wb25lbnQoZXNjYXBlKGUpKX1mdW5jdGlvbiB1dGY4U3RyaW5nVG9TdHJpbmcoZSl7cmV0dXJuIHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChlKSl9ZnVuY3Rpb24gaXNBcnJheUVxdWFsKGUsdCl7aWYoZS5sZW5ndGghPT10Lmxlbmd0aClyZXR1cm4hMTtmb3IobGV0IGk9MCxhPWUubGVuZ3RoO2k8YTtpKyspaWYoZVtpXSE9PXRbaV0pcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gZ2V0TW9kaWZpY2F0aW9uRGF0ZShlPW5ldyBEYXRlKXtyZXR1cm5bZS5nZXRVVENGdWxsWWVhcigpLnRvU3RyaW5nKCksKGUuZ2V0VVRDTW9udGgoKSsxKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKSxlLmdldFVUQ0RhdGUoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKSxlLmdldFVUQ0hvdXJzKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIiksZS5nZXRVVENNaW51dGVzKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIiksZS5nZXRVVENTZWNvbmRzKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIildLmpvaW4oIiIpfWxldCBsdD1udWxsLEJ0PW51bGw7Y29uc3QgUXQ9MCxFdD0xLHV0PTIsZHQ9MyxmdD00LHB0PTUsbXQ9Nix5dD03LHd0PTg7X193ZWJwYWNrX3JlcXVpcmVfXygzMjE1KTtjb25zdCBidD1TeW1ib2woIkNJUkNVTEFSX1JFRiIpLER0PVN5bWJvbCgiRU9GIik7bGV0IEZ0PU9iamVjdC5jcmVhdGUobnVsbCksU3Q9T2JqZWN0LmNyZWF0ZShudWxsKSxrdD1PYmplY3QuY3JlYXRlKG51bGwpO2NsYXNzIE5hbWV7Y29uc3RydWN0b3IoZSl7dGhpcy5uYW1lPWV9c3RhdGljIGdldChlKXtyZXR1cm4gU3RbZV18fD1uZXcgTmFtZShlKX19Y2xhc3MgQ21ke2NvbnN0cnVjdG9yKGUpe3RoaXMuY21kPWV9c3RhdGljIGdldChlKXtyZXR1cm4gRnRbZV18fD1uZXcgQ21kKGUpfX1jb25zdCBSdD1mdW5jdGlvbiBub25TZXJpYWxpemFibGVDbG9zdXJlKCl7cmV0dXJuIFJ0fTtjbGFzcyBEaWN0e2NvbnN0cnVjdG9yKGU9bnVsbCl7dGhpcy5fbWFwPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy54cmVmPWU7dGhpcy5vYmpJZD1udWxsO3RoaXMuc3VwcHJlc3NFbmNyeXB0aW9uPSExO3RoaXMuX19ub25TZXJpYWxpemFibGVfXz1SdH1hc3NpZ25YcmVmKGUpe3RoaXMueHJlZj1lfWdldCBzaXplKCl7cmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuX21hcCkubGVuZ3RofWdldChlLHQsaSl7bGV0IGE9dGhpcy5fbWFwW2VdO2lmKHZvaWQgMD09PWEmJnZvaWQgMCE9PXQpe2E9dGhpcy5fbWFwW3RdO3ZvaWQgMD09PWEmJnZvaWQgMCE9PWkmJihhPXRoaXMuX21hcFtpXSl9cmV0dXJuIGEgaW5zdGFuY2VvZiBSZWYmJnRoaXMueHJlZj90aGlzLnhyZWYuZmV0Y2goYSx0aGlzLnN1cHByZXNzRW5jcnlwdGlvbik6YX1hc3luYyBnZXRBc3luYyhlLHQsaSl7bGV0IGE9dGhpcy5fbWFwW2VdO2lmKHZvaWQgMD09PWEmJnZvaWQgMCE9PXQpe2E9dGhpcy5fbWFwW3RdO3ZvaWQgMD09PWEmJnZvaWQgMCE9PWkmJihhPXRoaXMuX21hcFtpXSl9cmV0dXJuIGEgaW5zdGFuY2VvZiBSZWYmJnRoaXMueHJlZj90aGlzLnhyZWYuZmV0Y2hBc3luYyhhLHRoaXMuc3VwcHJlc3NFbmNyeXB0aW9uKTphfWdldEFycmF5KGUsdCxpKXtsZXQgYT10aGlzLl9tYXBbZV07aWYodm9pZCAwPT09YSYmdm9pZCAwIT09dCl7YT10aGlzLl9tYXBbdF07dm9pZCAwPT09YSYmdm9pZCAwIT09aSYmKGE9dGhpcy5fbWFwW2ldKX1hIGluc3RhbmNlb2YgUmVmJiZ0aGlzLnhyZWYmJihhPXRoaXMueHJlZi5mZXRjaChhLHRoaXMuc3VwcHJlc3NFbmNyeXB0aW9uKSk7aWYoQXJyYXkuaXNBcnJheShhKSl7YT1hLnNsaWNlKCk7Zm9yKGxldCBlPTAsdD1hLmxlbmd0aDtlPHQ7ZSsrKWFbZV1pbnN0YW5jZW9mIFJlZiYmdGhpcy54cmVmJiYoYVtlXT10aGlzLnhyZWYuZmV0Y2goYVtlXSx0aGlzLnN1cHByZXNzRW5jcnlwdGlvbikpfXJldHVybiBhfWdldFJhdyhlKXtyZXR1cm4gdGhpcy5fbWFwW2VdfWdldEtleXMoKXtyZXR1cm4gT2JqZWN0LmtleXModGhpcy5fbWFwKX1nZXRSYXdWYWx1ZXMoKXtyZXR1cm4gT2JqZWN0LnZhbHVlcyh0aGlzLl9tYXApfXNldChlLHQpe3RoaXMuX21hcFtlXT10fWhhcyhlKXtyZXR1cm4gdm9pZCAwIT09dGhpcy5fbWFwW2VdfWZvckVhY2goZSl7Zm9yKGNvbnN0IHQgaW4gdGhpcy5fbWFwKWUodCx0aGlzLmdldCh0KSl9c3RhdGljIGdldCBlbXB0eSgpe2NvbnN0IGU9bmV3IERpY3QobnVsbCk7ZS5zZXQ9KGUsdCk9Pnt1bnJlYWNoYWJsZSgiU2hvdWxkIG5vdCBjYWxsIGBzZXRgIG9uIHRoZSBlbXB0eSBkaWN0aW9uYXJ5LiIpfTtyZXR1cm4gc2hhZG93KHRoaXMsImVtcHR5IixlKX1zdGF0aWMgbWVyZ2Uoe3hyZWY6ZSxkaWN0QXJyYXk6dCxtZXJnZVN1YkRpY3RzOmk9ITF9KXtjb25zdCBhPW5ldyBEaWN0KGUpLHI9bmV3IE1hcDtmb3IoY29uc3QgZSBvZiB0KWlmKGUgaW5zdGFuY2VvZiBEaWN0KWZvcihjb25zdFt0LGFdb2YgT2JqZWN0LmVudHJpZXMoZS5fbWFwKSl7bGV0IGU9ci5nZXQodCk7aWYodm9pZCAwPT09ZSl7ZT1bXTtyLnNldCh0LGUpfWVsc2UgaWYoIShpJiZhIGluc3RhbmNlb2YgRGljdCkpY29udGludWU7ZS5wdXNoKGEpfWZvcihjb25zdFt0LGldb2Ygcil7aWYoMT09PWkubGVuZ3RofHwhKGlbMF1pbnN0YW5jZW9mIERpY3QpKXthLl9tYXBbdF09aVswXTtjb250aW51ZX1jb25zdCByPW5ldyBEaWN0KGUpO2Zvcihjb25zdCBlIG9mIGkpZm9yKGNvbnN0W3QsaV1vZiBPYmplY3QuZW50cmllcyhlLl9tYXApKXZvaWQgMD09PXIuX21hcFt0XSYmKHIuX21hcFt0XT1pKTtyLnNpemU+MCYmKGEuX21hcFt0XT1yKX1yLmNsZWFyKCk7cmV0dXJuIGEuc2l6ZT4wP2E6RGljdC5lbXB0eX1jbG9uZSgpe2NvbnN0IGU9bmV3IERpY3QodGhpcy54cmVmKTtmb3IoY29uc3QgdCBvZiB0aGlzLmdldEtleXMoKSllLnNldCh0LHRoaXMuZ2V0UmF3KHQpKTtyZXR1cm4gZX1kZWxldGUoZSl7ZGVsZXRlIHRoaXMuX21hcFtlXX19Y2xhc3MgUmVme2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5udW09ZTt0aGlzLmdlbj10fXRvU3RyaW5nKCl7cmV0dXJuIDA9PT10aGlzLmdlbj9gJHt0aGlzLm51bX1SYDpgJHt0aGlzLm51bX1SJHt0aGlzLmdlbn1gfXN0YXRpYyBmcm9tU3RyaW5nKGUpe2NvbnN0IHQ9a3RbZV07aWYodClyZXR1cm4gdDtjb25zdCBpPS9eKFxkKylSKFxkKikkLy5leGVjKGUpO3JldHVybiBpJiYiMCIhPT1pWzFdP2t0W2VdPW5ldyBSZWYocGFyc2VJbnQoaVsxXSksaVsyXT9wYXJzZUludChpWzJdKTowKTpudWxsfXN0YXRpYyBnZXQoZSx0KXtjb25zdCBpPTA9PT10P2Ake2V9UmA6YCR7ZX1SJHt0fWA7cmV0dXJuIGt0W2ldfHw9bmV3IFJlZihlLHQpfX1jbGFzcyBSZWZTZXR7Y29uc3RydWN0b3IoZT1udWxsKXt0aGlzLl9zZXQ9bmV3IFNldChlPy5fc2V0KX1oYXMoZSl7cmV0dXJuIHRoaXMuX3NldC5oYXMoZS50b1N0cmluZygpKX1wdXQoZSl7dGhpcy5fc2V0LmFkZChlLnRvU3RyaW5nKCkpfXJlbW92ZShlKXt0aGlzLl9zZXQuZGVsZXRlKGUudG9TdHJpbmcoKSl9W1N5bWJvbC5pdGVyYXRvcl0oKXtyZXR1cm4gdGhpcy5fc2V0LnZhbHVlcygpfWNsZWFyKCl7dGhpcy5fc2V0LmNsZWFyKCl9fWNsYXNzIFJlZlNldENhY2hle2NvbnN0cnVjdG9yKCl7dGhpcy5fbWFwPW5ldyBNYXB9Z2V0IHNpemUoKXtyZXR1cm4gdGhpcy5fbWFwLnNpemV9Z2V0KGUpe3JldHVybiB0aGlzLl9tYXAuZ2V0KGUudG9TdHJpbmcoKSl9aGFzKGUpe3JldHVybiB0aGlzLl9tYXAuaGFzKGUudG9TdHJpbmcoKSl9cHV0KGUsdCl7dGhpcy5fbWFwLnNldChlLnRvU3RyaW5nKCksdCl9cHV0QWxpYXMoZSx0KXt0aGlzLl9tYXAuc2V0KGUudG9TdHJpbmcoKSx0aGlzLmdldCh0KSl9W1N5bWJvbC5pdGVyYXRvcl0oKXtyZXR1cm4gdGhpcy5fbWFwLnZhbHVlcygpfWNsZWFyKCl7dGhpcy5fbWFwLmNsZWFyKCl9Kml0ZW1zKCl7Zm9yKGNvbnN0W2UsdF1vZiB0aGlzLl9tYXApeWllbGRbUmVmLmZyb21TdHJpbmcoZSksdF19fWZ1bmN0aW9uIGlzTmFtZShlLHQpe3JldHVybiBlIGluc3RhbmNlb2YgTmFtZSYmKHZvaWQgMD09PXR8fGUubmFtZT09PXQpfWZ1bmN0aW9uIGlzQ21kKGUsdCl7cmV0dXJuIGUgaW5zdGFuY2VvZiBDbWQmJih2b2lkIDA9PT10fHxlLmNtZD09PXQpfWZ1bmN0aW9uIGlzRGljdChlLHQpe3JldHVybiBlIGluc3RhbmNlb2YgRGljdCYmKHZvaWQgMD09PXR8fGlzTmFtZShlLmdldCgiVHlwZSIpLHQpKX1mdW5jdGlvbiBpc1JlZnNFcXVhbChlLHQpe3JldHVybiBlLm51bT09PXQubnVtJiZlLmdlbj09PXQuZ2VufWNsYXNzIEJhc2VTdHJlYW17Z2V0IGxlbmd0aCgpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBnZXR0ZXIgYGxlbmd0aGAgYWNjZXNzZWQiKX1nZXQgaXNFbXB0eSgpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBnZXR0ZXIgYGlzRW1wdHlgIGFjY2Vzc2VkIil9Z2V0IGlzRGF0YUxvYWRlZCgpe3JldHVybiBzaGFkb3codGhpcywiaXNEYXRhTG9hZGVkIiwhMCl9Z2V0Qnl0ZSgpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYGdldEJ5dGVgIGNhbGxlZCIpfWdldEJ5dGVzKGUpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYGdldEJ5dGVzYCBjYWxsZWQiKX1hc3luYyBnZXRJbWFnZURhdGEoZSx0KXtyZXR1cm4gdGhpcy5nZXRCeXRlcyhlLHQpfWFzeW5jIGFzeW5jR2V0Qnl0ZXMoKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGBhc3luY0dldEJ5dGVzYCBjYWxsZWQiKX1nZXQgaXNBc3luYygpe3JldHVybiExfWdldCBjYW5Bc3luY0RlY29kZUltYWdlRnJvbUJ1ZmZlcigpe3JldHVybiExfXBlZWtCeXRlKCl7Y29uc3QgZT10aGlzLmdldEJ5dGUoKTstMSE9PWUmJnRoaXMucG9zLS07cmV0dXJuIGV9cGVla0J5dGVzKGUpe2NvbnN0IHQ9dGhpcy5nZXRCeXRlcyhlKTt0aGlzLnBvcy09dC5sZW5ndGg7cmV0dXJuIHR9Z2V0VWludDE2KCl7Y29uc3QgZT10aGlzLmdldEJ5dGUoKSx0PXRoaXMuZ2V0Qnl0ZSgpO3JldHVybi0xPT09ZXx8LTE9PT10Py0xOihlPDw4KSt0fWdldEludDMyKCl7cmV0dXJuKHRoaXMuZ2V0Qnl0ZSgpPDwyNCkrKHRoaXMuZ2V0Qnl0ZSgpPDwxNikrKHRoaXMuZ2V0Qnl0ZSgpPDw4KSt0aGlzLmdldEJ5dGUoKX1nZXRCeXRlUmFuZ2UoZSx0KXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGBnZXRCeXRlUmFuZ2VgIGNhbGxlZCIpfWdldFN0cmluZyhlKXtyZXR1cm4gYnl0ZXNUb1N0cmluZyh0aGlzLmdldEJ5dGVzKGUpKX1za2lwKGUpe3RoaXMucG9zKz1lfHwxfXJlc2V0KCl7dW5yZWFjaGFibGUoIkFic3RyYWN0IG1ldGhvZCBgcmVzZXRgIGNhbGxlZCIpfW1vdmVTdGFydCgpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYG1vdmVTdGFydGAgY2FsbGVkIil9bWFrZVN1YlN0cmVhbShlLHQsaT1udWxsKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGBtYWtlU3ViU3RyZWFtYCBjYWxsZWQiKX1nZXRCYXNlU3RyZWFtcygpe3JldHVybiBudWxsfX1jb25zdCBOdD0vXlsxLTldXC5cZCQvO2Z1bmN0aW9uIGdldExvb2t1cFRhYmxlRmFjdG9yeShlKXtsZXQgdDtyZXR1cm4gZnVuY3Rpb24oKXtpZihlKXt0PU9iamVjdC5jcmVhdGUobnVsbCk7ZSh0KTtlPW51bGx9cmV0dXJuIHR9fWNsYXNzIE1pc3NpbmdEYXRhRXhjZXB0aW9uIGV4dGVuZHMgY3R7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihgTWlzc2luZyBkYXRhIFske2V9LCAke3R9KWAsIk1pc3NpbmdEYXRhRXhjZXB0aW9uIik7dGhpcy5iZWdpbj1lO3RoaXMuZW5kPXR9fWNsYXNzIFBhcnNlckVPRkV4Y2VwdGlvbiBleHRlbmRzIGN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIlBhcnNlckVPRkV4Y2VwdGlvbiIpfX1jbGFzcyBYUmVmRW50cnlFeGNlcHRpb24gZXh0ZW5kcyBjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJYUmVmRW50cnlFeGNlcHRpb24iKX19Y2xhc3MgWFJlZlBhcnNlRXhjZXB0aW9uIGV4dGVuZHMgY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiWFJlZlBhcnNlRXhjZXB0aW9uIil9fWZ1bmN0aW9uIGFycmF5QnVmZmVyc1RvQnl0ZXMoZSl7Y29uc3QgdD1lLmxlbmd0aDtpZigwPT09dClyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoMCk7aWYoMT09PXQpcmV0dXJuIG5ldyBVaW50OEFycmF5KGVbMF0pO2xldCBpPTA7Zm9yKGxldCBhPTA7YTx0O2ErKylpKz1lW2FdLmJ5dGVMZW5ndGg7Y29uc3QgYT1uZXcgVWludDhBcnJheShpKTtsZXQgcj0wO2ZvcihsZXQgaT0wO2k8dDtpKyspe2NvbnN0IHQ9bmV3IFVpbnQ4QXJyYXkoZVtpXSk7YS5zZXQodCxyKTtyKz10LmJ5dGVMZW5ndGh9cmV0dXJuIGF9ZnVuY3Rpb24gZ2V0SW5oZXJpdGFibGVQcm9wZXJ0eSh7ZGljdDplLGtleTp0LGdldEFycmF5Omk9ITEsc3RvcFdoZW5Gb3VuZDphPSEwfSl7bGV0IHI7Y29uc3Qgcz1uZXcgUmVmU2V0O2Zvcig7ZSBpbnN0YW5jZW9mIERpY3QmJighZS5vYmpJZHx8IXMuaGFzKGUub2JqSWQpKTspe2Uub2JqSWQmJnMucHV0KGUub2JqSWQpO2NvbnN0IG49aT9lLmdldEFycmF5KHQpOmUuZ2V0KHQpO2lmKHZvaWQgMCE9PW4pe2lmKGEpcmV0dXJuIG47KHJ8fD1bXSkucHVzaChuKX1lPWUuZ2V0KCJQYXJlbnQiKX1yZXR1cm4gcn1jb25zdCBHdD1bIiIsIkMiLCJDQyIsIkNDQyIsIkNEIiwiRCIsIkRDIiwiRENDIiwiRENDQyIsIkNNIiwiIiwiWCIsIlhYIiwiWFhYIiwiWEwiLCJMIiwiTFgiLCJMWFgiLCJMWFhYIiwiWEMiLCIiLCJJIiwiSUkiLCJJSUkiLCJJViIsIlYiLCJWSSIsIlZJSSIsIlZJSUkiLCJJWCJdO2Z1bmN0aW9uIHRvUm9tYW5OdW1lcmFscyhlLHQ9ITEpe2Fzc2VydChOdW1iZXIuaXNJbnRlZ2VyKGUpJiZlPjAsIlRoZSBudW1iZXIgc2hvdWxkIGJlIGEgcG9zaXRpdmUgaW50ZWdlci4iKTtjb25zdCBpPVtdO2xldCBhO2Zvcig7ZT49MWUzOyl7ZS09MWUzO2kucHVzaCgiTSIpfWE9ZS8xMDB8MDtlJT0xMDA7aS5wdXNoKEd0W2FdKTthPWUvMTB8MDtlJT0xMDtpLnB1c2goR3RbMTArYV0pO2kucHVzaChHdFsyMCtlXSk7Y29uc3Qgcj1pLmpvaW4oIiIpO3JldHVybiB0P3IudG9Mb3dlckNhc2UoKTpyfWZ1bmN0aW9uIGxvZzIoZSl7cmV0dXJuIGU8PTA/MDpNYXRoLmNlaWwoTWF0aC5sb2cyKGUpKX1mdW5jdGlvbiByZWFkSW50OChlLHQpe3JldHVybiBlW3RdPDwyND4+MjR9ZnVuY3Rpb24gcmVhZFVpbnQxNihlLHQpe3JldHVybiBlW3RdPDw4fGVbdCsxXX1mdW5jdGlvbiByZWFkVWludDMyKGUsdCl7cmV0dXJuKGVbdF08PDI0fGVbdCsxXTw8MTZ8ZVt0KzJdPDw4fGVbdCszXSk+Pj4wfWZ1bmN0aW9uIGlzV2hpdGVTcGFjZShlKXtyZXR1cm4gMzI9PT1lfHw5PT09ZXx8MTM9PT1lfHwxMD09PWV9ZnVuY3Rpb24gaXNOdW1iZXJBcnJheShlLHQpe3JldHVybiBBcnJheS5pc0FycmF5KGUpPyhudWxsPT09dHx8ZS5sZW5ndGg9PT10KSYmZS5ldmVyeSgoZT0+Im51bWJlciI9PXR5cGVvZiBlKSk6QXJyYXlCdWZmZXIuaXNWaWV3KGUpJiYoMD09PWUubGVuZ3RofHwibnVtYmVyIj09dHlwZW9mIGVbMF0pJiYobnVsbD09PXR8fGUubGVuZ3RoPT09dCl9ZnVuY3Rpb24gbG9va3VwTWF0cml4KGUsdCl7cmV0dXJuIGlzTnVtYmVyQXJyYXkoZSw2KT9lOnR9ZnVuY3Rpb24gbG9va3VwUmVjdChlLHQpe3JldHVybiBpc051bWJlckFycmF5KGUsNCk/ZTp0fWZ1bmN0aW9uIGxvb2t1cE5vcm1hbFJlY3QoZSx0KXtyZXR1cm4gaXNOdW1iZXJBcnJheShlLDQpP1V0aWwubm9ybWFsaXplUmVjdChlKTp0fWZ1bmN0aW9uIHBhcnNlWEZBUGF0aChlKXtjb25zdCB0PS8oLispXFsoXGQrKVxdJC87cmV0dXJuIGUuc3BsaXQoIi4iKS5tYXAoKGU9Pntjb25zdCBpPWUubWF0Y2godCk7cmV0dXJuIGk/e25hbWU6aVsxXSxwb3M6cGFyc2VJbnQoaVsyXSwxMCl9OntuYW1lOmUscG9zOjB9fSkpfWZ1bmN0aW9uIGVzY2FwZVBERk5hbWUoZSl7Y29uc3QgdD1bXTtsZXQgaT0wO2ZvcihsZXQgYT0wLHI9ZS5sZW5ndGg7YTxyO2ErKyl7Y29uc3Qgcj1lLmNoYXJDb2RlQXQoYSk7aWYocjwzM3x8cj4xMjZ8fDM1PT09cnx8NDA9PT1yfHw0MT09PXJ8fDYwPT09cnx8NjI9PT1yfHw5MT09PXJ8fDkzPT09cnx8MTIzPT09cnx8MTI1PT09cnx8NDc9PT1yfHwzNz09PXIpe2k8YSYmdC5wdXNoKGUuc3Vic3RyaW5nKGksYSkpO3QucHVzaChgIyR7ci50b1N0cmluZygxNil9YCk7aT1hKzF9fWlmKDA9PT10Lmxlbmd0aClyZXR1cm4gZTtpPGUubGVuZ3RoJiZ0LnB1c2goZS5zdWJzdHJpbmcoaSxlLmxlbmd0aCkpO3JldHVybiB0LmpvaW4oIiIpfWZ1bmN0aW9uIGVzY2FwZVN0cmluZyhlKXtyZXR1cm4gZS5yZXBsYWNlQWxsKC8oWygpXFxcblxyXSkvZywoZT0+IlxuIj09PWU/IlxcbiI6IlxyIj09PWU/IlxcciI6YFxcJHtlfWApKX1mdW5jdGlvbiBfY29sbGVjdEpTKGUsdCxpLGEpe2lmKCFlKXJldHVybjtsZXQgcj1udWxsO2lmKGUgaW5zdGFuY2VvZiBSZWYpe2lmKGEuaGFzKGUpKXJldHVybjtyPWU7YS5wdXQocik7ZT10LmZldGNoKGUpfWlmKEFycmF5LmlzQXJyYXkoZSkpZm9yKGNvbnN0IHIgb2YgZSlfY29sbGVjdEpTKHIsdCxpLGEpO2Vsc2UgaWYoZSBpbnN0YW5jZW9mIERpY3Qpe2lmKGlzTmFtZShlLmdldCgiUyIpLCJKYXZhU2NyaXB0Iikpe2NvbnN0IHQ9ZS5nZXQoIkpTIik7bGV0IGE7dCBpbnN0YW5jZW9mIEJhc2VTdHJlYW0/YT10LmdldFN0cmluZygpOiJzdHJpbmciPT10eXBlb2YgdCYmKGE9dCk7YSYmPXN0cmluZ1RvUERGU3RyaW5nKGEpLnJlcGxhY2VBbGwoIlwwIiwiIik7YSYmaS5wdXNoKGEpfV9jb2xsZWN0SlMoZS5nZXRSYXcoIk5leHQiKSx0LGksYSl9ciYmYS5yZW1vdmUocil9ZnVuY3Rpb24gY29sbGVjdEFjdGlvbnMoZSx0LGkpe2NvbnN0IGE9T2JqZWN0LmNyZWF0ZShudWxsKSxyPWdldEluaGVyaXRhYmxlUHJvcGVydHkoe2RpY3Q6dCxrZXk6IkFBIixzdG9wV2hlbkZvdW5kOiExfSk7aWYocilmb3IobGV0IHQ9ci5sZW5ndGgtMTt0Pj0wO3QtLSl7Y29uc3Qgcz1yW3RdO2lmKHMgaW5zdGFuY2VvZiBEaWN0KWZvcihjb25zdCB0IG9mIHMuZ2V0S2V5cygpKXtjb25zdCByPWlbdF07aWYoIXIpY29udGludWU7Y29uc3Qgbj1bXTtfY29sbGVjdEpTKHMuZ2V0UmF3KHQpLGUsbixuZXcgUmVmU2V0KTtuLmxlbmd0aD4wJiYoYVtyXT1uKX19aWYodC5oYXMoIkEiKSl7Y29uc3QgaT1bXTtfY29sbGVjdEpTKHQuZ2V0KCJBIiksZSxpLG5ldyBSZWZTZXQpO2kubGVuZ3RoPjAmJihhLkFjdGlvbj1pKX1yZXR1cm4gb2JqZWN0U2l6ZShhKT4wP2E6bnVsbH1jb25zdCB4dD17NjA6IiZsdDsiLDYyOiImZ3Q7IiwzODoiJmFtcDsiLDM0OiImcXVvdDsiLDM5OiImYXBvczsifTtmdW5jdGlvbipjb2RlUG9pbnRJdGVyKGUpe2ZvcihsZXQgdD0wLGk9ZS5sZW5ndGg7dDxpO3QrKyl7Y29uc3QgaT1lLmNvZGVQb2ludEF0KHQpO2k+NTUyOTUmJihpPDU3MzQ0fHxpPjY1NTMzKSYmdCsrO3lpZWxkIGl9fWZ1bmN0aW9uIGVuY29kZVRvWG1sU3RyaW5nKGUpe2NvbnN0IHQ9W107bGV0IGk9MDtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKyspe2NvbnN0IHI9ZS5jb2RlUG9pbnRBdChhKTtpZigzMjw9ciYmcjw9MTI2KXtjb25zdCBzPXh0W3JdO2lmKHMpe2k8YSYmdC5wdXNoKGUuc3Vic3RyaW5nKGksYSkpO3QucHVzaChzKTtpPWErMX19ZWxzZXtpPGEmJnQucHVzaChlLnN1YnN0cmluZyhpLGEpKTt0LnB1c2goYCYjeCR7ci50b1N0cmluZygxNikudG9VcHBlckNhc2UoKX07YCk7cj41NTI5NSYmKHI8NTczNDR8fHI+NjU1MzMpJiZhKys7aT1hKzF9fWlmKDA9PT10Lmxlbmd0aClyZXR1cm4gZTtpPGUubGVuZ3RoJiZ0LnB1c2goZS5zdWJzdHJpbmcoaSxlLmxlbmd0aCkpO3JldHVybiB0LmpvaW4oIiIpfWZ1bmN0aW9uIHZhbGlkYXRlRm9udE5hbWUoZSx0PSExKXtjb25zdCBpPS9eKCJ8JykuKigifCcpJC8uZXhlYyhlKTtpZihpJiZpWzFdPT09aVsyXSl7aWYobmV3IFJlZ0V4cChgW15cXFxcXSR7aVsxXX1gKS50ZXN0KGUuc2xpY2UoMSwtMSkpKXt0JiZ3YXJuKGBGb250RmFtaWx5IGNvbnRhaW5zIHVuZXNjYXBlZCAke2lbMV19OiAke2V9LmApO3JldHVybiExfX1lbHNlIGZvcihjb25zdCBpIG9mIGUuc3BsaXQoL1sgXHRdKy8pKWlmKC9eKFxkfCgtKFxkfC0pKSkvLnRlc3QoaSl8fCEvXltcdy1cXF0rJC8udGVzdChpKSl7dCYmd2FybihgRm9udEZhbWlseSBjb250YWlucyBpbnZhbGlkIDxjdXN0b20taWRlbnQ+OiAke2V9LmApO3JldHVybiExfXJldHVybiEwfWZ1bmN0aW9uIHZhbGlkYXRlQ1NTRm9udChlKXtjb25zdCB0PW5ldyBTZXQoWyIxMDAiLCIyMDAiLCIzMDAiLCI0MDAiLCI1MDAiLCI2MDAiLCI3MDAiLCI4MDAiLCI5MDAiLCIxMDAwIiwibm9ybWFsIiwiYm9sZCIsImJvbGRlciIsImxpZ2h0ZXIiXSkse2ZvbnRGYW1pbHk6aSxmb250V2VpZ2h0OmEsaXRhbGljQW5nbGU6cn09ZTtpZighdmFsaWRhdGVGb250TmFtZShpLCEwKSlyZXR1cm4hMTtjb25zdCBzPWE/YS50b1N0cmluZygpOiIiO2UuZm9udFdlaWdodD10LmhhcyhzKT9zOiI0MDAiO2NvbnN0IG49cGFyc2VGbG9hdChyKTtlLml0YWxpY0FuZ2xlPWlzTmFOKG4pfHxuPC05MHx8bj45MD8iMTQiOnIudG9TdHJpbmcoKTtyZXR1cm4hMH1mdW5jdGlvbiByZWNvdmVySnNVUkwoZSl7Y29uc3QgdD1uZXcgUmVnRXhwKCJeXFxzKigiK1siYXBwLmxhdW5jaFVSTCIsIndpbmRvdy5vcGVuIiwieGZhLmhvc3QuZ290b1VSTCJdLmpvaW4oInwiKS5yZXBsYWNlQWxsKCIuIiwiXFwuIikrIilcXCgoPzonfFwiKShbXidcIl0qKSg/Oid8XCIpKD86LFxccyooXFx3KylcXCl8XFwpKSIsImkiKS5leGVjKGUpO2lmKHQ/LlsyXSl7Y29uc3QgZT10WzJdO2xldCBpPSExOyJ0cnVlIj09PXRbM10mJiJhcHAubGF1bmNoVVJMIj09PXRbMV0mJihpPSEwKTtyZXR1cm57dXJsOmUsbmV3V2luZG93Oml9fXJldHVybiBudWxsfWZ1bmN0aW9uIG51bWJlclRvU3RyaW5nKGUpe2lmKE51bWJlci5pc0ludGVnZXIoZSkpcmV0dXJuIGUudG9TdHJpbmcoKTtjb25zdCB0PU1hdGgucm91bmQoMTAwKmUpO3JldHVybiB0JTEwMD09MD8odC8xMDApLnRvU3RyaW5nKCk6dCUxMD09MD9lLnRvRml4ZWQoMSk6ZS50b0ZpeGVkKDIpfWZ1bmN0aW9uIGdldE5ld0Fubm90YXRpb25zTWFwKGUpe2lmKCFlKXJldHVybiBudWxsO2NvbnN0IHQ9bmV3IE1hcDtmb3IoY29uc3RbaSxhXW9mIGUpe2lmKCFpLnN0YXJ0c1dpdGgoZCkpY29udGludWU7bGV0IGU9dC5nZXQoYS5wYWdlSW5kZXgpO2lmKCFlKXtlPVtdO3Quc2V0KGEucGFnZUluZGV4LGUpfWUucHVzaChhKX1yZXR1cm4gdC5zaXplPjA/dDpudWxsfWZ1bmN0aW9uIHN0cmluZ1RvQXNjaWlPclVURjE2QkUoZSl7cmV0dXJuIGZ1bmN0aW9uIGlzQXNjaWkoZSl7cmV0dXJuL15bXHgwMC1ceDdGXSokLy50ZXN0KGUpfShlKT9lOnN0cmluZ1RvVVRGMTZTdHJpbmcoZSwhMCl9ZnVuY3Rpb24gc3RyaW5nVG9VVEYxNkhleFN0cmluZyhlKXtjb25zdCB0PVtdO2ZvcihsZXQgaT0wLGE9ZS5sZW5ndGg7aTxhO2krKyl7Y29uc3QgYT1lLmNoYXJDb2RlQXQoaSk7dC5wdXNoKChhPj44JjI1NSkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsIjAiKSwoMjU1JmEpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCIwIikpfXJldHVybiB0LmpvaW4oIiIpfWZ1bmN0aW9uIHN0cmluZ1RvVVRGMTZTdHJpbmcoZSx0PSExKXtjb25zdCBpPVtdO3QmJmkucHVzaCgiw77DvyIpO2ZvcihsZXQgdD0wLGE9ZS5sZW5ndGg7dDxhO3QrKyl7Y29uc3QgYT1lLmNoYXJDb2RlQXQodCk7aS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoYT4+OCYyNTUpLFN0cmluZy5mcm9tQ2hhckNvZGUoMjU1JmEpKX1yZXR1cm4gaS5qb2luKCIiKX1mdW5jdGlvbiBnZXRSb3RhdGlvbk1hdHJpeChlLHQsaSl7c3dpdGNoKGUpe2Nhc2UgOTA6cmV0dXJuWzAsMSwtMSwwLHQsMF07Y2FzZSAxODA6cmV0dXJuWy0xLDAsMCwtMSx0LGldO2Nhc2UgMjcwOnJldHVyblswLC0xLDEsMCwwLGldO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHJvdGF0aW9uIil9fWZ1bmN0aW9uIGdldFNpemVJbkJ5dGVzKGUpe3JldHVybiBNYXRoLmNlaWwoTWF0aC5jZWlsKE1hdGgubG9nMigxK2UpKS84KX1jbGFzcyBTdHJlYW0gZXh0ZW5kcyBCYXNlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCxpLGEpe3N1cGVyKCk7dGhpcy5ieXRlcz1lIGluc3RhbmNlb2YgVWludDhBcnJheT9lOm5ldyBVaW50OEFycmF5KGUpO3RoaXMuc3RhcnQ9dHx8MDt0aGlzLnBvcz10aGlzLnN0YXJ0O3RoaXMuZW5kPXQraXx8dGhpcy5ieXRlcy5sZW5ndGg7dGhpcy5kaWN0PWF9Z2V0IGxlbmd0aCgpe3JldHVybiB0aGlzLmVuZC10aGlzLnN0YXJ0fWdldCBpc0VtcHR5KCl7cmV0dXJuIDA9PT10aGlzLmxlbmd0aH1nZXRCeXRlKCl7cmV0dXJuIHRoaXMucG9zPj10aGlzLmVuZD8tMTp0aGlzLmJ5dGVzW3RoaXMucG9zKytdfWdldEJ5dGVzKGUpe2NvbnN0IHQ9dGhpcy5ieXRlcyxpPXRoaXMucG9zLGE9dGhpcy5lbmQ7aWYoIWUpcmV0dXJuIHQuc3ViYXJyYXkoaSxhKTtsZXQgcj1pK2U7cj5hJiYocj1hKTt0aGlzLnBvcz1yO3JldHVybiB0LnN1YmFycmF5KGkscil9Z2V0Qnl0ZVJhbmdlKGUsdCl7ZTwwJiYoZT0wKTt0PnRoaXMuZW5kJiYodD10aGlzLmVuZCk7cmV0dXJuIHRoaXMuYnl0ZXMuc3ViYXJyYXkoZSx0KX1yZXNldCgpe3RoaXMucG9zPXRoaXMuc3RhcnR9bW92ZVN0YXJ0KCl7dGhpcy5zdGFydD10aGlzLnBvc31tYWtlU3ViU3RyZWFtKGUsdCxpPW51bGwpe3JldHVybiBuZXcgU3RyZWFtKHRoaXMuYnl0ZXMuYnVmZmVyLGUsdCxpKX19Y2xhc3MgU3RyaW5nU3RyZWFtIGV4dGVuZHMgU3RyZWFte2NvbnN0cnVjdG9yKGUpe3N1cGVyKHN0cmluZ1RvQnl0ZXMoZSkpfX1jbGFzcyBOdWxsU3RyZWFtIGV4dGVuZHMgU3RyZWFte2NvbnN0cnVjdG9yKCl7c3VwZXIobmV3IFVpbnQ4QXJyYXkoMCkpfX1jbGFzcyBDaHVua2VkU3RyZWFtIGV4dGVuZHMgU3RyZWFte2NvbnN0cnVjdG9yKGUsdCxpKXtzdXBlcihuZXcgVWludDhBcnJheShlKSwwLGUsbnVsbCk7dGhpcy5jaHVua1NpemU9dDt0aGlzLl9sb2FkZWRDaHVua3M9bmV3IFNldDt0aGlzLm51bUNodW5rcz1NYXRoLmNlaWwoZS90KTt0aGlzLm1hbmFnZXI9aTt0aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aD0wO3RoaXMubGFzdFN1Y2Nlc3NmdWxFbnN1cmVCeXRlQ2h1bms9LTF9Z2V0TWlzc2luZ0NodW5rcygpe2NvbnN0IGU9W107Zm9yKGxldCB0PTAsaT10aGlzLm51bUNodW5rczt0PGk7Kyt0KXRoaXMuX2xvYWRlZENodW5rcy5oYXModCl8fGUucHVzaCh0KTtyZXR1cm4gZX1nZXQgbnVtQ2h1bmtzTG9hZGVkKCl7cmV0dXJuIHRoaXMuX2xvYWRlZENodW5rcy5zaXplfWdldCBpc0RhdGFMb2FkZWQoKXtyZXR1cm4gdGhpcy5udW1DaHVua3NMb2FkZWQ9PT10aGlzLm51bUNodW5rc31vblJlY2VpdmVEYXRhKGUsdCl7Y29uc3QgaT10aGlzLmNodW5rU2l6ZTtpZihlJWkhPTApdGhyb3cgbmV3IEVycm9yKGBCYWQgYmVnaW4gb2Zmc2V0OiAke2V9YCk7Y29uc3QgYT1lK3QuYnl0ZUxlbmd0aDtpZihhJWkhPTAmJmEhPT10aGlzLmJ5dGVzLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoYEJhZCBlbmQgb2Zmc2V0OiAke2F9YCk7dGhpcy5ieXRlcy5zZXQobmV3IFVpbnQ4QXJyYXkodCksZSk7Y29uc3Qgcj1NYXRoLmZsb29yKGUvaSkscz1NYXRoLmZsb29yKChhLTEpL2kpKzE7Zm9yKGxldCBlPXI7ZTxzOysrZSl0aGlzLl9sb2FkZWRDaHVua3MuYWRkKGUpfW9uUmVjZWl2ZVByb2dyZXNzaXZlRGF0YShlKXtsZXQgdD10aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aDtjb25zdCBpPU1hdGguZmxvb3IodC90aGlzLmNodW5rU2l6ZSk7dGhpcy5ieXRlcy5zZXQobmV3IFVpbnQ4QXJyYXkoZSksdCk7dCs9ZS5ieXRlTGVuZ3RoO3RoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoPXQ7Y29uc3QgYT10Pj10aGlzLmVuZD90aGlzLm51bUNodW5rczpNYXRoLmZsb29yKHQvdGhpcy5jaHVua1NpemUpO2ZvcihsZXQgZT1pO2U8YTsrK2UpdGhpcy5fbG9hZGVkQ2h1bmtzLmFkZChlKX1lbnN1cmVCeXRlKGUpe2lmKGU8dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGgpcmV0dXJuO2NvbnN0IHQ9TWF0aC5mbG9vcihlL3RoaXMuY2h1bmtTaXplKTtpZighKHQ+dGhpcy5udW1DaHVua3MpJiZ0IT09dGhpcy5sYXN0U3VjY2Vzc2Z1bEVuc3VyZUJ5dGVDaHVuayl7aWYoIXRoaXMuX2xvYWRlZENodW5rcy5oYXModCkpdGhyb3cgbmV3IE1pc3NpbmdEYXRhRXhjZXB0aW9uKGUsZSsxKTt0aGlzLmxhc3RTdWNjZXNzZnVsRW5zdXJlQnl0ZUNodW5rPXR9fWVuc3VyZVJhbmdlKGUsdCl7aWYoZT49dClyZXR1cm47aWYodDw9dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGgpcmV0dXJuO2NvbnN0IGk9TWF0aC5mbG9vcihlL3RoaXMuY2h1bmtTaXplKTtpZihpPnRoaXMubnVtQ2h1bmtzKXJldHVybjtjb25zdCBhPU1hdGgubWluKE1hdGguZmxvb3IoKHQtMSkvdGhpcy5jaHVua1NpemUpKzEsdGhpcy5udW1DaHVua3MpO2ZvcihsZXQgcj1pO3I8YTsrK3IpaWYoIXRoaXMuX2xvYWRlZENodW5rcy5oYXMocikpdGhyb3cgbmV3IE1pc3NpbmdEYXRhRXhjZXB0aW9uKGUsdCl9bmV4dEVtcHR5Q2h1bmsoZSl7Y29uc3QgdD10aGlzLm51bUNodW5rcztmb3IobGV0IGk9MDtpPHQ7KytpKXtjb25zdCBhPShlK2kpJXQ7aWYoIXRoaXMuX2xvYWRlZENodW5rcy5oYXMoYSkpcmV0dXJuIGF9cmV0dXJuIG51bGx9aGFzQ2h1bmsoZSl7cmV0dXJuIHRoaXMuX2xvYWRlZENodW5rcy5oYXMoZSl9Z2V0Qnl0ZSgpe2NvbnN0IGU9dGhpcy5wb3M7aWYoZT49dGhpcy5lbmQpcmV0dXJuLTE7ZT49dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGgmJnRoaXMuZW5zdXJlQnl0ZShlKTtyZXR1cm4gdGhpcy5ieXRlc1t0aGlzLnBvcysrXX1nZXRCeXRlcyhlKXtjb25zdCB0PXRoaXMuYnl0ZXMsaT10aGlzLnBvcyxhPXRoaXMuZW5kO2lmKCFlKXthPnRoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoJiZ0aGlzLmVuc3VyZVJhbmdlKGksYSk7cmV0dXJuIHQuc3ViYXJyYXkoaSxhKX1sZXQgcj1pK2U7cj5hJiYocj1hKTtyPnRoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoJiZ0aGlzLmVuc3VyZVJhbmdlKGkscik7dGhpcy5wb3M9cjtyZXR1cm4gdC5zdWJhcnJheShpLHIpfWdldEJ5dGVSYW5nZShlLHQpe2U8MCYmKGU9MCk7dD50aGlzLmVuZCYmKHQ9dGhpcy5lbmQpO3Q+dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGgmJnRoaXMuZW5zdXJlUmFuZ2UoZSx0KTtyZXR1cm4gdGhpcy5ieXRlcy5zdWJhcnJheShlLHQpfW1ha2VTdWJTdHJlYW0oZSx0LGk9bnVsbCl7dD9lK3Q+dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGgmJnRoaXMuZW5zdXJlUmFuZ2UoZSxlK3QpOmU+PXRoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoJiZ0aGlzLmVuc3VyZUJ5dGUoZSk7ZnVuY3Rpb24gQ2h1bmtlZFN0cmVhbVN1YnN0cmVhbSgpe31DaHVua2VkU3RyZWFtU3Vic3RyZWFtLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHRoaXMpO0NodW5rZWRTdHJlYW1TdWJzdHJlYW0ucHJvdG90eXBlLmdldE1pc3NpbmdDaHVua3M9ZnVuY3Rpb24oKXtjb25zdCBlPXRoaXMuY2h1bmtTaXplLHQ9TWF0aC5mbG9vcih0aGlzLnN0YXJ0L2UpLGk9TWF0aC5mbG9vcigodGhpcy5lbmQtMSkvZSkrMSxhPVtdO2ZvcihsZXQgZT10O2U8aTsrK2UpdGhpcy5fbG9hZGVkQ2h1bmtzLmhhcyhlKXx8YS5wdXNoKGUpO3JldHVybiBhfTtPYmplY3QuZGVmaW5lUHJvcGVydHkoQ2h1bmtlZFN0cmVhbVN1YnN0cmVhbS5wcm90b3R5cGUsImlzRGF0YUxvYWRlZCIse2dldCgpe3JldHVybiB0aGlzLm51bUNodW5rc0xvYWRlZD09PXRoaXMubnVtQ2h1bmtzfHwwPT09dGhpcy5nZXRNaXNzaW5nQ2h1bmtzKCkubGVuZ3RofSxjb25maWd1cmFibGU6ITB9KTtjb25zdCBhPW5ldyBDaHVua2VkU3RyZWFtU3Vic3RyZWFtO2EucG9zPWEuc3RhcnQ9ZTthLmVuZD1lK3R8fHRoaXMuZW5kO2EuZGljdD1pO3JldHVybiBhfWdldEJhc2VTdHJlYW1zKCl7cmV0dXJuW3RoaXNdfX1jbGFzcyBDaHVua2VkU3RyZWFtTWFuYWdlcntjb25zdHJ1Y3RvcihlLHQpe3RoaXMubGVuZ3RoPXQubGVuZ3RoO3RoaXMuY2h1bmtTaXplPXQucmFuZ2VDaHVua1NpemU7dGhpcy5zdHJlYW09bmV3IENodW5rZWRTdHJlYW0odGhpcy5sZW5ndGgsdGhpcy5jaHVua1NpemUsdGhpcyk7dGhpcy5wZGZOZXR3b3JrU3RyZWFtPWU7dGhpcy5kaXNhYmxlQXV0b0ZldGNoPXQuZGlzYWJsZUF1dG9GZXRjaDt0aGlzLm1zZ0hhbmRsZXI9dC5tc2dIYW5kbGVyO3RoaXMuY3VyclJlcXVlc3RJZD0wO3RoaXMuX2NodW5rc05lZWRlZEJ5UmVxdWVzdD1uZXcgTWFwO3RoaXMuX3JlcXVlc3RzQnlDaHVuaz1uZXcgTWFwO3RoaXMuX3Byb21pc2VzQnlSZXF1ZXN0PW5ldyBNYXA7dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGg9MDt0aGlzLmFib3J0ZWQ9ITE7dGhpcy5fbG9hZGVkU3RyZWFtQ2FwYWJpbGl0eT1Qcm9taXNlLndpdGhSZXNvbHZlcnMoKX1zZW5kUmVxdWVzdChlLHQpe2NvbnN0IGk9dGhpcy5wZGZOZXR3b3JrU3RyZWFtLmdldFJhbmdlUmVhZGVyKGUsdCk7aS5pc1N0cmVhbWluZ1N1cHBvcnRlZHx8KGkub25Qcm9ncmVzcz10aGlzLm9uUHJvZ3Jlc3MuYmluZCh0aGlzKSk7bGV0IGE9W10scj0wO3JldHVybiBuZXcgUHJvbWlzZSgoKGUsdCk9Pntjb25zdCByZWFkQ2h1bms9KHt2YWx1ZTpzLGRvbmU6bn0pPT57dHJ5e2lmKG4pe2NvbnN0IHQ9YXJyYXlCdWZmZXJzVG9CeXRlcyhhKTthPW51bGw7ZSh0KTtyZXR1cm59cis9cy5ieXRlTGVuZ3RoO2kuaXNTdHJlYW1pbmdTdXBwb3J0ZWQmJnRoaXMub25Qcm9ncmVzcyh7bG9hZGVkOnJ9KTthLnB1c2gocyk7aS5yZWFkKCkudGhlbihyZWFkQ2h1bmssdCl9Y2F0Y2goZSl7dChlKX19O2kucmVhZCgpLnRoZW4ocmVhZENodW5rLHQpfSkpLnRoZW4oKHQ9Pnt0aGlzLmFib3J0ZWR8fHRoaXMub25SZWNlaXZlRGF0YSh7Y2h1bms6dCxiZWdpbjplfSl9KSl9cmVxdWVzdEFsbENodW5rcyhlPSExKXtpZighZSl7Y29uc3QgZT10aGlzLnN0cmVhbS5nZXRNaXNzaW5nQ2h1bmtzKCk7dGhpcy5fcmVxdWVzdENodW5rcyhlKX1yZXR1cm4gdGhpcy5fbG9hZGVkU3RyZWFtQ2FwYWJpbGl0eS5wcm9taXNlfV9yZXF1ZXN0Q2h1bmtzKGUpe2NvbnN0IHQ9dGhpcy5jdXJyUmVxdWVzdElkKyssaT1uZXcgU2V0O3RoaXMuX2NodW5rc05lZWRlZEJ5UmVxdWVzdC5zZXQodCxpKTtmb3IoY29uc3QgdCBvZiBlKXRoaXMuc3RyZWFtLmhhc0NodW5rKHQpfHxpLmFkZCh0KTtpZigwPT09aS5zaXplKXJldHVybiBQcm9taXNlLnJlc29sdmUoKTtjb25zdCBhPVByb21pc2Uud2l0aFJlc29sdmVycygpO3RoaXMuX3Byb21pc2VzQnlSZXF1ZXN0LnNldCh0LGEpO2NvbnN0IHI9W107Zm9yKGNvbnN0IGUgb2YgaSl7bGV0IGk9dGhpcy5fcmVxdWVzdHNCeUNodW5rLmdldChlKTtpZighaSl7aT1bXTt0aGlzLl9yZXF1ZXN0c0J5Q2h1bmsuc2V0KGUsaSk7ci5wdXNoKGUpfWkucHVzaCh0KX1pZihyLmxlbmd0aD4wKXtjb25zdCBlPXRoaXMuZ3JvdXBDaHVua3Mocik7Zm9yKGNvbnN0IHQgb2YgZSl7Y29uc3QgZT10LmJlZ2luQ2h1bmsqdGhpcy5jaHVua1NpemUsaT1NYXRoLm1pbih0LmVuZENodW5rKnRoaXMuY2h1bmtTaXplLHRoaXMubGVuZ3RoKTt0aGlzLnNlbmRSZXF1ZXN0KGUsaSkuY2F0Y2goYS5yZWplY3QpfX1yZXR1cm4gYS5wcm9taXNlLmNhdGNoKChlPT57aWYoIXRoaXMuYWJvcnRlZCl0aHJvdyBlfSkpfWdldFN0cmVhbSgpe3JldHVybiB0aGlzLnN0cmVhbX1yZXF1ZXN0UmFuZ2UoZSx0KXt0PU1hdGgubWluKHQsdGhpcy5sZW5ndGgpO2NvbnN0IGk9dGhpcy5nZXRCZWdpbkNodW5rKGUpLGE9dGhpcy5nZXRFbmRDaHVuayh0KSxyPVtdO2ZvcihsZXQgZT1pO2U8YTsrK2Upci5wdXNoKGUpO3JldHVybiB0aGlzLl9yZXF1ZXN0Q2h1bmtzKHIpfXJlcXVlc3RSYW5nZXMoZT1bXSl7Y29uc3QgdD1bXTtmb3IoY29uc3QgaSBvZiBlKXtjb25zdCBlPXRoaXMuZ2V0QmVnaW5DaHVuayhpLmJlZ2luKSxhPXRoaXMuZ2V0RW5kQ2h1bmsoaS5lbmQpO2ZvcihsZXQgaT1lO2k8YTsrK2kpdC5pbmNsdWRlcyhpKXx8dC5wdXNoKGkpfXQuc29ydCgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS10fSkpO3JldHVybiB0aGlzLl9yZXF1ZXN0Q2h1bmtzKHQpfWdyb3VwQ2h1bmtzKGUpe2NvbnN0IHQ9W107bGV0IGk9LTEsYT0tMTtmb3IobGV0IHI9MCxzPWUubGVuZ3RoO3I8czsrK3Ipe2NvbnN0IHM9ZVtyXTtpPDAmJihpPXMpO2lmKGE+PTAmJmErMSE9PXMpe3QucHVzaCh7YmVnaW5DaHVuazppLGVuZENodW5rOmErMX0pO2k9c31yKzE9PT1lLmxlbmd0aCYmdC5wdXNoKHtiZWdpbkNodW5rOmksZW5kQ2h1bms6cysxfSk7YT1zfXJldHVybiB0fW9uUHJvZ3Jlc3MoZSl7dGhpcy5tc2dIYW5kbGVyLnNlbmQoIkRvY1Byb2dyZXNzIix7bG9hZGVkOnRoaXMuc3RyZWFtLm51bUNodW5rc0xvYWRlZCp0aGlzLmNodW5rU2l6ZStlLmxvYWRlZCx0b3RhbDp0aGlzLmxlbmd0aH0pfW9uUmVjZWl2ZURhdGEoZSl7Y29uc3QgdD1lLmNodW5rLGk9dm9pZCAwPT09ZS5iZWdpbixhPWk/dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGg6ZS5iZWdpbixyPWErdC5ieXRlTGVuZ3RoLHM9TWF0aC5mbG9vcihhL3RoaXMuY2h1bmtTaXplKSxuPXI8dGhpcy5sZW5ndGg/TWF0aC5mbG9vcihyL3RoaXMuY2h1bmtTaXplKTpNYXRoLmNlaWwoci90aGlzLmNodW5rU2l6ZSk7aWYoaSl7dGhpcy5zdHJlYW0ub25SZWNlaXZlUHJvZ3Jlc3NpdmVEYXRhKHQpO3RoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoPXJ9ZWxzZSB0aGlzLnN0cmVhbS5vblJlY2VpdmVEYXRhKGEsdCk7dGhpcy5zdHJlYW0uaXNEYXRhTG9hZGVkJiZ0aGlzLl9sb2FkZWRTdHJlYW1DYXBhYmlsaXR5LnJlc29sdmUodGhpcy5zdHJlYW0pO2NvbnN0IG89W107Zm9yKGxldCBlPXM7ZTxuOysrZSl7Y29uc3QgdD10aGlzLl9yZXF1ZXN0c0J5Q2h1bmsuZ2V0KGUpO2lmKHQpe3RoaXMuX3JlcXVlc3RzQnlDaHVuay5kZWxldGUoZSk7Zm9yKGNvbnN0IGkgb2YgdCl7Y29uc3QgdD10aGlzLl9jaHVua3NOZWVkZWRCeVJlcXVlc3QuZ2V0KGkpO3QuaGFzKGUpJiZ0LmRlbGV0ZShlKTt0LnNpemU+MHx8by5wdXNoKGkpfX19aWYoIXRoaXMuZGlzYWJsZUF1dG9GZXRjaCYmMD09PXRoaXMuX3JlcXVlc3RzQnlDaHVuay5zaXplKXtsZXQgZTtpZigxPT09dGhpcy5zdHJlYW0ubnVtQ2h1bmtzTG9hZGVkKXtjb25zdCB0PXRoaXMuc3RyZWFtLm51bUNodW5rcy0xO3RoaXMuc3RyZWFtLmhhc0NodW5rKHQpfHwoZT10KX1lbHNlIGU9dGhpcy5zdHJlYW0ubmV4dEVtcHR5Q2h1bmsobik7TnVtYmVyLmlzSW50ZWdlcihlKSYmdGhpcy5fcmVxdWVzdENodW5rcyhbZV0pfWZvcihjb25zdCBlIG9mIG8pe2NvbnN0IHQ9dGhpcy5fcHJvbWlzZXNCeVJlcXVlc3QuZ2V0KGUpO3RoaXMuX3Byb21pc2VzQnlSZXF1ZXN0LmRlbGV0ZShlKTt0LnJlc29sdmUoKX10aGlzLm1zZ0hhbmRsZXIuc2VuZCgiRG9jUHJvZ3Jlc3MiLHtsb2FkZWQ6dGhpcy5zdHJlYW0ubnVtQ2h1bmtzTG9hZGVkKnRoaXMuY2h1bmtTaXplLHRvdGFsOnRoaXMubGVuZ3RofSl9b25FcnJvcihlKXt0aGlzLl9sb2FkZWRTdHJlYW1DYXBhYmlsaXR5LnJlamVjdChlKX1nZXRCZWdpbkNodW5rKGUpe3JldHVybiBNYXRoLmZsb29yKGUvdGhpcy5jaHVua1NpemUpfWdldEVuZENodW5rKGUpe3JldHVybiBNYXRoLmZsb29yKChlLTEpL3RoaXMuY2h1bmtTaXplKSsxfWFib3J0KGUpe3RoaXMuYWJvcnRlZD0hMDt0aGlzLnBkZk5ldHdvcmtTdHJlYW0/LmNhbmNlbEFsbFJlcXVlc3RzKGUpO2Zvcihjb25zdCB0IG9mIHRoaXMuX3Byb21pc2VzQnlSZXF1ZXN0LnZhbHVlcygpKXQucmVqZWN0KGUpfX1fX3dlYnBhY2tfcmVxdWlyZV9fKDQ1MjApLF9fd2VicGFja19yZXF1aXJlX18oOTQ3OSksX193ZWJwYWNrX3JlcXVpcmVfXygyNTc3KSxfX3dlYnBhY2tfcmVxdWlyZV9fKDg4NzIpO2NsYXNzIENvbG9yU3BhY2V7Y29uc3RydWN0b3IoZSx0KXt0aGlzLm5hbWU9ZTt0aGlzLm51bUNvbXBzPXR9Z2V0UmdiKGUsdCl7Y29uc3QgaT1uZXcgVWludDhDbGFtcGVkQXJyYXkoMyk7dGhpcy5nZXRSZ2JJdGVtKGUsdCxpLDApO3JldHVybiBpfWdldFJnYkl0ZW0oZSx0LGksYSl7dW5yZWFjaGFibGUoIlNob3VsZCBub3QgY2FsbCBDb2xvclNwYWNlLmdldFJnYkl0ZW0iKX1nZXRSZ2JCdWZmZXIoZSx0LGksYSxyLHMsbil7dW5yZWFjaGFibGUoIlNob3VsZCBub3QgY2FsbCBDb2xvclNwYWNlLmdldFJnYkJ1ZmZlciIpfWdldE91dHB1dExlbmd0aChlLHQpe3VucmVhY2hhYmxlKCJTaG91bGQgbm90IGNhbGwgQ29sb3JTcGFjZS5nZXRPdXRwdXRMZW5ndGgiKX1pc1Bhc3N0aHJvdWdoKGUpe3JldHVybiExfWlzRGVmYXVsdERlY29kZShlLHQpe3JldHVybiBDb2xvclNwYWNlLmlzRGVmYXVsdERlY29kZShlLHRoaXMubnVtQ29tcHMpfWZpbGxSZ2IoZSx0LGksYSxyLHMsbixvLGcpe2NvbnN0IGM9dCppO2xldCBDPW51bGw7Y29uc3QgaD0xPDxuLGw9aSE9PXJ8fHQhPT1hO2lmKHRoaXMuaXNQYXNzdGhyb3VnaChuKSlDPW87ZWxzZSBpZigxPT09dGhpcy5udW1Db21wcyYmYz5oJiYiRGV2aWNlR3JheSIhPT10aGlzLm5hbWUmJiJEZXZpY2VSR0IiIT09dGhpcy5uYW1lKXtjb25zdCB0PW48PTg/bmV3IFVpbnQ4QXJyYXkoaCk6bmV3IFVpbnQxNkFycmF5KGgpO2ZvcihsZXQgZT0wO2U8aDtlKyspdFtlXT1lO2NvbnN0IGk9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDMqaCk7dGhpcy5nZXRSZ2JCdWZmZXIodCwwLGgsaSwwLG4sMCk7aWYobCl7Qz1uZXcgVWludDhBcnJheSgzKmMpO2xldCBlPTA7Zm9yKGxldCB0PTA7dDxjOysrdCl7Y29uc3QgYT0zKm9bdF07Q1tlKytdPWlbYV07Q1tlKytdPWlbYSsxXTtDW2UrK109aVthKzJdfX1lbHNle2xldCB0PTA7Zm9yKGxldCBhPTA7YTxjOysrYSl7Y29uc3Qgcj0zKm9bYV07ZVt0KytdPWlbcl07ZVt0KytdPWlbcisxXTtlW3QrK109aVtyKzJdO3QrPWd9fX1lbHNlIGlmKGwpe0M9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDMqYyk7dGhpcy5nZXRSZ2JCdWZmZXIobywwLGMsQywwLG4sMCl9ZWxzZSB0aGlzLmdldFJnYkJ1ZmZlcihvLDAsYSpzLGUsMCxuLGcpO2lmKEMpaWYobCkhZnVuY3Rpb24gcmVzaXplUmdiSW1hZ2UoZSx0LGksYSxyLHMsbil7bj0xIT09bj8wOm47Y29uc3Qgbz1pL3IsZz1hL3M7bGV0IGMsQz0wO2NvbnN0IGg9bmV3IFVpbnQxNkFycmF5KHIpLGw9MyppO2ZvcihsZXQgZT0wO2U8cjtlKyspaFtlXT0zKk1hdGguZmxvb3IoZSpvKTtmb3IobGV0IGk9MDtpPHM7aSsrKXtjb25zdCBhPU1hdGguZmxvb3IoaSpnKSpsO2ZvcihsZXQgaT0wO2k8cjtpKyspe2M9YStoW2ldO3RbQysrXT1lW2MrK107dFtDKytdPWVbYysrXTt0W0MrK109ZVtjKytdO0MrPW59fX0oQyxlLHQsaSxhLHIsZyk7ZWxzZXtsZXQgdD0wLGk9MDtmb3IobGV0IHI9MCxuPWEqcztyPG47cisrKXtlW3QrK109Q1tpKytdO2VbdCsrXT1DW2krK107ZVt0KytdPUNbaSsrXTt0Kz1nfX19Z2V0IHVzZXNaZXJvVG9PbmVSYW5nZSgpe3JldHVybiBzaGFkb3codGhpcywidXNlc1plcm9Ub09uZVJhbmdlIiwhMCl9c3RhdGljIF9jYWNoZShlLHQsaSxhKXtpZighaSl0aHJvdyBuZXcgRXJyb3IoJ0NvbG9yU3BhY2UuX2NhY2hlIC0gZXhwZWN0ZWQgImxvY2FsQ29sb3JTcGFjZUNhY2hlIiBhcmd1bWVudC4nKTtpZighYSl0aHJvdyBuZXcgRXJyb3IoJ0NvbG9yU3BhY2UuX2NhY2hlIC0gZXhwZWN0ZWQgInBhcnNlZENvbG9yU3BhY2UiIGFyZ3VtZW50LicpO2xldCByLHM7aWYoZSBpbnN0YW5jZW9mIFJlZil7cz1lO2U9dC5mZXRjaChlKX1lIGluc3RhbmNlb2YgTmFtZSYmKHI9ZS5uYW1lKTsocnx8cykmJmkuc2V0KHIscyxhKX1zdGF0aWMgZ2V0Q2FjaGVkKGUsdCxpKXtpZighaSl0aHJvdyBuZXcgRXJyb3IoJ0NvbG9yU3BhY2UuZ2V0Q2FjaGVkIC0gZXhwZWN0ZWQgImxvY2FsQ29sb3JTcGFjZUNhY2hlIiBhcmd1bWVudC4nKTtpZihlIGluc3RhbmNlb2YgUmVmKXtjb25zdCBhPWkuZ2V0QnlSZWYoZSk7aWYoYSlyZXR1cm4gYTt0cnl7ZT10LmZldGNoKGUpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlfX1pZihlIGluc3RhbmNlb2YgTmFtZSl7Y29uc3QgdD1pLmdldEJ5TmFtZShlLm5hbWUpO2lmKHQpcmV0dXJuIHR9cmV0dXJuIG51bGx9c3RhdGljIGFzeW5jIHBhcnNlQXN5bmMoe2NzOmUseHJlZjp0LHJlc291cmNlczppPW51bGwscGRmRnVuY3Rpb25GYWN0b3J5OmEsbG9jYWxDb2xvclNwYWNlQ2FjaGU6cn0pe2NvbnN0IHM9dGhpcy5fcGFyc2UoZSx0LGksYSk7dGhpcy5fY2FjaGUoZSx0LHIscyk7cmV0dXJuIHN9c3RhdGljIHBhcnNlKHtjczplLHhyZWY6dCxyZXNvdXJjZXM6aT1udWxsLHBkZkZ1bmN0aW9uRmFjdG9yeTphLGxvY2FsQ29sb3JTcGFjZUNhY2hlOnJ9KXtjb25zdCBzPXRoaXMuZ2V0Q2FjaGVkKGUsdCxyKTtpZihzKXJldHVybiBzO2NvbnN0IG49dGhpcy5fcGFyc2UoZSx0LGksYSk7dGhpcy5fY2FjaGUoZSx0LHIsbik7cmV0dXJuIG59c3RhdGljIF9wYXJzZShlLHQsaT1udWxsLGEpe2lmKChlPXQuZmV0Y2hJZlJlZihlKSlpbnN0YW5jZW9mIE5hbWUpc3dpdGNoKGUubmFtZSl7Y2FzZSJHIjpjYXNlIkRldmljZUdyYXkiOnJldHVybiB0aGlzLnNpbmdsZXRvbnMuZ3JheTtjYXNlIlJHQiI6Y2FzZSJEZXZpY2VSR0IiOnJldHVybiB0aGlzLnNpbmdsZXRvbnMucmdiO2Nhc2UiRGV2aWNlUkdCQSI6cmV0dXJuIHRoaXMuc2luZ2xldG9ucy5yZ2JhO2Nhc2UiQ01ZSyI6Y2FzZSJEZXZpY2VDTVlLIjpyZXR1cm4gdGhpcy5zaW5nbGV0b25zLmNteWs7Y2FzZSJQYXR0ZXJuIjpyZXR1cm4gbmV3IFBhdHRlcm5DUyhudWxsKTtkZWZhdWx0OmlmKGkgaW5zdGFuY2VvZiBEaWN0KXtjb25zdCByPWkuZ2V0KCJDb2xvclNwYWNlIik7aWYociBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IHM9ci5nZXQoZS5uYW1lKTtpZihzKXtpZihzIGluc3RhbmNlb2YgTmFtZSlyZXR1cm4gdGhpcy5fcGFyc2Uocyx0LGksYSk7ZT1zO2JyZWFrfX19d2FybihgVW5yZWNvZ25pemVkIENvbG9yU3BhY2U6ICR7ZS5uYW1lfWApO3JldHVybiB0aGlzLnNpbmdsZXRvbnMuZ3JheX1pZihBcnJheS5pc0FycmF5KGUpKXtjb25zdCByPXQuZmV0Y2hJZlJlZihlWzBdKS5uYW1lO2xldCBzLG4sbyxnLGMsQztzd2l0Y2gocil7Y2FzZSJHIjpjYXNlIkRldmljZUdyYXkiOnJldHVybiB0aGlzLnNpbmdsZXRvbnMuZ3JheTtjYXNlIlJHQiI6Y2FzZSJEZXZpY2VSR0IiOnJldHVybiB0aGlzLnNpbmdsZXRvbnMucmdiO2Nhc2UiQ01ZSyI6Y2FzZSJEZXZpY2VDTVlLIjpyZXR1cm4gdGhpcy5zaW5nbGV0b25zLmNteWs7Y2FzZSJDYWxHcmF5IjpzPXQuZmV0Y2hJZlJlZihlWzFdKTtnPXMuZ2V0QXJyYXkoIldoaXRlUG9pbnQiKTtjPXMuZ2V0QXJyYXkoIkJsYWNrUG9pbnQiKTtDPXMuZ2V0KCJHYW1tYSIpO3JldHVybiBuZXcgQ2FsR3JheUNTKGcsYyxDKTtjYXNlIkNhbFJHQiI6cz10LmZldGNoSWZSZWYoZVsxXSk7Zz1zLmdldEFycmF5KCJXaGl0ZVBvaW50Iik7Yz1zLmdldEFycmF5KCJCbGFja1BvaW50Iik7Qz1zLmdldEFycmF5KCJHYW1tYSIpO2NvbnN0IGg9cy5nZXRBcnJheSgiTWF0cml4Iik7cmV0dXJuIG5ldyBDYWxSR0JDUyhnLGMsQyxoKTtjYXNlIklDQ0Jhc2VkIjpjb25zdCBsPXQuZmV0Y2hJZlJlZihlWzFdKS5kaWN0O249bC5nZXQoIk4iKTtjb25zdCBRPWwuZ2V0KCJBbHRlcm5hdGUiKTtpZihRKXtjb25zdCBlPXRoaXMuX3BhcnNlKFEsdCxpLGEpO2lmKGUubnVtQ29tcHM9PT1uKXJldHVybiBlO3dhcm4oIklDQ0Jhc2VkIGNvbG9yIHNwYWNlOiBJZ25vcmluZyBpbmNvcnJlY3QgL0FsdGVybmF0ZSBlbnRyeS4iKX1pZigxPT09bilyZXR1cm4gdGhpcy5zaW5nbGV0b25zLmdyYXk7aWYoMz09PW4pcmV0dXJuIHRoaXMuc2luZ2xldG9ucy5yZ2I7aWYoND09PW4pcmV0dXJuIHRoaXMuc2luZ2xldG9ucy5jbXlrO2JyZWFrO2Nhc2UiUGF0dGVybiI6bz1lWzFdfHxudWxsO28mJihvPXRoaXMuX3BhcnNlKG8sdCxpLGEpKTtyZXR1cm4gbmV3IFBhdHRlcm5DUyhvKTtjYXNlIkkiOmNhc2UiSW5kZXhlZCI6bz10aGlzLl9wYXJzZShlWzFdLHQsaSxhKTtjb25zdCBFPXQuZmV0Y2hJZlJlZihlWzJdKSsxLHU9dC5mZXRjaElmUmVmKGVbM10pO3JldHVybiBuZXcgSW5kZXhlZENTKG8sRSx1KTtjYXNlIlNlcGFyYXRpb24iOmNhc2UiRGV2aWNlTiI6Y29uc3QgZD10LmZldGNoSWZSZWYoZVsxXSk7bj1BcnJheS5pc0FycmF5KGQpP2QubGVuZ3RoOjE7bz10aGlzLl9wYXJzZShlWzJdLHQsaSxhKTtjb25zdCBmPWEuY3JlYXRlKGVbM10pO3JldHVybiBuZXcgQWx0ZXJuYXRlQ1MobixvLGYpO2Nhc2UiTGFiIjpzPXQuZmV0Y2hJZlJlZihlWzFdKTtnPXMuZ2V0QXJyYXkoIldoaXRlUG9pbnQiKTtjPXMuZ2V0QXJyYXkoIkJsYWNrUG9pbnQiKTtjb25zdCBwPXMuZ2V0QXJyYXkoIlJhbmdlIik7cmV0dXJuIG5ldyBMYWJDUyhnLGMscCk7ZGVmYXVsdDp3YXJuKGBVbmltcGxlbWVudGVkIENvbG9yU3BhY2Ugb2JqZWN0OiAke3J9YCk7cmV0dXJuIHRoaXMuc2luZ2xldG9ucy5ncmF5fX13YXJuKGBVbnJlY29nbml6ZWQgQ29sb3JTcGFjZSBvYmplY3Q6ICR7ZX1gKTtyZXR1cm4gdGhpcy5zaW5nbGV0b25zLmdyYXl9c3RhdGljIGlzRGVmYXVsdERlY29kZShlLHQpe2lmKCFBcnJheS5pc0FycmF5KGUpKXJldHVybiEwO2lmKDIqdCE9PWUubGVuZ3RoKXt3YXJuKCJUaGUgZGVjb2RlIG1hcCBpcyBub3QgdGhlIGNvcnJlY3QgbGVuZ3RoIik7cmV0dXJuITB9Zm9yKGxldCB0PTAsaT1lLmxlbmd0aDt0PGk7dCs9MilpZigwIT09ZVt0XXx8MSE9PWVbdCsxXSlyZXR1cm4hMTtyZXR1cm4hMH1zdGF0aWMgZ2V0IHNpbmdsZXRvbnMoKXtyZXR1cm4gc2hhZG93KHRoaXMsInNpbmdsZXRvbnMiLHtnZXQgZ3JheSgpe3JldHVybiBzaGFkb3codGhpcywiZ3JheSIsbmV3IERldmljZUdyYXlDUyl9LGdldCByZ2IoKXtyZXR1cm4gc2hhZG93KHRoaXMsInJnYiIsbmV3IERldmljZVJnYkNTKX0sZ2V0IHJnYmEoKXtyZXR1cm4gc2hhZG93KHRoaXMsInJnYmEiLG5ldyBEZXZpY2VSZ2JhQ1MpfSxnZXQgY215aygpe3JldHVybiBzaGFkb3codGhpcywiY215ayIsbmV3IERldmljZUNteWtDUyl9fSl9fWNsYXNzIEFsdGVybmF0ZUNTIGV4dGVuZHMgQ29sb3JTcGFjZXtjb25zdHJ1Y3RvcihlLHQsaSl7c3VwZXIoIkFsdGVybmF0ZSIsZSk7dGhpcy5iYXNlPXQ7dGhpcy50aW50Rm49aTt0aGlzLnRtcEJ1Zj1uZXcgRmxvYXQzMkFycmF5KHQubnVtQ29tcHMpfWdldFJnYkl0ZW0oZSx0LGksYSl7Y29uc3Qgcj10aGlzLnRtcEJ1Zjt0aGlzLnRpbnRGbihlLHQsciwwKTt0aGlzLmJhc2UuZ2V0UmdiSXRlbShyLDAsaSxhKX1nZXRSZ2JCdWZmZXIoZSx0LGksYSxyLHMsbil7Y29uc3Qgbz10aGlzLnRpbnRGbixnPXRoaXMuYmFzZSxjPTEvKCgxPDxzKS0xKSxDPWcubnVtQ29tcHMsaD1nLnVzZXNaZXJvVG9PbmVSYW5nZSxsPShnLmlzUGFzc3Rocm91Z2goOCl8fCFoKSYmMD09PW47bGV0IFE9bD9yOjA7Y29uc3QgRT1sP2E6bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KEMqaSksdT10aGlzLm51bUNvbXBzLGQ9bmV3IEZsb2F0MzJBcnJheSh1KSxmPW5ldyBGbG9hdDMyQXJyYXkoQyk7bGV0IHAsbTtmb3IocD0wO3A8aTtwKyspe2ZvcihtPTA7bTx1O20rKylkW21dPWVbdCsrXSpjO28oZCwwLGYsMCk7aWYoaClmb3IobT0wO208QzttKyspRVtRKytdPTI1NSpmW21dO2Vsc2V7Zy5nZXRSZ2JJdGVtKGYsMCxFLFEpO1ErPUN9fWx8fGcuZ2V0UmdiQnVmZmVyKEUsMCxpLGEsciw4LG4pfWdldE91dHB1dExlbmd0aChlLHQpe3JldHVybiB0aGlzLmJhc2UuZ2V0T3V0cHV0TGVuZ3RoKGUqdGhpcy5iYXNlLm51bUNvbXBzL3RoaXMubnVtQ29tcHMsdCl9fWNsYXNzIFBhdHRlcm5DUyBleHRlbmRzIENvbG9yU3BhY2V7Y29uc3RydWN0b3IoZSl7c3VwZXIoIlBhdHRlcm4iLG51bGwpO3RoaXMuYmFzZT1lfWlzRGVmYXVsdERlY29kZShlLHQpe3VucmVhY2hhYmxlKCJTaG91bGQgbm90IGNhbGwgUGF0dGVybkNTLmlzRGVmYXVsdERlY29kZSIpfX1jbGFzcyBJbmRleGVkQ1MgZXh0ZW5kcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKGUsdCxpKXtzdXBlcigiSW5kZXhlZCIsMSk7dGhpcy5iYXNlPWU7dGhpcy5oaWdoVmFsPXQ7Y29uc3QgYT1lLm51bUNvbXBzKnQ7dGhpcy5sb29rdXA9bmV3IFVpbnQ4QXJyYXkoYSk7aWYoaSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pe2NvbnN0IGU9aS5nZXRCeXRlcyhhKTt0aGlzLmxvb2t1cC5zZXQoZSl9ZWxzZXtpZigic3RyaW5nIiE9dHlwZW9mIGkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbmRleGVkQ1MgLSB1bnJlY29nbml6ZWQgbG9va3VwIHRhYmxlOiAke2l9YCk7Zm9yKGxldCBlPTA7ZTxhOysrZSl0aGlzLmxvb2t1cFtlXT0yNTUmaS5jaGFyQ29kZUF0KGUpfX1nZXRSZ2JJdGVtKGUsdCxpLGEpe2NvbnN0IHI9dGhpcy5iYXNlLm51bUNvbXBzLHM9ZVt0XSpyO3RoaXMuYmFzZS5nZXRSZ2JCdWZmZXIodGhpcy5sb29rdXAscywxLGksYSw4LDApfWdldFJnYkJ1ZmZlcihlLHQsaSxhLHIscyxuKXtjb25zdCBvPXRoaXMuYmFzZSxnPW8ubnVtQ29tcHMsYz1vLmdldE91dHB1dExlbmd0aChnLG4pLEM9dGhpcy5sb29rdXA7Zm9yKGxldCBzPTA7czxpOysrcyl7Y29uc3QgaT1lW3QrK10qZztvLmdldFJnYkJ1ZmZlcihDLGksMSxhLHIsOCxuKTtyKz1jfX1nZXRPdXRwdXRMZW5ndGgoZSx0KXtyZXR1cm4gdGhpcy5iYXNlLmdldE91dHB1dExlbmd0aChlKnRoaXMuYmFzZS5udW1Db21wcyx0KX1pc0RlZmF1bHREZWNvZGUoZSx0KXtpZighQXJyYXkuaXNBcnJheShlKSlyZXR1cm4hMDtpZigyIT09ZS5sZW5ndGgpe3dhcm4oIkRlY29kZSBtYXAgbGVuZ3RoIGlzIG5vdCBjb3JyZWN0Iik7cmV0dXJuITB9aWYoIU51bWJlci5pc0ludGVnZXIodCl8fHQ8MSl7d2FybigiQml0cyBwZXIgY29tcG9uZW50IGlzIG5vdCBjb3JyZWN0Iik7cmV0dXJuITB9cmV0dXJuIDA9PT1lWzBdJiZlWzFdPT09KDE8PHQpLTF9fWNsYXNzIERldmljZUdyYXlDUyBleHRlbmRzIENvbG9yU3BhY2V7Y29uc3RydWN0b3IoKXtzdXBlcigiRGV2aWNlR3JheSIsMSl9Z2V0UmdiSXRlbShlLHQsaSxhKXtjb25zdCByPTI1NSplW3RdO2lbYV09aVthKzFdPWlbYSsyXT1yfWdldFJnYkJ1ZmZlcihlLHQsaSxhLHIscyxuKXtjb25zdCBvPTI1NS8oKDE8PHMpLTEpO2xldCBnPXQsYz1yO2ZvcihsZXQgdD0wO3Q8aTsrK3Qpe2NvbnN0IHQ9byplW2crK107YVtjKytdPXQ7YVtjKytdPXQ7YVtjKytdPXQ7Yys9bn19Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIGUqKDMrdCl9fWNsYXNzIERldmljZVJnYkNTIGV4dGVuZHMgQ29sb3JTcGFjZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKCJEZXZpY2VSR0IiLDMpfWdldFJnYkl0ZW0oZSx0LGksYSl7aVthXT0yNTUqZVt0XTtpW2ErMV09MjU1KmVbdCsxXTtpW2ErMl09MjU1KmVbdCsyXX1nZXRSZ2JCdWZmZXIoZSx0LGksYSxyLHMsbil7aWYoOD09PXMmJjA9PT1uKXthLnNldChlLnN1YmFycmF5KHQsdCszKmkpLHIpO3JldHVybn1jb25zdCBvPTI1NS8oKDE8PHMpLTEpO2xldCBnPXQsYz1yO2ZvcihsZXQgdD0wO3Q8aTsrK3Qpe2FbYysrXT1vKmVbZysrXTthW2MrK109byplW2crK107YVtjKytdPW8qZVtnKytdO2MrPW59fWdldE91dHB1dExlbmd0aChlLHQpe3JldHVybiBlKigzK3QpLzN8MH1pc1Bhc3N0aHJvdWdoKGUpe3JldHVybiA4PT09ZX19Y2xhc3MgRGV2aWNlUmdiYUNTIGV4dGVuZHMgQ29sb3JTcGFjZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKCJEZXZpY2VSR0JBIiw0KX1nZXRPdXRwdXRMZW5ndGgoZSx0KXtyZXR1cm4gNCplfWlzUGFzc3Rocm91Z2goZSl7cmV0dXJuIDg9PT1lfX1jbGFzcyBEZXZpY2VDbXlrQ1MgZXh0ZW5kcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKCl7c3VwZXIoIkRldmljZUNNWUsiLDQpfSN0KGUsdCxpLGEscil7Y29uc3Qgcz1lW3RdKmksbj1lW3QrMV0qaSxvPWVbdCsyXSppLGc9ZVt0KzNdKmk7YVtyXT0yNTUrcyooLTQuMzg3MzMyMzg0NjA5OTg4KnMrNTQuNDg2MTUxOTQxODkxNzYqbisxOC44MjI5MDUwMjE2NTMwMipvKzIxMi4yNTY2MjQ1MTYzOTU4NSpnLTI4NS4yMzMxMDI2MTM3MDA0KStuKigxLjcxNDk3NjM0NzczNjIxMzQqbi01LjYwOTY3MzY5MDQwNDczMTUqbystMTcuODczODcwODYxNDE1NDQ0KmctNS40OTcwMDY0MjcxOTYzNjYpK28qKC0yLjUyMTczNDAxMzE2ODMwMzMqby0yMS4yNDg5MjMzMzczNTMwNzMqZysxNy41MTE5MjcwODQxODEzKStnKigtMjEuODYxMjIxNDc0NjM2MDUqZy0xODkuNDgxODA4MzU5MjI3NDcpO2FbcisxXT0yNTUrcyooOC44NDEwNDE0MjIwMzYxNDkqcys2MC4xMTgwMjcwNDU1OTczNjYqbis2Ljg3MTQyNTU5MjA0OTAwNypvKzMxLjE1OTEwMDEzMDA1NTkyMipnLTc5LjI5NzA4NDQ4MTY1NDgpK24qKC0xNS4zMTAzNjEzMDY5Njc4MTcqbisxNy41NzUyNTEyNjExMDk0ODIqbysxMzEuMzUyNTA5MTI0OTM5NzYqZy0xOTAuOTQ1MzMwMjU4ODk1MSkrbyooNC40NDQzMzkxMDI4NTI3Mzkqbys5Ljg2MzI4NjE0OTM0MDUqZy0yNC44Njc0MTU4MjU1NTg3OCkrZyooLTIwLjczNzMyNTQ3MTE4MTAzNCpnLTE4Ny44MDQ1MzcwOTcxOTU3OCk7YVtyKzJdPTI1NStzKiguODg0MjUyMjQzMDAwMzI5NipzKzguMDc4Njc3NTAzMTEyOTI4Km4rMzAuODk5NzgzMDk3MDM3Mjkqby0uMjM4ODMyMzg2ODkxNzg5MzQqZy0xNC4xODM1NzY3OTk2NzMyODYpK24qKDEwLjQ5NTkzMjczNDMyMDcyKm4rNjMuMDIzNzg0OTQ3NTQwNTIqbys1MC42MDY5NTc2NTYzNjA3MzQqZy0xMTIuMjM4ODQyNTM3MTkyNDgpK28qKC4wMzI5NjA0MTExNDg3MzIxNypvKzExNS42MDM4NDQ0OTY0NjY0MSpnLTE5My41ODIwOTM1Njg2MTUwNSkrZyooLTIyLjMzODE2ODA3MzA5ODg2KmctMTgwLjEyNjEzOTc0NzA4MzY3KX1nZXRSZ2JJdGVtKGUsdCxpLGEpe3RoaXMuI3QoZSx0LDEsaSxhKX1nZXRSZ2JCdWZmZXIoZSx0LGksYSxyLHMsbil7Y29uc3Qgbz0xLygoMTw8cyktMSk7Zm9yKGxldCBzPTA7czxpO3MrKyl7dGhpcy4jdChlLHQsbyxhLHIpO3QrPTQ7cis9MytufX1nZXRPdXRwdXRMZW5ndGgoZSx0KXtyZXR1cm4gZS80KigzK3QpfDB9fWNsYXNzIENhbEdyYXlDUyBleHRlbmRzIENvbG9yU3BhY2V7Y29uc3RydWN0b3IoZSx0LGkpe3N1cGVyKCJDYWxHcmF5IiwxKTtpZighZSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIldoaXRlUG9pbnQgbWlzc2luZyAtIHJlcXVpcmVkIGZvciBjb2xvciBzcGFjZSBDYWxHcmF5Iik7W3RoaXMuWFcsdGhpcy5ZVyx0aGlzLlpXXT1lO1t0aGlzLlhCLHRoaXMuWUIsdGhpcy5aQl09dHx8WzAsMCwwXTt0aGlzLkc9aXx8MTtpZih0aGlzLlhXPDB8fHRoaXMuWlc8MHx8MSE9PXRoaXMuWVcpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkIFdoaXRlUG9pbnQgY29tcG9uZW50cyBmb3IgJHt0aGlzLm5hbWV9LCBubyBmYWxsYmFjayBhdmFpbGFibGVgKTtpZih0aGlzLlhCPDB8fHRoaXMuWUI8MHx8dGhpcy5aQjwwKXtpbmZvKGBJbnZhbGlkIEJsYWNrUG9pbnQgZm9yICR7dGhpcy5uYW1lfSwgZmFsbGluZyBiYWNrIHRvIGRlZmF1bHQuYCk7dGhpcy5YQj10aGlzLllCPXRoaXMuWkI9MH0wPT09dGhpcy5YQiYmMD09PXRoaXMuWUImJjA9PT10aGlzLlpCfHx3YXJuKGAke3RoaXMubmFtZX0sIEJsYWNrUG9pbnQ6IFhCOiAke3RoaXMuWEJ9LCBZQjogJHt0aGlzLllCfSwgWkI6ICR7dGhpcy5aQn0sIG9ubHkgZGVmYXVsdCB2YWx1ZXMgYXJlIHN1cHBvcnRlZC5gKTtpZih0aGlzLkc8MSl7aW5mbyhgSW52YWxpZCBHYW1tYTogJHt0aGlzLkd9IGZvciAke3RoaXMubmFtZX0sIGZhbGxpbmcgYmFjayB0byBkZWZhdWx0LmApO3RoaXMuRz0xfX0jdChlLHQsaSxhLHIpe2NvbnN0IHM9KGVbdF0qcikqKnRoaXMuRyxuPXRoaXMuWVcqcyxvPU1hdGgubWF4KDI5NS44Km4qKi4zMzMzMzMzMzMzMzMzMzMzLTQwLjgsMCk7aVthXT1vO2lbYSsxXT1vO2lbYSsyXT1vfWdldFJnYkl0ZW0oZSx0LGksYSl7dGhpcy4jdChlLHQsaSxhLDEpfWdldFJnYkJ1ZmZlcihlLHQsaSxhLHIscyxuKXtjb25zdCBvPTEvKCgxPDxzKS0xKTtmb3IobGV0IHM9MDtzPGk7KytzKXt0aGlzLiN0KGUsdCxhLHIsbyk7dCs9MTtyKz0zK259fWdldE91dHB1dExlbmd0aChlLHQpe3JldHVybiBlKigzK3QpfX1jbGFzcyBDYWxSR0JDUyBleHRlbmRzIENvbG9yU3BhY2V7c3RhdGljI2k9bmV3IEZsb2F0MzJBcnJheShbLjg5NTEsLjI2NjQsLS4xNjE0LC0uNzUwMiwxLjcxMzUsLjAzNjcsLjAzODksLS4wNjg1LDEuMDI5Nl0pO3N0YXRpYyNhPW5ldyBGbG9hdDMyQXJyYXkoWy45ODY5OTI5LC0uMTQ3MDU0MywuMTU5OTYyNywuNDMyMzA1MywuNTE4MzYwMywuMDQ5MjkxMiwtLjAwODUyODcsLjA0MDA0MjgsLjk2ODQ4NjddKTtzdGF0aWMjcj1uZXcgRmxvYXQzMkFycmF5KFszLjI0MDQ1NDIsLTEuNTM3MTM4NSwtLjQ5ODUzMTQsLS45NjkyNjYsMS44NzYwMTA4LC4wNDE1NTYsLjA1NTY0MzQsLS4yMDQwMjU5LDEuMDU3MjI1Ml0pO3N0YXRpYyNzPW5ldyBGbG9hdDMyQXJyYXkoWzEsMSwxXSk7c3RhdGljI249bmV3IEZsb2F0MzJBcnJheSgzKTtzdGF0aWMjbz1uZXcgRmxvYXQzMkFycmF5KDMpO3N0YXRpYyNnPW5ldyBGbG9hdDMyQXJyYXkoMyk7c3RhdGljI0k9KDI0LzExNikqKjMvODtjb25zdHJ1Y3RvcihlLHQsaSxhKXtzdXBlcigiQ2FsUkdCIiwzKTtpZighZSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIldoaXRlUG9pbnQgbWlzc2luZyAtIHJlcXVpcmVkIGZvciBjb2xvciBzcGFjZSBDYWxSR0IiKTtjb25zdFtyLHMsbl09dGhpcy53aGl0ZVBvaW50PWUsW28sZyxjXT10aGlzLmJsYWNrUG9pbnQ9dHx8bmV3IEZsb2F0MzJBcnJheSgzKTtbdGhpcy5HUix0aGlzLkdHLHRoaXMuR0JdPWl8fG5ldyBGbG9hdDMyQXJyYXkoWzEsMSwxXSk7W3RoaXMuTVhBLHRoaXMuTVlBLHRoaXMuTVpBLHRoaXMuTVhCLHRoaXMuTVlCLHRoaXMuTVpCLHRoaXMuTVhDLHRoaXMuTVlDLHRoaXMuTVpDXT1hfHxuZXcgRmxvYXQzMkFycmF5KFsxLDAsMCwwLDEsMCwwLDAsMV0pO2lmKHI8MHx8bjwwfHwxIT09cyl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEludmFsaWQgV2hpdGVQb2ludCBjb21wb25lbnRzIGZvciAke3RoaXMubmFtZX0sIG5vIGZhbGxiYWNrIGF2YWlsYWJsZWApO2lmKG88MHx8ZzwwfHxjPDApe2luZm8oYEludmFsaWQgQmxhY2tQb2ludCBmb3IgJHt0aGlzLm5hbWV9IFske299LCAke2d9LCAke2N9XSwgZmFsbGluZyBiYWNrIHRvIGRlZmF1bHQuYCk7dGhpcy5ibGFja1BvaW50PW5ldyBGbG9hdDMyQXJyYXkoMyl9aWYodGhpcy5HUjwwfHx0aGlzLkdHPDB8fHRoaXMuR0I8MCl7aW5mbyhgSW52YWxpZCBHYW1tYSBbJHt0aGlzLkdSfSwgJHt0aGlzLkdHfSwgJHt0aGlzLkdCfV0gZm9yICR7dGhpcy5uYW1lfSwgZmFsbGluZyBiYWNrIHRvIGRlZmF1bHQuYCk7dGhpcy5HUj10aGlzLkdHPXRoaXMuR0I9MX19I2MoZSx0LGkpe2lbMF09ZVswXSp0WzBdK2VbMV0qdFsxXStlWzJdKnRbMl07aVsxXT1lWzNdKnRbMF0rZVs0XSp0WzFdK2VbNV0qdFsyXTtpWzJdPWVbNl0qdFswXStlWzddKnRbMV0rZVs4XSp0WzJdfSNDKGUsdCxpKXtpWzBdPTEqdFswXS9lWzBdO2lbMV09MSp0WzFdL2VbMV07aVsyXT0xKnRbMl0vZVsyXX0jaChlLHQsaSl7aVswXT0uOTUwNDcqdFswXS9lWzBdO2lbMV09MSp0WzFdL2VbMV07aVsyXT0xLjA4ODgzKnRbMl0vZVsyXX0jbChlKXtyZXR1cm4gZTw9LjAwMzEzMDg/dGhpcy4jQigwLDEsMTIuOTIqZSk6ZT49Ljk5NTU0NTI1PzE6dGhpcy4jQigwLDEsMS4wNTUqZSoqKDEvMi40KS0uMDU1KX0jQihlLHQsaSl7cmV0dXJuIE1hdGgubWF4KGUsTWF0aC5taW4odCxpKSl9I1EoZSl7cmV0dXJuIGU8MD8tdGhpcy4jUSgtZSk6ZT44PygoZSsxNikvMTE2KSoqMzplKkNhbFJHQkNTLiNJfSNFKGUsdCxpKXtpZigwPT09ZVswXSYmMD09PWVbMV0mJjA9PT1lWzJdKXtpWzBdPXRbMF07aVsxXT10WzFdO2lbMl09dFsyXTtyZXR1cm59Y29uc3QgYT10aGlzLiNRKDApLHI9KDEtYSkvKDEtdGhpcy4jUShlWzBdKSkscz0xLXIsbj0oMS1hKS8oMS10aGlzLiNRKGVbMV0pKSxvPTEtbixnPSgxLWEpLygxLXRoaXMuI1EoZVsyXSkpLGM9MS1nO2lbMF09dFswXSpyK3M7aVsxXT10WzFdKm4rbztpWzJdPXRbMl0qZytjfSN1KGUsdCxpKXtpZigxPT09ZVswXSYmMT09PWVbMl0pe2lbMF09dFswXTtpWzFdPXRbMV07aVsyXT10WzJdO3JldHVybn1jb25zdCBhPWk7dGhpcy4jYyhDYWxSR0JDUy4jaSx0LGEpO2NvbnN0IHI9Q2FsUkdCQ1MuI247dGhpcy4jQyhlLGEscik7dGhpcy4jYyhDYWxSR0JDUy4jYSxyLGkpfSNkKGUsdCxpKXtjb25zdCBhPWk7dGhpcy4jYyhDYWxSR0JDUy4jaSx0LGEpO2NvbnN0IHI9Q2FsUkdCQ1MuI247dGhpcy4jaChlLGEscik7dGhpcy4jYyhDYWxSR0JDUy4jYSxyLGkpfSN0KGUsdCxpLGEscil7Y29uc3Qgcz10aGlzLiNCKDAsMSxlW3RdKnIpLG49dGhpcy4jQigwLDEsZVt0KzFdKnIpLG89dGhpcy4jQigwLDEsZVt0KzJdKnIpLGc9MT09PXM/MTpzKip0aGlzLkdSLGM9MT09PW4/MTpuKip0aGlzLkdHLEM9MT09PW8/MTpvKip0aGlzLkdCLGg9dGhpcy5NWEEqZyt0aGlzLk1YQipjK3RoaXMuTVhDKkMsbD10aGlzLk1ZQSpnK3RoaXMuTVlCKmMrdGhpcy5NWUMqQyxRPXRoaXMuTVpBKmcrdGhpcy5NWkIqYyt0aGlzLk1aQypDLEU9Q2FsUkdCQ1MuI287RVswXT1oO0VbMV09bDtFWzJdPVE7Y29uc3QgdT1DYWxSR0JDUy4jZzt0aGlzLiN1KHRoaXMud2hpdGVQb2ludCxFLHUpO2NvbnN0IGQ9Q2FsUkdCQ1MuI287dGhpcy4jRSh0aGlzLmJsYWNrUG9pbnQsdSxkKTtjb25zdCBmPUNhbFJHQkNTLiNnO3RoaXMuI2QoQ2FsUkdCQ1MuI3MsZCxmKTtjb25zdCBwPUNhbFJHQkNTLiNvO3RoaXMuI2MoQ2FsUkdCQ1MuI3IsZixwKTtpW2FdPTI1NSp0aGlzLiNsKHBbMF0pO2lbYSsxXT0yNTUqdGhpcy4jbChwWzFdKTtpW2ErMl09MjU1KnRoaXMuI2wocFsyXSl9Z2V0UmdiSXRlbShlLHQsaSxhKXt0aGlzLiN0KGUsdCxpLGEsMSl9Z2V0UmdiQnVmZmVyKGUsdCxpLGEscixzLG4pe2NvbnN0IG89MS8oKDE8PHMpLTEpO2ZvcihsZXQgcz0wO3M8aTsrK3Mpe3RoaXMuI3QoZSx0LGEscixvKTt0Kz0zO3IrPTMrbn19Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIGUqKDMrdCkvM3wwfX1jbGFzcyBMYWJDUyBleHRlbmRzIENvbG9yU3BhY2V7Y29uc3RydWN0b3IoZSx0LGkpe3N1cGVyKCJMYWIiLDMpO2lmKCFlKXRocm93IG5ldyBGb3JtYXRFcnJvcigiV2hpdGVQb2ludCBtaXNzaW5nIC0gcmVxdWlyZWQgZm9yIGNvbG9yIHNwYWNlIExhYiIpO1t0aGlzLlhXLHRoaXMuWVcsdGhpcy5aV109ZTtbdGhpcy5hbWluLHRoaXMuYW1heCx0aGlzLmJtaW4sdGhpcy5ibWF4XT1pfHxbLTEwMCwxMDAsLTEwMCwxMDBdO1t0aGlzLlhCLHRoaXMuWUIsdGhpcy5aQl09dHx8WzAsMCwwXTtpZih0aGlzLlhXPDB8fHRoaXMuWlc8MHx8MSE9PXRoaXMuWVcpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIFdoaXRlUG9pbnQgY29tcG9uZW50cywgbm8gZmFsbGJhY2sgYXZhaWxhYmxlIik7aWYodGhpcy5YQjwwfHx0aGlzLllCPDB8fHRoaXMuWkI8MCl7aW5mbygiSW52YWxpZCBCbGFja1BvaW50LCBmYWxsaW5nIGJhY2sgdG8gZGVmYXVsdCIpO3RoaXMuWEI9dGhpcy5ZQj10aGlzLlpCPTB9aWYodGhpcy5hbWluPnRoaXMuYW1heHx8dGhpcy5ibWluPnRoaXMuYm1heCl7aW5mbygiSW52YWxpZCBSYW5nZSwgZmFsbGluZyBiYWNrIHRvIGRlZmF1bHRzIik7dGhpcy5hbWluPS0xMDA7dGhpcy5hbWF4PTEwMDt0aGlzLmJtaW49LTEwMDt0aGlzLmJtYXg9MTAwfX0jZihlKXtyZXR1cm4gZT49Ni8yOT9lKiozOjEwOC84NDEqKGUtNC8yOSl9I3AoZSx0LGksYSl7cmV0dXJuIGkrZSooYS1pKS90fSN0KGUsdCxpLGEscil7bGV0IHM9ZVt0XSxuPWVbdCsxXSxvPWVbdCsyXTtpZighMSE9PWkpe3M9dGhpcy4jcChzLGksMCwxMDApO249dGhpcy4jcChuLGksdGhpcy5hbWluLHRoaXMuYW1heCk7bz10aGlzLiNwKG8saSx0aGlzLmJtaW4sdGhpcy5ibWF4KX1uPnRoaXMuYW1heD9uPXRoaXMuYW1heDpuPHRoaXMuYW1pbiYmKG49dGhpcy5hbWluKTtvPnRoaXMuYm1heD9vPXRoaXMuYm1heDpvPHRoaXMuYm1pbiYmKG89dGhpcy5ibWluKTtjb25zdCBnPShzKzE2KS8xMTYsYz1nK24vNTAwLEM9Zy1vLzIwMCxoPXRoaXMuWFcqdGhpcy4jZihjKSxsPXRoaXMuWVcqdGhpcy4jZihnKSxRPXRoaXMuWlcqdGhpcy4jZihDKTtsZXQgRSx1LGQ7aWYodGhpcy5aVzwxKXtFPTMuMTMzOSpoKy0xLjYxNypsKy0uNDkwNipRO3U9LS45Nzg1KmgrMS45MTYqbCsuMDMzMypRO2Q9LjA3MipoKy0uMjI5KmwrMS40MDU3KlF9ZWxzZXtFPTMuMjQwNipoKy0xLjUzNzIqbCstLjQ5ODYqUTt1PS0uOTY4OSpoKzEuODc1OCpsKy4wNDE1KlE7ZD0uMDU1NypoKy0uMjA0KmwrMS4wNTcqUX1hW3JdPTI1NSpNYXRoLnNxcnQoRSk7YVtyKzFdPTI1NSpNYXRoLnNxcnQodSk7YVtyKzJdPTI1NSpNYXRoLnNxcnQoZCl9Z2V0UmdiSXRlbShlLHQsaSxhKXt0aGlzLiN0KGUsdCwhMSxpLGEpfWdldFJnYkJ1ZmZlcihlLHQsaSxhLHIscyxuKXtjb25zdCBvPSgxPDxzKS0xO2ZvcihsZXQgcz0wO3M8aTtzKyspe3RoaXMuI3QoZSx0LG8sYSxyKTt0Kz0zO3IrPTMrbn19Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIGUqKDMrdCkvM3wwfWlzRGVmYXVsdERlY29kZShlLHQpe3JldHVybiEwfWdldCB1c2VzWmVyb1RvT25lUmFuZ2UoKXtyZXR1cm4gc2hhZG93KHRoaXMsInVzZXNaZXJvVG9PbmVSYW5nZSIsITEpfX1mdW5jdGlvbiBoZXhUb0ludChlLHQpe2xldCBpPTA7Zm9yKGxldCBhPTA7YTw9dDthKyspaT1pPDw4fGVbYV07cmV0dXJuIGk+Pj4wfWZ1bmN0aW9uIGhleFRvU3RyKGUsdCl7cmV0dXJuIDE9PT10P1N0cmluZy5mcm9tQ2hhckNvZGUoZVswXSxlWzFdKTozPT09dD9TdHJpbmcuZnJvbUNoYXJDb2RlKGVbMF0sZVsxXSxlWzJdLGVbM10pOlN0cmluZy5mcm9tQ2hhckNvZGUoLi4uZS5zdWJhcnJheSgwLHQrMSkpfWZ1bmN0aW9uIGFkZEhleChlLHQsaSl7bGV0IGE9MDtmb3IobGV0IHI9aTtyPj0wO3ItLSl7YSs9ZVtyXSt0W3JdO2Vbcl09MjU1JmE7YT4+PTh9fWZ1bmN0aW9uIGluY0hleChlLHQpe2xldCBpPTE7Zm9yKGxldCBhPXQ7YT49MCYmaT4wO2EtLSl7aSs9ZVthXTtlW2FdPTI1NSZpO2k+Pj04fX1jb25zdCBVdD0xNjtjbGFzcyBCaW5hcnlDTWFwU3RyZWFte2NvbnN0cnVjdG9yKGUpe3RoaXMuYnVmZmVyPWU7dGhpcy5wb3M9MDt0aGlzLmVuZD1lLmxlbmd0aDt0aGlzLnRtcEJ1Zj1uZXcgVWludDhBcnJheSgxOSl9cmVhZEJ5dGUoKXtyZXR1cm4gdGhpcy5wb3M+PXRoaXMuZW5kPy0xOnRoaXMuYnVmZmVyW3RoaXMucG9zKytdfXJlYWROdW1iZXIoKXtsZXQgZSx0PTA7ZG97Y29uc3QgaT10aGlzLnJlYWRCeXRlKCk7aWYoaTwwKXRocm93IG5ldyBGb3JtYXRFcnJvcigidW5leHBlY3RlZCBFT0YgaW4gYmNtYXAiKTtlPSEoMTI4JmkpO3Q9dDw8N3wxMjcmaX13aGlsZSghZSk7cmV0dXJuIHR9cmVhZFNpZ25lZCgpe2NvbnN0IGU9dGhpcy5yZWFkTnVtYmVyKCk7cmV0dXJuIDEmZT9+KGU+Pj4xKTplPj4+MX1yZWFkSGV4KGUsdCl7ZS5zZXQodGhpcy5idWZmZXIuc3ViYXJyYXkodGhpcy5wb3MsdGhpcy5wb3MrdCsxKSk7dGhpcy5wb3MrPXQrMX1yZWFkSGV4TnVtYmVyKGUsdCl7bGV0IGk7Y29uc3QgYT10aGlzLnRtcEJ1ZjtsZXQgcj0wO2Rve2NvbnN0IGU9dGhpcy5yZWFkQnl0ZSgpO2lmKGU8MCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoInVuZXhwZWN0ZWQgRU9GIGluIGJjbWFwIik7aT0hKDEyOCZlKTthW3IrK109MTI3JmV9d2hpbGUoIWkpO2xldCBzPXQsbj0wLG89MDtmb3IoO3M+PTA7KXtmb3IoO288OCYmYS5sZW5ndGg+MDspe258PWFbLS1yXTw8bztvKz03fWVbc109MjU1Jm47cy0tO24+Pj04O28tPTh9fXJlYWRIZXhTaWduZWQoZSx0KXt0aGlzLnJlYWRIZXhOdW1iZXIoZSx0KTtjb25zdCBpPTEmZVt0XT8yNTU6MDtsZXQgYT0wO2ZvcihsZXQgcj0wO3I8PXQ7cisrKXthPSgxJmEpPDw4fGVbcl07ZVtyXT1hPj4xXml9fXJlYWRTdHJpbmcoKXtjb25zdCBlPXRoaXMucmVhZE51bWJlcigpLHQ9bmV3IEFycmF5KGUpO2ZvcihsZXQgaT0wO2k8ZTtpKyspdFtpXT10aGlzLnJlYWROdW1iZXIoKTtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZSguLi50KX19Y2xhc3MgQmluYXJ5Q01hcFJlYWRlcnthc3luYyBwcm9jZXNzKGUsdCxpKXtjb25zdCBhPW5ldyBCaW5hcnlDTWFwU3RyZWFtKGUpLHI9YS5yZWFkQnl0ZSgpO3QudmVydGljYWw9ISEoMSZyKTtsZXQgcz1udWxsO2NvbnN0IG49bmV3IFVpbnQ4QXJyYXkoVXQpLG89bmV3IFVpbnQ4QXJyYXkoVXQpLGc9bmV3IFVpbnQ4QXJyYXkoVXQpLGM9bmV3IFVpbnQ4QXJyYXkoVXQpLEM9bmV3IFVpbnQ4QXJyYXkoVXQpO2xldCBoLGw7Zm9yKDsobD1hLnJlYWRCeXRlKCkpPj0wOyl7Y29uc3QgZT1sPj41O2lmKDc9PT1lKXtzd2l0Y2goMzEmbCl7Y2FzZSAwOmEucmVhZFN0cmluZygpO2JyZWFrO2Nhc2UgMTpzPWEucmVhZFN0cmluZygpfWNvbnRpbnVlfWNvbnN0IGk9ISEoMTYmbCkscj0xNSZsO2lmKHIrMT5VdCl0aHJvdyBuZXcgRXJyb3IoIkJpbmFyeUNNYXBSZWFkZXIucHJvY2VzczogSW52YWxpZCBkYXRhU2l6ZS4iKTtjb25zdCBRPTEsRT1hLnJlYWROdW1iZXIoKTtzd2l0Y2goZSl7Y2FzZSAwOmEucmVhZEhleChuLHIpO2EucmVhZEhleE51bWJlcihvLHIpO2FkZEhleChvLG4scik7dC5hZGRDb2Rlc3BhY2VSYW5nZShyKzEsaGV4VG9JbnQobixyKSxoZXhUb0ludChvLHIpKTtmb3IobGV0IGU9MTtlPEU7ZSsrKXtpbmNIZXgobyxyKTthLnJlYWRIZXhOdW1iZXIobixyKTthZGRIZXgobixvLHIpO2EucmVhZEhleE51bWJlcihvLHIpO2FkZEhleChvLG4scik7dC5hZGRDb2Rlc3BhY2VSYW5nZShyKzEsaGV4VG9JbnQobixyKSxoZXhUb0ludChvLHIpKX1icmVhaztjYXNlIDE6YS5yZWFkSGV4KG4scik7YS5yZWFkSGV4TnVtYmVyKG8scik7YWRkSGV4KG8sbixyKTthLnJlYWROdW1iZXIoKTtmb3IobGV0IGU9MTtlPEU7ZSsrKXtpbmNIZXgobyxyKTthLnJlYWRIZXhOdW1iZXIobixyKTthZGRIZXgobixvLHIpO2EucmVhZEhleE51bWJlcihvLHIpO2FkZEhleChvLG4scik7YS5yZWFkTnVtYmVyKCl9YnJlYWs7Y2FzZSAyOmEucmVhZEhleChnLHIpO2g9YS5yZWFkTnVtYmVyKCk7dC5tYXBPbmUoaGV4VG9JbnQoZyxyKSxoKTtmb3IobGV0IGU9MTtlPEU7ZSsrKXtpbmNIZXgoZyxyKTtpZighaSl7YS5yZWFkSGV4TnVtYmVyKEMscik7YWRkSGV4KGcsQyxyKX1oPWEucmVhZFNpZ25lZCgpKyhoKzEpO3QubWFwT25lKGhleFRvSW50KGcsciksaCl9YnJlYWs7Y2FzZSAzOmEucmVhZEhleChuLHIpO2EucmVhZEhleE51bWJlcihvLHIpO2FkZEhleChvLG4scik7aD1hLnJlYWROdW1iZXIoKTt0Lm1hcENpZFJhbmdlKGhleFRvSW50KG4sciksaGV4VG9JbnQobyxyKSxoKTtmb3IobGV0IGU9MTtlPEU7ZSsrKXtpbmNIZXgobyxyKTtpZihpKW4uc2V0KG8pO2Vsc2V7YS5yZWFkSGV4TnVtYmVyKG4scik7YWRkSGV4KG4sbyxyKX1hLnJlYWRIZXhOdW1iZXIobyxyKTthZGRIZXgobyxuLHIpO2g9YS5yZWFkTnVtYmVyKCk7dC5tYXBDaWRSYW5nZShoZXhUb0ludChuLHIpLGhleFRvSW50KG8sciksaCl9YnJlYWs7Y2FzZSA0OmEucmVhZEhleChnLFEpO2EucmVhZEhleChjLHIpO3QubWFwT25lKGhleFRvSW50KGcsUSksaGV4VG9TdHIoYyxyKSk7Zm9yKGxldCBlPTE7ZTxFO2UrKyl7aW5jSGV4KGcsUSk7aWYoIWkpe2EucmVhZEhleE51bWJlcihDLFEpO2FkZEhleChnLEMsUSl9aW5jSGV4KGMscik7YS5yZWFkSGV4U2lnbmVkKEMscik7YWRkSGV4KGMsQyxyKTt0Lm1hcE9uZShoZXhUb0ludChnLFEpLGhleFRvU3RyKGMscikpfWJyZWFrO2Nhc2UgNTphLnJlYWRIZXgobixRKTthLnJlYWRIZXhOdW1iZXIobyxRKTthZGRIZXgobyxuLFEpO2EucmVhZEhleChjLHIpO3QubWFwQmZSYW5nZShoZXhUb0ludChuLFEpLGhleFRvSW50KG8sUSksaGV4VG9TdHIoYyxyKSk7Zm9yKGxldCBlPTE7ZTxFO2UrKyl7aW5jSGV4KG8sUSk7aWYoaSluLnNldChvKTtlbHNle2EucmVhZEhleE51bWJlcihuLFEpO2FkZEhleChuLG8sUSl9YS5yZWFkSGV4TnVtYmVyKG8sUSk7YWRkSGV4KG8sbixRKTthLnJlYWRIZXgoYyxyKTt0Lm1hcEJmUmFuZ2UoaGV4VG9JbnQobixRKSxoZXhUb0ludChvLFEpLGhleFRvU3RyKGMscikpfWJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGBCaW5hcnlDTWFwUmVhZGVyLnByb2Nlc3MgLSB1bmtub3duIHR5cGU6ICR7ZX1gKX19cmV0dXJuIHM/aShzKTp0fX1jb25zdCBNdD1uZXcgVWludDhBcnJheSgwKTtjbGFzcyBEZWNvZGVTdHJlYW0gZXh0ZW5kcyBCYXNlU3RyZWFte2NvbnN0cnVjdG9yKGUpe3N1cGVyKCk7dGhpcy5fcmF3TWluQnVmZmVyTGVuZ3RoPWV8fDA7dGhpcy5wb3M9MDt0aGlzLmJ1ZmZlckxlbmd0aD0wO3RoaXMuZW9mPSExO3RoaXMuYnVmZmVyPU10O3RoaXMubWluQnVmZmVyTGVuZ3RoPTUxMjtpZihlKWZvcig7dGhpcy5taW5CdWZmZXJMZW5ndGg8ZTspdGhpcy5taW5CdWZmZXJMZW5ndGgqPTJ9Z2V0IGlzRW1wdHkoKXtmb3IoOyF0aGlzLmVvZiYmMD09PXRoaXMuYnVmZmVyTGVuZ3RoOyl0aGlzLnJlYWRCbG9jaygpO3JldHVybiAwPT09dGhpcy5idWZmZXJMZW5ndGh9ZW5zdXJlQnVmZmVyKGUpe2NvbnN0IHQ9dGhpcy5idWZmZXI7aWYoZTw9dC5ieXRlTGVuZ3RoKXJldHVybiB0O2xldCBpPXRoaXMubWluQnVmZmVyTGVuZ3RoO2Zvcig7aTxlOylpKj0yO2NvbnN0IGE9bmV3IFVpbnQ4QXJyYXkoaSk7YS5zZXQodCk7cmV0dXJuIHRoaXMuYnVmZmVyPWF9Z2V0Qnl0ZSgpe2NvbnN0IGU9dGhpcy5wb3M7Zm9yKDt0aGlzLmJ1ZmZlckxlbmd0aDw9ZTspe2lmKHRoaXMuZW9mKXJldHVybi0xO3RoaXMucmVhZEJsb2NrKCl9cmV0dXJuIHRoaXMuYnVmZmVyW3RoaXMucG9zKytdfWdldEJ5dGVzKGUsdD1udWxsKXtjb25zdCBpPXRoaXMucG9zO2xldCBhO2lmKGUpe3RoaXMuZW5zdXJlQnVmZmVyKGkrZSk7YT1pK2U7Zm9yKDshdGhpcy5lb2YmJnRoaXMuYnVmZmVyTGVuZ3RoPGE7KXRoaXMucmVhZEJsb2NrKHQpO2NvbnN0IHI9dGhpcy5idWZmZXJMZW5ndGg7YT5yJiYoYT1yKX1lbHNle2Zvcig7IXRoaXMuZW9mOyl0aGlzLnJlYWRCbG9jayh0KTthPXRoaXMuYnVmZmVyTGVuZ3RofXRoaXMucG9zPWE7cmV0dXJuIHRoaXMuYnVmZmVyLnN1YmFycmF5KGksYSl9YXN5bmMgZ2V0SW1hZ2VEYXRhKGUsdD1udWxsKXtpZighdGhpcy5jYW5Bc3luY0RlY29kZUltYWdlRnJvbUJ1ZmZlcilyZXR1cm4gdGhpcy5nZXRCeXRlcyhlLHQpO2NvbnN0IGk9YXdhaXQgdGhpcy5zdHJlYW0uYXN5bmNHZXRCeXRlcygpO3JldHVybiB0aGlzLmRlY29kZUltYWdlKGksdCl9cmVzZXQoKXt0aGlzLnBvcz0wfW1ha2VTdWJTdHJlYW0oZSx0LGk9bnVsbCl7aWYodm9pZCAwPT09dClmb3IoOyF0aGlzLmVvZjspdGhpcy5yZWFkQmxvY2soKTtlbHNle2NvbnN0IGk9ZSt0O2Zvcig7dGhpcy5idWZmZXJMZW5ndGg8PWkmJiF0aGlzLmVvZjspdGhpcy5yZWFkQmxvY2soKX1yZXR1cm4gbmV3IFN0cmVhbSh0aGlzLmJ1ZmZlcixlLHQsaSl9Z2V0QmFzZVN0cmVhbXMoKXtyZXR1cm4gdGhpcy5zdHI/dGhpcy5zdHIuZ2V0QmFzZVN0cmVhbXMoKTpudWxsfX1jbGFzcyBTdHJlYW1zU2VxdWVuY2VTdHJlYW0gZXh0ZW5kcyBEZWNvZGVTdHJlYW17Y29uc3RydWN0b3IoZSx0PW51bGwpe2xldCBpPTA7Zm9yKGNvbnN0IHQgb2YgZSlpKz10IGluc3RhbmNlb2YgRGVjb2RlU3RyZWFtP3QuX3Jhd01pbkJ1ZmZlckxlbmd0aDp0Lmxlbmd0aDtzdXBlcihpKTt0aGlzLnN0cmVhbXM9ZTt0aGlzLl9vbkVycm9yPXR9cmVhZEJsb2NrKCl7Y29uc3QgZT10aGlzLnN0cmVhbXM7aWYoMD09PWUubGVuZ3RoKXt0aGlzLmVvZj0hMDtyZXR1cm59Y29uc3QgdD1lLnNoaWZ0KCk7bGV0IGk7dHJ5e2k9dC5nZXRCeXRlcygpfWNhdGNoKGUpe2lmKHRoaXMuX29uRXJyb3Ipe3RoaXMuX29uRXJyb3IoZSx0LmRpY3Q/Lm9iaklkKTtyZXR1cm59dGhyb3cgZX1jb25zdCBhPXRoaXMuYnVmZmVyTGVuZ3RoLHI9YStpLmxlbmd0aDt0aGlzLmVuc3VyZUJ1ZmZlcihyKS5zZXQoaSxhKTt0aGlzLmJ1ZmZlckxlbmd0aD1yfWdldEJhc2VTdHJlYW1zKCl7Y29uc3QgZT1bXTtmb3IoY29uc3QgdCBvZiB0aGlzLnN0cmVhbXMpe2NvbnN0IGk9dC5nZXRCYXNlU3RyZWFtcygpO2kmJmUucHVzaCguLi5pKX1yZXR1cm4gZS5sZW5ndGg+MD9lOm51bGx9fWNsYXNzIEFzY2lpODVTdHJlYW0gZXh0ZW5kcyBEZWNvZGVTdHJlYW17Y29uc3RydWN0b3IoZSx0KXt0JiYodCo9LjgpO3N1cGVyKHQpO3RoaXMuc3RyPWU7dGhpcy5kaWN0PWUuZGljdDt0aGlzLmlucHV0PW5ldyBVaW50OEFycmF5KDUpfXJlYWRCbG9jaygpe2NvbnN0IGU9dGhpcy5zdHI7bGV0IHQ9ZS5nZXRCeXRlKCk7Zm9yKDtpc1doaXRlU3BhY2UodCk7KXQ9ZS5nZXRCeXRlKCk7aWYoLTE9PT10fHwxMjY9PT10KXt0aGlzLmVvZj0hMDtyZXR1cm59Y29uc3QgaT10aGlzLmJ1ZmZlckxlbmd0aDtsZXQgYSxyO2lmKDEyMj09PXQpe2E9dGhpcy5lbnN1cmVCdWZmZXIoaSs0KTtmb3Iocj0wO3I8NDsrK3IpYVtpK3JdPTA7dGhpcy5idWZmZXJMZW5ndGgrPTR9ZWxzZXtjb25zdCBzPXRoaXMuaW5wdXQ7c1swXT10O2ZvcihyPTE7cjw1Oysrcil7dD1lLmdldEJ5dGUoKTtmb3IoO2lzV2hpdGVTcGFjZSh0KTspdD1lLmdldEJ5dGUoKTtzW3JdPXQ7aWYoLTE9PT10fHwxMjY9PT10KWJyZWFrfWE9dGhpcy5lbnN1cmVCdWZmZXIoaStyLTEpO3RoaXMuYnVmZmVyTGVuZ3RoKz1yLTE7aWYocjw1KXtmb3IoO3I8NTsrK3Ipc1tyXT0xMTc7dGhpcy5lb2Y9ITB9bGV0IG49MDtmb3Iocj0wO3I8NTsrK3Ipbj04NSpuKyhzW3JdLTMzKTtmb3Iocj0zO3I+PTA7LS1yKXthW2krcl09MjU1Jm47bj4+PTh9fX19Y2xhc3MgQXNjaWlIZXhTdHJlYW0gZXh0ZW5kcyBEZWNvZGVTdHJlYW17Y29uc3RydWN0b3IoZSx0KXt0JiYodCo9LjUpO3N1cGVyKHQpO3RoaXMuc3RyPWU7dGhpcy5kaWN0PWUuZGljdDt0aGlzLmZpcnN0RGlnaXQ9LTF9cmVhZEJsb2NrKCl7Y29uc3QgZT10aGlzLnN0ci5nZXRCeXRlcyg4ZTMpO2lmKCFlLmxlbmd0aCl7dGhpcy5lb2Y9ITA7cmV0dXJufWNvbnN0IHQ9ZS5sZW5ndGgrMT4+MSxpPXRoaXMuZW5zdXJlQnVmZmVyKHRoaXMuYnVmZmVyTGVuZ3RoK3QpO2xldCBhPXRoaXMuYnVmZmVyTGVuZ3RoLHI9dGhpcy5maXJzdERpZ2l0O2Zvcihjb25zdCB0IG9mIGUpe2xldCBlO2lmKHQ+PTQ4JiZ0PD01NyllPTE1JnQ7ZWxzZXtpZighKHQ+PTY1JiZ0PD03MHx8dD49OTcmJnQ8PTEwMikpe2lmKDYyPT09dCl7dGhpcy5lb2Y9ITA7YnJlYWt9Y29udGludWV9ZT05KygxNSZ0KX1pZihyPDApcj1lO2Vsc2V7aVthKytdPXI8PDR8ZTtyPS0xfX1pZihyPj0wJiZ0aGlzLmVvZil7aVthKytdPXI8PDQ7cj0tMX10aGlzLmZpcnN0RGlnaXQ9cjt0aGlzLmJ1ZmZlckxlbmd0aD1hfX1jb25zdCBMdD0tMSxIdD1bWy0xLC0xXSxbLTEsLTFdLFs3LDhdLFs3LDddLFs2LDZdLFs2LDZdLFs2LDVdLFs2LDVdLFs0LDBdLFs0LDBdLFs0LDBdLFs0LDBdLFs0LDBdLFs0LDBdLFs0LDBdLFs0LDBdLFszLDFdLFszLDFdLFszLDFdLFszLDFdLFszLDFdLFszLDFdLFszLDFdLFszLDFdLFszLDFdLFszLDFdLFszLDFdLFszLDFdLFszLDFdLFszLDFdLFszLDFdLFszLDFdLFszLDRdLFszLDRdLFszLDRdLFszLDRdLFszLDRdLFszLDRdLFszLDRdLFszLDRdLFszLDRdLFszLDRdLFszLDRdLFszLDRdLFszLDRdLFszLDRdLFszLDRdLFszLDRdLFszLDNdLFszLDNdLFszLDNdLFszLDNdLFszLDNdLFszLDNdLFszLDNdLFszLDNdLFszLDNdLFszLDNdLFszLDNdLFszLDNdLFszLDNdLFszLDNdLFszLDNdLFszLDNdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdXSxKdD1bWy0xLC0xXSxbMTIsLTJdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbMTEsMTc5Ml0sWzExLDE3OTJdLFsxMiwxOTg0XSxbMTIsMjA0OF0sWzEyLDIxMTJdLFsxMiwyMTc2XSxbMTIsMjI0MF0sWzEyLDIzMDRdLFsxMSwxODU2XSxbMTEsMTg1Nl0sWzExLDE5MjBdLFsxMSwxOTIwXSxbMTIsMjM2OF0sWzEyLDI0MzJdLFsxMiwyNDk2XSxbMTIsMjU2MF1dLHZ0PVtbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFs4LDI5XSxbOCwyOV0sWzgsMzBdLFs4LDMwXSxbOCw0NV0sWzgsNDVdLFs4LDQ2XSxbOCw0Nl0sWzcsMjJdLFs3LDIyXSxbNywyMl0sWzcsMjJdLFs3LDIzXSxbNywyM10sWzcsMjNdLFs3LDIzXSxbOCw0N10sWzgsNDddLFs4LDQ4XSxbOCw0OF0sWzYsMTNdLFs2LDEzXSxbNiwxM10sWzYsMTNdLFs2LDEzXSxbNiwxM10sWzYsMTNdLFs2LDEzXSxbNywyMF0sWzcsMjBdLFs3LDIwXSxbNywyMF0sWzgsMzNdLFs4LDMzXSxbOCwzNF0sWzgsMzRdLFs4LDM1XSxbOCwzNV0sWzgsMzZdLFs4LDM2XSxbOCwzN10sWzgsMzddLFs4LDM4XSxbOCwzOF0sWzcsMTldLFs3LDE5XSxbNywxOV0sWzcsMTldLFs4LDMxXSxbOCwzMV0sWzgsMzJdLFs4LDMyXSxbNiwxXSxbNiwxXSxbNiwxXSxbNiwxXSxbNiwxXSxbNiwxXSxbNiwxXSxbNiwxXSxbNiwxMl0sWzYsMTJdLFs2LDEyXSxbNiwxMl0sWzYsMTJdLFs2LDEyXSxbNiwxMl0sWzYsMTJdLFs4LDUzXSxbOCw1M10sWzgsNTRdLFs4LDU0XSxbNywyNl0sWzcsMjZdLFs3LDI2XSxbNywyNl0sWzgsMzldLFs4LDM5XSxbOCw0MF0sWzgsNDBdLFs4LDQxXSxbOCw0MV0sWzgsNDJdLFs4LDQyXSxbOCw0M10sWzgsNDNdLFs4LDQ0XSxbOCw0NF0sWzcsMjFdLFs3LDIxXSxbNywyMV0sWzcsMjFdLFs3LDI4XSxbNywyOF0sWzcsMjhdLFs3LDI4XSxbOCw2MV0sWzgsNjFdLFs4LDYyXSxbOCw2Ml0sWzgsNjNdLFs4LDYzXSxbOCwwXSxbOCwwXSxbOCwzMjBdLFs4LDMyMF0sWzgsMzg0XSxbOCwzODRdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzcsMjddLFs3LDI3XSxbNywyN10sWzcsMjddLFs4LDU5XSxbOCw1OV0sWzgsNjBdLFs4LDYwXSxbOSwxNDcyXSxbOSwxNTM2XSxbOSwxNjAwXSxbOSwxNzI4XSxbNywxOF0sWzcsMThdLFs3LDE4XSxbNywxOF0sWzcsMjRdLFs3LDI0XSxbNywyNF0sWzcsMjRdLFs4LDQ5XSxbOCw0OV0sWzgsNTBdLFs4LDUwXSxbOCw1MV0sWzgsNTFdLFs4LDUyXSxbOCw1Ml0sWzcsMjVdLFs3LDI1XSxbNywyNV0sWzcsMjVdLFs4LDU1XSxbOCw1NV0sWzgsNTZdLFs4LDU2XSxbOCw1N10sWzgsNTddLFs4LDU4XSxbOCw1OF0sWzYsMTkyXSxbNiwxOTJdLFs2LDE5Ml0sWzYsMTkyXSxbNiwxOTJdLFs2LDE5Ml0sWzYsMTkyXSxbNiwxOTJdLFs2LDE2NjRdLFs2LDE2NjRdLFs2LDE2NjRdLFs2LDE2NjRdLFs2LDE2NjRdLFs2LDE2NjRdLFs2LDE2NjRdLFs2LDE2NjRdLFs4LDQ0OF0sWzgsNDQ4XSxbOCw1MTJdLFs4LDUxMl0sWzksNzA0XSxbOSw3NjhdLFs4LDY0MF0sWzgsNjQwXSxbOCw1NzZdLFs4LDU3Nl0sWzksODMyXSxbOSw4OTZdLFs5LDk2MF0sWzksMTAyNF0sWzksMTA4OF0sWzksMTE1Ml0sWzksMTIxNl0sWzksMTI4MF0sWzksMTM0NF0sWzksMTQwOF0sWzcsMjU2XSxbNywyNTZdLFs3LDI1Nl0sWzcsMjU2XSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwyXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNCwzXSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDhdLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs1LDldLFs2LDE2XSxbNiwxNl0sWzYsMTZdLFs2LDE2XSxbNiwxNl0sWzYsMTZdLFs2LDE2XSxbNiwxNl0sWzYsMTddLFs2LDE3XSxbNiwxN10sWzYsMTddLFs2LDE3XSxbNiwxN10sWzYsMTddLFs2LDE3XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw0XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbNiwxNF0sWzYsMTRdLFs2LDE0XSxbNiwxNF0sWzYsMTRdLFs2LDE0XSxbNiwxNF0sWzYsMTRdLFs2LDE1XSxbNiwxNV0sWzYsMTVdLFs2LDE1XSxbNiwxNV0sWzYsMTVdLFs2LDE1XSxbNiwxNV0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDZdLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddLFs0LDddXSxZdD1bWy0xLC0xXSxbLTEsLTFdLFsxMiwtMl0sWzEyLC0yXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFsxMSwxNzkyXSxbMTEsMTc5Ml0sWzExLDE3OTJdLFsxMSwxNzkyXSxbMTIsMTk4NF0sWzEyLDE5ODRdLFsxMiwyMDQ4XSxbMTIsMjA0OF0sWzEyLDIxMTJdLFsxMiwyMTEyXSxbMTIsMjE3Nl0sWzEyLDIxNzZdLFsxMiwyMjQwXSxbMTIsMjI0MF0sWzEyLDIzMDRdLFsxMiwyMzA0XSxbMTEsMTg1Nl0sWzExLDE4NTZdLFsxMSwxODU2XSxbMTEsMTg1Nl0sWzExLDE5MjBdLFsxMSwxOTIwXSxbMTEsMTkyMF0sWzExLDE5MjBdLFsxMiwyMzY4XSxbMTIsMjM2OF0sWzEyLDI0MzJdLFsxMiwyNDMyXSxbMTIsMjQ5Nl0sWzEyLDI0OTZdLFsxMiwyNTYwXSxbMTIsMjU2MF0sWzEwLDE4XSxbMTAsMThdLFsxMCwxOF0sWzEwLDE4XSxbMTAsMThdLFsxMCwxOF0sWzEwLDE4XSxbMTAsMThdLFsxMiw1Ml0sWzEyLDUyXSxbMTMsNjQwXSxbMTMsNzA0XSxbMTMsNzY4XSxbMTMsODMyXSxbMTIsNTVdLFsxMiw1NV0sWzEyLDU2XSxbMTIsNTZdLFsxMywxMjgwXSxbMTMsMTM0NF0sWzEzLDE0MDhdLFsxMywxNDcyXSxbMTIsNTldLFsxMiw1OV0sWzEyLDYwXSxbMTIsNjBdLFsxMywxNTM2XSxbMTMsMTYwMF0sWzExLDI0XSxbMTEsMjRdLFsxMSwyNF0sWzExLDI0XSxbMTEsMjVdLFsxMSwyNV0sWzExLDI1XSxbMTEsMjVdLFsxMywxNjY0XSxbMTMsMTcyOF0sWzEyLDMyMF0sWzEyLDMyMF0sWzEyLDM4NF0sWzEyLDM4NF0sWzEyLDQ0OF0sWzEyLDQ0OF0sWzEzLDUxMl0sWzEzLDU3Nl0sWzEyLDUzXSxbMTIsNTNdLFsxMiw1NF0sWzEyLDU0XSxbMTMsODk2XSxbMTMsOTYwXSxbMTMsMTAyNF0sWzEzLDEwODhdLFsxMywxMTUyXSxbMTMsMTIxNl0sWzEwLDY0XSxbMTAsNjRdLFsxMCw2NF0sWzEwLDY0XSxbMTAsNjRdLFsxMCw2NF0sWzEwLDY0XSxbMTAsNjRdXSxUdD1bWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFsxMSwyM10sWzExLDIzXSxbMTIsNTBdLFsxMiw1MV0sWzEyLDQ0XSxbMTIsNDVdLFsxMiw0Nl0sWzEyLDQ3XSxbMTIsNTddLFsxMiw1OF0sWzEyLDYxXSxbMTIsMjU2XSxbMTAsMTZdLFsxMCwxNl0sWzEwLDE2XSxbMTAsMTZdLFsxMCwxN10sWzEwLDE3XSxbMTAsMTddLFsxMCwxN10sWzEyLDQ4XSxbMTIsNDldLFsxMiw2Ml0sWzEyLDYzXSxbMTIsMzBdLFsxMiwzMV0sWzEyLDMyXSxbMTIsMzNdLFsxMiw0MF0sWzEyLDQxXSxbMTEsMjJdLFsxMSwyMl0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbOSwxNV0sWzksMTVdLFs5LDE1XSxbOSwxNV0sWzksMTVdLFs5LDE1XSxbOSwxNV0sWzksMTVdLFsxMiwxMjhdLFsxMiwxOTJdLFsxMiwyNl0sWzEyLDI3XSxbMTIsMjhdLFsxMiwyOV0sWzExLDE5XSxbMTEsMTldLFsxMSwyMF0sWzExLDIwXSxbMTIsMzRdLFsxMiwzNV0sWzEyLDM2XSxbMTIsMzddLFsxMiwzOF0sWzEyLDM5XSxbMTEsMjFdLFsxMSwyMV0sWzEyLDQyXSxbMTIsNDNdLFsxMCwwXSxbMTAsMF0sWzEwLDBdLFsxMCwwXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdXSxLdD1bWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbNiw5XSxbNiw4XSxbNSw3XSxbNSw3XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw1XSxbNCw1XSxbNCw1XSxbNCw1XSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwzXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXSxbMiwyXV07Y2xhc3MgQ0NJVFRGYXhEZWNvZGVye2NvbnN0cnVjdG9yKGUsdD17fSl7aWYoIWV8fCJmdW5jdGlvbiIhPXR5cGVvZiBlLm5leHQpdGhyb3cgbmV3IEVycm9yKCdDQ0lUVEZheERlY29kZXIgLSBpbnZhbGlkICJzb3VyY2UiIHBhcmFtZXRlci4nKTt0aGlzLnNvdXJjZT1lO3RoaXMuZW9mPSExO3RoaXMuZW5jb2Rpbmc9dC5LfHwwO3RoaXMuZW9saW5lPXQuRW5kT2ZMaW5lfHwhMTt0aGlzLmJ5dGVBbGlnbj10LkVuY29kZWRCeXRlQWxpZ258fCExO3RoaXMuY29sdW1ucz10LkNvbHVtbnN8fDE3Mjg7dGhpcy5yb3dzPXQuUm93c3x8MDt0aGlzLmVvYmxvY2s9dC5FbmRPZkJsb2NrPz8hMDt0aGlzLmJsYWNrPXQuQmxhY2tJczF8fCExO3RoaXMuY29kaW5nTGluZT1uZXcgVWludDMyQXJyYXkodGhpcy5jb2x1bW5zKzEpO3RoaXMucmVmTGluZT1uZXcgVWludDMyQXJyYXkodGhpcy5jb2x1bW5zKzIpO3RoaXMuY29kaW5nTGluZVswXT10aGlzLmNvbHVtbnM7dGhpcy5jb2RpbmdQb3M9MDt0aGlzLnJvdz0wO3RoaXMubmV4dExpbmUyRD10aGlzLmVuY29kaW5nPDA7dGhpcy5pbnB1dEJpdHM9MDt0aGlzLmlucHV0QnVmPTA7dGhpcy5vdXRwdXRCaXRzPTA7dGhpcy5yb3dzRG9uZT0hMTtsZXQgaTtmb3IoOzA9PT0oaT10aGlzLl9sb29rQml0cygxMikpOyl0aGlzLl9lYXRCaXRzKDEpOzE9PT1pJiZ0aGlzLl9lYXRCaXRzKDEyKTtpZih0aGlzLmVuY29kaW5nPjApe3RoaXMubmV4dExpbmUyRD0hdGhpcy5fbG9va0JpdHMoMSk7dGhpcy5fZWF0Qml0cygxKX19cmVhZE5leHRDaGFyKCl7aWYodGhpcy5lb2YpcmV0dXJuLTE7Y29uc3QgZT10aGlzLnJlZkxpbmUsdD10aGlzLmNvZGluZ0xpbmUsaT10aGlzLmNvbHVtbnM7bGV0IGEscixzLG4sbztpZigwPT09dGhpcy5vdXRwdXRCaXRzKXt0aGlzLnJvd3NEb25lJiYodGhpcy5lb2Y9ITApO2lmKHRoaXMuZW9mKXJldHVybi0xO3RoaXMuZXJyPSExO2xldCBzLG8sZztpZih0aGlzLm5leHRMaW5lMkQpe2ZvcihuPTA7dFtuXTxpOysrbillW25dPXRbbl07ZVtuKytdPWk7ZVtuXT1pO3RbMF09MDt0aGlzLmNvZGluZ1Bvcz0wO2E9MDtyPTA7Zm9yKDt0W3RoaXMuY29kaW5nUG9zXTxpOyl7cz10aGlzLl9nZXRUd29EaW1Db2RlKCk7c3dpdGNoKHMpe2Nhc2UgMDp0aGlzLl9hZGRQaXhlbHMoZVthKzFdLHIpO2VbYSsxXTxpJiYoYSs9Mik7YnJlYWs7Y2FzZSAxOnM9bz0wO2lmKHIpe2Rve3MrPWc9dGhpcy5fZ2V0QmxhY2tDb2RlKCl9d2hpbGUoZz49NjQpO2Rve28rPWc9dGhpcy5fZ2V0V2hpdGVDb2RlKCl9d2hpbGUoZz49NjQpfWVsc2V7ZG97cys9Zz10aGlzLl9nZXRXaGl0ZUNvZGUoKX13aGlsZShnPj02NCk7ZG97bys9Zz10aGlzLl9nZXRCbGFja0NvZGUoKX13aGlsZShnPj02NCl9dGhpcy5fYWRkUGl4ZWxzKHRbdGhpcy5jb2RpbmdQb3NdK3Mscik7dFt0aGlzLmNvZGluZ1Bvc108aSYmdGhpcy5fYWRkUGl4ZWxzKHRbdGhpcy5jb2RpbmdQb3NdK28sMV5yKTtmb3IoO2VbYV08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW2FdPGk7KWErPTI7YnJlYWs7Y2FzZSA3OnRoaXMuX2FkZFBpeGVscyhlW2FdKzMscik7cl49MTtpZih0W3RoaXMuY29kaW5nUG9zXTxpKXsrK2E7Zm9yKDtlW2FdPD10W3RoaXMuY29kaW5nUG9zXSYmZVthXTxpOylhKz0yfWJyZWFrO2Nhc2UgNTp0aGlzLl9hZGRQaXhlbHMoZVthXSsyLHIpO3JePTE7aWYodFt0aGlzLmNvZGluZ1Bvc108aSl7KythO2Zvcig7ZVthXTw9dFt0aGlzLmNvZGluZ1Bvc10mJmVbYV08aTspYSs9Mn1icmVhaztjYXNlIDM6dGhpcy5fYWRkUGl4ZWxzKGVbYV0rMSxyKTtyXj0xO2lmKHRbdGhpcy5jb2RpbmdQb3NdPGkpeysrYTtmb3IoO2VbYV08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW2FdPGk7KWErPTJ9YnJlYWs7Y2FzZSAyOnRoaXMuX2FkZFBpeGVscyhlW2FdLHIpO3JePTE7aWYodFt0aGlzLmNvZGluZ1Bvc108aSl7KythO2Zvcig7ZVthXTw9dFt0aGlzLmNvZGluZ1Bvc10mJmVbYV08aTspYSs9Mn1icmVhaztjYXNlIDg6dGhpcy5fYWRkUGl4ZWxzTmVnKGVbYV0tMyxyKTtyXj0xO2lmKHRbdGhpcy5jb2RpbmdQb3NdPGkpe2E+MD8tLWE6KythO2Zvcig7ZVthXTw9dFt0aGlzLmNvZGluZ1Bvc10mJmVbYV08aTspYSs9Mn1icmVhaztjYXNlIDY6dGhpcy5fYWRkUGl4ZWxzTmVnKGVbYV0tMixyKTtyXj0xO2lmKHRbdGhpcy5jb2RpbmdQb3NdPGkpe2E+MD8tLWE6KythO2Zvcig7ZVthXTw9dFt0aGlzLmNvZGluZ1Bvc10mJmVbYV08aTspYSs9Mn1icmVhaztjYXNlIDQ6dGhpcy5fYWRkUGl4ZWxzTmVnKGVbYV0tMSxyKTtyXj0xO2lmKHRbdGhpcy5jb2RpbmdQb3NdPGkpe2E+MD8tLWE6KythO2Zvcig7ZVthXTw9dFt0aGlzLmNvZGluZ1Bvc10mJmVbYV08aTspYSs9Mn1icmVhaztjYXNlIEx0OnRoaXMuX2FkZFBpeGVscyhpLDApO3RoaXMuZW9mPSEwO2JyZWFrO2RlZmF1bHQ6aW5mbygiYmFkIDJkIGNvZGUiKTt0aGlzLl9hZGRQaXhlbHMoaSwwKTt0aGlzLmVycj0hMH19fWVsc2V7dFswXT0wO3RoaXMuY29kaW5nUG9zPTA7cj0wO2Zvcig7dFt0aGlzLmNvZGluZ1Bvc108aTspe3M9MDtpZihyKWRve3MrPWc9dGhpcy5fZ2V0QmxhY2tDb2RlKCl9d2hpbGUoZz49NjQpO2Vsc2UgZG97cys9Zz10aGlzLl9nZXRXaGl0ZUNvZGUoKX13aGlsZShnPj02NCk7dGhpcy5fYWRkUGl4ZWxzKHRbdGhpcy5jb2RpbmdQb3NdK3Mscik7cl49MX19bGV0IGM9ITE7dGhpcy5ieXRlQWxpZ24mJih0aGlzLmlucHV0Qml0cyY9LTgpO2lmKHRoaXMuZW9ibG9ja3x8dGhpcy5yb3chPT10aGlzLnJvd3MtMSl7cz10aGlzLl9sb29rQml0cygxMik7aWYodGhpcy5lb2xpbmUpZm9yKDtzIT09THQmJjEhPT1zOyl7dGhpcy5fZWF0Qml0cygxKTtzPXRoaXMuX2xvb2tCaXRzKDEyKX1lbHNlIGZvcig7MD09PXM7KXt0aGlzLl9lYXRCaXRzKDEpO3M9dGhpcy5fbG9va0JpdHMoMTIpfWlmKDE9PT1zKXt0aGlzLl9lYXRCaXRzKDEyKTtjPSEwfWVsc2Ugcz09PUx0JiYodGhpcy5lb2Y9ITApfWVsc2UgdGhpcy5yb3dzRG9uZT0hMDtpZighdGhpcy5lb2YmJnRoaXMuZW5jb2Rpbmc+MCYmIXRoaXMucm93c0RvbmUpe3RoaXMubmV4dExpbmUyRD0hdGhpcy5fbG9va0JpdHMoMSk7dGhpcy5fZWF0Qml0cygxKX1pZih0aGlzLmVvYmxvY2smJmMmJnRoaXMuYnl0ZUFsaWduKXtzPXRoaXMuX2xvb2tCaXRzKDEyKTtpZigxPT09cyl7dGhpcy5fZWF0Qml0cygxMik7aWYodGhpcy5lbmNvZGluZz4wKXt0aGlzLl9sb29rQml0cygxKTt0aGlzLl9lYXRCaXRzKDEpfWlmKHRoaXMuZW5jb2Rpbmc+PTApZm9yKG49MDtuPDQ7KytuKXtzPXRoaXMuX2xvb2tCaXRzKDEyKTsxIT09cyYmaW5mbygiYmFkIHJ0YyBjb2RlOiAiK3MpO3RoaXMuX2VhdEJpdHMoMTIpO2lmKHRoaXMuZW5jb2Rpbmc+MCl7dGhpcy5fbG9va0JpdHMoMSk7dGhpcy5fZWF0Qml0cygxKX19dGhpcy5lb2Y9ITB9fWVsc2UgaWYodGhpcy5lcnImJnRoaXMuZW9saW5lKXtmb3IoOzspe3M9dGhpcy5fbG9va0JpdHMoMTMpO2lmKHM9PT1MdCl7dGhpcy5lb2Y9ITA7cmV0dXJuLTF9aWYocz4+MT09MSlicmVhazt0aGlzLl9lYXRCaXRzKDEpfXRoaXMuX2VhdEJpdHMoMTIpO2lmKHRoaXMuZW5jb2Rpbmc+MCl7dGhpcy5fZWF0Qml0cygxKTt0aGlzLm5leHRMaW5lMkQ9ISgxJnMpfX10aGlzLm91dHB1dEJpdHM9dFswXT4wP3RbdGhpcy5jb2RpbmdQb3M9MF06dFt0aGlzLmNvZGluZ1Bvcz0xXTt0aGlzLnJvdysrfWlmKHRoaXMub3V0cHV0Qml0cz49OCl7bz0xJnRoaXMuY29kaW5nUG9zPzA6MjU1O3RoaXMub3V0cHV0Qml0cy09ODtpZigwPT09dGhpcy5vdXRwdXRCaXRzJiZ0W3RoaXMuY29kaW5nUG9zXTxpKXt0aGlzLmNvZGluZ1BvcysrO3RoaXMub3V0cHV0Qml0cz10W3RoaXMuY29kaW5nUG9zXS10W3RoaXMuY29kaW5nUG9zLTFdfX1lbHNle3M9ODtvPTA7ZG97aWYoIm51bWJlciIhPXR5cGVvZiB0aGlzLm91dHB1dEJpdHMpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCdJbnZhbGlkIC9DQ0lUVEZheERlY29kZSBkYXRhLCAib3V0cHV0Qml0cyIgbXVzdCBiZSBhIG51bWJlci4nKTtpZih0aGlzLm91dHB1dEJpdHM+cyl7bzw8PXM7MSZ0aGlzLmNvZGluZ1Bvc3x8KG98PTI1NT4+OC1zKTt0aGlzLm91dHB1dEJpdHMtPXM7cz0wfWVsc2V7bzw8PXRoaXMub3V0cHV0Qml0czsxJnRoaXMuY29kaW5nUG9zfHwob3w9MjU1Pj44LXRoaXMub3V0cHV0Qml0cyk7cy09dGhpcy5vdXRwdXRCaXRzO3RoaXMub3V0cHV0Qml0cz0wO2lmKHRbdGhpcy5jb2RpbmdQb3NdPGkpe3RoaXMuY29kaW5nUG9zKys7dGhpcy5vdXRwdXRCaXRzPXRbdGhpcy5jb2RpbmdQb3NdLXRbdGhpcy5jb2RpbmdQb3MtMV19ZWxzZSBpZihzPjApe288PD1zO3M9MH19fXdoaWxlKHMpfXRoaXMuYmxhY2smJihvXj0yNTUpO3JldHVybiBvfV9hZGRQaXhlbHMoZSx0KXtjb25zdCBpPXRoaXMuY29kaW5nTGluZTtsZXQgYT10aGlzLmNvZGluZ1BvcztpZihlPmlbYV0pe2lmKGU+dGhpcy5jb2x1bW5zKXtpbmZvKCJyb3cgaXMgd3JvbmcgbGVuZ3RoIik7dGhpcy5lcnI9ITA7ZT10aGlzLmNvbHVtbnN9MSZhXnQmJisrYTtpW2FdPWV9dGhpcy5jb2RpbmdQb3M9YX1fYWRkUGl4ZWxzTmVnKGUsdCl7Y29uc3QgaT10aGlzLmNvZGluZ0xpbmU7bGV0IGE9dGhpcy5jb2RpbmdQb3M7aWYoZT5pW2FdKXtpZihlPnRoaXMuY29sdW1ucyl7aW5mbygicm93IGlzIHdyb25nIGxlbmd0aCIpO3RoaXMuZXJyPSEwO2U9dGhpcy5jb2x1bW5zfTEmYV50JiYrK2E7aVthXT1lfWVsc2UgaWYoZTxpW2FdKXtpZihlPDApe2luZm8oImludmFsaWQgY29kZSIpO3RoaXMuZXJyPSEwO2U9MH1mb3IoO2E+MCYmZTxpW2EtMV07KS0tYTtpW2FdPWV9dGhpcy5jb2RpbmdQb3M9YX1fZmluZFRhYmxlQ29kZShlLHQsaSxhKXtjb25zdCByPWF8fDA7Zm9yKGxldCBhPWU7YTw9dDsrK2Epe2xldCBlPXRoaXMuX2xvb2tCaXRzKGEpO2lmKGU9PT1MdClyZXR1cm5bITAsMSwhMV07YTx0JiYoZTw8PXQtYSk7aWYoIXJ8fGU+PXIpe2NvbnN0IHQ9aVtlLXJdO2lmKHRbMF09PT1hKXt0aGlzLl9lYXRCaXRzKGEpO3JldHVyblshMCx0WzFdLCEwXX19fXJldHVyblshMSwwLCExXX1fZ2V0VHdvRGltQ29kZSgpe2xldCBlLHQ9MDtpZih0aGlzLmVvYmxvY2spe3Q9dGhpcy5fbG9va0JpdHMoNyk7ZT1IdFt0XTtpZihlPy5bMF0+MCl7dGhpcy5fZWF0Qml0cyhlWzBdKTtyZXR1cm4gZVsxXX19ZWxzZXtjb25zdCBlPXRoaXMuX2ZpbmRUYWJsZUNvZGUoMSw3LEh0KTtpZihlWzBdJiZlWzJdKXJldHVybiBlWzFdfWluZm8oIkJhZCB0d28gZGltIGNvZGUiKTtyZXR1cm4gTHR9X2dldFdoaXRlQ29kZSgpe2xldCBlLHQ9MDtpZih0aGlzLmVvYmxvY2spe3Q9dGhpcy5fbG9va0JpdHMoMTIpO2lmKHQ9PT1MdClyZXR1cm4gMTtlPXQ+PjU9PTA/SnRbdF06dnRbdD4+M107aWYoZVswXT4wKXt0aGlzLl9lYXRCaXRzKGVbMF0pO3JldHVybiBlWzFdfX1lbHNle2xldCBlPXRoaXMuX2ZpbmRUYWJsZUNvZGUoMSw5LHZ0KTtpZihlWzBdKXJldHVybiBlWzFdO2U9dGhpcy5fZmluZFRhYmxlQ29kZSgxMSwxMixKdCk7aWYoZVswXSlyZXR1cm4gZVsxXX1pbmZvKCJiYWQgd2hpdGUgY29kZSIpO3RoaXMuX2VhdEJpdHMoMSk7cmV0dXJuIDF9X2dldEJsYWNrQ29kZSgpe2xldCBlLHQ7aWYodGhpcy5lb2Jsb2NrKXtlPXRoaXMuX2xvb2tCaXRzKDEzKTtpZihlPT09THQpcmV0dXJuIDE7dD1lPj43PT0wP1l0W2VdOmU+Pjk9PTAmJmU+PjchPTA/VHRbKGU+PjEpLTY0XTpLdFtlPj43XTtpZih0WzBdPjApe3RoaXMuX2VhdEJpdHModFswXSk7cmV0dXJuIHRbMV19fWVsc2V7bGV0IGU9dGhpcy5fZmluZFRhYmxlQ29kZSgyLDYsS3QpO2lmKGVbMF0pcmV0dXJuIGVbMV07ZT10aGlzLl9maW5kVGFibGVDb2RlKDcsMTIsVHQsNjQpO2lmKGVbMF0pcmV0dXJuIGVbMV07ZT10aGlzLl9maW5kVGFibGVDb2RlKDEwLDEzLFl0KTtpZihlWzBdKXJldHVybiBlWzFdfWluZm8oImJhZCBibGFjayBjb2RlIik7dGhpcy5fZWF0Qml0cygxKTtyZXR1cm4gMX1fbG9va0JpdHMoZSl7bGV0IHQ7Zm9yKDt0aGlzLmlucHV0Qml0czxlOyl7aWYoLTE9PT0odD10aGlzLnNvdXJjZS5uZXh0KCkpKXJldHVybiAwPT09dGhpcy5pbnB1dEJpdHM/THQ6dGhpcy5pbnB1dEJ1Zjw8ZS10aGlzLmlucHV0Qml0cyY2NTUzNT4+MTYtZTt0aGlzLmlucHV0QnVmPXRoaXMuaW5wdXRCdWY8PDh8dDt0aGlzLmlucHV0Qml0cys9OH1yZXR1cm4gdGhpcy5pbnB1dEJ1Zj4+dGhpcy5pbnB1dEJpdHMtZSY2NTUzNT4+MTYtZX1fZWF0Qml0cyhlKXsodGhpcy5pbnB1dEJpdHMtPWUpPDAmJih0aGlzLmlucHV0Qml0cz0wKX19Y2xhc3MgQ0NJVFRGYXhTdHJlYW0gZXh0ZW5kcyBEZWNvZGVTdHJlYW17Y29uc3RydWN0b3IoZSx0LGkpe3N1cGVyKHQpO3RoaXMuc3RyPWU7dGhpcy5kaWN0PWUuZGljdDtpIGluc3RhbmNlb2YgRGljdHx8KGk9RGljdC5lbXB0eSk7Y29uc3QgYT17bmV4dDooKT0+ZS5nZXRCeXRlKCl9O3RoaXMuY2NpdHRGYXhEZWNvZGVyPW5ldyBDQ0lUVEZheERlY29kZXIoYSx7SzppLmdldCgiSyIpLEVuZE9mTGluZTppLmdldCgiRW5kT2ZMaW5lIiksRW5jb2RlZEJ5dGVBbGlnbjppLmdldCgiRW5jb2RlZEJ5dGVBbGlnbiIpLENvbHVtbnM6aS5nZXQoIkNvbHVtbnMiKSxSb3dzOmkuZ2V0KCJSb3dzIiksRW5kT2ZCbG9jazppLmdldCgiRW5kT2ZCbG9jayIpLEJsYWNrSXMxOmkuZ2V0KCJCbGFja0lzMSIpfSl9cmVhZEJsb2NrKCl7Zm9yKDshdGhpcy5lb2Y7KXtjb25zdCBlPXRoaXMuY2NpdHRGYXhEZWNvZGVyLnJlYWROZXh0Q2hhcigpO2lmKC0xPT09ZSl7dGhpcy5lb2Y9ITA7cmV0dXJufXRoaXMuZW5zdXJlQnVmZmVyKHRoaXMuYnVmZmVyTGVuZ3RoKzEpO3RoaXMuYnVmZmVyW3RoaXMuYnVmZmVyTGVuZ3RoKytdPWV9fX1jb25zdCBxdD1uZXcgSW50MzJBcnJheShbMTYsMTcsMTgsMCw4LDcsOSw2LDEwLDUsMTEsNCwxMiwzLDEzLDIsMTQsMSwxNV0pLE90PW5ldyBJbnQzMkFycmF5KFszLDQsNSw2LDcsOCw5LDEwLDY1NTQ3LDY1NTQ5LDY1NTUxLDY1NTUzLDEzMTA5MSwxMzEwOTUsMTMxMDk5LDEzMTEwMywxOTY2NDMsMTk2NjUxLDE5NjY1OSwxOTY2NjcsMjYyMjExLDI2MjIyNywyNjIyNDMsMjYyMjU5LDMyNzgxMSwzMjc4NDMsMzI3ODc1LDMyNzkwNywyNTgsMjU4LDI1OF0pLFB0PW5ldyBJbnQzMkFycmF5KFsxLDIsMyw0LDY1NTQxLDY1NTQzLDEzMTA4MSwxMzEwODUsMTk2NjI1LDE5NjYzMywyNjIxNzcsMjYyMTkzLDMyNzc0NSwzMjc3NzcsMzkzMzQ1LDM5MzQwOSw0NTkwMDksNDU5MTM3LDUyNDgwMSw1MjUwNTcsNTkwODQ5LDU5MTM2MSw2NTc0MDksNjU4NDMzLDcyNDk5Myw3MjcwNDEsNzk0NjI1LDc5ODcyMSw4NjgzNTMsODc2NTQ1XSksV3Q9W25ldyBJbnQzMkFycmF5KFs0NTkwMDgsNTI0MzY4LDUyNDMwNCw1MjQ1NjgsNDU5MDI0LDUyNDQwMCw1MjQzMzYsNTkwMDE2LDQ1OTAxNiw1MjQzODQsNTI0MzIwLDU4OTk4NCw1MjQyODgsNTI0NDE2LDUyNDM1Miw1OTAwNDgsNDU5MDEyLDUyNDM3Niw1MjQzMTIsNTg5OTY4LDQ1OTAyOCw1MjQ0MDgsNTI0MzQ0LDU5MDAzMiw0NTkwMjAsNTI0MzkyLDUyNDMyOCw1OWU0LDUyNDI5Niw1MjQ0MjQsNTI0MzYwLDU5MDA2NCw0NTkwMTAsNTI0MzcyLDUyNDMwOCw1MjQ1NzIsNDU5MDI2LDUyNDQwNCw1MjQzNDAsNTkwMDI0LDQ1OTAxOCw1MjQzODgsNTI0MzI0LDU4OTk5Miw1MjQyOTIsNTI0NDIwLDUyNDM1Niw1OTAwNTYsNDU5MDE0LDUyNDM4MCw1MjQzMTYsNTg5OTc2LDQ1OTAzMCw1MjQ0MTIsNTI0MzQ4LDU5MDA0MCw0NTkwMjIsNTI0Mzk2LDUyNDMzMiw1OTAwMDgsNTI0MzAwLDUyNDQyOCw1MjQzNjQsNTkwMDcyLDQ1OTAwOSw1MjQzNzAsNTI0MzA2LDUyNDU3MCw0NTkwMjUsNTI0NDAyLDUyNDMzOCw1OTAwMjAsNDU5MDE3LDUyNDM4Niw1MjQzMjIsNTg5OTg4LDUyNDI5MCw1MjQ0MTgsNTI0MzU0LDU5MDA1Miw0NTkwMTMsNTI0Mzc4LDUyNDMxNCw1ODk5NzIsNDU5MDI5LDUyNDQxMCw1MjQzNDYsNTkwMDM2LDQ1OTAyMSw1MjQzOTQsNTI0MzMwLDU5MDAwNCw1MjQyOTgsNTI0NDI2LDUyNDM2Miw1OTAwNjgsNDU5MDExLDUyNDM3NCw1MjQzMTAsNTI0NTc0LDQ1OTAyNyw1MjQ0MDYsNTI0MzQyLDU5MDAyOCw0NTkwMTksNTI0MzkwLDUyNDMyNiw1ODk5OTYsNTI0Mjk0LDUyNDQyMiw1MjQzNTgsNTkwMDYwLDQ1OTAxNSw1MjQzODIsNTI0MzE4LDU4OTk4MCw0NTkwMzEsNTI0NDE0LDUyNDM1MCw1OTAwNDQsNDU5MDIzLDUyNDM5OCw1MjQzMzQsNTkwMDEyLDUyNDMwMiw1MjQ0MzAsNTI0MzY2LDU5MDA3Niw0NTkwMDgsNTI0MzY5LDUyNDMwNSw1MjQ1NjksNDU5MDI0LDUyNDQwMSw1MjQzMzcsNTkwMDE4LDQ1OTAxNiw1MjQzODUsNTI0MzIxLDU4OTk4Niw1MjQyODksNTI0NDE3LDUyNDM1Myw1OTAwNTAsNDU5MDEyLDUyNDM3Nyw1MjQzMTMsNTg5OTcwLDQ1OTAyOCw1MjQ0MDksNTI0MzQ1LDU5MDAzNCw0NTkwMjAsNTI0MzkzLDUyNDMyOSw1OTAwMDIsNTI0Mjk3LDUyNDQyNSw1MjQzNjEsNTkwMDY2LDQ1OTAxMCw1MjQzNzMsNTI0MzA5LDUyNDU3Myw0NTkwMjYsNTI0NDA1LDUyNDM0MSw1OTAwMjYsNDU5MDE4LDUyNDM4OSw1MjQzMjUsNTg5OTk0LDUyNDI5Myw1MjQ0MjEsNTI0MzU3LDU5MDA1OCw0NTkwMTQsNTI0MzgxLDUyNDMxNyw1ODk5NzgsNDU5MDMwLDUyNDQxMyw1MjQzNDksNTkwMDQyLDQ1OTAyMiw1MjQzOTcsNTI0MzMzLDU5MDAxMCw1MjQzMDEsNTI0NDI5LDUyNDM2NSw1OTAwNzQsNDU5MDA5LDUyNDM3MSw1MjQzMDcsNTI0NTcxLDQ1OTAyNSw1MjQ0MDMsNTI0MzM5LDU5MDAyMiw0NTkwMTcsNTI0Mzg3LDUyNDMyMyw1ODk5OTAsNTI0MjkxLDUyNDQxOSw1MjQzNTUsNTkwMDU0LDQ1OTAxMyw1MjQzNzksNTI0MzE1LDU4OTk3NCw0NTkwMjksNTI0NDExLDUyNDM0Nyw1OTAwMzgsNDU5MDIxLDUyNDM5NSw1MjQzMzEsNTkwMDA2LDUyNDI5OSw1MjQ0MjcsNTI0MzYzLDU5MDA3MCw0NTkwMTEsNTI0Mzc1LDUyNDMxMSw1MjQ1NzUsNDU5MDI3LDUyNDQwNyw1MjQzNDMsNTkwMDMwLDQ1OTAxOSw1MjQzOTEsNTI0MzI3LDU4OTk5OCw1MjQyOTUsNTI0NDIzLDUyNDM1OSw1OTAwNjIsNDU5MDE1LDUyNDM4Myw1MjQzMTksNTg5OTgyLDQ1OTAzMSw1MjQ0MTUsNTI0MzUxLDU5MDA0Niw0NTkwMjMsNTI0Mzk5LDUyNDMzNSw1OTAwMTQsNTI0MzAzLDUyNDQzMSw1MjQzNjcsNTkwMDc4LDQ1OTAwOCw1MjQzNjgsNTI0MzA0LDUyNDU2OCw0NTkwMjQsNTI0NDAwLDUyNDMzNiw1OTAwMTcsNDU5MDE2LDUyNDM4NCw1MjQzMjAsNTg5OTg1LDUyNDI4OCw1MjQ0MTYsNTI0MzUyLDU5MDA0OSw0NTkwMTIsNTI0Mzc2LDUyNDMxMiw1ODk5NjksNDU5MDI4LDUyNDQwOCw1MjQzNDQsNTkwMDMzLDQ1OTAyMCw1MjQzOTIsNTI0MzI4LDU5MDAwMSw1MjQyOTYsNTI0NDI0LDUyNDM2MCw1OTAwNjUsNDU5MDEwLDUyNDM3Miw1MjQzMDgsNTI0NTcyLDQ1OTAyNiw1MjQ0MDQsNTI0MzQwLDU5MDAyNSw0NTkwMTgsNTI0Mzg4LDUyNDMyNCw1ODk5OTMsNTI0MjkyLDUyNDQyMCw1MjQzNTYsNTkwMDU3LDQ1OTAxNCw1MjQzODAsNTI0MzE2LDU4OTk3Nyw0NTkwMzAsNTI0NDEyLDUyNDM0OCw1OTAwNDEsNDU5MDIyLDUyNDM5Niw1MjQzMzIsNTkwMDA5LDUyNDMwMCw1MjQ0MjgsNTI0MzY0LDU5MDA3Myw0NTkwMDksNTI0MzcwLDUyNDMwNiw1MjQ1NzAsNDU5MDI1LDUyNDQwMiw1MjQzMzgsNTkwMDIxLDQ1OTAxNyw1MjQzODYsNTI0MzIyLDU4OTk4OSw1MjQyOTAsNTI0NDE4LDUyNDM1NCw1OTAwNTMsNDU5MDEzLDUyNDM3OCw1MjQzMTQsNTg5OTczLDQ1OTAyOSw1MjQ0MTAsNTI0MzQ2LDU5MDAzNyw0NTkwMjEsNTI0Mzk0LDUyNDMzMCw1OTAwMDUsNTI0Mjk4LDUyNDQyNiw1MjQzNjIsNTkwMDY5LDQ1OTAxMSw1MjQzNzQsNTI0MzEwLDUyNDU3NCw0NTkwMjcsNTI0NDA2LDUyNDM0Miw1OTAwMjksNDU5MDE5LDUyNDM5MCw1MjQzMjYsNTg5OTk3LDUyNDI5NCw1MjQ0MjIsNTI0MzU4LDU5MDA2MSw0NTkwMTUsNTI0MzgyLDUyNDMxOCw1ODk5ODEsNDU5MDMxLDUyNDQxNCw1MjQzNTAsNTkwMDQ1LDQ1OTAyMyw1MjQzOTgsNTI0MzM0LDU5MDAxMyw1MjQzMDIsNTI0NDMwLDUyNDM2Niw1OTAwNzcsNDU5MDA4LDUyNDM2OSw1MjQzMDUsNTI0NTY5LDQ1OTAyNCw1MjQ0MDEsNTI0MzM3LDU5MDAxOSw0NTkwMTYsNTI0Mzg1LDUyNDMyMSw1ODk5ODcsNTI0Mjg5LDUyNDQxNyw1MjQzNTMsNTkwMDUxLDQ1OTAxMiw1MjQzNzcsNTI0MzEzLDU4OTk3MSw0NTkwMjgsNTI0NDA5LDUyNDM0NSw1OTAwMzUsNDU5MDIwLDUyNDM5Myw1MjQzMjksNTkwMDAzLDUyNDI5Nyw1MjQ0MjUsNTI0MzYxLDU5MDA2Nyw0NTkwMTAsNTI0MzczLDUyNDMwOSw1MjQ1NzMsNDU5MDI2LDUyNDQwNSw1MjQzNDEsNTkwMDI3LDQ1OTAxOCw1MjQzODksNTI0MzI1LDU4OTk5NSw1MjQyOTMsNTI0NDIxLDUyNDM1Nyw1OTAwNTksNDU5MDE0LDUyNDM4MSw1MjQzMTcsNTg5OTc5LDQ1OTAzMCw1MjQ0MTMsNTI0MzQ5LDU5MDA0Myw0NTkwMjIsNTI0Mzk3LDUyNDMzMyw1OTAwMTEsNTI0MzAxLDUyNDQyOSw1MjQzNjUsNTkwMDc1LDQ1OTAwOSw1MjQzNzEsNTI0MzA3LDUyNDU3MSw0NTkwMjUsNTI0NDAzLDUyNDMzOSw1OTAwMjMsNDU5MDE3LDUyNDM4Nyw1MjQzMjMsNTg5OTkxLDUyNDI5MSw1MjQ0MTksNTI0MzU1LDU5MDA1NSw0NTkwMTMsNTI0Mzc5LDUyNDMxNSw1ODk5NzUsNDU5MDI5LDUyNDQxMSw1MjQzNDcsNTkwMDM5LDQ1OTAyMSw1MjQzOTUsNTI0MzMxLDU5MDAwNyw1MjQyOTksNTI0NDI3LDUyNDM2Myw1OTAwNzEsNDU5MDExLDUyNDM3NSw1MjQzMTEsNTI0NTc1LDQ1OTAyNyw1MjQ0MDcsNTI0MzQzLDU5MDAzMSw0NTkwMTksNTI0MzkxLDUyNDMyNyw1ODk5OTksNTI0Mjk1LDUyNDQyMyw1MjQzNTksNTkwMDYzLDQ1OTAxNSw1MjQzODMsNTI0MzE5LDU4OTk4Myw0NTkwMzEsNTI0NDE1LDUyNDM1MSw1OTAwNDcsNDU5MDIzLDUyNDM5OSw1MjQzMzUsNTkwMDE1LDUyNDMwMyw1MjQ0MzEsNTI0MzY3LDU5MDA3OV0pLDldLGp0PVtuZXcgSW50MzJBcnJheShbMzI3NjgwLDMyNzY5NiwzMjc2ODgsMzI3NzA0LDMyNzY4NCwzMjc3MDAsMzI3NjkyLDMyNzcwOCwzMjc2ODIsMzI3Njk4LDMyNzY5MCwzMjc3MDYsMzI3Njg2LDMyNzcwMiwzMjc2OTQsMCwzMjc2ODEsMzI3Njk3LDMyNzY4OSwzMjc3MDUsMzI3Njg1LDMyNzcwMSwzMjc2OTMsMzI3NzA5LDMyNzY4MywzMjc2OTksMzI3NjkxLDMyNzcwNywzMjc2ODcsMzI3NzAzLDMyNzY5NSwwXSksNV07Y2xhc3MgRmxhdGVTdHJlYW0gZXh0ZW5kcyBEZWNvZGVTdHJlYW17Y29uc3RydWN0b3IoZSx0KXtzdXBlcih0KTt0aGlzLnN0cj1lO3RoaXMuZGljdD1lLmRpY3Q7Y29uc3QgaT1lLmdldEJ5dGUoKSxhPWUuZ2V0Qnl0ZSgpO2lmKC0xPT09aXx8LTE9PT1hKXRocm93IG5ldyBGb3JtYXRFcnJvcihgSW52YWxpZCBoZWFkZXIgaW4gZmxhdGUgc3RyZWFtOiAke2l9LCAke2F9YCk7aWYoOCE9KDE1JmkpKXRocm93IG5ldyBGb3JtYXRFcnJvcihgVW5rbm93biBjb21wcmVzc2lvbiBtZXRob2QgaW4gZmxhdGUgc3RyZWFtOiAke2l9LCAke2F9YCk7aWYoKChpPDw4KSthKSUzMSE9MCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEJhZCBGQ0hFQ0sgaW4gZmxhdGUgc3RyZWFtOiAke2l9LCAke2F9YCk7aWYoMzImYSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEZESUNUIGJpdCBzZXQgaW4gZmxhdGUgc3RyZWFtOiAke2l9LCAke2F9YCk7dGhpcy5jb2RlU2l6ZT0wO3RoaXMuY29kZUJ1Zj0wfWFzeW5jIGdldEltYWdlRGF0YShlLHQpe2NvbnN0IGk9YXdhaXQgdGhpcy5hc3luY0dldEJ5dGVzKCk7cmV0dXJuIGk/LnN1YmFycmF5KDAsZSl8fHRoaXMuZ2V0Qnl0ZXMoZSl9YXN5bmMgYXN5bmNHZXRCeXRlcygpe3RoaXMuc3RyLnJlc2V0KCk7Y29uc3QgZT10aGlzLnN0ci5nZXRCeXRlcygpO3RyeXtjb25zdHtyZWFkYWJsZTp0LHdyaXRhYmxlOml9PW5ldyBEZWNvbXByZXNzaW9uU3RyZWFtKCJkZWZsYXRlIiksYT1pLmdldFdyaXRlcigpO2Eud3JpdGUoZSk7YS5jbG9zZSgpO2NvbnN0IHI9W107bGV0IHM9MDtmb3IgYXdhaXQoY29uc3QgZSBvZiB0KXtyLnB1c2goZSk7cys9ZS5ieXRlTGVuZ3RofWNvbnN0IG49bmV3IFVpbnQ4QXJyYXkocyk7bGV0IG89MDtmb3IoY29uc3QgZSBvZiByKXtuLnNldChlLG8pO28rPWUuYnl0ZUxlbmd0aH1yZXR1cm4gbn1jYXRjaHt0aGlzLnN0cj1uZXcgU3RyZWFtKGUsMixlLmxlbmd0aCx0aGlzLnN0ci5kaWN0KTt0aGlzLnJlc2V0KCk7cmV0dXJuIG51bGx9fWdldCBpc0FzeW5jKCl7cmV0dXJuITB9Z2V0Qml0cyhlKXtjb25zdCB0PXRoaXMuc3RyO2xldCBpLGE9dGhpcy5jb2RlU2l6ZSxyPXRoaXMuY29kZUJ1Zjtmb3IoO2E8ZTspe2lmKC0xPT09KGk9dC5nZXRCeXRlKCkpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiQmFkIGVuY29kaW5nIGluIGZsYXRlIHN0cmVhbSIpO3J8PWk8PGE7YSs9OH1pPXImKDE8PGUpLTE7dGhpcy5jb2RlQnVmPXI+PmU7dGhpcy5jb2RlU2l6ZT1hLT1lO3JldHVybiBpfWdldENvZGUoZSl7Y29uc3QgdD10aGlzLnN0cixpPWVbMF0sYT1lWzFdO2xldCByLHM9dGhpcy5jb2RlU2l6ZSxuPXRoaXMuY29kZUJ1Zjtmb3IoO3M8YSYmLTEhPT0ocj10LmdldEJ5dGUoKSk7KXtufD1yPDxzO3MrPTh9Y29uc3Qgbz1pW24mKDE8PGEpLTFdLGc9bz4+MTYsYz02NTUzNSZvO2lmKGc8MXx8czxnKXRocm93IG5ldyBGb3JtYXRFcnJvcigiQmFkIGVuY29kaW5nIGluIGZsYXRlIHN0cmVhbSIpO3RoaXMuY29kZUJ1Zj1uPj5nO3RoaXMuY29kZVNpemU9cy1nO3JldHVybiBjfWdlbmVyYXRlSHVmZm1hblRhYmxlKGUpe2NvbnN0IHQ9ZS5sZW5ndGg7bGV0IGksYT0wO2ZvcihpPTA7aTx0OysraSllW2ldPmEmJihhPWVbaV0pO2NvbnN0IHI9MTw8YSxzPW5ldyBJbnQzMkFycmF5KHIpO2ZvcihsZXQgbj0xLG89MCxnPTI7bjw9YTsrK24sbzw8PTEsZzw8PTEpZm9yKGxldCBhPTA7YTx0OysrYSlpZihlW2FdPT09bil7bGV0IGU9MCx0PW87Zm9yKGk9MDtpPG47KytpKXtlPWU8PDF8MSZ0O3Q+Pj0xfWZvcihpPWU7aTxyO2krPWcpc1tpXT1uPDwxNnxhOysrb31yZXR1cm5bcyxhXX0jbShlKXtpbmZvKGUpO3RoaXMuZW9mPSEwfXJlYWRCbG9jaygpe2xldCBlLHQsaTtjb25zdCBhPXRoaXMuc3RyO3RyeXt0PXRoaXMuZ2V0Qml0cygzKX1jYXRjaChlKXt0aGlzLiNtKGUubWVzc2FnZSk7cmV0dXJufTEmdCYmKHRoaXMuZW9mPSEwKTt0Pj49MTtpZigwPT09dCl7bGV0IHQ7aWYoLTE9PT0odD1hLmdldEJ5dGUoKSkpe3RoaXMuI20oIkJhZCBibG9jayBoZWFkZXIgaW4gZmxhdGUgc3RyZWFtIik7cmV0dXJufWxldCBpPXQ7aWYoLTE9PT0odD1hLmdldEJ5dGUoKSkpe3RoaXMuI20oIkJhZCBibG9jayBoZWFkZXIgaW4gZmxhdGUgc3RyZWFtIik7cmV0dXJufWl8PXQ8PDg7aWYoLTE9PT0odD1hLmdldEJ5dGUoKSkpe3RoaXMuI20oIkJhZCBibG9jayBoZWFkZXIgaW4gZmxhdGUgc3RyZWFtIik7cmV0dXJufWxldCByPXQ7aWYoLTE9PT0odD1hLmdldEJ5dGUoKSkpe3RoaXMuI20oIkJhZCBibG9jayBoZWFkZXIgaW4gZmxhdGUgc3RyZWFtIik7cmV0dXJufXJ8PXQ8PDg7aWYociE9PSg2NTUzNSZ+aSkmJigwIT09aXx8MCE9PXIpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiQmFkIHVuY29tcHJlc3NlZCBibG9jayBsZW5ndGggaW4gZmxhdGUgc3RyZWFtIik7dGhpcy5jb2RlQnVmPTA7dGhpcy5jb2RlU2l6ZT0wO2NvbnN0IHM9dGhpcy5idWZmZXJMZW5ndGgsbj1zK2k7ZT10aGlzLmVuc3VyZUJ1ZmZlcihuKTt0aGlzLmJ1ZmZlckxlbmd0aD1uO2lmKDA9PT1pKS0xPT09YS5wZWVrQnl0ZSgpJiYodGhpcy5lb2Y9ITApO2Vsc2V7Y29uc3QgdD1hLmdldEJ5dGVzKGkpO2Uuc2V0KHQscyk7dC5sZW5ndGg8aSYmKHRoaXMuZW9mPSEwKX1yZXR1cm59bGV0IHIscztpZigxPT09dCl7cj1XdDtzPWp0fWVsc2V7aWYoMiE9PXQpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJVbmtub3duIGJsb2NrIHR5cGUgaW4gZmxhdGUgc3RyZWFtIik7e2NvbnN0IGU9dGhpcy5nZXRCaXRzKDUpKzI1Nyx0PXRoaXMuZ2V0Qml0cyg1KSsxLGE9dGhpcy5nZXRCaXRzKDQpKzQsbj1uZXcgVWludDhBcnJheShxdC5sZW5ndGgpO2xldCBvO2ZvcihvPTA7bzxhOysrbyluW3F0W29dXT10aGlzLmdldEJpdHMoMyk7Y29uc3QgZz10aGlzLmdlbmVyYXRlSHVmZm1hblRhYmxlKG4pO2k9MDtvPTA7Y29uc3QgYz1lK3QsQz1uZXcgVWludDhBcnJheShjKTtsZXQgaCxsLFE7Zm9yKDtvPGM7KXtjb25zdCBlPXRoaXMuZ2V0Q29kZShnKTtpZigxNj09PWUpe2g9MjtsPTM7UT1pfWVsc2UgaWYoMTc9PT1lKXtoPTM7bD0zO1E9aT0wfWVsc2V7aWYoMTghPT1lKXtDW28rK109aT1lO2NvbnRpbnVlfWg9NztsPTExO1E9aT0wfWxldCB0PXRoaXMuZ2V0Qml0cyhoKStsO2Zvcig7dC0tID4wOylDW28rK109UX1yPXRoaXMuZ2VuZXJhdGVIdWZmbWFuVGFibGUoQy5zdWJhcnJheSgwLGUpKTtzPXRoaXMuZ2VuZXJhdGVIdWZmbWFuVGFibGUoQy5zdWJhcnJheShlLGMpKX19ZT10aGlzLmJ1ZmZlcjtsZXQgbj1lP2UubGVuZ3RoOjAsbz10aGlzLmJ1ZmZlckxlbmd0aDtmb3IoOzspe2xldCB0PXRoaXMuZ2V0Q29kZShyKTtpZih0PDI1Nil7aWYobysxPj1uKXtlPXRoaXMuZW5zdXJlQnVmZmVyKG8rMSk7bj1lLmxlbmd0aH1lW28rK109dDtjb250aW51ZX1pZigyNTY9PT10KXt0aGlzLmJ1ZmZlckxlbmd0aD1vO3JldHVybn10LT0yNTc7dD1PdFt0XTtsZXQgYT10Pj4xNjthPjAmJihhPXRoaXMuZ2V0Qml0cyhhKSk7aT0oNjU1MzUmdCkrYTt0PXRoaXMuZ2V0Q29kZShzKTt0PVB0W3RdO2E9dD4+MTY7YT4wJiYoYT10aGlzLmdldEJpdHMoYSkpO2NvbnN0IGc9KDY1NTM1JnQpK2E7aWYobytpPj1uKXtlPXRoaXMuZW5zdXJlQnVmZmVyKG8raSk7bj1lLmxlbmd0aH1mb3IobGV0IHQ9MDt0PGk7Kyt0LCsrbyllW29dPWVbby1nXX19fWNvbnN0IFh0PVt7cWU6MjIwMTcsbm1wczoxLG5scHM6MSxzd2l0Y2hGbGFnOjF9LHtxZToxMzMxMyxubXBzOjIsbmxwczo2LHN3aXRjaEZsYWc6MH0se3FlOjYxNDUsbm1wczozLG5scHM6OSxzd2l0Y2hGbGFnOjB9LHtxZToyNzUzLG5tcHM6NCxubHBzOjEyLHN3aXRjaEZsYWc6MH0se3FlOjEzMTMsbm1wczo1LG5scHM6Mjksc3dpdGNoRmxhZzowfSx7cWU6NTQ1LG5tcHM6MzgsbmxwczozMyxzd2l0Y2hGbGFnOjB9LHtxZToyMjAxNyxubXBzOjcsbmxwczo2LHN3aXRjaEZsYWc6MX0se3FlOjIxNTA1LG5tcHM6OCxubHBzOjE0LHN3aXRjaEZsYWc6MH0se3FlOjE4NDMzLG5tcHM6OSxubHBzOjE0LHN3aXRjaEZsYWc6MH0se3FlOjE0MzM3LG5tcHM6MTAsbmxwczoxNCxzd2l0Y2hGbGFnOjB9LHtxZToxMjI4OSxubXBzOjExLG5scHM6MTcsc3dpdGNoRmxhZzowfSx7cWU6OTIxNyxubXBzOjEyLG5scHM6MTgsc3dpdGNoRmxhZzowfSx7cWU6NzE2OSxubXBzOjEzLG5scHM6MjAsc3dpdGNoRmxhZzowfSx7cWU6NTYzMyxubXBzOjI5LG5scHM6MjEsc3dpdGNoRmxhZzowfSx7cWU6MjIwMTcsbm1wczoxNSxubHBzOjE0LHN3aXRjaEZsYWc6MX0se3FlOjIxNTA1LG5tcHM6MTYsbmxwczoxNCxzd2l0Y2hGbGFnOjB9LHtxZToyMDczNyxubXBzOjE3LG5scHM6MTUsc3dpdGNoRmxhZzowfSx7cWU6MTg0MzMsbm1wczoxOCxubHBzOjE2LHN3aXRjaEZsYWc6MH0se3FlOjE0MzM3LG5tcHM6MTksbmxwczoxNyxzd2l0Y2hGbGFnOjB9LHtxZToxMzMxMyxubXBzOjIwLG5scHM6MTgsc3dpdGNoRmxhZzowfSx7cWU6MTIyODksbm1wczoyMSxubHBzOjE5LHN3aXRjaEZsYWc6MH0se3FlOjEwMjQxLG5tcHM6MjIsbmxwczoxOSxzd2l0Y2hGbGFnOjB9LHtxZTo5MjE3LG5tcHM6MjMsbmxwczoyMCxzd2l0Y2hGbGFnOjB9LHtxZTo4NzA1LG5tcHM6MjQsbmxwczoyMSxzd2l0Y2hGbGFnOjB9LHtxZTo3MTY5LG5tcHM6MjUsbmxwczoyMixzd2l0Y2hGbGFnOjB9LHtxZTo2MTQ1LG5tcHM6MjYsbmxwczoyMyxzd2l0Y2hGbGFnOjB9LHtxZTo1NjMzLG5tcHM6MjcsbmxwczoyNCxzd2l0Y2hGbGFnOjB9LHtxZTo1MTIxLG5tcHM6MjgsbmxwczoyNSxzd2l0Y2hGbGFnOjB9LHtxZTo0NjA5LG5tcHM6MjksbmxwczoyNixzd2l0Y2hGbGFnOjB9LHtxZTo0MzUzLG5tcHM6MzAsbmxwczoyNyxzd2l0Y2hGbGFnOjB9LHtxZToyNzUzLG5tcHM6MzEsbmxwczoyOCxzd2l0Y2hGbGFnOjB9LHtxZToyNDk3LG5tcHM6MzIsbmxwczoyOSxzd2l0Y2hGbGFnOjB9LHtxZToyMjA5LG5tcHM6MzMsbmxwczozMCxzd2l0Y2hGbGFnOjB9LHtxZToxMzEzLG5tcHM6MzQsbmxwczozMSxzd2l0Y2hGbGFnOjB9LHtxZToxMDg5LG5tcHM6MzUsbmxwczozMixzd2l0Y2hGbGFnOjB9LHtxZTo2NzMsbm1wczozNixubHBzOjMzLHN3aXRjaEZsYWc6MH0se3FlOjU0NSxubXBzOjM3LG5scHM6MzQsc3dpdGNoRmxhZzowfSx7cWU6MzIxLG5tcHM6MzgsbmxwczozNSxzd2l0Y2hGbGFnOjB9LHtxZToyNzMsbm1wczozOSxubHBzOjM2LHN3aXRjaEZsYWc6MH0se3FlOjEzMyxubXBzOjQwLG5scHM6Mzcsc3dpdGNoRmxhZzowfSx7cWU6NzMsbm1wczo0MSxubHBzOjM4LHN3aXRjaEZsYWc6MH0se3FlOjM3LG5tcHM6NDIsbmxwczozOSxzd2l0Y2hGbGFnOjB9LHtxZToyMSxubXBzOjQzLG5scHM6NDAsc3dpdGNoRmxhZzowfSx7cWU6OSxubXBzOjQ0LG5scHM6NDEsc3dpdGNoRmxhZzowfSx7cWU6NSxubXBzOjQ1LG5scHM6NDIsc3dpdGNoRmxhZzowfSx7cWU6MSxubXBzOjQ1LG5scHM6NDMsc3dpdGNoRmxhZzowfSx7cWU6MjIwMTcsbm1wczo0NixubHBzOjQ2LHN3aXRjaEZsYWc6MH1dO2NsYXNzIEFyaXRobWV0aWNEZWNvZGVye2NvbnN0cnVjdG9yKGUsdCxpKXt0aGlzLmRhdGE9ZTt0aGlzLmJwPXQ7dGhpcy5kYXRhRW5kPWk7dGhpcy5jaGlnaD1lW3RdO3RoaXMuY2xvdz0wO3RoaXMuYnl0ZUluKCk7dGhpcy5jaGlnaD10aGlzLmNoaWdoPDw3JjY1NTM1fHRoaXMuY2xvdz4+OSYxMjc7dGhpcy5jbG93PXRoaXMuY2xvdzw8NyY2NTUzNTt0aGlzLmN0LT03O3RoaXMuYT0zMjc2OH1ieXRlSW4oKXtjb25zdCBlPXRoaXMuZGF0YTtsZXQgdD10aGlzLmJwO2lmKDI1NT09PWVbdF0paWYoZVt0KzFdPjE0Myl7dGhpcy5jbG93Kz02NTI4MDt0aGlzLmN0PTh9ZWxzZXt0Kys7dGhpcy5jbG93Kz1lW3RdPDw5O3RoaXMuY3Q9Nzt0aGlzLmJwPXR9ZWxzZXt0Kys7dGhpcy5jbG93Kz10PHRoaXMuZGF0YUVuZD9lW3RdPDw4OjY1MjgwO3RoaXMuY3Q9ODt0aGlzLmJwPXR9aWYodGhpcy5jbG93PjY1NTM1KXt0aGlzLmNoaWdoKz10aGlzLmNsb3c+PjE2O3RoaXMuY2xvdyY9NjU1MzV9fXJlYWRCaXQoZSx0KXtsZXQgaT1lW3RdPj4xLGE9MSZlW3RdO2NvbnN0IHI9WHRbaV0scz1yLnFlO2xldCBuLG89dGhpcy5hLXM7aWYodGhpcy5jaGlnaDxzKWlmKG88cyl7bz1zO249YTtpPXIubm1wc31lbHNle289cztuPTFeYTsxPT09ci5zd2l0Y2hGbGFnJiYoYT1uKTtpPXIubmxwc31lbHNle3RoaXMuY2hpZ2gtPXM7aWYoMCE9KDMyNzY4Jm8pKXt0aGlzLmE9bztyZXR1cm4gYX1pZihvPHMpe249MV5hOzE9PT1yLnN3aXRjaEZsYWcmJihhPW4pO2k9ci5ubHBzfWVsc2V7bj1hO2k9ci5ubXBzfX1kb3swPT09dGhpcy5jdCYmdGhpcy5ieXRlSW4oKTtvPDw9MTt0aGlzLmNoaWdoPXRoaXMuY2hpZ2g8PDEmNjU1MzV8dGhpcy5jbG93Pj4xNSYxO3RoaXMuY2xvdz10aGlzLmNsb3c8PDEmNjU1MzU7dGhpcy5jdC0tfXdoaWxlKDA9PSgzMjc2OCZvKSk7dGhpcy5hPW87ZVt0XT1pPDwxfGE7cmV0dXJuIG59fWNsYXNzIEpiaWcyRXJyb3IgZXh0ZW5kcyBjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJKYmlnMkVycm9yIil9fWNsYXNzIENvbnRleHRDYWNoZXtnZXRDb250ZXh0cyhlKXtyZXR1cm4gZSBpbiB0aGlzP3RoaXNbZV06dGhpc1tlXT1uZXcgSW50OEFycmF5KDY1NTM2KX19Y2xhc3MgRGVjb2RpbmdDb250ZXh0e2NvbnN0cnVjdG9yKGUsdCxpKXt0aGlzLmRhdGE9ZTt0aGlzLnN0YXJ0PXQ7dGhpcy5lbmQ9aX1nZXQgZGVjb2Rlcigpe3JldHVybiBzaGFkb3codGhpcywiZGVjb2RlciIsbmV3IEFyaXRobWV0aWNEZWNvZGVyKHRoaXMuZGF0YSx0aGlzLnN0YXJ0LHRoaXMuZW5kKSl9Z2V0IGNvbnRleHRDYWNoZSgpe3JldHVybiBzaGFkb3codGhpcywiY29udGV4dENhY2hlIixuZXcgQ29udGV4dENhY2hlKX19Y29uc3QgWnQ9MioqMzEtMSxWdD0tKDIqKjMxKTtmdW5jdGlvbiBkZWNvZGVJbnRlZ2VyKGUsdCxpKXtjb25zdCBhPWUuZ2V0Q29udGV4dHModCk7bGV0IHI9MTtmdW5jdGlvbiByZWFkQml0cyhlKXtsZXQgdD0wO2ZvcihsZXQgcz0wO3M8ZTtzKyspe2NvbnN0IGU9aS5yZWFkQml0KGEscik7cj1yPDI1Nj9yPDwxfGU6NTExJihyPDwxfGUpfDI1Njt0PXQ8PDF8ZX1yZXR1cm4gdD4+PjB9Y29uc3Qgcz1yZWFkQml0cygxKSxuPXJlYWRCaXRzKDEpP3JlYWRCaXRzKDEpP3JlYWRCaXRzKDEpP3JlYWRCaXRzKDEpP3JlYWRCaXRzKDEpP3JlYWRCaXRzKDMyKSs0NDM2OnJlYWRCaXRzKDEyKSszNDA6cmVhZEJpdHMoOCkrODQ6cmVhZEJpdHMoNikrMjA6cmVhZEJpdHMoNCkrNDpyZWFkQml0cygyKTtsZXQgbzswPT09cz9vPW46bj4wJiYobz0tbik7cmV0dXJuIG8+PVZ0JiZvPD1adD9vOm51bGx9ZnVuY3Rpb24gZGVjb2RlSUFJRChlLHQsaSl7Y29uc3QgYT1lLmdldENvbnRleHRzKCJJQUlEIik7bGV0IHI9MTtmb3IobGV0IGU9MDtlPGk7ZSsrKXtyPXI8PDF8dC5yZWFkQml0KGEscil9cmV0dXJuIGk8MzE/ciYoMTw8aSktMToyMTQ3NDgzNjQ3JnJ9Y29uc3QgX3Q9WyJTeW1ib2xEaWN0aW9uYXJ5IixudWxsLG51bGwsbnVsbCwiSW50ZXJtZWRpYXRlVGV4dFJlZ2lvbiIsbnVsbCwiSW1tZWRpYXRlVGV4dFJlZ2lvbiIsIkltbWVkaWF0ZUxvc3NsZXNzVGV4dFJlZ2lvbiIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLCJQYXR0ZXJuRGljdGlvbmFyeSIsbnVsbCxudWxsLG51bGwsIkludGVybWVkaWF0ZUhhbGZ0b25lUmVnaW9uIixudWxsLCJJbW1lZGlhdGVIYWxmdG9uZVJlZ2lvbiIsIkltbWVkaWF0ZUxvc3NsZXNzSGFsZnRvbmVSZWdpb24iLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLCJJbnRlcm1lZGlhdGVHZW5lcmljUmVnaW9uIixudWxsLCJJbW1lZGlhdGVHZW5lcmljUmVnaW9uIiwiSW1tZWRpYXRlTG9zc2xlc3NHZW5lcmljUmVnaW9uIiwiSW50ZXJtZWRpYXRlR2VuZXJpY1JlZmluZW1lbnRSZWdpb24iLG51bGwsIkltbWVkaWF0ZUdlbmVyaWNSZWZpbmVtZW50UmVnaW9uIiwiSW1tZWRpYXRlTG9zc2xlc3NHZW5lcmljUmVmaW5lbWVudFJlZ2lvbiIsbnVsbCxudWxsLG51bGwsbnVsbCwiUGFnZUluZm9ybWF0aW9uIiwiRW5kT2ZQYWdlIiwiRW5kT2ZTdHJpcGUiLCJFbmRPZkZpbGUiLCJQcm9maWxlcyIsIlRhYmxlcyIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLCJFeHRlbnNpb24iXSx6dD1bW3t4Oi0xLHk6LTJ9LHt4OjAseTotMn0se3g6MSx5Oi0yfSx7eDotMix5Oi0xfSx7eDotMSx5Oi0xfSx7eDowLHk6LTF9LHt4OjEseTotMX0se3g6Mix5Oi0xfSx7eDotNCx5OjB9LHt4Oi0zLHk6MH0se3g6LTIseTowfSx7eDotMSx5OjB9XSxbe3g6LTEseTotMn0se3g6MCx5Oi0yfSx7eDoxLHk6LTJ9LHt4OjIseTotMn0se3g6LTIseTotMX0se3g6LTEseTotMX0se3g6MCx5Oi0xfSx7eDoxLHk6LTF9LHt4OjIseTotMX0se3g6LTMseTowfSx7eDotMix5OjB9LHt4Oi0xLHk6MH1dLFt7eDotMSx5Oi0yfSx7eDowLHk6LTJ9LHt4OjEseTotMn0se3g6LTIseTotMX0se3g6LTEseTotMX0se3g6MCx5Oi0xfSx7eDoxLHk6LTF9LHt4Oi0yLHk6MH0se3g6LTEseTowfV0sW3t4Oi0zLHk6LTF9LHt4Oi0yLHk6LTF9LHt4Oi0xLHk6LTF9LHt4OjAseTotMX0se3g6MSx5Oi0xfSx7eDotNCx5OjB9LHt4Oi0zLHk6MH0se3g6LTIseTowfSx7eDotMSx5OjB9XV0sJHQ9W3tjb2Rpbmc6W3t4OjAseTotMX0se3g6MSx5Oi0xfSx7eDotMSx5OjB9XSxyZWZlcmVuY2U6W3t4OjAseTotMX0se3g6MSx5Oi0xfSx7eDotMSx5OjB9LHt4OjAseTowfSx7eDoxLHk6MH0se3g6LTEseToxfSx7eDowLHk6MX0se3g6MSx5OjF9XX0se2NvZGluZzpbe3g6LTEseTotMX0se3g6MCx5Oi0xfSx7eDoxLHk6LTF9LHt4Oi0xLHk6MH1dLHJlZmVyZW5jZTpbe3g6MCx5Oi0xfSx7eDotMSx5OjB9LHt4OjAseTowfSx7eDoxLHk6MH0se3g6MCx5OjF9LHt4OjEseToxfV19XSxBaT1bMzk3MTcsMTk0MSwyMjksNDA1XSxlaT1bMzIsOF07ZnVuY3Rpb24gZGVjb2RlQml0bWFwKGUsdCxpLGEscixzLG4sbyl7aWYoZSl7cmV0dXJuIGRlY29kZU1NUkJpdG1hcChuZXcgUmVhZGVyKG8uZGF0YSxvLnN0YXJ0LG8uZW5kKSx0LGksITEpfWlmKDA9PT1hJiYhcyYmIXImJjQ9PT1uLmxlbmd0aCYmMz09PW5bMF0ueCYmLTE9PT1uWzBdLnkmJi0zPT09blsxXS54JiYtMT09PW5bMV0ueSYmMj09PW5bMl0ueCYmLTI9PT1uWzJdLnkmJi0yPT09blszXS54JiYtMj09PW5bM10ueSlyZXR1cm4gZnVuY3Rpb24gZGVjb2RlQml0bWFwVGVtcGxhdGUwKGUsdCxpKXtjb25zdCBhPWkuZGVjb2RlcixyPWkuY29udGV4dENhY2hlLmdldENvbnRleHRzKCJHQiIpLHM9W107bGV0IG4sbyxnLGMsQyxoLGw7Zm9yKG89MDtvPHQ7bysrKXtDPXNbb109bmV3IFVpbnQ4QXJyYXkoZSk7aD1vPDE/QzpzW28tMV07bD1vPDI/QzpzW28tMl07bj1sWzBdPDwxM3xsWzFdPDwxMnxsWzJdPDwxMXxoWzBdPDw3fGhbMV08PDZ8aFsyXTw8NXxoWzNdPDw0O2ZvcihnPTA7ZzxlO2crKyl7Q1tnXT1jPWEucmVhZEJpdChyLG4pO249KDMxNzM1Jm4pPDwxfChnKzM8ZT9sW2crM108PDExOjApfChnKzQ8ZT9oW2crNF08PDQ6MCl8Y319cmV0dXJuIHN9KHQsaSxvKTtjb25zdCBnPSEhcyxjPXp0W2FdLmNvbmNhdChuKTtjLnNvcnQoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUueS10Lnl8fGUueC10Lnh9KSk7Y29uc3QgQz1jLmxlbmd0aCxoPW5ldyBJbnQ4QXJyYXkoQyksbD1uZXcgSW50OEFycmF5KEMpLFE9W107bGV0IEUsdSxkPTAsZj0wLHA9MCxtPTA7Zm9yKHU9MDt1PEM7dSsrKXtoW3VdPWNbdV0ueDtsW3VdPWNbdV0ueTtmPU1hdGgubWluKGYsY1t1XS54KTtwPU1hdGgubWF4KHAsY1t1XS54KTttPU1hdGgubWluKG0sY1t1XS55KTt1PEMtMSYmY1t1XS55PT09Y1t1KzFdLnkmJmNbdV0ueD09PWNbdSsxXS54LTE/ZHw9MTw8Qy0xLXU6US5wdXNoKHUpfWNvbnN0IHk9US5sZW5ndGgsdz1uZXcgSW50OEFycmF5KHkpLGI9bmV3IEludDhBcnJheSh5KSxEPW5ldyBVaW50MTZBcnJheSh5KTtmb3IoRT0wO0U8eTtFKyspe3U9UVtFXTt3W0VdPWNbdV0ueDtiW0VdPWNbdV0ueTtEW0VdPTE8PEMtMS11fWNvbnN0IFM9LWYsaz0tbSxSPXQtcCxOPUFpW2FdO2xldCBHPW5ldyBVaW50OEFycmF5KHQpO2NvbnN0IHg9W10sVT1vLmRlY29kZXIsTT1vLmNvbnRleHRDYWNoZS5nZXRDb250ZXh0cygiR0IiKTtsZXQgTCxILEosdixZLFQ9MCxLPTA7Zm9yKGxldCBlPTA7ZTxpO2UrKyl7aWYocil7VF49VS5yZWFkQml0KE0sTik7aWYoVCl7eC5wdXNoKEcpO2NvbnRpbnVlfX1HPW5ldyBVaW50OEFycmF5KEcpO3gucHVzaChHKTtmb3IoTD0wO0w8dDtMKyspe2lmKGcmJnNbZV1bTF0pe0dbTF09MDtjb250aW51ZX1pZihMPj1TJiZMPFImJmU+PWspe0s9Szw8MSZkO2Zvcih1PTA7dTx5O3UrKyl7SD1lK2JbdV07Sj1MK3dbdV07dj14W0hdW0pdO2lmKHYpe3Y9RFt1XTtLfD12fX19ZWxzZXtLPTA7WT1DLTE7Zm9yKHU9MDt1PEM7dSsrLFktLSl7Sj1MK2hbdV07aWYoSj49MCYmSjx0KXtIPWUrbFt1XTtpZihIPj0wKXt2PXhbSF1bSl07diYmKEt8PXY8PFkpfX19fWNvbnN0IGk9VS5yZWFkQml0KE0sSyk7R1tMXT1pfX1yZXR1cm4geH1mdW5jdGlvbiBkZWNvZGVSZWZpbmVtZW50KGUsdCxpLGEscixzLG4sbyxnKXtsZXQgYz0kdFtpXS5jb2Rpbmc7MD09PWkmJihjPWMuY29uY2F0KFtvWzBdXSkpO2NvbnN0IEM9Yy5sZW5ndGgsaD1uZXcgSW50MzJBcnJheShDKSxsPW5ldyBJbnQzMkFycmF5KEMpO2xldCBRO2ZvcihRPTA7UTxDO1ErKyl7aFtRXT1jW1FdLng7bFtRXT1jW1FdLnl9bGV0IEU9JHRbaV0ucmVmZXJlbmNlOzA9PT1pJiYoRT1FLmNvbmNhdChbb1sxXV0pKTtjb25zdCB1PUUubGVuZ3RoLGQ9bmV3IEludDMyQXJyYXkodSksZj1uZXcgSW50MzJBcnJheSh1KTtmb3IoUT0wO1E8dTtRKyspe2RbUV09RVtRXS54O2ZbUV09RVtRXS55fWNvbnN0IHA9YVswXS5sZW5ndGgsbT1hLmxlbmd0aCx5PWVpW2ldLHc9W10sYj1nLmRlY29kZXIsRD1nLmNvbnRleHRDYWNoZS5nZXRDb250ZXh0cygiR1IiKTtsZXQgUz0wO2ZvcihsZXQgaT0wO2k8dDtpKyspe2lmKG4pe1NePWIucmVhZEJpdChELHkpO2lmKFMpdGhyb3cgbmV3IEpiaWcyRXJyb3IoInByZWRpY3Rpb24gaXMgbm90IHN1cHBvcnRlZCIpfWNvbnN0IHQ9bmV3IFVpbnQ4QXJyYXkoZSk7dy5wdXNoKHQpO2ZvcihsZXQgbj0wO248ZTtuKyspe2xldCBvLGcsYz0wO2ZvcihRPTA7UTxDO1ErKyl7bz1pK2xbUV07Zz1uK2hbUV07bzwwfHxnPDB8fGc+PWU/Yzw8PTE6Yz1jPDwxfHdbb11bZ119Zm9yKFE9MDtRPHU7USsrKXtvPWkrZltRXS1zO2c9bitkW1FdLXI7bzwwfHxvPj1tfHxnPDB8fGc+PXA/Yzw8PTE6Yz1jPDwxfGFbb11bZ119Y29uc3QgRT1iLnJlYWRCaXQoRCxjKTt0W25dPUV9fXJldHVybiB3fWZ1bmN0aW9uIGRlY29kZVRleHRSZWdpb24oZSx0LGksYSxyLHMsbixvLGcsYyxDLGgsbCxRLEUsdSxkLGYscCl7aWYoZSYmdCl0aHJvdyBuZXcgSmJpZzJFcnJvcigicmVmaW5lbWVudCB3aXRoIEh1ZmZtYW4gaXMgbm90IHN1cHBvcnRlZCIpO2NvbnN0IG09W107bGV0IHksdztmb3IoeT0wO3k8YTt5Kyspe3c9bmV3IFVpbnQ4QXJyYXkoaSk7aWYocilmb3IobGV0IGU9MDtlPGk7ZSsrKXdbZV09cjttLnB1c2godyl9Y29uc3QgYj1kLmRlY29kZXIsRD1kLmNvbnRleHRDYWNoZTtsZXQgUz1lPy1RLnRhYmxlRGVsdGFULmRlY29kZShwKTotZGVjb2RlSW50ZWdlcihELCJJQURUIixiKSxrPTA7eT0wO2Zvcig7eTxzOyl7Uys9ZT9RLnRhYmxlRGVsdGFULmRlY29kZShwKTpkZWNvZGVJbnRlZ2VyKEQsIklBRFQiLGIpO2srPWU/US50YWJsZUZpcnN0Uy5kZWNvZGUocCk6ZGVjb2RlSW50ZWdlcihELCJJQUZTIixiKTtsZXQgYT1rO2Zvcig7Oyl7bGV0IHI9MDtuPjEmJihyPWU/cC5yZWFkQml0cyhmKTpkZWNvZGVJbnRlZ2VyKEQsIklBSVQiLGIpKTtjb25zdCBzPW4qUytyLGs9ZT9RLnN5bWJvbElEVGFibGUuZGVjb2RlKHApOmRlY29kZUlBSUQoRCxiLGcpLFI9dCYmKGU/cC5yZWFkQml0KCk6ZGVjb2RlSW50ZWdlcihELCJJQVJJIixiKSk7bGV0IE49b1trXSxHPU5bMF0ubGVuZ3RoLHg9Ti5sZW5ndGg7aWYoUil7Y29uc3QgZT1kZWNvZGVJbnRlZ2VyKEQsIklBUkRXIixiKSx0PWRlY29kZUludGVnZXIoRCwiSUFSREgiLGIpO0crPWU7eCs9dDtOPWRlY29kZVJlZmluZW1lbnQoRyx4LEUsTiwoZT4+MSkrZGVjb2RlSW50ZWdlcihELCJJQVJEWCIsYiksKHQ+PjEpK2RlY29kZUludGVnZXIoRCwiSUFSRFkiLGIpLCExLHUsZCl9bGV0IFU9MDtjPzEmaD9VPXgtMTphKz14LTE6aD4xP2ErPUctMTpVPUctMTtjb25zdCBNPXMtKDEmaD8wOngtMSksTD1hLSgyJmg/Ry0xOjApO2xldCBILEosdjtpZihjKWZvcihIPTA7SDx4O0grKyl7dz1tW0wrSF07aWYoIXcpY29udGludWU7dj1OW0hdO2NvbnN0IGU9TWF0aC5taW4oaS1NLEcpO3N3aXRjaChsKXtjYXNlIDA6Zm9yKEo9MDtKPGU7SisrKXdbTStKXXw9dltKXTticmVhaztjYXNlIDI6Zm9yKEo9MDtKPGU7SisrKXdbTStKXV49dltKXTticmVhaztkZWZhdWx0OnRocm93IG5ldyBKYmlnMkVycm9yKGBvcGVyYXRvciAke2x9IGlzIG5vdCBzdXBwb3J0ZWRgKX19ZWxzZSBmb3IoSj0wO0o8eDtKKyspe3c9bVtNK0pdO2lmKHcpe3Y9TltKXTtzd2l0Y2gobCl7Y2FzZSAwOmZvcihIPTA7SDxHO0grKyl3W0wrSF18PXZbSF07YnJlYWs7Y2FzZSAyOmZvcihIPTA7SDxHO0grKyl3W0wrSF1ePXZbSF07YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgSmJpZzJFcnJvcihgb3BlcmF0b3IgJHtsfSBpcyBub3Qgc3VwcG9ydGVkYCl9fX15Kys7Y29uc3QgWT1lP1EudGFibGVEZWx0YVMuZGVjb2RlKHApOmRlY29kZUludGVnZXIoRCwiSUFEUyIsYik7aWYobnVsbD09PVkpYnJlYWs7YSs9VStZK0N9fXJldHVybiBtfWZ1bmN0aW9uIHJlYWRTZWdtZW50SGVhZGVyKGUsdCl7Y29uc3QgaT17fTtpLm51bWJlcj1yZWFkVWludDMyKGUsdCk7Y29uc3QgYT1lW3QrNF0scj02MyZhO2lmKCFfdFtyXSl0aHJvdyBuZXcgSmJpZzJFcnJvcigiaW52YWxpZCBzZWdtZW50IHR5cGU6ICIrcik7aS50eXBlPXI7aS50eXBlTmFtZT1fdFtyXTtpLmRlZmVycmVkTm9uUmV0YWluPSEhKDEyOCZhKTtjb25zdCBzPSEhKDY0JmEpLG49ZVt0KzVdO2xldCBvPW4+PjUmNztjb25zdCBnPVszMSZuXTtsZXQgYz10KzY7aWYoNz09PW4pe289NTM2ODcwOTExJnJlYWRVaW50MzIoZSxjLTEpO2MrPTM7bGV0IHQ9bys3Pj4zO2dbMF09ZVtjKytdO2Zvcig7LS10PjA7KWcucHVzaChlW2MrK10pfWVsc2UgaWYoNT09PW58fDY9PT1uKXRocm93IG5ldyBKYmlnMkVycm9yKCJpbnZhbGlkIHJlZmVycmVkLXRvIGZsYWdzIik7aS5yZXRhaW5CaXRzPWc7bGV0IEM9NDtpLm51bWJlcjw9MjU2P0M9MTppLm51bWJlcjw9NjU1MzYmJihDPTIpO2NvbnN0IGg9W107bGV0IGwsUTtmb3IobD0wO2w8bztsKyspe2xldCB0O3Q9MT09PUM/ZVtjXToyPT09Qz9yZWFkVWludDE2KGUsYyk6cmVhZFVpbnQzMihlLGMpO2gucHVzaCh0KTtjKz1DfWkucmVmZXJyZWRUbz1oO2lmKHMpe2kucGFnZUFzc29jaWF0aW9uPXJlYWRVaW50MzIoZSxjKTtjKz00fWVsc2UgaS5wYWdlQXNzb2NpYXRpb249ZVtjKytdO2kubGVuZ3RoPXJlYWRVaW50MzIoZSxjKTtjKz00O2lmKDQyOTQ5NjcyOTU9PT1pLmxlbmd0aCl7aWYoMzghPT1yKXRocm93IG5ldyBKYmlnMkVycm9yKCJpbnZhbGlkIHVua25vd24gc2VnbWVudCBsZW5ndGgiKTt7Y29uc3QgdD1yZWFkUmVnaW9uU2VnbWVudEluZm9ybWF0aW9uKGUsYyksYT0hISgxJmVbYyt0aV0pLHI9NixzPW5ldyBVaW50OEFycmF5KHIpO2lmKCFhKXtzWzBdPTI1NTtzWzFdPTE3Mn1zWzJdPXQuaGVpZ2h0Pj4+MjQmMjU1O3NbM109dC5oZWlnaHQ+PjE2JjI1NTtzWzRdPXQuaGVpZ2h0Pj44JjI1NTtzWzVdPTI1NSZ0LmhlaWdodDtmb3IobD1jLFE9ZS5sZW5ndGg7bDxRO2wrKyl7bGV0IHQ9MDtmb3IoO3Q8ciYmc1t0XT09PWVbbCt0XTspdCsrO2lmKHQ9PT1yKXtpLmxlbmd0aD1sK3I7YnJlYWt9fWlmKDQyOTQ5NjcyOTU9PT1pLmxlbmd0aCl0aHJvdyBuZXcgSmJpZzJFcnJvcigic2VnbWVudCBlbmQgd2FzIG5vdCBmb3VuZCIpfX1pLmhlYWRlckVuZD1jO3JldHVybiBpfWZ1bmN0aW9uIHJlYWRTZWdtZW50cyhlLHQsaSxhKXtjb25zdCByPVtdO2xldCBzPWk7Zm9yKDtzPGE7KXtjb25zdCBpPXJlYWRTZWdtZW50SGVhZGVyKHQscyk7cz1pLmhlYWRlckVuZDtjb25zdCBhPXtoZWFkZXI6aSxkYXRhOnR9O2lmKCFlLnJhbmRvbUFjY2Vzcyl7YS5zdGFydD1zO3MrPWkubGVuZ3RoO2EuZW5kPXN9ci5wdXNoKGEpO2lmKDUxPT09aS50eXBlKWJyZWFrfWlmKGUucmFuZG9tQWNjZXNzKWZvcihsZXQgZT0wLHQ9ci5sZW5ndGg7ZTx0O2UrKyl7cltlXS5zdGFydD1zO3MrPXJbZV0uaGVhZGVyLmxlbmd0aDtyW2VdLmVuZD1zfXJldHVybiByfWZ1bmN0aW9uIHJlYWRSZWdpb25TZWdtZW50SW5mb3JtYXRpb24oZSx0KXtyZXR1cm57d2lkdGg6cmVhZFVpbnQzMihlLHQpLGhlaWdodDpyZWFkVWludDMyKGUsdCs0KSx4OnJlYWRVaW50MzIoZSx0KzgpLHk6cmVhZFVpbnQzMihlLHQrMTIpLGNvbWJpbmF0aW9uT3BlcmF0b3I6NyZlW3QrMTZdfX1jb25zdCB0aT0xNztmdW5jdGlvbiBwcm9jZXNzU2VnbWVudChlLHQpe2NvbnN0IGk9ZS5oZWFkZXIsYT1lLmRhdGEscj1lLmVuZDtsZXQgcyxuLG8sZyxjPWUuc3RhcnQ7c3dpdGNoKGkudHlwZSl7Y2FzZSAwOmNvbnN0IGU9e30sdD1yZWFkVWludDE2KGEsYyk7ZS5odWZmbWFuPSEhKDEmdCk7ZS5yZWZpbmVtZW50PSEhKDImdCk7ZS5odWZmbWFuREhTZWxlY3Rvcj10Pj4yJjM7ZS5odWZmbWFuRFdTZWxlY3Rvcj10Pj40JjM7ZS5iaXRtYXBTaXplU2VsZWN0b3I9dD4+NiYxO2UuYWdncmVnYXRpb25JbnN0YW5jZXNTZWxlY3Rvcj10Pj43JjE7ZS5iaXRtYXBDb2RpbmdDb250ZXh0VXNlZD0hISgyNTYmdCk7ZS5iaXRtYXBDb2RpbmdDb250ZXh0UmV0YWluZWQ9ISEoNTEyJnQpO2UudGVtcGxhdGU9dD4+MTAmMztlLnJlZmluZW1lbnRUZW1wbGF0ZT10Pj4xMiYxO2MrPTI7aWYoIWUuaHVmZm1hbil7Zz0wPT09ZS50ZW1wbGF0ZT80OjE7bj1bXTtmb3Iobz0wO288ZztvKyspe24ucHVzaCh7eDpyZWFkSW50OChhLGMpLHk6cmVhZEludDgoYSxjKzEpfSk7Yys9Mn1lLmF0PW59aWYoZS5yZWZpbmVtZW50JiYhZS5yZWZpbmVtZW50VGVtcGxhdGUpe249W107Zm9yKG89MDtvPDI7bysrKXtuLnB1c2goe3g6cmVhZEludDgoYSxjKSx5OnJlYWRJbnQ4KGEsYysxKX0pO2MrPTJ9ZS5yZWZpbmVtZW50QXQ9bn1lLm51bWJlck9mRXhwb3J0ZWRTeW1ib2xzPXJlYWRVaW50MzIoYSxjKTtjKz00O2UubnVtYmVyT2ZOZXdTeW1ib2xzPXJlYWRVaW50MzIoYSxjKTtjKz00O3M9W2UsaS5udW1iZXIsaS5yZWZlcnJlZFRvLGEsYyxyXTticmVhaztjYXNlIDY6Y2FzZSA3OmNvbnN0IEM9e307Qy5pbmZvPXJlYWRSZWdpb25TZWdtZW50SW5mb3JtYXRpb24oYSxjKTtjKz10aTtjb25zdCBoPXJlYWRVaW50MTYoYSxjKTtjKz0yO0MuaHVmZm1hbj0hISgxJmgpO0MucmVmaW5lbWVudD0hISgyJmgpO0MubG9nU3RyaXBTaXplPWg+PjImMztDLnN0cmlwU2l6ZT0xPDxDLmxvZ1N0cmlwU2l6ZTtDLnJlZmVyZW5jZUNvcm5lcj1oPj40JjM7Qy50cmFuc3Bvc2VkPSEhKDY0JmgpO0MuY29tYmluYXRpb25PcGVyYXRvcj1oPj43JjM7Qy5kZWZhdWx0UGl4ZWxWYWx1ZT1oPj45JjE7Qy5kc09mZnNldD1oPDwxNz4+Mjc7Qy5yZWZpbmVtZW50VGVtcGxhdGU9aD4+MTUmMTtpZihDLmh1ZmZtYW4pe2NvbnN0IGU9cmVhZFVpbnQxNihhLGMpO2MrPTI7Qy5odWZmbWFuRlM9MyZlO0MuaHVmZm1hbkRTPWU+PjImMztDLmh1ZmZtYW5EVD1lPj40JjM7Qy5odWZmbWFuUmVmaW5lbWVudERXPWU+PjYmMztDLmh1ZmZtYW5SZWZpbmVtZW50REg9ZT4+OCYzO0MuaHVmZm1hblJlZmluZW1lbnREWD1lPj4xMCYzO0MuaHVmZm1hblJlZmluZW1lbnREWT1lPj4xMiYzO0MuaHVmZm1hblJlZmluZW1lbnRTaXplU2VsZWN0b3I9ISEoMTYzODQmZSl9aWYoQy5yZWZpbmVtZW50JiYhQy5yZWZpbmVtZW50VGVtcGxhdGUpe249W107Zm9yKG89MDtvPDI7bysrKXtuLnB1c2goe3g6cmVhZEludDgoYSxjKSx5OnJlYWRJbnQ4KGEsYysxKX0pO2MrPTJ9Qy5yZWZpbmVtZW50QXQ9bn1DLm51bWJlck9mU3ltYm9sSW5zdGFuY2VzPXJlYWRVaW50MzIoYSxjKTtjKz00O3M9W0MsaS5yZWZlcnJlZFRvLGEsYyxyXTticmVhaztjYXNlIDE2OmNvbnN0IGw9e30sUT1hW2MrK107bC5tbXI9ISEoMSZRKTtsLnRlbXBsYXRlPVE+PjEmMztsLnBhdHRlcm5XaWR0aD1hW2MrK107bC5wYXR0ZXJuSGVpZ2h0PWFbYysrXTtsLm1heFBhdHRlcm5JbmRleD1yZWFkVWludDMyKGEsYyk7Yys9NDtzPVtsLGkubnVtYmVyLGEsYyxyXTticmVhaztjYXNlIDIyOmNhc2UgMjM6Y29uc3QgRT17fTtFLmluZm89cmVhZFJlZ2lvblNlZ21lbnRJbmZvcm1hdGlvbihhLGMpO2MrPXRpO2NvbnN0IHU9YVtjKytdO0UubW1yPSEhKDEmdSk7RS50ZW1wbGF0ZT11Pj4xJjM7RS5lbmFibGVTa2lwPSEhKDgmdSk7RS5jb21iaW5hdGlvbk9wZXJhdG9yPXU+PjQmNztFLmRlZmF1bHRQaXhlbFZhbHVlPXU+PjcmMTtFLmdyaWRXaWR0aD1yZWFkVWludDMyKGEsYyk7Yys9NDtFLmdyaWRIZWlnaHQ9cmVhZFVpbnQzMihhLGMpO2MrPTQ7RS5ncmlkT2Zmc2V0WD00Mjk0OTY3Mjk1JnJlYWRVaW50MzIoYSxjKTtjKz00O0UuZ3JpZE9mZnNldFk9NDI5NDk2NzI5NSZyZWFkVWludDMyKGEsYyk7Yys9NDtFLmdyaWRWZWN0b3JYPXJlYWRVaW50MTYoYSxjKTtjKz0yO0UuZ3JpZFZlY3Rvclk9cmVhZFVpbnQxNihhLGMpO2MrPTI7cz1bRSxpLnJlZmVycmVkVG8sYSxjLHJdO2JyZWFrO2Nhc2UgMzg6Y2FzZSAzOTpjb25zdCBkPXt9O2QuaW5mbz1yZWFkUmVnaW9uU2VnbWVudEluZm9ybWF0aW9uKGEsYyk7Yys9dGk7Y29uc3QgZj1hW2MrK107ZC5tbXI9ISEoMSZmKTtkLnRlbXBsYXRlPWY+PjEmMztkLnByZWRpY3Rpb249ISEoOCZmKTtpZighZC5tbXIpe2c9MD09PWQudGVtcGxhdGU/NDoxO249W107Zm9yKG89MDtvPGc7bysrKXtuLnB1c2goe3g6cmVhZEludDgoYSxjKSx5OnJlYWRJbnQ4KGEsYysxKX0pO2MrPTJ9ZC5hdD1ufXM9W2QsYSxjLHJdO2JyZWFrO2Nhc2UgNDg6Y29uc3QgcD17d2lkdGg6cmVhZFVpbnQzMihhLGMpLGhlaWdodDpyZWFkVWludDMyKGEsYys0KSxyZXNvbHV0aW9uWDpyZWFkVWludDMyKGEsYys4KSxyZXNvbHV0aW9uWTpyZWFkVWludDMyKGEsYysxMil9OzQyOTQ5NjcyOTU9PT1wLmhlaWdodCYmZGVsZXRlIHAuaGVpZ2h0O2NvbnN0IG09YVtjKzE2XTtyZWFkVWludDE2KGEsYysxNyk7cC5sb3NzbGVzcz0hISgxJm0pO3AucmVmaW5lbWVudD0hISgyJm0pO3AuZGVmYXVsdFBpeGVsVmFsdWU9bT4+MiYxO3AuY29tYmluYXRpb25PcGVyYXRvcj1tPj4zJjM7cC5yZXF1aXJlc0J1ZmZlcj0hISgzMiZtKTtwLmNvbWJpbmF0aW9uT3BlcmF0b3JPdmVycmlkZT0hISg2NCZtKTtzPVtwXTticmVhaztjYXNlIDQ5OmNhc2UgNTA6Y2FzZSA1MTpjYXNlIDYyOmJyZWFrO2Nhc2UgNTM6cz1baS5udW1iZXIsYSxjLHJdO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEpiaWcyRXJyb3IoYHNlZ21lbnQgdHlwZSAke2kudHlwZU5hbWV9KCR7aS50eXBlfSkgaXMgbm90IGltcGxlbWVudGVkYCl9Y29uc3QgQz0ib24iK2kudHlwZU5hbWU7QyBpbiB0JiZ0W0NdLmFwcGx5KHQscyl9ZnVuY3Rpb24gcHJvY2Vzc1NlZ21lbnRzKGUsdCl7Zm9yKGxldCBpPTAsYT1lLmxlbmd0aDtpPGE7aSsrKXByb2Nlc3NTZWdtZW50KGVbaV0sdCl9Y2xhc3MgU2ltcGxlU2VnbWVudFZpc2l0b3J7b25QYWdlSW5mb3JtYXRpb24oZSl7dGhpcy5jdXJyZW50UGFnZUluZm89ZTtjb25zdCB0PWUud2lkdGgrNz4+MyxpPW5ldyBVaW50OENsYW1wZWRBcnJheSh0KmUuaGVpZ2h0KTtlLmRlZmF1bHRQaXhlbFZhbHVlJiZpLmZpbGwoMjU1KTt0aGlzLmJ1ZmZlcj1pfWRyYXdCaXRtYXAoZSx0KXtjb25zdCBpPXRoaXMuY3VycmVudFBhZ2VJbmZvLGE9ZS53aWR0aCxyPWUuaGVpZ2h0LHM9aS53aWR0aCs3Pj4zLG49aS5jb21iaW5hdGlvbk9wZXJhdG9yT3ZlcnJpZGU/ZS5jb21iaW5hdGlvbk9wZXJhdG9yOmkuY29tYmluYXRpb25PcGVyYXRvcixvPXRoaXMuYnVmZmVyLGc9MTI4Pj4oNyZlLngpO2xldCBjLEMsaCxsLFE9ZS55KnMrKGUueD4+Myk7c3dpdGNoKG4pe2Nhc2UgMDpmb3IoYz0wO2M8cjtjKyspe2g9ZztsPVE7Zm9yKEM9MDtDPGE7QysrKXt0W2NdW0NdJiYob1tsXXw9aCk7aD4+PTE7aWYoIWgpe2g9MTI4O2wrK319USs9c31icmVhaztjYXNlIDI6Zm9yKGM9MDtjPHI7YysrKXtoPWc7bD1RO2ZvcihDPTA7QzxhO0MrKyl7dFtjXVtDXSYmKG9bbF1ePWgpO2g+Pj0xO2lmKCFoKXtoPTEyODtsKyt9fVErPXN9YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgSmJpZzJFcnJvcihgb3BlcmF0b3IgJHtufSBpcyBub3Qgc3VwcG9ydGVkYCl9fW9uSW1tZWRpYXRlR2VuZXJpY1JlZ2lvbihlLHQsaSxhKXtjb25zdCByPWUuaW5mbyxzPW5ldyBEZWNvZGluZ0NvbnRleHQodCxpLGEpLG49ZGVjb2RlQml0bWFwKGUubW1yLHIud2lkdGgsci5oZWlnaHQsZS50ZW1wbGF0ZSxlLnByZWRpY3Rpb24sbnVsbCxlLmF0LHMpO3RoaXMuZHJhd0JpdG1hcChyLG4pfW9uSW1tZWRpYXRlTG9zc2xlc3NHZW5lcmljUmVnaW9uKCl7dGhpcy5vbkltbWVkaWF0ZUdlbmVyaWNSZWdpb24oLi4uYXJndW1lbnRzKX1vblN5bWJvbERpY3Rpb25hcnkoZSx0LGksYSxyLHMpe2xldCBuLG87aWYoZS5odWZmbWFuKXtuPWZ1bmN0aW9uIGdldFN5bWJvbERpY3Rpb25hcnlIdWZmbWFuVGFibGVzKGUsdCxpKXtsZXQgYSxyLHMsbixvPTA7c3dpdGNoKGUuaHVmZm1hbkRIU2VsZWN0b3Ipe2Nhc2UgMDpjYXNlIDE6YT1nZXRTdGFuZGFyZFRhYmxlKGUuaHVmZm1hbkRIU2VsZWN0b3IrNCk7YnJlYWs7Y2FzZSAzOmE9Z2V0Q3VzdG9tSHVmZm1hblRhYmxlKG8sdCxpKTtvKys7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgSmJpZzJFcnJvcigiaW52YWxpZCBIdWZmbWFuIERIIHNlbGVjdG9yIil9c3dpdGNoKGUuaHVmZm1hbkRXU2VsZWN0b3Ipe2Nhc2UgMDpjYXNlIDE6cj1nZXRTdGFuZGFyZFRhYmxlKGUuaHVmZm1hbkRXU2VsZWN0b3IrMik7YnJlYWs7Y2FzZSAzOnI9Z2V0Q3VzdG9tSHVmZm1hblRhYmxlKG8sdCxpKTtvKys7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgSmJpZzJFcnJvcigiaW52YWxpZCBIdWZmbWFuIERXIHNlbGVjdG9yIil9aWYoZS5iaXRtYXBTaXplU2VsZWN0b3Ipe3M9Z2V0Q3VzdG9tSHVmZm1hblRhYmxlKG8sdCxpKTtvKyt9ZWxzZSBzPWdldFN0YW5kYXJkVGFibGUoMSk7bj1lLmFnZ3JlZ2F0aW9uSW5zdGFuY2VzU2VsZWN0b3I/Z2V0Q3VzdG9tSHVmZm1hblRhYmxlKG8sdCxpKTpnZXRTdGFuZGFyZFRhYmxlKDEpO3JldHVybnt0YWJsZURlbHRhSGVpZ2h0OmEsdGFibGVEZWx0YVdpZHRoOnIsdGFibGVCaXRtYXBTaXplOnMsdGFibGVBZ2dyZWdhdGVJbnN0YW5jZXM6bn19KGUsaSx0aGlzLmN1c3RvbVRhYmxlcyk7bz1uZXcgUmVhZGVyKGEscixzKX1sZXQgZz10aGlzLnN5bWJvbHM7Z3x8KHRoaXMuc3ltYm9scz1nPXt9KTtjb25zdCBjPVtdO2Zvcihjb25zdCBlIG9mIGkpe2NvbnN0IHQ9Z1tlXTt0JiZjLnB1c2goLi4udCl9Y29uc3QgQz1uZXcgRGVjb2RpbmdDb250ZXh0KGEscixzKTtnW3RdPWZ1bmN0aW9uIGRlY29kZVN5bWJvbERpY3Rpb25hcnkoZSx0LGksYSxyLHMsbixvLGcsYyxDLGgpe2lmKGUmJnQpdGhyb3cgbmV3IEpiaWcyRXJyb3IoInN5bWJvbCByZWZpbmVtZW50IHdpdGggSHVmZm1hbiBpcyBub3Qgc3VwcG9ydGVkIik7Y29uc3QgbD1bXTtsZXQgUT0wLEU9bG9nMihpLmxlbmd0aCthKTtjb25zdCB1PUMuZGVjb2RlcixkPUMuY29udGV4dENhY2hlO2xldCBmLHA7aWYoZSl7Zj1nZXRTdGFuZGFyZFRhYmxlKDEpO3A9W107RT1NYXRoLm1heChFLDEpfWZvcig7bC5sZW5ndGg8YTspe1ErPWU/cy50YWJsZURlbHRhSGVpZ2h0LmRlY29kZShoKTpkZWNvZGVJbnRlZ2VyKGQsIklBREgiLHUpO2xldCBhPTAscj0wO2NvbnN0IGY9ZT9wLmxlbmd0aDowO2Zvcig7Oyl7Y29uc3QgZj1lP3MudGFibGVEZWx0YVdpZHRoLmRlY29kZShoKTpkZWNvZGVJbnRlZ2VyKGQsIklBRFciLHUpO2lmKG51bGw9PT1mKWJyZWFrO2ErPWY7cis9YTtsZXQgbTtpZih0KXtjb25zdCByPWRlY29kZUludGVnZXIoZCwiSUFBSSIsdSk7aWYocj4xKW09ZGVjb2RlVGV4dFJlZ2lvbihlLHQsYSxRLDAsciwxLGkuY29uY2F0KGwpLEUsMCwwLDEsMCxzLGcsYyxDLDAsaCk7ZWxzZXtjb25zdCBlPWRlY29kZUlBSUQoZCx1LEUpLHQ9ZGVjb2RlSW50ZWdlcihkLCJJQVJEWCIsdSkscj1kZWNvZGVJbnRlZ2VyKGQsIklBUkRZIix1KTttPWRlY29kZVJlZmluZW1lbnQoYSxRLGcsZTxpLmxlbmd0aD9pW2VdOmxbZS1pLmxlbmd0aF0sdCxyLCExLGMsQyl9bC5wdXNoKG0pfWVsc2UgaWYoZSlwLnB1c2goYSk7ZWxzZXttPWRlY29kZUJpdG1hcCghMSxhLFEsbiwhMSxudWxsLG8sQyk7bC5wdXNoKG0pfX1pZihlJiYhdCl7Y29uc3QgZT1zLnRhYmxlQml0bWFwU2l6ZS5kZWNvZGUoaCk7aC5ieXRlQWxpZ24oKTtsZXQgdDtpZigwPT09ZSl0PXJlYWRVbmNvbXByZXNzZWRCaXRtYXAoaCxyLFEpO2Vsc2V7Y29uc3QgaT1oLmVuZCxhPWgucG9zaXRpb24rZTtoLmVuZD1hO3Q9ZGVjb2RlTU1SQml0bWFwKGgscixRLCExKTtoLmVuZD1pO2gucG9zaXRpb249YX1jb25zdCBpPXAubGVuZ3RoO2lmKGY9PT1pLTEpbC5wdXNoKHQpO2Vsc2V7bGV0IGUsYSxyLHMsbixvPTA7Zm9yKGU9ZjtlPGk7ZSsrKXtzPXBbZV07cj1vK3M7bj1bXTtmb3IoYT0wO2E8UTthKyspbi5wdXNoKHRbYV0uc3ViYXJyYXkobyxyKSk7bC5wdXNoKG4pO289cn19fX1jb25zdCBtPVtdLHk9W107bGV0IHcsYixEPSExO2NvbnN0IFM9aS5sZW5ndGgrYTtmb3IoO3kubGVuZ3RoPFM7KXtsZXQgdD1lP2YuZGVjb2RlKGgpOmRlY29kZUludGVnZXIoZCwiSUFFWCIsdSk7Zm9yKDt0LS07KXkucHVzaChEKTtEPSFEfWZvcih3PTAsYj1pLmxlbmd0aDt3PGI7dysrKXlbd10mJm0ucHVzaChpW3ddKTtmb3IobGV0IGU9MDtlPGE7dysrLGUrKyl5W3ddJiZtLnB1c2gobFtlXSk7cmV0dXJuIG19KGUuaHVmZm1hbixlLnJlZmluZW1lbnQsYyxlLm51bWJlck9mTmV3U3ltYm9scyxlLm51bWJlck9mRXhwb3J0ZWRTeW1ib2xzLG4sZS50ZW1wbGF0ZSxlLmF0LGUucmVmaW5lbWVudFRlbXBsYXRlLGUucmVmaW5lbWVudEF0LEMsbyl9b25JbW1lZGlhdGVUZXh0UmVnaW9uKGUsdCxpLGEscil7Y29uc3Qgcz1lLmluZm87bGV0IG4sbztjb25zdCBnPXRoaXMuc3ltYm9scyxjPVtdO2Zvcihjb25zdCBlIG9mIHQpe2NvbnN0IHQ9Z1tlXTt0JiZjLnB1c2goLi4udCl9Y29uc3QgQz1sb2cyKGMubGVuZ3RoKTtpZihlLmh1ZmZtYW4pe289bmV3IFJlYWRlcihpLGEscik7bj1mdW5jdGlvbiBnZXRUZXh0UmVnaW9uSHVmZm1hblRhYmxlcyhlLHQsaSxhLHIpe2NvbnN0IHM9W107Zm9yKGxldCBlPTA7ZTw9MzQ7ZSsrKXtjb25zdCB0PXIucmVhZEJpdHMoNCk7cy5wdXNoKG5ldyBIdWZmbWFuTGluZShbZSx0LDAsMF0pKX1jb25zdCBuPW5ldyBIdWZmbWFuVGFibGUocywhMSk7cy5sZW5ndGg9MDtmb3IobGV0IGU9MDtlPGE7KXtjb25zdCB0PW4uZGVjb2RlKHIpO2lmKHQ+PTMyKXtsZXQgaSxhLG47c3dpdGNoKHQpe2Nhc2UgMzI6aWYoMD09PWUpdGhyb3cgbmV3IEpiaWcyRXJyb3IoIm5vIHByZXZpb3VzIHZhbHVlIGluIHN5bWJvbCBJRCB0YWJsZSIpO2E9ci5yZWFkQml0cygyKSszO2k9c1tlLTFdLnByZWZpeExlbmd0aDticmVhaztjYXNlIDMzOmE9ci5yZWFkQml0cygzKSszO2k9MDticmVhaztjYXNlIDM0OmE9ci5yZWFkQml0cyg3KSsxMTtpPTA7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgSmJpZzJFcnJvcigiaW52YWxpZCBjb2RlIGxlbmd0aCBpbiBzeW1ib2wgSUQgdGFibGUiKX1mb3Iobj0wO248YTtuKyspe3MucHVzaChuZXcgSHVmZm1hbkxpbmUoW2UsaSwwLDBdKSk7ZSsrfX1lbHNle3MucHVzaChuZXcgSHVmZm1hbkxpbmUoW2UsdCwwLDBdKSk7ZSsrfX1yLmJ5dGVBbGlnbigpO2NvbnN0IG89bmV3IEh1ZmZtYW5UYWJsZShzLCExKTtsZXQgZyxjLEMsaD0wO3N3aXRjaChlLmh1ZmZtYW5GUyl7Y2FzZSAwOmNhc2UgMTpnPWdldFN0YW5kYXJkVGFibGUoZS5odWZmbWFuRlMrNik7YnJlYWs7Y2FzZSAzOmc9Z2V0Q3VzdG9tSHVmZm1hblRhYmxlKGgsdCxpKTtoKys7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgSmJpZzJFcnJvcigiaW52YWxpZCBIdWZmbWFuIEZTIHNlbGVjdG9yIil9c3dpdGNoKGUuaHVmZm1hbkRTKXtjYXNlIDA6Y2FzZSAxOmNhc2UgMjpjPWdldFN0YW5kYXJkVGFibGUoZS5odWZmbWFuRFMrOCk7YnJlYWs7Y2FzZSAzOmM9Z2V0Q3VzdG9tSHVmZm1hblRhYmxlKGgsdCxpKTtoKys7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgSmJpZzJFcnJvcigiaW52YWxpZCBIdWZmbWFuIERTIHNlbGVjdG9yIil9c3dpdGNoKGUuaHVmZm1hbkRUKXtjYXNlIDA6Y2FzZSAxOmNhc2UgMjpDPWdldFN0YW5kYXJkVGFibGUoZS5odWZmbWFuRFQrMTEpO2JyZWFrO2Nhc2UgMzpDPWdldEN1c3RvbUh1ZmZtYW5UYWJsZShoLHQsaSk7aCsrO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEpiaWcyRXJyb3IoImludmFsaWQgSHVmZm1hbiBEVCBzZWxlY3RvciIpfWlmKGUucmVmaW5lbWVudCl0aHJvdyBuZXcgSmJpZzJFcnJvcigicmVmaW5lbWVudCB3aXRoIEh1ZmZtYW4gaXMgbm90IHN1cHBvcnRlZCIpO3JldHVybntzeW1ib2xJRFRhYmxlOm8sdGFibGVGaXJzdFM6Zyx0YWJsZURlbHRhUzpjLHRhYmxlRGVsdGFUOkN9fShlLHQsdGhpcy5jdXN0b21UYWJsZXMsYy5sZW5ndGgsbyl9Y29uc3QgaD1uZXcgRGVjb2RpbmdDb250ZXh0KGksYSxyKSxsPWRlY29kZVRleHRSZWdpb24oZS5odWZmbWFuLGUucmVmaW5lbWVudCxzLndpZHRoLHMuaGVpZ2h0LGUuZGVmYXVsdFBpeGVsVmFsdWUsZS5udW1iZXJPZlN5bWJvbEluc3RhbmNlcyxlLnN0cmlwU2l6ZSxjLEMsZS50cmFuc3Bvc2VkLGUuZHNPZmZzZXQsZS5yZWZlcmVuY2VDb3JuZXIsZS5jb21iaW5hdGlvbk9wZXJhdG9yLG4sZS5yZWZpbmVtZW50VGVtcGxhdGUsZS5yZWZpbmVtZW50QXQsaCxlLmxvZ1N0cmlwU2l6ZSxvKTt0aGlzLmRyYXdCaXRtYXAocyxsKX1vbkltbWVkaWF0ZUxvc3NsZXNzVGV4dFJlZ2lvbigpe3RoaXMub25JbW1lZGlhdGVUZXh0UmVnaW9uKC4uLmFyZ3VtZW50cyl9b25QYXR0ZXJuRGljdGlvbmFyeShlLHQsaSxhLHIpe2xldCBzPXRoaXMucGF0dGVybnM7c3x8KHRoaXMucGF0dGVybnM9cz17fSk7Y29uc3Qgbj1uZXcgRGVjb2RpbmdDb250ZXh0KGksYSxyKTtzW3RdPWZ1bmN0aW9uIGRlY29kZVBhdHRlcm5EaWN0aW9uYXJ5KGUsdCxpLGEscixzKXtjb25zdCBuPVtdO2lmKCFlKXtuLnB1c2goe3g6LXQseTowfSk7MD09PXImJm4ucHVzaCh7eDotMyx5Oi0xfSx7eDoyLHk6LTJ9LHt4Oi0yLHk6LTJ9KX1jb25zdCBvPWRlY29kZUJpdG1hcChlLChhKzEpKnQsaSxyLCExLG51bGwsbixzKSxnPVtdO2ZvcihsZXQgZT0wO2U8PWE7ZSsrKXtjb25zdCBhPVtdLHI9dCplLHM9cit0O2ZvcihsZXQgZT0wO2U8aTtlKyspYS5wdXNoKG9bZV0uc3ViYXJyYXkocixzKSk7Zy5wdXNoKGEpfXJldHVybiBnfShlLm1tcixlLnBhdHRlcm5XaWR0aCxlLnBhdHRlcm5IZWlnaHQsZS5tYXhQYXR0ZXJuSW5kZXgsZS50ZW1wbGF0ZSxuKX1vbkltbWVkaWF0ZUhhbGZ0b25lUmVnaW9uKGUsdCxpLGEscil7Y29uc3Qgcz10aGlzLnBhdHRlcm5zW3RbMF1dLG49ZS5pbmZvLG89bmV3IERlY29kaW5nQ29udGV4dChpLGEsciksZz1mdW5jdGlvbiBkZWNvZGVIYWxmdG9uZVJlZ2lvbihlLHQsaSxhLHIscyxuLG8sZyxjLEMsaCxsLFEsRSl7aWYobil0aHJvdyBuZXcgSmJpZzJFcnJvcigic2tpcCBpcyBub3Qgc3VwcG9ydGVkIik7aWYoMCE9PW8pdGhyb3cgbmV3IEpiaWcyRXJyb3IoYG9wZXJhdG9yICIke299IiBpcyBub3Qgc3VwcG9ydGVkIGluIGhhbGZ0b25lIHJlZ2lvbmApO2NvbnN0IHU9W107bGV0IGQsZixwO2ZvcihkPTA7ZDxyO2QrKyl7cD1uZXcgVWludDhBcnJheShhKTtpZihzKWZvcihmPTA7ZjxhO2YrKylwW2ZdPXM7dS5wdXNoKHApfWNvbnN0IG09dC5sZW5ndGgseT10WzBdLHc9eVswXS5sZW5ndGgsYj15Lmxlbmd0aCxEPWxvZzIobSksUz1bXTtpZighZSl7Uy5wdXNoKHt4Omk8PTE/MzoyLHk6LTF9KTswPT09aSYmUy5wdXNoKHt4Oi0zLHk6LTF9LHt4OjIseTotMn0se3g6LTIseTotMn0pfWNvbnN0IGs9W107bGV0IFIsTixHLHgsVSxNLEwsSCxKLHYsWTtlJiYoUj1uZXcgUmVhZGVyKEUuZGF0YSxFLnN0YXJ0LEUuZW5kKSk7Zm9yKGQ9RC0xO2Q+PTA7ZC0tKXtOPWU/ZGVjb2RlTU1SQml0bWFwKFIsZyxjLCEwKTpkZWNvZGVCaXRtYXAoITEsZyxjLGksITEsbnVsbCxTLEUpO2tbZF09Tn1mb3IoRz0wO0c8YztHKyspZm9yKHg9MDt4PGc7eCsrKXtVPTA7TT0wO2ZvcihmPUQtMTtmPj0wO2YtLSl7VV49a1tmXVtHXVt4XTtNfD1VPDxmfUw9dFtNXTtIPUMrRypRK3gqbD4+ODtKPWgrRypsLXgqUT4+ODtpZihIPj0wJiZIK3c8PWEmJko+PTAmJkorYjw9cilmb3IoZD0wO2Q8YjtkKyspe1k9dVtKK2RdO3Y9TFtkXTtmb3IoZj0wO2Y8dztmKyspWVtIK2ZdfD12W2ZdfWVsc2V7bGV0IGUsdDtmb3IoZD0wO2Q8YjtkKyspe3Q9SitkO2lmKCEodDwwfHx0Pj1yKSl7WT11W3RdO3Y9TFtkXTtmb3IoZj0wO2Y8dztmKyspe2U9SCtmO2U+PTAmJmU8YSYmKFlbZV18PXZbZl0pfX19fX1yZXR1cm4gdX0oZS5tbXIscyxlLnRlbXBsYXRlLG4ud2lkdGgsbi5oZWlnaHQsZS5kZWZhdWx0UGl4ZWxWYWx1ZSxlLmVuYWJsZVNraXAsZS5jb21iaW5hdGlvbk9wZXJhdG9yLGUuZ3JpZFdpZHRoLGUuZ3JpZEhlaWdodCxlLmdyaWRPZmZzZXRYLGUuZ3JpZE9mZnNldFksZS5ncmlkVmVjdG9yWCxlLmdyaWRWZWN0b3JZLG8pO3RoaXMuZHJhd0JpdG1hcChuLGcpfW9uSW1tZWRpYXRlTG9zc2xlc3NIYWxmdG9uZVJlZ2lvbigpe3RoaXMub25JbW1lZGlhdGVIYWxmdG9uZVJlZ2lvbiguLi5hcmd1bWVudHMpfW9uVGFibGVzKGUsdCxpLGEpe2xldCByPXRoaXMuY3VzdG9tVGFibGVzO3J8fCh0aGlzLmN1c3RvbVRhYmxlcz1yPXt9KTtyW2VdPWZ1bmN0aW9uIGRlY29kZVRhYmxlc1NlZ21lbnQoZSx0LGkpe2NvbnN0IGE9ZVt0XSxyPTQyOTQ5NjcyOTUmcmVhZFVpbnQzMihlLHQrMSkscz00Mjk0OTY3Mjk1JnJlYWRVaW50MzIoZSx0KzUpLG49bmV3IFJlYWRlcihlLHQrOSxpKSxvPTErKGE+PjEmNyksZz0xKyhhPj40JjcpLGM9W107bGV0IEMsaCxsPXI7ZG97Qz1uLnJlYWRCaXRzKG8pO2g9bi5yZWFkQml0cyhnKTtjLnB1c2gobmV3IEh1ZmZtYW5MaW5lKFtsLEMsaCwwXSkpO2wrPTE8PGh9d2hpbGUobDxzKTtDPW4ucmVhZEJpdHMobyk7Yy5wdXNoKG5ldyBIdWZmbWFuTGluZShbci0xLEMsMzIsMCwibG93ZXIiXSkpO0M9bi5yZWFkQml0cyhvKTtjLnB1c2gobmV3IEh1ZmZtYW5MaW5lKFtzLEMsMzIsMF0pKTtpZigxJmEpe0M9bi5yZWFkQml0cyhvKTtjLnB1c2gobmV3IEh1ZmZtYW5MaW5lKFtDLDBdKSl9cmV0dXJuIG5ldyBIdWZmbWFuVGFibGUoYywhMSl9KHQsaSxhKX19Y2xhc3MgSHVmZm1hbkxpbmV7Y29uc3RydWN0b3IoZSl7aWYoMj09PWUubGVuZ3RoKXt0aGlzLmlzT09CPSEwO3RoaXMucmFuZ2VMb3c9MDt0aGlzLnByZWZpeExlbmd0aD1lWzBdO3RoaXMucmFuZ2VMZW5ndGg9MDt0aGlzLnByZWZpeENvZGU9ZVsxXTt0aGlzLmlzTG93ZXJSYW5nZT0hMX1lbHNle3RoaXMuaXNPT0I9ITE7dGhpcy5yYW5nZUxvdz1lWzBdO3RoaXMucHJlZml4TGVuZ3RoPWVbMV07dGhpcy5yYW5nZUxlbmd0aD1lWzJdO3RoaXMucHJlZml4Q29kZT1lWzNdO3RoaXMuaXNMb3dlclJhbmdlPSJsb3dlciI9PT1lWzRdfX19Y2xhc3MgSHVmZm1hblRyZWVOb2Rle2NvbnN0cnVjdG9yKGUpe3RoaXMuY2hpbGRyZW49W107aWYoZSl7dGhpcy5pc0xlYWY9ITA7dGhpcy5yYW5nZUxlbmd0aD1lLnJhbmdlTGVuZ3RoO3RoaXMucmFuZ2VMb3c9ZS5yYW5nZUxvdzt0aGlzLmlzTG93ZXJSYW5nZT1lLmlzTG93ZXJSYW5nZTt0aGlzLmlzT09CPWUuaXNPT0J9ZWxzZSB0aGlzLmlzTGVhZj0hMX1idWlsZFRyZWUoZSx0KXtjb25zdCBpPWUucHJlZml4Q29kZT4+dCYxO2lmKHQ8PTApdGhpcy5jaGlsZHJlbltpXT1uZXcgSHVmZm1hblRyZWVOb2RlKGUpO2Vsc2V7bGV0IGE9dGhpcy5jaGlsZHJlbltpXTthfHwodGhpcy5jaGlsZHJlbltpXT1hPW5ldyBIdWZmbWFuVHJlZU5vZGUobnVsbCkpO2EuYnVpbGRUcmVlKGUsdC0xKX19ZGVjb2RlTm9kZShlKXtpZih0aGlzLmlzTGVhZil7aWYodGhpcy5pc09PQilyZXR1cm4gbnVsbDtjb25zdCB0PWUucmVhZEJpdHModGhpcy5yYW5nZUxlbmd0aCk7cmV0dXJuIHRoaXMucmFuZ2VMb3crKHRoaXMuaXNMb3dlclJhbmdlPy10OnQpfWNvbnN0IHQ9dGhpcy5jaGlsZHJlbltlLnJlYWRCaXQoKV07aWYoIXQpdGhyb3cgbmV3IEpiaWcyRXJyb3IoImludmFsaWQgSHVmZm1hbiBkYXRhIik7cmV0dXJuIHQuZGVjb2RlTm9kZShlKX19Y2xhc3MgSHVmZm1hblRhYmxle2NvbnN0cnVjdG9yKGUsdCl7dHx8dGhpcy5hc3NpZ25QcmVmaXhDb2RlcyhlKTt0aGlzLnJvb3ROb2RlPW5ldyBIdWZmbWFuVHJlZU5vZGUobnVsbCk7Zm9yKGxldCB0PTAsaT1lLmxlbmd0aDt0PGk7dCsrKXtjb25zdCBpPWVbdF07aS5wcmVmaXhMZW5ndGg+MCYmdGhpcy5yb290Tm9kZS5idWlsZFRyZWUoaSxpLnByZWZpeExlbmd0aC0xKX19ZGVjb2RlKGUpe3JldHVybiB0aGlzLnJvb3ROb2RlLmRlY29kZU5vZGUoZSl9YXNzaWduUHJlZml4Q29kZXMoZSl7Y29uc3QgdD1lLmxlbmd0aDtsZXQgaT0wO2ZvcihsZXQgYT0wO2E8dDthKyspaT1NYXRoLm1heChpLGVbYV0ucHJlZml4TGVuZ3RoKTtjb25zdCBhPW5ldyBVaW50MzJBcnJheShpKzEpO2ZvcihsZXQgaT0wO2k8dDtpKyspYVtlW2ldLnByZWZpeExlbmd0aF0rKztsZXQgcixzLG4sbz0xLGc9MDthWzBdPTA7Zm9yKDtvPD1pOyl7Zz1nK2Fbby0xXTw8MTtyPWc7cz0wO2Zvcig7czx0Oyl7bj1lW3NdO2lmKG4ucHJlZml4TGVuZ3RoPT09byl7bi5wcmVmaXhDb2RlPXI7cisrfXMrK31vKyt9fX1jb25zdCBpaT17fTtmdW5jdGlvbiBnZXRTdGFuZGFyZFRhYmxlKGUpe2xldCB0LGk9aWlbZV07aWYoaSlyZXR1cm4gaTtzd2l0Y2goZSl7Y2FzZSAxOnQ9W1swLDEsNCwwXSxbMTYsMiw4LDJdLFsyNzIsMywxNiw2XSxbNjU4MDgsMywzMiw3XV07YnJlYWs7Y2FzZSAyOnQ9W1swLDEsMCwwXSxbMSwyLDAsMl0sWzIsMywwLDZdLFszLDQsMywxNF0sWzExLDUsNiwzMF0sWzc1LDYsMzIsNjJdLFs2LDYzXV07YnJlYWs7Y2FzZSAzOnQ9W1stMjU2LDgsOCwyNTRdLFswLDEsMCwwXSxbMSwyLDAsMl0sWzIsMywwLDZdLFszLDQsMywxNF0sWzExLDUsNiwzMF0sWy0yNTcsOCwzMiwyNTUsImxvd2VyIl0sWzc1LDcsMzIsMTI2XSxbNiw2Ml1dO2JyZWFrO2Nhc2UgNDp0PVtbMSwxLDAsMF0sWzIsMiwwLDJdLFszLDMsMCw2XSxbNCw0LDMsMTRdLFsxMiw1LDYsMzBdLFs3Niw1LDMyLDMxXV07YnJlYWs7Y2FzZSA1OnQ9W1stMjU1LDcsOCwxMjZdLFsxLDEsMCwwXSxbMiwyLDAsMl0sWzMsMywwLDZdLFs0LDQsMywxNF0sWzEyLDUsNiwzMF0sWy0yNTYsNywzMiwxMjcsImxvd2VyIl0sWzc2LDYsMzIsNjJdXTticmVhaztjYXNlIDY6dD1bWy0yMDQ4LDUsMTAsMjhdLFstMTAyNCw0LDksOF0sWy01MTIsNCw4LDldLFstMjU2LDQsNywxMF0sWy0xMjgsNSw2LDI5XSxbLTY0LDUsNSwzMF0sWy0zMiw0LDUsMTFdLFswLDIsNywwXSxbMTI4LDMsNywyXSxbMjU2LDMsOCwzXSxbNTEyLDQsOSwxMl0sWzEwMjQsNCwxMCwxM10sWy0yMDQ5LDYsMzIsNjIsImxvd2VyIl0sWzIwNDgsNiwzMiw2M11dO2JyZWFrO2Nhc2UgNzp0PVtbLTEwMjQsNCw5LDhdLFstNTEyLDMsOCwwXSxbLTI1Niw0LDcsOV0sWy0xMjgsNSw2LDI2XSxbLTY0LDUsNSwyN10sWy0zMiw0LDUsMTBdLFswLDQsNSwxMV0sWzMyLDUsNSwyOF0sWzY0LDUsNiwyOV0sWzEyOCw0LDcsMTJdLFsyNTYsMyw4LDFdLFs1MTIsMyw5LDJdLFsxMDI0LDMsMTAsM10sWy0xMDI1LDUsMzIsMzAsImxvd2VyIl0sWzIwNDgsNSwzMiwzMV1dO2JyZWFrO2Nhc2UgODp0PVtbLTE1LDgsMywyNTJdLFstNyw5LDEsNTA4XSxbLTUsOCwxLDI1M10sWy0zLDksMCw1MDldLFstMiw3LDAsMTI0XSxbLTEsNCwwLDEwXSxbMCwyLDEsMF0sWzIsNSwwLDI2XSxbMyw2LDAsNThdLFs0LDMsNCw0XSxbMjAsNiwxLDU5XSxbMjIsNCw0LDExXSxbMzgsNCw1LDEyXSxbNzAsNSw2LDI3XSxbMTM0LDUsNywyOF0sWzI2Miw2LDcsNjBdLFszOTAsNyw4LDEyNV0sWzY0Niw2LDEwLDYxXSxbLTE2LDksMzIsNTEwLCJsb3dlciJdLFsxNjcwLDksMzIsNTExXSxbMiwxXV07YnJlYWs7Y2FzZSA5OnQ9W1stMzEsOCw0LDI1Ml0sWy0xNSw5LDIsNTA4XSxbLTExLDgsMiwyNTNdLFstNyw5LDEsNTA5XSxbLTUsNywxLDEyNF0sWy0zLDQsMSwxMF0sWy0xLDMsMSwyXSxbMSwzLDEsM10sWzMsNSwxLDI2XSxbNSw2LDEsNThdLFs3LDMsNSw0XSxbMzksNiwyLDU5XSxbNDMsNCw1LDExXSxbNzUsNCw2LDEyXSxbMTM5LDUsNywyN10sWzI2Nyw1LDgsMjhdLFs1MjMsNiw4LDYwXSxbNzc5LDcsOSwxMjVdLFsxMjkxLDYsMTEsNjFdLFstMzIsOSwzMiw1MTAsImxvd2VyIl0sWzMzMzksOSwzMiw1MTFdLFsyLDBdXTticmVhaztjYXNlIDEwOnQ9W1stMjEsNyw0LDEyMl0sWy01LDgsMCwyNTJdLFstNCw3LDAsMTIzXSxbLTMsNSwwLDI0XSxbLTIsMiwyLDBdLFsyLDUsMCwyNV0sWzMsNiwwLDU0XSxbNCw3LDAsMTI0XSxbNSw4LDAsMjUzXSxbNiwyLDYsMV0sWzcwLDUsNSwyNl0sWzEwMiw2LDUsNTVdLFsxMzQsNiw2LDU2XSxbMTk4LDYsNyw1N10sWzMyNiw2LDgsNThdLFs1ODIsNiw5LDU5XSxbMTA5NCw2LDEwLDYwXSxbMjExOCw3LDExLDEyNV0sWy0yMiw4LDMyLDI1NCwibG93ZXIiXSxbNDE2Niw4LDMyLDI1NV0sWzIsMl1dO2JyZWFrO2Nhc2UgMTE6dD1bWzEsMSwwLDBdLFsyLDIsMSwyXSxbNCw0LDAsMTJdLFs1LDQsMSwxM10sWzcsNSwxLDI4XSxbOSw1LDIsMjldLFsxMyw2LDIsNjBdLFsxNyw3LDIsMTIyXSxbMjEsNywzLDEyM10sWzI5LDcsNCwxMjRdLFs0NSw3LDUsMTI1XSxbNzcsNyw2LDEyNl0sWzE0MSw3LDMyLDEyN11dO2JyZWFrO2Nhc2UgMTI6dD1bWzEsMSwwLDBdLFsyLDIsMCwyXSxbMywzLDEsNl0sWzUsNSwwLDI4XSxbNiw1LDEsMjldLFs4LDYsMSw2MF0sWzEwLDcsMCwxMjJdLFsxMSw3LDEsMTIzXSxbMTMsNywyLDEyNF0sWzE3LDcsMywxMjVdLFsyNSw3LDQsMTI2XSxbNDEsOCw1LDI1NF0sWzczLDgsMzIsMjU1XV07YnJlYWs7Y2FzZSAxMzp0PVtbMSwxLDAsMF0sWzIsMywwLDRdLFszLDQsMCwxMl0sWzQsNSwwLDI4XSxbNSw0LDEsMTNdLFs3LDMsMyw1XSxbMTUsNiwxLDU4XSxbMTcsNiwyLDU5XSxbMjEsNiwzLDYwXSxbMjksNiw0LDYxXSxbNDUsNiw1LDYyXSxbNzcsNyw2LDEyNl0sWzE0MSw3LDMyLDEyN11dO2JyZWFrO2Nhc2UgMTQ6dD1bWy0yLDMsMCw0XSxbLTEsMywwLDVdLFswLDEsMCwwXSxbMSwzLDAsNl0sWzIsMywwLDddXTticmVhaztjYXNlIDE1OnQ9W1stMjQsNyw0LDEyNF0sWy04LDYsMiw2MF0sWy00LDUsMSwyOF0sWy0yLDQsMCwxMl0sWy0xLDMsMCw0XSxbMCwxLDAsMF0sWzEsMywwLDVdLFsyLDQsMCwxM10sWzMsNSwxLDI5XSxbNSw2LDIsNjFdLFs5LDcsNCwxMjVdLFstMjUsNywzMiwxMjYsImxvd2VyIl0sWzI1LDcsMzIsMTI3XV07YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgSmJpZzJFcnJvcihgc3RhbmRhcmQgdGFibGUgQi4ke2V9IGRvZXMgbm90IGV4aXN0YCl9Zm9yKGxldCBlPTAsaT10Lmxlbmd0aDtlPGk7ZSsrKXRbZV09bmV3IEh1ZmZtYW5MaW5lKHRbZV0pO2k9bmV3IEh1ZmZtYW5UYWJsZSh0LCEwKTtpaVtlXT1pO3JldHVybiBpfWNsYXNzIFJlYWRlcntjb25zdHJ1Y3RvcihlLHQsaSl7dGhpcy5kYXRhPWU7dGhpcy5zdGFydD10O3RoaXMuZW5kPWk7dGhpcy5wb3NpdGlvbj10O3RoaXMuc2hpZnQ9LTE7dGhpcy5jdXJyZW50Qnl0ZT0wfXJlYWRCaXQoKXtpZih0aGlzLnNoaWZ0PDApe2lmKHRoaXMucG9zaXRpb24+PXRoaXMuZW5kKXRocm93IG5ldyBKYmlnMkVycm9yKCJlbmQgb2YgZGF0YSB3aGlsZSByZWFkaW5nIGJpdCIpO3RoaXMuY3VycmVudEJ5dGU9dGhpcy5kYXRhW3RoaXMucG9zaXRpb24rK107dGhpcy5zaGlmdD03fWNvbnN0IGU9dGhpcy5jdXJyZW50Qnl0ZT4+dGhpcy5zaGlmdCYxO3RoaXMuc2hpZnQtLTtyZXR1cm4gZX1yZWFkQml0cyhlKXtsZXQgdCxpPTA7Zm9yKHQ9ZS0xO3Q+PTA7dC0tKWl8PXRoaXMucmVhZEJpdCgpPDx0O3JldHVybiBpfWJ5dGVBbGlnbigpe3RoaXMuc2hpZnQ9LTF9bmV4dCgpe3JldHVybiB0aGlzLnBvc2l0aW9uPj10aGlzLmVuZD8tMTp0aGlzLmRhdGFbdGhpcy5wb3NpdGlvbisrXX19ZnVuY3Rpb24gZ2V0Q3VzdG9tSHVmZm1hblRhYmxlKGUsdCxpKXtsZXQgYT0wO2ZvcihsZXQgcj0wLHM9dC5sZW5ndGg7cjxzO3IrKyl7Y29uc3Qgcz1pW3Rbcl1dO2lmKHMpe2lmKGU9PT1hKXJldHVybiBzO2ErK319dGhyb3cgbmV3IEpiaWcyRXJyb3IoImNhbid0IGZpbmQgY3VzdG9tIEh1ZmZtYW4gdGFibGUiKX1mdW5jdGlvbiByZWFkVW5jb21wcmVzc2VkQml0bWFwKGUsdCxpKXtjb25zdCBhPVtdO2ZvcihsZXQgcj0wO3I8aTtyKyspe2NvbnN0IGk9bmV3IFVpbnQ4QXJyYXkodCk7YS5wdXNoKGkpO2ZvcihsZXQgYT0wO2E8dDthKyspaVthXT1lLnJlYWRCaXQoKTtlLmJ5dGVBbGlnbigpfXJldHVybiBhfWZ1bmN0aW9uIGRlY29kZU1NUkJpdG1hcChlLHQsaSxhKXtjb25zdCByPW5ldyBDQ0lUVEZheERlY29kZXIoZSx7SzotMSxDb2x1bW5zOnQsUm93czppLEJsYWNrSXMxOiEwLEVuZE9mQmxvY2s6YX0pLHM9W107bGV0IG4sbz0hMTtmb3IobGV0IGU9MDtlPGk7ZSsrKXtjb25zdCBlPW5ldyBVaW50OEFycmF5KHQpO3MucHVzaChlKTtsZXQgaT0tMTtmb3IobGV0IGE9MDthPHQ7YSsrKXtpZihpPDApe249ci5yZWFkTmV4dENoYXIoKTtpZigtMT09PW4pe249MDtvPSEwfWk9N31lW2FdPW4+PmkmMTtpLS19fWlmKGEmJiFvKXtjb25zdCBlPTU7Zm9yKGxldCB0PTA7dDxlJiYtMSE9PXIucmVhZE5leHRDaGFyKCk7dCsrKTt9cmV0dXJuIHN9Y2xhc3MgSmJpZzJJbWFnZXtwYXJzZUNodW5rcyhlKXtyZXR1cm4gZnVuY3Rpb24gcGFyc2VKYmlnMkNodW5rcyhlKXtjb25zdCB0PW5ldyBTaW1wbGVTZWdtZW50VmlzaXRvcjtmb3IobGV0IGk9MCxhPWUubGVuZ3RoO2k8YTtpKyspe2NvbnN0IGE9ZVtpXTtwcm9jZXNzU2VnbWVudHMocmVhZFNlZ21lbnRzKHt9LGEuZGF0YSxhLnN0YXJ0LGEuZW5kKSx0KX1yZXR1cm4gdC5idWZmZXJ9KGUpfXBhcnNlKGUpe3Rocm93IG5ldyBFcnJvcigiTm90IGltcGxlbWVudGVkOiBKYmlnMkltYWdlLnBhcnNlIil9fWNsYXNzIEpiaWcyU3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCxpKXtzdXBlcih0KTt0aGlzLnN0cmVhbT1lO3RoaXMuZGljdD1lLmRpY3Q7dGhpcy5tYXliZUxlbmd0aD10O3RoaXMucGFyYW1zPWl9Z2V0IGJ5dGVzKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJieXRlcyIsdGhpcy5zdHJlYW0uZ2V0Qnl0ZXModGhpcy5tYXliZUxlbmd0aCkpfWVuc3VyZUJ1ZmZlcihlKXt9cmVhZEJsb2NrKCl7dGhpcy5kZWNvZGVJbWFnZSgpfWRlY29kZUltYWdlKGUpe2lmKHRoaXMuZW9mKXJldHVybiB0aGlzLmJ1ZmZlcjtlfHw9dGhpcy5ieXRlcztjb25zdCB0PW5ldyBKYmlnMkltYWdlLGk9W107aWYodGhpcy5wYXJhbXMgaW5zdGFuY2VvZiBEaWN0KXtjb25zdCBlPXRoaXMucGFyYW1zLmdldCgiSkJJRzJHbG9iYWxzIik7aWYoZSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pe2NvbnN0IHQ9ZS5nZXRCeXRlcygpO2kucHVzaCh7ZGF0YTp0LHN0YXJ0OjAsZW5kOnQubGVuZ3RofSl9fWkucHVzaCh7ZGF0YTplLHN0YXJ0OjAsZW5kOmUubGVuZ3RofSk7Y29uc3QgYT10LnBhcnNlQ2h1bmtzKGkpLHI9YS5sZW5ndGg7Zm9yKGxldCBlPTA7ZTxyO2UrKylhW2VdXj0yNTU7dGhpcy5idWZmZXI9YTt0aGlzLmJ1ZmZlckxlbmd0aD1yO3RoaXMuZW9mPSEwO3JldHVybiB0aGlzLmJ1ZmZlcn1nZXQgY2FuQXN5bmNEZWNvZGVJbWFnZUZyb21CdWZmZXIoKXtyZXR1cm4gdGhpcy5zdHJlYW0uaXNBc3luY319ZnVuY3Rpb24gY29udmVydFRvUkdCQShlKXtzd2l0Y2goZS5raW5kKXtjYXNlIFM6cmV0dXJuIGNvbnZlcnRCbGFja0FuZFdoaXRlVG9SR0JBKGUpO2Nhc2UgazpyZXR1cm4gZnVuY3Rpb24gY29udmVydFJHQlRvUkdCQSh7c3JjOmUsc3JjUG9zOnQ9MCxkZXN0OmksZGVzdFBvczphPTAsd2lkdGg6cixoZWlnaHQ6c30pe2xldCBuPTA7Y29uc3Qgbz1lLmxlbmd0aD4+MixnPW5ldyBVaW50MzJBcnJheShlLmJ1ZmZlcix0LG8pO2lmKEZlYXR1cmVUZXN0LmlzTGl0dGxlRW5kaWFuKXtmb3IoO248by0yO24rPTMsYSs9NCl7Y29uc3QgZT1nW25dLHQ9Z1tuKzFdLHI9Z1tuKzJdO2lbYV09NDI3ODE5MDA4MHxlO2lbYSsxXT1lPj4+MjR8dDw8OHw0Mjc4MTkwMDgwO2lbYSsyXT10Pj4+MTZ8cjw8MTZ8NDI3ODE5MDA4MDtpW2ErM109cj4+Pjh8NDI3ODE5MDA4MH1mb3IobGV0IHQ9NCpuLHI9ZS5sZW5ndGg7dDxyO3QrPTMpaVthKytdPWVbdF18ZVt0KzFdPDw4fGVbdCsyXTw8MTZ8NDI3ODE5MDA4MH1lbHNle2Zvcig7bjxvLTI7bis9MyxhKz00KXtjb25zdCBlPWdbbl0sdD1nW24rMV0scj1nW24rMl07aVthXT0yNTV8ZTtpW2ErMV09ZTw8MjR8dD4+Pjh8MjU1O2lbYSsyXT10PDwxNnxyPj4+MTZ8MjU1O2lbYSszXT1yPDw4fDI1NX1mb3IobGV0IHQ9NCpuLHI9ZS5sZW5ndGg7dDxyO3QrPTMpaVthKytdPWVbdF08PDI0fGVbdCsxXTw8MTZ8ZVt0KzJdPDw4fDI1NX1yZXR1cm57c3JjUG9zOnQsZGVzdFBvczphfX0oZSl9cmV0dXJuIG51bGx9ZnVuY3Rpb24gY29udmVydEJsYWNrQW5kV2hpdGVUb1JHQkEoe3NyYzplLHNyY1Bvczp0PTAsZGVzdDppLHdpZHRoOmEsaGVpZ2h0OnIsbm9uQmxhY2tDb2xvcjpzPTQyOTQ5NjcyOTUsaW52ZXJzZURlY29kZTpuPSExfSl7Y29uc3Qgbz1GZWF0dXJlVGVzdC5pc0xpdHRsZUVuZGlhbj80Mjc4MTkwMDgwOjI1NSxbZyxjXT1uP1tzLG9dOltvLHNdLEM9YT4+MyxoPTcmYSxsPWUubGVuZ3RoO2k9bmV3IFVpbnQzMkFycmF5KGkuYnVmZmVyKTtsZXQgUT0wO2ZvcihsZXQgYT0wO2E8cjthKyspe2Zvcihjb25zdCBhPXQrQzt0PGE7dCsrKXtjb25zdCBhPXQ8bD9lW3RdOjI1NTtpW1ErK109MTI4JmE/YzpnO2lbUSsrXT02NCZhP2M6ZztpW1ErK109MzImYT9jOmc7aVtRKytdPTE2JmE/YzpnO2lbUSsrXT04JmE/YzpnO2lbUSsrXT00JmE/YzpnO2lbUSsrXT0yJmE/YzpnO2lbUSsrXT0xJmE/YzpnfWlmKDA9PT1oKWNvbnRpbnVlO2NvbnN0IGE9dDxsP2VbdCsrXToyNTU7Zm9yKGxldCBlPTA7ZTxoO2UrKylpW1ErK109YSYxPDw3LWU/YzpnfXJldHVybntzcmNQb3M6dCxkZXN0UG9zOlF9fWNsYXNzIEpwZWdFcnJvciBleHRlbmRzIGN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIkpwZWdFcnJvciIpfX1jbGFzcyBETkxNYXJrZXJFcnJvciBleHRlbmRzIGN0e2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSwiRE5MTWFya2VyRXJyb3IiKTt0aGlzLnNjYW5MaW5lcz10fX1jbGFzcyBFT0lNYXJrZXJFcnJvciBleHRlbmRzIGN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIkVPSU1hcmtlckVycm9yIil9fWNvbnN0IGFpPW5ldyBVaW50OEFycmF5KFswLDEsOCwxNiw5LDIsMywxMCwxNywyNCwzMiwyNSwxOCwxMSw0LDUsMTIsMTksMjYsMzMsNDAsNDgsNDEsMzQsMjcsMjAsMTMsNiw3LDE0LDIxLDI4LDM1LDQyLDQ5LDU2LDU3LDUwLDQzLDM2LDI5LDIyLDE1LDIzLDMwLDM3LDQ0LDUxLDU4LDU5LDUyLDQ1LDM4LDMxLDM5LDQ2LDUzLDYwLDYxLDU0LDQ3LDU1LDYyLDYzXSkscmk9NDAxNyxzaT03OTksbmk9MzQwNixvaT0yMjc2LGdpPTE1NjcsSWk9Mzc4NCxjaT01NzkzLENpPTI4OTY7ZnVuY3Rpb24gYnVpbGRIdWZmbWFuVGFibGUoZSx0KXtsZXQgaSxhLHI9MCxzPTE2O2Zvcig7cz4wJiYhZVtzLTFdOylzLS07Y29uc3Qgbj1be2NoaWxkcmVuOltdLGluZGV4OjB9XTtsZXQgbyxnPW5bMF07Zm9yKGk9MDtpPHM7aSsrKXtmb3IoYT0wO2E8ZVtpXTthKyspe2c9bi5wb3AoKTtnLmNoaWxkcmVuW2cuaW5kZXhdPXRbcl07Zm9yKDtnLmluZGV4PjA7KWc9bi5wb3AoKTtnLmluZGV4Kys7bi5wdXNoKGcpO2Zvcig7bi5sZW5ndGg8PWk7KXtuLnB1c2gobz17Y2hpbGRyZW46W10saW5kZXg6MH0pO2cuY2hpbGRyZW5bZy5pbmRleF09by5jaGlsZHJlbjtnPW99cisrfWlmKGkrMTxzKXtuLnB1c2gobz17Y2hpbGRyZW46W10saW5kZXg6MH0pO2cuY2hpbGRyZW5bZy5pbmRleF09by5jaGlsZHJlbjtnPW99fXJldHVybiBuWzBdLmNoaWxkcmVufWZ1bmN0aW9uIGdldEJsb2NrQnVmZmVyT2Zmc2V0KGUsdCxpKXtyZXR1cm4gNjQqKChlLmJsb2Nrc1BlckxpbmUrMSkqdCtpKX1mdW5jdGlvbiBkZWNvZGVTY2FuKGUsdCxpLGEscixzLG4sbyxnLGM9ITEpe2NvbnN0IEM9aS5tY3VzUGVyTGluZSxoPWkucHJvZ3Jlc3NpdmUsbD10O2xldCBRPTAsRT0wO2Z1bmN0aW9uIHJlYWRCaXQoKXtpZihFPjApe0UtLTtyZXR1cm4gUT4+RSYxfVE9ZVt0KytdO2lmKDI1NT09PVEpe2NvbnN0IGE9ZVt0KytdO2lmKGEpe2lmKDIyMD09PWEmJmMpe2NvbnN0IGE9cmVhZFVpbnQxNihlLHQrPTIpO3QrPTI7aWYoYT4wJiZhIT09aS5zY2FuTGluZXMpdGhyb3cgbmV3IEROTE1hcmtlckVycm9yKCJGb3VuZCBETkwgbWFya2VyICgweEZGREMpIHdoaWxlIHBhcnNpbmcgc2NhbiBkYXRhIixhKX1lbHNlIGlmKDIxNz09PWEpe2lmKGMpe2NvbnN0IGU9cCooOD09PWkucHJlY2lzaW9uPzg6MCk7aWYoZT4wJiZNYXRoLnJvdW5kKGkuc2NhbkxpbmVzL2UpPj01KXRocm93IG5ldyBETkxNYXJrZXJFcnJvcigiRm91bmQgRU9JIG1hcmtlciAoMHhGRkQ5KSB3aGlsZSBwYXJzaW5nIHNjYW4gZGF0YSwgcG9zc2libHkgY2F1c2VkIGJ5IGluY29ycmVjdCBgc2NhbkxpbmVzYCBwYXJhbWV0ZXIiLGUpfXRocm93IG5ldyBFT0lNYXJrZXJFcnJvcigiRm91bmQgRU9JIG1hcmtlciAoMHhGRkQ5KSB3aGlsZSBwYXJzaW5nIHNjYW4gZGF0YSIpfXRocm93IG5ldyBKcGVnRXJyb3IoYHVuZXhwZWN0ZWQgbWFya2VyICR7KFE8PDh8YSkudG9TdHJpbmcoMTYpfWApfX1FPTc7cmV0dXJuIFE+Pj43fWZ1bmN0aW9uIGRlY29kZUh1ZmZtYW4oZSl7bGV0IHQ9ZTtmb3IoOzspe3Q9dFtyZWFkQml0KCldO3N3aXRjaCh0eXBlb2YgdCl7Y2FzZSJudW1iZXIiOnJldHVybiB0O2Nhc2Uib2JqZWN0Ijpjb250aW51ZX10aHJvdyBuZXcgSnBlZ0Vycm9yKCJpbnZhbGlkIGh1ZmZtYW4gc2VxdWVuY2UiKX19ZnVuY3Rpb24gcmVjZWl2ZShlKXtsZXQgdD0wO2Zvcig7ZT4wOyl7dD10PDwxfHJlYWRCaXQoKTtlLS19cmV0dXJuIHR9ZnVuY3Rpb24gcmVjZWl2ZUFuZEV4dGVuZChlKXtpZigxPT09ZSlyZXR1cm4gMT09PXJlYWRCaXQoKT8xOi0xO2NvbnN0IHQ9cmVjZWl2ZShlKTtyZXR1cm4gdD49MTw8ZS0xP3Q6dCsoLTE8PGUpKzF9bGV0IHU9MDtsZXQgZCxmPTA7bGV0IHA9MDtmdW5jdGlvbiBkZWNvZGVNY3UoZSx0LGksYSxyKXtjb25zdCBzPWklQztwPShpL0N8MCkqZS52K2E7Y29uc3Qgbj1zKmUuaCtyO3QoZSxnZXRCbG9ja0J1ZmZlck9mZnNldChlLHAsbikpfWZ1bmN0aW9uIGRlY29kZUJsb2NrKGUsdCxpKXtwPWkvZS5ibG9ja3NQZXJMaW5lfDA7Y29uc3QgYT1pJWUuYmxvY2tzUGVyTGluZTt0KGUsZ2V0QmxvY2tCdWZmZXJPZmZzZXQoZSxwLGEpKX1jb25zdCBtPWEubGVuZ3RoO2xldCB5LHcsYixELFMsaztrPWg/MD09PXM/MD09PW8/ZnVuY3Rpb24gZGVjb2RlRENGaXJzdChlLHQpe2NvbnN0IGk9ZGVjb2RlSHVmZm1hbihlLmh1ZmZtYW5UYWJsZURDKSxhPTA9PT1pPzA6cmVjZWl2ZUFuZEV4dGVuZChpKTw8ZztlLmJsb2NrRGF0YVt0XT1lLnByZWQrPWF9OmZ1bmN0aW9uIGRlY29kZURDU3VjY2Vzc2l2ZShlLHQpe2UuYmxvY2tEYXRhW3RdfD1yZWFkQml0KCk8PGd9OjA9PT1vP2Z1bmN0aW9uIGRlY29kZUFDRmlyc3QoZSx0KXtpZih1PjApe3UtLTtyZXR1cm59bGV0IGk9cztjb25zdCBhPW47Zm9yKDtpPD1hOyl7Y29uc3QgYT1kZWNvZGVIdWZmbWFuKGUuaHVmZm1hblRhYmxlQUMpLHI9MTUmYSxzPWE+PjQ7aWYoMD09PXIpe2lmKHM8MTUpe3U9cmVjZWl2ZShzKSsoMTw8cyktMTticmVha31pKz0xNjtjb250aW51ZX1pKz1zO2NvbnN0IG49YWlbaV07ZS5ibG9ja0RhdGFbdCtuXT1yZWNlaXZlQW5kRXh0ZW5kKHIpKigxPDxnKTtpKyt9fTpmdW5jdGlvbiBkZWNvZGVBQ1N1Y2Nlc3NpdmUoZSx0KXtsZXQgaT1zO2NvbnN0IGE9bjtsZXQgcixvLGM9MDtmb3IoO2k8PWE7KXtjb25zdCBhPXQrYWlbaV0scz1lLmJsb2NrRGF0YVthXTwwPy0xOjE7c3dpdGNoKGYpe2Nhc2UgMDpvPWRlY29kZUh1ZmZtYW4oZS5odWZmbWFuVGFibGVBQyk7cj0xNSZvO2M9bz4+NDtpZigwPT09cilpZihjPDE1KXt1PXJlY2VpdmUoYykrKDE8PGMpO2Y9NH1lbHNle2M9MTY7Zj0xfWVsc2V7aWYoMSE9PXIpdGhyb3cgbmV3IEpwZWdFcnJvcigiaW52YWxpZCBBQ24gZW5jb2RpbmciKTtkPXJlY2VpdmVBbmRFeHRlbmQocik7Zj1jPzI6M31jb250aW51ZTtjYXNlIDE6Y2FzZSAyOmlmKGUuYmxvY2tEYXRhW2FdKWUuYmxvY2tEYXRhW2FdKz1zKihyZWFkQml0KCk8PGcpO2Vsc2V7Yy0tOzA9PT1jJiYoZj0yPT09Zj8zOjApfWJyZWFrO2Nhc2UgMzppZihlLmJsb2NrRGF0YVthXSllLmJsb2NrRGF0YVthXSs9cyoocmVhZEJpdCgpPDxnKTtlbHNle2UuYmxvY2tEYXRhW2FdPWQ8PGc7Zj0wfWJyZWFrO2Nhc2UgNDplLmJsb2NrRGF0YVthXSYmKGUuYmxvY2tEYXRhW2FdKz1zKihyZWFkQml0KCk8PGcpKX1pKyt9aWYoND09PWYpe3UtLTswPT09dSYmKGY9MCl9fTpmdW5jdGlvbiBkZWNvZGVCYXNlbGluZShlLHQpe2NvbnN0IGk9ZGVjb2RlSHVmZm1hbihlLmh1ZmZtYW5UYWJsZURDKSxhPTA9PT1pPzA6cmVjZWl2ZUFuZEV4dGVuZChpKTtlLmJsb2NrRGF0YVt0XT1lLnByZWQrPWE7bGV0IHI9MTtmb3IoO3I8NjQ7KXtjb25zdCBpPWRlY29kZUh1ZmZtYW4oZS5odWZmbWFuVGFibGVBQyksYT0xNSZpLHM9aT4+NDtpZigwPT09YSl7aWYoczwxNSlicmVhaztyKz0xNjtjb250aW51ZX1yKz1zO2NvbnN0IG49YWlbcl07ZS5ibG9ja0RhdGFbdCtuXT1yZWNlaXZlQW5kRXh0ZW5kKGEpO3IrK319O2xldCBSLE49MDtjb25zdCBHPTE9PT1tP2FbMF0uYmxvY2tzUGVyTGluZSphWzBdLmJsb2Nrc1BlckNvbHVtbjpDKmkubWN1c1BlckNvbHVtbjtsZXQgeCxVO2Zvcig7Tjw9Rzspe2NvbnN0IGk9cj9NYXRoLm1pbihHLU4scik6RztpZihpPjApe2Zvcih3PTA7dzxtO3crKylhW3ddLnByZWQ9MDt1PTA7aWYoMT09PW0pe3k9YVswXTtmb3IoUz0wO1M8aTtTKyspe2RlY29kZUJsb2NrKHksayxOKTtOKyt9fWVsc2UgZm9yKFM9MDtTPGk7UysrKXtmb3Iodz0wO3c8bTt3Kyspe3k9YVt3XTt4PXkuaDtVPXkudjtmb3IoYj0wO2I8VTtiKyspZm9yKEQ9MDtEPHg7RCsrKWRlY29kZU1jdSh5LGssTixiLEQpfU4rK319RT0wO1I9ZmluZE5leHRGaWxlTWFya2VyKGUsdCk7aWYoIVIpYnJlYWs7aWYoUi5pbnZhbGlkKXt3YXJuKGBkZWNvZGVTY2FuIC0gJHtpPjA/InVuZXhwZWN0ZWQiOiJleGNlc3NpdmUifSBNQ1UgZGF0YSwgY3VycmVudCBtYXJrZXIgaXM6ICR7Ui5pbnZhbGlkfWApO3Q9Ui5vZmZzZXR9aWYoIShSLm1hcmtlcj49NjU0ODgmJlIubWFya2VyPD02NTQ5NSkpYnJlYWs7dCs9Mn1yZXR1cm4gdC1sfWZ1bmN0aW9uIHF1YW50aXplQW5kSW52ZXJzZShlLHQsaSl7Y29uc3QgYT1lLnF1YW50aXphdGlvblRhYmxlLHI9ZS5ibG9ja0RhdGE7bGV0IHMsbixvLGcsYyxDLGgsbCxRLEUsdSxkLGYscCxtLHksdztpZighYSl0aHJvdyBuZXcgSnBlZ0Vycm9yKCJtaXNzaW5nIHJlcXVpcmVkIFF1YW50aXphdGlvbiBUYWJsZS4iKTtmb3IobGV0IGU9MDtlPDY0O2UrPTgpe1E9clt0K2VdO0U9clt0K2UrMV07dT1yW3QrZSsyXTtkPXJbdCtlKzNdO2Y9clt0K2UrNF07cD1yW3QrZSs1XTttPXJbdCtlKzZdO3k9clt0K2UrN107USo9YVtlXTtpZigwIT0oRXx1fGR8ZnxwfG18eSkpe0UqPWFbZSsxXTt1Kj1hW2UrMl07ZCo9YVtlKzNdO2YqPWFbZSs0XTtwKj1hW2UrNV07bSo9YVtlKzZdO3kqPWFbZSs3XTtzPWNpKlErMTI4Pj44O249Y2kqZisxMjg+Pjg7bz11O2c9bTtjPUNpKihFLXkpKzEyOD4+ODtsPUNpKihFK3kpKzEyOD4+ODtDPWQ8PDQ7aD1wPDw0O3M9cytuKzE+PjE7bj1zLW47dz1vKklpK2cqZ2krMTI4Pj44O289bypnaS1nKklpKzEyOD4+ODtnPXc7Yz1jK2grMT4+MTtoPWMtaDtsPWwrQysxPj4xO0M9bC1DO3M9cytnKzE+PjE7Zz1zLWc7bj1uK28rMT4+MTtvPW4tbzt3PWMqb2krbCpuaSsyMDQ4Pj4xMjtjPWMqbmktbCpvaSsyMDQ4Pj4xMjtsPXc7dz1DKnNpK2gqcmkrMjA0OD4+MTI7Qz1DKnJpLWgqc2krMjA0OD4+MTI7aD13O2lbZV09cytsO2lbZSs3XT1zLWw7aVtlKzFdPW4raDtpW2UrNl09bi1oO2lbZSsyXT1vK0M7aVtlKzVdPW8tQztpW2UrM109ZytjO2lbZSs0XT1nLWN9ZWxzZXt3PWNpKlErNTEyPj4xMDtpW2VdPXc7aVtlKzFdPXc7aVtlKzJdPXc7aVtlKzNdPXc7aVtlKzRdPXc7aVtlKzVdPXc7aVtlKzZdPXc7aVtlKzddPXd9fWZvcihsZXQgZT0wO2U8ODsrK2Upe1E9aVtlXTtFPWlbZSs4XTt1PWlbZSsxNl07ZD1pW2UrMjRdO2Y9aVtlKzMyXTtwPWlbZSs0MF07bT1pW2UrNDhdO3k9aVtlKzU2XTtpZigwIT0oRXx1fGR8ZnxwfG18eSkpe3M9Y2kqUSsyMDQ4Pj4xMjtuPWNpKmYrMjA0OD4+MTI7bz11O2c9bTtjPUNpKihFLXkpKzIwNDg+PjEyO2w9Q2kqKEUreSkrMjA0OD4+MTI7Qz1kO2g9cDtzPTQxMTIrKHMrbisxPj4xKTtuPXMtbjt3PW8qSWkrZypnaSsyMDQ4Pj4xMjtvPW8qZ2ktZypJaSsyMDQ4Pj4xMjtnPXc7Yz1jK2grMT4+MTtoPWMtaDtsPWwrQysxPj4xO0M9bC1DO3M9cytnKzE+PjE7Zz1zLWc7bj1uK28rMT4+MTtvPW4tbzt3PWMqb2krbCpuaSsyMDQ4Pj4xMjtjPWMqbmktbCpvaSsyMDQ4Pj4xMjtsPXc7dz1DKnNpK2gqcmkrMjA0OD4+MTI7Qz1DKnJpLWgqc2krMjA0OD4+MTI7aD13O1E9cytsO3k9cy1sO0U9bitoO209bi1oO3U9bytDO3A9by1DO2Q9ZytjO2Y9Zy1jO1E8MTY/UT0wOlE+PTQwODA/UT0yNTU6UT4+PTQ7RTwxNj9FPTA6RT49NDA4MD9FPTI1NTpFPj49NDt1PDE2P3U9MDp1Pj00MDgwP3U9MjU1OnU+Pj00O2Q8MTY/ZD0wOmQ+PTQwODA/ZD0yNTU6ZD4+PTQ7ZjwxNj9mPTA6Zj49NDA4MD9mPTI1NTpmPj49NDtwPDE2P3A9MDpwPj00MDgwP3A9MjU1OnA+Pj00O208MTY/bT0wOm0+PTQwODA/bT0yNTU6bT4+PTQ7eTwxNj95PTA6eT49NDA4MD95PTI1NTp5Pj49NDtyW3QrZV09UTtyW3QrZSs4XT1FO3JbdCtlKzE2XT11O3JbdCtlKzI0XT1kO3JbdCtlKzMyXT1mO3JbdCtlKzQwXT1wO3JbdCtlKzQ4XT1tO3JbdCtlKzU2XT15fWVsc2V7dz1jaSpRKzgxOTI+PjE0O3c9dzwtMjA0MD8wOnc+PTIwMjQ/MjU1OncrMjA1Nj4+NDtyW3QrZV09dztyW3QrZSs4XT13O3JbdCtlKzE2XT13O3JbdCtlKzI0XT13O3JbdCtlKzMyXT13O3JbdCtlKzQwXT13O3JbdCtlKzQ4XT13O3JbdCtlKzU2XT13fX19ZnVuY3Rpb24gYnVpbGRDb21wb25lbnREYXRhKGUsdCl7Y29uc3QgaT10LmJsb2Nrc1BlckxpbmUsYT10LmJsb2Nrc1BlckNvbHVtbixyPW5ldyBJbnQxNkFycmF5KDY0KTtmb3IobGV0IGU9MDtlPGE7ZSsrKWZvcihsZXQgYT0wO2E8aTthKyspe3F1YW50aXplQW5kSW52ZXJzZSh0LGdldEJsb2NrQnVmZmVyT2Zmc2V0KHQsZSxhKSxyKX1yZXR1cm4gdC5ibG9ja0RhdGF9ZnVuY3Rpb24gZmluZE5leHRGaWxlTWFya2VyKGUsdCxpPXQpe2NvbnN0IGE9ZS5sZW5ndGgtMTtsZXQgcj1pPHQ/aTp0O2lmKHQ+PWEpcmV0dXJuIG51bGw7Y29uc3Qgcz1yZWFkVWludDE2KGUsdCk7aWYocz49NjU0NzImJnM8PTY1NTM0KXJldHVybntpbnZhbGlkOm51bGwsbWFya2VyOnMsb2Zmc2V0OnR9O2xldCBuPXJlYWRVaW50MTYoZSxyKTtmb3IoOyEobj49NjU0NzImJm48PTY1NTM0KTspe2lmKCsrcj49YSlyZXR1cm4gbnVsbDtuPXJlYWRVaW50MTYoZSxyKX1yZXR1cm57aW52YWxpZDpzLnRvU3RyaW5nKDE2KSxtYXJrZXI6bixvZmZzZXQ6cn19Y2xhc3MgSnBlZ0ltYWdle2NvbnN0cnVjdG9yKHtkZWNvZGVUcmFuc2Zvcm06ZT1udWxsLGNvbG9yVHJhbnNmb3JtOnQ9LTF9PXt9KXt0aGlzLl9kZWNvZGVUcmFuc2Zvcm09ZTt0aGlzLl9jb2xvclRyYW5zZm9ybT10fXBhcnNlKGUse2RubFNjYW5MaW5lczp0PW51bGx9PXt9KXtmdW5jdGlvbiByZWFkRGF0YUJsb2NrKCl7Y29uc3QgdD1yZWFkVWludDE2KGUscik7cis9MjtsZXQgaT1yK3QtMjtjb25zdCBhPWZpbmROZXh0RmlsZU1hcmtlcihlLGkscik7aWYoYT8uaW52YWxpZCl7d2FybigicmVhZERhdGFCbG9jayAtIGluY29ycmVjdCBsZW5ndGgsIGN1cnJlbnQgbWFya2VyIGlzOiAiK2EuaW52YWxpZCk7aT1hLm9mZnNldH1jb25zdCBzPWUuc3ViYXJyYXkocixpKTtyKz1zLmxlbmd0aDtyZXR1cm4gc31mdW5jdGlvbiBwcmVwYXJlQ29tcG9uZW50cyhlKXtjb25zdCB0PU1hdGguY2VpbChlLnNhbXBsZXNQZXJMaW5lLzgvZS5tYXhIKSxpPU1hdGguY2VpbChlLnNjYW5MaW5lcy84L2UubWF4Vik7Zm9yKGNvbnN0IGEgb2YgZS5jb21wb25lbnRzKXtjb25zdCByPU1hdGguY2VpbChNYXRoLmNlaWwoZS5zYW1wbGVzUGVyTGluZS84KSphLmgvZS5tYXhIKSxzPU1hdGguY2VpbChNYXRoLmNlaWwoZS5zY2FuTGluZXMvOCkqYS52L2UubWF4Viksbj10KmEuaCxvPTY0KihpKmEudikqKG4rMSk7YS5ibG9ja0RhdGE9bmV3IEludDE2QXJyYXkobyk7YS5ibG9ja3NQZXJMaW5lPXI7YS5ibG9ja3NQZXJDb2x1bW49c31lLm1jdXNQZXJMaW5lPXQ7ZS5tY3VzUGVyQ29sdW1uPWl9bGV0IGksYSxyPTAscz1udWxsLG49bnVsbCxvPTA7Y29uc3QgZz1bXSxjPVtdLEM9W107bGV0IGg9cmVhZFVpbnQxNihlLHIpO3IrPTI7aWYoNjU0OTYhPT1oKXRocm93IG5ldyBKcGVnRXJyb3IoIlNPSSBub3QgZm91bmQiKTtoPXJlYWRVaW50MTYoZSxyKTtyKz0yO0E6Zm9yKDs2NTQ5NyE9PWg7KXtsZXQgbCxRLEU7c3dpdGNoKGgpe2Nhc2UgNjU1MDQ6Y2FzZSA2NTUwNTpjYXNlIDY1NTA2OmNhc2UgNjU1MDc6Y2FzZSA2NTUwODpjYXNlIDY1NTA5OmNhc2UgNjU1MTA6Y2FzZSA2NTUxMTpjYXNlIDY1NTEyOmNhc2UgNjU1MTM6Y2FzZSA2NTUxNDpjYXNlIDY1NTE1OmNhc2UgNjU1MTY6Y2FzZSA2NTUxNzpjYXNlIDY1NTE4OmNhc2UgNjU1MTk6Y2FzZSA2NTUzNDpjb25zdCB1PXJlYWREYXRhQmxvY2soKTs2NTUwND09PWgmJjc0PT09dVswXSYmNzA9PT11WzFdJiY3Mz09PXVbMl0mJjcwPT09dVszXSYmMD09PXVbNF0mJihzPXt2ZXJzaW9uOnttYWpvcjp1WzVdLG1pbm9yOnVbNl19LGRlbnNpdHlVbml0czp1WzddLHhEZW5zaXR5OnVbOF08PDh8dVs5XSx5RGVuc2l0eTp1WzEwXTw8OHx1WzExXSx0aHVtYldpZHRoOnVbMTJdLHRodW1iSGVpZ2h0OnVbMTNdLHRodW1iRGF0YTp1LnN1YmFycmF5KDE0LDE0KzMqdVsxMl0qdVsxM10pfSk7NjU1MTg9PT1oJiY2NT09PXVbMF0mJjEwMD09PXVbMV0mJjExMT09PXVbMl0mJjk4PT09dVszXSYmMTAxPT09dVs0XSYmKG49e3ZlcnNpb246dVs1XTw8OHx1WzZdLGZsYWdzMDp1WzddPDw4fHVbOF0sZmxhZ3MxOnVbOV08PDh8dVsxMF0sdHJhbnNmb3JtQ29kZTp1WzExXX0pO2JyZWFrO2Nhc2UgNjU0OTk6Y29uc3QgZD1yZWFkVWludDE2KGUscik7cis9Mjtjb25zdCBmPWQrci0yO2xldCBwO2Zvcig7cjxmOyl7Y29uc3QgdD1lW3IrK10saT1uZXcgVWludDE2QXJyYXkoNjQpO2lmKHQ+PjQ9PTApZm9yKFE9MDtRPDY0O1ErKyl7cD1haVtRXTtpW3BdPWVbcisrXX1lbHNle2lmKHQ+PjQhPTEpdGhyb3cgbmV3IEpwZWdFcnJvcigiRFFUIC0gaW52YWxpZCB0YWJsZSBzcGVjIik7Zm9yKFE9MDtRPDY0O1ErKyl7cD1haVtRXTtpW3BdPXJlYWRVaW50MTYoZSxyKTtyKz0yfX1nWzE1JnRdPWl9YnJlYWs7Y2FzZSA2NTQ3MjpjYXNlIDY1NDczOmNhc2UgNjU0NzQ6aWYoaSl0aHJvdyBuZXcgSnBlZ0Vycm9yKCJPbmx5IHNpbmdsZSBmcmFtZSBKUEVHcyBzdXBwb3J0ZWQiKTtyKz0yO2k9e307aS5leHRlbmRlZD02NTQ3Mz09PWg7aS5wcm9ncmVzc2l2ZT02NTQ3ND09PWg7aS5wcmVjaXNpb249ZVtyKytdO2NvbnN0IG09cmVhZFVpbnQxNihlLHIpO3IrPTI7aS5zY2FuTGluZXM9dHx8bTtpLnNhbXBsZXNQZXJMaW5lPXJlYWRVaW50MTYoZSxyKTtyKz0yO2kuY29tcG9uZW50cz1bXTtpLmNvbXBvbmVudElkcz17fTtjb25zdCB5PWVbcisrXTtsZXQgdz0wLGI9MDtmb3IobD0wO2w8eTtsKyspe2NvbnN0IHQ9ZVtyXSxhPWVbcisxXT4+NCxzPTE1JmVbcisxXTt3PGEmJih3PWEpO2I8cyYmKGI9cyk7Y29uc3Qgbj1lW3IrMl07RT1pLmNvbXBvbmVudHMucHVzaCh7aDphLHY6cyxxdWFudGl6YXRpb25JZDpuLHF1YW50aXphdGlvblRhYmxlOm51bGx9KTtpLmNvbXBvbmVudElkc1t0XT1FLTE7cis9M31pLm1heEg9dztpLm1heFY9YjtwcmVwYXJlQ29tcG9uZW50cyhpKTticmVhaztjYXNlIDY1NDc2OmNvbnN0IEQ9cmVhZFVpbnQxNihlLHIpO3IrPTI7Zm9yKGw9MjtsPEQ7KXtjb25zdCB0PWVbcisrXSxpPW5ldyBVaW50OEFycmF5KDE2KTtsZXQgYT0wO2ZvcihRPTA7UTwxNjtRKysscisrKWErPWlbUV09ZVtyXTtjb25zdCBzPW5ldyBVaW50OEFycmF5KGEpO2ZvcihRPTA7UTxhO1ErKyxyKyspc1tRXT1lW3JdO2wrPTE3K2E7KHQ+PjQ9PTA/QzpjKVsxNSZ0XT1idWlsZEh1ZmZtYW5UYWJsZShpLHMpfWJyZWFrO2Nhc2UgNjU1MDE6cis9MjthPXJlYWRVaW50MTYoZSxyKTtyKz0yO2JyZWFrO2Nhc2UgNjU0OTg6Y29uc3QgUz0xPT0rK28mJiF0O3IrPTI7Y29uc3Qgaz1lW3IrK10sUj1bXTtmb3IobD0wO2w8aztsKyspe2NvbnN0IHQ9ZVtyKytdLGE9aS5jb21wb25lbnRJZHNbdF0scz1pLmNvbXBvbmVudHNbYV07cy5pbmRleD10O2NvbnN0IG49ZVtyKytdO3MuaHVmZm1hblRhYmxlREM9Q1tuPj40XTtzLmh1ZmZtYW5UYWJsZUFDPWNbMTUmbl07Ui5wdXNoKHMpfWNvbnN0IE49ZVtyKytdLEc9ZVtyKytdLHg9ZVtyKytdO3RyeXtjb25zdCB0PWRlY29kZVNjYW4oZSxyLGksUixhLE4sRyx4Pj40LDE1JngsUyk7cis9dH1jYXRjaCh0KXtpZih0IGluc3RhbmNlb2YgRE5MTWFya2VyRXJyb3Ipe3dhcm4oYCR7dC5tZXNzYWdlfSAtLSBhdHRlbXB0aW5nIHRvIHJlLXBhcnNlIHRoZSBKUEVHIGltYWdlLmApO3JldHVybiB0aGlzLnBhcnNlKGUse2RubFNjYW5MaW5lczp0LnNjYW5MaW5lc30pfWlmKHQgaW5zdGFuY2VvZiBFT0lNYXJrZXJFcnJvcil7d2FybihgJHt0Lm1lc3NhZ2V9IC0tIGlnbm9yaW5nIHRoZSByZXN0IG9mIHRoZSBpbWFnZSBkYXRhLmApO2JyZWFrIEF9dGhyb3cgdH1icmVhaztjYXNlIDY1NTAwOnIrPTQ7YnJlYWs7Y2FzZSA2NTUzNToyNTUhPT1lW3JdJiZyLS07YnJlYWs7ZGVmYXVsdDpjb25zdCBVPWZpbmROZXh0RmlsZU1hcmtlcihlLHItMixyLTMpO2lmKFU/LmludmFsaWQpe3dhcm4oIkpwZWdJbWFnZS5wYXJzZSAtIHVuZXhwZWN0ZWQgZGF0YSwgY3VycmVudCBtYXJrZXIgaXM6ICIrVS5pbnZhbGlkKTtyPVUub2Zmc2V0O2JyZWFrfWlmKCFVfHxyPj1lLmxlbmd0aC0xKXt3YXJuKCJKcGVnSW1hZ2UucGFyc2UgLSByZWFjaGVkIHRoZSBlbmQgb2YgdGhlIGltYWdlIGRhdGEgd2l0aG91dCBmaW5kaW5nIGFuIEVPSSBtYXJrZXIgKDB4RkZEOSkuIik7YnJlYWsgQX10aHJvdyBuZXcgSnBlZ0Vycm9yKCJKcGVnSW1hZ2UucGFyc2UgLSB1bmtub3duIG1hcmtlcjogIitoLnRvU3RyaW5nKDE2KSl9aD1yZWFkVWludDE2KGUscik7cis9Mn1pZighaSl0aHJvdyBuZXcgSnBlZ0Vycm9yKCJKcGVnSW1hZ2UucGFyc2UgLSBubyBmcmFtZSBkYXRhIGZvdW5kLiIpO3RoaXMud2lkdGg9aS5zYW1wbGVzUGVyTGluZTt0aGlzLmhlaWdodD1pLnNjYW5MaW5lczt0aGlzLmpmaWY9czt0aGlzLmFkb2JlPW47dGhpcy5jb21wb25lbnRzPVtdO2Zvcihjb25zdCBlIG9mIGkuY29tcG9uZW50cyl7Y29uc3QgdD1nW2UucXVhbnRpemF0aW9uSWRdO3QmJihlLnF1YW50aXphdGlvblRhYmxlPXQpO3RoaXMuY29tcG9uZW50cy5wdXNoKHtpbmRleDplLmluZGV4LG91dHB1dDpidWlsZENvbXBvbmVudERhdGEoMCxlKSxzY2FsZVg6ZS5oL2kubWF4SCxzY2FsZVk6ZS52L2kubWF4VixibG9ja3NQZXJMaW5lOmUuYmxvY2tzUGVyTGluZSxibG9ja3NQZXJDb2x1bW46ZS5ibG9ja3NQZXJDb2x1bW59KX10aGlzLm51bUNvbXBvbmVudHM9dGhpcy5jb21wb25lbnRzLmxlbmd0aH1fZ2V0TGluZWFyaXplZEJsb2NrRGF0YShlLHQsaT0hMSl7Y29uc3QgYT10aGlzLndpZHRoL2Uscj10aGlzLmhlaWdodC90O2xldCBzLG4sbyxnLGMsQyxoLGwsUSxFLHUsZD0wO2NvbnN0IGY9dGhpcy5jb21wb25lbnRzLmxlbmd0aCxwPWUqdCpmLG09bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KHApLHk9bmV3IFVpbnQzMkFycmF5KGUpLHc9NDI5NDk2NzI4ODtsZXQgYjtmb3IoaD0wO2g8ZjtoKyspe3M9dGhpcy5jb21wb25lbnRzW2hdO249cy5zY2FsZVgqYTtvPXMuc2NhbGVZKnI7ZD1oO3U9cy5vdXRwdXQ7Zz1zLmJsb2Nrc1BlckxpbmUrMTw8MztpZihuIT09Yil7Zm9yKGM9MDtjPGU7YysrKXtsPTB8YypuO3lbY109KGwmdyk8PDN8NyZsfWI9bn1mb3IoQz0wO0M8dDtDKyspe2w9MHxDKm87RT1nKihsJncpfCg3JmwpPDwzO2ZvcihjPTA7YzxlO2MrKyl7bVtkXT11W0UreVtjXV07ZCs9Zn19fWxldCBEPXRoaXMuX2RlY29kZVRyYW5zZm9ybTtpfHw0IT09Znx8RHx8KEQ9bmV3IEludDMyQXJyYXkoWy0yNTYsMjU1LC0yNTYsMjU1LC0yNTYsMjU1LC0yNTYsMjU1XSkpO2lmKEQpZm9yKGg9MDtoPHA7KWZvcihsPTAsUT0wO2w8ZjtsKyssaCsrLFErPTIpbVtoXT0obVtoXSpEW1FdPj44KStEW1ErMV07cmV0dXJuIG19Z2V0IF9pc0NvbG9yQ29udmVyc2lvbk5lZWRlZCgpe3JldHVybiB0aGlzLmFkb2JlPyEhdGhpcy5hZG9iZS50cmFuc2Zvcm1Db2RlOjM9PT10aGlzLm51bUNvbXBvbmVudHM/MCE9PXRoaXMuX2NvbG9yVHJhbnNmb3JtJiYoODIhPT10aGlzLmNvbXBvbmVudHNbMF0uaW5kZXh8fDcxIT09dGhpcy5jb21wb25lbnRzWzFdLmluZGV4fHw2NiE9PXRoaXMuY29tcG9uZW50c1syXS5pbmRleCk6MT09PXRoaXMuX2NvbG9yVHJhbnNmb3JtfV9jb252ZXJ0WWNjVG9SZ2IoZSl7bGV0IHQsaSxhO2ZvcihsZXQgcj0wLHM9ZS5sZW5ndGg7cjxzO3IrPTMpe3Q9ZVtyXTtpPWVbcisxXTthPWVbcisyXTtlW3JdPXQtMTc5LjQ1NisxLjQwMiphO2VbcisxXT10KzEzNS40NTktLjM0NCppLS43MTQqYTtlW3IrMl09dC0yMjYuODE2KzEuNzcyKml9cmV0dXJuIGV9X2NvbnZlcnRZY2NUb1JnYmEoZSx0KXtmb3IobGV0IGk9MCxhPTAscj1lLmxlbmd0aDtpPHI7aSs9MyxhKz00KXtjb25zdCByPWVbaV0scz1lW2krMV0sbj1lW2krMl07dFthXT1yLTE3OS40NTYrMS40MDIqbjt0W2ErMV09cisxMzUuNDU5LS4zNDQqcy0uNzE0Km47dFthKzJdPXItMjI2LjgxNisxLjc3MipzO3RbYSszXT0yNTV9cmV0dXJuIHR9X2NvbnZlcnRZY2NrVG9SZ2IoZSl7bGV0IHQsaSxhLHIscz0wO2ZvcihsZXQgbj0wLG89ZS5sZW5ndGg7bjxvO24rPTQpe3Q9ZVtuXTtpPWVbbisxXTthPWVbbisyXTtyPWVbbiszXTtlW3MrK109aSooLTY2MDYzNTY2OTQyMDM2NGUtMTkqaSsuMDAwNDM3MTMwNDc1OTI2MjMyKmEtNTQwODA2MTAwNjQ1OTllLTE4KnQrLjAwMDQ4NDQ5Nzk3MTIwMjgxKnItLjE1NDM2MjE1MTg3MTEyNiktMTIyLjY3MTk1NDA2ODk0K2EqKC0uMDAwOTU3OTY0Mzc4NDQ1NzczKmErLjAwMDgxNzA3NjkxMTM0NjYyNSp0LS4wMDQ3NzI3MTQwNTQwODc0NypyKzEuNTMzODAyNTMyMjE3MzQpK3QqKC4wMDA5NjEyNTAxODQxMzA2ODgqdC0uMDAyNjYyNTczMzIyODM5MzMqcisuNDgzNTcwODg0NTEyNjUpK3IqKC0uMDAwMzM2MTk3MTc3NjE4Mzk0KnIrLjQ4NDc5MTU2MTQ5MDc3Nik7ZVtzKytdPTEwNy4yNjgwMzkzOTc3MjQraSooMjE5OTI3MTA0NTI1NzQxZS0xOSppLS4wMDA2NDA5OTIwMTgyOTc5NDUqYSsuMDAwNjU5Mzk3MDAxMjQ1NTc3KnQrLjAwMDQyNjEwNTY1MjkzODgzNypyLS4xNzY0OTE3OTI0NjI4NzUpK2EqKC0uMDAwNzc4MjY5OTQxNTEzNjgzKmErLjAwMTMwODcyMjYxNDA4Mjc1KnQrLjAwMDc3MDQ4MjYzMTgwMTEzMipyLS4xNTEwNTE0OTI3NzU1NjIpK3QqKC4wMDEyNjkzNTM2ODExNDg0Myp0LS4wMDI2NTA5MDE4OTAxMDg5OCpyKy4yNTgwMjkxMDIwNjg0NSkrciooLS4wMDAzMTg5MTMxMTc1ODgzMjgqci0uMjEzNzQyNDAwMzIzNjY1KTtlW3MrK109aSooLS4wMDA1NzAxMTUxOTY5NzM2NzcqaS0yNjM0MDkwNTEwMDQ1ODllLTE5KmErLjAwMjA3NDEwODgxMTUwMTIqdC0uMDAyODgyNjAyMzY4NTM0NDIqcisuODE0MjcyOTY4MzU5Mjk1KS0yMC44MTAwMTI1NDY5NDcrYSooLTE1MzQ5NjA1NzQ0MDk3NWUtMTkqYS0uMDAwMTMyNjg5MDQzOTYxNDQ2KnQrLjAwMDU2MDgzMzY5MTI0MjgxMipyLS4xOTUxNTIwMjc1MzQwNDkpK3QqKC4wMDE3NDQxODEzMjkyNzU4Mip0LS4wMDI1NTI0MzMyMTQzOTM0NypyKy4xMTY5MzUwMjA0NjUxNDUpK3IqKC0uMDAwMzQzNTMxOTk2NTEwNTU1KnIrLjI0MTY1MjYwMjMyNDA3KX1yZXR1cm4gZS5zdWJhcnJheSgwLHMpfV9jb252ZXJ0WWNja1RvUmdiYShlKXtmb3IobGV0IHQ9MCxpPWUubGVuZ3RoO3Q8aTt0Kz00KXtjb25zdCBpPWVbdF0sYT1lW3QrMV0scj1lW3QrMl0scz1lW3QrM107ZVt0XT1hKigtNjYwNjM1NjY5NDIwMzY0ZS0xOSphKy4wMDA0MzcxMzA0NzU5MjYyMzIqci01NDA4MDYxMDA2NDU5OWUtMTgqaSsuMDAwNDg0NDk3OTcxMjAyODEqcy0uMTU0MzYyMTUxODcxMTI2KS0xMjIuNjcxOTU0MDY4OTQrciooLS4wMDA5NTc5NjQzNzg0NDU3NzMqcisuMDAwODE3MDc2OTExMzQ2NjI1KmktLjAwNDc3MjcxNDA1NDA4NzQ3KnMrMS41MzM4MDI1MzIyMTczNCkraSooLjAwMDk2MTI1MDE4NDEzMDY4OCppLS4wMDI2NjI1NzMzMjI4MzkzMypzKy40ODM1NzA4ODQ1MTI2NSkrcyooLS4wMDAzMzYxOTcxNzc2MTgzOTQqcysuNDg0NzkxNTYxNDkwNzc2KTtlW3QrMV09MTA3LjI2ODAzOTM5NzcyNCthKigyMTk5MjcxMDQ1MjU3NDFlLTE5KmEtLjAwMDY0MDk5MjAxODI5Nzk0NSpyKy4wMDA2NTkzOTcwMDEyNDU1NzcqaSsuMDAwNDI2MTA1NjUyOTM4ODM3KnMtLjE3NjQ5MTc5MjQ2Mjg3NSkrciooLS4wMDA3NzgyNjk5NDE1MTM2ODMqcisuMDAxMzA4NzIyNjE0MDgyNzUqaSsuMDAwNzcwNDgyNjMxODAxMTMyKnMtLjE1MTA1MTQ5Mjc3NTU2MikraSooLjAwMTI2OTM1MzY4MTE0ODQzKmktLjAwMjY1MDkwMTg5MDEwODk4KnMrLjI1ODAyOTEwMjA2ODQ1KStzKigtLjAwMDMxODkxMzExNzU4ODMyOCpzLS4yMTM3NDI0MDAzMjM2NjUpO2VbdCsyXT1hKigtLjAwMDU3MDExNTE5Njk3MzY3NyphLTI2MzQwOTA1MTAwNDU4OWUtMTkqcisuMDAyMDc0MTA4ODExNTAxMippLS4wMDI4ODI2MDIzNjg1MzQ0MipzKy44MTQyNzI5NjgzNTkyOTUpLTIwLjgxMDAxMjU0Njk0NytyKigtMTUzNDk2MDU3NDQwOTc1ZS0xOSpyLS4wMDAxMzI2ODkwNDM5NjE0NDYqaSsuMDAwNTYwODMzNjkxMjQyODEyKnMtLjE5NTE1MjAyNzUzNDA0OSkraSooLjAwMTc0NDE4MTMyOTI3NTgyKmktLjAwMjU1MjQzMzIxNDM5MzQ3KnMrLjExNjkzNTAyMDQ2NTE0NSkrcyooLS4wMDAzNDM1MzE5OTY1MTA1NTUqcysuMjQxNjUyNjAyMzI0MDcpO2VbdCszXT0yNTV9cmV0dXJuIGV9X2NvbnZlcnRZY2NrVG9DbXlrKGUpe2xldCB0LGksYTtmb3IobGV0IHI9MCxzPWUubGVuZ3RoO3I8cztyKz00KXt0PWVbcl07aT1lW3IrMV07YT1lW3IrMl07ZVtyXT00MzQuNDU2LXQtMS40MDIqYTtlW3IrMV09MTE5LjU0MS10Ky4zNDQqaSsuNzE0KmE7ZVtyKzJdPTQ4MS44MTYtdC0xLjc3MippfXJldHVybiBlfV9jb252ZXJ0Q215a1RvUmdiKGUpe2xldCB0LGksYSxyLHM9MDtmb3IobGV0IG49MCxvPWUubGVuZ3RoO248bztuKz00KXt0PWVbbl07aT1lW24rMV07YT1lW24rMl07cj1lW24rM107ZVtzKytdPTI1NSt0KigtNjc0NzE0NzA3MzYwMjQ0MWUtMjAqdCsuMDAwODM3OTI2MjEyMTAxMzcyNyppKy4wMDAyODk0NzE4MTg4NjQzMjk0KmErLjAwMzI2NDIzMTA1NzUzNzgwNipyLTEuMTE4NTYxMTg2NzIwMzkzNykraSooMjYzNzQxMDc2MTYwODk0MDVlLTIxKmktODYyNjk0OTE1ODYzODU3MmUtMjAqYS0uMDAwMjc0ODc2OTA2NzQ5OTQ5MSpyLS4wMjE1NTY4ODc5NDk3ODk2NykrYSooLTM4NzgwOTkyMTI4NjkzNjNlLTIwKmEtLjAwMDMyNjc4MDgyNzk0ODUyODYqcisuMDY4Njc0MjIzODU5NTM0NSktciooLjAwMDMzNjE5NzE3NzYxODM5MzcqcisuNzQzMDY1OTE1MTM0MjI1NCk7ZVtzKytdPTI1NSt0KiguMDAwMTM1OTYzNzI4MTM1ODg4NDgqdCsuMDAwOTI0NTM3MTMyNTczNTg1KmkrLjAwMDEwNTY3MzU5NjE4NjgzNTkzKmErLjAwMDQ3OTE4NjQ2ODc0MzY1MTIqci0uMzEwOTY4OTU4NzUxNTg3NSkraSooLS4wMDAyMzU0NTM0NjEwODM3MDM0NCppKy4wMDAyNzAyODQ1MjUzNTM0NzE0KmErLjAwMjAyMDAzMDg5NzczMDcxNTYqci0uNzQ4ODA1MjE2NzAxNTQ5NCkrYSooNjgzNDgxNTk5ODIzNTY2MmUtMjAqYSsuMDAwMTUxNjg0NTIzNjM0NjA5NzMqci0uMDk3NTE5Mjc3NzQ3Mjg5MzMpLXIqKC4wMDAzMTg5MTMxMTc1ODgzMjgxKnIrLjczNjQ4ODM4MDc3MzMxNjgpO2VbcysrXT0yNTUrdCooMTM1OTg2NTA0MTEzODUzMDdlLTIxKnQrLjAwMDEyNDIzOTU2MTc1NDkwODUxKmkrLjAwMDQ3NTE5ODUwOTc1ODM1ODkqYS0zNjcyOTMxNzQ3NjYzMDQyMmUtMjIqci0uMDU1NjIxODY5ODAyNjQwMzQpK2kqKC4wMDAxNjE0MTM4MDU5ODcyNDY3NippKy4wMDA5NjkyMjM5MTMwNzI1MTg2KmErLjAwMDc3ODI2OTI0NTAwMzYyNTMqci0uNDQwMTUyMzIzNjc1MjY0NjMpK2EqKDUuMDY4ODgyOTE0MDY4NzY5ZS03KmErLjAwMTc3NzgzNjkwMTEzNzUwNzEqci0uNzU5MTQ1NDY0OTc0OTYwOSktciooLjAwMDM0MzUzMTk5NjUxMDU1NTMqcisuNzA2Mzc3MDE4NjE2MDE0NCl9cmV0dXJuIGUuc3ViYXJyYXkoMCxzKX1fY29udmVydENteWtUb1JnYmEoZSl7Zm9yKGxldCB0PTAsaT1lLmxlbmd0aDt0PGk7dCs9NCl7Y29uc3QgaT1lW3RdLGE9ZVt0KzFdLHI9ZVt0KzJdLHM9ZVt0KzNdO2VbdF09MjU1K2kqKC02NzQ3MTQ3MDczNjAyNDQxZS0yMCppKy4wMDA4Mzc5MjYyMTIxMDEzNzI3KmErLjAwMDI4OTQ3MTgxODg2NDMyOTQqcisuMDAzMjY0MjMxMDU3NTM3ODA2KnMtMS4xMTg1NjExODY3MjAzOTM3KSthKigyNjM3NDEwNzYxNjA4OTQwNWUtMjEqYS04NjI2OTQ5MTU4NjM4NTcyZS0yMCpyLS4wMDAyNzQ4NzY5MDY3NDk5NDkxKnMtLjAyMTU1Njg4Nzk0OTc4OTY3KStyKigtMzg3ODA5OTIxMjg2OTM2M2UtMjAqci0uMDAwMzI2NzgwODI3OTQ4NTI4NipzKy4wNjg2NzQyMjM4NTk1MzQ1KS1zKiguMDAwMzM2MTk3MTc3NjE4MzkzNypzKy43NDMwNjU5MTUxMzQyMjU0KTtlW3QrMV09MjU1K2kqKC4wMDAxMzU5NjM3MjgxMzU4ODg0OCppKy4wMDA5MjQ1MzcxMzI1NzM1ODUqYSsuMDAwMTA1NjczNTk2MTg2ODM1OTMqcisuMDAwNDc5MTg2NDY4NzQzNjUxMipzLS4zMTA5Njg5NTg3NTE1ODc1KSthKigtLjAwMDIzNTQ1MzQ2MTA4MzcwMzQ0KmErLjAwMDI3MDI4NDUyNTM1MzQ3MTQqcisuMDAyMDIwMDMwODk3NzMwNzE1NipzLS43NDg4MDUyMTY3MDE1NDk0KStyKig2ODM0ODE1OTk4MjM1NjYyZS0yMCpyKy4wMDAxNTE2ODQ1MjM2MzQ2MDk3MypzLS4wOTc1MTkyNzc3NDcyODkzMyktcyooLjAwMDMxODkxMzExNzU4ODMyODEqcysuNzM2NDg4MzgwNzczMzE2OCk7ZVt0KzJdPTI1NStpKigxMzU5ODY1MDQxMTM4NTMwN2UtMjEqaSsuMDAwMTI0MjM5NTYxNzU0OTA4NTEqYSsuMDAwNDc1MTk4NTA5NzU4MzU4OSpyLTM2NzI5MzE3NDc2NjMwNDIyZS0yMipzLS4wNTU2MjE4Njk4MDI2NDAzNCkrYSooLjAwMDE2MTQxMzgwNTk4NzI0Njc2KmErLjAwMDk2OTIyMzkxMzA3MjUxODYqcisuMDAwNzc4MjY5MjQ1MDAzNjI1MypzLS40NDAxNTIzMjM2NzUyNjQ2MykrciooNS4wNjg4ODI5MTQwNjg3NjllLTcqcisuMDAxNzc3ODM2OTAxMTM3NTA3MSpzLS43NTkxNDU0NjQ5NzQ5NjA5KS1zKiguMDAwMzQzNTMxOTk2NTEwNTU1MypzKy43MDYzNzcwMTg2MTYwMTQ0KTtlW3QrM109MjU1fXJldHVybiBlfWdldERhdGEoe3dpZHRoOmUsaGVpZ2h0OnQsZm9yY2VSR0JBOmk9ITEsZm9yY2VSR0I6YT0hMSxpc1NvdXJjZVBERjpyPSExfSl7aWYodGhpcy5udW1Db21wb25lbnRzPjQpdGhyb3cgbmV3IEpwZWdFcnJvcigiVW5zdXBwb3J0ZWQgY29sb3IgbW9kZSIpO2NvbnN0IHM9dGhpcy5fZ2V0TGluZWFyaXplZEJsb2NrRGF0YShlLHQscik7aWYoMT09PXRoaXMubnVtQ29tcG9uZW50cyYmKGl8fGEpKXtjb25zdCBlPXMubGVuZ3RoKihpPzQ6MyksdD1uZXcgVWludDhDbGFtcGVkQXJyYXkoZSk7bGV0IGE9MDtpZihpKSFmdW5jdGlvbiBncmF5VG9SR0JBKGUsdCl7aWYoRmVhdHVyZVRlc3QuaXNMaXR0bGVFbmRpYW4pZm9yKGxldCBpPTAsYT1lLmxlbmd0aDtpPGE7aSsrKXRbaV09NjU3OTMqZVtpXXw0Mjc4MTkwMDgwO2Vsc2UgZm9yKGxldCBpPTAsYT1lLmxlbmd0aDtpPGE7aSsrKXRbaV09MTY4NDMwMDgqZVtpXXwyNTV9KHMsbmV3IFVpbnQzMkFycmF5KHQuYnVmZmVyKSk7ZWxzZSBmb3IoY29uc3QgZSBvZiBzKXt0W2ErK109ZTt0W2ErK109ZTt0W2ErK109ZX1yZXR1cm4gdH1pZigzPT09dGhpcy5udW1Db21wb25lbnRzJiZ0aGlzLl9pc0NvbG9yQ29udmVyc2lvbk5lZWRlZCl7aWYoaSl7Y29uc3QgZT1uZXcgVWludDhDbGFtcGVkQXJyYXkocy5sZW5ndGgvMyo0KTtyZXR1cm4gdGhpcy5fY29udmVydFljY1RvUmdiYShzLGUpfXJldHVybiB0aGlzLl9jb252ZXJ0WWNjVG9SZ2Iocyl9aWYoND09PXRoaXMubnVtQ29tcG9uZW50cyl7aWYodGhpcy5faXNDb2xvckNvbnZlcnNpb25OZWVkZWQpcmV0dXJuIGk/dGhpcy5fY29udmVydFljY2tUb1JnYmEocyk6YT90aGlzLl9jb252ZXJ0WWNja1RvUmdiKHMpOnRoaXMuX2NvbnZlcnRZY2NrVG9DbXlrKHMpO2lmKGkpcmV0dXJuIHRoaXMuX2NvbnZlcnRDbXlrVG9SZ2JhKHMpO2lmKGEpcmV0dXJuIHRoaXMuX2NvbnZlcnRDbXlrVG9SZ2Iocyl9cmV0dXJuIHN9fWNsYXNzIEpwZWdTdHJlYW0gZXh0ZW5kcyBEZWNvZGVTdHJlYW17Y29uc3RydWN0b3IoZSx0LGkpe3N1cGVyKHQpO3RoaXMuc3RyZWFtPWU7dGhpcy5kaWN0PWUuZGljdDt0aGlzLm1heWJlTGVuZ3RoPXQ7dGhpcy5wYXJhbXM9aX1nZXQgYnl0ZXMoKXtyZXR1cm4gc2hhZG93KHRoaXMsImJ5dGVzIix0aGlzLnN0cmVhbS5nZXRCeXRlcyh0aGlzLm1heWJlTGVuZ3RoKSl9ZW5zdXJlQnVmZmVyKGUpe31yZWFkQmxvY2soKXt0aGlzLmRlY29kZUltYWdlKCl9ZGVjb2RlSW1hZ2UoZSl7aWYodGhpcy5lb2YpcmV0dXJuIHRoaXMuYnVmZmVyO2V8fD10aGlzLmJ5dGVzO2ZvcihsZXQgdD0wLGk9ZS5sZW5ndGgtMTt0PGk7dCsrKWlmKDI1NT09PWVbdF0mJjIxNj09PWVbdCsxXSl7dD4wJiYoZT1lLnN1YmFycmF5KHQpKTticmVha31jb25zdCB0PXtkZWNvZGVUcmFuc2Zvcm06dm9pZCAwLGNvbG9yVHJhbnNmb3JtOnZvaWQgMH0saT10aGlzLmRpY3QuZ2V0QXJyYXkoIkQiLCJEZWNvZGUiKTtpZigodGhpcy5mb3JjZVJHQkF8fHRoaXMuZm9yY2VSR0IpJiZBcnJheS5pc0FycmF5KGkpKXtjb25zdCBlPXRoaXMuZGljdC5nZXQoIkJQQyIsIkJpdHNQZXJDb21wb25lbnQiKXx8OCxhPWkubGVuZ3RoLHI9bmV3IEludDMyQXJyYXkoYSk7bGV0IHM9ITE7Y29uc3Qgbj0oMTw8ZSktMTtmb3IobGV0IGU9MDtlPGE7ZSs9Mil7cltlXT0yNTYqKGlbZSsxXS1pW2VdKXwwO3JbZSsxXT1pW2VdKm58MDsyNTY9PT1yW2VdJiYwPT09cltlKzFdfHwocz0hMCl9cyYmKHQuZGVjb2RlVHJhbnNmb3JtPXIpfWlmKHRoaXMucGFyYW1zIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT10aGlzLnBhcmFtcy5nZXQoIkNvbG9yVHJhbnNmb3JtIik7TnVtYmVyLmlzSW50ZWdlcihlKSYmKHQuY29sb3JUcmFuc2Zvcm09ZSl9Y29uc3QgYT1uZXcgSnBlZ0ltYWdlKHQpO2EucGFyc2UoZSk7Y29uc3Qgcj1hLmdldERhdGEoe3dpZHRoOnRoaXMuZHJhd1dpZHRoLGhlaWdodDp0aGlzLmRyYXdIZWlnaHQsZm9yY2VSR0JBOnRoaXMuZm9yY2VSR0JBLGZvcmNlUkdCOnRoaXMuZm9yY2VSR0IsaXNTb3VyY2VQREY6ITB9KTt0aGlzLmJ1ZmZlcj1yO3RoaXMuYnVmZmVyTGVuZ3RoPXIubGVuZ3RoO3RoaXMuZW9mPSEwO3JldHVybiB0aGlzLmJ1ZmZlcn1nZXQgY2FuQXN5bmNEZWNvZGVJbWFnZUZyb21CdWZmZXIoKXtyZXR1cm4gdGhpcy5zdHJlYW0uaXNBc3luY319X193ZWJwYWNrX3JlcXVpcmVfXyg0OTc5KTt2YXIgaGksbGk9KGhpPSJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQ/ZG9jdW1lbnQuY3VycmVudFNjcmlwdD8uc3JjOnZvaWQgMCxmdW5jdGlvbihlPXt9KXt2YXIgdCxpLGE9ZTtuZXcgUHJvbWlzZSgoKGUsYSk9Pnt0PWU7aT1hfSkpO2EuZGVjb2RlPWZ1bmN0aW9uKGUse251bUNvbXBvbmVudHM6dD00LGlzSW5kZXhlZENvbG9ybWFwOmk9ITEsc21hc2tJbkRhdGE6cj0hMX0pe2NvbnN0IHM9ZS5sZW5ndGgsbj1hLl9tYWxsb2Mocyk7YS5IRUFQVTguc2V0KGUsbik7Y29uc3Qgbz1hLl9qcDJfZGVjb2RlKG4scyx0PjA/dDowLCEhaSwhIXIpO2EuX2ZyZWUobik7aWYobyl7Y29uc3R7ZXJyb3JNZXNzYWdlczplfT1hO2lmKGUpe2RlbGV0ZSBhLmVycm9yTWVzc2FnZXM7cmV0dXJuIGV9cmV0dXJuIlVua25vd24gZXJyb3IifWNvbnN0e2ltYWdlRGF0YTpnfT1hO2EuaW1hZ2VEYXRhPW51bGw7cmV0dXJuIGd9O3ZhciByLHM9T2JqZWN0LmFzc2lnbih7fSxhKSxuPSIuL3RoaXMucHJvZ3JhbSIsbz0iIjsidW5kZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50JiZkb2N1bWVudC5jdXJyZW50U2NyaXB0JiYobz1kb2N1bWVudC5jdXJyZW50U2NyaXB0LnNyYyk7aGkmJihvPWhpKTtvPW8uc3RhcnRzV2l0aCgiYmxvYjoiKT8iIjpvLnN1YnN0cigwLG8ucmVwbGFjZSgvWz8jXS4qLywiIikubGFzdEluZGV4T2YoIi8iKSsxKTt2YXIgZyxjLEMsaCxsLFE9YS5wcmludHx8Y29uc29sZS5sb2cuYmluZChjb25zb2xlKSxFPWEucHJpbnRFcnJ8fGNvbnNvbGUuZXJyb3IuYmluZChjb25zb2xlKTtPYmplY3QuYXNzaWduKGEscyk7cz1udWxsO2EuYXJndW1lbnRzJiZhLmFyZ3VtZW50czthLnRoaXNQcm9ncmFtJiYobj1hLnRoaXNQcm9ncmFtKTthLnF1aXQmJmEucXVpdDthLndhc21CaW5hcnkmJihnPWEud2FzbUJpbmFyeSk7ZnVuY3Rpb24gdHJ5UGFyc2VBc0RhdGFVUkkoZSl7aWYoaXNEYXRhVVJJKGUpKXJldHVybiBmdW5jdGlvbiBpbnRBcnJheUZyb21CYXNlNjQoZSl7Zm9yKHZhciB0PWF0b2IoZSksaT1uZXcgVWludDhBcnJheSh0Lmxlbmd0aCksYT0wO2E8dC5sZW5ndGg7KythKWlbYV09dC5jaGFyQ29kZUF0KGEpO3JldHVybiBpfShlLnNsaWNlKGIubGVuZ3RoKSl9ZnVuY3Rpb24gdXBkYXRlTWVtb3J5Vmlld3MoKXt2YXIgZT1jLmJ1ZmZlcjthLkhFQVA4PUM9bmV3IEludDhBcnJheShlKTthLkhFQVAxNj1uZXcgSW50MTZBcnJheShlKTthLkhFQVBVOD1oPW5ldyBVaW50OEFycmF5KGUpO2EuSEVBUFUxNj1uZXcgVWludDE2QXJyYXkoZSk7YS5IRUFQMzI9bmV3IEludDMyQXJyYXkoZSk7YS5IRUFQVTMyPWw9bmV3IFVpbnQzMkFycmF5KGUpO2EuSEVBUEYzMj1uZXcgRmxvYXQzMkFycmF5KGUpO2EuSEVBUEY2ND1uZXcgRmxvYXQ2NEFycmF5KGUpfXZhciB1LGQ9W10sZj1bXSxwPVtdLG09MCx5PW51bGwsdz1udWxsLGI9ImRhdGE6YXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtO2Jhc2U2NCwiLGlzRGF0YVVSST1lPT5lLnN0YXJ0c1dpdGgoYik7ZnVuY3Rpb24gaW5zdGFudGlhdGVTeW5jKGUsdCl7dmFyIGksYT1mdW5jdGlvbiBnZXRCaW5hcnlTeW5jKGUpe2lmKGU9PXUmJmcpcmV0dXJuIG5ldyBVaW50OEFycmF5KGcpO3ZhciB0PXRyeVBhcnNlQXNEYXRhVVJJKGUpO2lmKHQpcmV0dXJuIHQ7aWYocilyZXR1cm4gcihlKTt0aHJvdydzeW5jIGZldGNoaW5nIG9mIHRoZSB3YXNtIGZhaWxlZDogeW91IGNhbiBwcmVsb2FkIGl0IHRvIE1vZHVsZVsid2FzbUJpbmFyeSJdIG1hbnVhbGx5LCBvciBlbWNjLnB5IHdpbGwgZG8gdGhhdCBmb3IgeW91IHdoZW4gZ2VuZXJhdGluZyBIVE1MIChidXQgbm90IEpTKSd9KGUpO2k9bmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShhKTtyZXR1cm5bbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKGksdCksaV19dmFyIGNhbGxSdW50aW1lQ2FsbGJhY2tzPWU9Pntmb3IoO2UubGVuZ3RoPjA7KWUuc2hpZnQoKShhKX07YS5ub0V4aXRSdW50aW1lO3ZhciBELGdyb3dNZW1vcnk9ZT0+e3ZhciB0PShlLWMuYnVmZmVyLmJ5dGVMZW5ndGgrNjU1MzUpLzY1NTM2O3RyeXtjLmdyb3codCk7dXBkYXRlTWVtb3J5Vmlld3MoKTtyZXR1cm4gMX1jYXRjaChlKXt9fSxTPXt9LGdldEVudlN0cmluZ3M9KCk9PntpZighZ2V0RW52U3RyaW5ncy5zdHJpbmdzKXt2YXIgZT17VVNFUjoid2ViX3VzZXIiLExPR05BTUU6IndlYl91c2VyIixQQVRIOiIvIixQV0Q6Ii8iLEhPTUU6Ii9ob21lL3dlYl91c2VyIixMQU5HOigib2JqZWN0Ij09dHlwZW9mIG5hdmlnYXRvciYmbmF2aWdhdG9yLmxhbmd1YWdlcyYmbmF2aWdhdG9yLmxhbmd1YWdlc1swXXx8IkMiKS5yZXBsYWNlKCItIiwiXyIpKyIuVVRGLTgiLF86bnx8Ii4vdGhpcy5wcm9ncmFtIn07Zm9yKHZhciB0IGluIFMpdm9pZCAwPT09U1t0XT9kZWxldGUgZVt0XTplW3RdPVNbdF07dmFyIGk9W107Zm9yKHZhciB0IGluIGUpaS5wdXNoKGAke3R9PSR7ZVt0XX1gKTtnZXRFbnZTdHJpbmdzLnN0cmluZ3M9aX1yZXR1cm4gZ2V0RW52U3RyaW5ncy5zdHJpbmdzfSxrPVtudWxsLFtdLFtdXSxSPSJ1bmRlZmluZWQiIT10eXBlb2YgVGV4dERlY29kZXI/bmV3IFRleHREZWNvZGVyKCJ1dGY4Iik6dm9pZCAwLFVURjhBcnJheVRvU3RyaW5nPShlLHQsaSk9Pntmb3IodmFyIGE9dCtpLHI9dDtlW3JdJiYhKHI+PWEpOykrK3I7aWYoci10PjE2JiZlLmJ1ZmZlciYmUilyZXR1cm4gUi5kZWNvZGUoZS5zdWJhcnJheSh0LHIpKTtmb3IodmFyIHM9IiI7dDxyOyl7dmFyIG49ZVt0KytdO2lmKDEyOCZuKXt2YXIgbz02MyZlW3QrK107aWYoMTkyIT0oMjI0Jm4pKXt2YXIgZz02MyZlW3QrK107aWYoKG49MjI0PT0oMjQwJm4pPygxNSZuKTw8MTJ8bzw8NnxnOig3Jm4pPDwxOHxvPDwxMnxnPDw2fDYzJmVbdCsrXSk8NjU1MzYpcys9U3RyaW5nLmZyb21DaGFyQ29kZShuKTtlbHNle3ZhciBjPW4tNjU1MzY7cys9U3RyaW5nLmZyb21DaGFyQ29kZSg1NTI5NnxjPj4xMCw1NjMyMHwxMDIzJmMpfX1lbHNlIHMrPVN0cmluZy5mcm9tQ2hhckNvZGUoKDMxJm4pPDw2fG8pfWVsc2Ugcys9U3RyaW5nLmZyb21DaGFyQ29kZShuKX1yZXR1cm4gc30scHJpbnRDaGFyPShlLHQpPT57dmFyIGk9a1tlXTtpZigwPT09dHx8MTA9PT10KXsoMT09PWU/UTpFKShVVEY4QXJyYXlUb1N0cmluZyhpLDApKTtpLmxlbmd0aD0wfWVsc2UgaS5wdXNoKHQpfSxVVEY4VG9TdHJpbmc9KGUsdCk9PmU/VVRGOEFycmF5VG9TdHJpbmcoaCxlLHQpOiIiLE49e2M6KGUsdCxpKT0+aC5jb3B5V2l0aGluKGUsdCx0K2kpLGc6ZnVuY3Rpb24gX2NvcHlfcGl4ZWxzXzEoZSx0KXtlPj49Mjtjb25zdCBpPWEuaW1hZ2VEYXRhPW5ldyBVaW50OENsYW1wZWRBcnJheSh0KSxyPWEuSEVBUDMyLnN1YmFycmF5KGUsZSt0KTtpLnNldChyKX0sZjpmdW5jdGlvbiBfY29weV9waXhlbHNfMyhlLHQsaSxyKXtlPj49Mjt0Pj49MjtpPj49Mjtjb25zdCBzPWEuaW1hZ2VEYXRhPW5ldyBVaW50OENsYW1wZWRBcnJheSgzKnIpLG49YS5IRUFQMzIuc3ViYXJyYXkoZSxlK3IpLG89YS5IRUFQMzIuc3ViYXJyYXkodCx0K3IpLGc9YS5IRUFQMzIuc3ViYXJyYXkoaSxpK3IpO2ZvcihsZXQgZT0wO2U8cjtlKyspe3NbMyplXT1uW2VdO3NbMyplKzFdPW9bZV07c1szKmUrMl09Z1tlXX19LGU6ZnVuY3Rpb24gX2NvcHlfcGl4ZWxzXzQoZSx0LGkscixzKXtlPj49Mjt0Pj49MjtpPj49MjtyPj49Mjtjb25zdCBuPWEuaW1hZ2VEYXRhPW5ldyBVaW50OENsYW1wZWRBcnJheSg0KnMpLG89YS5IRUFQMzIuc3ViYXJyYXkoZSxlK3MpLGc9YS5IRUFQMzIuc3ViYXJyYXkodCx0K3MpLGM9YS5IRUFQMzIuc3ViYXJyYXkoaSxpK3MpLEM9YS5IRUFQMzIuc3ViYXJyYXkocixyK3MpO2ZvcihsZXQgZT0wO2U8cztlKyspe25bNCplXT1vW2VdO25bNCplKzFdPWdbZV07bls0KmUrMl09Y1tlXTtuWzQqZSszXT1DW2VdfX0sazplPT57dmFyIHQ9aC5sZW5ndGgsaT0yMTQ3NDgzNjQ4O2lmKChlPj4+PTApPmkpcmV0dXJuITE7Zm9yKHZhciBhLHIscz0xO3M8PTQ7cyo9Mil7dmFyIG49dCooMSsuMi9zKTtuPU1hdGgubWluKG4sZSsxMDA2NjMyOTYpO3ZhciBvPU1hdGgubWluKGksKGE9TWF0aC5tYXgoZSxuKSkrKChyPTY1NTM2KS1hJXIpJXIpO2lmKGdyb3dNZW1vcnkobykpcmV0dXJuITB9cmV0dXJuITF9LGw6KGUsdCk9Pnt2YXIgaT0wO2dldEVudlN0cmluZ3MoKS5mb3JFYWNoKCgoYSxyKT0+e3ZhciBzPXQraTtsW2UrNCpyPj4yXT1zOygoZSx0KT0+e2Zvcih2YXIgaT0wO2k8ZS5sZW5ndGg7KytpKUNbdCsrXT1lLmNoYXJDb2RlQXQoaSk7Q1t0XT0wfSkoYSxzKTtpKz1hLmxlbmd0aCsxfSkpO3JldHVybiAwfSxtOihlLHQpPT57dmFyIGk9Z2V0RW52U3RyaW5ncygpO2xbZT4+Ml09aS5sZW5ndGg7dmFyIGE9MDtpLmZvckVhY2goKGU9PmErPWUubGVuZ3RoKzEpKTtsW3Q+PjJdPWE7cmV0dXJuIDB9LG46ZT0+NTIsajpmdW5jdGlvbiBfZmRfc2VlayhlLHQsaSxhLHIpe3JldHVybiA3MH0sYjooZSx0LGksYSk9Pntmb3IodmFyIHI9MCxzPTA7czxpO3MrKyl7dmFyIG49bFt0Pj4yXSxvPWxbdCs0Pj4yXTt0Kz04O2Zvcih2YXIgZz0wO2c8bztnKyspcHJpbnRDaGFyKGUsaFtuK2ddKTtyKz1vfWxbYT4+Ml09cjtyZXR1cm4gMH0sbzpmdW5jdGlvbiBfZ3JheV90b19yZ2JhKGUsdCl7ZT4+PTI7Y29uc3QgaT1hLmltYWdlRGF0YT1uZXcgVWludDhDbGFtcGVkQXJyYXkoNCp0KSxyPWEuSEVBUDMyLnN1YmFycmF5KGUsZSt0KTtmb3IobGV0IGU9MDtlPHQ7ZSsrKXtpWzQqZV09aVs0KmUrMV09aVs0KmUrMl09cltlXTtpWzQqZSszXT0yNTV9fSxpOmZ1bmN0aW9uIF9ncmF5YV90b19yZ2JhKGUsdCxpKXtlPj49Mjt0Pj49Mjtjb25zdCByPWEuaW1hZ2VEYXRhPW5ldyBVaW50OENsYW1wZWRBcnJheSg0KmkpLHM9YS5IRUFQMzIuc3ViYXJyYXkoZSxlK2kpLG49YS5IRUFQMzIuc3ViYXJyYXkodCx0K2kpO2ZvcihsZXQgZT0wO2U8aTtlKyspe3JbNCplXT1yWzQqZSsxXT1yWzQqZSsyXT1zW2VdO3JbNCplKzNdPW5bZV19fSxkOmZ1bmN0aW9uIF9qc1ByaW50V2FybmluZyhlKXtjb25zdCB0PVVURjhUb1N0cmluZyhlKTsoYS53YXJufHxjb25zb2xlLndhcm4pKGBPcGVuSlBFRzogJHt0fWApfSxoOmZ1bmN0aW9uIF9yZ2JfdG9fcmdiYShlLHQsaSxyKXtlPj49Mjt0Pj49MjtpPj49Mjtjb25zdCBzPWEuaW1hZ2VEYXRhPW5ldyBVaW50OENsYW1wZWRBcnJheSg0KnIpLG49YS5IRUFQMzIuc3ViYXJyYXkoZSxlK3IpLG89YS5IRUFQMzIuc3ViYXJyYXkodCx0K3IpLGc9YS5IRUFQMzIuc3ViYXJyYXkoaSxpK3IpO2ZvcihsZXQgZT0wO2U8cjtlKyspe3NbNCplXT1uW2VdO3NbNCplKzFdPW9bZV07c1s0KmUrMl09Z1tlXTtzWzQqZSszXT0yNTV9fSxhOmZ1bmN0aW9uIF9zdG9yZUVycm9yTWVzc2FnZShlKXtjb25zdCB0PVVURjhUb1N0cmluZyhlKTthLmVycm9yTWVzc2FnZXM/YS5lcnJvck1lc3NhZ2VzKz0iXG4iK3Q6YS5lcnJvck1lc3NhZ2VzPXR9fSxHPWZ1bmN0aW9uIGNyZWF0ZVdhc20oKXt2YXIgZT1mdW5jdGlvbiBnZXRXYXNtSW1wb3J0cygpe3JldHVybnthOk59fSgpO2Z1bmN0aW9uIHJlY2VpdmVJbnN0YW5jZShlLHQpe0c9ZS5leHBvcnRzO2M9Ry5wO3VwZGF0ZU1lbW9yeVZpZXdzKCk7IWZ1bmN0aW9uIGFkZE9uSW5pdChlKXtmLnVuc2hpZnQoZSl9KEcucSk7IWZ1bmN0aW9uIHJlbW92ZVJ1bkRlcGVuZGVuY3koZSl7bS0tO2EubW9uaXRvclJ1bkRlcGVuZGVuY2llcz8uKG0pO2lmKDA9PW0pe2lmKG51bGwhPT15KXtjbGVhckludGVydmFsKHkpO3k9bnVsbH1pZih3KXt2YXIgdD13O3c9bnVsbDt0KCl9fX0oKTtyZXR1cm4gR30hZnVuY3Rpb24gYWRkUnVuRGVwZW5kZW5jeShlKXttKys7YS5tb25pdG9yUnVuRGVwZW5kZW5jaWVzPy4obSl9KCk7aWYoYS5pbnN0YW50aWF0ZVdhc20pdHJ5e3JldHVybiBhLmluc3RhbnRpYXRlV2FzbShlLHJlY2VpdmVJbnN0YW5jZSl9Y2F0Y2goZSl7RShgTW9kdWxlLmluc3RhbnRpYXRlV2FzbSBjYWxsYmFjayBmYWlsZWQgd2l0aCBlcnJvcjogJHtlfWApO2koZSl9dXx8KHU9ImRhdGE6YXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtO2Jhc2U2NCxBR0Z6YlFFQUFBQUJ6Z0VhWUFOL2YzOEJmMkFFZjM5L2Z3Ri9ZQUYvQUdBQ2YzOEFZQUYvQVg5Z0EzOS9md0JnQW45L0FYOWdCSDkvZjM4QVlBTi9mbjhCZm1BRmYzOS9mMzhCZjJBQ2ZuOEJmMkFDZm44QmZtQUZmMzkvZjM4QVlBTi9mbjhCZjJBQUFYOWdCMzkvZjM5L2YzOEJmMkFKZjM5L2YzOS9mMzkvQVg5Z0MzOS9mMzkvZjM5L2YzOS9BWDlnQm45L2YzOS9md0YvWUFaL2ZIOS9mMzhCZjJBSWYzOS9mMzkvZjM4QVlBaC9mMzkvZjM5L2Z3Ri9ZQUFBWUFaL2YzOS9mMzhBWUFkL2YzOS9mMzkvQUdBQ2ZIOEJmQUpiRHdGaEFXRUFBZ0ZoQVdJQUFRRmhBV01BQlFGaEFXUUFBZ0ZoQVdVQURBRmhBV1lBQndGaEFXY0FBd0ZoQVdnQUJ3RmhBV2tBQlFGaEFXb0FDUUZoQVdzQUJBRmhBV3dBQmdGaEFXMEFCZ0ZoQVc0QUJBRmhBVzhBQXdQQUFiNEJCd0lGQUFZRUFBVUdCQVVCQkF3RkZBWUNBZ0lDQUFZUUVRUUNDaElDQlFJRUJ3UUNEZ0lDRFFZQ0ZRTUhBQUFFQXdFV0NRa0RBQWtHQVFRRUJRVU9Ed0VCQXdBREJnSVFCQmNZQWdjR0F3Y0hBUUVDQUFRWkJBWUhCQThNQUFRQ0FnSUFCZ0FHQVFFQkFRRUJBUUVBQUFBQUFBWURBZ0lDQXdNREF3TUFBeE1JQkE0RUFBZ0RBd2tFQ0FvTENBQUFBUUVCQVFFQkFRRU5BUUFFQkFVSkR3RVNFUUVBQUFZREF3RUZCUVVGQlFVRkJRRUxBUUVCQVFFQkFRRUJDZ1FGQVhBQmJtNEZCd0VCZ2dLQWdBSUdDQUYvQVVHUTJRVUxCeHNHQVhBQ0FBRnhBRUVCY2dDWUFRRnpBQkFCZEFFQUFYVUFsd0VKdlFFQkFFRUJDMjFSekFIQ0FYTnpOcWNCbkFHWkFZc0JpZ0dKQVlnQmh3R0dBWVVCaEFGU2dRR0FBWDkrZlh4N2VubDRkM1oxeXdIS0Fja0J5QUhIQWNZQlFNVUJ4QUZBUU1NQndRSEFBYjhCdmdHOUFid0J1d0c2QWJrQnN3R29BYVlCcFFHa0FhTUJvZ0doQWFBQm53R2VBWjBCbXdHYUFVbEtURkpJZ3dGVE9GQ0NBVTlGUms0cko2c0JxZ0dzQWJRQnVBRzFBYThCcVFHdEFhNEJ0Z0czQVhDd0FiRUJzZ0ZSbGdHVkFZd0JqZ0dOQVpJQmt3R1VBWkFCandFS2tab092Z0dDQWdFRGZ5TUFRWkFFYXlJRUpBQUNRQ0FBUlEwQUFrQUNRQUpBQWtBZ0FVRUJhdzRFQUFFRUFnUUxJQUJCREdvaEFRd0NDeUFBUVJCcUlRRWdBRUVFYWlFQURBRUxJQUJCRkdvaEFTQUFRUWhxSVFBTElBRW9BZ0FpQlVVTkFDQUNSUTBBSUFBb0FnQWhCaUFFUVFCQmdBUVFGU0lCSUFNMkFvd0VJd0JCb0FGcklnQWtBQ0FBSUFFMkFwUUJJQUJCL3dNMkFwZ0JJQUJCQUVHUUFSQVZJZ0JCZnpZQ1RDQUFRZVlBTmdJa0lBQkJmellDVUNBQUlBQkJud0ZxTmdJc0lBQWdBRUdVQVdvMkFsUWdBVUVBT2dBQUlBQWdBaUFEUWVjQVFlZ0FFR3NnQUVHZ0FXb2tBQ0FCUVFBNkFQOERJQUVnQmlBRkVRTUFDeUFFUVpBRWFpUUFDOUFDQVFWL0lBQUVRQ0FBUVFScklnTW9BZ0FpQkNFQklBTWhBaUFBUVFocktBSUFJZ0FnQUVGK2NTSUFSd1JBSUFJZ0FHc2lBaWdDQkNJQklBSW9BZ2dpQlRZQ0NDQUZJQUUyQWdRZ0FDQUVhaUVCQ3lBRElBUnFJZ0FvQWdBaUF5QUFJQU5xUVFScktBSUFSd1JBSUFBb0FnUWlCQ0FBS0FJSUlnQTJBZ2dnQUNBRU5nSUVJQUVnQTJvaEFRc2dBaUFCTmdJQUlBSWdBVUY4Y1dwQkJHc2dBVUVCY2pZQ0FDQUNBbjhnQWlnQ0FFRUlheUlBUWY4QVRRUkFJQUJCQTNaQkFXc01BUXNnQUdjaEF5QUFRUjBnQTJ0MlFRUnpJQU5CQW5SclFlNEFhaUFBUWY4ZlRRMEFHa0UvSUFCQkhpQURhM1pCQW5NZ0EwRUJkR3RCeHdCcUlnQWdBRUUvVHhzTElnRkJCSFFpQUVHZ3h3RnFOZ0lFSUFJZ0FFR294d0ZxSWdBb0FnQTJBZ2dnQUNBQ05nSUFJQUlvQWdnZ0FqWUNCRUdvendGQnFNOEJLUU1BUWdFZ0FhMkdoRGNEQUFzTHlRSUJCSDhnQVVFQU5nSUFBa0FnQWtVTkFDQUJJQUpxSVFNQ1FDQUNRUkJKQkVBZ0FDRUJEQUVMQWtBZ0FDQUNhaUFCVFEwQUlBQWdBMDhOQUNBQUlRRU1BUXNnQTBFUWF5RUdJQUFnQWtGd2NTSUZhaUVCSUFNZ0JXc2hBd05BSUFZZ0JHc2dBQ0FFYXYwQUFBRDlEQUFBQUFBQUFBQUFBQUFBQUFBQUFBRDlEUThPRFF3TENna0lCd1lGQkFNQ0FRRDlDd0FBSUFSQkVHb2lCQ0FGUncwQUN5QUNJQVZHRFFFTEFrQWdBa0VEY1NJR1JRUkFJQVVoQkF3QkMwRUFJUUFnQlNFRUEwQWdBMEVCYXlJRElBRXRBQUE2QUFBZ0JFRUJhaUVFSUFGQkFXb2hBU0FBUVFGcUlnQWdCa2NOQUFzTElBVWdBbXRCZkVzTkFBTkFJQU5CQVdzZ0FTMEFBRG9BQUNBRFFRSnJJQUV0QUFFNkFBQWdBMEVEYXlBQkxRQUNPZ0FBSUFOQkJHc2lBeUFCTFFBRE9nQUFJQUZCQkdvaEFTQUVRUVJxSWdRZ0FrY05BQXNMQzRBRUFRTi9JQUpCZ0FSUEJFQWdBQ0FCSUFJUUFpQUFEd3NnQUNBQ2FpRURBa0FnQUNBQmMwRURjVVVFUUFKQUlBQkJBM0ZGQkVBZ0FDRUNEQUVMSUFKRkJFQWdBQ0VDREFFTElBQWhBZ05BSUFJZ0FTMEFBRG9BQUNBQlFRRnFJUUVnQWtFQmFpSUNRUU54UlEwQklBSWdBMGtOQUFzTEFrQWdBMEY4Y1NJRVFjQUFTUTBBSUFJZ0JFRkFhaUlGU3cwQUEwQWdBaUFCS0FJQU5nSUFJQUlnQVNnQ0JEWUNCQ0FDSUFFb0FnZzJBZ2dnQWlBQktBSU1OZ0lNSUFJZ0FTZ0NFRFlDRUNBQ0lBRW9BaFEyQWhRZ0FpQUJLQUlZTmdJWUlBSWdBU2dDSERZQ0hDQUNJQUVvQWlBMkFpQWdBaUFCS0FJa05nSWtJQUlnQVNnQ0tEWUNLQ0FDSUFFb0FpdzJBaXdnQWlBQktBSXdOZ0l3SUFJZ0FTZ0NORFlDTkNBQ0lBRW9BamcyQWpnZ0FpQUJLQUk4TmdJOElBRkJRR3NoQVNBQ1FVQnJJZ0lnQlUwTkFBc0xJQUlnQkU4TkFRTkFJQUlnQVNnQ0FEWUNBQ0FCUVFScUlRRWdBa0VFYWlJQ0lBUkpEUUFMREFFTElBTkJCRWtFUUNBQUlRSU1BUXNnQUNBRFFRUnJJZ1JMQkVBZ0FDRUNEQUVMSUFBaEFnTkFJQUlnQVMwQUFEb0FBQ0FDSUFFdEFBRTZBQUVnQWlBQkxRQUNPZ0FDSUFJZ0FTMEFBem9BQXlBQlFRUnFJUUVnQWtFRWFpSUNJQVJORFFBTEN5QUNJQU5KQkVBRFFDQUNJQUV0QUFBNkFBQWdBVUVCYWlFQklBSkJBV29pQWlBRFJ3MEFDd3NnQUFzd0FRRi9Ba0FnQUVVTkFDQUJSUTBBUVFnZ0FDQUJiQ0lCRUNVaUFBUkFJQUJCQUNBQkVCVWFDeUFBSVFJTElBSUxFUUFnQUVVRVFFRUFEd3RCQ0NBQUVDVUw4Z0lDQW44QmZnSkFJQUpGRFFBZ0FDQUJPZ0FBSUFBZ0Ftb2lBMEVCYXlBQk9nQUFJQUpCQTBrTkFDQUFJQUU2QUFJZ0FDQUJPZ0FCSUFOQkEyc2dBVG9BQUNBRFFRSnJJQUU2QUFBZ0FrRUhTUTBBSUFBZ0FUb0FBeUFEUVFScklBRTZBQUFnQWtFSlNRMEFJQUJCQUNBQWEwRURjU0lFYWlJRElBRkIvd0Z4UVlHQ2hBaHNJZ0UyQWdBZ0F5QUNJQVJyUVh4eElnUnFJZ0pCQkdzZ0FUWUNBQ0FFUVFsSkRRQWdBeUFCTmdJSUlBTWdBVFlDQkNBQ1FRaHJJQUUyQWdBZ0FrRU1heUFCTmdJQUlBUkJHVWtOQUNBRElBRTJBaGdnQXlBQk5nSVVJQU1nQVRZQ0VDQURJQUUyQWd3Z0FrRVFheUFCTmdJQUlBSkJGR3NnQVRZQ0FDQUNRUmhySUFFMkFnQWdBa0VjYXlBQk5nSUFJQVFnQTBFRWNVRVljaUlFYXlJQ1FTQkpEUUFnQWExQ2dZQ0FnQkIrSVFVZ0F5QUVhaUVCQTBBZ0FTQUZOd01ZSUFFZ0JUY0RFQ0FCSUFVM0F3Z2dBU0FGTndNQUlBRkJJR29oQVNBQ1FTQnJJZ0pCSDBzTkFBc0xJQUFMSndFQmZ5TUFRUkJySWdNa0FDQURJQUkyQWd3Z0FDQUJJQUpCQUVFQUVHc2dBMEVRYWlRQUMrZ0ZBUWwvSUFGRkJFQkJBQThMQW44Z0FFVUVRRUVJSUFFUUpRd0JDeUFCUlFSQUlBQVFFRUVBREFFTEFrQWdBVUZIU3cwQUlBQUNmMEVJSUFGQkEycEJmSEVnQVVFSVRSc2lCMEVJYWlFQkFrQUNmd0pBSUFCQkJHc2lDaUlFS0FJQUlnVWdCR29pQWlnQ0FDSUpJQUlnQ1dvaUNFRUVheWdDQUVjRVFDQUlJQUVnQkdvaUEwRVFhazhFUUNBQ0tBSUVJZ1VnQWlnQ0NDSUNOZ0lJSUFJZ0JUWUNCQ0FESUFnZ0Eyc2lBallDQUNBRElBSkJmSEZxUVFScklBSkJBWEkyQWdBZ0F3Si9JQU1vQWdCQkNHc2lBa0gvQUUwRVFDQUNRUU4yUVFGckRBRUxJQUpCSFNBQ1p5SUZhM1pCQkhNZ0JVRUNkR3RCN2dCcUlBSkIveDlORFFBYVFUOGdBa0VlSUFWcmRrRUNjeUFGUVFGMGEwSEhBR29pQWlBQ1FUOVBHd3NpQWtFRWRDSUZRYURIQVdvMkFnUWdBeUFGUWFqSEFXb2lCU2dDQURZQ0NDQUZJQU0yQWdBZ0F5Z0NDQ0FETmdJRVFhalBBVUdvendFcEF3QkNBU0FDcllhRU53TUFJQVFnQVRZQ0FBd0VDeUFESUFoTERRRWdBaWdDQkNJQklBSW9BZ2dpQXpZQ0NDQURJQUUyQWdRZ0JDQUZJQWxxSWdFMkFnQU1Bd3NnQlNBQlFSQnFUd1JBSUFRZ0FUWUNBQ0FFSUFGQmZIRnFRUVJySUFFMkFnQWdBU0FFYWlJRElBVWdBV3NpQVRZQ0FDQURJQUZCZkhGcVFRUnJJQUZCQVhJMkFnQWdBd0ovSUFNb0FnQkJDR3NpQVVIL0FFMEVRQ0FCUVFOMlFRRnJEQUVMSUFGQkhTQUJaeUlFYTNaQkJITWdCRUVDZEd0QjdnQnFJQUZCL3g5TkRRQWFRVDhnQVVFZUlBUnJka0VDY3lBRVFRRjBhMEhIQUdvaUFTQUJRVDlQR3dzaUFVRUVkQ0lFUWFESEFXbzJBZ1FnQXlBRVFhakhBV29pQkNnQ0FEWUNDQ0FFSUFNMkFnQWdBeWdDQ0NBRE5nSUVRYWpQQVVHb3p3RXBBd0JDQVNBQnJZYUVOd01BUVFFTUJBdEJBU0FCSUFWTkRRRWFDMEVBQ3d3QkN5QUVJQUZCZkhGcVFRUnJJQUUyQWdCQkFRc05BUnBCQ0NBSEVDVWlBVVVOQUNBQklBQWdCeUFLS0FJQVFRaHJJZ1lnQmlBSFN4c1FFaG9nQUJBUUlBRWhCZ3NnQmdzTE53RUNmeU1BUVJCcklnRWtBQ0FBQkg4Z0FVRU1ha0VRSUFBUWJDRUFRUUFnQVNnQ0RDQUFHd1ZCQUFzaEFpQUJRUkJxSkFBZ0Fnc1hBQ0FBTFFBQVFTQnhSUVJBSUFFZ0FpQUFFRDBhQ3d1OEJBRUZmeUFDSUFBb0FqQWlCVTBFUUNBQklBQW9BaVFnQWhBU0dpQUFJQUFvQWlRZ0FtbzJBaVFnQUNBQUtBSXdJQUpyTmdJd0lBQWdBQ2tET0NBQ3JYdzNBemdnQWc4TElBQXRBRVJCQkhFRVFDQUJJQUFvQWlRZ0JSQVNHaUFBS0FJd0lRRWdBRUVBTmdJd0lBQWdBU0FBS0FJa2FqWUNKQ0FBSUFBcEF6Z2dBYTE4TndNNElBVkJmeUFGR3c4TEFrQWdCUVJBSUFFZ0FDZ0NKQ0FGRUJJaEJDQUFJQUFvQWlBaUJ6WUNKQ0FBS0FJd0lRRWdBRUVBTmdJd0lBQWdBQ2tET0NBQnJYdzNBemdnQWlBQmF5RUNJQUVnQkdvaEFRd0JDeUFBSUFBb0FpQWlCellDSkFzQ1FBSkFBMEFDUUNBQUtBSUFJUVFnQUNnQ0VDRUdBa0FnQUNnQ1FDSUlJQUpMQkVBZ0FDQUhJQWdnQkNBR0VRQUFJZ1kyQWpBZ0JrRi9SZ1JBREFZTElBSWdCazBOQWlBQklBQW9BaVFnQmhBU0dpQUFJQUFvQWlBaUJ6WUNKQ0FBS0FJd0lRUU1BUXNnQUNBQklBSWdCQ0FHRVFBQUlnUTJBakFnQkVGL1JnUkFEQVVMSUFJZ0JFME5BeUFBSUFBb0FpQWlCellDSkNBRUlRWUxJQUJCQURZQ01DQUFJQUFwQXpnZ0JLMThOd000SUFFZ0JHb2hBU0FDSUFScklRSWdCU0FHYWlFRkRBRUxDeUFCSUFBb0FpUWdBaEFTR2lBQUlBQW9BaVFnQW1vMkFpUWdBQ0FBS0FJd0lBSnJOZ0l3SUFBZ0FDa0RPQ0FDclh3M0F6Z2dBaUFGYWc4TElBQkJBRFlDTUNBQUlBQW9BaUEyQWlRZ0FDQUFLUU00SUFTdGZEY0RPQ0FFSUFWcUR3c2dBMEVFUVp2MUFFRUFFQThnQUVFQU5nSXdJQUFnQUNnQ1JFRUVjallDUkNBRlFYOGdCUnNMaXdjQ0RYOEJmaUFBS0FJUUlnZEJJRThFUUNBQUtRTUlwdzhMQWtBZ0FDZ0NHQ0lDUVFST0JFQWdBQ2dDQUNJQktBSUFJUVFnQUNBQ1FRUnJJZ1UyQWhnZ0FDQUJRUVJxTmdJQURBRUxRWDlCQUNBQUtBSWNHeUVFSUFKQkFFd0VRQ0FDSVFVTUFRc2dBa0VCY1NFTUlBQW9BZ0FoQVFKQUlBSkJBVVlFUUNBQklRWU1BUXNnQWtIKy8vLy9CM0VoQ2dOQUlBQWdBVUVCYWpZQ0FDQUJMUUFBSVFrZ0FDQUJRUUpxSWdZMkFnQWdBQ0FDUVFGck5nSVlJQUV0QUFFaEFTQUFJQUpCQW1zaUFqWUNHQ0FFUWY4QklBTjBRWDl6Y1NBSklBTjBja0dBL2dNZ0EzUkJmM054SUFFZ0EwRUljblJ5SVFRZ0EwRVFhaUVESUFZaEFTQUZRUUpxSWdVZ0NrY05BQXNMUVFBaEJTQU1SUTBBSUFBZ0JrRUJhallDQUNBR0xRQUFJUUVnQUNBQ1FRRnJOZ0lZSUFSQi93RWdBM1JCZjNOeElBRWdBM1J5SVFRTElBQW9BaFFoQVNBQUlBUkJHSFlpQ2tIL0FVWTJBaFFnQUVFSFFRZ2dBUnNpQVVFSFFRZ2dCRUgvQVhFaUJrSC9BVVliYWlJQ1FRZEJDQ0FFUVFoMlFmOEJjU0lEUWY4QlJodHFJZ2xCQjBFSUlBUkJFSFpCL3dGeElnUkIvd0ZHR3lBSGFtb2lDRFlDRUNBQUlBQXBBd2dnQXlBQmRDQUVJQUowY2lBS0lBbDBjaUFHY3EwZ0I2MkdoQ0lPTndNSUlBaEJIMDBFUUFKQUlBVkJCRTRFUUNBQUtBSUFJZ0VvQWdBaEFpQUFJQVZCQkdzMkFoZ2dBQ0FCUVFScU5nSUFEQUVMUVFBaEEwRi9RUUFnQUNnQ0hCc2hBaUFGUVFCTURRQWdCVUVCY1NFTklBQW9BZ0FoQVFKQUlBVkJBVVlFUUNBQklRUU1BUXNnQlVIKy8vLy9CM0VoQ1VFQUlRWURRQ0FBSUFGQkFXbzJBZ0FnQVMwQUFDRUxJQUFnQVVFQ2FpSUVOZ0lBSUFBZ0JVRUJhellDR0NBQkxRQUJJUUVnQUNBRlFRSnJJZ1UyQWhnZ0FrSC9BU0FEZEVGL2MzRWdDeUFEZEhKQmdQNERJQU4wUVg5emNTQUJJQU5CQ0hKMGNpRUNJQU5CRUdvaEF5QUVJUUVnQmtFQ2FpSUdJQWxIRFFBTEN5QU5SUTBBSUFBZ0JFRUJhallDQUNBRUxRQUFJUUVnQUNBRlFRRnJOZ0lZSUFKQi93RWdBM1JCZjNOeElBRWdBM1J5SVFJTElBQWdBa0VZZGlJQlFmOEJSallDRkNBQVFRZEJDQ0FLUWY4QlJoc2lCRUVIUVFnZ0FrSC9BWEVpQmtIL0FVWWJhaUlGUVFkQkNDQUNRUWgyUWY4QmNTSURRZjhCUmh0cUlnZEJCMEVJSUFKQkVIWkIvd0Z4SWdKQi93RkdHeUFJYW1vMkFoQWdBQ0FESUFSMElBSWdCWFJ5SUFFZ0IzUnlJQVp5clNBSXJZWWdEb1FpRGpjRENBc2dEcWNMYXdFQmZ5TUFRWUFDYXlJRkpBQUNRQ0FDSUFOTURRQWdCRUdBd0FSeERRQWdCU0FCSUFJZ0Eyc2lBMEdBQWlBRFFZQUNTU0lCR3hBVkdpQUJSUVJBQTBBZ0FDQUZRWUFDRUJrZ0EwR0FBbXNpQTBIL0FVc05BQXNMSUFBZ0JTQURFQmtMSUFWQmdBSnFKQUFMTVFBZ0FRSi9JQUlvQWt4QkFFZ0VRQ0FBSUFFZ0FoQTlEQUVMSUFBZ0FTQUNFRDBMSWdCR0JFQVBDeUFBSUFGdUdnc1hBQ0FBSUFFZ0FpQURJQVFnQlNBR0lBZEJBUkFtR2d1aEFRRUVmeUFCUVFCTUJFQkJBQThMSUFBb0Fnd2hBaUFBS0FJUUlRTURRQ0FCSVFVQ1FDQUREUUFnQUNBQ1FRaDBRWUQrQTNFaUFqWUNEQ0FBUVFkQkNDQUNRWUQrQTBZYklnTTJBaEFnQUNnQ0NDSUJJQUFvQWdSUERRQWdBQ0FCUVFGcU5nSUlJQUFnQWlBQkxRQUFjaUlDTmdJTUN5QUFJQU5CQVdzaUF6WUNFQ0FDSUFOMlFRRnhJQVZCQVdzaUFYUWdCSEloQkNBRlFRRkxEUUFMSUFRTEhnQWdBQ2dDREFSQUlBQkJBRFlDS0FOQUlBQW9BaGhCQUVvTkFBc0xDMm9CQTM4Z0FBUkFJQUFvQWhnaUFRUkFJQUFvQWhBaUFnUi9RUUFoQVFOQUlBQW9BaGdnQVVFMGJHb29BaXdpQXdSQUlBTVFFQ0FBS0FJUUlRSUxJQUZCQVdvaUFTQUNTUTBBQ3lBQUtBSVlCU0FCQ3hBUUN5QUFLQUljSWdFRVFDQUJFQkFMSUFBUUVBc0xraFVCRDM4Q1FBSkFJQUFvQWd4RkJFQkJBU0VQSUFBb0FnUkJBRW9OQVNBQUtBSUlRUUZLRFFFTUFndEJBU0VOSUFBb0FnaEJBRW9OQUNBQUtBSUVRUUpJRFFFTElBQW9BZ0FpQ0NBTlFRVjBhaUVFQWtBZ0FDZ0NFQ0lISUFBb0FoUWlDazhOQUNBRUlBZEJCblJxSVFFQ1FDQUtJQWRyUVFOeElnWkZCRUFnQnlFQ0RBRUxJQWNoQWdOQUlBRWdBZjBBQkFEOURGaDJuVDlZZHAwL1dIYWRQMWgyblQvOTVnSDlDd1FBSUFFZ0FmMEFCQkQ5REZoMm5UOVlkcDAvV0hhZFAxaDJuVC85NWdIOUN3UVFJQUZCUUdzaEFTQUNRUUZxSVFJZ0EwRUJhaUlESUFaSERRQUxDeUFISUFwclFYeExEUUFEUUNBQklBSDlBQVFBL1F4WWRwMC9XSGFkUDFoMm5UOVlkcDAvL2VZQi9Rc0VBQ0FCSUFIOUFBUVEvUXhZZHAwL1dIYWRQMWgyblQ5WWRwMC8vZVlCL1FzRUVDQUJJQUg5QUFSQS9ReFlkcDAvV0hhZFAxaDJuVDlZZHAwLy9lWUIvUXNFUUNBQklBSDlBQVJRL1F4WWRwMC9XSGFkUDFoMm5UOVlkcDAvL2VZQi9Rc0VVQ0FCSUFIOUFBU0FBZjBNV0hhZFAxaDJuVDlZZHAwL1dIYWRQLzNtQWYwTEJJQUJJQUVnQWYwQUJKQUIvUXhZZHAwL1dIYWRQMWgyblQ5WWRwMC8vZVlCL1FzRWtBRWdBU0FCL1FBRXdBSDlERmgyblQ5WWRwMC9XSGFkUDFoMm5ULzk1Z0g5Q3dUQUFTQUJJQUg5QUFUUUFmME1XSGFkUDFoMm5UOVlkcDAvV0hhZFAvM21BZjBMQk5BQklBRkJnQUpxSVFFZ0FrRUVhaUlDSUFwSERRQUxDeUFJSUE5QkJYUnFJUVVDUUNBQUtBSVlJZ1lnQUNnQ0hDSUxUdzBBSUFVZ0JrRUdkR29oQVFKQUlBc2dCbXRCQTNFaUNFVUVRQ0FHSVFJTUFRdEJBQ0VESUFZaEFnTkFJQUVnQWYwQUJBRDlEQUFZMEQ4QUdOQS9BQmpRUHdBWTBELzk1Z0g5Q3dRQUlBRWdBZjBBQkJEOURBQVkwRDhBR05BL0FCalFQd0FZMEQvOTVnSDlDd1FRSUFGQlFHc2hBU0FDUVFGcUlRSWdBMEVCYWlJRElBaEhEUUFMQ3lBR0lBdHJRWHhMRFFBRFFDQUJJQUg5QUFRQS9Rd0FHTkEvQUJqUVB3QVkwRDhBR05BLy9lWUIvUXNFQUNBQklBSDlBQVFRL1F3QUdOQS9BQmpRUHdBWTBEOEFHTkEvL2VZQi9Rc0VFQ0FCSUFIOUFBUkEvUXdBR05BL0FCalFQd0FZMEQ4QUdOQS8vZVlCL1FzRVFDQUJJQUg5QUFSUS9Rd0FHTkEvQUJqUVB3QVkwRDhBR05BLy9lWUIvUXNFVUNBQklBSDlBQVNBQWYwTUFCalFQd0FZMEQ4QUdOQS9BQmpRUC8zbUFmMExCSUFCSUFFZ0FmMEFCSkFCL1F3QUdOQS9BQmpRUHdBWTBEOEFHTkEvL2VZQi9Rc0VrQUVnQVNBQi9RQUV3QUg5REFBWTBEOEFHTkEvQUJqUVB3QVkwRC85NWdIOUN3VEFBU0FCSUFIOUFBVFFBZjBNQUJqUVB3QVkwRDhBR05BL0FCalFQLzNtQWYwTEJOQUJJQUZCZ0FKcUlRRWdBa0VFYWlJQ0lBdEhEUUFMQ3lBS0lBQW9BZ2dpQ1NBQUtBSUVJZzRnRFdzaUFDQUFJQWxLR3lJSUlBZ2dDa3NiSVF3Z0JFRWdhaUVCQW44Z0IwVUVRQ0FNUlFSQVFRQWhBeUFCREFJTElBUWdCUDBBQkFBZ0JmMEFCQUFnQlAwQUJDRDk1QUg5REZVVDR6NVZFK00rVlJQalBsVVQ0ejc5NWdIOTVRSDlDd1FBSUFRZ0JQMEFCQkFnQmYwQUJCQWdCUDBBQkREOTVBSDlERlVUNHo1VkUrTStWUlBqUGxVVDR6Nzk1Z0g5NVFIOUN3UVFRUUVoQXlBRVFlQUFhZ3dCQ3lBQklBY2lBMEVHZEdvTElRSWdBeUFNU1FSQUEwQWdBa0VnYXlJQUlBRDlBQVFBSUFKQlFHcjlBQVFBSUFMOUFBUUEvZVFCL1F4VkUrTStWUlBqUGxVVDR6NVZFK00rL2VZQi9lVUIvUXNFQUNBQ1FSQnJJZ0FnQVAwQUJBQWdBa0V3YS8wQUJBQWdBdjBBQkJEOTVBSDlERlVUNHo1VkUrTStWUlBqUGxVVDR6Nzk1Z0g5NVFIOUN3UUFJQUpCUUdzaEFpQURRUUZxSWdNZ0RFY05BQXNMSUFnZ0NrOGlEVVVFUUNBQ1FTQnJJZ0FnQVAwQUJBQWdBa0ZBYXYwQUJBRDlERlVUWXo5VkUyTS9WUk5qUDFVVFl6Lzk1Z0g5NVFIOUN3UUFJQUpCRUdzaUFDQUEvUUFFQUNBQ1FUQnIvUUFFQVAwTVZSTmpQMVVUWXo5VkUyTS9WUk5qUC8zbUFmM2xBZjBMQkFBTElBc2dEaUFKSUE5cklnQWdBQ0FPU2hzaURpQUxJQTVKR3lFSklBVkJJR29oQWlBSkFuOGdCa1VFUUNBSlJRUkFJQUloQTBFQURBSUxJQVVnQmYwQUJBQWdCUDBBQkFBZ0JmMEFCQ0Q5NUFIOURIWUdZajkyQm1JL2RnWmlQM1lHWWovOTVnSDk1UUg5Q3dRQUlBVWdCZjBBQkJBZ0JQMEFCQkFnQmYwQUJERDk1QUg5REhZR1lqOTJCbUkvZGdaaVAzWUdZai85NWdIOTVRSDlDd1FRSUFWQjRBQnFJUU5CQVF3QkN5QUNJQVpCQm5ScUlRTWdCZ3NpQUVzRVFBTkFJQU5CSUdzaUNDQUkvUUFFQUNBRFFVQnEvUUFFQUNBRC9RQUVBUDNrQWYwTWRnWmlQM1lHWWo5MkJtSS9kZ1ppUC8zbUFmM2xBZjBMQkFBZ0EwRVFheUlJSUFqOUFBUUFJQU5CTUd2OUFBUUFJQVA5QUFRUS9lUUIvUXgyQm1JL2RnWmlQM1lHWWo5MkJtSS8vZVlCL2VVQi9Rc0VBQ0FEUVVCcklRTWdBRUVCYWlJQUlBbEhEUUFMQ3lBTElBNU5JZ2hGQkVBZ0EwRWdheUlBSUFEOUFBUUFJQU5CUUdyOUFBUUEvUXgyQnVJL2RnYmlQM1lHNGo5MkJ1SS8vZVlCL2VVQi9Rc0VBQ0FEUVJCcklnQWdBUDBBQkFBZ0EwRXdhLzBBQkFEOURIWUc0ajkyQnVJL2RnYmlQM1lHNGovOTVnSDk1UUg5Q3dRQUN3SkFJQWRGQkVBZ0RFVUVRRUVBSVFjTUFnc2dCQ0FFL1FBRUFDQUYvUUFFQUNBRS9RQUVJUDNrQWYwTXJnRlpQYTRCV1QydUFWazlyZ0ZaUGYzbUFmM2tBZjBMQkFBZ0JDQUUvUUFFRUNBRi9RQUVFQ0FFL1FBRU1QM2tBZjBNcmdGWlBhNEJXVDJ1QVZrOXJnRlpQZjNtQWYza0FmMExCQkFnQkVIZ0FHb2hBVUVCSVFjTUFRc2dBU0FIUVFaMGFpRUJDeUFISUF4SkJFQURRQ0FCUVNCcklnQWdBUDBBQkFBZ0FVRkFhdjBBQkFBZ0FmMEFCQUQ5NUFIOURLNEJXVDJ1QVZrOXJnRlpQYTRCV1QzOTVnSDk1QUg5Q3dRQUlBRkJFR3NpQUNBQS9RQUVBQ0FCUVRCci9RQUVBQ0FCL1FBRUVQM2tBZjBNcmdGWlBhNEJXVDJ1QVZrOXJnRlpQZjNtQWYza0FmMExCQUFnQVVGQWF5RUJJQWRCQVdvaUJ5QU1SdzBBQ3dzZ0RVVUVRQ0FCUVNCcklnQWdBUDBBQkFBZ0FVRkFhdjBBQkFEOURLNEIyVDJ1QWRrOXJnSFpQYTRCMlQzOTVnSDk1QUg5Q3dRQUlBRkJFR3NpQUNBQS9RQUVBQ0FCUVRCci9RQUVBUDBNcmdIWlBhNEIyVDJ1QWRrOXJnSFpQZjNtQWYza0FmMExCQUFMQWtBZ0JrVUVRQ0FKUlFSQVFRQWhCZ3dDQ3lBRklBWDlBQVFBSUFUOUFBUUFJQVg5QUFRZy9lUUIvUXh6QnNzL2N3YkxQM01HeXo5ekJzcy8vZVlCL2VRQi9Rc0VBQ0FGSUFYOUFBUVFJQVQ5QUFRUUlBWDlBQVF3L2VRQi9ReHpCc3MvY3diTFAzTUd5ejl6QnNzLy9lWUIvZVFCL1FzRUVDQUZRZUFBYWlFQ1FRRWhCZ3dCQ3lBQ0lBWkJCblJxSVFJTElBWWdDVWtFUUFOQUlBSkJJR3NpQUNBQS9RQUVBQ0FDUVVCcS9RQUVBQ0FDL1FBRUFQM2tBZjBNY3diTFAzTUd5ejl6QnNzL2N3YkxQLzNtQWYza0FmMExCQUFnQWtFUWF5SUFJQUQ5QUFRQUlBSkJNR3Y5QUFRQUlBTDlBQVFRL2VRQi9ReHpCc3MvY3diTFAzTUd5ejl6QnNzLy9lWUIvZVFCL1FzRUFDQUNRVUJySVFJZ0JrRUJhaUlHSUFsSERRQUxDeUFJRFFBZ0FrRWdheUlBSUFEOUFBUUFJQUpCUUdyOUFBUUEvUXh6Qmt0QWN3WkxRSE1HUzBCekJrdEEvZVlCL2VRQi9Rc0VBQ0FDUVJCcklnQWdBUDBBQkFBZ0FrRXdhLzBBQkFEOURITUdTMEJ6Qmt0QWN3WkxRSE1HUzBEOTVnSDk1QUg5Q3dRQUN3dGRBUVIvSUFBRVFDQUFLQUlVSWdFZ0FDZ0NFQ0lDYkFSQUEwQWdBQ2dDR0NBRFFRSjBhaWdDQUNJRUJFQWdCQkFRSUFBb0FoQWhBaUFBS0FJVUlRRUxJQU5CQVdvaUF5QUJJQUpzU1EwQUN3c2dBQ2dDR0JBUUlBQVFFQXNMaFFFQkFuOENRQUpBSUFBb0FnUWlBeUFBS0FJQUlnUkhCRUFnQUNnQ0NDRUREQUVMSUFBZ0EwRUthaUlFTmdJRUlBQW9BZ2dnQkVFQ2RCQVhJZ05GRFFFZ0FDQUROZ0lJSUFBb0FnQWhCQXNnQXlBRVFRSjBhaUFCTmdJQUlBQWdCRUVCYWpZQ0FFRUJEd3NnQUNnQ0NCQVFJQUJDQURjQ0FDQUNRUUZCMGk1QkFCQVBRUUFMa3dRQ0JuOENmZ0pBQWtBRFFDQUFJQUJCQVd0eERRRWdBVUZIU3cwQklBQkJDQ0FBUVFoTElnY2JJUUJCcU04QktRTUFJZ2dDZjBFSUlBRkJBMnBCZkhFZ0FVRUlUUnNpQVVIL0FFMEVRQ0FCUVFOMlFRRnJEQUVMSUFGbklRTWdBVUVkSUFOcmRrRUVjeUFEUVFKMGEwSHVBR29nQVVIL0gwME5BQnBCUHlBQlFSNGdBMnQyUVFKeklBTkJBWFJyUWNjQWFpSURJQU5CUDA4YkN5SURyWWdpQ1VJQVVnUkFBMEFnQ1NBSmVpSUlpQ0VKQW40Z0F5QUlwMm9pQTBFRWRDSUVRYWpIQVdvb0FnQWlBaUFFUWFESEFXb2lCVWNFUUNBQ0lBQWdBUkE4SWdRTkJpQUNLQUlFSWdRZ0FpZ0NDQ0lHTmdJSUlBWWdCRFlDQkNBQ0lBVTJBZ2dnQWlBRktBSUVOZ0lFSUFVZ0FqWUNCQ0FDS0FJRUlBSTJBZ2dnQTBFQmFpRURJQWxDQVlnTUFRdEJxTThCUWFqUEFTa0RBRUorSUFPdGlZTTNBd0FnQ1VJQmhRc2lDVUlBVWcwQUMwR296d0VwQXdBaENBdEJQeUFJZWFkcklRVUNRQ0FJVUFSQVFRQWhBZ3dCQ3lBRlFRUjBJZ1JCcU1jQmFpZ0NBQ0VDSUFoQ2dJQ0FnQVJVRFFCQjR3QWhBeUFDSUFSQm9NY0JhaUlHUmcwQUEwQWdBMFVOQVNBQ0lBQWdBUkE4SWdRTkJDQURRUUZySVFNZ0FpZ0NDQ0lDSUFaSERRQUxDeUFCSUFCQk1HcEJNQ0FIRzJvUWJRMEFDeUFDUlEwQUlBSWdCVUVFZEVHZ3h3RnFJZ05HRFFBRFFDQUNJQUFnQVJBOElnUU5BaUFDS0FJSUlnSWdBMGNOQUFzTFFRQWhCQXNnQkF2YUl3SXJmd043QWtBZ0FDZ0NBQ0lKSUFOSkRRQWdBU0FEVHcwQUlBRWdDVThOQUNBQUtBSUVJZ2tnQkVrTkFDQUNJQVJQRFFBZ0FpQUpUdzBBSUFWQkhHc2hKeUFBS0FJSUlobEJBblFoRVNBSFFRSjBJUThnQmtFQ2RDRWZJQVZCQkdzaEtDQUNJQUFvQWd4dUlSNGdHU0FaSUFFZ0dXNGlLV3dnQVd0cUlTb2dCa0VJUnlFaklBSWhIUU5BSUFBb0Fnd2lDU0VLSUFJZ0hVWUVRQ0FKSUFJZ0NYQnJJUW9MSUFvZ0JDQWRheUlNSUFvZ0RFa2JJaE5CZkhFaEd5QVRRUU54SVJZZ0UwRjRjU0VySUJOQkIzRWhKQ0FUUVFGcklSb2dHU0FKUVFKMElBcEJBblJyUVFScWJDRWdJQVpCQWtZZ0UwRUJSbkVoTENBSklBcHJJQmxzSVNVZ0p5QVBJQjBnQW1zaURHd2lDV29oSmlBSklDaHFJUzBnQlNBSmFpRXVJQVVnQnlBTWJFRUNkR29oSENBcElTRWdBU0VZQTBBZ0tpQVpJQUVnR0VZYklnd2dBeUFZYXlJSklBa2dERXNiSVJBZ0dTQU1heUVKSUNGQkFuUWlEU0FBS0FJWUlBQW9BaEFnSG14QkFuUnFhaWdDQUNFU0FrQUNRQ0FJQkVBQ1FBSkFBa0FDUUFKQUlCSUVRQ0FTSUNWQkFuUnFJQWxCQW5ScUlRb2dHQ0FCYXlFTklBWkJBVVlOQkNBY0lBWWdEV3hCQW5ScUlRc2dFRUVCUmcwRElDd05BaUFqRFFFZ0VFRUhUUTBCSUJORkRRZ2dKaUFOSUI5c2FpQVFRUVYwYWlFVklCSWdJQ0FRUVFKMGFpQU1RUUowYTJvaElpQVFRWHh4SVExQkFDRVNEQVVMSUFaQkFVY0VRQ0FUUlEwSUlCQkJmSEVoRFNBUVFRTnhJUXdnSENBWUlBRnJJQVpzUVFKMGFpRUxRUUFoRWlBUVFRRnJRUU5KSVJRRFFBSkFJQkJGRFFCQkFDRUpRUUFoQ2tFQUlRNGdGRVVFUUFOQUlBc2dCaUFLYkVFQ2RHcEJBRFlDQUNBTElBcEJBWElnQm14QkFuUnFRUUEyQWdBZ0N5QUtRUUp5SUFac1FRSjBha0VBTmdJQUlBc2dDa0VEY2lBR2JFRUNkR3BCQURZQ0FDQUtRUVJxSVFvZ0RrRUVhaUlPSUExSERRQUxDeUFNUlEwQUEwQWdDeUFHSUFwc1FRSjBha0VBTmdJQUlBcEJBV29oQ2lBSlFRRnFJZ2tnREVjTkFBc0xJQXNnRDJvaEN5QVRJQkpCQVdvaUVrY05BQXNNQ0FzZ0UwVU5CeUFRUVFKMElRd2dIQ0FZSUFGclFRSjBhaUVMUVFBaENTQWFRUWRQQkVBRFFDQUxRUUFnREJBVklBOXFRUUFnREJBVklBOXFRUUFnREJBVklBOXFRUUFnREJBVklBOXFRUUFnREJBVklBOXFRUUFnREJBVklBOXFRUUFnREJBVklBOXFRUUFnREJBVklBOXFJUXNnQ1VFSWFpSUpJQ3RIRFFBTEMwRUFJUWtnSkVVTkJ3TkFJQXRCQUNBTUVCVWdEMm9oQ3lBSlFRRnFJZ2tnSkVjTkFBc01Cd3NnRTBVTkJpQVFRWHh4SVJRZ0VFRURjU0VTUVFBaERTQVFRUUZyUVFOSklSY01CUXRCQUNFSklCQkJmSEVpRGdSQUEwQWdDeUFKUVFOMGFpQUtJQWxCQW5ScUtBSUFOZ0lBSUFzZ0NVRUJjaUlVUVFOMGFpQUtJQlJCQW5ScUtBSUFOZ0lBSUFzZ0NVRUNjaUlVUVFOMGFpQUtJQlJCQW5ScUtBSUFOZ0lBSUFzZ0NVRURjaUlVUVFOMGFpQUtJQlJCQW5ScUtBSUFOZ0lBSUFsQkJHb2lDU0FPU1EwQUN3c2dDU0FRVHcwRkFrQWdFQ0FKYXlJVVFSQkpEUUFnTGlBTklCOXNJZzFxSUFsQkEzUnFJQklnSUdvaURpQVFJQXhyUVFKMGFra0VRQ0FPSUFrZ0RHdEJBblJxSUEwZ0xXb2dFRUVEZEdwSkRRRUxJQW9nQ1VFQ2RHb2hEU0FKL1JIOURBQUFBQUFCQUFBQUFnQUFBQU1BQUFEOXJnRWhOQ0FKSUJSQmZIRWlER29oQ1VFQUlRNERRQ0FMSURSQkFmMnJBU0kxL1JzQVFRSjBhaUFOSUE1QkFuUnEvUUFDQUNJMi9Wb0NBQUFnQ3lBMS9Sc0JRUUowYWlBMi9Wb0NBQUVnQ3lBMS9Sc0NRUUowYWlBMi9Wb0NBQUlnQ3lBMS9Sc0RRUUowYWlBMi9Wb0NBQU1nTlAwTUJBQUFBQVFBQUFBRUFBQUFCQUFBQVAydUFTRTBJQTVCQkdvaURpQU1SdzBBQ3lBTUlCUkdEUVlMUVFBaERDQUpJUTRnRUNBSmEwRURjU0lOQkVBRFFDQUxJQTVCQTNScUlBb2dEa0VDZEdvb0FnQTJBZ0FnRGtFQmFpRU9JQXhCQVdvaURDQU5SdzBBQ3dzZ0NTQVFhMEY4U3cwRkEwQWdDeUFPUVFOMGFpQUtJQTVCQW5ScUtBSUFOZ0lBSUFzZ0RrRUJhaUlKUVFOMGFpQUtJQWxCQW5ScUtBSUFOZ0lBSUFzZ0RrRUNhaUlKUVFOMGFpQUtJQWxCQW5ScUtBSUFOZ0lBSUFzZ0RrRURhaUlKUVFOMGFpQUtJQWxCQW5ScUtBSUFOZ0lBSUE1QkJHb2lEaUFRUncwQUN3d0ZDeUFUUlEwRVFRQWhDU0FhUVFOUEJFQURRQ0FMSUFvb0FnQTJBZ0FnQ3lBUGFpSU1JQW9nRVdvaURTZ0NBRFlDQUNBTUlBOXFJZ3dnRFNBUmFpSU5LQUlBTmdJQUlBd2dEMm9pRENBTklCRnFJZzBvQWdBMkFnQWdEU0FSYWlFS0lBd2dEMm9oQ3lBSlFRUnFJZ2tnRzBjTkFBc0xRUUFoQ1NBV1JRMEVBMEFnQ3lBS0tBSUFOZ0lBSUFvZ0VXb2hDaUFMSUE5cUlRc2dDVUVCYWlJSklCWkhEUUFMREFRTElCd2dEVUVDZEdvaEN5QVFRUVJIQkVBZ0UwVU5CQ0FRUVFKMElRbEJBQ0VPSUJwQkEwOEVRQU5BSUFzZ0NpQUpFQkloTUNBS0lCRnFJZzBnRVdvaUN5QVJhaUlTSUJGcUlRb2dNQ0FQYWlBTklBa1FFaUFQYWlBTElBa1FFaUFQYWlBU0lBa1FFaUFQYWlFTElBNUJCR29pRGlBYlJ3MEFDd3RCQUNFT0lCWkZEUVFEUUNBTElBb2dDUkFTSVRFZ0NpQVJhaUVLSURFZ0Qyb2hDeUFPUVFGcUlnNGdGa2NOQUFzTUJBc2dFMFVOQTBFQUlRa2dHa0VEVHdSQUEwQWdDeUFLL1FBQ0FQMExBZ0FnQ3lBUGFpSU1JQW9nRVdvaURmMEFBZ0Q5Q3dJQUlBd2dEMm9pRENBTklCRnFJZzM5QUFJQS9Rc0NBQ0FNSUE5cUlnd2dEU0FSYWlJTi9RQUNBUDBMQWdBZ0RTQVJhaUVLSUF3Z0Qyb2hDeUFKUVFScUlna2dHMGNOQUFzTFFRQWhDU0FXUlEwREEwQWdDeUFLL1FBQ0FQMExBZ0FnQ2lBUmFpRUtJQXNnRDJvaEN5QUpRUUZxSWdrZ0ZrY05BQXNNQXdzRFFFRUFJUWtnRFFSQUEwQWdDeUFKUVFWMGFpQUtJQWxCQW5ScUtBSUFOZ0lBSUFzZ0NVRUJjaUlNUVFWMGFpQUtJQXhCQW5ScUtBSUFOZ0lBSUFzZ0NVRUNjaUlNUVFWMGFpQUtJQXhCQW5ScUtBSUFOZ0lBSUFzZ0NVRURjaUlNUVFWMGFpQUtJQXhCQW5ScUtBSUFOZ0lBSUFsQkJHb2lDU0FOU1EwQUN3c0NRQ0FKSUJCUERRQUNRQ0FRSUFsckloUkJDRThFUUFKQUlBc2dDVUVGZEdvZ0lpQVJJQkpzYWs4TkFDQUtJQWxCQW5ScUlCVWdEeUFTYkdwUERRQWdDU0VNREFJTElBbjlFZjBNQUFBQUFBRUFBQUFDQUFBQUF3QUFBUDJ1QVNFMElBa2dGRUY4Y1NJWGFpRU1RUUFoRGdOQUlBc2dORUVEL2FzQklqWDlHd0JCQW5ScUlBb2dDU0FPYWtFQ2RHcjlBQUlBSWpiOVdnSUFBQ0FMSURYOUd3RkJBblJxSURiOVdnSUFBU0FMSURYOUd3SkJBblJxSURiOVdnSUFBaUFMSURYOUd3TkJBblJxSURiOVdnSUFBeUEwL1F3RUFBQUFCQUFBQUFRQUFBQUVBQUFBL2E0QklUUWdEa0VFYWlJT0lCZEhEUUFMSUJRZ0YwWU5BZ3dCQ3lBSklRd0xRUUFoRGlBUUlBd2lDV3RCQTNFaUZBUkFBMEFnQ3lBSlFRVjBhaUFLSUFsQkFuUnFLQUlBTmdJQUlBbEJBV29oQ1NBT1FRRnFJZzRnRkVjTkFBc0xJQXdnRUd0QmZFc05BQU5BSUFzZ0NVRUZkR29nQ2lBSlFRSjBhaWdDQURZQ0FDQUxJQWxCQVdvaURFRUZkR29nQ2lBTVFRSjBhaWdDQURZQ0FDQUxJQWxCQW1vaURFRUZkR29nQ2lBTVFRSjBhaWdDQURZQ0FDQUxJQWxCQTJvaURFRUZkR29nQ2lBTVFRSjBhaWdDQURZQ0FDQUpRUVJxSWdrZ0VFY05BQXNMSUFvZ0VXb2hDaUFMSUE5cUlRc2dFeUFTUVFGcUloSkhEUUFMREFJTElCSkZCRUJCQVNBQUtBSUlJQUFvQWd4c1FRSjBFQk1pRWtVRVFFRUFEd3NnQUNnQ0dDQUFLQUlRSUI1c1FRSjBhaUFOYWlBU05nSUFDeUFTSUNWQkFuUnFJQWxCQW5ScUlRc2dHQ0FCYXlFSkFrQUNRQUpBQWtBZ0JrRUJSd1JBSUJ3Z0JpQUpiRUVDZEdvaENpQVFRUUZHRFFFZ0l3MENJQkJCQjAwTkFpQVRSUTBHSUNZZ0NTQWZiR29nRUVFRmRHb2hJaUFnSUJCQkFuUnFJQXhCQW5ScklTOGdFRUY4Y1NFVVFRQWhEQU5BUVFBaENTQVVCRUFEUUNBTElBbEJBblJxSUFvZ0NVRUZkR29vQWdBMkFnQWdDeUFKUVFGeUlnMUJBblJxSUFvZ0RVRUZkR29vQWdBMkFnQWdDeUFKUVFKeUlnMUJBblJxSUFvZ0RVRUZkR29vQWdBMkFnQWdDeUFKUVFOeUlnMUJBblJxSUFvZ0RVRUZkR29vQWdBMkFnQWdDVUVFYWlJSklCUkpEUUFMQ3dKQUlBa2dFRThOQUFKQUlCQWdDV3NpRjBFSVR3UkFBa0FnQ3lBSlFRSjBhaUFpSUF3Z0QyeHFUdzBBSUFvZ0NVRUZkR29nRWlBdklBd2dFV3hxYWs4TkFDQUpJUTBNQWdzZ0NmMFIvUXdBQUFBQUFRQUFBQUlBQUFBREFBQUEvYTRCSVRRZ0NTQVhRWHh4SWhWcUlRMUJBQ0VPQTBBZ0N5QUpJQTVxUVFKMGFpQUtJRFJCQS8yckFTSTEvUnNEUVFKMGFpQUtJRFg5R3dKQkFuUnFJQW9nTmYwYkFVRUNkR29nQ2lBMS9Sc0FRUUowYXYwSkFnRDlWZ0lBQWYxV0FnQUMvVllDQUFQOUN3SUFJRFQ5REFRQUFBQUVBQUFBQkFBQUFBUUFBQUQ5cmdFaE5DQU9RUVJxSWc0Z0ZVY05BQXNnRlNBWFJnMENEQUVMSUFraERRdEJBQ0VPSUJBZ0RTSUphMEVEY1NJWEJFQURRQ0FMSUFsQkFuUnFJQW9nQ1VFRmRHb29BZ0EyQWdBZ0NVRUJhaUVKSUE1QkFXb2lEaUFYUncwQUN3c2dEU0FRYTBGOFN3MEFBMEFnQ3lBSlFRSjBhaUFLSUFsQkJYUnFLQUlBTmdJQUlBc2dDVUVCYWlJTlFRSjBhaUFLSUExQkJYUnFLQUlBTmdJQUlBc2dDVUVDYWlJTlFRSjBhaUFLSUExQkJYUnFLQUlBTmdJQUlBc2dDVUVEYWlJTlFRSjBhaUFLSUExQkJYUnFLQUlBTmdJQUlBbEJCR29pQ1NBUVJ3MEFDd3NnQ3lBUmFpRUxJQW9nRDJvaENpQVRJQXhCQVdvaURFY05BQXNNQmdzZ0hDQUpRUUowYWlFS0lCQkJCRVlOQWlBVFJRMEZJQkJCQW5RaENVRUFJUTRnR2tFRFR3UkFBMEFnQ3lBS0lBa1FFaUV5SUFvZ0Qyb2lEU0FQYWlJTElBOXFJaElnRDJvaENpQXlJQkZxSUEwZ0NSQVNJQkZxSUFzZ0NSQVNJQkZxSUJJZ0NSQVNJQkZxSVFzZ0RrRUVhaUlPSUJ0SERRQUxDMEVBSVE0Z0ZrVU5CUU5BSUFzZ0NpQUpFQkloTXlBS0lBOXFJUW9nTXlBUmFpRUxJQTVCQVdvaURpQVdSdzBBQ3d3RkN5QVRSUTBFUVFBaENTQWFRUU5QQkVBRFFDQUxJQW9vQWdBMkFnQWdDeUFSYWlJTUlBb2dEMm9pRFNnQ0FEWUNBQ0FNSUJGcUlnd2dEU0FQYWlJTktBSUFOZ0lBSUF3Z0VXb2lEQ0FOSUE5cUlnMG9BZ0EyQWdBZ0RDQVJhaUVMSUEwZ0Qyb2hDaUFKUVFScUlna2dHMGNOQUFzTFFRQWhDU0FXUlEwRUEwQWdDeUFLS0FJQU5nSUFJQXNnRVdvaEN5QUtJQTlxSVFvZ0NVRUJhaUlKSUJaSERRQUxEQVFMSUJORkRRTWdFRUY4Y1NFVUlCQkJBM0VoRWtFQUlRMGdFRUVCYTBFRFNTRVhEQUVMSUJORkRRSkJBQ0VKSUJwQkEwOEVRQU5BSUFzZ0N2MEFBZ0Q5Q3dJQUlBc2dFV29pRENBS0lBOXFJZzM5QUFJQS9Rc0NBQ0FNSUJGcUlnd2dEU0FQYWlJTi9RQUNBUDBMQWdBZ0RDQVJhaUlNSUEwZ0Qyb2lEZjBBQWdEOUN3SUFJQTBnRDJvaENpQU1JQkZxSVFzZ0NVRUVhaUlKSUJ0SERRQUxDMEVBSVFrZ0ZrVU5BZ05BSUFzZ0N2MEFBZ0Q5Q3dJQUlBb2dEMm9oQ2lBTElCRnFJUXNnQ1VFQmFpSUpJQlpIRFFBTERBSUxBMEFDUUNBUVJRMEFRUUFoRGtFQUlRbEJBQ0VNSUJkRkJFQURRQ0FMSUFsQkFuUnFJQW9nQmlBSmJFRUNkR29vQWdBMkFnQWdDeUFKUVFGeUloVkJBblJxSUFvZ0JpQVZiRUVDZEdvb0FnQTJBZ0FnQ3lBSlFRSnlJaFZCQW5ScUlBb2dCaUFWYkVFQ2RHb29BZ0EyQWdBZ0N5QUpRUU55SWhWQkFuUnFJQW9nQmlBVmJFRUNkR29vQWdBMkFnQWdDVUVFYWlFSklBeEJCR29pRENBVVJ3MEFDd3NnRWtVTkFBTkFJQXNnQ1VFQ2RHb2dDaUFHSUFsc1FRSjBhaWdDQURZQ0FDQUpRUUZxSVFrZ0RrRUJhaUlPSUJKSERRQUxDeUFMSUJGcUlRc2dDaUFQYWlFS0lCTWdEVUVCYWlJTlJ3MEFDd3dCQ3dOQUFrQWdFRVVOQUVFQUlRNUJBQ0VKUVFBaERDQVhSUVJBQTBBZ0N5QUdJQWxzUVFKMGFpQUtJQWxCQW5ScUtBSUFOZ0lBSUFzZ0NVRUJjaUlWSUFac1FRSjBhaUFLSUJWQkFuUnFLQUlBTmdJQUlBc2dDVUVDY2lJVklBWnNRUUowYWlBS0lCVkJBblJxS0FJQU5nSUFJQXNnQ1VFRGNpSVZJQVpzUVFKMGFpQUtJQlZCQW5ScUtBSUFOZ0lBSUFsQkJHb2hDU0FNUVFScUlnd2dGRWNOQUFzTElCSkZEUUFEUUNBTElBWWdDV3hCQW5ScUlBb2dDVUVDZEdvb0FnQTJBZ0FnQ1VFQmFpRUpJQTVCQVdvaURpQVNSdzBBQ3dzZ0NpQVJhaUVLSUFzZ0Qyb2hDeUFOUVFGcUlnMGdFMGNOQUFzTElDRkJBV29oSVNBUUlCaHFJaGdnQTBrTkFBc2dIa0VCYWlFZUlCTWdIV29pSFNBRVNRMEFDd3RCQVF2RE13VW1mdzkrQVhzQmZRRjhJd0JCMEFCcklnNGtBQ0FPUVpEL0F6WUNLQ0FBS0FKc0lBQW9BbWhzSVJjQ2Z3SkFBa0FDUUNBQUtBSUlJZ3RCQ0VjRVFFRUFJQXRCZ0FKSERRUWFJQTVCMmY4RE5nSW9EQUVMSUFBdEFFUkJBWEVOQUNBWFFRRnhJU0lnRjBGOGNTRVBJQmRCQVd1dFFvd3NmaUl4UWlDSXAwRUFSeUVqSURHbklTUWdEa0hOQUdvaEpTQU9RY3dBYWlFb0lBNUJ5QUJxSVNrZ0YwRWtTU0VxUVpEL0F5RUxBa0FDUUFKQUEwQUNRQ0FMUVpQL0EwWU5BQUpBQTBBZ0NTa0RDQ0l4VUFSK1FnQUZJREVnQ1NrRE9IMExVQVJBSUFCQndBQTJBZ2dNQXdzZ0NTQUFLQUlRUVFJZ0NoQWFRUUpIQkVBZ0NrRUJRWllTUVFBUUQwRUFEQXNMSUFBb0FoQWdEa0VrYWtFQ0VCRWdEaWdDSkNJTFFRRk5CRUFnQ2tFQlFZY3VRUUFRRDBFQURBc0xBa0FnRGlnQ0tFR0FnUUpHQkVBZ0NTa0RDQ0l4VUFSK1FnQUZJREVnQ1NrRE9IMExVQTBCSUE0b0FpUWhDd3NnQUNnQ0NDSVVRUkJ4QkVBZ0FDQUFLQUlZSUF0clFRSnJOZ0lZQ3lBT0lBdEJBbXNpRWpZQ0pFSGd2UUVoRENBT0tBSW9JUTBEUUNBTUlnc29BZ0FpR0FSQUlBdEJER29oRENBTklCaEhEUUVMQ3lBTEtBSUVJQlJ4UlFSQUlBcEJBVUg4S0VFQUVBOUJBQXdNQ3dKQUlBQW9BaFFnRWs4RVFDQUFLQUlRSVF3TUFRc2dDU2tEQ0NJeFVBUitRZ0FGSURFZ0NTa0RPSDBMSUJLdFV3UkFJQXBCQVVHTUxFRUFFQTlCQUF3TkN5QUFLQUlRSUE0b0FpUVFGeUlNUlFSQUlBQW9BaEFRRUNBQVFnQTNBeEFnQ2tFQlFkUWxRUUFRRDBFQURBMExJQUFnRERZQ0VDQUFJQTRvQWlRaUVqWUNGQXNnQ1NBTUlCSWdDaEFhSWd3Z0RpZ0NKRWNFUUNBS1FRRkJsaEpCQUJBUFFRQU1EQXNnQ3lnQ0NDSUxSUVJBSUFwQkFVSGExZ0JCQUJBUFFRQU1EQXNnQUNBQUtBSVFJQXdnQ2lBTEVRRUFSUVJBSUE0Z0RpZ0NLRFlDSUNBS1FRRkJsT2dBSUE1QklHb1FEMEVBREF3TElBa3BBemdoTVNBT0tBSWtJUkVnQUNnQ3lBRWlGQ2dDS0NJU0lBQW9Bc3dCSWd4QktHd2lEV29pRmlnQ0ZDSWNRUUZxSWgwZ0ZpZ0NIQ0lMU3dSQUlCWUNmeUFMczBNQUFNaENraUpCUXdBQWdFOWRJRUZEQUFBQUFHQnhCRUFnUWFrTUFRdEJBQXNpQ3pZQ0hDQVdLQUlZSUF0QkdHd1FGeUVMSUJRb0FpZ2lFaUFOYWlFV0lBdEZEUU1nRmlBTE5nSVlJQllvQWhRaUhFRUJhaUVkQ3lBTklCSnFJZzBvQWhnZ0hFRVliR29pQ3lBUlFRUnFOZ0lRSUFzZ01hY2dFV3RCQkdzaURLdzNBd2dnQ3lBWU93RUFJQTBnSFRZQ0ZBSkFJQmhCa1A4RFJ3MEFJQTBvQWhBaUN3UkFJQXNnRFNnQ0RFRVliR29nREswM0F3QUxJQWtwQXppbklBNG9BaVJyUVFScnJTSXhJQUFwQXpCWERRQWdBQ0F4TndNd0N5QUFMUUJFUVFSeEJFQWdDU0FBTlFJWUlBb2dDU2dDS0JFSUFDQUFOUUlZVWdSQUlBcEJBVUdXRWtFQUVBOUJBQXdOQ3lBT1FaUC9BellDS0F3RUN5QUpJQUFvQWhCQkFpQUtFQnBCQWtjRVFDQUtRUUZCbGhKQkFCQVBRUUFNREFzZ0FDZ0NFQ0FPUVNocVFRSVFFU0FPS0FJb1FaUC9BMGNOQVF3REN3c2dBRUhBQURZQ0NBd0JDeUFXS0FJWUVCQWdGQ2dDS0NBTVFTaHNhaUlBUVFBMkFod2dBRUlBTndJVUlBcEJBVUdGSFVFQUVBOUJBQXdJQ3dKQUlBa3BBd2dpTVZBRWZrSUFCU0F4SUFrcEF6aDlDMUFFUUNBQUtBSUlRY0FBUmcwQkN3SkFBa0FnQUMwQVJDSUxRUVJ4UlFSQUlBQW9Bc3dCUVl3c2JDRU1JQUFvQXB3QklTNENRQUpBSUFBb0FqZ0VRQ0FKS1FNSUlqRlFCSDVDQUFVZ01TQUpLUU00ZlF1bklSTU1BUXNnQUNnQ0dDSVRRUUpKRFFFTElBQWdFMEVDYXlJVE5nSVlDeUF1SUF4cUlSZ2dFMFVOQVNBSktRTUlJakZRQkg1Q0FBVWdNU0FKS1FNNGZRc2dFNjFUQkVBZ0FDZ0N1QUVFUUNBS1FRRkJ1U3hCQUJBUFFRQU1EUXNnQ2tFQ1Fia3NRUUFRRHdzZ0FDZ0NHQ0lOUVg1UEJFQWdDa0VCUWY0S1FRQVFEMEVBREF3TEFrQWdHQ2dDM0NzaURBUkFJQmdvQXVBcklndEJmU0FOYTBzRVFDQUtRUUZCbGdsQkFCQVBRUUFNRGdzZ0RDQUxJQTFxUVFKcUVCY2lDd1JBSUJnZ0N6WUMzQ3NNQkFzZ0dDZ0MzQ3NRRUNBWVFRQTJBdHdyREFFTElCZ2dEVUVDYWhBVUlnczJBdHdySUFzTkFnc2dDa0VCUVljdlFRQVFEMEVBREFzTElBQkJDRFlDQ0NBQUlBdEIrZ0Z4T2dCRURBRUxJQUFvQXNnQkloWUVRQ0FXS0FJb0loSWdBQ2dDekFFaUZFRW9iQ0lSYWlJTUtBSVFJQXdvQWd4QkdHeHFJZ3NnQ1NrRE9DSXlRZ0o5SWpFM0F3Z2dDeUF5SUFBMUFoaDhOd01RSUFBb0FoZ2hEUUpBSUF3b0FoUWlIRUVCYWlJZElBd29BaHdpQzAwRVFDQU1LQUlZSVF3TUFRc2dEQUovSUF1elF3QUF5RUtTSWtGREFBQ0FUMTBnUVVNQUFBQUFZSEVFUUNCQnFRd0JDMEVBQ3lJTE5nSWNJQXdvQWhnZ0MwRVliQkFYSVF3Z0ZpZ0NLQ0lTSUJGcUlRc2dERVVOQmlBTElBdzJBaGdnQ3lnQ0ZDSWNRUUZxSVIwTElBd2dIRUVZYkdvaUN5QU5RUUpxTmdJUUlBc2dNY1EzQXdnZ0MwR1Qvd003QVFBZ0VTQVNhaUFkTmdJVUN5QUFLQUlZSVF3Q1FDQVRSUVJBUVFBaEV3d0JDeUFKSUJnb0F0d3JJQmdvQXVBcmFpQU1JQW9RR2lFVElBQW9BaGdoREFzZ0FFRUlRY0FBSUF3Z0UwWWJOZ0lJSUJnZ0dDZ0M0Q3NnRTJvMkF1QXJJQUF0QUVRaUMwRUpjVUVCUncwQUlBQWdDMEVJY2pvQVJDQUFLQUxNQVNFTklBa29BaHhCQWtZTkFDQUpLUU00SWpGQ2YxRU5BQUpBQTBCQkFDRU1JQWtnRGtIR0FHb2lDMEVDSUFvUUdrRUNSdzBCSUFzZ0RrRkFhMEVDRUJFZ0RpZ0NRRUdRL3dOSERRRkJsaEloRWlBSklBdEJBaUFLRUJwQkFrY05DU0FMSUE1QlBHcEJBaEFSSUE0b0FqeEJDa2NFUUVHSExpRVNEQW9MSUE1QkNEWUNQQ0FKSUE1QnhnQnFRUWdnQ2hBYUlnc2dEaWdDUEVjTkNTQUxRUWhIQkVCQnZSNGhFZ3dLQ3lBT1FjWUFhaUFPUVRocVFRSVFFU0FwSUE1Qk5HcEJCQkFSSUNnZ0RrRXdha0VCRUJFZ0pTQU9RU3hxUVFFUUVTQU5JQTRvQWpoSEJFQWdEaWdDTkNJTFFRNUpEUUlnRGlBTFFReHJJZ3MyQWpRZ0NTQUxyU0FLSUFrb0FpZ1JDQUFnRGpVQ05GRU5BUXdDQ3dzZ0RpZ0NNQ0FPS0FJc1JpRU1DeUFKSURFZ0NpQUpLQUlzRVEwQVJRMElJQXhGRFFBZ0FDQUFMUUJFUWU0QmNVRVFjam9BUkFKQUlCZEZEUUFnQUNnQ25BRWhFMEVBSVFzQ1FDQXFEUUFnRTBIWUsyb2lEQ0FrYWlBTVNTQWpjZzBBQTBBZ0V5QUxRWXdzYkdvaUhDZ0MyQ3NpSGYwUklCTWdDMEVCY2tHTUxHeHFJaGdvQXRnckloYjlIQUVnRXlBTFFRSnlRWXdzYkdvaUVTZ0MyQ3NpRlAwY0FpQVRJQXRCQTNKQmpDeHNhaUlOS0FMWUt5SU0vUndEL1F3QUFBQUFBQUFBQUFBQUFBQUFBQUFBL1RnaVFQMGJBRUVCY1FSQUlCeEIyQ3RxSUIxQkFXbzJBZ0FMSUVEOUd3RkJBWEVFUUNBWVFkZ3JhaUFXUVFGcU5nSUFDeUJBL1JzQ1FRRnhCRUFnRVVIWUsyb2dGRUVCYWpZQ0FBc2dRUDBiQTBFQmNRUkFJQTFCMkN0cUlBeEJBV28yQWdBTElBdEJCR29pQ3lBUFJ3MEFDeUFYSUE4aUMwWU5BUXNnQzBFQmNpRU1JQ0lFUUNBVElBdEJqQ3hzYWlJTktBTFlLeUlMQkVBZ0RVSFlLMm9nQzBFQmFqWUNBQXNnRENFTEN5QU1JQmRHRFFBRFFDQVRJQXRCakN4c2FpSU5LQUxZS3lJTUJFQWdEVUhZSzJvZ0RFRUJhallDQUFzZ0RVSGsxd0JxSWcwb0FnQWlEQVJBSUEwZ0RFRUJhallDQUFzZ0MwRUNhaUlMSUJkSERRQUxDeUFLUVFKQmxNUUFRUUFRRHdzZ0FDMEFSRUVCY1EwQUlBa2dBQ2dDRUVFQ0lBb1FHa0VDUndSQUFrQWdBQ2dDekFGQkFXb2dGMGNOQUNBWFJRMEFJQUFvQXB3QklReEJBQ0VMQTBBZ0RDQUxRWXdzYkdvaUNTZ0MxQ3RGQkVBZ0NTZ0MyQ3RGRFFnTElBdEJBV29pQ3lBWFJ3MEFDd3NnQ2tFQlFaWVNRUUFRRDBFQURBa0xJQUFvQWhBZ0RrRW9ha0VDRUJFZ0RpZ0NLQ0VMSUFBdEFFUkJBWEVOQWlBTFFkbi9BMGNOQVF3Q0N3c2dEaWdDS0NFTEN5QUxRZG4vQTBjTkFpQUFLQUlJUVlBQ1JnMENJQUJCZ0FJMkFnZ2dBRUVBTmdMTUFRd0NDeUFMS0FJWUVCQWdGaWdDS0NBVVFTaHNhaUlBUVFBMkFod2dBRUlBTndJVUlBcEJBVUdGSFVFQUVBOUJBQXdFQ3lBT0lBczJBaEFnQ2tFRVFlZlJBQ0FPUVJCcUVBOGdBQ0FMTmdMTUFTQU9RZG4vQXpZQ0tDQUFRWUFDTmdJSUN5QUFLQUxNQVNFTElBQW9BcHdCSVFrQ1FBSkFJQUF0QUVSQkFYRU5BQUpBQWtBZ0N5QVhUdzBBSUFrZ0MwR01MR3hxSVJNRFFDQVRLQUxjS3cwQklBQWdDMEVCYWlJTE5nTE1BU0FUUVl3c2FpRVRJQXNnRjBjTkFBc01BUXNnQ3lBWFJ3MEJDeUFJUVFBMkFnQU1BUXNDUUFKQUlBcEJBU0FKSUF0QmpDeHNhaUlSS0FLMEtBUi9RWncwQlNBUkxRQ0lMRUVDY1VVTkFnSkFJQkVvQXFnb0lnOUZCRUJCQUNFTURBRUxJQkVvQXF3b0lRbEJBQ0VNUVFBaEN5QVBRUVJQQkVBZ0QwRjhjU0VML1F3QUFBQUFBQUFBQUFBQUFBQUFBQUFBSVVCQkFDRVNBMEFnQ1NBU1FRTjBhaUlNUVJ4cUlBeEJGR29nREVFTWFpQU0vUWtDQlAxV0FnQUIvVllDQUFMOVZnSUFBeUJBL2E0QklVQWdFa0VFYWlJU0lBdEhEUUFMSUVBZ1FDQkEvUTBJQ1FvTERBME9Ed0FCQWdNQUFRSUQvYTRCSWtBZ1FDQkEvUTBFQlFZSEFBRUNBd0FCQWdNQUFRSUQvYTRCL1JzQUlRd2dDeUFQUmcwQkN3TkFJQWtnQzBFRGRHb29BZ1FnREdvaERDQUxRUUZxSWdzZ0QwY05BQXNMSUJFZ0RCQVVJZ2syQXJRb0lBa05BVUdYSGd0QkFCQVBJQXBCQVVIMVBFRUFFQTlCQUF3RkN5QVJJQXcyQXJ3b0lCRW9BcXdvSVFrZ0VTZ0NxQ2dpREFSQVFRQWhFa0VBSVFzRFFDQUpJQXRCQTNRaUZHb2lEU2dDQUNJUEJFQWdFU2dDdENnZ0Vtb2dEeUFOS0FJRUVCSWFJQkVvQXF3b0lCUnFJZ2tvQWdRaEx5QUpLQUlBRUJBZ0VTZ0NyQ2dpQ1NBVWFrSUFOd0lBSUM4Z0Vtb2hFaUFSS0FLb0tDRU1DeUFMUVFGcUlnc2dERWtOQUFzTElCRkJBRFlDcUNnZ0NSQVFJQkZCQURZQ3JDZ2dFU0FSS0FLMEtEWUNzQ2dnRVNBUktBSzhLRFlDdUNnTEFuOUJBQ0VvSUFBb0F0QUJJZ3NvQWh3aUppZ0NUQ0FBS0FMTUFTSUpRWXdzYkdvb0F0QXJJUnNnQ3lnQ0dDSVVLQUlZSVNjZ0N5Z0NGQ2dDQUNJZUlDWW9BZ1FnSmlnQ0RDSUxJQWtnQ1NBbUtBSVlJZ2x1SWd3Z0NXeHJiR29pRFNBVUtBSUFJZ2tnQ1NBTlNSc2lEellDQUNBZVFYOGdDeUFOYWlJSklBa2dEVWtiSWdzZ0ZDZ0NDQ0lKSUFrZ0Mwc2JJZ2syQWdnQ1FDQUpJQTlLSUE5QkFFNXhSUVJBSUFwQkFVR0JNMEVBRUE4TUFRc2dIaWdDRkNFUUlCNGdKaWdDQ0NBTUlDWW9BaEFpQzJ4cUlnOGdGQ2dDQkNJSklBa2dEMGtiSWd3MkFnUWdIa0YvSUFzZ0Qyb2lDU0FKSUE5Skd5SUxJQlFvQWd3aUNTQUpJQXRMR3lJSk5nSU1JQWtnREVvZ0RFRUFUbkZGQkVBZ0NrRUJRZHN5UVFBUUR3d0JDd0pBSUJzb0FnUUVRQ0FlS0FJUURRRkJBUXdEQ3lBS1FRRkIxU2hCQUJBUERBRUxBa0FDUUFOQUlDZEJBRFlDSkNBUUlDYzBBZ0FpTlVJQmZTSXhJQjQwQWdCOElEVi9QZ0lBSUJBZ0p6UUNCQ0kwUWdGOUlqSWdIalFDQkh3Z05IOCtBZ1FnRUNBeElCNDBBZ2g4SURWL1BnSUlJQjQwQWd3aE1TQVFJQ2cyQWhBZ0VDQXhJREo4SURSL1BnSU1JQkFnR3lnQ0JDSUxOZ0lVSUJCQkFTQUxJQ1lvQWxBaUNXc2dDU0FMU3hzMkFoZ2dFQ2dDTkJBUUlCQkJBRFlDUkNBUS9Rd0FBQUFBQUFBQUFBQUFBQUFBQUFBQS9Rc0NOQ0FMUVpnQmJDRU1Ba0FnRUNnQ0hDSUpSUVJBSUJBZ0RCQVVJZ2syQWh3Z0NVVU5CU0FRSUF3MkFpQWdDVUVBSUF3UUZSb01BUXNnRENBUUtBSWdUUTBBSUFrZ0RCQVhJZ3RGQkVBZ0NrRUJRWUFYUVFBUUR5QVFLQUljRUJBZ0VFSUFOd0ljREFVTElCQWdDellDSENBTElCQW9BaUFpQ1dwQkFDQU1JQWxyRUJVYUlCQWdERFlDSUFzZ0VDZ0NGQ0lMQkVBZ0cwR3dCMm9oSFNBYlFhd0dhaUVZSUJ0QkhHb2hGeUFRS0FJY0lScEJBQ0VyQTBBZ0drSi9JQXRCQVdzaUNhMGlNNFpDZjRVaU1pQVFOQUlBZkNBemg2Y2lGallDQUNBYUlESWdFRFFDQkh3Z000ZW5JaEUyQWdRZ0dpQXlJQkEwQWdoOElET0hJakduSWhRMkFnZ2dHaUF5SUJBMEFneDhJRE9ISWpTbklnMDJBZ3dnTWNSQ0FTQVlJQ3RCQW5RaURHb29BZ0FpSDYwaU1ZWjhRZ0Y5SURHSHB5QWZkQ0lQUVFCSURRUWdOTVJDZnlBTUlCMXFLQUlBSWlDdElqR0dRbitGZkNBeGg2Y2dJSFFpREVFQVNBMEVJQm9nREVGL0lDQjBJQkZ4SWhOcklDQjFRUUFnRFNBUlJ4c2lERFlDRkNBYUlBOUJmeUFmZENBV2NTSWlheUFmZFVFQUlCUWdGa2NiSWc4MkFoQUNRQ0FQUlEwQUlBK3RJQXl0ZmtJZ2lGQU5BQXdFQ3lBTUlBOXNJaU5CNTh5Wk0wOE5BeUFqUVNoc0lTRWdHaUFyQkg4Z0lFRUJheUVnSUI5QkFXc2hIeUFUckVJQmZFSUJpS2NoRXlBaXJFSUJmRUlCaUtjaElrRURCVUVCQ3pZQ0dDQWFRUnhxSVJWQ0FTQUxyU0kyaGlFM1FuOGdHeWdDRENJTElDQWdDeUFnU1JzaUxLMGlQSVpDZjRVaFBVSi9JQnNvQWdnaUN5QWZJQXNnSDBrYklpMnRJajZHUW4rRklUOUJBQ0VwQTBBQ2ZpQXJSUVJBSURJZ0VEUUNCSHdnTTRjaE9DQXlJQkEwQWdCOElET0hJVGxCQUNFTElESWlNU0U2SURNTUFRc2dOeUFwUVFGcUlndEJBWGF0SURPR1FuK0ZmQ0k2SUJBMEFnUjhJRGFISVRnZ055QUxRUUZ4clNBemhrSi9oWHdpTVNBUU5BSUFmQ0EyaHlFNUlEWUxJVHNnRURRQ0NDRTFJQkEwQWd3aE5DQVZJRGcrQWdRZ0ZTQTVQZ0lBSUJVZ0N6WUNFQ0FWSURRZ09ud2dPNGMrQWd3Z0ZTQXhJRFY4SUR1SFBnSUlRUUFoREFKQUlCc29BaFJGRFFBZ0MwVU5BRUVDUVFFZ0MwRURSaHNoREF0RUFBQUFBQUFBOEQ4aFFnSkFJQ2NvQWhnZ0RHb2dGeWdDQUNJTWF5SUxRWUFJVGdSQVJBQUFBQUFBQU9CL0lVSWdDMEgvRDBrRVFDQUxRZjhIYXlFTERBSUxSQUFBQUFBQUFQQi9JVUpCL1JjZ0N5QUxRZjBYVHh0Qi9nOXJJUXNNQVFzZ0MwR0JlRW9OQUVRQUFBQUFBQUJnQXlGQ0lBdEJ1SEJMQkVBZ0MwSEpCMm9oQ3d3QkMwUUFBQUFBQUFBQUFDRkNRZkJvSUFzZ0MwSHdhRTBiUVpJUGFpRUxDeUFWSUJjb0FnUzNSQUFBQUFBQUFFQS9va1FBQUFBQUFBRHdQNkFnUWlBTFFmOEhhcTFDTklhL29xSzJPQUlnSUJVZ0RDQWJLQUtrQm1wQkFXczJBaHdnRlNnQ0ZDRUxBa0FDUUFKQUlDTkZEUUFnQ3cwQUlCVWdJUkFVSWdzMkFoUWdDMFVFUUNBS1FRRkJsQlZCQUJBUERBb0xJQXRCQUNBaEVCVWFJQlVnSVRZQ0dBd0JDeUFoSUJVb0FoaExCRUFnQ3lBaEVCY2lERVVFUUNBS1FRRkJsQlZCQUJBUElCVW9BaFFRRUNBVlFnQTNBaFFNQ2dzZ0ZTQU1OZ0lVSUF3Z0ZTZ0NHQ0lMYWtFQUlDRWdDMnNRRlJvZ0ZTQWhOZ0lZQ3lBalJRMEJDeUFWS0FJVUlRdEJBQ0VrQTBBZ0N5QWtJQ1FnR2lnQ0VDSU1iaUlXSUF4c2F5SU5JQjkwSUNKcUlnOGdGU2dDQUNJTUlBd2dEMGdiSWhFMkFnQWdDeUFXSUNCMElCTnFJZzhnRlNnQ0JDSU1JQXdnRDBnYkloUTJBZ1FnQ3lBTlFRRnFJQjkwSUNKcUlnOGdGU2dDQ0NJTUlBd2dEMG9iSWcwMkFnZ2dDeUFXUVFGcUlDQjBJQk5xSWc4Z0ZTZ0NEQ0lNSUF3Z0Qwb2JJZ3cyQWd3Z0N5QS9JQTJzZkNBK2g2Y2dFU0F0ZFNJV2F5QXRkQ0F0ZFNJUE5nSVFJQXNnUFNBTXJId2dQSWVuSUJRZ0xIVWlFV3NnTEhRZ0xIVWlERFlDRkNBTUlBOXNJaVd0UWdhR1FpQ0lRZ0JTQkVBZ0NrRUJRZVVWUVFBUUR3d0pDeUFsUVFaMElRMENRQUovQWtBZ0N5Z0NHQ0lNRFFBZ0pVVU5BQ0FMSUEwUUZDSU1OZ0lZSUF4RkRRc2dERUVBSUEwUUZSb2dDMEVjYWd3QkN5QU5JQXNvQWh4TkRRRWdEQ0FORUJjaUQwVUVRQ0FMS0FJWUVCQWdDMElBTndJWUlBcEJBVUhqRWtFQUVBOE1Dd3NnQ3lBUE5nSVlJQThnQ3lnQ0hDSU1ha0VBSUEwZ0RHc1FGUm9nQzBFY2Fnc2dEVFlDQUFzZ0N5Z0NGQ0VOSUFzb0FoQWhEeUFMQW44Z0N5Z0NJQ0lNUlFSQUlBOGdEU0FLRUdNTUFRc2dEQ0FQSUEwZ0NoQmhDellDSUNBTEtBSVVJUTBnQ3lnQ0VDRVBJQXNDZnlBTEtBSWtJZ3hGQkVBZ0R5QU5JQW9RWXd3QkN5QU1JQThnRFNBS0VHRUxOZ0lrSUNVRVFFRUFJUklEUUNBU0lBc29BaEFpRFc0aEhBSkFJQXNvQWhnZ0VrRUdkR29pR1NnQ0FDSVVCRUFnR1NnQ09DRVBJQmtvQWdRaERDQVpLQUl3SVNvZ0dTZ0NQQkFRSUJuOURBQUFBQUFBQUFBQUFBQUFBQUFBQUFEOUN3SW9JQmxDQURjQ09DQVovUXdBQUFBQUFBQUFBQUFBQUFBQUFBQUEvUXNDR0NBWi9Rd0FBQUFBQUFBQUFBQUFBQUFBQUFBQS9Rc0NDQ0FaSUJRMkFnQWdHU0FxTmdJd0lDb0VRQ0FVUVFBZ0trRVliQkFWR2dzZ0dTQVBOZ0k0SUJrZ0REWUNCQXdCQ3lBWlFRcEJHQkFUSWd3MkFnQWdERVVOQ3lBWlFRbzJBakFMSUJrZ0VpQU5JQnhzYXlBV2FpSVVJQzEwSWc4Z0N5Z0NBQ0lNSUF3Z0QwZ2JOZ0lJSUJrZ0VTQWNhaUlOSUN4MElnOGdDeWdDQkNJTUlBd2dEMGdiTmdJTUlCa2dGRUVCYWlBdGRDSVBJQXNvQWdnaURDQU1JQTlLR3pZQ0VDQVpJQTFCQVdvZ0xIUWlEeUFMS0FJTUlnd2dEQ0FQU2hzMkFoUWdFa0VCYWlJU0lDVkhEUUFMQ3lBTFFTaHFJUXNnSkVFQmFpSWtJQ05IRFFBTEN5QVhRUWhxSVJjZ0ZVRWthaUVWSUNsQkFXb2lLU0FhS0FJWVNRMEFDeUFhUVpnQmFpRWFJQWtoQ3lBclFRRnFJaXNnRUNnQ0ZFa05BQXNMSUNkQk5Hb2hKeUFRUWN3QWFpRVFJQnRCdUFocUlSc2dLRUVCYWlJb0lCNG9BaEJKRFFBTFFRRU1Bd3NnQ2tFQlFaUVdRUUFRRHd3QkN5QUtRUUZCc3hGQkFCQVBDMEVBQzBVRVFDQUtRUUZCd2h0QkFCQVBRUUFNQkFzZ0FDZ0N6QUVoQ1NBT0lBQW9BbWdnQUNnQ2JHdzJBZ1FnRGlBSlFRRnFOZ0lBSUFwQkJFRysxd0FnRGhBUElBRWdBQ2dDekFFMkFnQWdDRUVCTmdJQUlBSUVRQ0FDSUFBb0F0QUJRUUFRVkNJQk5nSUFRUUFnQVVGL1JnMEVHZ3NnQXlBQUtBTFFBU2dDRkNnQ0FDSUJLQUlBTmdJQUlBUWdBU2dDQkRZQ0FDQUZJQUVvQWdnMkFnQWdCaUFCS0FJTU5nSUFJQWNnQVNnQ0VEWUNBQ0FBSUFBb0FnaEJnQUZ5TmdJSUMwRUJEQUlMSUFwQkFTQVNRUUFRRHdzZ0NrRUJRZVFiUVFBUUQwRUFDeUV3SUE1QjBBQnFKQUFnTUF2ZUVBSU5md0orQWtBZ0FDZ0NJQ0lGRFFBQ1FDQUFLQUlRSWdsQkJVb0VRQ0FKSVFNTUFRc0NRQUpBSUFBb0FoUWlBa0VGVGdSQUlBQW9BZ0FpQVNnQ0FDRUZJQUFnQVVFRWFqWUNBQ0FDUVFScklRY01BUXNnQWtFQVRBUkFRWDhoQlF3Q0N5QUFLQUlBSVFFQ2Z5QUNRUUZHQkVCQmZ5RUdRUUFNQVF0QmZ5RUdJQUpCQVdzaUEwRUJjU0VOQWtBZ0FrRUNSZ1JBUVFBaEJTQUNJUVFNQVFzZ0EwRitjU0VMUVFBaEJTQUJJUU1nQWlFRUEwQWdBQ0FEUVFGcU5nSUFJQU10QUFBaERDQUFJQU5CQW1vaUFUWUNBQ0FBSUFSQkFXczJBaFFnQXkwQUFTRURJQUFnQkVFQ2F5SUVOZ0lVSUFaQi93RWdCWFJCZjNOeElBd2dCWFJ5UVlEK0F5QUZkRUYvYzNFZ0F5QUZRUWh5ZEhJaEJpQUZRUkJxSVFVZ0FTRURJQWhCQW1vaUNDQUxSdzBBQ3dzZ0RRUkFJQUFnQVVFQmFpSUROZ0lBSUFFdEFBQWhBU0FBSUFSQkFXczJBaFFnQmtIL0FTQUZkRUYvYzNFZ0FTQUZkSEloQmlBRElRRUxJQUpCQTNSQkNHc0xJUVVnQUNBQlFRRnFOZ0lBSUFaQi93RWdCWFJCZjNOeElBRXRBQUJCRDNJZ0JYUnlJUVVMSUFBZ0J6WUNGQXNnQUNnQ0dDRUJJQUFnQlVFWWRpSUhRZjhCUmpZQ0dDQUFJQWtnQlVFUWRrSC9BWEVpQ0VIL0FVWWlDaUFGUVFoMlFmOEJjU0lMUWY4QlJpSU1JQUVnQlVIL0FYRWlCRUgvQVVZaUFtcHFhaUlCYTBFZ2FpSUROZ0lRSUFBZ0FDa0RDQ0FFUVFkQkNDQUNHM1FnQzNKQkIwRUlJQXdiZENBSWNrRUhRUWdnQ2h0MElBZHlyU0FCSUFsclFTQnFyWWFFTndNSVFRQWhCU0FEUVFaSURRRUxJQUFvQWh3aUFVRUNkRUdnblFGcUtBSUFJUUlDZmlBQUtRTUlJZzVDQUZNRVFFRU1JQUZCQVdvZ0FVRUxUaHNoQkNBRFFRRnJJUU5CZnlBQ2RFRi9jMEVCZENFQlFnRU1BUXNnQVVFQmEwRUFJQUZCQVVvYklRUWdEa0UvSUFKcnJZaW5RWDhnQW5SQmYzTnhRUUYwUVFGeUlRRWdBeUFDUVFGcUlnSnJJUU1nQXEwTElROGdBQ0FETmdJUUlBQWdCRFlDSENBQUlBNGdENFkzQXdnZ0FDQUJyQ0FBS1FNb1FrQ0RoRGNES0VFQklRVWdBMEVHU0EwQUlBQW9BaHdpQVVFQ2RFR2duUUZxS0FJQUlRSUNmaUFBS1FNSUlnNUNBRk1FUUVFTUlBRkJBV29nQVVFTFRoc2hCQ0FEUVFGcklRTkJmeUFDZEVGL2MwRUJkQ0VCUWdFTUFRc2dBVUVCYTBFQUlBRkJBVW9iSVFRZ0RrRS9JQUpycllpblFYOGdBblJCZjNOeFFRRjBRUUZ5SVFFZ0F5QUNRUUZxSWdKcklRTWdBcTBMSVE4Z0FDQUROZ0lRSUFBZ0JEWUNIQ0FBSUE0Z0Q0WTNBd2dnQUNBQUtRTW9RdjlBZ3lBQnJFSUhob1EzQXloQkFpRUZJQU5CQmtnTkFDQUFLQUljSWdGQkFuUkJvSjBCYWlnQ0FDRUNBbjRnQUNrRENDSU9RZ0JUQkVCQkRDQUJRUUZxSUFGQkMwNGJJUVFnQTBFQmF5RURRWDhnQW5SQmYzTkJBWFFoQVVJQkRBRUxJQUZCQVd0QkFDQUJRUUZLR3lFRUlBNUJQeUFDYTYySXAwRi9JQUowUVg5emNVRUJkRUVCY2lFQklBTWdBa0VCYWlJQ2F5RURJQUt0Q3lFUElBQWdBellDRUNBQUlBUTJBaHdnQUNBT0lBK0dOd01JSUFBZ0FDa0RLRUwvLzBDRElBR3NRZzZHaERjREtFRURJUVVnQTBFR1NBMEFJQUFvQWh3aUFVRUNkRUdnblFGcUtBSUFJUUlDZmlBQUtRTUlJZzVDQUZNRVFFRU1JQUZCQVdvZ0FVRUxUaHNoQkNBRFFRRnJJUU5CZnlBQ2RFRi9jMEVCZENFQlFnRU1BUXNnQVVFQmEwRUFJQUZCQVVvYklRUWdEa0UvSUFKcnJZaW5RWDhnQW5SQmYzTnhRUUYwUVFGeUlRRWdBeUFDUVFGcUlnSnJJUU1nQXEwTElROGdBQ0FETmdJUUlBQWdCRFlDSENBQUlBNGdENFkzQXdnZ0FDQUFLUU1vUXYvLy8wQ0RJQUdzUWhXR2hEY0RLRUVFSVFVZ0EwRUdTQTBBSUFBb0Fod2lBVUVDZEVHZ25RRnFLQUlBSVFJQ2ZpQUFLUU1JSWc1Q0FGTUVRRUVNSUFGQkFXb2dBVUVMVGhzaEJDQURRUUZySVFOQmZ5QUNkRUYvYzBFQmRDRUJRZ0VNQVFzZ0FVRUJhMEVBSUFGQkFVb2JJUVFnRGtFL0lBSnJyWWluUVg4Z0FuUkJmM054UVFGMFFRRnlJUUVnQXlBQ1FRRnFJZ0pySVFNZ0FxMExJUThnQUNBRE5nSVFJQUFnQkRZQ0hDQUFJQTRnRDRZM0F3Z2dBQ0FBS1FNb1F2Ly8vLzlBZ3lBQnJFSWNob1EzQXloQkJTRUZJQU5CQmtnTkFDQUFLQUljSWdGQkFuUkJvSjBCYWlnQ0FDRUNBbjRnQUNrRENDSU9RZ0JUQkVCQkRDQUJRUUZxSUFGQkMwNGJJUVFnQTBFQmF5RURRWDhnQW5SQmYzTkJBWFFoQVVJQkRBRUxJQUZCQVd0QkFDQUJRUUZLR3lFRUlBNUJQeUFDYTYySXAwRi9JQUowUVg5emNVRUJkRUVCY2lFQklBTWdBa0VCYWlJQ2F5RURJQUt0Q3lFUElBQWdBellDRUNBQUlBUTJBaHdnQUNBT0lBK0dOd01JSUFBZ0FDa0RLRUwvLy8vLy8wQ0RJQUd0UWlPR2hEY0RLRUVHSVFVZ0EwRUdTQTBBSUFBb0Fod2lBVUVDZEVHZ25RRnFLQUlBSVFJQ2ZpQUFLUU1JSWc1Q0FGTUVRRUVNSUFGQkFXb2dBVUVMVGhzaEJDQURRUUZySVFOQmZ5QUNkRUYvYzBFQmRDRUJRZ0VNQVFzZ0FVRUJhMEVBSUFGQkFVb2JJUVFnRGtFL0lBSnJyWWluUVg4Z0FuUkJmM054UVFGMFFRRnlJUUVnQXlBQ1FRRnFJZ0pySVFNZ0FxMExJUThnQUNBRE5nSVFJQUFnQkRZQ0hDQUFJQTRnRDRZM0F3Z2dBQ0FBS1FNb1F2Ly8vLy8vLzBDRElBR3RRaXFHaERjREtFRUhJUVVnQTBFR1NBMEFJQUFvQWh3aUFVRUNkRUdnblFGcUtBSUFJUUlDZmlBQUtRTUlJZzVDQUZNRVFFRU1JQUZCQVdvZ0FVRUxUaHNoQkNBRFFRRnJJUU5CZnlBQ2RFRi9jMEVCZENFQlFnRU1BUXNnQVVFQmEwRUFJQUZCQVVvYklRUWdEa0UvSUFKcnJZaW5RWDhnQW5SQmYzTnhRUUYwUVFGeUlRRWdBeUFDUVFGcUlnSnJJUU1nQXEwTElROGdBQ0FETmdJUUlBQWdCRFlDSENBQUlBNGdENFkzQXdnZ0FDQUFLUU1vUXYvLy8vLy8vLzlBZ3lBQnJVSXhob1EzQXloQkNDRUZDeUFBSUFWQkFXczJBaUFnQUNBQUtRTW9JZzVDQjRnM0F5Z2dEcWRCL3dCeEN5SUJBWDhnQUFSQUlBQW9BZ3dpQVFSQUlBRVFFQ0FBUVFBMkFnd0xJQUFRRUFzTGlnRUNBWDRGZndKQUlBQkNnSUNBZ0JCVUJFQWdBQ0VDREFFTEEwQWdBVUVCYXlJQklBQkNDb0FpQWtMMkFYNGdBSHluUVRCeU9nQUFJQUJDLy8vLy81OEJWaUVHSUFJaEFDQUdEUUFMQ3lBQ1FnQlNCRUFnQXFjaEF3TkFJQUZCQVdzaUFTQURRUXB1SWdSQjlnRnNJQU5xUVRCeU9nQUFJQU5CQ1VzaEJ5QUVJUU1nQncwQUN3c2dBUXY1NGdFRWVuOEdld2grQVgwakFFRVFheUpPSkFBQ1FDQUFMUUFJUVlBQmNVVU5BQ0FBS0FMTUFTQUJSdzBBSUFBb0Fwd0JJQUZCakN4c2FpSlBLQUxjS3lJVlJRUkFJRThRTGd3QkN5QUFLQUxJQVJvZ0FDZ0MwQUVoR1NBQUtBSk1JZ2RGQkVBZ0FDZ0NTQ0VIQ3lBSEtBSUFJUVlnQnlnQ0JDRUxJQWNvQWdnaENTQUhLQUlNSVEwZ0FDZ0NQQ0VISUFBb0FrQWhDQ0JQS0FMZ0t5RUtJd0JCRUdzaVFDUUFJQmtnQVRZQ0pDQVpLQUljS0FKTUlRd2dHVUVCTmdKQUlCa2dEVFlDUENBWklBazJBamdnR1NBTE5nSTBJQmtnQmpZQ01DQVpJQXdnQVVHTUxHeHFOZ0lnSUJrb0FrUVFFRUVBSVFzZ0dVRUFOZ0pFQWtBZ0J3UkFRUVFnR1NnQ0dDZ0NFQkFUSWd0RkJFQU1BZ3RCQUNFTlFRQWhDU0FIUVFSUEJFQWdCMEY4Y1NFTVFRQWhBUU5BSUFzZ0NDQUpRUUowYWlJR0tBSUFRUUowYWtFQk5nSUFJQXNnQmlnQ0JFRUNkR3BCQVRZQ0FDQUxJQVlvQWdoQkFuUnFRUUUyQWdBZ0N5QUdLQUlNUVFKMGFrRUJOZ0lBSUFsQkJHb2hDU0FCUVFScUlnRWdERWNOQUFzTElBZEJBM0VpQVFSQUEwQWdDeUFJSUFsQkFuUnFLQUlBUVFKMGFrRUJOZ0lBSUFsQkFXb2hDU0FOUVFGcUlnMGdBVWNOQUFzTElCa2dDellDUkFzQ1FBSkFJQmtvQWhnaUJpZ0NFQ0lOUlEwQVFRQWhDUUpBQTBBQ1FDQUxCRUFnQ3lBSlFRSjBhaWdDQUVVTkFRc2dCaWdDR0NBSlFUUnNhaUlCTlFJRUlvWUJRZ0Y5SW9vQklCazFBang4SUlZQmdDR0xBU0FCTlFJQUlvY0JRZ0Y5SW9nQklCazFBamg4SUljQmdDR01BU0NLQVNBWk5RSTBmQ0NHQVlBaGhnRWdHU2dDRkNnQ0FDZ0NGQ0FKUWN3QWJHb2lBU2dDRkNBQktBSVlheUlIUVI5TERRQUNRQ0NJQVNBWk5RSXdmQ0NIQVlDbklnZ2dBU2dDQUdzaURFRUFJQWdnREU4YklBZDJEUUFnaGdHbklnZ2dBU2dDQkdzaURFRUFJQWdnREU4YklBZDJEUUFnQVNnQ0NDSUlJSXdCcDJzaURFRUFJQWdnREU4YklBZDJEUUFnQVNnQ0RDSUJJSXNCcDJzaUNFRUFJQUVnQ0U4YklBZDJSUTBCQ3lBWlFRQTJBa0FNQWdzZ0NVRUJhaUlKSUExSERRQUxJQmtvQWtCRkRRQWdEVVVOQVVFQUlRMERRQ0FaS0FJVUtBSUFLQUlVSUExQnpBQnNhaUlCS0FJY0lBRW9BaGhCbUFGc2FpSUhRWlFCYXlnQ0FDRUdJQWRCakFGcktBSUFJUXNnQjBHWUFXc29BZ0FoQ1NBSFFaQUJheWdDQUNFSUFrQWdHU2dDUkNJSEJFQWdCeUFOUVFKMGFpZ0NBRVVOQVFzZ0N5QUdheUVISUFnZ0NXc2hDUUpBSUFZZ0MwWU5BQ0FIclNBSnJYNUNJSWhRRFFBZ0JVRUJRWlFXUVFBUUR3d0dDeUFISUFsc0lnZEJnSUNBZ0FSUEJFQWdCVUVCUVpRV1FRQVFEd3dHQ3lBQklBZEJBblFpQnpZQ0xBSi9Ba0FDUUFKQUlBRW9BaVFpQmdSQUlBY2dBU2dDTUUwTkJTQUJLQUlvRFFFTElBRWdCeEFZSWdjMkFpUWdCMEVCSUFFb0Fpd2lCeHRGRFFFZ0FTQUhOZ0l3SUFGQktHb01Bd3NnQmhBUUlBRWdBU2dDTEJBWUlnYzJBaVFnQncwQklBRkJBRFlDTUNBQlFnQTNBaWdMSUFWQkFVR1VGa0VBRUE4TUJ3c2dBU0FCS0FJc05nSXdJQUZCS0dvTFFRRTJBZ0FMSUExQkFXb2lEU0FaS0FJWUlnWW9BaEJKRFFBTERBRUxJQTFGRFFBZ0JpZ0NHQ0VQSUJrb0FoUW9BZ0FvQWhRaEZrRUFJUUVEUUFKQUlBc0VRQ0FMSUFGQkFuUnFLQUlBUlEwQkN5QVdJQUZCekFCc2FpSUhJQWNvQWdBaUNTQVBJQUZCTkd4cUlnZzFBZ0FpaGdGQ0FYMGlpZ0VnR1RVQ01Id2doZ0dBcHlJTUlBa2dERXNiSWdrMkFqZ2dCeUFIS0FJRUlnd2dDRFVDQkNLSEFVSUJmU0tMQVNBWk5RSTBmQ0NIQVlDbklnZ2dDQ0FNU1JzaUNEWUNQQ0FISUFjb0FnZ2lEQ0NLQVNBWk5RSTRmQ0NHQVlDbkloY2dEQ0FYU1JzaUREWUNRQ0FISUFjb0Fnd2lGeUNMQVNBWk5RSThmQ0NIQVlDbklnNGdEaUFYU3hzaUZ6WUNSQ0FKSUF4TERRTWdDQ0FYU3cwRElBY29BaFFpRGtVTkFDQU9yU0dMQVNBWHJTR0lBU0FNclNHTUFTQUlyU0dOQVNBSnJTR0pBU0FIS0FJY0lRbENBQ0dIQVFOQUlBa2dod0duSWdoQm1BRnNhaUlIUW44Z0RpQUlRWDl6YXEwaWhnR0dRbitGSW9vQklJZ0JmQ0NHQVlnK0FwUUJJQWNnaWdFZ2pBRjhJSVlCaUQ0Q2tBRWdCeUNLQVNDTkFYd2doZ0dJUGdLTUFTQUhJSWtCSUlvQmZDQ0dBWWcrQW9nQklJY0JRZ0Y4SW9jQklJc0JVZzBBQ3dzZ0FVRUJhaUlCSUExSERRQUxDeUJBUVFBMkFnZ2dHU2dDSENFQlFRRkJDQkFUSWhzRVFDQWJJQUUyQWdRZ0d5QUdOZ0lBQ3lBYlJRMEJJQmtvQWlRaEVTQVpLQUlVS0FJQUlTQWpBRUh3QUdzaUV5UUFJQkZCakN4c0lnRWdHeWdDQkNJSUtBSk1haUljS0FLa0F5RW9BbjhnR3lnQ0FDSWVJUmNnQlNFelFRQWhEU01BUVNCcklnOGtBQ0FCSUFnb0FreHFJaDBvQXFRRElSZ0NRQ0FYS0FJUUloWkJrQVJzRUJRaURFVU5BQUpBSUJaQkFuUVFGQ0lMUlFSQUlBd2hDd3dCQ3dKL0lBZ29Ba3dnRVVHTUxHeHFJZ2tvQXFRRElocEJBV29pQVVId0FSQVRJZ2NFUUFKQUlBRUVRQ0FYS0FJUUlRNGdCeUVCQTBBZ0FTQXpOZ0xzQVNBQklBNUJFQkFUSWdZMkFzZ0JJQVpGRFFJZ0FTQVhLQUlRSWg4MkFzUUJRUUFoQmtFQUlRNGdId1JBQTBBZ0FTZ0N5QUVnQmtFRWRHb2lEaUFKS0FMUUt5QUdRYmdJYkdvaUh5Z0NCRUVRRUJNaUlUWUNEQ0FoUlEwRUlBNGdIeWdDQkRZQ0NDQUdRUUZxSWdZZ0Z5Z0NFQ0lPU1EwQUN3c2dBVUh3QVdvaEFTQVNJQnBHSVhNZ0VrRUJhaUVTSUhORkRRQUxDeUFIREFJTElBY29BZ1FpQVFSQUlBRVFFQ0FIUVFBMkFnUUxJQWNoQVVFQUlRa0RRQ0FCS0FMSUFTSUdCRUJCQUNFT0lBRW9Bc1FCSWhJRWZ3TkFJQVlvQWd3aUh3UkFJQjhRRUNBR1FRQTJBZ3dnQVNnQ3hBRWhFZ3NnQmtFUWFpRUdJQTVCQVdvaURpQVNTUTBBQ3lBQktBTElBUVVnQmdzUUVDQUJRUUEyQXNnQkN5QUJRZkFCYWlFQklBa2dHa1loZENBSlFRRnFJUWtnZEVVTkFBc2dCeEFRQzBFQUN5SUhCRUFDUUNBV1JRMEFRUUFoQ1NBTUlRWWdGa0VFVHdSQUlBWWdGa0Y4Y1NJSlFaQUViR29oQmlBTUlRRURRQ0FMSUJCQkFuUnFJQUg5RWYwTUFBQUFBQkFDQUFBZ0JBQUFNQVlBQVAydUFmMExBZ0FnQVVIQUVHb2hBU0FRUVFScUloQWdDVWNOQUFzZ0NTQVdSZzBCQ3dOQUlBc2dDVUVDZEdvZ0JqWUNBQ0FHUVpBRWFpRUdJQWxCQVdvaUNTQVdSdzBBQ3dzZ0N5RU9RUUFoRWlBSUtBSk1JQkZCakN4c2FpZ0MwQ3NoQVNBWEtBSVlJUWtnRHlBSUtBSUVJQWdvQWd3Z0VTQVJJQWdvQWhnaUJtNGlDeUFHYkd0c2FpSUdJQmNvQWdBaUVDQUdJQkJMR3pZQ0ZDQVBRWDhnQmlBSUtBSU1haUlRSUFZZ0VFc2JJZ1lnRnlnQ0NDSVFJQVlnRUVrYk5nSVFJQThnQ0NnQ0NDQUlLQUlRSUF0c2FpSUdJQmNvQWdRaUN5QUdJQXRMR3pZQ0RDQVBRWDhnQmlBSUtBSVFhaUlMSUFZZ0Mwc2JJZ1lnRnlnQ0RDSUxJQVlnQzBrYk5nSUlJQTlCQURZQ0dDQVBRUUEyQWh3Z0QwSC8vLy8vQnpZQ0JDQVBRZi8vLy84SE5nSUFJQmNvQWhBRVFBTkFJQTRFZnlBT0lCSkJBblJxS0FJQUJVRUFDeUVMSUFrMUFnUWloZ0ZDQVgwaWlnRWdEelVDQ0h3Z2hnR0FJWXNCSUFrMUFnQWlod0ZDQVgwaWlBRWdEelVDRUh3Z2h3R0FJWXdCSUlvQklBODFBZ3g4SUlZQmdDR0dBU0NJQVNBUE5RSVVmQ0NIQVlBaGh3RWdBU2dDQkNJSUlBOG9BaHhMQkVBZ0R5QUlOZ0ljSUFFb0FnUWhDQXNnQ0FSQUlJc0JRdi8vLy84UGd5R0tBU0NNQVVMLy8vLy9ENE1oaXdFZ2hnRkMvLy8vL3crRElZZ0JJSWNCUXYvLy8vOFBneUdNQVNBQlFiQUhhaUVmSUFGQnJBWnFJU0ZCQUNFYUEwQWdIeUFhUVFKMEloQnFLQUlBSVFZZ0VDQWhhaWdDQUNFUlFRQWhFQ0FMQkVBZ0N5QUdOZ0lFSUFzZ0VUWUNBQ0FMUVFocUlSQUxBa0FnRVNBSVFRRnJJZ2hxSWd0Qkgwc05BQ0FKS0FJQUlpSkJmeUFMZGtzTkFDQVBJQThvQWdRaUp5QWlJQXQwSWdzZ0N5QW5TeHMyQWdRTEFrQWdCaUFJYWlJTFFSOUxEUUFnQ1NnQ0JDSWlRWDhnQzNaTERRQWdEeUFQS0FJQUlpY2dJaUFMZENJTElBc2dKMHNiTmdJQUMwRUFJUXNnaWdGQ2Z5QUlyU0tHQVlaQ2Y0VWlod0Y4SUlZQmlDS05BVUwvLy8vL0Q0TkNBU0FHclNLSkFZWjhRZ0Y5SUlrQmlLY2dod0VnaUFGOElJWUJpS2NpSWlBR2RtdEJmeUFHZG5GQkFDQWlJSTBCcDBjYklRWWdod0VnaXdGOElJWUJpQ0tOQVVMLy8vLy9ENE5DQVNBUnJTS0pBWVo4UWdGOUlJa0JpS2NnaHdFZ2pBRjhJSVlCaUtjaUlpQVJkbXRCZnlBUmRuRkJBQ0FpSUkwQnAwY2JJUkVnRUFSQUlCQWdCallDQkNBUUlCRTJBZ0FnRUVFSWFpRUxDeUFHSUJGc0lnWWdEeWdDR0VzRVFDQVBJQVkyQWhnTElCcEJBV29pR2lBQktBSUVTUTBBQ3dzZ0NVRTBhaUVKSUFGQnVBaHFJUUVnRWtFQmFpSVNJQmNvQWhCSkRRQUxDeUFZUVFGcUlTRWdEeWdDSENFUklBOG9BaGdoRWlBSFFRQTJBZ1FDUUNBZEtBSUlRUUZxSWdHdElCRWdFaUFXYkNJaWJDSWFyWDVDSUloUUJFQWdCeUFCSUJwc0lnRTJBZ2dnQnlBQlFRSVFFeUlCTmdJRUlBRU5BUXNnREJBUUlBNFFFQ0FIS0FJRUlnRUVRQ0FCRUJBZ0IwRUFOZ0lFQ3lBaFJRUkFJQWNoQ3d3REMwRUFJUXNnQnlFQkEwQWdBU2dDeUFFaUNRUkFRUUFoQmlBQktBTEVBU0lRQkg4RFFDQUpLQUlNSWdnRVFDQUlFQkFnQ1VFQU5nSU1JQUVvQXNRQklSQUxJQWxCRUdvaENTQUdRUUZxSWdZZ0VFa05BQXNnQVNnQ3lBRUZJQWtMRUJBZ0FVRUFOZ0xJQVFzZ0FVSHdBV29oQVNBTElCaEdJWFVnQzBFQmFpRUxJSFZGRFFBTElBY2hDd3dDQ3lBWEtBSVlJUmNnQnlBUEtBSVVJaWMyQXN3QklBY2dEeWdDRENJd05nTFFBU0FISUE4b0FoQWlMVFlDMUFFZ0J5QVBLQUlJSWlzMkF0Z0JJQWNnR2pZQ0RDQUhJQ0kyQWhBZ0J5QVNOZ0lVUVFFaEh5QUhRUUUyQWhnZ0ZnUkFJQWNvQXNnQklRRkJBQ0VJSUJjaEN3TkFJQTRnQ0VFQ2RHb29BZ0FoQ1NBQklBc29BZ0EyQWdBZ0FTQUxLQUlFTmdJRUFrQWdBU2dDQ0NJTlJRMEFJQUVvQWd3aEJpQU5RUUZIQkVBZ0RVRitjU0V2UVFBaEVBTkFJQVlnQ1NnQ0FEWUNBQ0FHSUFrb0FnUTJBZ1FnQmlBSktBSUlOZ0lJSUFZZ0NTZ0NERFlDRENBR0lBa29BaEEyQWhBZ0JpQUpLQUlVTmdJVUlBWWdDU2dDR0RZQ0dDQUdJQWtvQWh3MkFod2dCa0VnYWlFR0lBbEJJR29oQ1NBUVFRSnFJaEFnTDBjTkFBc0xJQTFCQVhGRkRRQWdCaUFKS0FJQU5nSUFJQVlnQ1NnQ0JEWUNCQ0FHSUFrb0FnZzJBZ2dnQmlBSktBSU1OZ0lNQ3lBTFFUUnFJUXNnQVVFUWFpRUJJQWhCQVdvaUNDQVdSdzBBQ3dzZ0lVRUJTd1JBSUFjaERRTkFJQTBnS3pZQ3lBTWdEU0F0TmdMRUF5QU5JREEyQXNBRElBMGdKellDdkFNZ0RVRUJOZ0tJQWlBTklCSTJBb1FDSUEwZ0lqWUNnQUlnRFNBYU5nTDhBU0FXQkVBZ0RTZ0N1QU1oQVVFQUlRZ2dGeUVMQTBBZ0RpQUlRUUowYWlnQ0FDRUpJQUVnQ3lnQ0FEWUNBQ0FCSUFzb0FnUTJBZ1FDUUNBQktBSUlJaUZGRFFBZ0FTZ0NEQ0VHSUNGQkFVY0VRQ0FoUVg1eElTOUJBQ0VRQTBBZ0JpQUpLQUlBTmdJQUlBWWdDU2dDQkRZQ0JDQUdJQWtvQWdnMkFnZ2dCaUFKS0FJTU5nSU1JQVlnQ1NnQ0VEWUNFQ0FHSUFrb0FoUTJBaFFnQmlBSktBSVlOZ0lZSUFZZ0NTZ0NIRFlDSENBR1FTQnFJUVlnQ1VFZ2FpRUpJQkJCQW1vaUVDQXZSdzBBQ3dzZ0lVRUJjVVVOQUNBR0lBa29BZ0EyQWdBZ0JpQUpLQUlFTmdJRUlBWWdDU2dDQ0RZQ0NDQUdJQWtvQWd3MkFnd0xJQXRCTkdvaEN5QUJRUkJxSVFFZ0NFRUJhaUlJSUJaSERRQUxDeUFOSUEwcEFnUTNBdlFCSUJnZ0gwY2hkaUFOUWZBQmFpRU5JQjlCQVdvaEh5QjJEUUFMQ3lBTUVCQWdEaEFRSUIwb0FxUURJUXNDUUNBZExRQ0lMRUVFY1FSQUlBdEJmMFlOQVNBZFFhZ0RhaUVHSUIwb0FnZ2hBVUVBSVJBZ0J5RUpBMEFnQmlnQ0pDRU5JQWxCQVRZQ0xDQUpJQTAyQWxRZ0NTQUdLQUlBTmdJd0lBWW9BZ1FoRFNBSlFnQTNBa1FnQ1NBTk5nSTBJQWtnQmlnQ0REWUNQQ0FKSUFZb0FoQTJBa0FnQmlnQ0NDRU5JQWtnRWpZQ1RDQUpJQTBnQVNBQklBMUxHellDT0NBR1FaUUJhaUVHSUFsQjhBRnFJUWtnQ3lBUVJpRjNJQkJCQVdvaEVDQjNSUTBBQ3d3QkN5QUxRWDlHRFFBZ0hTZ0NDQ0VHSUIwb0FnUWhEU0FISVFrZ0N3UkFJQXRCQVdwQmZuRWhDRUVBSVFFRFFDQUpRZ0EzQWtRZ0NVRUFOZ0kwSUFsQ0FUY0NMQ0FKSUEwMkFsUWdDU0FSTmdJOElBa2dEVFlDeEFJZ0NTQVNOZ0pNSUFrZ0JqWUNPQ0FKUWdBM0FyUUNJQWxCQURZQ3BBSWdDVUlCTndLY0FpQUpJQkUyQXF3Q0lBa2dCallDcUFJZ0NTQVNOZ0s4QWlBSklBa29Bc1FCTmdKQUlBa2dDU2dDdEFNMkFyQUNJQWxCNEFOcUlRa2dBVUVDYWlJQklBaEhEUUFMQ3lBTFFRRnhEUUFnQ1VJQU53SkVJQWxCQURZQ05DQUpRZ0UzQWl3Z0NTQU5OZ0pVSUFrZ0VUWUNQQ0FKSUJJMkFrd2dDU0FHTmdJNElBa2dDU2dDeEFFMkFrQUxJQWNoRFF3Q0N5QU1FQkFMSUFzUUVBc2dEMEVnYWlRQVFRQWdEU0lIUlEwQUdpQW9RUUZxSVE0Z0ZTRWRJQWNoQ3dKQUFrQURRQ0FMS0FKVVFYOUdEUUlnSGlnQ0VFRUNkQkFVSWdGRkRRSWdBVUVCSUI0b0FoQkJBblFRRlNFSklBc1FWd1JBQTBBZ0lDZ0NGQ0VJQWtBQ1FDQUxLQUlvSUJ3b0FneFBEUUFnQ3lnQ0lDSUJJQWdnQ3lnQ0hFSE1BR3hxSWdZb0FoaFBEUUFnQmlnQ0hDQUJRWmdCYkdvaURTZ0NHRVVOQUNBTlFSeHFJUWhCQUNFQkFrQURRQ0FaSUFzb0Fod2dDeWdDSUNBSUlBRkJKR3hxSWdZb0FoQWdCaWdDRkNBTEtBSWtRU2hzYWlJR0tBSUFJQVlvQWdRZ0JpZ0NDQ0FHS0FJTUVEbEZCRUFnQVVFQmFpSUJJQTBvQWhoSkRRRU1BZ3NMSUFrZ0N5Z0NIRUVDZEdwQkFEWUNBQ0FUUVFBMkFtZ2dHeWdDQkNBZ0tBSVVJQndnQ3lBVFFld0FhaUFkSUJOQjZBQnFJQW9nTXhCV1JRMEdJQXNvQWlBaENDQUxLQUljSVJZZ0V5Z0NhQ0VhSUJNb0Ftd0VRQ0FUUVFBMkFtZ2dJQ2dDRkNBV1Fjd0FiR29vQWh3Z0NFR1lBV3hxSWg4b0FoZ2lBUVIvSUFvZ0dtc2hHQ0FLSUIxcUlTRWdIMEVjYWlFTVFRQWhFVUVBSVE4Z0dpQWRhaUlpSVJJRFFBSkFJQXdvQWdnZ0RDZ0NBRVlOQUNBTUtBSU1JQXdvQWdSR0RRQWdEQ2dDRkNBTEtBSWtRU2hzYWlJR0tBSVVJQVlvQWhCc0lpaEZEUUFnQmlnQ0dDRUJRUUFoRmdOQUlBOEVRQ0FCUVFBMkFqUUxJQUVvQWlRaUZ3UkFJQUVvQWdBaENBSkFJQUVnQVNnQ0tDSUdCSDhnQ0NBR1FSaHNhaUlJUVJScktBSUFJQWhCREdzb0FnQkhCRUFnQ0VFWWF5RUlEQUlMSUFaQkFXb0ZRUUVMTmdJb0N3SkFBMEFDUUFKQUFrQWdDQ2dDRkNJTklCSkJmM05MRFFBZ0R3MEFJQTBnRW1vZ0lVME5BUXNnQ3lnQ0hDRUdJQXNvQWlBaEZ5QUxLQUlrSVE4Z0d5Z0NCQ2dDYUFSQUlCTWdCallDV0NBVElCYzJBbFFnRXlBUk5nSlFJQk1nRHpZQ1RDQVRJQlkyQWtnZ0V5QVlOZ0pFSUJNZ0RUWUNRQ0F6UVFGQjh1MEFJQk5CUUdzUUR3d1JDeUFUSUFZMkFqZ2dFeUFYTmdJMElCTWdFVFlDTUNBVElBODJBaXdnRXlBV05nSW9JQk1nR0RZQ0pDQVRJQTAyQWlBZ00wRUNRZkx0QUNBVFFTQnFFQThnQVVFQU5nSTBJQWdnQ0NnQ0VDSUdJQWdvQWdScU5nSUVJQUVnQVNnQ0pDSU5JQVpySWhjMkFpUkJBU0VQSUFZZ0RVWU5BU0FCSUFFb0FpaEJBV29pQ0RZQ0tBd0RDeUFCS0FJRUlSQWdBU2dDTkNJUElBRW9BamhIQkg4Z0Z3VWdFQ0FQUVFGMFFRRnlJZ1pCQTNRUUZ5SVFSUVJBSUROQkFVR0FDRUVBRUE4TUVRc2dBU0FHTmdJNElBRWdFRFlDQkNBQktBSTBJUThnQ0NnQ0ZDRU5JQUVvQWlRTElRWWdFQ0FQUVFOMGFpSVhJQTAyQWdRZ0Z5QVNOZ0lBSUFFZ0QwRUJhallDTkNBSUlBZ29BZ0FnRFdvMkFnQWdDQ0FJS0FJUUloQWdDQ2dDQkdvaUR6WUNCQ0FCSUFZZ0VHc2lGellDSkNBSUlBODJBZ2dnRFNBU2FpRVNRUUFoRHlBR0lCQkdEUUFnQVNBQktBSW9RUUZxTmdJb0lBaEJHR29oQ0FzZ0Z3MEFDeUFCS0FJb0lRZ0xJQUVnQ0RZQ0xBc2dBVUZBYXlFQklCWkJBV29pRmlBb1J3MEFDeUFmS0FJWUlRRUxJQXhCSkdvaERDQVJRUUZxSWhFZ0FVa05BQXNnQ3lnQ0hDRVdJQXNvQWlBaENDQVlJQklnSW1zZ0R4c0ZRUUFMSUJwcUlSb0xJQjRvQWhnZ0ZrRTBiR29pQVNBSUlBRW9BaVFpQVNBQklBaEpHellDSkF3Q0N5QWdLQUlVSVFnTElCTkJBRFlDYUNBYktBSUVJQWdnSENBTElCTkI3QUJxSUIwZ0UwSG9BR29nQ2lBekVGWkZEUVFnQ3lnQ0hDRVdJQk1vQW1naEdpQVRLQUpzUlEwQUFrQWdJQ2dDRkNBV1Fjd0FiR29vQWh3Z0N5Z0NJQ0lpUVpnQmJHb2lBU2dDR0NJb1JRUkFRUUFoRnd3QkN5QUtJQnBySVJBZ0FVRWNhaUVNSUFzb0FpUWhJVUVBSVJkQkFDRVlBMEFDUUNBTUtBSUlJQXdvQWdCR0RRQWdEQ2dDRENBTUtBSUVSZzBBSUF3b0FoUWdJVUVvYkdvaUFTZ0NGQ0FCS0FJUWJDSW5SUTBBSUFFb0FoZ2hFVUVBSVI4RFFDQVJLQUlrSWdFRVFDQVJLQUlBSVFnQ1FDQVJJQkVvQWlnaUVnUi9JQWdnRWtFWWJHb2lDRUVVYXlnQ0FDQUlRUXhyS0FJQVJ3UkFJQWhCR0dzaENBd0NDeUFTUVFGcUJVRUJDeUlTTmdJb0N3SkFBa0FnQ0NnQ0ZDSVBJQmRxSWcwZ0Qwa05BQ0FOSUJCTERRQURRQ0FOSVJjZ0NDQUlLQUlRSWcwZ0NDZ0NCR28yQWdRZ0FTQU5heUVHSUFFZ0RVWU5BaUFSSUJKQkFXb2lFallDS0NBSUtBSXNJZzhnRjJvaURTQVBUd1JBSUFoQkdHb2hDQ0FHSVFFZ0RTQVFUUTBCQ3dzZ0VTQUdOZ0lrQ3lBYktBSUVLQUpvSVFFZ0V5QVdOZ0lZSUJNZ0lqWUNGQ0FUSUJnMkFoQWdFeUFoTmdJTUlCTWdIellDQ0NBVElCQTJBZ1FnRXlBUE5nSUFJRE5CQVVFQ0lBRWJRWjN0QUNBVEVBOGdBUTBLSUFzb0Fod2hGZ3dGQ3lBUklBWTJBaVFMSUJGQlFHc2hFU0FmUVFGcUloOGdKMGNOQUFzTElBeEJKR29oRENBWVFRRnFJaGdnS0VjTkFBc0xJQmNnR21vaEdnc0NRQ0FKSUJaQkFuUnFLQUlBUlEwQUlCNG9BaGdnRmtFMGJHb2lBU2dDSkEwQUlBRWdJQ2dDRkNBV1Fjd0FiR29vQWhoQkFXczJBaVFMSUFvZ0dtc2hDaUFhSUIxcUlSMGdDeEJYRFFBTEN5QUpFQkFnQzBId0FXb2hDeUFqUVFGcUlpTWdIQ2dDcEFOTkRRQUxJQWNnRGhBNklFQWdIU0FWYXpZQ0NFRUJEQUlMSUFjZ0RoQTZJQWtRRUVFQURBRUxJQWNnRGhBNlFRQUxJWGdnRTBId0FHb2tBQ0FiRUN3Z2VFVU5BU0FaS0FJZ0tBTFFLeUVKSUJrb0FoUW9BZ0FpRmlnQ0ZDRWRJRUJCQVRZQ0RFRUFJUTFCQUNFVklCa29BaUFpQVNnQ0RDQUJLQUlJUmdSQUlBa29BaEJCQkhaQkFYRWhGUXNDUUNBV0tBSVFJakZGRFFBRFFBSkFJQmtvQWtRaUFRUkFJQUVnRFVFQ2RHb29BZ0JGRFFFTElFQkJER29oRTBFQUlURUNRQ0FkS0FJWUlnRkZEUUFnR1NnQ0xDRVFBMEFnSFNnQ0hDQXhRWmdCYkdvaURDZ0NHQ0lMQkVBZ0RFRWNhaUVTSUF3b0FoUWhBU0FNS0FJUUlSZEJBQ0VPQTBBZ0FTQVhiQVJBSUJJZ0RrRWtiR29oRDBFQUlRZ0RRQ0FaSUIwb0FoQWdNU0FQS0FJUUlBOG9BaFFnQ0VFb2JHb2lCeWdDQUNBSEtBSUVJQWNvQWdnZ0J5Z0NEQkE1SVFZZ0J5Z0NGQ0lMSUFjb0FoQWlDbXdoQVFKQUlBWUVRQ0FCUlEwQlFRQWhDZ05BQWtBZ0dTQWRLQUlRSURFZ0R5Z0NFQ0FIS0FJWUlBcEJCblJxSWdZb0FnZ2dCaWdDRENBR0tBSVFJQVlvQWhRUU9VVUVRQ0FHS0FJOElnRkZEUUVnQVJBUUlBWkJBRFlDUEF3QkN5QVpLQUpBUlFSQUlBWW9BandOQVNBR0tBSVFJQVlvQWdoR0RRRWdCaWdDRkNBR0tBSU1SZzBCQzBFQlFTd1FFeUlCUlFSQUlFQkJBRFlDREF3S0N5QVpLQUpBSVFzZ0FVRUFOZ0lrSUFFZ0V6WUNIQ0FCSUFrMkFoUWdBU0FkTmdJUUlBRWdEellDRENBQklBWTJBZ2dnQVNBeE5nSUVJQUVnQ3pZQ0FDQUJJQlUyQWlnZ0FTQXpOZ0lnSUFFZ0VDZ0NCRUVCU2pZQ0dDQVFRUTRnQVJBdElFQW9BZ3hGRFFrTElBcEJBV29pQ2lBSEtBSVVJQWNvQWhCc1NRMEFDd3dCQ3lBQlJRMEFRUUFoRndOQUlBY29BaGdnRjBFR2RHb2lBU2dDUENJR0JFQWdCaEFRSUFGQkFEWUNQQ0FIS0FJUUlRb2dCeWdDRkNFTEN5QVhRUUZxSWhjZ0NpQUxiRWtOQUFzTElBaEJBV29pQ0NBTUtBSVVJZ0VnRENnQ0VDSVhiRWtOQUFzZ0RDZ0NHQ0VMQ3lBT1FRRnFJZzRnQzBrTkFBc2dIU2dDR0NFQkN5QXhRUUZxSWpFZ0FVa05BQXNMSUVBb0FneEZEUUlnRmlnQ0VDRXhDeUFKUWJnSWFpRUpJQjFCekFCcUlSMGdEVUVCYWlJTklERkpEUUFMQzBFQUlURWdHU2dDTEJBZ0lFQW9BZ3hGRFFFQ1FDQVpLQUpBRFFBZ0dTZ0NHQ0lkS0FJUVJRMEFRUUFoQ1FOQUlCa29BaFFvQWdBb0FoUWdDVUhNQUd4cUlnRW9BaHdnSFNnQ0dDQUpRVFJzYWlnQ0pFR1lBV3hxSWdjb0FvZ0JJUVlnQnlnQ2tBRWhDeUFIS0FLTUFTRUtJQWNvQXBRQklRY2dBU2dDTkJBUUlBRkJBRFlDTkFKQUlCa29Ba1FpRFFSQUlBMGdDVUVDZEdvb0FnQkZEUUVMSUFZZ0MwWU5BQ0FISUFwR0RRQWdCeUFLYXlJSHJTQUxJQVpySWdhdGZrSWdpRUlBVWdSQUlETkJBVUdVRmtFQUVBOE1CUXNnQmlBSGJDSUhRWUNBZ0lBRVR3UkFJRE5CQVVHVUZrRUFFQThNQlFzZ0FTQUhRUUowRUJnaUFUWUNOQ0FCRFFBZ00wRUJRWlFXUVFBUUR3d0VDeUFKUVFGcUlna2dHU2dDR0NJZEtBSVFTUTBBQ3dzZ0dTZ0NJQ0VkSUJrb0FoUW9BZ0FpRnlnQ0VBUkFJQmNvQWhRaENTQWRLQUxRS3lFZElCa29BaGdvQWhnaERVRUFJUXNEUUFKQUlCa29Ba1FpQVFSQUlBRWdDMEVDZEdvb0FnQkZEUUVMSUEwb0FpUkJBV29oQVNBZEtBSVVRUUZHQkVBZ0FTRWVRUUFoQmtFQUlRejlEQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWhnQUVqQUVFZ2F5SWxKQUFDUUFKQUlCa29Ba0FFUUVFQklRY2dBVUVCUmcwQ0lBa29BaHdpRENBSktBSVlRWmdCYkdvaUFVR1FBV3NvQWdBaUVDQUJRWmdCYXlnQ0FDSVRSZzBDSUF3b0FnUWhFU0FNS0FJTUlSZ2dEQ2dDQUNFYUlBd29BZ2doR3lBWktBSXNJZzRvQWdRaEZpQWVRUUZySWdvaEZTQU1JUWNDUUNBS1FRUlBCRUFnQ2tFRGNTRVZJQWNnQ2tGOGNTSUlRWmdCYkdvaEIwRUFJUUVEUUNDQUFTQU1JQUZCbUFGc2FpSUdRZWdFYWlBR1FkQURhaUFHUWJnQ2FpQUcvUWtDb0FIOVZnSUFBZjFXQWdBQy9WWUNBQU1nQmtIZ0JHb2dCa0hJQTJvZ0JrR3dBbW9nQnYwSkFwZ0IvVllDQUFIOVZnSUFBdjFXQWdBRC9iRUIvYmtCSUFaQjdBUnFJQVpCMUFOcUlBWkJ2QUpxSUFiOUNRS2tBZjFXQWdBQi9WWUNBQUw5VmdJQUF5QUdRZVFFYWlBR1Fjd0RhaUFHUWJRQ2FpQUcvUWtDbkFIOVZnSUFBZjFXQWdBQy9WWUNBQVA5c1FIOXVRRWhnQUVnQVVFRWFpSUJJQWhIRFFBTElJQUJJSUFCSUlBQi9RMElDUW9MREEwT0R3QUJBZ01BQVFJRC9ia0JJb0FCSUlBQklJQUIvUTBFQlFZSEFBRUNBd0FCQWdNQUFRSUQvYmtCL1JzQUlRWWdDQ0FLUmcwQkN3TkFJQVlnQnlnQ29BRWdCeWdDbUFGcklnRWdBU0FHU1JzaUFTQUhLQUtrQVNBSEtBS2NBV3NpQmlBQklBWkxHeUVHSUFkQm1BRnFJUWNnRlVFQmF5SVZEUUFMQzBFQUlRY2dCa0gvLy84L1N3MENJQ1VnQmtFRmRDSVNFREVpRHpZQ0VDQVBSUTBDSUNVZ0R6WUNBQ0FLQkVBZ0VDQVRheUVRSUJnZ0VXc2hDQ0FiSUJwcklRRURRQ0FKS0FJa0lSTWdKU0FJSWhVMkFnZ2dKU0FCSWdjMkFoZ2dEQ2dDbkFFaEJpQU1LQUtrQVNFSUlBd29BcUFCSVFFZ0pTQU1LQUtZQVNJUlFRSnZOZ0ljSUNVZ0FTQVJheUlCSUFkck5nSVVBa0FnRmtFQ1NDSWFSU0FJSUFacklnaEJBVXR4UlFSQVFRQWhCaUFJUlEwQkEwQWdKVUVRYWlBVElBWWdFR3hCQW5ScUVGMGdCa0VCYWlJR0lBaEhEUUFMREFFTElBZ2dGaUFJSUJaSkd5SVJRUUZySVJzZ0NDQVJiaUVZUVFBaEJ3TkFRU1FRRkNJR1JRMEZJQ1g5QUFJUUlZQUJJQVlnRXpZQ0dDQUdJQkEyQWhRZ0JpQUJOZ0lRSUFZZ2dBSDlDd0lBSUFZZ0J5QVliRFlDSENBSElCdEdJUjhnQmlBSUlBZEJBV29pQnlBWWJDQWZHellDSUNBR0lCSVFNU0lmTmdJQUlCOUZCRUJCQUNFSElBNFFJQ0FHRUJBZ0R4QVFEQWNMSUE1QkNpQUdFQzBnQnlBUlJ3MEFDeUFPRUNBTElDVWdDQ0FWYXpZQ0JDQWxJQXdvQXB3QlFRSnZOZ0lNQWtBZ0drVWdBVUVCUzNGRkJFQkJDQ0VIUVFBaEJpQUJRUWhQQkVBRFFDQWxJQk1nQmtFQ2RHb2dFRUVJRURBZ0J5SUdRUWhxSWdjZ0FVME5BQXNMSUFFZ0JrME5BU0FsSUJNZ0JrRUNkR29nRUNBQklBWnJFREFNQVFzZ0FTQVdJQUVnRmtrYkloVkJBV3NoR0NBQklCVnVJUkZCQUNFSEEwQkJKQkFVSWdaRkRRVWdKZjBBQWdBaGdBRWdCaUFUTmdJWUlBWWdFRFlDRkNBR0lBZzJBaEFnQmlDQUFmMExBZ0FnQmlBSElCRnNOZ0ljSUFjZ0dFWWhHaUFHSUFFZ0IwRUJhaUlISUJGc0lCb2JOZ0lnSUFZZ0VoQXhJaG8yQWdBZ0drVUVRRUVBSVFjZ0RoQWdJQVlRRUNBUEVCQU1Cd3NnRGtFTElBWVFMU0FISUJWSERRQUxJQTRRSUFzZ0RFR1lBV29oRENBS1FRRnJJZ29OQUFzTFFRRWhCeUFQRUJBTUFndEJBU0VISUFrb0Fod2lDQ0FlUVpnQmJHb2lOVUdZQVdzaVh5Z0NBQ0ExUVpBQmF5Z0NBRVlOQVNBMVFaUUJheUpnS0FJQUlEVkJqQUZyS0FJQVJnMEJJQWdvQWdRaERpQUlLQUlNSVE4Z0NDZ0NBQ0VXSUFnb0FnZ2hFQ0FKS0FKRUlTRWdDU2dDUUNFaUlBa29BandoS0NBSktBSTRJVEFnQ1NBZUVGd2lPVVVFUUVFQUlRY01BZ3NDUUFKQUlCNUJBVWNFUUFKQUFrQWdIa0VCYXlJS1FRUkpCRUFnQ2lFQklBZ2hCd3dCQ3lBS1FRTnhJUUVnQ0NBS1FYeHhJaFZCbUFGc2FpRUhBMEFnZ0FFZ0NDQU1RWmdCYkdvaUJrSG9CR29nQmtIUUEyb2dCa0c0QW1vZ0J2MEpBcUFCL1ZZQ0FBSDlWZ0lBQXYxV0FnQURJQVpCNEFScUlBWkJ5QU5xSUFaQnNBSnFJQWI5Q1FLWUFmMVdBZ0FCL1ZZQ0FBTDlWZ0lBQS8yeEFmMjVBU0FHUWV3RWFpQUdRZFFEYWlBR1Fid0NhaUFHL1FrQ3BBSDlWZ0lBQWYxV0FnQUMvVllDQUFNZ0JrSGtCR29nQmtITUEyb2dCa0cwQW1vZ0J2MEpBcHdCL1ZZQ0FBSDlWZ0lBQXYxV0FnQUQvYkVCL2JrQklZQUJJQXhCQkdvaURDQVZSdzBBQ3lDQUFTQ0FBU0NBQWYwTkNBa0tDd3dORGc4QUFRSURBQUVDQS8yNUFTS0FBU0NBQVNDQUFmME5CQVVHQndBQkFnTUFBUUlEQUFFQ0EvMjVBZjBiQUNFR0lBb2dGVVlOQVFzRFFDQUdJQWNvQXFBQklBY29BcGdCYXlJS0lBWWdDa3NiSWdZZ0J5Z0NwQUVnQnlnQ25BRnJJZ29nQmlBS1N4c2hCaUFIUVpnQmFpRUhJQUZCQVdzaUFRMEFDd3NnQmtHQWdJQ0FBVThOQWlBR1FRUjBFREVpRkVVTkFnSkFJQjVGRFFBZ0R5QU9heUVTSUJBZ0Ztc2hHaUFVUVFScklUc2dGRUVFYWlFa0lCUkJER29oS1NBVVFSeHFJVU1nRkVFWWFpRWZJQlJCRkdvaElDQVVRUXhySVVRZ0ZFRUlhaUVxSUJSQkVHb2hOaUFVUVJCcklUY2dGRUVJYXlGQklDR3RJWVlCSUNLdElZY0JJQ2l0SVlvQklEQ3RJWXNCUVFFaFJnTkFJQWdvQXB3QklnRkJBbThoUnlBSUtBS1lBU0lIUVFKdklUd2dDQ2dDcEFFZ0FXc2lKeUFTYXlFc0lBZ29BcUFCSUFkcklpMGdHbXNoTGlBd0lnd2hCeUFvSWdZaENpQWlJZ0VoT2lBaElnOGhFUUpBSUFrb0FoUWlGU0JHUmcwQUlCVWdSbXNoRlVFQUlRcEJBQ0VISUF3RVFFSi9JQld0SW9nQmhrSi9oU0NMQVh3Z2lBR0lweUVIQ3lBb0JFQkNmeUFWclNLSUFZWkNmNFVnaWdGOElJZ0JpS2NoQ2d0QkFDRVBRUUFoQVNBaUJFQkNmeUFWclNLSUFZWkNmNFVnaHdGOElJZ0JpS2NoQVFzZ0lRUkFRbjhnRmEwaWlBR0dRbitGSUlZQmZDQ0lBWWluSVE4TFFRQWhPa0VBSVF4QkFTQVZRUUZyZENJT0lEQkpCRUFnTUNBT2E2MUNmeUFWclNLSUFZWkNmNFY4SUlnQmlLY2hEQXNnRGlBaVNRUkFJQ0lnRG11dFFuOGdGYTBpaUFHR1FuK0ZmQ0NJQVlpbklUb0xRUUFoRVVFQUlRWWdEaUFvU1FSQUlDZ2dEbXV0UW44Z0ZhMGlpQUdHUW4rRmZDQ0lBWWluSVFZTElBNGdJVThOQUNBaElBNXJyVUovSUJXdElvZ0Joa0ovaFh3Z2lBR0lweUVSQzBGL0lEb2dDQ2dDdEFFaUZXc2lEa0VBSUE0Z09rMGJJZzVCQW1vaUZpQU9JQlpMR3lJT0lDNGdEaUF1U1JzaU5FRi9JQUVnQ0NnQzJBRWlFMnNpRGtFQUlBRWdEazhiSWdGQkFtb2lEaUFCSUE1TEd5SUJJQm9nQVNBYVNSc2lKaUE4RzBFQmRDSUJJQ1lnTkNBOEcwRUJkRUVCY2lJT0lBRWdEa3NiSWtnZ0xVa2hHQ0FNSUJWcklnRkJBQ0FCSUF4Tkd5SUJRUUpySWd4QkFDQUJJQXhQR3lJUUlBY2dFMnNpQVVFQUlBRWdCMDBiSWdGQkFtc2lERUVBSUFFZ0RFOGJJaFlnUEJ0QkFYUWlEQ0FXSUJBZ1BCdEJBWFJCQVhJaUswa2hMeUFLSUFnb0FyZ0JJaHRySWhWQkFDQUtJQlZQR3lJS1FRSnJJaFZCQUNBS0lCVlBHeUlWSVNNZ0JpQUlLQUxjQVNJS2F5SU9RUUFnQmlBT1R4c2lCa0VDYXlJT1FRQWdCaUFPVHhzaURpRTlRWDhnRHlBYmF5SUdRUUFnQmlBUFRSc2lCa0VDYWlJUElBWWdEMHNiSWdZZ0VpQUdJQkpKR3lJYklUNUJmeUFSSUFwcklnWkJBQ0FHSUJGTkd5SUdRUUpxSWdvZ0JpQUtTeHNpQmlBc0lBWWdMRWtiSWh3aFB5QkhCRUFnRlNFOUlCd2hQaUFiSVQ4Z0RpRWpDeUJJSUMwZ0dCc2hTU0FNSUNzZ0x4c2hHQ0FTSUJ4cUlWQWdEaUFTYWlGUklDY0VRQ0FVSUJaQkEzUWlCbW9pUlVFRWFpQTdJQzVCQTNRaUNtb2lVaUFXSUM1SUlnd2JJVk1nQmlBa2FpSUdJQ1lnTGlBbUlDNUlHeUlQSUFjZ0V5QUhJQk5KRzBFQ0lBRWdBVUVDVHh0cUlnRnFJaE1nQjJ0QkFtc2lFVUVEZENJcmFpQUdTU0FwSUFjZ0FXdEJBM1JxSWdFZ0syb2dBVWx5SUJGQi8vLy8vd0ZMY2lGVUlEUWdHa0VCYXlBYUlEUktHeUV2UVFBaEVTQWFRUUZLSUM1QkFFcHlJVlVnSkNBOFFRSjBJZ0ZySUJCQkEzUnFJVllnQVNCRmFpRlhJQllnQjBGL2N5QVRhaUpLUVh4eElqSnFJVGdnRmtFQmFpSVRJREpxSVVJZ0dpQTBhaUZZSUJBZ0dtb2hXU0FXL1JIOURBQUFBQUFCQUFBQUFnQUFBQU1BQUFEOXJnRWhnd0VnRkNBWVFRSjBhaUZhSUVFZ0drRURkQ0lCYWlGTElBRWdPMm9oVENBS0lFRnFJVTBnR2tVZ0xrRUJSbkVoV3lBVUlFbEJBblFpQVdvaFhDQUJJRHRxSVYwZ0UvMFIvUXdBQUFBQUFRQUFBQUlBQUFBREFBQUEvYTRCSVlRQklEc2dGaUF1SUF3YlFRTjBhaUZlQTBBQ1FBSkFJQkVnRzBrZ0VTQVZUM0VOQUNBUklGQkpJQkVnVVU5eERRQWdFVUVCYWlFckRBRUxJQzBnU0VzRVFDQmRRUUEyQWdBZ1hFRUFOZ0lBQ3lBNUlCWWdFU0FtSUJGQkFXb2lLeUJYUVFKQkFCQWVJRGtnV1NBUklGZ2dLeUJXUVFKQkFCQWVBa0FDUUFKQUlEeEZCRUFnVlVVTkF5QVdJQ1pPRFFJQ1FBSkFJQlpCQUVvRVFDQmVLQUlBSVFjTUFRc2dKQ2dDQUNJSElRRWdGa0VBU0EwQkN5QUhJUUVnVXlnQ0FDRUhDeUJGSUVVb0FnQWdBU0FIYWtFQ2FrRUNkV3MyQWdBZ0V5SUhJQTlPRFFGQkFDRUhJSVFCSVlBQklJTUJJWUlCSUJNaEFTQVdJUW9nU2tFVVNTQlVja1VFUUFOQUlCUWdnQUZCQWYyckFTS0JBZjBiQUVFQ2RHb2lBU0FVSUlFQi9Sc0RRUUowYWlJR0lCUWdnUUg5R3dKQkFuUnFJZ29nRkNDQkFmMGJBVUVDZEdvaURDQUIvUWtDQVAxV0FnQUIvVllDQUFMOVZnSUFBeUFVSUlJQlFRSDlxd0g5REFFQUFBQUJBQUFBQVFBQUFBRUFBQUQ5VUNLRkFmMGJBMEVDZEdvZ0ZDQ0ZBZjBiQWtFQ2RHb2dGQ0NGQWYwYkFVRUNkR29nRkNDRkFmMGJBRUVDZEdyOUNRSUEvVllDQUFIOVZnSUFBdjFXQWdBRElCUWdnUUg5REFFQUFBQUJBQUFBQVFBQUFBRUFBQUQ5VUNLQkFmMGJBMEVDZEdvZ0ZDQ0JBZjBiQWtFQ2RHb2dGQ0NCQWYwYkFVRUNkR29nRkNDQkFmMGJBRUVDZEdyOUNRSUEvVllDQUFIOVZnSUFBdjFXQWdBRC9hNEIvUXdDQUFBQUFnQUFBQUlBQUFBQ0FBQUEvYTRCUVFMOXJBSDlzUUVpZ1FIOVdnSUFBQ0FNSUlFQi9Wb0NBQUVnQ2lDQkFmMWFBZ0FDSUFZZ2dRSDlXZ0lBQXlDQ0FmME1CQUFBQUFRQUFBQUVBQUFBQkFBQUFQMnVBU0dDQVNDQUFmME1CQUFBQUFRQUFBQUVBQUFBQkFBQUFQMnVBU0dBQVNBSFFRUnFJZ2NnTWtjTkFBc2dRaUVCSURnaENpQVBJUWNnTWlCS1JnMENDd05BSUJRZ0FVRURkR29pQnlBSEtBSUFJQlFnQ2tFRGRHb29BZ1FnQnlnQ0JHcEJBbXBCQW5Wck5nSUFJQUVpQ2tFQmFpSUJJQTlIRFFBTElBOGhCd3dCQ3dKQUlGdEZCRUFnRmlJSElDWk9EUUVEUUNBVUlBZEJBM1JxSWdFb0FnUWhCaUFCSUFZQ2Z3SkFJQWRCQUU0RVFDQUJJRTBnQnlBdVNCc29BZ0FoT2lBSFFRRnFJUUVNQVFzZ0ZDZ0NBQ0U2UVFBaEFTQVVJQWRCQVdvaUJ3MEJHZ3NnQVNBdVRnUkFJQUVoQnlCTkRBRUxJQlFnQVNJSFFRTjBhZ3NvQWdBZ09tcEJBbXBCQW5Wck5nSUVJQWNnSmtnTkFBc01BUXNnRkNBVUtBSUFRUUp0TmdJQURBTUxJQkFpQnlBMFRnMENBMEFnRkNBSFFRTjBhaUlCS0FJQUlRb0NmeUFIUVFCSUJFQWdKQ2dDQUNFR0lDUU1BUXNnRkNBSFFRTjBha0VFYWlCTUlBY2dHa2diS0FJQUlRWWdKQ0FIUlEwQUdpQk1JQUZCQkdzZ0J5QWFTaHNMSVF3Z0FTQU1LQUlBSUFacVFRRjFJQXBxTmdJQUlBZEJBV29pQnlBMFJ3MEFDd3dDQ3lBSElDWk9EUUFEUUNBVUlBZEJBM1JxSWdFZ0FTZ0NBQUovQWtBZ0IwRUFTZ1JBSURzZ0J5QXVJQWNnTGtnYlFRTjBhaWdDQUNFS0RBRUxJQ1FvQWdBaENpQWtJQWRCQUVnTkFSb0xJRklnQnlBdVRnMEFHaUFVSUFkQkEzUnFRUVJxQ3lnQ0FDQUtha0VDYWtFQ2RXczJBZ0FnQjBFQmFpSUhJQ1pIRFFBTEN5QVFJRFJPRFFBZ0x5QVFJZ0VpQjBvRVFBTkFJQlFnQjBFRGRHb2lBU0FCS0FJRUlCUWdCMEVCYWlJSFFRTjBhaWdDQUNBQktBSUFha0VCZFdvMkFnUWdCeUF2UncwQUN5QXZJUUVMSUFFZ05FNE5BQU5BQW44Q1FDQUJJZ2RCQUU0RVFDQVVJQUZCQTNScUlFc2dBU0FhU0Jzb0FnQWhEQ0FCUVFGcUlRb01BUXNnRkNnQ0FDRU1RUUFoQ2lBVUlBZEJBV29pQVEwQkdnc2dDaUFhVGdSQUlBb2hBU0JMREFFTElCUWdDaUlCUVFOMGFnc2hCaUFVSUFkQkEzUnFJZ2NnQnlnQ0JDQUdLQUlBSUF4cVFRRjFhallDQkNBQklEUklEUUFMQ3lBNUlCZ2dFU0JKSUNzZ1drRUJRUUJCQUJBbVJRMEdDeUFySWhFZ0owY05BQXNMSUFoQm1BRnFJUWdnUGtFQmRDSUJJRDlCQVhSQkFYSWlCeUFCSUFkTEd5SUJJQ2NnQVNBblNSc2hTQ0JESUJWQkJYUWlBV29nT3lBc1FRVjBJZ2RxSUJVZ0xFZ2lCaHNoU2lBQklCOXFJQWNnUVdvZ0Joc2hTeUFCSUNCcUlBY2dSR29nQmhzaFRDQUJJRFpxSUFjZ04yb2dCaHNoVFNBY0lCSkJBV3NnRWlBY1Noc2hEQ0FzUVFCS0lnOGdFa0VCU25JaFVpQUJJQlJxSWlzZ1IwRUVkR29oVXlBcElCSkJBM1FpR2tFSWF5SStRUUFnRWtFQVRCdEJBblFpQ21vaFZDQUtJQ3BxSVZVZ0NpQWthaUZXSUFvZ0ZHb2hWeUFwUVFBZ0xFRURkQ0lLUVFocklqOGdEeHRCQW5RaUQyb2hXQ0FQSUNwcUlWa2dEeUFrYWlGYUlBOGdGR29oV3lBVVFRUWdSMEVDZEd0QkFuUnFJQTVCQlhScUlWd2dHeUFzSUJzZ0xFZ2JJUThnRlVFQmFpRVFJQlFnSTBFQmRDSVdJRDFCQVhSQkFYSWlFeUFUSUJaTEd5SmRRUVIwYWlGZUlBRWdLV29oUFNBQklDcHFJU01nQVNBa2FpRXZJQnBCQVdzaE9DQWFRUUpySVVJZ0drRURheUV1SUJRZ0VrRUZkR29oWVNBYVFRUnJJVFFnQ2tFRmF5RmlJQXBCQm1zaFl5QUtRUWRySVdRZ0VrVWdMRUVCUm5FaFpTQXBJQWRCRUdzaUFXb2hKaUFCSUNwcUlUb2dBU0FrYWlFOElBRWdGR29oUlNBcElENUJBblFpQVdvaGFDQUJJQ3BxSVdrZ0FTQWthaUZxSUFFZ0ZHb2hheUE3SUJVZ0xDQUdHMEVGZENJQmFpRnNJQUVnUVdvaEV5QUJJRVJxSVJFZ0FTQTNhaUZ0SUNrZ1AwRUNkQ0lCYWlGdUlBRWdLbW9oYnlBQklDUnFJWEFnQVNBVWFpRnhBMEFDUUFKQUFuOENRQ0FZSWhZZ1NVa0VRQ0E1SUJZZ0ZVRUVJRWtnRm1zaUFTQUJRUVJQR3lBV2FpSVlJQnNnVTBFQlFRZ1FIaUE1SUJZZ1VTQVlJRkFnWEVFQlFRZ1FIaUJIUlFSQUlGSkZEUVVnRlNBYlRnMEVBbjhnRlVFQVNnUkFJRzBvQWdBaEJ5QVRJUVlnRVNFS0lHd01BUXNnTmlnQ0FDRUhJQlZCQUVnTkF5QWZJUVlnSUNFS0lFTUxJWGtnS3lBcktBSUFJQWNnVFNnQ0FHcEJBbXBCQW5Wck5nSUFJQzhnTHlnQ0FDQUtLQUlBSUV3b0FnQnFRUUpxUVFKMWF6WUNBQ0FqSUNNb0FnQWdCaWdDQUNCTEtBSUFha0VDYWtFQ2RXczJBZ0FnU2lnQ0FDRUhJSGtvQWdBTUF3c2daUVJBSUJRZ0ZDZ0NBRUVDYlRZQ0FDQWtJQ1FvQWdCQkFtMDJBZ0FnS2lBcUtBSUFRUUp0TmdJQUlDa2dLU2dDQUVFQ2JUWUNBQXdGQ3lBYklCVWlCMG9FUUFOQUlBZEJBM1FoQVFKL0FrQWdCMEVBU0FSQUlBZEJmMFlOQVNBVUlBRkJBblJxSWdFZ0FTZ0NFQ0FVS0FJQVFRRjBRUUpxUVFKMWF6WUNFQ0FCSUFFb0FoUWdKQ2dDQUVFQmRFRUNha0VDZFdzMkFoUWdBU0FCS0FJWUlDb29BZ0JCQVhSQkFtcEJBblZyTmdJWUlDa29BZ0JCQVhSQkFtb2hCaUFCUVJ4cURBSUxJQ3dnQjBFQmFpSUdUQVJBSUJRZ0FVRUNkR29pQ2lBS0tBSVFJQlFnQVNBL0lBY2dMRWdpQmh0QkFuUnFLQUlBSUhFb0FnQnFRUUpxUVFKMWF6WUNFQ0FLSUFvb0FoUWdGQ0FCUVFGeUlHUWdCaHRCQW5ScUtBSUFJSEFvQWdCcVFRSnFRUUoxYXpZQ0ZDQUtJQW9vQWhnZ0ZDQUJRUUp5SUdNZ0JodEJBblJxS0FJQUlHOG9BZ0JxUVFKcVFRSjFhellDR0NBVUlBRkJBM0lnWWlBR0cwRUNkR29vQWdBZ2JpZ0NBR3BCQW1vaEJpQUtRUnhxREFJTElCUWdBVUVDZEdvaUFTQUJLQUlRSUFFb0FnQWdGQ0FHUVFWMGFpSUdLQUlBYWtFQ2FrRUNkV3MyQWhBZ0FTQUJLQUlVSUFFb0FnUWdCaWdDQkdwQkFtcEJBblZyTmdJVUlBRWdBU2dDR0NBQktBSUlJQVlvQWdocVFRSnFRUUoxYXpZQ0dDQUJLQUlNSUFZb0FneHFRUUpxSVFZZ0FVRWNhZ3dCQ3lBM0lEY29BZ0FnRkNnQ0FDQmJLQUlBYWtFQ2FrRUNkV3MyQWdBZ1JDQkVLQUlBSUNRb0FnQWdXaWdDQUdwQkFtcEJBblZyTmdJQUlFRWdRU2dDQUNBcUtBSUFJRmtvQWdCcVFRSnFRUUoxYXpZQ0FDQXBLQUlBSUZnb0FnQnFRUUpxSVFZZ093c2lBU0FCS0FJQUlBWkJBblZyTmdJQUlBZEJBV29pQnlBYlJ3MEFDd3NnSENBT0lnZE1EUVFEUUNBSFFRTjBJUUVDZnlBSFFRQklCRUFnRkNBQlFRSjBhaUlCSUFFb0FnQWdOaWdDQUVFQmRFRUJkV28yQWdBZ0FTQUJLQUlFSUJRb0FoUkJBWFJCQVhWcU5nSUVJQUVnQVNnQ0NDQVVLQUlZUVFGMFFRRjFhallDQ0NBVUtBSWNRUUYwSVFvZ0FVRU1hZ3dCQ3lBSEJFQWdGQ0FCUVFKMGFpSUdJQVlvQWdBZ1lTQUdJQWNnRWtvaU1odEJFR3NvQWdBZ0ZDQUJRUVJ5SURRZ0J5QVNTQ0lLRzBFQ2RHb29BZ0JxUVFGMWFqWUNBQ0FHSUFZb0FnUWdSQ0FhSUFFZ01odEJBblFpTW1vb0FnQWdGQ0FCUVFWeUlDNGdDaHRCQW5ScUtBSUFha0VCZFdvMkFnUWdCaUFHS0FJSUlESWdRV29vQWdBZ0ZDQUJRUVp5SUVJZ0NodEJBblJxS0FJQWFrRUJkV28yQWdnZ01pQTdhaWdDQUNBVUlBRkJCM0lnT0NBS0cwRUNkR29vQWdCcUlRb2dCa0VNYWd3QkN5QVVJQlFvQWdBZ05pZ0NBQ0FVUVFRZ05DQUhJQkpJSWdFYlFRSjBhaWdDQUdwQkFYVnFOZ0lBSUNRZ0pDZ0NBQ0FVS0FJVUlCUkJCU0F1SUFFYlFRSjBhaWdDQUdwQkFYVnFOZ0lBSUNvZ0tpZ0NBQ0FVS0FJWUlCUkJCaUJDSUFFYlFRSjBhaWdDQUdwQkFYVnFOZ0lBSUJRb0Fod2dGRUVISURnZ0FSdEJBblJxS0FJQWFpRUtJQ2tMSWdFZ0FTZ0NBQ0FLUVFGMWFqWUNBQ0FIUVFGcUlnY2dIRWNOQUFzTUJBc2dMU0VhSUNjaEVpQkdRUUZxSWtZZ0hrY05CUXdHQ3lBcklDc29BZ0FnQjBFQmRFRUNha0VDZFdzMkFnQWdMeUF2S0FJQUlDQW9BZ0JCQVhSQkFtcEJBblZyTmdJQUlDTWdJeWdDQUNBZktBSUFRUUYwUVFKcVFRSjFhellDQUNCREtBSUFJZ2NMSVFFZ1BTQTlLQUlBSUFFZ0IycEJBbXBCQW5Wck5nSUFJQlVoQmlBUUlnRWlCeUFQU0FSQUEwQWdGQ0FCUVFWMGFpSUhJQWY5QUFJQUlEWWdCa0VGZEdyOUFBSUFJQWY5QUFJUS9hNEIvUXdDQUFBQUFnQUFBQUlBQUFBQ0FBQUEvYTRCUVFMOXJBSDlzUUg5Q3dJQUlBRWlCa0VCYWlJQklBOUhEUUFMSUE4aEJ3c2dCeUFiVGcwQUEwQWdCMEVEZENFQklBY2dMRWdoQmdKQUlBZEJBRXdFUUNBMktBSUFJUW9nQjBFQVRnUkFJQlFnQVVFQ2RDSUJhaUl5SURJb0FnQWdDaUFCSURacUlFVWdCaHNvQWdCcVFRSnFRUUoxYXpZQ0FDQUJJQ1JxSWdvZ0NpZ0NBQ0FnS0FJQUlBRWdJR29nUENBR0d5Z0NBR3BCQW1wQkFuVnJOZ0lBSUFFZ0ttb2lDaUFLS0FJQUlCOG9BZ0FnQVNBZmFpQTZJQVliS0FJQWFrRUNha0VDZFdzMkFnQWdReWdDQUNBQklFTnFJQ1lnQmhzb0FnQnFRUUpxSVFZZ0FTQXBhaUVCREFJTElCUWdBVUVDZENJQmFpSUdJQVlvQWdBZ0NrRUJkRUVDYWtFQ2RXczJBZ0FnQVNBa2FpSUdJQVlvQWdBZ0ZDZ0NGRUVCZEVFQ2FrRUNkV3MyQWdBZ0FTQXFhaUlHSUFZb0FnQWdGQ2dDR0VFQmRFRUNha0VDZFdzMkFnQWdBU0FwYWlFQklCUW9BaHhCQVhSQkFtb2hCZ3dCQ3lBVUlBY2dMQ0FHRzBFRGRFRUVhMEVDZENJS2FpZ0NBQ0V5SUFaRkJFQWdGQ0FCUVFKMElnRnFJZ1lnQmlnQ0FDQXlJRVVvQWdCcVFRSnFRUUoxYXpZQ0FDQUJJQ1JxSWdZZ0JpZ0NBQ0FLSUNScUtBSUFJRHdvQWdCcVFRSnFRUUoxYXpZQ0FDQUJJQ3BxSWdZZ0JpZ0NBQ0FLSUNwcUtBSUFJRG9vQWdCcVFRSnFRUUoxYXpZQ0FDQUJJQ2xxSVFFZ0NpQXBhaWdDQUNBbUtBSUFha0VDYWlFR0RBRUxJQlFnQVVFQ2RDSUJhaUlHSUFZb0FnQWdNaUFHS0FJUWFrRUNha0VDZFdzMkFnQWdBU0FrYWlJR0lBWW9BZ0FnQ2lBa2FpZ0NBQ0FHS0FJUWFrRUNha0VDZFdzMkFnQWdBU0FxYWlJR0lBWW9BZ0FnQ2lBcWFpZ0NBQ0FHS0FJUWFrRUNha0VDZFdzMkFnQWdDaUFwYWlnQ0FDQUJJQ2xxSWdFb0FoQnFRUUpxSVFZTElBRWdBU2dDQUNBR1FRSjFhellDQUNBSFFRRnFJZ2NnRzBjTkFBc0xJQTRnSEU0TkFDQU1JQTRpQVNJSFNnUkFBMEFnRkNBQlFRVjBhaUlISUFmOUFBSWdJQWY5QUFJQS9hNEJRUUg5ckFFZ0IvMEFBaEQ5cmdIOUN3SVFJQUZCQVdvaUFTQU1SdzBBQ3lBTUlRY0xJQWNnSEU0TkFBTkFJRU1nQjBFRGRDSUJRUUowYWlJeUFuOGdCMEVBU0FSQUlCUW9BZ0FoQmlBSFFYOUhCRUFnTmlBQlFRSjBJZ0ZxSWdvZ0NpZ0NBQ0FHYWpZQ0FDQUJJQ0JxSWdZZ0JpZ0NBQ0FrS0FJQWFqWUNBQ0FCSUI5cUlnRWdBU2dDQUNBcUtBSUFhallDQUNBcEtBSUFEQUlMSURZZ0FVRUNkQ0lCYWlJS0lBb29BZ0FnVnlnQ0FDQUdha0VCZFdvMkFnQWdBU0FnYWlJR0lBWW9BZ0FnVmlnQ0FDQWtLQUlBYWtFQmRXbzJBZ0FnQVNBZmFpSUJJQUVvQWdBZ1ZTZ0NBQ0FxS0FJQWFrRUJkV28yQWdBZ1ZDZ0NBQ0FwS0FJQWFrRUJkUXdCQ3lBQklENGdCeUFTU0JzaEJpQVNJQWRCQVdvaVprd0VRQ0EySUFGQkFuUWlDbW9pQVNBQktBSUFJR3NvQWdBZ0ZDQUdRUUowYWlJQktBSUFha0VCZFdvMkFnQWdDaUFnYWlJR0lBWW9BZ0FnYWlnQ0FDQUJLQUlFYWtFQmRXbzJBZ0FnQ2lBZmFpSUdJQVlvQWdBZ2FTZ0NBQ0FCS0FJSWFrRUJkV28yQWdBZ2FDZ0NBQ0FCS0FJTWFrRUJkUXdCQ3lBMklBRkJBblFpQ21vaUFTQUJLQUlBSUJRZ1prRUZkR29pQVNnQ0FDQVVJQVpCQW5ScUlnWW9BZ0JxUVFGMWFqWUNBQ0FLSUNCcUltWWdaaWdDQUNBQktBSUVJQVlvQWdScVFRRjFhallDQUNBS0lCOXFJZ29nQ2lnQ0FDQUJLQUlJSUFZb0FnaHFRUUYxYWpZQ0FDQUJLQUlNSUFZb0FneHFRUUYxQ3lBeUtBSUFhallDQUNBSFFRRnFJZ2NnSEVjTkFBc0xJRGtnRmlCZElCZ2dTQ0JlUVFGQkJFRUFFQ1lOQUFzTERBSUxJQlFRRUVFQklRY0xJRGtnTlVFUWF5Z0NBQ0lCSUY4b0FnQWlCbXNnTlVFTWF5Z0NBQ0JnS0FJQUlncHJJRFZCQ0dzb0FnQWlDQ0FHYXlBMVFRUnJLQUlBSUFwcklBa29BalJCQVNBSUlBRnJFQjRnT1JBakRBTUxJRGtRSXlBVUVCQkJBQ0VIREFJTElEa1FJMEVBSVFjTUFRdEJBQ0VISUE0UUlDQVBFQkFMSUNWQklHb2tBQ0FIRFFFTUJRc2dBU0VJUVFBaER2ME1BQUFBQUFBQUFBQUFBQUFBQUFBQUFDR0FBU01BUVVCcUlod2tBQUpBQW44Q1FDQVpLQUpBQkVBZ0NTZ0NIQ0lWSUFrb0FoaEJtQUZzYWlJQlFaZ0JheWdDQUNFYUlBRkJrQUZyS0FJQUlSc2dGU2dDQkNFTUlCVW9BZ3doZWlBVktBSUFJUkFnRlNnQ0NDRVRRUUVoQnlBWktBSXNJaDhvQWdRaEt5QUlRUUZHRFFOQkFDRUdJQWhCQVdzaUZpRUlJQlVoQVFKQUlCWkJCRThFUUNBV1FRTnhJUWdnQVNBV1FYeHhJZ3BCbUFGc2FpRUJRUUFoQndOQUlJQUJJQlVnQjBHWUFXeHFJZ1pCNkFScUlBWkIwQU5xSUFaQnVBSnFJQWI5Q1FLZ0FmMVdBZ0FCL1ZZQ0FBTDlWZ0lBQXlBR1FlQUVhaUFHUWNnRGFpQUdRYkFDYWlBRy9Ra0NtQUg5VmdJQUFmMVdBZ0FDL1ZZQ0FBUDlzUUg5dVFFZ0JrSHNCR29nQmtIVUEyb2dCa0c4QW1vZ0J2MEpBcVFCL1ZZQ0FBSDlWZ0lBQXYxV0FnQURJQVpCNUFScUlBWkJ6QU5xSUFaQnRBSnFJQWI5Q1FLY0FmMVdBZ0FCL1ZZQ0FBTDlWZ0lBQS8yeEFmMjVBU0dBQVNBSFFRUnFJZ2NnQ2tjTkFBc2dnQUVnZ0FFZ2dBSDlEUWdKQ2dzTURRNFBBQUVDQXdBQkFnUDl1UUVpZ0FFZ2dBRWdnQUg5RFFRRkJnY0FBUUlEQUFFQ0F3QUJBZ1A5dVFIOUd3QWhCaUFLSUJaR0RRRUxBMEFnQmlBQktBS2dBU0FCS0FLWUFXc2lCeUFHSUFkTEd5SUhJQUVvQXFRQklBRW9BcHdCYXlJR0lBWWdCMGtiSVFZZ0FVR1lBV29oQVNBSVFRRnJJZ2dOQUFzTFFRQWhCeUFHUWYvLy96OUxEUU1nSENBR1FRVjBJa1lRR0NJQk5nSWdJQUZGRFFNZ0hDQUJOZ0lBSUJaRkJFQkJBU0VISUFFUUVBd0VDeUI2SUF4cklROGdFeUFRYXlFT1FRSWdLMEVCZGlJQklBRkJBazBiSVVjZ0NTZ0NKQ0lLSUJ0QkhHd2lUU0FhUVJ4c0lsOXJhaUV2SUFvZ0cwRVliQ0pnSUJwQkdHd2lVbXRxSVQwZ0NpQWJRUlJzSWxNZ0drRVViQ0pVYTJvaFBpQUtJQnRCQkhRaVZTQWFRUVIwSWxacmFpRS9JQW9nRzBFTWJDSlhJQnBCREd3aVdHdHFJVGdnR3lBYWF5SVFRUWRzSVVrZ0VFRUdiQ0ZGSUJCQkJXd2hNaUFRUVFOc0lVZ2dFRUVCZENGUUlBb2dFRUVEZENKUmFpRkNJQW9nRUVFQ2RDSkJhaUVVSUJCQkJYUWhXU0FRL1JFaGhBRURRQ0FjSUE4MkFnZ2dIQ0FPSWdFMkFpZ2dGU2dDbkFFaEpDQVZLQUtrQVNFcElCVW9BcUFCSVI0Z0ZTZ0NtQUVoSUNBY1FRQTJBamdnSENBQk5nSTBJQnhCQURZQ01DQWNJQ0JCQW04aUdEWUNMQ0FjSUI0Z0lHc2lEaUFCYXlJVE5nSThJQndnRXpZQ0pBSkFJQ3RCQWtnaVdrVWdLU0FrYXlJUFFROUxjVVVFUUVFQUlRY2dDaUVHSUE5QkNFa05BU0EvSUFZZ1V5QWVRUUowSWdGcUlGUWdJRUVDZENJSWFtdHFJanBKSUQ0Z0JpQUJJRlZxSUFnZ1ZtcHJhaUpEU1hFZ1BTQkRTU0EvSUFZZ0FTQmdhaUFJSUZKcWEyb2lQRWx4Y2lBdklFTkpJRDhnQmlBQklFMXFJQWdnWDJwcmFpSkVTWEZ5SVZzZ1BTQkVTU0F2SUR4SmNTRmNJRDRnUkVrZ0x5QTZTWEVoWFNBOElENUxJRG9nUFV0eElWNGdRaUFHSUFFZ1Yyb2dDQ0JZYW10cUlrcEpJRGdnQmlBQklGRnFJQWhyYWlKTFNYRWhZU0FVSUVwSklEZ2dCaUFiSUI1cUlCb2dJR3ByUVFKMGFpSk1TWEVoWWlBVUlFdEpJRUlnVEVseElXTWdCaUFCSUFocmFpRXFJQTVCZkhFaENDQWNLQUlnSWhNZ0RrRUZkR29pRVVFUWF5RWxJQkZCRkdzaExDQVJRUmhySVM0Z0VVRWNheUUySUJGQkJHc2hPU0FSUVFocklUc2dFVUVNYXlFMFFRQWhHQ0FUUVF4cUlpTWdIaUFnUVg5emFpSU1RUVYwSWdGcUlDTkpJQXhCLy8vL1Awc2lEQ0FUUVFScUlpRWdBV29nSVVrZ0FTQVRhaUFUU1hKeUlCTkJDR29pSWlBQmFpQWlTWEp5SUE1QnlBSkpjaUZrSUJOQkZHb2lLQ0FCYWlBb1NTQVRRUkJxSWljZ0FXb2dKMGx5SUF4eUlCTkJHR29pTUNBQmFpQXdTWElnRTBFY2FpSXRJQUZxSUMxSmNpQU9RZFFBU1hJaFpRTkFJQWNoRENBY1FTQnFJZ0VnQmlBUVFRZ1FPeUFCRUNJQ1FDQU9SUTBBSUJnZ1dXd2hCMEVBSVFFQ1FBSkFJR1FOQUNCaElBWWdOa2tnRXlBSElDcHFJamRKY1NBR0lBY2dTbW9pRWtrZ0tpQTRTM0VnRkNBcVNTQUdJQWNnVEdvaUprbHhJQVlnQnlCTGFpSTFTU0FxSUVKTGNYSnljaUFHSUM1SklDRWdOMGx4Y2lBR0lDeEpJQ0lnTjBseGNpQUdJQ1ZKSUNNZ04wbHhjaUJqY2lCaWNpQVRJQ1pKSUFjZ0ZHb2lOeUEyU1hGeUlDRWdKa2tnTGlBM1MzRnlJQ0lnSmtrZ0xDQTNTM0Z5SUNNZ0pra2dKU0EzUzNGeWNnMEFJQk1nTlVrZ0J5QkNhaUltSURaSmNRMEFJQ0VnTlVrZ0ppQXVTWEVOQUNBaUlEVkpJQ1lnTEVseERRQWdJeUExU1NBbElDWkxjUTBBSUFjZ09Hb2lKaUEyU1NBU0lCTkxjUTBBSUNZZ0xra2dFaUFoUzNFTkFDQW1JQ3hKSUJJZ0lrdHhEUUFnRWlBalN5QWxJQ1pMY1EwQUEwQWdCaUFCUVFKMGFpQVRJQUZCQlhScUloTDlDUUlBSUJJcUFpRDlJQUVnRWtGQWF5b0NBUDBnQWlBU0tnSmcvU0FEL1FzQ0FDQUdJQUVnRUdwQkFuUnFJQkw5Q1FJRUlCSXFBaVQ5SUFFZ0Vpb0NSUDBnQWlBU0tnSmsvU0FEL1FzQ0FDQUdJQUVnVUdwQkFuUnFJQkw5Q1FJSUlCSXFBaWo5SUFFZ0Vpb0NTUDBnQWlBU0tnSm8vU0FEL1FzQ0FDQUdJQUVnU0dwQkFuUnFJQkw5Q1FJTUlCSXFBaXo5SUFFZ0Vpb0NUUDBnQWlBU0tnSnMvU0FEL1FzQ0FDQUJRUVJxSWdFZ0NFY05BQXNnQ0NJQklBNUdEUUVMQTBBZ0JpQUJRUUowYWlBVElBRkJCWFJxSWhJcUFnQTRBZ0FnQmlBQklCQnFRUUowYWlBU0tnSUVPQUlBSUFZZ0FTQlFha0VDZEdvZ0Vpb0NDRGdDQUNBR0lBRWdTR3BCQW5ScUlCSXFBZ3c0QWdBZ0FVRUJhaUlCSUE1SERRQUxDMEVBSVFFQ1FDQmxEUUFnWENBSElENXFJaElnTkVrZ0p5QUhJRHBxSWlaSmNTQmJJQWNnUDJvaU5TQTBTU0FuSUFjZ1Eyb2lOMGx4Y2lBb0lEZEpJRFVnTzBseGNpQXdJRGRKSURVZ09VbHhjaUF0SURkSklCRWdOVXR4Y2lCZWNpQmRjbklnRWlBN1NTQW1JQ2hMY1hJZ0VpQTVTU0FtSURCTGNYSWdKaUF0U3lBUklCSkxjWEp5RFFBZ0J5QTlhaUlTSURSSklDY2dCeUE4YWlJbVNYRU5BQ0FTSUR0SklDWWdLRXR4RFFBZ0VpQTVTU0FtSURCTGNRMEFJQ1lnTFVzZ0VTQVNTM0VOQUNBSElDOXFJaElnTkVrZ0p5QUhJRVJxSWdkSmNRMEFJQklnTzBrZ0J5QW9TM0VOQUNBU0lEbEpJQWNnTUV0eERRQWdCeUF0U3lBUklCSkxjUTBBQTBBZ0JpQUJJRUZxUVFKMGFpQVRJQUZCQlhScUlnZjlDUUlRSUFjcUFqRDlJQUVnQnlvQ1VQMGdBaUFIS2dKdy9TQUQvUXNDQUNBR0lBRWdNbXBCQW5ScUlBZjlDUUlVSUFjcUFqVDlJQUVnQnlvQ1ZQMGdBaUFIS2dKMC9TQUQvUXNDQUNBR0lBRWdSV3BCQW5ScUlBZjlDUUlZSUFjcUFqajlJQUVnQnlvQ1dQMGdBaUFIS2dKNC9TQUQvUXNDQUNBR0lBRWdTV3BCQW5ScUlBZjlDUUljSUFjcUFqejlJQUVnQnlvQ1hQMGdBaUFIS2dKOC9TQUQvUXNDQUNBQlFRUnFJZ0VnQ0VjTkFBc2dDQ0lCSUE1R0RRRUxBMEFnQmlBQklFRnFRUUowYWlBVElBRkJCWFJxSWdjcUFoQTRBZ0FnQmlBQklESnFRUUowYWlBSEtnSVVPQUlBSUFZZ0FTQkZha0VDZEdvZ0J5b0NHRGdDQUNBR0lBRWdTV3BCQW5ScUlBY3FBaHc0QWdBZ0FVRUJhaUlCSUE1SERRQUxDeUFZUVFGcUlSZ2dERUVJYWlFSElBWWdVVUVDZEdvaEJpQU1RUTlxSUE5SkRRQUxEQUVMSUE4Z0QwRURkaUlISUNzZ0J5QXJTUnNpRW01QmVIRWhFU0FQUVhoeElRZEJBQ0VJSUFvaEJnTkFRVEFRRkNJTVJRMEVJQXdnUmhBWUlpTTJBZ0FnSTBVRVFDQWZFQ0FnREJBUVFRQU1CZ3NnRENBR05nSW9JQXdnRURZQ0pDQU1JQTQyQWlBZ0RDQVROZ0ljSUF4QkFEWUNHQ0FNSUFFMkFoUWdERUVBTmdJUUlBd2dHRFlDRENBTUlBRTJBZ2dnRENBVE5nSUVJQXdnQnlBSUlCRnNheUFSSUFoQkFXb2lDQ0FTUmhzaUl6WUNMQ0FmUVF3Z0RCQXRJQVlnRUNBamJFRUNkR29oQmlBSUlCSkhEUUFMSUI4UUlBc0NRQ0FISUE5UERRQWdIRUVnYWlJQklBWWdFQ0FQSUFkckloZ1FPeUFCRUNJZ0RrVU5BQ0FjS0FJZ0lpTWdIa0VGZEVFQklCZ2dHRUVCVFJzaUVrRUNkR29nSUVFRmRHdHFRU0JySVI0Z0VrRURjU0VnSUJKQmZIRWhEQ0JCSUJKQkFXdHNJU0ZCQUNFSUEwQWdJeUFJUVFWMGFpRVRRUUFoQndKQUFrQWdHRUVFU1EwQUlCNGdCaUFJUVFKMEloRnFJZ0VnQmlBUklDRnFhaUlSSUFFZ0VVa2JTd1JBSUNNZ0FTQVJJQUVnRVVzYlFRUnFTUTBCQ3lBSS9SRWhnUUg5REFBQUFBQUJBQUFBQWdBQUFBTUFBQUFoZ0FGQkFDRUJBMEFnQmlDQUFTQ0VBZjIxQVNDQkFmMnVBU0tDQWYwYkFFRUNkR29nRXlBQlFRSjBhdjBBQWdBaWd3SDlId0E0QWdBZ0JpQ0NBZjBiQVVFQ2RHb2dnd0g5SHdFNEFnQWdCaUNDQWYwYkFrRUNkR29nZ3dIOUh3STRBZ0FnQmlDQ0FmMGJBMEVDZEdvZ2d3SDlId000QWdBZ2dBSDlEQVFBQUFBRUFBQUFCQUFBQUFRQUFBRDlyZ0VoZ0FFZ0FVRUVhaUlCSUF4SERRQUxJQXdpQnlBU1JnMEJDMEVBSVJFZ0J5RUJJQ0FFUUFOQUlBWWdBU0FRYkNBSWFrRUNkR29nRXlBQlFRSjBhaW9DQURnQ0FDQUJRUUZxSVFFZ0VVRUJhaUlSSUNCSERRQUxDeUFISUJKclFYeExEUUFEUUNBR0lBRWdFR3dnQ0dwQkFuUnFJQk1nQVVFQ2RHb3FBZ0E0QWdBZ0JpQUJRUUZxSWdjZ0VHd2dDR3BCQW5ScUlCTWdCMEVDZEdvcUFnQTRBZ0FnQmlBQlFRSnFJZ2NnRUd3Z0NHcEJBblJxSUJNZ0IwRUNkR29xQWdBNEFnQWdCaUFCUVFOcUlnY2dFR3dnQ0dwQkFuUnFJQk1nQjBFQ2RHb3FBZ0E0QWdBZ0dDQUJRUVJxSWdGSERRQUxDeUFJUVFGcUlnZ2dEa2NOQUFzTElCd2dEeUFjS0FJSUlneHJJaE0yQWdRZ0ZTZ0NuQUVoQVNBY1FRQTJBaEFnSENBTU5nSVVJQnhCQURZQ0dDQWNJQk0yQWh3Z0hDQUJRUUp2SWhnMkFnd0NRQ0JhUlNBT1FROUxjVVVFUUNBS0lRRWdEa0VJU1EwQklBOUJmbkVoSVNBUFFRRnhJU0lnRTBGK2NTRW9JQk5CQVhFaEp5QU1RWDV4SVRBZ0RFRUJjU0V0SUNrZ0pFRi9jMm9oSXlBY0tBSUFJaElnR0VFRmRDSUhhaUVnSUJJZ0IydEJJR29oSGlBTUlCQnNRUUowSVNvZ0RpRUlBMEJCQUNFR1FRQWhCd0pBQWtBQ1FDQU1EZ0lDQVFBTEEwQWdJQ0FHUVFaMGFpSVJJQUVnQmlBUWJFRUNkR29pSmYwQUFnRDlDd0lBSUJFZ0pmMEFBaEQ5Q3dJUUlDQWdCa0VCY2lJUlFRWjBhaUlsSUFFZ0VDQVJiRUVDZEdvaUVmMEFBaEQ5Q3dJUUlDVWdFZjBBQWdEOUN3SUFJQVpCQW1vaEJpQUhRUUpxSWdjZ01FY05BQXNMSUMxRkRRQWdJQ0FHUVFaMGFpSUhJQUVnQmlBUWJFRUNkR29pQnYwQUFnRDlDd0lBSUFjZ0J2MEFBaEQ5Q3dJUUN3SkFJQXdnRDBZTkFDQUJJQ3BxSVFkQkFDRUdRUUFoRVNBTUlDTkhCRUFEUUNBZUlBWkJCblJxSWlVZ0J5QUdJQkJzUVFKMGFpSXMvUUFDQVAwTEFnQWdKU0FzL1FBQ0VQMExBaEFnSGlBR1FRRnlJaVZCQm5ScUlpd2dCeUFRSUNWc1FRSjBhaUlsL1FBQ0VQMExBaEFnTENBbC9RQUNBUDBMQWdBZ0JrRUNhaUVHSUJGQkFtb2lFU0FvUncwQUN3c2dKMFVOQUNBZUlBWkJCblJxSWhFZ0J5QUdJQkJzUVFKMGFpSUgvUUFDQVAwTEFnQWdFU0FIL1FBQ0VQMExBaEFMSUJ3UUlnSkFJQTlGRFFCQkFDRUdRUUFoQnlBakJFQURRQ0FCSUFZZ0VHeEJBblJxSWhFZ0VpQUdRUVYwYWlJbC9RQUNBUDBMQWdBZ0VTQWwvUUFDRVAwTEFoQWdBU0FHUVFGeUloRWdFR3hCQW5ScUlpVWdFaUFSUVFWMGFpSVIvUUFDRVAwTEFoQWdKU0FSL1FBQ0FQMExBZ0FnQmtFQ2FpRUdJQWRCQW1vaUJ5QWhSdzBBQ3dzZ0lrVU5BQ0FCSUFZZ0VHeEJBblJxSWdjZ0VpQUdRUVYwYWlJRy9RQUNBUDBMQWdBZ0J5QUcvUUFDRVAwTEFoQUxJQUZCSUdvaEFTQUlRUWhySWdoQkIwc05BQXNNQVF0QkFTQU9RUU4ySWdFZ1J5QUJJRWRKR3lJSUlBaEJBVTBiSVJFZ0RpQUlia0Y0Y1NFU0lBNUJlSEVoSUVFQUlRY2dDaUVCQTBCQk1CQVVJZ1pGRFFRZ0JpQkdFQmdpSGpZQ0FDQWVSUVJBSUI4UUlDQUdFQkJCQUF3R0N5QUdJQUUyQWlnZ0JpQVFOZ0lrSUFZZ0R6WUNJQ0FHSUJNMkFod2dCa0VBTmdJWUlBWWdERFlDRkNBR1FRQTJBaEFnQmlBWU5nSU1JQVlnRERZQ0NDQUdJQk0yQWdRZ0JpQWdJQWNnRW14cklCSWdCMEVCYWlJSElBaEdHeUllTmdJc0lCOUJEU0FHRUMwZ0FTQWVRUUowYWlFQklBY2dFVWNOQUFzZ0h4QWdDd0pBSUE1QkIzRWlFa1VOQUNBWVFRVjBJU0FnSENnQ0FDRUlBa0FnREVVTkFDQUlJQ0JxSVJFZ0VrRUNkQ0VZUVFBaEJpQU1RUUZIQkVBZ0RFRitjU0VlUVFBaEJ3TkFJQkVnQmtFR2RHb2dBU0FHSUJCc1FRSjBhaUFZRUJJYUlCRWdCa0VCY2lJalFRWjBhaUFCSUJBZ0kyeEJBblJxSUJnUUVob2dCa0VDYWlFR0lBZEJBbW9pQnlBZVJ3MEFDd3NnREVFQmNVVU5BQ0FSSUFaQkJuUnFJQUVnQmlBUWJFRUNkR29nR0JBU0dnc0NRQ0FNSUE5R0RRQWdDQ0FnYTBFZ2FpRUhJQUVnRENBUWJFRUNkR29oRVNBU1FRSjBJUmhCQUNFR0lBd2dLU0FrUVg5emFrY0VRQ0FUUVg1eElTQkJBQ0VNQTBBZ0J5QUdRUVowYWlBUklBWWdFR3hCQW5ScUlCZ1FFaG9nQnlBR1FRRnlJaDVCQm5ScUlCRWdFQ0FlYkVFQ2RHb2dHQkFTR2lBR1FRSnFJUVlnREVFQ2FpSU1JQ0JIRFFBTEN5QVRRUUZ4UlEwQUlBY2dCa0VHZEdvZ0VTQUdJQkJzUVFKMGFpQVlFQklhQ3lBY0VDSWdEMFVOQUNBU1FRSjBJUWRCQUNFR0lDUkJBV29nS1VjRVFDQVBRWDV4SVF4QkFDRVJBMEFnQVNBR0lCQnNRUUowYWlBSUlBWkJCWFJxSUFjUUVob2dBU0FHUVFGeUloTWdFR3hCQW5ScUlBZ2dFMEVGZEdvZ0J4QVNHaUFHUVFKcUlRWWdFVUVDYWlJUklBeEhEUUFMQ3lBUFFRRnhSUTBBSUFFZ0JpQVFiRUVDZEdvZ0NDQUdRUVYwYWlBSEVCSWFDeUFWUVpnQmFpRVZJQlpCQVdzaUZnMEFDMEVCREFJTFFRRWhCeUFKS0FJY0lnd2dDRUdZQVd4cUlpTkJtQUZySWk4b0FnQWdJMEdRQVdzb0FnQkdEUUlnSTBHVUFXc2lQU2dDQUNBalFZd0JheWdDQUVZTkFpQU1LQUlFSVE4Z0RDZ0NEQ0VXSUF3b0FnQWhFQ0FNS0FJSUlSTWdDU2dDUkNFU0lBa29Ba0FoRVNBSktBSThJUm9nQ1NnQ09DRWZJQWtnQ0JCY0loNUZCRUJCQUNFSERBTUxJQWhCQVVZRVFDQWVJQ05CRUdzb0FnQWlBU0F2S0FJQUlnWnJJQ05CREdzb0FnQWdQU2dDQUNJS2F5QWpRUWhyS0FJQUlnZ2dCbXNnSTBFRWF5Z0NBQ0FLYXlBSktBSTBRUUVnQ0NBQmF4QWVJQjRRSXd3REMwRUFJUVlDUUFKQUlBaEJBV3NpQ2tFRVNRUkFJQW9oQnlBTUlRRU1BUXNnQ2tFRGNTRUhJQXdnQ2tGOGNTSVZRWmdCYkdvaEFRTkFJSUFCSUF3Z0RrR1lBV3hxSWdaQjZBUnFJQVpCMEFOcUlBWkJ1QUpxSUFiOUNRS2dBZjFXQWdBQi9WWUNBQUw5VmdJQUF5QUdRZUFFYWlBR1FjZ0RhaUFHUWJBQ2FpQUcvUWtDbUFIOVZnSUFBZjFXQWdBQy9WWUNBQVA5c1FIOXVRRWdCa0hzQkdvZ0JrSFVBMm9nQmtHOEFtb2dCdjBKQXFRQi9WWUNBQUg5VmdJQUF2MVdBZ0FESUFaQjVBUnFJQVpCekFOcUlBWkJ0QUpxSUFiOUNRS2NBZjFXQWdBQi9WWUNBQUw5VmdJQUEvMnhBZjI1QVNHQUFTQU9RUVJxSWc0Z0ZVY05BQXNnZ0FFZ2dBRWdnQUg5RFFnSkNnc01EUTRQQUFFQ0F3QUJBZ1A5dVFFaWdBRWdnQUVnZ0FIOURRUUZCZ2NBQVFJREFBRUNBd0FCQWdQOXVRSDlHd0FoQmlBS0lCVkdEUUVMQTBBZ0JpQUJLQUtnQVNBQktBS1lBV3NpQ2lBR0lBcExHeUlHSUFFb0FxUUJJQUVvQXB3QmF5SUtJQVlnQ2tzYklRWWdBVUdZQVdvaEFTQUhRUUZySWdjTkFBc0xBa0FnQmtHQWdJREFBRThOQUNBY0lBWkJCWFFRR0NJaE5nSWdJQ0ZGRFFBZ0hDQWhOZ0lBQWtBZ0NBUkFJQllnRDJzaENpQVRJQkJySVFZZ0lVRWdhaUUrSUFpdElZY0JJQkt0SVlvQklCR3RJWXNCSUJxdElZZ0JJQit0SVl3QklBa29BaFFpUXEwaGpRRkNBU0dHQVFOQUlCd2dDallDQ0NBY0lBWTJBaWdnRENnQ3BBRWhCeUFNS0FLZ0FTRUlJQXdvQXB3QklRRWdIQ0FNS0FLWUFTSVZRUUp2SWlJMkFpd2dIQ0FCUVFKdklqODJBZ3dnSENBSUlCVnJJaUFnQm1zaUtEWUNKQ0FjSUFjZ0FXc2lFeUFLYXlJNE5nSUVJQjhpRmlFSUlCb2lBU0VPSUJFaUJ5RVlJQklpRlNFUEFrQWdoZ0VnalFGUkRRQWdRaUNHQWFkcklSQkJBQ0VPUVFBaENDQVdCRUJDZnlBUXJTS0pBWVpDZjRVZ2pBRjhJSWtCaUtjaENBc2dHZ1JBUW44Z0VLMGlpUUdHUW4rRklJZ0JmQ0NKQVlpbklRNExRUUFoRlVFQUlRY2dFUVJBUW44Z0VLMGlpUUdHUW4rRklJc0JmQ0NKQVlpbklRY0xJQklFUUVKL0lCQ3RJb2tCaGtKL2hTQ0tBWHdnaVFHSXB5RVZDMEVBSVJoQkFDRVdRUUVnRUVFQmEzUWlHeUFmU1FSQUlCOGdHMnV0UW44Z0VLMGlpUUdHUW4rRmZDQ0pBWWluSVJZTElCRWdHMHNFUUNBUklCdHJyVUovSUJDdElva0Joa0ovaFh3Z2lRR0lweUVZQzBFQUlROUJBQ0VCSUJvZ0cwc0VRQ0FhSUJ0cnJVSi9JQkN0SW9rQmhrSi9oWHdnaVFHSXB5RUJDeUFTSUJ0TkRRQWdFaUFiYTYxQ2Z5QVFyU0tKQVlaQ2Y0VjhJSWtCaUtjaER3dEJmeUFZSUF3b0FyUUJJaEJySWh0QkFDQVlJQnRQR3lJWVFRUnFJaHNnR0NBYlN4c2lHQ0FvSUJnZ0tFa2JJaTFCZnlBSElBd29BdGdCSWhocklodEJBQ0FISUJ0UEd5SUhRUVJxSWhzZ0J5QWJTeHNpQnlBR0lBWWdCMHNiSWlzZ0lodEJBWFFpQnlBcklDMGdJaHRCQVhSQkFYSWlHeUFISUJ0TEd5SW9JQ0JKSVJRZ0ZpQVFheUlIUVFBZ0J5QVdUUnNpQjBFRWF5SVdRUUFnQnlBV1R4c2lKeUFJSUJocklnZEJBQ0FISUFoTkd5SUhRUVJySWdoQkFDQUhJQWhQR3lJd0lDSWJRUUYwSWhnZ01DQW5JQ0liUVFGMFFRRnlJaVJKSVNrZ0RpQU1LQUs0QVNJV2F5SUhRUUFnQnlBT1RSc2lCMEVFYXlJSVFRQWdCeUFJVHhzaUNDRVFJQUVnRENnQzNBRWlEbXNpQjBFQUlBRWdCMDhiSWdGQkJHc2lCMEVBSUFFZ0IwOGJJZ0VoQjBGL0lCVWdGbXNpRmtFQUlCVWdGazhiSWhWQkJHb2lGaUFWSUJaTEd5SVZJQW9nQ2lBVlN4c2lGaUVWUVg4Z0R5QU9heUlPUVFBZ0RpQVBUUnNpRGtFRWFpSVBJQTRnRDBzYklnNGdPQ0FPSURoSkd5SWJJUThnUHdSQUlBRWhFQ0FXSVE4Z0d5RVZJQWdoQndzZ0tDQWdJQlFiSVNnZ0dDQWtJQ2tiSVJnZ0hDQXROZ0k4SUJ3Z0p6WUNPQ0FjSUNzMkFqUWdIQ0F3TmdJd0FrQWdFMEVJU1FSQVFRY2hCa0VBSVE0TUFRc2dQaUFpUVFWMElnNXJJQ2RCQm5ScUlUZ2dEaUFoYWlBd1FRWjBhaUVVSUFZZ0xXb2hMU0FHSUNkcUlTY2dDaUFiYWlFa0lBRWdDbW9oS1NBaElCaEJCWFJxSVNwQkFDRU9BMEFDUUFKQUlBNGdGa2tnRGtFSGNpSUdJQWhQY1EwQUlBNGdKRWtnQmlBcFQzRU5BQ0FPUVFocUlRNE1BUXRCQ0NBVElBNXJJZ1lnQmtFSVR4c2hKVUVBSVFZRFFDQWVJREFnQmlBT2FpSWlJQ3NnSWtFQmFpSXNJQlFnQmtFQ2RDSXVha0VRUVFBUUhpQWVJQ2NnSWlBdElDd2dMaUE0YWtFUVFRQVFIaUFHUVFGcUlnWWdKVWNOQUFzZ0hFRWdhaEFpSUI0Z0dDQU9JQ2dnRGtFSWFpSU9JQ3BCQ0VFQlFRQVFKa1VOQlFzZ0RrRUhjaUlHSUJOSkRRQUxDd0pBSUE0Z0UwOE5BQ0FPSUJaSklBWWdDRTl4UlFSQUlBNGdDaUFiYWs4TkFTQUdJQUVnQ21wSkRRRUxJQnhCSUdvaEJrRUFJU0lnRXlBT2F5SXdCRUFEUUNBZUlBWW9BaEFpTFNBT0lDSnFJaWNnQmlnQ0ZDQW5RUUZxSWlzZ0lrRUNkQ0k0SUFZb0FnQWdCaWdDREVFRmRHb2dMVUVHZEdwcVFSQkJBQkFlSUI0Z0JpZ0NHQ0l0SUFZb0FnZ2lGR29nSnlBR0tBSWNJQlJxSUNzZ0JpZ0NBQ0FHS0FJTVFRVjBheUF0UVFaMGFpQTRha0VnYWtFUVFRQVFIaUFpUVFGcUlpSWdNRWNOQUFzTElBWVFJaUFlSUJnZ0RpQW9JQk1nSVNBWVFRVjBha0VJUVFGQkFCQW1SUTBEQ3lBY0lCczJBaHdnSENBQk5nSVlJQndnRmpZQ0ZDQWNJQWcyQWhBZ0dDQW9TUVJBSUJWQkFYUWlCaUFQUVFGMFFRRnlJaFVnQmlBVlN4c2lCaUFUSUFZZ0Uwa2JJUVlnUGlBL1FRVjBJaFZySUFGQkJuUnFJUTRnRlNBaGFpQUlRUVowYWlFVklBb2dHMm9oRHlBQklBcHFJUW9nSVNBUVFRRjBJZ0VnQjBFQmRFRUJjaUlISUFFZ0Iwa2JJZ2RCQlhScUlSQURRQ0FlSUJnZ0NFRUlJQ2dnR0dzaUFTQUJRUWhQR3lBWWFpSUJJQllnRlVFQlFSQVFIaUFlSUJnZ0NpQUJJQThnRGtFQlFSQVFIaUFjRUNJZ0hpQVlJQWNnQVNBR0lCQkJBVUVJUVFBUUprVU5CQ0FZUVFocUloZ2dLRWtOQUFzTElBeEJtQUZxSVF3Z0lDRUdJQk1oQ2lDR0FVSUJmQ0tHQVNDSEFWSU5BQXNMUVFFaEJ5QWVJQ05CRUdzb0FnQWlBU0F2S0FJQUlnWnJJQ05CREdzb0FnQWdQU2dDQUNJS2F5QWpRUWhyS0FJQUlnZ2dCbXNnSTBFRWF5Z0NBQ0FLYXlBSktBSTBRUUVnQ0NBQmF4QWVJQjRRSXlBaEVCQU1CQXNnSGhBaklDRVFFRUVBSVFjTUF3c2dIaEFqUVFBaEJ3d0NDeUFmRUNCQkFBc2hCeUFjS0FJZ0VCQUxJQnhCUUdza0FDQUhEUUFNQkFzZ0hVRzRDR29oSFNBTlFUUnFJUTBnQ1VITUFHb2hDU0FMUVFGcUlnc2dGeWdDRUVrTkFBc2dHU2dDSUNFZElCa29BaFFvQWdBaEZ3c0NRQ0FkS0FJUUlnbEZEUUFnR1NnQ1JBMEFJQmNvQWhRaURTZ0NIQ0VCQWtBQ1FBSkFJQmtvQWtBaUJnUkFJQmNvQWhBaUMwRURTUTBDQWtBZ0RTZ0NHQ0lISUEwb0FtUkdCRUFnQnlBTktBS3dBVVlOQVFzZ00wRUJRZFRLQUVFQUVBOE1Cd3NDUUNBWktBSVlLQUlZSWdvb0FpUWlDQ0FLS0FKWVJ3MEFJQWdnQ2lnQ2pBRkhEUUFnQVNBSFFaZ0JiQ0lLYWlJQlFZd0JheWdDQUNBQlFaUUJheWdDQUdzZ0FVR1FBV3NvQWdBZ0FVR1lBV3NvQWdCcmJDSUJJQTBvQW1nZ0Ntb2lCMEdNQVdzb0FnQWdCMEdVQVdzb0FnQnJJQWRCa0FGcktBSUFJQWRCbUFGcktBSUFhMnhIRFFBZ0RTZ0N0QUVnQ21vaUIwR01BV3NvQWdBZ0IwR1VBV3NvQWdCcklBZEJrQUZyS0FJQUlBZEJtQUZyS0FJQWEyd2dBVVlOQWdzZ00wRUJRZFRLQUVFQUVBOE1CZ3NnRnlnQ0VDSUxRUU5KRFFFQ1FDQVpLQUlZS0FJWUlnY29BaVFpQ2lBSEtBSllSdzBBSUFvZ0J5Z0NqQUVpQ0VjTkFDQUJJQXBCbUFGc0lnZHFJZ0VvQXBRQklBRW9Bb3dCYXlBQktBS1FBU0FCS0FLSUFXdHNJZ0VnQnlBTktBSm9haUlIS0FLVUFTQUhLQUtNQVdzZ0J5Z0NrQUVnQnlnQ2lBRnJiRWNOQUNBTktBSzBBU0FJUVpnQmJHb2lCeWdDbEFFZ0J5Z0NqQUZySUFjb0FwQUJJQWNvQW9nQmEyd2dBVVlOQVFzZ00wRUJRZFRLQUVFQUVBOE1CUXNnQ1VFQ1JnUkFJQjBvQXVnclJRMERJQXRCQW5RUUZDSUxSUTBGSUJjb0FoQWlDRVVOQWlBWktBSkFCRUJCQUNFWEFrQWdDRUVNU1FSQVFRQWhCZ3dCQ3lBTlFTUnFJUW9DUUNBTElBMGdDRUhNQUd4cVFTUnJUdzBBSUFvZ0N5QUlRUUowYWs4TkFFRUFJUVlNQVFzZ0RVR0lBbW9oRENBTlFid0JhaUVWSUExQjhBQnFJUTRnRFNBSVFYeHhJZ1pCekFCc2FpRU5RUUFoQ1FOQUlBc2dDVUVDZEdvZ0RDQUpRY3dBYkNJSGFpQUhJQlZxSUFjZ0Rtb2dCeUFLYXYwSkFnRDlWZ0lBQWYxV0FnQUMvVllDQUFQOUN3SUFJQWxCQkdvaUNTQUdSdzBBQ3lBR0lBaEdEUVFMQWtBZ0NFRURjU0lIUlFSQUlBWWhDUXdCQ3lBR0lRa0RRQ0FMSUFsQkFuUnFJQTBvQWlRMkFnQWdDVUVCYWlFSklBMUJ6QUJxSVEwZ0YwRUJhaUlYSUFkSERRQUxDeUFHSUFoclFYeExEUU1nQzBFTWFpRUdJQXRCQ0dvaENpQUxRUVJxSVF3RFFDQUxJQWxCQW5RaUIyb2dEU2dDSkRZQ0FDQUhJQXhxSUEwb0FuQTJBZ0FnQnlBS2FpQU5LQUs4QVRZQ0FDQUdJQWRxSUEwb0FvZ0NOZ0lBSUExQnNBSnFJUTBnQ1VFRWFpSUpJQWhIRFFBTERBTUxRUUFoRndKQUlBaEJERWtFUUVFQUlRWU1BUXNnRFVFMGFpRUtBa0FnQ3lBTklBaEJ6QUJzYWtFVWEwOE5BQ0FLSUFzZ0NFRUNkR3BQRFFCQkFDRUdEQUVMSUExQm1BSnFJUXdnRFVITUFXb2hGU0FOUVlBQmFpRU9JQTBnQ0VGOGNTSUdRY3dBYkdvaERVRUFJUWtEUUNBTElBbEJBblJxSUF3Z0NVSE1BR3dpQjJvZ0J5QVZhaUFISUE1cUlBY2dDbXI5Q1FJQS9WWUNBQUg5VmdJQUF2MVdBZ0FEL1FzQ0FDQUpRUVJxSWdrZ0JrY05BQXNnQmlBSVJnMERDd0pBSUFoQkEzRWlCMFVFUUNBR0lRa01BUXNnQmlFSkEwQWdDeUFKUVFKMGFpQU5LQUkwTmdJQUlBbEJBV29oQ1NBTlFjd0FhaUVOSUJkQkFXb2lGeUFIUncwQUN3c2dCaUFJYTBGOFN3MENJQXRCREdvaEJpQUxRUWhxSVFvZ0MwRUVhaUVNQTBBZ0N5QUpRUUowSWdkcUlBMG9BalEyQWdBZ0J5QU1haUFOS0FLQUFUWUNBQ0FISUFwcUlBMG9Bc3dCTmdJQUlBWWdCMm9nRFNnQ21BSTJBZ0FnRFVHd0Ftb2hEU0FKUVFScUlna2dDRWNOQUFzTUFnc2dIU2dDMENzb0FoUkJBVVlFUUNBR0JFQWdEU2dDSkNBTktBSndJQTBvQXJ3QklBRVFYd3dFQ3lBTktBSTBJQTBvQW9BQklBMG9Bc3dCSUFFUVh3d0RDeUFHQkVBZ0RTZ0NKQ0FOS0FKd0lBMG9BcndCSUFFUVhnd0RDeUFOS0FJMElBMG9Bb0FCSUEwb0Fzd0JJQUVRWGd3Q0N5QkFJQXMyQWdBZ00wRUJRWkhMQUNCQUVBOE1BUXNnR1NnQ0dDZ0NHQ2dDSUJvQ2Z5QWRLQUxvS3lFSFFRQWhEa0VBSUFoQkEzUVFGQ0lOUlEwQUdnSkFJQUZGRFFBZ0NFVU5BQ0FOSUFoQkFuUnFJUk1nQ0VGOGNTRVBJQWhCQTNFaERDQUlRUUZySVJBRFFFRUFJUmRCQUNFSklCQkJBMDhFUUFOQUlBMGdGMEVDZENJR2FpQUdJQXRxS0FJQUtnSUFPQUlBSUEwZ0JrRUVjaUlLYWlBS0lBdHFLQUlBS2dJQU9BSUFJQTBnQmtFSWNpSUthaUFLSUF0cUtBSUFLZ0lBT0FJQUlBMGdCa0VNY2lJR2FpQUdJQXRxS0FJQUtnSUFPQUlBSUJkQkJHb2hGeUFKUVFScUlna2dEMGNOQUFzTFFRQWhDaUFNQkVBRFFDQU5JQmRCQW5RaUJtb2dCaUFMYWlnQ0FDb0NBRGdDQUNBWFFRRnFJUmNnQ2tFQmFpSUtJQXhIRFFBTEMwRUFJUVlnQnlFWEEwQWdFeUFHUVFKMEloSnFJZ2xCQURZQ0FFTUFBQUFBSVk0QlFRQWhDa0VBSVJZZ0VFRUNTd1JBQTBBZ0NTQVhLZ0lBSUEwZ0NrRUNkR29pRlNvQ0FKUWdqZ0dTSW80Qk9BSUFJQWtnRnlvQ0JDQVZLZ0lFbENDT0FaSWlqZ0U0QWdBZ0NTQVhLZ0lJSUJVcUFnaVVJSTRCa2lLT0FUZ0NBQ0FKSUJjcUFnd2dGU29DREpRZ2pnR1NJbzRCT0FJQUlBcEJCR29oQ2lBWFFSQnFJUmNnRmtFRWFpSVdJQTlIRFFBTEMwRUFJUlVnREFSQUEwQWdDU0FYS2dJQUlBMGdDa0VDZEdvcUFnQ1VJSTRCa2lLT0FUZ0NBQ0FLUVFGcUlRb2dGMEVFYWlFWElCVkJBV29pRlNBTVJ3MEFDd3NnQ3lBU2FpSUtJQW9vQWdBaUNrRUVhallDQUNBS0lJNEJPQUlBSUFaQkFXb2lCaUFJUncwQUN5QU9RUUZxSWc0Z0FVY05BQXNMSUEwUUVFRUJDeUY3SUFzUUVDQjdSUTBDQ3lBWktBSVVLQUlBSWhZb0FoQkZCRUJCQVNFeERBSUxJQmtvQWlBb0F0QXJJaGRCdUFocUlSTWdGMEcwQ0dvaEVpQVpLQUpFSVJBZ0ZpZ0NGQ0VISUJrb0FoZ29BaGdoQ2tFQUlRZ0RRQUpBSUJBRVFDQVFJQWhCQW5ScUtBSUFSUTBCQ3lBSEtBSWNJZ0VnQ2lnQ0pFR1lBV3hxSVFzQ2Z5QVpLQUpBUlFSQUlBc29BcFFCSUFzb0Fvd0JheUVHSUFzb0FwQUJJQXNvQW9nQmF5RUJRUUFoREVFMERBRUxJQUVnQnlnQ0dFR1lBV3hxSWdaQmtBRnJLQUlBSUFzb0FnZ2dDeWdDQUdzaUFTQUdRWmdCYXlnQ0FHcHJJUXdnQ3lnQ0RDQUxLQUlFYXlFR1FTUUxJUWtnQ2lnQ0dDRUxBbjhnQ2lnQ0lBUkFRUUVnQzBFQmEzUWlDMEVCYXlFZFFRQWdDMnNNQVF0QmZ5QUxkRUYvY3lFZFFRQUxJUThnQVVVTkFDQUdSUTBBSUFjZ0NXb29BZ0FoQ1NBWEtBSVVRUUZHQkVBZ0V5QUlRYmdJYkNJTGFpRVJJQXNnRW1vaEdDQUJRUUZ4SVJvZ0FVRUNkQ0V6SUFGQmZIRWlEa0VDZENFYklCMzlFU0dDQVNBUC9SRWhnQUZCQUNFVklBRkJCRWtoSHdOQUFrQUNRQUpBSUI4TkFDQUpJQkZKSUJnZ0NTQXpha2x4RFFBZ0NTQWJhaUVOSUJmOUNRSzBDQ0dEQVVFQUlRc0RRQ0FKSUF0QkFuUnFJaUFnZ0FFZ2d3RWdJUDBBQWdEOXJnRWloQUVnZ2dIOXRnRWdoQUVnZ0FIOU9mMVMvUXNDQUNBTFFRUnFJZ3NnRGtjTkFBc2dEaUlMSUFGR0RRSU1BUXNnQ1NFTlFRQWhDd3NnQzBFQmNpRUpJQm9FUUNBTklBOGdGeWdDdEFnZ0RTZ0NBR29pQ3lBZElBc2dIVWdiSUFzZ0QwZ2JOZ0lBSUExQkJHb2hEU0FKSVFzTElBRWdDVVlOQUFOQUlBMGdEeUFYS0FLMENDQU5LQUlBYWlJSklCMGdDU0FkU0JzZ0NTQVBTQnMyQWdBZ0RTQVBJQmNvQXJRSUlBMG9BZ1JxSWdrZ0hTQUpJQjFJR3lBSklBOUlHellDQkNBTlFRaHFJUTBnQzBFQ2FpSUxJQUZIRFFBTEN5QU5JQXhCQW5ScUlRa2dGVUVCYWlJVklBWkhEUUFMREFFTElCMnNJWVlCSUErc0lZY0JRUUFoRlFOQVFRQWhDd05BSUFrQ2Z5QWRJQWtxQWdBaWpnRkRBQUFBVDE0TkFCb2dEeUNPQVVNQUFBRFBYUTBBR2lDSEFTQVhOQUswQ0FKL0lJNEJrQ0tPQVl0REFBQUFUMTBFUUNDT0FhZ01BUXRCZ0lDQWdIZ0xySHdpaWdFZ2hnRWdoZ0VnaWdGVkd5Q0hBU0NLQVZVYnB3czJBZ0FnQ1VFRWFpRUpJQXRCQVdvaUN5QUJSdzBBQ3lBSklBeEJBblJxSVFrZ0ZVRUJhaUlWSUFaSERRQUxDeUFIUWN3QWFpRUhJQmRCdUFocUlSY2dDa0UwYWlFS1FRRWhNU0FJUVFGcUlnZ2dGaWdDRUVrTkFBc01BUXNnQlVFQlFab1pRUUFRRHdzZ1FFRVFhaVFBSURGRkJFQWdUeEF1SUFBZ0FDZ0NDRUdBZ0FKeU5nSUlJQVZCQVVIdzFBQkJBQkFQREFFTEFrQWdBa1VOQUFKL0lBSWhCMEVBSVFZQ1FDQUFLQUxRQVNJVlFRRVFWQ0lCUVg5R0RRQWdBU0FEU3cwQVFRRWdGU2dDR0NJQktBSVFSUTBCR2lBQktBSVlJUWdnRlNnQ0ZDZ0NBQ2dDRkNFWEEwQWdDQ2dDR0NJQlFRZHhJUUlnQVVFRGRpRURJQmNvQWh3aUJpQUlLQUlrUVpnQmJHb2hBUUovSUJVb0FrQUVRQ0FHSUJjb0FoaEJtQUZzYWlJR1FaQUJheWdDQUNBQktBSUlJQUVvQWdCcklnc2dCa0dZQVdzb0FnQnFheUVNSUFFb0Fnd2dBU2dDQkdzaENVRWtEQUVMSUFFb0FwUUJJQUVvQW93QmF5RUpJQUVvQXBBQklBRW9Bb2dCYXlFTFFRQWhERUUwQ3lBWGFpZ0NBQ0VCQWtBQ1FBSkFBa0FDUUVFRUlBTWdBa0VBUjJvaUFpQUNRUU5HRzBFQmF3NEVBUUlFQUFRTElBbEZEUU1nQ3lBTWFpRUdJQXRCQW5RaEFpQUpRUVJQQkVBZ0NVRjhjU0VLUVFBaEN3TkFJQWNnQVNBQ0VCSWhCeUFCSUFaQkFuUWlBMm9pRFNBRGFpSU1JQU5xSWc0Z0Eyb2hBU0FDSUFkcUlBMGdBaEFTSUFKcUlBd2dBaEFTSUFKcUlBNGdBaEFTSUFKcUlRY2dDMEVFYWlJTElBcEhEUUFMQzBFQUlRc2dDVUVEY1NJRFJRMERBMEFnQnlBQklBSVFFaUVISUFFZ0JrRUNkR29oQVNBQ0lBZHFJUWNnQzBFQmFpSUxJQU5IRFFBTERBTUxJQWxGSUF0RmNpRUNJQWdvQWlCRkRRRWdBZzBDSUF0QkFuUWhEaUFMUVh4eElnTkJBblFoRDBFQUlRMERRQUpBQWtBQ1FDQUxRUVJKRFFBZ0FTQUhJQXRxU1NBQklBNXFJQWRMY1EwQUlBTWdCMm9oZkNBQklBOXFJUVpCQUNFS0EwQWdCeUFLYWlBQklBcEJBblJxL1FBQ0FQME1BQUFBQUFBQUFBQUFBQUFBQUFBQUFQME5BQVFJREFBQUFBQUFBQUFBQUFBQUFQMWFBQUFBSUFwQkJHb2lDaUFEUncwQUN5QjhJUWNnQXlJQ0lBdEdEUUlNQVFzZ0FTRUdRUUFoQWd0QkFDRUtJQXNnQWlJQmEwRUhjU0lXQkVBRFFDQUhJQVlvQWdBNkFBQWdBVUVCYWlFQklBZEJBV29oQnlBR1FRUnFJUVlnQ2tFQmFpSUtJQlpIRFFBTEN5QUNJQXRyUVhoTERRQURRQ0FISUFZb0FnQTZBQUFnQnlBR0tBSUVPZ0FCSUFjZ0JpZ0NDRG9BQWlBSElBWW9BZ3c2QUFNZ0J5QUdLQUlRT2dBRUlBY2dCaWdDRkRvQUJTQUhJQVlvQWhnNkFBWWdCeUFHS0FJY09nQUhJQWRCQ0dvaEJ5QUdRU0JxSVFZZ0FVRUlhaUlCSUF0SERRQUxDeUFHSUF4QkFuUnFJUUVnRFVFQmFpSU5JQWxIRFFBTERBSUxJQWxGSUF0RmNpRUNJQWdvQWlBRVFDQUNEUUlnQzBFQ2RDRU9JQXRCQVhRaER5QUxRWHh4SWdOQkFuUWhGaUFEUVFGMElSQkJBQ0VOQTBBQ1FBSkFBa0FnQzBFRVNRMEFJQUVnQnlBUGFra2dBU0FPYWlBSFMzRU5BQ0FCSUJacUlRWWdCeUFRYWlGOVFRQWhDZ05BSUFjZ0NrRUJkR29nQVNBS1FRSjBhdjBBQWdEOURBQUFBQUFBQUFBQUFBQUFBQUFBQUFEOURRQUJCQVVJQ1F3TkFBRUFBUUFCQUFIOVd3RUFBQ0FLUVFScUlnb2dBMGNOQUFzZ2ZTRUhJQU1pQWlBTFJnMENEQUVMSUFFaEJrRUFJUUlMUVFBaENpQUxJQUlpQVd0QkIzRWlFd1JBQTBBZ0J5QUdLQUlBT3dFQUlBRkJBV29oQVNBSFFRSnFJUWNnQmtFRWFpRUdJQXBCQVdvaUNpQVRSdzBBQ3dzZ0FpQUxhMEY0U3cwQUEwQWdCeUFHS0FJQU93RUFJQWNnQmlnQ0JEc0JBaUFISUFZb0FnZzdBUVFnQnlBR0tBSU1Pd0VHSUFjZ0JpZ0NFRHNCQ0NBSElBWW9BaFE3QVFvZ0J5QUdLQUlZT3dFTUlBY2dCaWdDSERzQkRpQUhRUkJxSVFjZ0JrRWdhaUVHSUFGQkNHb2lBU0FMUncwQUN3c2dCaUFNUVFKMGFpRUJJQTFCQVdvaURTQUpSdzBBQ3d3Q0N5QUNEUUVnQzBFQ2RDRU9JQXRCQVhRaER5QUxRWHh4SWdOQkFuUWhGaUFEUVFGMElSQkJBQ0VOQTBBQ1FBSkFBa0FnQzBFRVNRMEFJQUVnQnlBUGFra2dBU0FPYWlBSFMzRU5BQ0FCSUJacUlRWWdCeUFRYWlGK1FRQWhDZ05BSUFjZ0NrRUJkR29nQVNBS1FRSjBhdjBBQWdEOURBQUFBQUFBQUFBQUFBQUFBQUFBQUFEOURRQUJCQVVJQ1F3TkFBRUFBUUFCQUFIOVd3RUFBQ0FLUVFScUlnb2dBMGNOQUFzZ2ZpRUhJQU1pQWlBTFJnMENEQUVMSUFFaEJrRUFJUUlMUVFBaENpQUxJQUlpQVd0QkIzRWlFd1JBQTBBZ0J5QUdLQUlBT3dFQUlBRkJBV29oQVNBSFFRSnFJUWNnQmtFRWFpRUdJQXBCQVdvaUNpQVRSdzBBQ3dzZ0FpQUxhMEY0U3cwQUEwQWdCeUFHS0FJQU93RUFJQWNnQmlnQ0JEc0JBaUFISUFZb0FnZzdBUVFnQnlBR0tBSU1Pd0VHSUFjZ0JpZ0NFRHNCQ0NBSElBWW9BaFE3QVFvZ0J5QUdLQUlZT3dFTUlBY2dCaWdDSERzQkRpQUhRUkJxSVFjZ0JrRWdhaUVHSUFGQkNHb2lBU0FMUncwQUN3c2dCaUFNUVFKMGFpRUJJQTFCQVdvaURTQUpSdzBBQ3d3QkN5QUNEUUFnQzBFQ2RDRU9JQXRCZkhFaUEwRUNkQ0VQUVFBaERRTkFBa0FDUUFKQUlBdEJCRWtOQUNBQklBY2dDMnBKSUFFZ0Rtb2dCMHR4RFFBZ0F5QUhhaUYvSUFFZ0Qyb2hCa0VBSVFvRFFDQUhJQXBxSUFFZ0NrRUNkR3I5QUFJQS9Rd0FBQUFBQUFBQUFBQUFBQUFBQUFBQS9RMEFCQWdNQUFBQUFBQUFBQUFBQUFBQS9Wb0FBQUFnQ2tFRWFpSUtJQU5IRFFBTElIOGhCeUFESWdJZ0MwWU5BZ3dCQ3lBQklRWkJBQ0VDQzBFQUlRb2dDeUFDSWdGclFRZHhJaFlFUUFOQUlBY2dCaWdDQURvQUFDQUJRUUZxSVFFZ0IwRUJhaUVISUFaQkJHb2hCaUFLUVFGcUlnb2dGa2NOQUFzTElBSWdDMnRCZUVzTkFBTkFJQWNnQmlnQ0FEb0FBQ0FISUFZb0FnUTZBQUVnQnlBR0tBSUlPZ0FDSUFjZ0JpZ0NERG9BQXlBSElBWW9BaEE2QUFRZ0J5QUdLQUlVT2dBRklBY2dCaWdDR0RvQUJpQUhJQVlvQWh3NkFBY2dCMEVJYWlFSElBWkJJR29oQmlBQlFRaHFJZ0VnQzBjTkFBc0xJQVlnREVFQ2RHb2hBU0FOUVFGcUlnMGdDVWNOQUFzTElCZEJ6QUJxSVJjZ0NFRTBhaUVJUVFFaEJpQnlRUUZxSW5JZ0ZTZ0NHQ2dDRUVrTkFBc0xJQVlMUlEwQklFOG9BdHdySWdGRkRRQWdBUkFRSUU5Q0FEY0MzQ3NMSUFBZ0FDMEFSRUgrQVhFNkFFUWdBQ0FBS0FJSVFmOStjVFlDQ0VFQklXY2dCQ2tEQ0NLR0FWQUVma0lBQlNDR0FTQUVLUU00ZlF0UUlBQW9BZ2dpQVVIQUFFWnhEUUFnQVVHQUFrWU5BQ0FFSUU1QkNtcEJBaUFGRUJwQkFrY0VRQ0FGUVFGQkFpQUFLQUs0QVJ0QmxoSkJBQkFQSUFBb0FyZ0JSU0ZuREFFTElFNUJDbW9nVGtFTWFrRUNFQkVnVGlnQ0RDSUJRWkQvQTBZTkFDQUJRZG4vQTBZRVFDQUFRWUFDTmdJSUlBQkJBRFlDekFFTUFRc2dCQ2tEQ0NLR0FWQUVma0lBQlNDR0FTQUVLUU00ZlF0UUJFQWdBRUhBQURZQ0NDQUZRUUpCckQ5QkFCQVBEQUVMUVFBaFp5QUZRUUZCN0Q1QkFCQVBDeUJPUVJCcUpBQWdad3NMQUNBQUJFQWdBQkFRQ3d1MEFRRUJmeUFBS0FJTVJRUkFJQUlnQUNnQ0pDQUJFUU1BRHdzQ1FFRUlFQlFpQTBVTkFDQURJQUkyQWdRZ0F5QUJOZ0lBUVFnUUZDSUJSUVJBSUFNUUVBOExJQUVnQXpZQ0FDQUFJQUFvQWdSQjVBQnNJZ0kyQWlnRFFDQUFLQUlZSUFKS0RRQUxJQUVnQUNnQ0ZEWUNCQ0FBSUFFMkFoUWdBQ0FBS0FJWVFRRnFOZ0lZSUFBb0Fod2lBVVVOQUNBQktBSUFRUUEyQWdnZ0FDQUJLQUlFTmdJY0lBQWdBQ2dDSUVFQmF6WUNJQ0FCRUJBTEMvb0NBUVIvQWtBZ0FFVU5BQ0FBS0FLc0tDSUJCRUFnQUNnQ3FDZ2lBZ1JBUVFBaEFRTkFJQUFvQXF3b0lBRkJBM1JxS0FJQUlnTUVRQ0FERUJBZ0FDZ0NxQ2doQWdzZ0FVRUJhaUlCSUFKSkRRQUxJQUFvQXF3b0lRRUxJQUJCQURZQ3FDZ2dBUkFRSUFCQkFEWUNyQ2dMSUFBb0FyUW9JZ0VFUUNBQkVCQWdBRUVBTmdLMEtBc2dBQ2dDMENzaUFRUkFJQUVRRUNBQVFRQTJBdEFyQ3lBQUtBTHNLeUlCQkVBZ0FSQVFJQUJCQURZQzdDc0xJQUFvQXVncklnRUVRQ0FCRUJBZ0FFRUFOZ0xvS3dzZ0FDZ0MvQ3NpQVFSQUlBRVFFQ0FBUVFBMkFvUXNJQUJDQURjQy9Dc0xJQUFvQXZBcklnRUVRQ0FBS0FMMEt5SURCSDlCQUNFQ0EwQWdBU2dDRENJRUJFQWdCQkFRSUFGQkFEWUNEQ0FBS0FMMEt5RURDeUFCUVJScUlRRWdBa0VCYWlJQ0lBTkpEUUFMSUFBb0F2QXJCU0FCQ3hBUUlBQkJBRFlDOENzTElBQW9BdVFySWdFRVFDQUJFQkFnQUVFQU5nTGtLd3NnQUNnQzNDc2lBVVVOQUNBQkVCQWdBRUlBTndMY0t3c0x5QWNDRVg4QmZpQUFLQUlRSWdoQklFOEVRQ0FBS1FNSXB3OExBa0FnQUNnQ0ZDSURRUVJPQkVBZ0FDZ0NBQ0lDUVFOcktBSUFJUUVnQUNBRFFRUnJJZ00yQWhRZ0FDQUNRUVJyTmdJQURBRUxJQU5CQUV3RVFBd0JDeUFEUVFGeElRMGdBQ2dDQUNFQ0FrQWdBMEVCUmdSQVFSZ2hCQXdCQ3lBRFFmNy8vLzhIY1NFSlFSZ2hCQU5BSUFBZ0FrRUJheUlHTmdJQUlBSXRBQUFoRENBQUlBSkJBbXNpQWpZQ0FDQUFJQU5CQVdzMkFoUWdCaTBBQUNFR0lBQWdBMEVDYXlJRE5nSVVJQXdnQkhRZ0FYSWdCaUFFUVFocmRISWhBU0FFUVJCcklRUWdCVUVDYWlJRklBbEhEUUFMQ3lBTkJFQWdBQ0FDUVFGck5nSUFJQUl0QUFBaERpQUFJQU5CQVdzMkFoUWdEaUFFZENBQmNpRUJDMEVBSVFNTElBQW9BaGdoQWlBQUlBRkIvd0Z4SWdsQmp3RkxOZ0lZSUFCQkIwRUlJQUZCZ0lDQStBZHhRWUNBZ1BnSFJodEJDQ0FDR3lJQ1FRaEJCMEVJSUFGQmdJRDhBM0ZCZ0lEOEEwWWJJQUZCLy8vLy8zaE5HMm9pQkVFSVFRZEJDQ0FCUVlEK0FYRkJnUDRCUmhzZ0FVRVFka0gvQVhFaUJVR1BBVTBiYWlJR1FRaEJCMEVJSUFGQi93QnhRZjhBUmhzZ0FVRUlka0gvQVhFaUIwR1BBVTBiSUFocWFpSUtOZ0lRSUFBZ0FDa0RDQ0FGSUFKMElBRkJHSFp5SUFjZ0JIUnlJQWtnQm5SeXJTQUlyWWFFSWhJM0F3Z2dDa0VmVFFSQUFrQWdBMEVFVGdSQUlBQW9BZ0FpQWtFRGF5Z0NBQ0VCSUFBZ0EwRUVhellDRkNBQUlBSkJCR3MyQWdBTUFRc2dBMEVBVEFSQVFRQWhBUXdCQ3lBRFFRRnhJUkFnQUNnQ0FDRUNBa0FnQTBFQlJnUkFRUmdoQkVFQUlRRU1BUXNnQTBIKy8vLy9CM0VoQmtFWUlRUkJBQ0VCUVFBaEJRTkFJQUFnQWtFQmF5SUhOZ0lBSUFJdEFBQWhEeUFBSUFKQkFtc2lBallDQUNBQUlBTkJBV3MyQWhRZ0J5MEFBQ0VISUFBZ0EwRUNheUlETmdJVUlBOGdCSFFnQVhJZ0J5QUVRUWhyZEhJaEFTQUVRUkJySVFRZ0JVRUNhaUlGSUFaSERRQUxDeUFRUlEwQUlBQWdBa0VCYXpZQ0FDQUNMUUFBSVJFZ0FDQURRUUZyTmdJVUlCRWdCSFFnQVhJaEFRc2dBQ0FCUWY4QmNTSUNRWThCU3pZQ0dDQUFRUWhCQjBFSUlBRkJnSUNBK0FkeFFZQ0FnUGdIUmhzZ0NVR1BBVTBiSWdOQkNFRUhRUWdnQVVHQWdQd0RjVUdBZ1B3RFJoc2dBVUgvLy8vL2VFMGJhaUlFUVFoQkIwRUlJQUZCZ1A0QmNVR0EvZ0ZHR3lBQlFSQjJRZjhCY1NJRlFZOEJUUnRxSWdoQkNFRUhRUWdnQVVIL0FIRkIvd0JHR3lBQlFRaDJRZjhCY1NJSlFZOEJUUnNnQ21wcU5nSVFJQUFnQlNBRGRDQUJRUmgyY2lBSklBUjBjaUFDSUFoMGNxMGdDcTJHSUJLRUloSTNBd2dMSUJLbkM4a1VBaDEvQm5zZ0FDZ0NDQ0lLSUFBb0FnUnFJUWdDUUNBQUtBSU1SUVJBSUFoQkFrZ05BU0FEUVFCTURRRWdBQ2dDQUNJRklBaEJCR3NpQmtFQmRpSU1RUUowSWdrZ0FTQUtRUUowYWlJSElBTkJBblFpQkdwcVFRUnFTU0FGSUF4QkEzUnFRUWhxSWdBZ0IwRUVha3R4SUFVZ0FTQUVhaUFKYWtFRWFra2dBVUVFYWlBQVNYRnlJUklnQ0VFRVNTSVVJQUpCQVVkeUlSVWdBa0VCUmlBR1FRVkxjU0VXSUFoQi9QLy8vd2R4SVJNZ0NFRUJjU0VYSUFwQkFXb2hEeUFJUVFOeElSRWdBU0FGYXlFWUlBVWdDRUVDZEdvaEdTQUZJQWhCQVdzaUFFRUNkR29oR2lBTVFRRnFJaHRCZkhFaUVFRUJkQ0VMSUFJZ0NteEJBblFoSENBQVFRRjJJQUpzUVFKMElSMERRQ0FCS0FJQUlBRWdIR29vQWdBaUNVRUJha0VCZFdzaEJ3SkFJQlFFUUNBSklRUkJBQ0VHREFFTFFRQWhCZ0pBQW45QkFDQVdSUTBBR2tFQUlCSU5BQm9nQ2YwUklTSWdCLzBSSVNIOURBQUFBQUFDQUFBQUJBQUFBQVlBQUFBaEpVRUFJUUFEUUNBQklBQkJBblJxL1FBQ0JDRWtJQUVnQUNBUGFrRUNkR3I5QUFJQUlTTWdCU0FBUVFOMGFpSUVJQ0g5V2dJQUF5QUVRUWhxSUNRZ0l5QWlJQ1A5RFF3TkRnOFFFUklURkJVV0Z4Z1pHaHNpSlAydUFmME1BZ0FBQUFJQUFBQUNBQUFBQWdBQUFQMnVBVUVDL2F3Qi9iRUJJaUw5V2dJQUFDQUVRUkJxSUNMOVdnSUFBU0FFUVJocUlDTDlXZ0lBQWlBRklDWDlEQUVBQUFBQkFBQUFBUUFBQUFFQUFBRDlVQ0ltL1JzQVFRSjBhaUFpSUNFZ0l2ME5EQTBPRHhBUkVoTVVGUllYR0JrYUcvMnVBVUVCL2F3QklDVDlyZ0VpSWYxYUFnQUFJQVVnSnYwYkFVRUNkR29nSWYxYUFnQUJJQVVnSnYwYkFrRUNkR29nSWYxYUFnQUNJQVVnSnYwYkEwRUNkR29nSWYxYUFnQURJQ1g5REFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUQ5cmdFaEpTQWlJU0VnSXlFaUlBQkJCR29pQUNBUVJ3MEFDeUFpL1JzRElRUWdJZjBiQXlFSElCQWdHMFlOQVNBTElRWWdCQ0VKSUJBTElRQURRQ0FCSUFCQkFXb2lDaUFDYkVFQ2RHb29BZ0FoSGlBQklBQWdEMm9nQW14QkFuUnFLQUlBSVFRZ0JTQUdRUUowYWlJT0lBYzJBZ0FnRGlBSElCNGdCQ0FKYWtFQ2FrRUNkV3NpQjJwQkFYVWdDV28yQWdRZ0JrRUNhaUVHSUFBZ0RFY2hIeUFFSVFrZ0NpRUFJQjhOQUFzTUFRc2dDeUVHQ3lBRklBWkJBblJxSUFjMkFnQkJmQ0VBSUJjRWZ5QWFJQUVnSFdvb0FnQWdCRUVCYWtFQmRXc2lBRFlDQUNBQUlBZHFRUUYxSVFkQmVBVkJmQXNnR1dvZ0JDQUhhallDQUVFQUlRWkJBQ0VBUVFBaEJBSkFJQlVnR0NBTlFRSjBha0VRU1hKRkJFQURRQ0FCSUFCQkFuUWlCR29nQkNBRmF2MEFBZ0Q5Q3dJQUlBQkJCR29pQUNBVFJ3MEFDeUFUSWdRZ0NFWU5BUXNnQkNFQUlCRUVRQU5BSUFFZ0FDQUNiRUVDZEdvZ0JTQUFRUUowYWlnQ0FEWUNBQ0FBUVFGcUlRQWdCa0VCYWlJR0lCRkhEUUFMQ3lBRUlBaHJRWHhMRFFBRFFDQUJJQUFnQW14QkFuUnFJQVVnQUVFQ2RHb29BZ0EyQWdBZ0FTQUFRUUZxSWdRZ0FteEJBblJxSUFVZ0JFRUNkR29vQWdBMkFnQWdBU0FBUVFKcUlnUWdBbXhCQW5ScUlBVWdCRUVDZEdvb0FnQTJBZ0FnQVNBQVFRTnFJZ1FnQW14QkFuUnFJQVVnQkVFQ2RHb29BZ0EyQWdBZ0FFRUVhaUlBSUFoSERRQUxDeUFCUVFScUlRRWdEVUVCYWlJTklBTkhEUUFMREFFTEFrQUNRQUpBSUFoQkFXc09BZ0FCQWdzZ0EwRUFUQTBDUVFBaEFnSkFJQU5CQkVrRVFDQUJJUUFNQVFzZ0FTQURRZnovLy84SGNTSUNRUUowYWlFQUEwQWdBU0FHUVFKMGFpSUVJQVQ5QUFJQUlpSDlHd0JCQW0zOUVTQWgvUnNCUVFKdC9Sd0JJQ0g5R3dKQkFtMzlIQUlnSWYwYkEwRUNiZjBjQS8wTEFnQWdCa0VFYWlJR0lBSkhEUUFMSUFJZ0EwWU5Bd3NEUUNBQUlBQW9BZ0JCQW0wMkFnQWdBRUVFYWlFQUlBSkJBV29pQWlBRFJ3MEFDd3dDQ3lBRFFRQk1EUUVnQUNnQ0FDRUpJQUlnQ214QkFuUWhCd05BSUFrZ0FTZ0NBQ0FCSUFkcUlnUW9BZ0JCQVdwQkFYVnJJZ0EyQWdRZ0NTQUFJQVFvQWdCcUlnQTJBZ0FnQVNBQU5nSUFJQUVnQWtFQ2RHb2dDU2dDQkRZQ0FDQUJRUVJxSVFFZ0JrRUJhaUlHSUFOSERRQUxEQUVMSUFoQkEwZ05BQ0FEUVFCTURRQWdBQ2dDQUNJRklBZ2dDRUVCY1NJVVJTSUdhMEVFYXlJSlFRRjJJZ3RCQW5RaUJ5QUJJQU5CQW5RaUFHcHFTU0FGSUF0QkEzUnFRUXhxSWdRZ0FVRUVha3R4SUFWQkJHb2dBQ0FCSUFwQkFuUnFJZ0JxSUFkcVFRaHFTU0FBUVFocUlBUkpjWEloRlNBQ1FRRkhJQWhCQkVseUlSWWdBa0VCUmlBSlFRVkxjU0VYSUFoQi9QLy8vd2R4SVJBZ0NFRURjU0VSSUFFZ0JXc2hHQ0FGSUFoQkFuUnFRUVJySVJrZ0JTQUlRUUpySWdCQkFuUnFJUm9nQzBFQmFpSVNRWHh4SWd4QkFYSWhFeUFNUVFGMFFRRnlJUXNnQWlBS2JFRUNkQ0ViSUFBZ0JtdEJBa2toSENBSVFRRjJRUUZySUFKc1FRSjBJUjBEUUNBRklBRW9BZ0FnQVNBYmFpSVBJQUpCQW5ScUtBSUFJZ2tnRHlnQ0FDSUFha0VDYWtFQ2RXc2lCeUFBYWpZQ0FFRUJJUVFDUUNBY0JFQWdDU0VHREFFTEFrQUNmMEVCSUJkRkRRQWFRUUVnRlEwQUdpQUovUkVoSVNBSC9SRWhJa0VBSVFBRFFDQUZJQUJCQTNScUlnY2dBU0FBUVFKMElnUnEvUUFDQkNBaElBUWdEMnI5QUFJSUlpSDlEUXdORGc4UUVSSVRGQlVXRnhnWkdoc2lKQ0FoL2E0Qi9Rd0NBQUFBQWdBQUFBSUFBQUFDQUFBQS9hNEJRUUw5ckFIOXNRRWlJeUFqSUNJZ0kvME5EQTBPRHhBUkVoTVVGUllYR0JrYUcvMnVBVUVCL2F3QklDVDlyZ0VpSlAwTkJBVUdCeGdaR2hzSUNRb0xIQjBlSC8wTEFoUWdCeUFpSUNUOURRd05EZzhRRVJJVEFBRUNBeFFWRmhjZ0kvME5BQUVDQXdRRkJnY1FFUklUREEwT0QvMExBZ1FnSXlFaUlBQkJCR29pQUNBTVJ3MEFDeUFoL1JzRElRWWdJdjBiQXlFSElBd2dFa1lOQVNBTElRUWdCaUVKSUJNTElRQURRQ0FCSUFBZ0FteEJBblJxS0FJQUlSNGdEeUFBUVFGcUlnb2dBbXhCQW5ScUtBSUFJUVlnQlNBRVFRSjBhaUlPSUFjMkFnQWdEaUFISUI0Z0JpQUpha0VDYWtFQ2RXc2lCMnBCQVhVZ0NXbzJBZ1FnQkVFQ2FpRUVJQUFnRWtjaElDQUtJUUFnQmlFSklDQU5BQXNNQVFzZ0N5RUVDeUFZSUExQkFuUnFJUWtnQlNBRVFRSjBhaUFITmdJQUFrQWdGRVVFUUNBYUlBRWdIV29vQWdBZ0JrRUJha0VCZFdzaUFDQUhha0VCZFNBR2FqWUNBQXdCQ3lBR0lBZHFJUUFMSUJrZ0FEWUNBRUVBSVFaQkFDRUFRUUFoQkFKQUlCWWdDVUVRU1hKRkJFQURRQ0FCSUFCQkFuUWlCR29nQkNBRmF2MEFBZ0Q5Q3dJQUlBQkJCR29pQUNBUVJ3MEFDeUFRSWdRZ0NFWU5BUXNnQkNFQUlCRUVRQU5BSUFFZ0FDQUNiRUVDZEdvZ0JTQUFRUUowYWlnQ0FEWUNBQ0FBUVFGcUlRQWdCa0VCYWlJR0lCRkhEUUFMQ3lBRUlBaHJRWHhMRFFBRFFDQUJJQUFnQW14QkFuUnFJQVVnQUVFQ2RHb29BZ0EyQWdBZ0FTQUFRUUZxSWdRZ0FteEJBblJxSUFVZ0JFRUNkR29vQWdBMkFnQWdBU0FBUVFKcUlnUWdBbXhCQW5ScUlBVWdCRUVDZEdvb0FnQTJBZ0FnQVNBQVFRTnFJZ1FnQW14QkFuUnFJQVVnQkVFQ2RHb29BZ0EyQWdBZ0FFRUVhaUlBSUFoSERRQUxDeUFCUVFScUlRRWdEVUVCYWlJTklBTkhEUUFMQ3dzM0FRSi9Jd0JCRUdzaUFTUUFJQUFFZnlBQlFReHFRU0FnQUJCc0lRQkJBQ0FCS0FJTUlBQWJCVUVBQ3lFQ0lBRkJFR29rQUNBQ0N4c0JBWDhnQUFSQUlBQW9BZ2dpQVFSQUlBRVFFQXNnQUJBUUN3c3hBUUovUVFGQkRCQVRJZ0FFUUNBQVFRbzJBZ1FnQUVFS1FRUVFFeUlCTmdJSUlBRUVRQ0FBRHdzZ0FCQVFDMEVBQ3k4QkFYOGdBQVJBSUFBb0FnUWlBUVJBSUFBb0FnQWdBUkVDQUFzZ0FDZ0NJQkFRSUFCQkFEWUNJQ0FBRUJBTEN5b0FJQUFFUUNBQUtBSXdJQUJCRkVFUUlBQW9Ba3diYWlnQ0FCRUNBQ0FBUVFBMkFqQWdBQkFRQ3d0VEFRSi9JQUJCQURZQ01DQUFJQUFvQWlBMkFpUWdBU0FBS0FJQUlBQW9BaHdSQ2dBaEJDQUFLQUpFSVFJZ0JFVUVRQ0FBSUFKQkJISTJBa1JCQUE4TElBQWdBVGNET0NBQUlBSkJlM0UyQWtSQkFRdUdBd0lGZndwK0l3QkJJR3NpQXlRQUFrQWdBQ2dDRUNJRlJRUkFRUUVoQWd3QkN3SkFJQUEwQWdBaUIwSUFVdzBBSUFBMEFnUWlDRUlBVXcwQUlBQTBBZ2dpQ1VJQVV3MEFJQUEwQWd3aUNrSUFVdzBBSUFBb0FoZ2hBQ0FIUWdGOUlRd2dDRUlCZlNFTklBbENBWDBoQ1NBS1FnRjlJUW9EUUNBQUlBd2dBQ2dDQUNJQ3JTSUhmQ0FIZ0NJTFBnSVFJQUFnRFNBQUtBSUVJZ2F0SWdkOElBZUFJZzQrQWhSQ0FTQUFOUUlvSWdlR0lnOUNBWDBpQ0NBSklBS3NJaEI4SUJCL3hId2dCNGVuSUFnZ0M4UjhJQWVIcDJzaUFrRUFTQVJBSUFNZ0FqWUNCQ0FESUFRMkFnQWdBVUVCUWRQa0FDQURFQTlCQUNFQ0RBTUxJQUFnQWpZQ0NDQUlJQW9nQnF3aUMzd2dDMy9FZkNBSGg2Y2dEc1FnRDN4Q0FYMGdCNGVuYXlJQ1FRQklCRUFnQXlBQ05nSVVJQU1nQkRZQ0VDQUJRUUZCbU9VQUlBTkJFR29RRDBFQUlRSU1Bd3NnQUNBQ05nSU1JQUJCTkdvaEFFRUJJUUlnQkVFQmFpSUVJQVZIRFFBTERBRUxJQUZCQVVHbk0wRUFFQThMSUFOQklHb2tBQ0FDQzljR0FRWi9JQUFFUUFKQUlBQW9BZ0FFUUNBQUtBSU1JZ0VFUUNBQkVDNGdBQ2dDREJBUUlBQkJBRFlDREFzZ0FDZ0NFQ0lCQkVBZ0FSQVFJQUJDQURjREVBc2dBQ2dDUUJBUUlBQkNBRGNDUEF3QkN5QUFLQUlzSWdFRVFDQUJFQkFnQUVFQU5nSXNDeUFBS0FJZ0lnRUVRQ0FCRUJBZ0FFSUFOd01nQ3lBQUtBSTBJZ0ZGRFFBZ0FSQVFJQUJDQURjQ05Bc2dBQ2dDMEFFUVZTQUFLQUtjQVNJQkJFQWdBQ2dDYUNBQUtBSnNiQ0lEQkg4RFFDQUJFQzRnQVVHTUxHb2hBU0FDUVFGcUlnSWdBMGNOQUFzZ0FDZ0NuQUVGSUFFTEVCQWdBRUVBTmdLY0FRc2dBQ2dDZENJQkJFQWdBQ2dDY0NJQ0JFQkJBQ0VCQTBBZ0FDZ0NkQ0FCUVFOMGFpZ0NBQ0lEQkVBZ0F4QVFJQUFvQW5BaEFnc2dBVUVCYWlJQklBSkpEUUFMSUFBb0FuUWhBUXNnQUVFQU5nSndJQUVRRUNBQVFRQTJBblFMSUFBb0FvZ0JFQkFnQUVFQU5nSjRJQUJCQURZQ2lBRWdBQ2dDWkJBUUlBQkJBRFlDWkNBQUxRQzhBVUVDY1VVRVFDQUFLQUtvQVJBUUN5QUFRZEFBYWtFQVFmQUFFQlVhSUFBb0FzQUJFRElnQUVFQU5nTEFBU0FBS0FMRUFSQXlJQUJCQURZQ3dBRWdBQ2dDeUFFaUFRUkFJQUVvQWh3aUFnUkFJQUlRRUNBQlFRQTJBaHdMSUFFb0FpZ2lBZ1JBSUFFb0FpUUVRQU5BSUFJZ0JVRW9iQ0lEYWlnQ0pDSUVCRUFnQkJBUUlBRW9BaWdpQWlBRGFrRUFOZ0lrQ3lBQ0lBTnFLQUlRSWdRRVFDQUVFQkFnQVNnQ0tDSUNJQU5xUVFBMkFoQUxJQUlnQTJvb0FoZ2lCQVJBSUFRUUVDQUJLQUlvSWdJZ0EycEJBRFlDR0FzZ0JVRUJhaUlGSUFFb0FpUkpEUUFMQ3lBQ0VCQWdBVUVBTmdJb0N5QUJFQkFMSUFCQkFEWUN5QUVnQUNnQ1NCQWhJQUJCQURZQ1NDQUFLQUpNRUNFZ0FFRUFOZ0pNSUFBb0F0UUJJZ01FUUFKQUlBTW9BZ2hGRFFBZ0F5Z0NEQVJBSUFOQkFEWUNLQU5BSUFNb0FoaEJBRW9OQUFzTElBTkJBVFlDRUNBREtBSUFFQkFnQXlnQ0hDSUNSUTBBQTBBZ0FpZ0NCQ0VCSUFJUUVDQURJQUUyQWh3Z0FTSUNEUUFMQ3lBREtBSWtJZ0lFUUNBQ0tBSUVJZ1ZCQUVvRVFFRUFJUUVEUUNBQ0tBSUFJQUZCREd4cUlnUW9BZ2dpQmdSQUlBUW9BZ1FnQmhFQ0FDQUNLQUlFSVFVTElBRkJBV29pQVNBRlNBMEFDd3NnQWlnQ0FCQVFJQUlRRUFzZ0F4QVFDeUFBUVFBMkF0UUJJQUFRRUFzTDVnTUNDSDhFZmlBQUtBSVVLQUlBS0FJVUlBRkJ6QUJzYWlJSktBSU1JZ2dnQUNnQ0dDZ0NHQ0FCUVRSc2FpSUtOUUlFSWhCQ0FYMGlFaUFBTlFJOGZDQVFnS2NpQ3lBSUlBdEpHeUVNSUFrb0FnZ2lDQ0FLTlFJQUloRkNBWDBpRXlBQU5RSTRmQ0FSZ0tjaUNpQUlJQXBKR3lFS0lBa29BZ1FpQ0NBU0lBQTFBalI4SUJDQXB5SUxJQWdnQzBzYklRc2dDU2dDQUNJSUlCTWdBRFVDTUh3Z0VZQ25JZzBnQ0NBTlN4c2hEVUVBSVFnZ0FDZ0NJQ2dDMENzZ0FVRzRDR3hxS0FJVUlRNENRQ0FKS0FJVVFRQWdBbXRCZnlBQ0cyb2lBa1VFUUNBS0lRQWdEU0VJSUFzaEFRd0JDeUFEUVFGeElBSkJBV3NpRDNRaUNTQU5TUVJBSUEwZ0NXdXRRbjhnQXEwaUVJWkNmNFY4SUJDSXB5RUlDMEVBSVFCQkFDRUJJQU5CQVhZZ0QzUWlBeUFMU1FSQUlBc2dBMnV0UW44Z0FxMGlFSVpDZjRWOElCQ0lweUVCQ3lBSklBcEpCRUFnQ2lBSmE2MUNmeUFDclNJUWhrSi9oWHdnRUlpbklRQUxJQU1nREU4RVFFRUFJUXdNQVFzZ0RDQURhNjFDZnlBQ3JTSVFoa0ovaFh3Z0VJaW5JUXdMUVg4Z0FFRUNRUU1nRGtFQlJoc2lBbW9pQXlBQUlBTkxHeUFFUzBGL0lBSWdER29pQUNBQUlBeEpHeUFGUzNFZ0NDQUNheUlBUVFBZ0FDQUlUUnNnQmtseElBRWdBbXNpQUVFQUlBQWdBVTBiSUFkSmNRdWlBUUVHZnlBQUJFQWdBQ2dDQkNJQ0JFQWdBaEFRSUFCQkFEWUNCQXNnQVFSQUlBQWhBZ05BSUFJb0FzZ0JJZ01FUUVFQUlRVWdBaWdDeEFFaUJBUi9BMEFnQXlnQ0RDSUdCRUFnQmhBUUlBTkJBRFlDRENBQ0tBTEVBU0VFQ3lBRFFSQnFJUU1nQlVFQmFpSUZJQVJKRFFBTElBSW9Bc2dCQlNBREN4QVFJQUpCQURZQ3lBRUxJQUpCOEFGcUlRSWdCMEVCYWlJSElBRkhEUUFMQ3lBQUVCQUxDOVVaQWhOL0Ezc2dBQ2dDQUNJS0lBQW9BZ3dpRFVFRmRDSUZhaUVHSUFvZ0JXc2hGaUFBS0FJUUlRVWdBQ2dDSENFTElBQW9BaFFoQ1NBQUtBSUlJUTRDUUFKQUFrQUNRQ0FEUVFoSkRRQWdBVUVQY1EwQUlBWkJEM0ZGRFFFTElBVWdDVThOQWdKQUFrQWdBMEVCYXc0Q0FBRURDd0pBSUFrZ0JXc2lDRUVZU1EwQUlBRWdCVUVDZEdvaEJ5QU5RUVYwSWdRZ0NpQUZRUVowYW1vZ0FTQUpRUUowYWtrRVFDQUhJQW9nQ1VFR2RHb2dCR3BCUEd0SkRRRUxJQVg5RWYwTUFBQUFBQUVBQUFBQ0FBQUFBd0FBQVAydUFTRVlJQVVnQ0VGOGNTSVBhaUVGUVFBaEJBTkFJQVlnR0VFRS9hc0JJaGY5R3dCQkFuUnFJQWNnQkVFQ2RHcjlBQUlBSWhuOUh3QTRBZ0FnQmlBWC9Sc0JRUUowYWlBWi9SOEJPQUlBSUFZZ0YvMGJBa0VDZEdvZ0dmMGZBamdDQUNBR0lCZjlHd05CQW5ScUlCbjlId000QWdBZ0dQME1CQUFBQUFRQUFBQUVBQUFBQkFBQUFQMnVBU0VZSUFSQkJHb2lCQ0FQUncwQUN5QUlJQTlHRFFRTElBVWhCQ0FKSUFWclFRTnhJZ2NFUUVFQUlRZ0RRQ0FHSUFSQkJuUnFJQUVnQkVFQ2RHb3FBZ0E0QWdBZ0JFRUJhaUVFSUFoQkFXb2lDQ0FIUncwQUN3c2dCU0FKYTBGOFN3MERBMEFnQmlBRVFRWjBhaUFCSUFSQkFuUnFLZ0lBT0FJQUlBWWdCRUVCYWlJRlFRWjBhaUFCSUFWQkFuUnFLZ0lBT0FJQUlBWWdCRUVDYWlJRlFRWjBhaUFCSUFWQkFuUnFLZ0lBT0FJQUlBWWdCRUVEYWlJRlFRWjBhaUFCSUFWQkFuUnFLZ0lBT0FJQUlBUkJCR29pQkNBSlJ3MEFDd3dEQ3lBQklBSkJBblJxSVFnQ1FDQUpJQVZySWc5QlBFa0VRQ0FGSVFRTUFRc2dDaUFGUVFaMElBMUJCWFJxYWlJRUlBa2dCVUYvYzJvaUIwRUdkQ0lRYWlBRVNRUkFJQVVoQkF3QkN5QUVRUVJxSWdRZ0VHb2dCRWtFUUNBRklRUU1BUXNnQjBILy8vOGZTd1JBSUFVaEJBd0JDeUFOUVFWMElnUWdDaUFGUVFaMGFtb2lCeUFCSUFJZ0NXcEJBblJxU1NBS0lBbEJCblJxSUFScVFUaHJJZ1FnQVNBQ0lBVnFRUUowYWt0eEJFQWdCU0VFREFFTElBY2dBU0FKUVFKMGFra2dBU0FGUVFKMGFpQUVTWEVFUUNBRklRUU1BUXNnQmYwUi9Rd0FBQUFBQVFBQUFBSUFBQUFEQUFBQS9hNEJJUmdnQlNBUFFYeHhJaEJxSVFSQkFDRUhBMEFnQmlBWVFRVDlxd0VpRi8wYkFFRUNkR29pRVNBQklBVWdCMnBCQW5RaURHcjlBQUlBSWhuOUh3QTRBZ0FnQmlBWC9Sc0JRUUowYWlJVElCbjlId0U0QWdBZ0JpQVgvUnNDUVFKMGFpSVVJQm45SHdJNEFnQWdCaUFYL1JzRFFRSjBhaUlWSUJuOUh3TTRBZ0FnRVNBSUlBeHEvUUFDQUNJWC9SOEFPQUlFSUJNZ0YvMGZBVGdDQkNBVUlCZjlId0k0QWdRZ0ZTQVgvUjhET0FJRUlCajlEQVFBQUFBRUFBQUFCQUFBQUFRQUFBRDlyZ0VoR0NBSFFRUnFJZ2NnRUVjTkFBc2dEeUFRUmcwREN5QUVRUUZxSVFVZ0NTQUVhMEVCY1FSQUlBWWdCRUVHZEdvaUJ5QUJJQVJCQW5RaUJHb3FBZ0E0QWdBZ0J5QUVJQWhxS2dJQU9BSUVJQVVoQkFzZ0JTQUpSZzBDQTBBZ0JpQUVRUVowYWlJRklBRWdCRUVDZENJSGFpb0NBRGdDQUNBRklBY2dDR29xQWdBNEFnUWdCaUFFUVFGcUlnVkJCblJxSWdjZ0FTQUZRUUowSWdWcUtnSUFPQUlBSUFjZ0JTQUlhaW9DQURnQ0JDQUVRUUpxSWdRZ0NVY05BQXNNQWdzZ0JTQUpUdzBCSUFFZ0FrRUNkR29oQ0FOQUlBWWdCVUVHZEdvaUJDQUJJQVZCQW5ScUtnSUFPQUlBSUFRZ0FTQUNJQVZxSWdkQkFuUnFLZ0lBT0FJRUlBUWdBU0FDSUFkcUlnZEJBblJxS2dJQU9BSUlJQVFnQVNBQ0lBZHFJZ2RCQW5ScUtnSUFPQUlNSUFRZ0FTQUNJQWRxSWdkQkFuUnFLZ0lBT0FJUUlBUWdBU0FDSUFkcUlnZEJBblJxS2dJQU9BSVVJQVFnQVNBQ0lBZHFRUUowSWdkcUtnSUFPQUlZSUFRZ0J5QUlhaW9DQURnQ0hDQUZRUUZxSWdVZ0NVY05BQXNNQVFzZ0FTQUNRUUowYWlFSUlBTkJBMFloQnlBRFFRUkdJUThnQTBFRlJpRVFJQU5CQjBZaEVRTkFJQVlnQlVFR2RHb2lCQ0FCSUFWQkFuUnFLZ0lBT0FJQUlBUWdBU0FDSUFWcUlneEJBblJxS2dJQU9BSUVJQVFnQVNBQ0lBeHFJZ3hCQW5ScUtnSUFPQUlJQWtBZ0J3MEFJQVFnQVNBQ0lBeHFJZ3hCQW5ScUtnSUFPQUlNSUE4TkFDQUVJQUVnQWlBTWFpSU1RUUowYWlvQ0FEZ0NFQ0FRRFFBZ0JDQUJJQUlnREdvaURFRUNkR29xQWdBNEFoUWdBMEVHUmcwQUlBUWdBU0FDSUF4cVFRSjBJZ3hxS2dJQU9BSVlJQkVOQUNBRUlBZ2dER29xQWdBNEFod0xJQVZCQVdvaUJTQUpSdzBBQ3dzZ0ZrRWdhaUVHSUFFZ0RrRUNkR29oQkNBQUtBSVlJUVVDUUFKQUFrQWdBMEVJU1EwQUlBUkJEM0VOQUNBR1FROXhSUTBCQ3lBRklBdFBEUUVDUUFKQUFrQWdBMEVCYXc0Q0FBRUNDd0pBSUFzZ0JXc2lBRUVjU1EwQUlBb2dCVUVHZEVFZ2NpQU5RUVYwSWdKcmFpQUJJQXNnRG1wQkFuUnFTUVJBSUFFZ0JTQU9ha0VDZEdvZ0MwRUdkQ0FDYXlBS2FrRWNhMGtOQVFzZ0JDQUZRUUowYWlFRElBWDlFZjBNQUFBQUFBRUFBQUFDQUFBQUF3QUFBUDJ1QVNFWUlBVWdBRUY4Y1NJQmFpRUZRUUFoQWdOQUlBWWdHRUVFL2FzQkloZjlHd0JCQW5ScUlBTWdBa0VDZEdyOUFBSUFJaG45SHdBNEFnQWdCaUFYL1JzQlFRSjBhaUFaL1I4Qk9BSUFJQVlnRi8wYkFrRUNkR29nR2YwZkFqZ0NBQ0FHSUJmOUd3TkJBblJxSUJuOUh3TTRBZ0FnR1AwTUJBQUFBQVFBQUFBRUFBQUFCQUFBQVAydUFTRVlJQUpCQkdvaUFpQUJSdzBBQ3lBQUlBRkdEUVFMSUFVaEFpQUxJQVZyUVFOeElnQUVRRUVBSVFFRFFDQUdJQUpCQm5ScUlBUWdBa0VDZEdvcUFnQTRBZ0FnQWtFQmFpRUNJQUZCQVdvaUFTQUFSdzBBQ3dzZ0JTQUxhMEY4U3cwREEwQWdCaUFDUVFaMGFpQUVJQUpCQW5ScUtnSUFPQUlBSUFZZ0FrRUJhaUlBUVFaMGFpQUVJQUJCQW5ScUtnSUFPQUlBSUFZZ0FrRUNhaUlBUVFaMGFpQUVJQUJCQW5ScUtnSUFPQUlBSUFZZ0FrRURhaUlBUVFaMGFpQUVJQUJCQW5ScUtnSUFPQUlBSUFKQkJHb2lBaUFMUncwQUN3d0RDeUFFSUFKQkFuUnFJUU1DUUNBTElBVnJJZ0JCeEFCSkJFQWdCU0VDREFFTElBb2dCVUVHZENJSlFTQnlJQTFCQlhRaUNHdHFJZ2NnQ3lBRlFYOXphaUlQUVFaMEloQnFJQWRKQkVBZ0JTRUNEQUVMSUFvZ0NVRWtjaUFJYTJvaUNTQVFhaUFKU1FSQUlBVWhBZ3dCQ3lBUFFmLy8veDlMQkVBZ0JTRUNEQUVMSUFvZ0JVRUdkRUVnY2lBTlFRVjBJZ2xyYWlJTklBRWdDeUFPYWlJSUlBSnFRUUowYWtrZ0MwRUdkQ0FKYXlBS2FrRVlheUlKSUFFZ0RrRUNkR29nQlVFQ2RHb2lDaUFDUVFKMGFrdHhCRUFnQlNFQ0RBRUxJQTBnQVNBSVFRSjBha2tnQ1NBS1MzRUVRQ0FGSVFJTUFRc2dCZjBSL1F3QUFBQUFBUUFBQUFJQUFBQURBQUFBL2E0QklSZ2dCU0FBUVh4eElnbHFJUUpCQUNFQkEwQWdCaUFZUVFUOXF3RWlGLzBiQUVFQ2RHb2lDaUFFSUFFZ0JXcEJBblFpRFdyOUFBSUFJaG45SHdBNEFnQWdCaUFYL1JzQlFRSjBhaUlPSUJuOUh3RTRBZ0FnQmlBWC9Sc0NRUUowYWlJSUlCbjlId0k0QWdBZ0JpQVgvUnNEUVFKMGFpSUhJQm45SHdNNEFnQWdDaUFESUExcS9RQUNBQ0lYL1I4QU9BSUVJQTRnRi8wZkFUZ0NCQ0FJSUJmOUh3STRBZ1FnQnlBWC9SOERPQUlFSUJqOURBUUFBQUFFQUFBQUJBQUFBQVFBQUFEOXJnRWhHQ0FCUVFScUlnRWdDVWNOQUFzZ0FDQUpSZzBEQ3lBQ1FRRnFJUUFnQ3lBQ2EwRUJjUVJBSUFZZ0FrRUdkR29pQVNBRUlBSkJBblFpQW1vcUFnQTRBZ0FnQVNBQ0lBTnFLZ0lBT0FJRUlBQWhBZ3NnQUNBTFJnMENBMEFnQmlBQ1FRWjBhaUlBSUFRZ0FrRUNkQ0lCYWlvQ0FEZ0NBQ0FBSUFFZ0Eyb3FBZ0E0QWdRZ0JpQUNRUUZxSWdCQkJuUnFJZ0VnQkNBQVFRSjBJZ0JxS2dJQU9BSUFJQUVnQUNBRGFpb0NBRGdDQkNBQ1FRSnFJZ0lnQzBjTkFBc01BZ3NnQkNBQ1FRSjBhaUVCSUFOQkEwWWhDU0FEUVFSR0lRb2dBMEVGUmlFTklBTkJCMFloRGdOQUlBWWdCVUVHZEdvaUFDQUVJQVZCQW5ScUtnSUFPQUlBSUFBZ0JDQUNJQVZxSWdoQkFuUnFLZ0lBT0FJRUlBQWdCQ0FDSUFocUlnaEJBblJxS2dJQU9BSUlBa0FnQ1EwQUlBQWdCQ0FDSUFocUlnaEJBblJxS2dJQU9BSU1JQW9OQUNBQUlBUWdBaUFJYWlJSVFRSjBhaW9DQURnQ0VDQU5EUUFnQUNBRUlBSWdDR29pQ0VFQ2RHb3FBZ0E0QWhRZ0EwRUdSZzBBSUFBZ0JDQUNJQWhxUVFKMElnaHFLZ0lBT0FJWUlBNE5BQ0FBSUFFZ0NHb3FBZ0E0QWh3TElBVkJBV29pQlNBTFJ3MEFDd3dCQ3lBRklBdFBEUUFnQkNBQ1FRSjBhaUVCQTBBZ0JpQUZRUVowYWlJQUlBUWdCVUVDZEdvcUFnQTRBZ0FnQUNBRUlBSWdCV29pQTBFQ2RHb3FBZ0E0QWdRZ0FDQUVJQUlnQTJvaUEwRUNkR29xQWdBNEFnZ2dBQ0FFSUFJZ0Eyb2lBMEVDZEdvcUFnQTRBZ3dnQUNBRUlBSWdBMm9pQTBFQ2RHb3FBZ0E0QWhBZ0FDQUVJQUlnQTJvaUEwRUNkR29xQWdBNEFoUWdBQ0FFSUFJZ0EycEJBblFpQTJvcUFnQTRBaGdnQUNBQklBTnFLZ0lBT0FJY0lBVkJBV29pQlNBTFJ3MEFDd3NMbXdNQkJIOGdBU0FBUVFScUlnUnFRUUZyUVFBZ0FXdHhJZ1VnQW1vZ0FDQUFLQUlBSWdGcVFRUnJUUVIvSUFBb0FnUWlBeUFBS0FJSUlnWTJBZ2dnQmlBRE5nSUVJQVFnQlVjRVFDQUFJQUJCQkdzb0FnQkJmbkZySWdNZ0JTQUVheUlFSUFNb0FnQnFJZ1UyQWdBZ0F5QUZRWHh4YWtFRWF5QUZOZ0lBSUFBZ0JHb2lBQ0FCSUFScklnRTJBZ0FMQW44Z0FTQUNRUmhxVHdSQUlBQWdBbXBCQ0dvaUF5QUJJQUpyUVFocklnRTJBZ0FnQXlBQlFYeHhha0VFYXlBQlFRRnlOZ0lBSUFNQ2Z5QURLQUlBUVFocklnRkIvd0JOQkVBZ0FVRURka0VCYXd3QkN5QUJaeUVFSUFGQkhTQUVhM1pCQkhNZ0JFRUNkR3RCN2dCcUlBRkIveDlORFFBYVFUOGdBVUVlSUFScmRrRUNjeUFFUVFGMGEwSEhBR29pQVNBQlFUOVBHd3NpQVVFRWRDSUVRYURIQVdvMkFnUWdBeUFFUWFqSEFXb2lCQ2dDQURZQ0NDQUVJQU0yQWdBZ0F5Z0NDQ0FETmdJRVFhalBBVUdvendFcEF3QkNBU0FCcllhRU53TUFJQUFnQWtFSWFpSUJOZ0lBSUFBZ0FVRjhjV29NQVFzZ0FDQUJhZ3RCQkdzZ0FUWUNBQ0FBUVFScUJVRUFDd3ZDQVFFRGZ3SkFJQUVnQWlnQ0VDSURCSDhnQXdVZ0FoQStEUUVnQWlnQ0VBc2dBaWdDRkNJRWEwc0VRQ0FDSUFBZ0FTQUNLQUlrRVFBQUR3c0NRQUpBSUFJb0FsQkJBRWdOQUNBQlJRMEFJQUVoQXdOQUlBQWdBMm9pQlVFQmF5MEFBRUVLUndSQUlBTkJBV3NpQXcwQkRBSUxDeUFDSUFBZ0F5QUNLQUlrRVFBQUlnUWdBMGtOQWlBQklBTnJJUUVnQWlnQ0ZDRUVEQUVMSUFBaEJVRUFJUU1MSUFRZ0JTQUJFQklhSUFJZ0FpZ0NGQ0FCYWpZQ0ZDQUJJQU5xSVFRTElBUUxXUUVCZnlBQUlBQW9Ba2dpQVVFQmF5QUJjallDU0NBQUtBSUFJZ0ZCQ0hFRVFDQUFJQUZCSUhJMkFnQkJmdzhMSUFCQ0FEY0NCQ0FBSUFBb0Fpd2lBVFlDSENBQUlBRTJBaFFnQUNBQklBQW9BakJxTmdJUVFRQUx6QUlCQkg4Z0FTQUEvUUFDQVAwTEFnQWdBU2dDR0NJQ0JFQWdBU2dDRUNJREJIOUJBQ0VDQTBBZ0FTZ0NHQ0FDUVRSc2FpZ0NMQ0lFQkVBZ0JCQVFJQUVvQWhBaEF3c2dBa0VCYWlJQ0lBTkpEUUFMSUFFb0FoZ0ZJQUlMRUJBZ0FVRUFOZ0lZQ3lBQklBQW9BaEFpQWpZQ0VDQUJJQUpCTkd3UUZDSUNOZ0lZSUFJRVFDQUJLQUlRQkVCQkFDRURBMEFnQWlBRFFUUnNJZ1ZxSWdJZ0FDZ0NHQ0FGYWlJRS9RQUNBUDBMQWdBZ0FpQUVLQUl3TmdJd0lBSWdCUDBBQWlEOUN3SWdJQUlnQlAwQUFoRDlDd0lRSUFFb0FoZ2lBaUFGYWtFQU5nSXNJQU5CQVdvaUF5QUJLQUlRU1EwQUN3c2dBU0FBS0FJVU5nSVVJQUVnQUNnQ0lDSUNOZ0lnSUFJRVFDQUJJQUlRRkNJQ05nSWNJQUpGQkVBZ0FVSUFOd0ljRHdzZ0FpQUFLQUljSUFBb0FpQVFFaG9QQ3lBQlFRQTJBaHdQQ3lBQlFRQTJBaEFnQVVFQU5nSVlDd1FBUVFFTHhnRUJBMzhEUUNBQVFRUjBJZ0ZCcE1jQmFpQUJRYURIQVdvaUFqWUNBQ0FCUWFqSEFXb2dBallDQUNBQVFRRnFJZ0JCd0FCSERRQUxRVEFRYlJvakFFRVFheUlBSkFBQ1FDQUFRUXhxSUFCQkNHb1FEQTBBUWJEUEFVRUlJQUFvQWd4QkFuUkJCR29RSlNJQk5nSUFJQUZGRFFCQkNDQUFLQUlJRUNVaUFRUkFRYkRQQVNnQ0FDSUNJQUFvQWd4QkFuUnFRUUEyQWdBZ0FpQUJFQXRGRFFFTFFiRFBBVUVBTmdJQUN5QUFRUkJxSkFCQnpNOEJRU28yQWdCQmxOQUJRZGpRQVRZQ0FBdVFCZ0lGZndON0l3QkJFR3NpQmlRQUFuOGdBQ2dDQ0VFUVJnUkFJQUFvQXB3QklBQW9Bc3dCUVl3c2JHb01BUXNnQUNnQ0RBc2hBQUpBSUFNb0FnQWlCVVVFUUVFQUlRSWdCRUVCUWNBVFFRQVFEd3dCQ3lBQUtBTFFLeUVKSUFNZ0JVRUJhellDQUNBQ0lBWkJER3BCQVJBUklBa2dBVUc0Q0d4cUlnY2dCaWdDRENJQVFRVjJOZ0trQmlBSElBQkJIM0VpQVRZQ0dDQUNRUUZxSVFBZ0F3Si9BbjhDUUFKL0FrQUNRQ0FCRGdJQUF3RUxJQU1vQWdBTUFRc2dBeWdDQUVFQmRnc2lCVUhpQUU4RWZ5QUdRdUdBZ0lDUUREY0NCQ0FHSUFVMkFnQWdCRUVDUWNYNEFDQUdFQThnQnlnQ0dBVWdBUXNFUUNBRklnRU5BVUVBREFJTElBVUVRQ0FIUVJ4cUlRRkJBQ0VDQTBBZ0FDQUdRUXhxUVFFUUVTQUNRZUFBVFFSQUlBWW9BZ3doQkNBQklBSkJBM1JxSWdoQkFEWUNCQ0FJSUFSQkEzWTJBZ0FMSUFCQkFXb2hBQ0FDUVFGcUlnSWdCVWNOQUFzTFFRQWhBaUFES0FJQUlnQWdCVWtOQXlBQUlBVnJEQUlMSUFkQkhHb2hCRUVBSVFJRFFDQUFJQVpCREdwQkFoQVJJQUpCNEFCTkJFQWdCQ0FDUVFOMGFpSUZJQVlvQWd3aUNFSC9EM0UyQWdRZ0JTQUlRUXQyTmdJQUN5QUFRUUpxSVFBZ0FrRUJhaUlDSUFGSERRQUxJQUZCQVhRTElRQkJBQ0VDSUFNb0FnQWlBU0FBU1EwQklBRWdBR3NMTmdJQVFRRWhBaUFIS0FJWVFRRkhEUUFnQjBFY2FpRUVJQWY5Q1FJY0lRd2dCeWdDSUNFRC9Rd0JBQUFBQWdBQUFBTUFBQUFFQUFBQUlRdEJBQ0VCQTBBZ0JDQUJRUU4wYWlJQVFSaHFJQXdnQy8wTS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8ydUFTSUsvUnNBUVFOdS9SRWdDdjBiQVVFRGJ2MGNBU0FLL1JzQ1FRTnUvUndDSUFyOUd3TkJBMjc5SEFQOXNRSDlEQUFBQUFBQUFBQUFBQUFBQUFBQUFBRDl1QUVpQ3YxYUFnQUNJQUJCRUdvZ0N2MWFBZ0FCSUFCQkNHb2dDdjFhQWdBQUlBUWdBVUVFYWlJQlFRTjBhaUlGSUFyOVdnSUFBeUFBSUFNMkFod2dBQ0FETmdJVUlBQWdBellDRENBRklBTTJBZ1FnQy8wTUJBQUFBQVFBQUFBRUFBQUFCQUFBQVAydUFTRUxJQUZCNEFCSERRQUxDeUFHUVJCcUpBQWdBZ3VmQmdFR2Z5TUFRU0JySWdZa0FBSi9JQUFvQWdoQkVFWUVRQ0FBS0FLY0FTQUFLQUxNQVVHTUxHeHFEQUVMSUFBb0Fnd0xJUVVDUUNBREtBSUFRUVJOQkVCQkFDRUFJQVJCQVVHZEUwRUFFQThNQVFzZ0FpQUZLQUxRS3lBQlFiZ0liR29pQlNJSlFRUnFRUUVRRVNBRklBVW9BZ1JCQVdvaUJ6WUNCQ0FIUVNKUEJFQWdCa0VoTmdJRUlBWWdCellDQUNBRVFRRkIrVGtnQmhBUFFRQWhBQXdCQ3lBSElBQW9BcUFCSWdoTkJFQWdCaUFITmdJWUlBWWdDRFlDRkNBR0lBRTJBaEFnQkVFQlFiVDdBQ0FHUVJCcUVBOGdBQ0FBS0FJSVFZQ0FBbkkyQWdoQkFDRUFEQUVMSUFKQkFXb2dCVUVJYWtFQkVCRWdCU0FGS0FJSVFRSnFOZ0lJSUFKQkFtb2dCVUVNYWtFQkVCRWdCU0FGS0FJTVFRSnFJZ0EyQWd3Q1FBSkFJQVVvQWdnaUFVRUtTdzBBSUFCQkNrc05BQ0FBSUFGcVFRMUpEUUVMUVFBaEFDQUVRUUZCd3lsQkFCQVBEQUVMSUFKQkEyb2dCVUVRYWtFQkVCRWdCUzBBRUVHQUFYRUVRRUVBSVFBZ0JFRUJRWXN5UVFBUUR3d0JDeUFDUVFScUlBVkJGR3BCQVJBUklBVW9BaFJCQWs4RVFFRUFJUUFnQkVFQlFjb3hRUUFRRHd3QkN5QURJQU1vQWdCQkJXc2lCellDQUVFQklRQWdCU2dDQkNFQklBVXRBQUJCQVhGRkJFQWdBVVVOQVNBRlFiQUhhaUVCSUFWQnJBWnFJUUpCQUNFRkEwQWdBaUFGUVFKMElnQnFRUTgyQWdBZ0FDQUJha0VQTmdJQVFRRWhBQ0FGUVFGcUlnVWdDU2dDQkVrTkFBc01BUXNnQVNBSFRRUkFBa0FnQVVVRVFFRUFJUUVNQVFzZ0FrRUZhaUFHUVJ4cVFRRVFFU0FGSUFZb0Fod2lBRUVFZGpZQ3NBY2dCU0FBUVE5eE5nS3NCaUFGS0FJRUlnRkJBazhFUUNBRlFiQUhhaUVISUFWQnJBWnFJUWdnQWtFR2FpRUFRUUVoQlFOQUlBQWdCa0VjYWtFQkVCRUNRQ0FHS0FJY0lnRkJFRThFUUNBQlFROXhJZ0lOQVF0QkFDRUFJQVJCQVVId0xVRUFFQThNQlFzZ0NDQUZRUUowSWdwcUlBSTJBZ0FnQnlBS2FpQUJRUVIyTmdJQUlBQkJBV29oQUNBRlFRRnFJZ1VnQ1NnQ0JDSUJTUTBBQ3dzZ0F5Z0NBQ0VIQ3lBRElBY2dBV3MyQWdCQkFTRUFEQUVMUVFBaEFDQUVRUUZCblJOQkFCQVBDeUFHUVNCcUpBQWdBQXRTQUNBQklBQXRBQUE2QUFjZ0FTQUFMUUFCT2dBR0lBRWdBQzBBQWpvQUJTQUJJQUF0QUFNNkFBUWdBU0FBTFFBRU9nQURJQUVnQUMwQUJUb0FBaUFCSUFBdEFBWTZBQUVnQVNBQUxRQUhPZ0FBQzVJQkFRUi9JQUFnQVRZQ29BRUNRQ0FBS0FKSUlnTkZEUUFnQXlnQ0dDSUdSUTBBSUFBb0Fnd2lCRVVOQUNBRUtBTFFLMFVOQUNBREtBSVFJZ1JGQkVCQkFROExRUUFoQXdOQUlBRWdBQ2dDRENnQzBDc2dBMEc0Q0d4cUtBSUVUd1JBSUFKQkFVR2l4UUJCQUJBUFFRQVBDeUFHSUFOQk5HeHFJQUUyQWloQkFTRUZJQU5CQVdvaUF5QUVSdzBBQ3dzZ0JRdXNCd0lKZndoK0l3QkJFR3NpQ2lRQUFrQWdBa1VFUUNBRFFRRkIrdFVBUVFBUUR3d0JDeUFDS0FJUUlnc2dBQ2dDU0NJR0tBSVFTUVJBSUFOQkFVRzF6Z0JCQUJBUERBRUxJQVFnQUNnQ2FDSUZJQUFvQW14c0lnZFBCRUFnQ2lBRU5nSUFJQW9nQjBFQmF6WUNCQ0FEUVFGQjkvb0FJQW9RRDBFQUlRVU1BUXNnQWlBQUtBSlVJQVFnQlNBRUlBVnVJZ2RzYXlJSUlBQW9BbHhzYWlJRk5nSUFJQUlnQlNBR0tBSUFJZ1lnQlNBR1N4c2lCallDQUNBQ0lBQW9BbFFnQUNnQ1hDQUlRUUZxYkdvaUJUWUNDQ0FDSUFVZ0FDZ0NTQ2dDQ0NJSUlBVWdDRWtiSWdnMkFnZ2dBaUFBS0FKWUlBQW9BbUFnQjJ4cUlnVTJBZ1FnQWlBRklBQW9Ba2dvQWdRaUNTQUZJQWxMR3lJSk5nSUVJQUlnQUNnQ1dDQUFLQUpnSUFkQkFXcHNhaUlGTmdJTUlBSWdCU0FBS0FKSUtBSU1JZ2NnQlNBSFNSc2lCVFlDRENBQUtBSklJZ3dvQWhBaUJ3UkFJQVdzUWdGOUlSRWdDS3hDQVgwaEVpQUpyVUlCZlNFVElBYXRRZ0Y5SVJRZ0RDZ0NHQ0VJSUFJb0FoZ2hCVUVBSVFZRFFDQUZJQWdnQmtFMGJHb29BaWdpQ1RZQ0tDQUZJQlFnQlNnQ0FDSU1yU0lPZkNBT2dDSVZQZ0lRSUFVZ0V5QUZLQUlFSWcydElnNThJQTZBSWhBK0FoUWdCVUovSUFtdElnNkdJZzhnRU1SOUlBNkhweUFQSUJFZ0Rhd2lFSHdnRUgvRWZTQU9oNmRyTmdJTUlBVWdEeUFWeEgwZ0RvZW5JQThnRWlBTXJDSVBmQ0FQZjhSOUlBNkhwMnMyQWdnZ0JVRTBhaUVGSUFaQkFXb2lCaUFIUncwQUN3c2dCeUFMU1FSQUlBSW9BaGdoQlFOQUlBVWdCMEUwYkNJR2FpZ0NMQkFRSUFJb0FoZ2lCU0FHYWtFQU5nSXNJQWRCQVdvaUJ5QUNLQUlRU1EwQUN5QUNJQUFvQWtnb0FoQTJBaEFMSUFBb0Frd2lCUVJBSUFVUUlRc2dBRUVCUVNRUUV5SUhOZ0pNUVFBaEJTQUhSUTBBSUFJZ0J4QS9JQUFnQkRZQ0xDQUFLQUxBQVVFWElBTVFKRVVOQUNBQUtBTEFBU0lFS0FJQUlRWWdCQ2dDQ0NFSEFrQWdCZ1JBUVFFaEJTQUdRUUZ4SVFzZ0JrRUJSZ1IvUVFBRklBWkJmbkVoQ0VFQUlRWURRQUovUVFBZ0JVVU5BQnBCQUNBQUlBRWdBeUFIS0FJQUVRQUFSUTBBR2lBQUlBRWdBeUFIS0FJRUVRQUFRUUJIQ3lFRklBZEJDR29oQnlBR1FRSnFJZ1lnQ0VjTkFBc2dCVUVCY3dzaEJnSkFBa0FnQ3dSQUlBWU5BU0FBSUFFZ0F5QUhLQUlBRVFBQVFRQkhJUVVMSUFSQkFEWUNBQ0FGUVFGeFJRMEJEQU1MSUFSQkFEWUNBQXNnQUNnQ1NCQWhRUUFoQlNBQVFRQTJBa2dNQWdzZ0JFRUFOZ0lBQ3lBQUlBSVFSeUVGQ3lBS1FSQnFKQUFnQlF2eUF3RUZmd0pBQWtBZ0FDZ0NQQ0lDUlFSQUlBRW9BaEFOQVVFQkR3c2dBa0UwYkJBVUlnVkZEUUVnQVNnQ0VBUkFJQUVvQWhnaEFnTkFJQUlnQTBFMGJDSUVhaWdDTEJBUUlBRW9BaGdpQWlBRWFrRUFOZ0lzSUFOQkFXb2lBeUFCS0FJUUlnUkpEUUFMQ3lBQklBQW9BandFZnlBQUtBSk1LQUlZSVFOQkFDRUNBMEFnQlNBQ1FUUnNhaUlFSUFNZ0FDZ0NRQ0FDUVFKMGFpZ0NBRUUwYkNJR2FpSUQvUUFDQVAwTEFnQWdCQ0FES0FJd05nSXdJQVFnQS8wQUFpRDlDd0lnSUFRZ0EvMEFBaEQ5Q3dJUUlBUWdBQ2dDVENnQ0dDSURJQVpxSWdZb0FpUTJBaVFnQkNBR0tBSXNOZ0lzSUFaQkFEWUNMQ0FDUVFGcUlnSWdBQ2dDUENJR1NRMEFDeUFCS0FJUUJTQUVDd1IvSUFBb0Frd29BaGdoQWtFQUlRTURRQ0FDSUFOQk5Hd2lCR29vQWl3UUVDQUFLQUpNS0FJWUlnSWdCR3BCQURZQ0xDQURRUUZxSWdNZ0FTZ0NFRWtOQUFzZ0FDZ0NQQVVnQmdzMkFoQWdBU2dDR0JBUUlBRWdCVFlDR0VFQkR3c2dBU2dDR0NFRUlBQW9Ba3dvQWhnaEEwRUFJUUlEUUNBRUlBSkJOR3dpQldvaUJDQURJQVZxS0FJa05nSWtJQVFvQWl3UUVDQUJLQUlZSWdRZ0JXb2dBQ2dDVENnQ0dDSURJQVZxSWdVb0FpdzJBaXdnQlVFQU5nSXNJQUpCQVdvaUFpQUJLQUlRU1EwQUMwRUJEd3NnQUNnQ1NCQWhJQUJCQURZQ1NFRUFDODRFQVFoL0FrQWdBa1VOQUFKQUlBQW9BcUFCSWdWRkRRQWdBQ2dDU0NJRVJRMEFJQVFvQWhCRkRRQWdCQ2dDR0NnQ0tDQUZSdzBBSUFJb0FoQWlDRVVOQUNBQ0tBSVlJZ1lvQWlnTkFDQUdLQUlzRFFCQkFDRUVJQWhCQ0U4RVFDQUlRWGh4SVFrRFFDQUdJQVJCTkd4cUlBVTJBaWdnQmlBRVFRRnlRVFJzYWlBRk5nSW9JQVlnQkVFQ2NrRTBiR29nQlRZQ0tDQUdJQVJCQTNKQk5HeHFJQVUyQWlnZ0JpQUVRUVJ5UVRSc2FpQUZOZ0lvSUFZZ0JFRUZja0UwYkdvZ0JUWUNLQ0FHSUFSQkJuSkJOR3hxSUFVMkFpZ2dCaUFFUVFkeVFUUnNhaUFGTmdJb0lBUkJDR29oQkNBS1FRaHFJZ29nQ1VjTkFBc0xJQWhCQjNFaUNBUkFBMEFnQmlBRVFUUnNhaUFGTmdJb0lBUkJBV29oQkNBTFFRRnFJZ3NnQ0VjTkFBc0xJQUlnQXhBM0RRQkJBQThMSUFBb0Frd2lCVVVFUUNBQVFRRkJKQkFUSWdVMkFrd2dCVVVOQVFzZ0FpQUZFRDhnQUNnQ3dBRkJGaUFERUNSRkRRQWdBQ2dDd0FFaUJpZ0NBQ0VFSUFZb0FnZ2hCUUpBSUFRRVFFRUJJUWNnQkVFQmNTRUlJQVJCQVVZRWYwRUFCU0FFUVg1eElRbEJBQ0VFQTBBQ2YwRUFJQWRGRFFBYVFRQWdBQ0FCSUFNZ0JTZ0NBQkVBQUVVTkFCb2dBQ0FCSUFNZ0JTZ0NCQkVBQUVFQVJ3c2hCeUFGUVFocUlRVWdCRUVDYWlJRUlBbEhEUUFMSUFkQkFYTUxJUVFDUUFKQUlBZ0VRQ0FFRFFFZ0FDQUJJQU1nQlNnQ0FCRUFBRUVBUnlFSEN5QUdRUUEyQWdBZ0IwRUJjVVVOQVF3REN5QUdRUUEyQWdBTElBQW9Ba2dRSVNBQVFRQTJBa2hCQUE4TElBWkJBRFlDQUFzZ0FDQUNFRWNoQndzZ0J3djRCQUVHZndKQVFRRkJNQkFUSWdJRWZ5QUNJQUFvQXNnQklnSDlBQU1BL1FzREFDQUNJQUVwQXhBM0F4QWdBaUFCS0FJWUlnRTJBaGdnQWlBQlFSaHNFQlFpQVRZQ0hDQUJSUVJBSUFJUUVFRUFEd3NDUUNBQUtBTElBU2dDSENJREJFQWdBU0FESUFJb0FoaEJHR3dRRWhvTUFRc2dBUkFRSUFKQkFEWUNIQXNnQWlBQUtBTElBU2dDSkNJQk5nSWtJQUlnQVVFb0VCTWlBVFlDS0NBQlJRUkFJQUlvQWh3UUVDQUNFQkJCQUE4TEFrQWdBQ2dDeUFFb0FpZ0VRQ0FDS0FJa1JRMEJBMEFnQVNBRlFTaHNJZ05xSUFBb0FzZ0JLQUlvSUFOcUtBSVVJZ0UyQWhRZ0FVRVliQkFVSVFFZ0FpZ0NLQ0lFSUFOcUlnWWdBVFlDR0NBQlJRUkFJQVVFZjBFQUlRRURRQ0FDS0FJb0lBRkJLR3hxS0FJWUVCQWdBVUVCYWlJQklBVkhEUUFMSUFJb0FpZ0ZJQVFMRUJBTUJRc0NRQ0FBS0FMSUFTZ0NLQ0FEYWlnQ0dDSUVCRUFnQVNBRUlBWW9BaFJCR0d3UUVob2dBaWdDS0NFQkRBRUxJQUVRRUNBQ0tBSW9JZ0VnQTJwQkFEWUNHQXNnQVNBRGFpQUFLQUxJQVNnQ0tDQURhaWdDQkNJQk5nSUVJQUZCR0d3UUZDRUJJQUlvQWlnaUJDQURhaUlHSUFFMkFoQWdBVVVFUUNBRkJIOUJBQ0VCQTBBZ0FVRW9iQ0lBSUFJb0FpaHFLQUlZRUJBZ0FpZ0NLQ0FBYWlnQ0VCQVFJQUZCQVdvaUFTQUZSdzBBQ3lBQ0tBSW9CU0FFQ3hBUURBVUxBa0FnQUNnQ3lBRW9BaWdnQTJvb0FoQWlCQVJBSUFFZ0JDQUdLQUlFUVJoc0VCSWFJQUlvQWlnaEFRd0JDeUFCRUJBZ0FpZ0NLQ0lCSUFOcVFRQTJBaEFMSUFFZ0EycENBRGNDSUNBRlFRRnFJZ1VnQWlnQ0pFa05BQXNNQVFzZ0FSQVFJQUpCQURZQ0tBc2dBZ1ZCQUFzUEN5QUNLQUljRUJBZ0FoQVFRUUFMb0FZQ0RuOEJleU1BUVJCcklnZ2tBQ0FBS0FKSUtBSVFJUTBnQ0VFQlFUZ1FFeUlCTmdJTUFrQWdBVVVOQUNBQklBQW9Ba2dvQWhBaUNUWUNHQ0FCSUFEOUFBSlUvUXNDQUNBQklBQW9BbWcyQWhBZ0FDZ0NiQ0VDSUFGQkFEWUNOQ0FCSUFJMkFoUWdBU0FBS0FJTUlnd29BZ0EyQWlBZ0FTQU1LQUlFTmdJa0lBRWdEQ2dDQ0RZQ0tDQUJJQXdvQWhBMkFpd2dBU0FKUWJnSUVCTWlBRFlDTUNBQUJFQWdEUVJBQTBBZ0RrRzRDR3dpQUNBQktBSXdhaUlGSUF3b0F0QXJJQUJxSWdUOUFBSUFJZy85Q3dJRUlBVWdCQ2dDRURZQ0ZDQUZJQVFvQWhRMkFoZ2dELzBiQVNJQVFTQk5CRUFnQlVHMEIyb2dCRUd3QjJvZ0FCQVNHaUFGUWJBR2FpQUVRYXdHYWlBRUtBSUVFQklhQ3lBRklBUW9BaGdpQURZQ0hDQUZJQVFvQXFRR05nS29Ca0VCSVFZQ1FDQUFRUUZIQkVBZ0JDZ0NCRUVEYkNJQVFRTnJRZDhBU3cwQklBQkJBbXNoQmdzZ0JVR2tBMm9oQ1NBRlFTQnFJUW9nQkVFY2FpRUxRUUFoQUFKQUlBWkJDRWtOQUNBRUlBWkJBM1JxUVJ4cUlBcExCRUFnQ3lBRklBWkJBblJxUWFRRGFra05BUXNnQmtGOGNTRUFRUUFoQWdOQUlBb2dBa0VDZENJRGFpQUxJQUpCQTNScUlnZEJIR29nQjBFVWFpQUhRUXhxSUFmOUNRSUUvVllDQUFIOVZnSUFBdjFXQWdBRC9Rc0NBQ0FESUFscUlBZEJHR29nQjBFUWFpQUhRUWhxSUFmOUNRSUEvVllDQUFIOVZnSUFBdjFXQWdBRC9Rc0NBQ0FDUVFScUlnSWdBRWNOQUFzZ0FDQUdSZzBCQ3lBQVFRRnlJUU1nQmtFQmNRUkFJQW9nQUVFQ2RDSUNhaUFMSUFCQkEzUnFJZ0FvQWdRMkFnQWdBaUFKYWlBQUtBSUFOZ0lBSUFNaEFBc2dBeUFHUmcwQUEwQWdDaUFBUVFKMElnSnFJQXNnQUVFRGRHb2lBeWdDQkRZQ0FDQUNJQWxxSUFNb0FnQTJBZ0FnQ2lBQVFRRnFJZ05CQW5RaUFtb2dDeUFEUVFOMGFpSURLQUlFTmdJQUlBSWdDV29nQXlnQ0FEWUNBQ0FBUVFKcUlnQWdCa2NOQUFzTElBVWdCQ2dDcUFZMkFxd0dJQTVCQVdvaURpQU5SdzBBQ3dzZ0FTRUREQUVMSUFoQkRHb0VRQ0FJS0FJTUlnRW9BakFpQUFSL0lBQVFFQ0FJS0FJTUJTQUJDeEFRSUFoQkFEWUNEQXNMSUFoQkVHb2tBQ0FEQy9rRUFRaC9Jd0JCZ0FKcklnTWtBQ0FBQkVCQi9BeEJFU0FDRUIwZ0F5QUFLQUlBTmdMd0FTQUNRWm9SSUFOQjhBRnFFQllnQXlBQUtBSUVOZ0xnQVNBQ1FhY1JJQU5CNEFGcUVCWWdBeUFBS0FJSU5nTFFBU0FDUVlJM0lBTkIwQUZxRUJZZ0F5QUFLQUlRTmdMQUFTQUNRZjBRSUFOQndBRnFFQllnQVVFQVNnUkFBMEFnQUNnQzBDc2hCQ0FESUFjMkFyQUJJQUpCb2cwZ0EwR3dBV29RRmlBRElBUWdCMEc0Q0d4cUlnUW9BZ0EyQXFBQklBSkJtUkVnQTBHZ0FXb1FGaUFESUFRb0FnUTJBcEFCSUFKQjlEY2dBMEdRQVdvUUZpQURJQVFvQWdnMkFvQUJJQUpCb0RZZ0EwR0FBV29RRmlBRElBUW9BZ3cyQW5BZ0FrR3dOaUFEUWZBQWFoQVdJQU1nQkNnQ0VEWUNZQ0FDUVlnUklBTkI0QUJxRUJZZ0F5QUVLQUlVTmdKUUlBSkJ0amdnQTBIUUFHb1FGa0hWQzBFWElBSVFIU0FFS0FJRUJFQWdCRUd3QjJvaEJpQUVRYXdHYWlFSVFRQWhCUU5BSUFnZ0JVRUNkQ0lKYWlnQ0FDRUtJQU1nQmlBSmFpZ0NBRFlDUkNBRElBbzJBa0FnQWtHTERDQURRVUJyRUJZZ0JVRUJhaUlGSUFRb0FnUkpEUUFMQ3lBQ0VHNGdBeUFFS0FJWU5nSXdJQUpCd0RZZ0EwRXdhaEFXSUFNZ0JDZ0NwQVkyQWlBZ0FrSHhOaUFEUVNCcUVCWkJBU0VHUWUwTFFSUWdBaEFkQWtBZ0JDZ0NHRUVCUndSQUlBUW9BZ1FpQlVFQVRBMEJJQVZCQTJ4QkFtc2hCZ3NnQkVFY2FpRUlRUUFoQlFOQUlBTWdDQ0FGUVFOMGFpa0NBRUlnaVRjREVDQUNRWXNNSUFOQkVHb1FGaUFGUVFGcUlnVWdCa2NOQUFzTElBSVFiaUFESUFRb0FxZ0dOZ0lBSUFKQjREWWdBeEFXUVprTVFRVWdBaEFkSUFkQkFXb2lCeUFCUncwQUN3dEJtZ3hCQkNBQ0VCMExJQU5CZ0FKcUpBQUw1Z29EQ1g4QmV3RitJd0JCc0FGcklnVWtBQUpBSUFGQmdBTnhCRUJCbmkxQkN5QUNFQjBNQVFzQ1FDQUJRUUZ4UlEwQUlBQW9Ba2dpQmtVTkFDTUFRZEFBYXlJREpBQkI3Z3hCRFNBQ0VCMGdBMEVBT2dCUElBTkJDVG9BVGlBRElBWXBBZ0EzQWtRZ0F5QURRYzRBYWlJRU5nSkFJQUpCaGprZ0EwRkFheEFXSUFNZ0Jpa0NDRGNDTkNBRElBUTJBakFnQWtIMU9DQURRVEJxRUJZZ0F5QUdLQUlRTmdJa0lBTWdCRFlDSUNBQ1FaTTNJQU5CSUdvUUZnSkFJQVlvQWhoRkRRQWdCaWdDRUVVTkFBTkFJQU1nQTBIT0FHb2lDallDRUNBRElBYzJBaFFnQWtHT0RTQURRUkJxRUJZZ0JpZ0NHQ0FIUVRSc2FpRUlJd0JCTUdzaUJDUUFJQVJCQ1RzQUxpQUVRUWs2QUMwZ0JDQUlLUUlBTndJa0lBUWdCRUV0YWlJSk5nSWdJQUpCenpZZ0JFRWdhaEFXSUFRZ0NDZ0NHRFlDRkNBRUlBazJBaEFnQWtIRk9DQUVRUkJxRUJZZ0JDQUlLQUlnTmdJRUlBUWdDVFlDQUNBQ1FhbzRJQVFRRmlBRVFUQnFKQUFnQXlBS05nSUFJQUpCbEF3Z0F4QVdJQWRCQVdvaUJ5QUdLQUlRU1EwQUN3dEJuQXhCQWlBQ0VCMGdBMEhRQUdva0FBc0NRQ0FCUVFKeFJRMEFJQUFvQWtoRkRRQkIrUTFCSkNBQ0VCMGdCU0FBS1FKVU53T2dBU0FDUWVjUklBVkJvQUZxRUJZZ0JTQUFLUUpjTndPUUFTQUNRY1VSSUFWQmtBRnFFQllnQlNBQUtRTm9Od09BQVNBQ1FkY1JJQVZCZ0FGcUVCWWdBQ2dDRENBQUtBSklLQUlRSUFJUVMwR2NERUVDSUFJUUhRc0NRQ0FCUVFoeFJRMEFJQUFvQWtoRkRRQWdBQ2dDYUNBQUtBSnNiQ0lFUlEwQUlBQW9BcHdCSVFNRFFDQURJQUFvQWtnb0FoQWdBaEJMSUFOQmpDeHFJUU1nQzBFQmFpSUxJQVJIRFFBTEN5QUJRUkJ4UlEwQUlBQW9Bc2dCSVFGQjB3MUJKU0FDRUIwZ0JTQUIvUUFEQVAwTEJIQWdBa0hKS3lBRlFmQUFhaEFXUWNFTlFSRWdBaEFkQWtBZ0FTZ0NIRVVOQUNBQktBSVlSUTBBUVFBaEF3TkFJQUVvQWh3Z0EwRVliR29pQUM4QkFDRUVJQUFwQXdnaERTQUZJQUFvQWhBMkFtQWdCU0FOTndOWUlBVWdCRFlDVUNBQ1FZczRJQVZCMEFCcUVCWWdBMEVCYWlJRElBRW9BaGhKRFFBTEMwR2FERUVFSUFJUUhRSkFJQUVvQWlnaUJFVU5BQ0FCS0FJa0lnZEZEUUJCQUNFRFFRQWhBQUpBSUFkQkJFOEVRQ0FIUVh4eElRQURRQ0FFSUFOQkEzSkJLR3hxUVFScUlBUWdBMEVDY2tFb2JHcEJCR29nQkNBRFFRRnlRU2hzYWtFRWFpQUVJQU5CS0d4cS9Ra0NCUDFXQWdBQi9WWUNBQUw5VmdJQUF5QU0vYTRCSVF3Z0EwRUVhaUlESUFCSERRQUxJQXdnRENBTS9RMElDUW9MREEwT0R3QUJBZ01BQVFJRC9hNEJJZ3dnRENBTS9RMEVCUVlIQUFFQ0F3QUJBZ01BQVFJRC9hNEIvUnNBSVFNZ0FDQUhSZzBCQ3dOQUlBUWdBRUVvYkdvb0FnUWdBMm9oQXlBQVFRRnFJZ0FnQjBjTkFBc0xJQU5GRFFCQnNBMUJFQ0FDRUIwZ0FTZ0NKQVJBSUFFb0FpZ2hBRUVBSVFjRFFDQUZJQUFnQjBFb2JDSUVhaWdDQkNJR05nSkVJQVVnQnpZQ1FDQUNRZEU0SUFWQlFHc1FGaUFCS0FJb0lRQUNRQ0FHUlEwQVFRQWhBeUFBSUFScUtBSVFSUTBBQTBBZ0FTZ0NLQ0FFYWlnQ0VDQURRUmhzYWlJQS9RQURBQ0VNSUFVZ0FDa0RFRGNET0NBRklBejlDd01vSUFVZ0F6WUNJQ0FDUWFYUkFDQUZRU0JxRUJZZ0EwRUJhaUlESUFaSERRQUxJQUVvQWlnaEFBc0NRQ0FBSUFScUlnWW9BaGhGRFFCQkFDRURJQVlvQWhSRkRRQURRQ0FBSUFScUtBSVlJQU5CR0d4cUlnQXZBUUFoQmlBQUtRTUlJUTBnQlNBQUtBSVFOZ0lRSUFVZ0RUY0RDQ0FGSUFZMkFnQWdBa0dMT0NBRkVCWWdBMEVCYWlJRElBRW9BaWdpQUNBRWFpZ0NGRWtOQUFzTElBZEJBV29pQnlBQktBSWtTUTBBQ3d0Qm1neEJCQ0FDRUIwTFFad01RUUlnQWhBZEN5QUZRYkFCYWlRQUM0OENBUU4vQWtCQkFVSG9BUkFUSWdFRWZ5QUJRUUUyQWdBZ0FVRUJOZ0s0QVNBQklBRXRBTHdCUVFaeU9nQzhBU0FCUVFGQmpDd1FFeUlBTmdJTUlBQkZEUUVnQVVFQlFlZ0hFQk1pQURZQ0VDQUFSUTBCSUFGQ0FEY0RNQ0FCUVg4MkFpd2dBVUhvQnpZQ0ZBSkFRUUZCTUJBVElnQUVRQ0FBUVFBMkFoZ2dBRUhrQURZQ0lDQUFRZVFBUVJnUUV5SUNOZ0ljSUFJTkFTQUFFQkFMSUFGQkFEWUN5QUVNQWdzZ0FFRUFOZ0lvSUFFZ0FEWUN5QUVnQVJBeklnQTJBc1FCSUFCRkRRRWdBUkF6SWdBMkFzQUJJQUJGRFFFQ1FCQ1JBVVVOQUFzZ0FVRUFFR1lpQURZQzFBRWdBRVVFUUNBQlFRQVFaaUlBTmdMVUFTQUFSUTBDQ3lBQkJVRUFDdzhMSUFFUU9FRUFDNDBKQWdsL0FYNGpBRUhRQVdzaUJ5UUFJQUFvQWtnaENRSkFBa0FDUUNBQUtBSm9RUUZIRFFBZ0FDZ0NiRUVCUncwQUlBQW9BcHdCS0FMY0t3MEJDeUFBS0FJSVFRaEdEUUFnQmtFQlFlSE9BRUVBRUE4TUFRc0NRQ0FCS0FJUUlneEZEUUFnQUNnQ29BRWhDaUFCS0FJWUlRc2dERUVJVHdSQUlBeEJlSEVoRHdOQUlBc2dDRUUwYkdvZ0NqWUNLQ0FMSUFoQkFYSkJOR3hxSUFvMkFpZ2dDeUFJUVFKeVFUUnNhaUFLTmdJb0lBc2dDRUVEY2tFMGJHb2dDallDS0NBTElBaEJCSEpCTkd4cUlBbzJBaWdnQ3lBSVFRVnlRVFJzYWlBS05nSW9JQXNnQ0VFR2NrRTBiR29nQ2pZQ0tDQUxJQWhCQjNKQk5HeHFJQW8yQWlnZ0NFRUlhaUVJSUE1QkNHb2lEaUFQUncwQUN3c2dERUVIY1NJTVJRMEFBMEFnQ3lBSVFUUnNhaUFLTmdJb0lBaEJBV29oQ0NBTlFRRnFJZzBnREVjTkFBc0xJQUlnQTNJZ0JISWdCWEpGQkVBZ0JrRUVRYTh3UVFBUUR5QUFRZ0EzQWh3Z0FDQUFLUUpvTndJa0lBRWdDZjBBQWdEOUN3SUFJQUVnQmhBM0lRZ01BUXNnQWtFQVNBUkFJQWNnQWpZQ0FDQUdRUUZCeDkwQUlBY1FEMEVBSVFnTUFRc2dBaUFKS0FJSUlnaExCRUFnQnlBSU5nSVVJQWNnQWpZQ0VDQUdRUUZCbStFQUlBZEJFR29RRDBFQUlRZ01BUXNDUUNBQ0lBa29BZ0FpQ0VrRVFDQUhJQWcyQXNRQklBY2dBallDd0FFZ0JrRUNRZnZqQUNBSFFjQUJhaEFQSUFCQkFEWUNIQ0FKS0FJQUlRSU1BUXNnQUNBQ0lBQW9BbFJySUFBb0FseHVOZ0ljQ3lBQklBSTJBZ0FnQTBFQVNBUkFJQWNnQXpZQ0lDQUdRUUZCaDkwQUlBZEJJR29RRDBFQUlRZ01BUXNnQXlBSktBSU1JZ0pMQkVBZ0J5QUNOZ0kwSUFjZ0F6WUNNQ0FHUVFGQjd0OEFJQWRCTUdvUUQwRUFJUWdNQVFzQ1FDQURJQWtvQWdRaUFra0VRQ0FISUFJMkFyUUJJQWNnQXpZQ3NBRWdCa0VDUWN6aUFDQUhRYkFCYWhBUElBQkJBRFlDSUNBSktBSUVJUU1NQVFzZ0FDQURJQUFvQWxocklBQW9BbUJ1TmdJZ0N5QUJJQU0yQWdSQkFDRUlJQVJCQUV3RVFDQUhJQVEyQWtBZ0JrRUJRY1hjQUNBSFFVQnJFQThNQVFzZ0JDQUpLQUlBSWdKSkJFQWdCeUFDTmdKVUlBY2dCRFlDVUNBR1FRRkJvdU1BSUFkQjBBQnFFQThNQVFzQ1FDQUVJQWtvQWdnaUFrc0VRQ0FISUFJMkFxUUJJQWNnQkRZQ29BRWdCa0VDUWNQZ0FDQUhRYUFCYWhBUElBQWdBQ2dDYURZQ0pDQUpLQUlJSVFRTUFRc2dBQ0FBTlFKY0loQWdCQ0FBS0FKVWE2MThRZ0Y5SUJDQVBnSWtDeUFCSUFRMkFnZ2dCVUVBVEFSQUlBY2dCVFlDWUNBR1FRRkJndHdBSUFkQjRBQnFFQThNQVFzZ0JTQUpLQUlFSWdKSkJFQWdCeUFDTmdKMElBY2dCVFlDY0NBR1FRRkI4dUVBSUFkQjhBQnFFQThNQVFzQ1FDQUZJQWtvQWd3aUFrc0VRQ0FISUFJMkFwUUJJQWNnQlRZQ2tBRWdCa0VDUVpYZkFDQUhRWkFCYWhBUElBQWdBQ2dDYkRZQ0tDQUpLQUlNSVFVTUFRc2dBQ0FBTlFKZ0loQWdCU0FBS0FKWWE2MThRZ0Y5SUJDQVBnSW9DeUFCSUFVMkFnd2dBQ0FBTFFCRVFRSnlPZ0JFSUFFZ0JoQTNJZ2hGQkVCQkFDRUlEQUVMSUFjZ0FmMEFBZ0Q5Q3dTQUFTQUdRUVJCdERrZ0IwR0FBV29RRHdzZ0IwSFFBV29rQUNBSUM1VUNBUWQvSXdCQklHc2lCU1FBQW44Z0FDZ0NTQ0lFUlFSQUlBTkJBVUhGNWdCQkFCQVBRUUFNQVF0QkFFRUVJQVFvQWhBUUV5SUVSUTBBR2lBQkJFQWdBQ2dDU0NFSUEwQUNRQUpBSUFJZ0JrRUNkR29vQWdBaUJ5QUlLQUlRVHdSQUlBVWdCellDRUNBRFFRRkIrUkVnQlVFUWFoQVBEQUVMSUFRZ0IwRUNkR29pQ1NnQ0FFVU5BU0FGSUFjMkFnQWdBMEVCUVkwYUlBVVFEd3NnQkJBUVFRQU1Bd3NnQ1VFQk5nSUFJQVpCQVdvaUJpQUJSdzBBQ3dzZ0JCQVFJQUFvQWtBUUVBSkFJQUVFUUNBQUlBRkJBblFpQkJBVUlnTTJBa0FnQTBVRVFDQUFRUUEyQWp4QkFBd0RDeUFESUFJZ0JCQVNHZ3dCQ3lBQVFRQTJBa0FMSUFBZ0FUWUNQRUVCQ3lFS0lBVkJJR29rQUNBS0M3d0ZBUWQvSUFGQkFVRWtFQk1pQkRZQ1NBSkFBa0FnQkVVTkFBSkFJQUVvQXNRQlFSSWdBeEFrQkVBZ0FTZ0N4QUZCRXlBREVDUU5BUXNNQWdzZ0FTZ0N4QUVpQnlnQ0FDRUdJQWNvQWdnaEJBSkFJQVlFUUVFQklRVWdCa0VCUndSQUlBWkJmbkVoQ1FOQUFuOUJBQ0FGUlEwQUdrRUFJQUVnQUNBRElBUW9BZ0FSQUFCRkRRQWFJQUVnQUNBRElBUW9BZ1FSQUFCQkFFY0xJUVVnQkVFSWFpRUVJQWhCQW1vaUNDQUpSdzBBQ3dzQ1FBSkFJQVpCQVhFRVFDQUZSUTBCSUFFZ0FDQURJQVFvQWdBUkFBQkJBRWNoQlFzZ0IwRUFOZ0lBSUFWRkRRRU1Bd3NnQjBFQU5nSUFDd3dEQ3lBSFFRQTJBZ0FMQWtBZ0FTZ0N3QUZCRkNBREVDUUVRQ0FCS0FMQUFVRVZJQU1RSkEwQkN3d0NDeUFCS0FMQUFTSUhLQUlBSVFZZ0J5Z0NDQ0VFQWtBZ0JnUkFRUUVoQlNBR1FRRnhJUWtnQmtFQlJnUi9RUUFGSUFaQmZuRWhCa0VBSVFnRFFBSi9RUUFnQlVVTkFCcEJBQ0FCSUFBZ0F5QUVLQUlBRVFBQVJRMEFHaUFCSUFBZ0F5QUVLQUlFRVFBQVFRQkhDeUVGSUFSQkNHb2hCQ0FJUVFKcUlnZ2dCa2NOQUFzZ0JVVUxJUVlDUUFKQUlBa0VRQ0FHRFFFZ0FTQUFJQU1nQkNnQ0FCRUFBRUVBUnlFRkN5QUhRUUEyQWdBZ0JVVU5BUXdEQ3lBSFFRQTJBZ0FMREFNTElBZEJBRFlDQUFzZ0FrRUJRU1FRRXlJQU5nSUFJQUJGRFFBZ0FTZ0NTQ0FBRUQ4Z0FTZ0N5QUVnQVNnQ2JDQUJLQUpvYkNJQU5nSWtJQUJCS0JBVElRTWdBU2dDeUFFaUFDQUROZ0lvQWtBZ0EwVU5BQ0FBS0FJa1JRUkFRUUVQQzBFQUlRUURRQ0FESUFSQktHd2lCV29pQUVFQU5nSVVJQUJCNUFBMkFoeEI1QUJCR0JBVElRQWdCU0FCS0FMSUFTSUhLQUlvSWdOcUlBQTJBaGdnQUVVTkFVRUJJUW9nQkVFQmFpSUVJQWNvQWlSSkRRQUxEQUVMSUFJb0FnQVFJVUVBSVFvZ0FrRUFOZ0lBQ3lBS0R3c2dBU2dDU0JBaElBRkJBRFlDU0VFQUN3SUFDd1FBUVFFTE5BQUNRQ0FBUlEwQUlBRkZEUUFnQUNBQktBSUVOZ0trQVNBQUlBRW9BZ0EyQXFBQklBQWdBU2dDdUVCQkFuRTJBdUFCQ3d1MEJRRUlmeUFBS0FJWUlnUW9BaEFpQ1VVRVFFRUFEd3NnQkNnQ0dDRUZJQUFvQWhRb0FnQW9BaFFoQkFKQUFrQWdBVVVFUUVFQUlRRURRQ0FGS0FJWUlRSWdCQ2dDSENBRUtBSVlRWmdCYkdvaUFFR01BV3NvQWdBaUJ5QUFRWlFCYXlnQ0FDSUlheUVESUFCQmtBRnJLQUlBSUFCQm1BRnJLQUlBYXlFQUFrQWdCeUFJUmcwQUlBQ3RJQU90ZmtJZ2lGQU5BQXdFQ3lBQUlBTnNJUU1DUUVFRUlBSkJBM1lnQWtFSGNVRUFSMm9pQUNBQVFRTkdHeUlDUlEwQUlBS3RJQU90ZmtJZ2lGQU5BQXdFQzBGL0lRQWdBaUFEYkNJQ0lBRkJmM05MRFFJZ0JFSE1BR29oQkNBRlFUUnFJUVVnQVNBQ2FpSUJJUUFnQmtFQmFpSUdJQWxIRFFBTERBRUxRUUFoQVNBQUtBSkFSUVJBQTBBZ0JTZ0NHQ0VDSUFRb0Fod2dCQ2dDR0VHWUFXeHFJZ0JCQkdzb0FnQWlCeUFBUVF4cktBSUFJZ2hySVFNZ0FFRUlheWdDQUNBQVFSQnJLQUlBYXlFQUFrQWdCeUFJUmcwQUlBQ3RJQU90ZmtJZ2lGQU5BQXdFQ3lBQUlBTnNJUU1DUUVFRUlBSkJBM1lnQWtFSGNVRUFSMm9pQUNBQVFRTkdHeUlDUlEwQUlBS3RJQU90ZmtJZ2lGQU5BQXdFQzBGL0lRQWdBaUFEYkNJQ0lBRkJmM05MRFFJZ0JFSE1BR29oQkNBRlFUUnFJUVVnQVNBQ2FpSUJJUUFnQmtFQmFpSUdJQWxIRFFBTERBRUxBMEFnQlNnQ0dDRUNJQVFvQWh3Z0JDZ0NHRUdZQVd4cUlnQkJqQUZyS0FJQUlnY2dBRUdVQVdzb0FnQWlDR3NoQXlBQVFaQUJheWdDQUNBQVFaZ0JheWdDQUdzaEFBSkFJQWNnQ0VZTkFDQUFyU0FEclg1Q0lJaFFEUUFNQXdzZ0FDQURiQ0VEQWtCQkJDQUNRUU4ySUFKQkIzRkJBRWRxSWdBZ0FFRURSaHNpQWtVTkFDQUNyU0FEclg1Q0lJaFFEUUFNQXd0QmZ5RUFJQUlnQTJ3aUFpQUJRWDl6U3cwQklBUkJ6QUJxSVFRZ0JVRTBhaUVGSUFFZ0Ftb2lBU0VBSUFaQkFXb2lCaUFKUncwQUN3c2dBQThMUVg4TDJnUUJDMzhnQUFSQUlBQW9BaFFpQVFSQUlBRW9BZ0FpQlFSQUlBVW9BaFFoQXlBRktBSVFCSDlCRUVFUklBQXRBQ2hCQVhFYklRZ0RRQ0FES0FJY0lnSUVRQ0FES0FJZ0lnRkJtQUZ1SVFwQkFDRUpJQUZCbUFGUEJIOERRQ0FDS0FJd0lnRUVRQ0FDS0FJMElnWkJLRzRoQjBFQUlRUWdCa0VvVHdSL0EwQWdBU2dDSUJBcElBRkJBRFlDSUNBQktBSWtFQ2tnQVVFQU5nSWtJQUVnQ0JFQ0FDQUJRU2hxSVFFZ0JFRUJhaUlFSUFkSERRQUxJQUlvQWpBRklBRUxFQkFnQWtFQU5nSXdDeUFDS0FKVUlnRUVRQ0FDS0FKWUlnWkJLRzRoQjBFQUlRUWdCa0VvVHdSL0EwQWdBU2dDSUJBcElBRkJBRFlDSUNBQktBSWtFQ2tnQVVFQU5nSWtJQUVnQ0JFQ0FDQUJRU2hxSVFFZ0JFRUJhaUlFSUFkSERRQUxJQUlvQWxRRklBRUxFQkFnQWtFQU5nSlVDeUFDS0FKNElnRUVRQ0FDS0FKOElnWkJLRzRoQjBFQUlRUWdCa0VvVHdSL0EwQWdBU2dDSUJBcElBRkJBRFlDSUNBQktBSWtFQ2tnQVVFQU5nSWtJQUVnQ0JFQ0FDQUJRU2hxSVFFZ0JFRUJhaUlFSUFkSERRQUxJQUlvQW5nRklBRUxFQkFnQWtFQU5nSjRDeUFDUVpnQmFpRUNJQWxCQVdvaUNTQUtSdzBBQ3lBREtBSWNCU0FDQ3hBUUlBTkJBRFlDSEFzQ1FDQURLQUlvUlEwQUlBTW9BaVFpQVVVTkFDQUJFQkFnQS8wTUFBQUFBQUFBQUFBQUFBQUFBQUFBQVAwTEFpUUxJQU1vQWpRUUVDQURRY3dBYWlFRElBdEJBV29pQ3lBRktBSVFTUTBBQ3lBRktBSVVCU0FEQ3hBUUlBVkJBRFlDRkNBQUtBSVVLQUlBRUJBZ0FDZ0NGQ0lCUVFBMkFnQUxJQUVRRUNBQVFRQTJBaFFMSUFBb0FrUVFFQ0FBRUJBTEM4c1RBUlYvSXdCQklHc2lEeVFBSUE4Z0JUWUNHQ0FCSUFNb0FoeEJ6QUJzYWlnQ0hDQURLQUlnUVpnQmJHb2hFUUpBQWtBZ0F5Z0NLQTBBSUJFb0FoaEZEUUFnRVVFY2FpRUpBMEFDUUNBSktBSUlJQWtvQWdCSEJIOGdDU2dDRENBSktBSUVSZ1ZCQVFzTkFDQURLQUlrSWdFZ0NTZ0NHRUVvYms4RVFDQUlRUUZCZ2hWQkFCQVBEQVFMSUFrb0FoUWdBVUVvYkdvaUFTZ0NJQkJpSUFFb0FpUVFZaUFCS0FJVUlBRW9BaEJzSWcxRkRRQWdBU2dDR0NFQklBMUJDRThFUUNBTlFYaHhJUXRCQUNFS0EwQWdBVUlBTndMb0F5QUJRZ0EzQXFnRElBRkNBRGNDNkFJZ0FVSUFOd0tvQWlBQlFnQTNBdWdCSUFGQ0FEY0NxQUVnQVVJQU53Sm9JQUZDQURjQ0tDQUJRWUFFYWlFQklBcEJDR29pQ2lBTFJ3MEFDd3RCQUNFS0lBMUJCM0VpRFVVTkFBTkFJQUZDQURjQ0tDQUJRVUJySVFFZ0NrRUJhaUlLSUExSERRQUxDeUFKUVNScUlRa2dERUVCYWlJTUlCRW9BaGhKRFFBTEN5QUZJUTBDUUNBQ0xRQUFRUUp4UlEwQUlBZEJCVTBFUUNBSVFRSkJzUjlCQUJBUERBRUxBa0FnQlMwQUFFSC9BVVlFUUNBRkxRQUJRWkVCUmcwQkN5QUlRUUpCMng5QkFCQVBEQUVMSUE4Z0JVRUdhaUlOTmdJWUMwRVVFQlFpQzBVTkFBSi9JQUF0QUd4QkFYRUVRQ0FBUVNocUlRY2dBQ2dDS0NFTklBQkJMR29NQVFzZ0FpMEFpQ3hCQW5FRVFDQUNRYkFvYWlFSElBSW9BckFvSVEwZ0FrRzhLR29NQVFzZ0R5QUZJQWRxSUExck5nSWNJQTlCR0dvaEJ5QVBRUnhxQ3lJU0tBSUFJUUFnQzBJQU53SU1JQXNnRFRZQ0NDQUxJQTAyQWdBZ0N5QUFJQTFxTmdJRUlBdEJBUkFmUlFSQUlBc1FaQm9nQ3lnQ0NDQUxLQUlBYXlFYUlBc1FMQ0FhSUExcUlRRUNRQ0FDTFFBQVFRUnhSUTBBSUFjb0FnQWdFaWdDQUNBQmEycEJBVTBFUUNBSVFRSkJtQ0ZCQUJBUERBRUxBa0FnQVMwQUFFSC9BVVlFUUNBQkxRQUJRWklCUmcwQkN5QUlRUUpCd2lGQkFCQVBEQUVMSUFGQkFtb2hBUXNnRWlBU0tBSUFJQWNvQWdBZ0FXdHFOZ0lBSUFjZ0FUWUNBQ0FFUVFBMkFnQWdCaUFQS0FJWUlBVnJOZ0lBUVFFaEZ3d0JDeUFSS0FJWUJFQWdFVUVjYWlFUUEwQWdBeWdDSkNFQUlCQW9BaFFoQVFKQUlCQW9BZ2dnRUNnQ0FFY0VmeUFRS0FJTUlCQW9BZ1JHQlVFQkN3MEFJQUVnQUVFb2JHb2lGQ2dDRkNBVUtBSVFiQ0lZUlEwQUlCUW9BaGdoQ1VFQUlSVURRQUpBQW44Z0NTZ0NLRVVFUUNBTElCUW9BaUFnRlNBREtBSW9RUUZxRUdBTUFRc2dDMEVCRUI4TFJRUkFJQWxCQURZQ0pBd0JDeUFKS0FJb1JRUkFRUUFoQVFOQUlBRWlBRUVCYWlFQklBc2dGQ2dDSkNBVklBQVFZRVVOQUFzZ0VDZ0NIQ0VCSUFsQkF6WUNJQ0FKSUFFMkFoZ2dDU0FCSUFCclFRRnFOZ0ljQ3lBSkFuOUJBU0FMUVFFUUgwVU5BQnBCQWlBTFFRRVFIMFVOQUJvZ0MwRUNFQjhpQUVFRFJ3UkFJQUJCQTJvTUFRc2dDMEVGRUI4aUFFRWZSd1JBSUFCQkJtb01BUXNnQzBFSEVCOUJKV29MTmdJa1FRQWhBUU5BSUFFaUFFRUJhaUVCSUF0QkFSQWZEUUFMSUFrZ0NTZ0NJQ0FBYWpZQ0lBSkFBa0FDZnlBSktBSW9JZ0JGQkVBZ0FpZ0MwQ3NnQXlnQ0hFRzRDR3hxS0FJUUlRQWdDU2dDTUVVRVFDQUpLQUlBUWZBQkVCY2lBVVVOQkNBSklBRTJBZ0FnQVNBSktBSXdRUmhzYWtFQVFmQUJFQlVhSUFsQkNqWUNNQXNnQ1NnQ0FDSUIvUXdBQUFBQUFBQUFBQUFBQUFBQUFBQUEvUXNDQUNBQlFnQTNBaEJCQVVFS1FlMEFJQUJCQVhFYklBQkJCSEViSVFwQkFBd0JDeUFKS0FJQUlnRWdBRUVCYXlJTVFSaHNhaUlLS0FJRUlBb29BZ3hIRFFFZ0FpZ0MwQ3NnQXlnQ0hFRzRDR3hxS0FJUUlRb2dDU2dDTUNJTUlBQkJBV3BKQkg4Z0FTQU1RUXBxSWd4QkdHd1FGeUlCUlEwRElBa2dBVFlDQUNBQklBa29BakJCR0d4cVFRQkI4QUVRRlJvZ0NTQU1OZ0l3SUFrb0FnQUZJQUVMSUFCQkdHeHFJZ0g5REFBQUFBQUFBQUFBQUFBQUFBQUFBQUQ5Q3dJQUlBRkNBRGNDRUFKL1FRRWdDa0VFY1EwQUdrSHRBQ0FLUVFGeFJRMEFHa0VDUVFKQkFTQUJRUXhyS0FJQUlncEJDa1liSUFwQkFVWWJDeUVLSUFBTElRd2dBU0FLTmdJTUN5QUpLQUlrSVFBZ0FpZ0MwQ3NnQXlnQ0hFRzRDR3hxTFFBUVFjQUFjUVJBQTBBZ0RFRVliQ0lPSUFrb0FnQnFJQUJCQVNBTUd5SVROZ0lRSUFrb0FpQWhGa0VBSVFvZ0FDRUJJQk5CQWs4RVFBTkFJQXBCQVdvaENpQUJRUU5MSVJzZ0FVRUJkaUVCSUJzTkFBc0xJQW9nRm1vaUFVRWhUd1JBSUE4Z0FUWUNFQ0FJUVFGQnZQUUFJQTlCRUdvUUR3d0RDeUFMSUFFUUh5RUtJQWtvQWdBaUFTQU9haUlPSUFvMkFoUWdBQ0FPS0FJUWF5SUFRUUJNRFFNZ0FpZ0MwQ3NnQXlnQ0hFRzRDR3hxS0FJUUlRb2dDU2dDTUNJT0lBeEJBbXBKQkVBZ0FTQU9RUXBxSWc1QkdHd1FGeUlCUlEwRElBa2dBVFlDQUNBQklBa29BakJCR0d4cVFRQkI4QUVRRlJvZ0NTQU9OZ0l3SUFrb0FnQWhBUXNnQVNBTVFRRnFJZ3hCR0d4cUlnSDlEQUFBQUFBQUFBQUFBQUFBQUFBQUFBRDlDd0lBSUFGQ0FEY0NFQ0FCQW45QkFTQUtRUVJ4RFFBYVFlMEFJQXBCQVhGRkRRQWFRUUpCQWtFQklBRkJER3NvQWdBaUFVRUtSaHNnQVVFQlJoc0xOZ0lNREFBTEFBc0RRQ0FNUVJoc0lnNGdDU2dDQUdvaUFTQUJLQUlNSUFFb0FnUnJJZ0VnQUNBQUlBRktHeUlCTmdJUUlBa29BaUFoRTBFQUlRb2dBVUVDVHdSQUEwQWdDa0VCYWlFS0lBRkJBMHNoSENBQlFRRjJJUUVnSEEwQUN3c2dDaUFUYWlJQlFTRlBCRUFnRHlBQk5nSUFJQWhCQVVHODlBQWdEeEFQREFJTElBc2dBUkFmSVFvZ0NTZ0NBQ0lCSUE1cUlnNGdDallDRkNBQUlBNG9BaEJySWdCQkFFd05BaUFDS0FMUUt5QURLQUljUWJnSWJHb29BaEFoQ2lBSktBSXdJZzRnREVFQ2Fra0VRQ0FCSUE1QkNtb2lEa0VZYkJBWElnRkZEUUlnQ1NBQk5nSUFJQUVnQ1NnQ01FRVliR3BCQUVId0FSQVZHaUFKSUE0MkFqQWdDU2dDQUNFQkN5QUJJQXhCQVdvaURFRVliR29pQWYwTUFBQUFBQUFBQUFBQUFBQUFBQUFBQVAwTEFnQWdBVUlBTndJUUlBRUNmMEVCSUFwQkJIRU5BQnBCN1FBZ0NrRUJjVVVOQUJwQkFrRUNRUUVnQVVFTWF5Z0NBQ0lCUVFwR0d5QUJRUUZHR3dzMkFnd01BQXNBQ3lBTEVDd01CUXNnQ1VGQWF5RUpJQlZCQVdvaUZTQVlSdzBBQ3dzZ0VFRWthaUVRSUJsQkFXb2lHU0FSS0FJWVNRMEFDd3NnQ3hCa1JRUkFJQXNRTEF3QkN5QUxLQUlJSUFzb0FnQnJJUjBnQ3hBc0lCMGdEV29oQVFKQUlBSXRBQUJCQkhGRkRRQWdCeWdDQUNBU0tBSUFJQUZyYWtFQlRRUkFJQWhCQWtHWUlVRUFFQThNQVFzQ1FDQUJMUUFBUWY4QlJnUkFJQUV0QUFGQmtnRkdEUUVMSUFoQkFrSENJVUVBRUE4TUFRc2dBVUVDYWlFQkN5QVNJQklvQWdBZ0J5Z0NBQ0FCYTJvMkFnQWdCeUFCTmdJQVFRRWhGeUFFUVFFMkFnQWdCaUFQS0FJWUlBVnJOZ0lBQ3lBUFFTQnFKQUFnRnd1V0pBSVVmdzUrQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUNBQUtBSlVEZ1VBQVFJREJBb0xBa0FnQUNnQ05DSUdJQUFvQXNRQklnRkpCRUFnQUNnQ1FDSUhJQUZCQVdwSkRRRUxJQUFvQXV3QlFRRkI5RDlCQUJBUERBd0xJQUFvQWl4RkJFQWdBQ2dDSkNFQ1FRQWhBUXdGQ3lBQVFRQTJBaXdnQUNnQ1JDRURRUUVoQVF3RUN3SkFJQUFvQWpRaUJpQUFLQUxFQVNJQlNRUkFJQUFvQWtBaUJ5QUJRUUZxU1EwQkN5QUFLQUxzQVVFQlFhSEFBRUVBRUE4TUN3c2dBQ2dDTEVVRVFDQUFLQUlrSVFSQkFDRUJEQWdMSUFCQkFEWUNMQ0FBS0FJd0lRTkJBU0VCREFjTEFrQWdBQ2dDTkNJRUlBQW9Bc1FCSWdwSkJFQWdBQ2dDUUNJT0lBcEJBV3BKRFFFTElBQW9BdXdCUVFGQnFNRUFRUUFRRHd3S0N5QUFLQUlzUlFSQUlBQW9BaWdoQ3d3R0N5QUFRZ0EzQXVRQklBQkJBRFlDTENBQUtBTElBU0VNQTBBZ0RDQUhRUVIwYWlJRktBSUlJZzhFUUNBRktBSU1JUkpCQUNFQkEwQUNRQ0FQSUFGQmYzTnFJaEFnRWlBQlFRUjBhaUlSS0FJQWFpSUpRUjlMRFFBZ0JTZ0NBQ0lUUVg4Z0NYWkxEUUFnQUNBQ0lCTWdDWFFpQ1NBQ0lBbEpHeUFKSUFJYklnSTJBdVFCQ3dKQUlCRW9BZ1FnRUdvaUNVRWZTdzBBSUFVb0FnUWlFRUYvSUFsMlN3MEFJQUFnQXlBUUlBbDBJZ2tnQXlBSlNSc2dDU0FER3lJRE5nTG9BUXNnQVVFQmFpSUJJQTlIRFFBTEN5QUhRUUZxSWdjZ0NrY05BQXNnQWtVTkJ5QURSUTBISUFBdEFBQkZCRUFnQUNBQUtBTFFBVFlDYkNBQUlBQW9Bc3dCTmdKa0lBQWdBQ2dDMkFFMkFuQWdBQ0FBS0FMVUFUWUNhQXNnQUNnQ01DRUZRUUVoQVF3RkN3SkFJQUFvQWpRaUJTQUFLQUxFQVNJSlNRUkFJQUFvQWtBaUVpQUpRUUZxU1EwQkN5QUFLQUxzQVVFQlFmdkFBRUVBRUE4TUNRc2dBQ2dDTEVVRVFDQUFLQUxJQVNJTklBQW9BaHdpQkVFRWRHb2hDeUFBS0FJb0lRZ01CQXNnQUVJQU53TGtBU0FBUVFBMkFpd2dBQ2dDeUFFaERRTkFJQTBnQmtFRWRHb2lDaWdDQ0NJT0JFQWdDaWdDRENFUVFRQWhBUU5BQWtBZ0RpQUJRWDl6YWlJUklCQWdBVUVFZEdvaUV5Z0NBR29pREVFZlN3MEFJQW9vQWdBaUZFRi9JQXgyU3cwQUlBQWdBaUFVSUF4MElnd2dBaUFNU1JzZ0RDQUNHeUlDTmdMa0FRc0NRQ0FUS0FJRUlCRnFJZ3hCSDBzTkFDQUtLQUlFSWhGQmZ5QU1ka3NOQUNBQUlBTWdFU0FNZENJTUlBTWdERWtiSUF3Z0F4c2lBellDNkFFTElBRkJBV29pQVNBT1J3MEFDd3NnQmtFQmFpSUdJQWxIRFFBTElBSkZEUVlnQTBVTkJnSkFJQUF0QUFBRVFDQUFLQUpzSVFZTUFRc2dBQ0FBS0FMUUFTSUdOZ0pzSUFBZ0FDZ0N6QUUyQW1RZ0FDQUFLQUxZQVRZQ2NDQUFJQUFvQXRRQk5nSm9DMEVCSVFFTUF3c0NRQ0FBS0FJMElnWWdBQ2dDeEFFaUFVa0VRQ0FBS0FKQUlnOGdBVUVCYWtrTkFRc2dBQ2dDN0FGQkFVSE93QUJCQUJBUERBWUxJQUFvQWl4RkJFQWdBQ2dDeUFFZ0FDZ0NIQ0lHUVFSMGFpRUZJQUFvQWlnaEIwRUFJUUVNQWdzZ0FDQUdOZ0ljSUFCQkFEWUNMRUVCSVFFTUFRc0RRQUovQWtBZ0FVVUVRQ0FDUVFGcUlRSU1BUXNnQUNBRE5nSW9JQUFvQWpnZ0EwME5DU0FBS0FJd0lRUkJBQXdCQzBFQkN5RUJBMEFDUUFKQUFrQUNRQ0FCUlFSQUlBQWdCRFlDSUNBRUlBQW9BanhQRFFFZ0FDQUdOZ0ljSUFZaEFVRUFJUVVNQkFzZ0FDQUNOZ0lrSUFBb0Frd2dBazBFUUNBQUtBSWNJUUZCQVNFRkRBUUxJQUFvQWhBZ0FDZ0NJR3dnQUNnQ0RDQUFLQUlvYkdvZ0FDZ0NGQ0FBS0FJY2JHb2dBQ2dDR0NBQ2JHb2lBU0FBS0FJSVR3UkFEQXdMSUFBb0FnUWdBVUVCZEdvaUFTOEJBQTBCREEwTElBQW9BaWhCQVdvaEF3d0JDMEVBSVFFTUF3dEJBU0VCREFJTEEwQUNRQUpBQWtBZ0JVVUVRQ0FCSUFkUERRRWdBQ2dDSUNJRklBQW9Bc2dCSUFGQkJIUnFJZzBvQWdoUERRTWdBQzBBQUVVRVFDQUFJQTBvQWd3Z0JVRUVkR29pQVNnQ0RDQUJLQUlJYkRZQ1RBc2dBQ2dDU0NFQ1FRRWhBUXdGQ3lBQUlBRkJBV29pQVRZQ0hBd0JDeUFBS0FJZ1FRRnFJUVJCQUNFQkRBTUxRUUFoQlF3QkMwRUJJUVVNQUFzQUN3QUxBQXNEUUFKL0FrQWdBVVVFUUNBQUlBZEJBV29pQnpZQ0tBd0JDeUFHSUE5UERRZ2dBRUlBTndMa0FTQUFLQUxJQVNBR1FRUjBhaUlGS0FJSUlndEZEUWdnQlNnQ0RDRUtRUUFoQWtFQUlRUkJBQ0VCQTBBQ1FDQUxJQUZCZjNOcUlna2dDaUFCUVFSMGFpSU9LQUlBYWlJSVFSOUxEUUFnQlNnQ0FDSU1RWDhnQ0haTERRQWdBQ0FFSUF3Z0NIUWlDQ0FFSUFoSkd5QUlJQVFiSWdRMkF1UUJDd0pBSUE0b0FnUWdDV29pQ0VFZlN3MEFJQVVvQWdRaUNVRi9JQWgyU3cwQUlBQWdBaUFKSUFoMElnZ2dBaUFJU1JzZ0NDQUNHeUlDTmdMb0FRc2dBVUVCYWlJQklBdEhEUUFMSUFSRkRRWWdBa1VOQmdKQUlBQXRBQUFFUUNBQUtBSnNJUUlNQVFzZ0FDQUFLQUxRQVNJQ05nSnNJQUFnQUNnQ3pBRTJBbVFnQUNBQUtBTFlBVFlDY0NBQUlBQW9BdFFCTmdKb0MwRUFEQUVMUVFFTElRRURRQUpBQWtBQ1FBSkFJQUZGQkVBZ0FDQUNOZ0xnQVNBQ0lBQW9BbkJQRFFFZ0FDZ0NaQ0VOUVFBaEFRd0VDeUFBS0FJNElBZE5CRUFnQUNnQ0lDRURRUUVoQVF3RUN5QUFLQUlRSUFBb0FpQnNJQUFvQWd3Z0IyeHFJQUFvQWhRZ0JteHFJQUFvQWhnZ0FDZ0NKR3hxSWdFZ0FDZ0NDRThFUUF3TEN5QUFLQUlFSUFGQkFYUnFJZ0V2QVFBTkFRd01DeUFBSUFaQkFXb2lCallDSEF3QkMwRUFJUUVNQXd0QkFTRUJEQUlMQTBBQ1FBSkFBa0FnQUFKL0lBRkZCRUFnQUNBTk5nTGNBU0FOSUFBb0FtaFBEUUlnQUNnQ01Bd0JDeUFEUVFGcUN5SUROZ0lnSUFBb0Fqd2lBU0FGS0FJSUlnUWdBU0FFU1JzZ0Ewc0VRQ0FGS0FJQUlnRWdBYTBpSGlBRUlBTkJmM05xSWdpdEloYUdJaGNnRm9pblJ3MERJQVVvQWdRaUJFSi9JQmFJcDNFZ0JFY05BeUFFclNJVklCYUdJaGhDQVgwaUdTQUFOUUxZQVh3Z0dJQWhIeUFaSUFBb0F0QUJJZ210ZkNBWWdDRWFJQmRDQVgwaUd5QUFOUUxVQVh3Z0Y0QWhJQ0FiSUFBb0Fzd0JJZzZ0ZkNBWGdDRWNJQUZDZnlBRktBSU1JQU5CQkhScUlnc29BZ0FpQ2lBSWFxMGlIWWluY1NBQlJ3MERJQVFnRlNBTEtBSUVJZ0VnQ0dxdEloV0dJaUVnRllpblJ3MERJQUFvQXVBQklnU3RJaUlnSVlKQ0FGSUVRQ0FFSUFsSERRUkNmeUFWaGtKL2hTQWFRdi8vLy84UGd5QVdob05RRFFRTElBQW9BdHdCSWdTdEloVWdIaUFkaG9KQ0FGSUVRQ0FFSUE1SERRUkNmeUFkaGtKL2hTQWNRdi8vLy84UGd5QVdob05RRFFRTElBc29BZ2dpQkVVTkF5QUxLQUlNUlEwRElCeW5JZ3NnSUtkR0RRTWdHcWNpQ0NBZnAwWU5BeUFBSUFBb0FrUWlCellDS0NBQUlCVWdHM3dnRjRDbklBcDJJQXNnQ25acklCa2dJbndnR0lDbklBRjJJQWdnQVhacklBUnNhallDSkVFQklRRU1CUXNnQUNnQzNBRWlBU0FBS0FMa0FTSUVhaUFCSUFSd2F5RU5EQUVMSUFBb0F1QUJJZ0VnQUNnQzZBRWlCR29nQVNBRWNHc2hBa0VBSVFFTUF3dEJBQ0VCREFFTFFRRWhBUXdBQ3dBTEFBc0FDd05BQW44Q1FDQUJSUVJBSUFBZ0NFRUJhaUlJTmdJb0RBRUxJQUFnQmpZQzRBRWdBQ2dDY0NBR1RRMEhJQUFvQW1RaEQwRUFEQUVMUVFFTElRRURRQUpBQWtBQ1FBSkFJQUZGQkVBZ0FDQVBOZ0xjQVNBUElBQW9BbWhQRFFFZ0FDQUZOZ0ljSUFVaEJFRUFJUUVNQkFzZ0FDZ0NPQ0FJVFFSQUlBQW9BaUFoQjBFQklRRU1CQXNnQUNnQ0VDQUFLQUlnYkNBQUtBSU1JQWhzYWlBQUtBSVVJQVJzYWlBQUtBSVlJQUFvQWlSc2FpSUJJQUFvQWdoUEJFQU1DZ3NnQUNnQ0JDQUJRUUYwYWlJQkx3RUFEUUVNQ3dzZ0FDZ0M0QUVpQVNBQUtBTG9BU0lHYWlBQklBWndheUVHREFFTFFRQWhBUXdEQzBFQklRRU1BZ3NEUUFKQUFrQUNRQUpBSUFGRkJFQWdCQ0FTVHcwQ0lBQWdBQ2dDTUNJSE5nSWdJQTBnQkVFRWRHb2hDd3dCQ3lBQUlBZEJBV29pQnpZQ0lBc2dBQ2dDUENJQklBc29BZ2dpQWlBQklBSkpHeUFIU3dSQUlBc29BZ0FpQVNBQnJTSWVJQUlnQjBGL2Myb2lDcTBpRm9ZaUZ5QVdpS2RIRFFNZ0N5Z0NCQ0lDUW44Z0ZvaW5jU0FDUncwRElBS3RJaFVnRm9ZaUdFSUJmU0laSUFBMUF0Z0JmQ0FZZ0NFZklCa2dBQ2dDMEFFaURxMThJQmlBSVJvZ0YwSUJmU0liSUFBMUF0UUJmQ0FYZ0NFZ0lCc2dBQ2dDekFFaURLMThJQmVBSVJ3Z0FVSi9JQXNvQWd3Z0IwRUVkR29pQXlnQ0FDSUpJQXBxclNJZGlLZHhJQUZIRFFNZ0FpQVZJQU1vQWdRaUFTQUthcTBpRllZaUlTQVZpS2RIRFFNZ0FDZ0M0QUVpQXEwaUlpQWhna0lBVWdSQUlBSWdEa2NOQkVKL0lCV0dRbitGSUJwQy8vLy8vdytESUJhR2cxQU5CQXNnQUNnQzNBRWlBcTBpRlNBZUlCMkdna0lBVWdSQUlBSWdERWNOQkVKL0lCMkdRbitGSUJ4Qy8vLy8vdytESUJhR2cxQU5CQXNnQXlnQ0NDSUNSUTBESUFNb0FneEZEUU1nSEtjaUF5QWdwMFlOQXlBYXB5SUtJQituUmcwRElBQWdBQ2dDUkNJSU5nSW9JQUFnRlNBYmZDQVhnS2NnQ1hZZ0F5QUpkbXNnR1NBaWZDQVlnS2NnQVhZZ0NpQUJkbXNnQW14cU5nSWtRUUVoQVF3RkN5QUFJQVJCQVdvaUJEWUNIQXdCQ3lBQUtBTGNBU0lCSUFBb0F1UUJJZ0pxSUFFZ0FuQnJJUTlCQUNFQkRBTUxRUUFoQVF3QkMwRUJJUUVNQUFzQUN3QUxBQXNEUUFKL0FrQWdBVVVFUUNBQUlBdEJBV29pQ3pZQ0tBd0JDeUFBSUFVMkFpQWdBQ2dDUENBRlRRMEdJQUFvQW13aENFRUFEQUVMUVFFTElRRURRQUpBQWtBQ1FBSkFJQUZGQkVBZ0FDQUlOZ0xnQVNBSUlBQW9BbkJQRFFFZ0FDZ0NaQ0VOUVFBaEFRd0VDeUFBS0FJNElBdE5CRUFnQUNnQ0hDRUdRUUVoQVF3RUN5QUFLQUlRSUFBb0FpQnNJQUFvQWd3Z0MyeHFJQUFvQWhRZ0FDZ0NIR3hxSUFBb0FoZ2dBQ2dDSkd4cUlnRWdBQ2dDQ0U4RVFBd0pDeUFBS0FJRUlBRkJBWFJxSWdFdkFRQU5BUXdLQ3lBQUtBSWdRUUZxSVFVTUFRdEJBQ0VCREFNTFFRRWhBUXdDQ3dOQUFrQUNRQUpBQWtBZ0FVVUVRQ0FBSUEwMkF0d0JJQTBnQUNnQ2FFOE5BaUFBSUFRMkFod2dCQ0VHREFFTElBQWdCa0VCYWlJR05nSWNDeUFHSUE1SkJFQWdBQ2dDSUNJSElBQW9Bc2dCSUFaQkJIUnFJZ0VvQWdnaUEwOE5BeUFCS0FJQUlnSWdBcTBpSGlBRElBZEJmM05xSWdxdEloYUdJaGNnRm9pblJ3MERJQUVvQWdRaUEwSi9JQmFJcDNFZ0EwY05BeUFEclNJVklCYUdJaGhDQVgwaUdTQUFOUUxZQVh3Z0dJQWhIeUFaSUFBb0F0QUJJZyt0ZkNBWWdDRWFJQmRDQVgwaUd5QUFOUUxVQVh3Z0Y0QWhJQ0FiSUFBb0Fzd0JJZ210ZkNBWGdDRWNJQUpDZnlBQktBSU1JQWRCQkhScUlnRW9BZ0FpQnlBS2FxMGlIWWluY1NBQ1J3MERJQU1nRlNBQktBSUVJZ0lnQ21xdEloV0dJaUVnRllpblJ3MERJQUFvQXVBQklnT3RJaUlnSVlKQ0FGSUVRQ0FESUE5SERRUkNmeUFWaGtKL2hTQWFRdi8vLy84UGd5QVdob05RRFFRTElBQW9BdHdCSWdPdEloVWdIaUFkaG9KQ0FGSUVRQ0FESUFsSERRUkNmeUFkaGtKL2hTQWNRdi8vLy84UGd5QVdob05RRFFRTElBRW9BZ2dpQTBVTkF5QUJLQUlNUlEwRElCeW5JZ0VnSUtkR0RRTWdHcWNpQ2lBZnAwWU5BeUFBSUFBb0FrUWlDellDS0NBQUlCVWdHM3dnRjRDbklBZDJJQUVnQjNacklCa2dJbndnR0lDbklBSjJJQW9nQW5acklBTnNhallDSkVFQklRRU1CUXNnQUNnQzNBRWlBU0FBS0FMa0FTSUNhaUFCSUFKd2F5RU5EQUVMSUFBb0F1QUJJZ0VnQUNnQzZBRWlBbW9nQVNBQ2NHc2hDRUVBSVFFTUF3dEJBQ0VCREFFTFFRRWhBUXdBQ3dBTEFBc0FDd05BQW44Q1FDQUJSUVJBSUFSQkFXb2hCQXdCQ3lBQUlBTTJBaUFnQUNnQ1BDQURUUTBGSUFBb0FrUWhBa0VBREFFTFFRRUxJUUVEUUFKQUFrQUNRQUpBSUFGRkJFQWdBQ0FDTmdJb0lBSWdBQ2dDT0U4TkFTQUFJQVkyQWh3Z0JpRUJRUUFoQlF3RUN5QUFJQVEyQWlRZ0FDZ0NUQ0FFVFFSQUlBQW9BaHdoQVVFQklRVU1CQXNnQUNnQ0VDQUFLQUlnYkNBQUtBSU1JQUFvQWloc2FpQUFLQUlVSUFBb0FoeHNhaUFBS0FJWUlBUnNhaUlCSUFBb0FnaFBCRUFNQ0FzZ0FDZ0NCQ0FCUVFGMGFpSUJMd0VBRFFFTUNRc2dBQ2dDSUVFQmFpRUREQUVMUVFBaEFRd0RDMEVCSVFFTUFnc0RRQUpBQWtBQ1FDQUZSUVJBSUFFZ0IwOE5BU0FBS0FJZ0lnVWdBQ2dDeUFFZ0FVRUVkR29pRFNnQ0NFOE5BeUFBTFFBQVJRUkFJQUFnRFNnQ0RDQUZRUVIwYWlJQktBSU1JQUVvQWdoc05nSk1DeUFBS0FKSUlRUkJBU0VCREFVTElBQWdBVUVCYWlJQk5nSWNEQUVMSUFBb0FpaEJBV29oQWtFQUlRRU1Bd3RCQUNFRkRBRUxRUUVoQlF3QUN3QUxBQXNBQzBFQUR3c2dBQ2dDN0FGQkFVR2FDa0VBRUE4TFFRQVBDeUFCUVFFN0FRQkJBUXVSQ3dFS2Z3SkFJQUVvQWdBZ0JFRURiQ0lNZGlJR1FaQ0FnQUZ4RFFBZ0FDQUFRUnhxSWc0Z0FDZ0NiQ0FHUWU4RGNXb3RBQUJCQW5ScUlnbzJBbWdnQUNBQUtBSUVJQW9vQWdBaUNTZ0NBQ0lJYXlJR05nSUVBa0FnQ0NBQUtBSUFJZ2RCRUhaTEJFQWdDU2dDQkNFTElBQWdDRFlDQkNBS0lBbEJDRUVNSUFZZ0NFa2lCaHRxS0FJQU5nSUFJQXNnQzBVZ0Joc2hDU0FBS0FJSUlRWURRQUpBSUFZTkFDQUFLQUlRSWdaQkFXb2hDeUFHTFFBQklRb2dCaTBBQUVIL0FVWUVRQ0FLUVpBQlR3UkFJQUFnQUNnQ0RFRUJhallDRENBSFFZRCtBMm9oQjBFSUlRWU1BZ3NnQUNBTE5nSVFJQWNnQ2tFSmRHb2hCMEVISVFZTUFRc2dBQ0FMTmdJUVFRZ2hCaUFISUFwQkNIUnFJUWNMSUFBZ0JrRUJheUlHTmdJSUlBQWdCMEVCZENJSE5nSUFJQUFnQ0VFQmRDSUlOZ0lFSUFoQmdJQUNTUTBBQ3lBSUlRWU1BUXNnQUNBSElBaEJFSFJySWdjMkFnQWdCa0dBZ0FKeFJRUkFJQWtvQWdRaEN5QUtJQWxCREVFSUlBWWdDRWtpQ0J0cUtBSUFOZ0lBSUF0RklBc2dDQnNoQ1NBQUtBSUlJUWdEUUFKQUlBZ05BQ0FBS0FJUUlnaEJBV29oQ3lBSUxRQUJJUW9nQ0MwQUFFSC9BVVlFUUNBS1FaQUJUd1JBSUFBZ0FDZ0NERUVCYWpZQ0RDQUhRWUQrQTJvaEIwRUlJUWdNQWdzZ0FDQUxOZ0lRSUFjZ0NrRUpkR29oQjBFSElRZ01BUXNnQUNBTE5nSVFRUWdoQ0NBSElBcEJDSFJxSVFjTElBQWdDRUVCYXlJSU5nSUlJQUFnQjBFQmRDSUhOZ0lBSUFBZ0JrRUJkQ0lHTmdJRUlBWkJnSUFDU1EwQUN3d0JDeUFKS0FJRUlRa0xJQWxGRFFBZ0FDQU9JQUVvQWdRZ0RFRVJhblpCQkhFZ0FVRUVheUlOS0FJQUlBeEJFMnAyUVFGeElBRW9BZ0FpQ0NBTVFSQnFka0hBQUhFZ0NDQU1ka0dxQVhGeUlBZ2dERUVNYWtFT0lBUWJka0VRY1hKeWNpSVBRZEM1QVdvdEFBQkJBblJxSWdzMkFtZ2dBQ0FHSUFzb0FnQWlDaWdDQUNJSWF5SUdOZ0lFQWtBZ0NDQUhRUkIyU3dSQUlBb29BZ1FoQ1NBQUlBZzJBZ1FnQ3lBS1FRaEJEQ0FHSUFoSklnWWJhaWdDQURZQ0FDQUpJQWxGSUFZYklRb2dBQ2dDQ0NFR0EwQUNRQ0FHRFFBZ0FDZ0NFQ0lHUVFGcUlRc2dCaTBBQVNFSklBWXRBQUJCL3dGR0JFQWdDVUdRQVU4RVFDQUFJQUFvQWd4QkFXbzJBZ3dnQjBHQS9nTnFJUWRCQ0NFR0RBSUxJQUFnQ3pZQ0VDQUhJQWxCQ1hScUlRZEJCeUVHREFFTElBQWdDellDRUVFSUlRWWdCeUFKUVFoMGFpRUhDeUFBSUFaQkFXc2lCallDQ0NBQUlBZEJBWFFpQnpZQ0FDQUFJQWhCQVhRaUNEWUNCQ0FJUVlDQUFra05BQXNNQVFzZ0FDQUhJQWhCRUhScklnazJBZ0FnQmtHQWdBSnhSUVJBSUFvb0FnUWhCeUFMSUFwQkRFRUlJQVlnQ0VraUNCdHFLQUlBTmdJQUlBZEZJQWNnQ0JzaENpQUFLQUlJSVFjRFFBSkFJQWNOQUNBQUtBSVFJZ2RCQVdvaEN5QUhMUUFCSVFnZ0J5MEFBRUgvQVVZRVFDQUlRWkFCVHdSQUlBQWdBQ2dDREVFQmFqWUNEQ0FKUVlEK0Eyb2hDVUVJSVFjTUFnc2dBQ0FMTmdJUUlBa2dDRUVKZEdvaENVRUhJUWNNQVFzZ0FDQUxOZ0lRUVFnaEJ5QUpJQWhCQ0hScUlRa0xJQUFnQjBFQmF5SUhOZ0lJSUFBZ0NVRUJkQ0lKTmdJQUlBQWdCa0VCZENJR05nSUVJQVpCZ0lBQ1NRMEFDd3dCQ3lBS0tBSUVJUW9MSUFKQkFDQURheUFESUFvZ0QwSFF1d0ZxTFFBQWN5SURHellDQUNBTklBMG9BZ0JCSUNBTWRISTJBZ0FnQVNBQktBSUFJQU5CRTNSQkVISWdESFJ5TmdJQUlBRWdBU2dDQkVFSUlBeDBjallDQkNBRUlBVnlSUVJBSUFGQmZpQUFLQUo4YTBFQ2RHb2lBaUFDS0FJRVFZQ0FBbkkyQWdRZ0FpQUNLQUlBSUFOQkgzUnlRWUNBQkhJMkFnQWdBa0VFYXlJQ0lBSW9BZ0JCZ0lBSWNqWUNBQXNnQkVFRFJ3MEFJQUVnQUNnQ2ZFRUNkR29pQUVFRWFpQUFLQUlFUVFSeU5nSUFJQUFnQUNnQ0RFRUJjallDRENBQUlBQW9BZ2dnQTBFU2RISkJBbkkyQWdnTEM2c0xBUWwvQWtBZ0FTZ0NBQ0FFUVFOc0lnMTJJZ2RCa0lDQUFYRU5BQ0FIUWU4RGNTSUhSUTBBSUFBZ0FFRWNhaUlPSUFBb0Ftd2dCMm90QUFCQkFuUnFJZ3MyQW1nZ0FDQUFLQUlFSUFzb0FnQWlDaWdDQUNJSmF5SUhOZ0lFQWtBZ0NTQUFLQUlBSWdoQkVIWkxCRUFnQ2lnQ0JDRU1JQUFnQ1RZQ0JDQUxJQXBCQ0VFTUlBY2dDVWtpQnh0cUtBSUFOZ0lBSUF3Z0RFVWdCeHNoQ2lBQUtBSUlJUWNEUUFKQUlBY05BQ0FBS0FJUUlnZEJBV29oRENBSExRQUJJUXNnQnkwQUFFSC9BVVlFUUNBTFFaQUJUd1JBSUFBZ0FDZ0NERUVCYWpZQ0RDQUlRWUQrQTJvaENFRUlJUWNNQWdzZ0FDQU1OZ0lRSUFnZ0MwRUpkR29oQ0VFSElRY01BUXNnQUNBTU5nSVFRUWdoQnlBSUlBdEJDSFJxSVFnTElBQWdCMEVCYXlJSE5nSUlJQUFnQ0VFQmRDSUlOZ0lBSUFBZ0NVRUJkQ0lKTmdJRUlBbEJnSUFDU1EwQUN5QUpJUWNNQVFzZ0FDQUlJQWxCRUhScklnZzJBZ0FnQjBHQWdBSnhSUVJBSUFvb0FnUWhEQ0FMSUFwQkRFRUlJQWNnQ1VraUNSdHFLQUlBTmdJQUlBeEZJQXdnQ1JzaENpQUFLQUlJSVFrRFFBSkFJQWtOQUNBQUtBSVFJZ2xCQVdvaERDQUpMUUFCSVFzZ0NTMEFBRUgvQVVZRVFDQUxRWkFCVHdSQUlBQWdBQ2dDREVFQmFqWUNEQ0FJUVlEK0Eyb2hDRUVJSVFrTUFnc2dBQ0FNTmdJUUlBZ2dDMEVKZEdvaENFRUhJUWtNQVFzZ0FDQU1OZ0lRUVFnaENTQUlJQXRCQ0hScUlRZ0xJQUFnQ1VFQmF5SUpOZ0lJSUFBZ0NFRUJkQ0lJTmdJQUlBQWdCMEVCZENJSE5nSUVJQWRCZ0lBQ1NRMEFDd3dCQ3lBS0tBSUVJUW9MQWtBZ0NrVU5BQ0FBSUE0Z0FTZ0NCQ0FOUVJGcWRrRUVjU0FCUVFScklnOG9BZ0FnRFVFVGFuWkJBWEVnQVNnQ0FDSUpJQTFCRUdwMlFjQUFjU0FKSUExMlFhb0JjWElnQ1NBTlFReHFRUTRnQkJ0MlFSQnhjbkp5SWdwQjBMa0JhaTBBQUVFQ2RHb2lERFlDYUNBQUlBY2dEQ2dDQUNJTEtBSUFJZ2xySWdjMkFnUWdDa0hRdXdGcUxRQUFJUTRDUUNBSklBaEJFSFpMQkVBZ0N5Z0NCQ0VLSUFBZ0NUWUNCQ0FNSUF0QkNFRU1JQWNnQ1VraUJ4dHFLQUlBTmdJQUlBb2dDa1VnQnhzaEN5QUFLQUlJSVFjRFFBSkFJQWNOQUNBQUtBSVFJZ2RCQVdvaERDQUhMUUFCSVFvZ0J5MEFBRUgvQVVZRVFDQUtRWkFCVHdSQUlBQWdBQ2dDREVFQmFqWUNEQ0FJUVlEK0Eyb2hDRUVJSVFjTUFnc2dBQ0FNTmdJUUlBZ2dDa0VKZEdvaENFRUhJUWNNQVFzZ0FDQU1OZ0lRUVFnaEJ5QUlJQXBCQ0hScUlRZ0xJQUFnQjBFQmF5SUhOZ0lJSUFBZ0NFRUJkQ0lJTmdJQUlBQWdDVUVCZENJSk5nSUVJQWxCZ0lBQ1NRMEFDd3dCQ3lBQUlBZ2dDVUVRZEdzaUNqWUNBQ0FIUVlDQUFuRkZCRUFnQ3lnQ0JDRUlJQXdnQzBFTVFRZ2dCeUFKU1NJSkcyb29BZ0EyQWdBZ0NFVWdDQ0FKR3lFTElBQW9BZ2doQ0FOQUFrQWdDQTBBSUFBb0FoQWlDRUVCYWlFTUlBZ3RBQUVoQ1NBSUxRQUFRZjhCUmdSQUlBbEJrQUZQQkVBZ0FDQUFLQUlNUVFGcU5nSU1JQXBCZ1A0RGFpRUtRUWdoQ0F3Q0N5QUFJQXcyQWhBZ0NpQUpRUWwwYWlFS1FRY2hDQXdCQ3lBQUlBdzJBaEJCQ0NFSUlBb2dDVUVJZEdvaENnc2dBQ0FJUVFGcklnZzJBZ2dnQUNBS1FRRjBJZ28yQWdBZ0FDQUhRUUYwSWdjMkFnUWdCMEdBZ0FKSkRRQUxEQUVMSUFzb0FnUWhDd3NnQWtFQUlBTnJJQU1nQ3lBT2N5SUNHellDQUNBUElBOG9BZ0JCSUNBTmRISTJBZ0FnQVNBQktBSUFJQUpCRTNSQkVISWdEWFJ5TmdJQUlBRWdBU2dDQkVFSUlBMTBjallDQkNBRUlBWnlSUVJBSUFFZ0JVRUNkR3NpQUNBQUtBSUVRWUNBQW5JMkFnUWdBQ0FBS0FJQUlBSkJIM1J5UVlDQUJISTJBZ0FnQUVFRWF5SUFJQUFvQWdCQmdJQUljallDQUFzZ0JFRURSdzBBSUFFZ0JVRUNkR29pQUNBQUtBSUVRUUZ5TmdJRUlBQWdBQ2dDQUNBQ1FSSjBja0VDY2pZQ0FDQUFRUVJySWdBZ0FDZ0NBRUVFY2pZQ0FBc2dBU0FCS0FJQVFZQ0FnQUVnRFhSeU5nSUFDd3V0QVFBZ0FFSHduUUUyQW1RZ0FFSHduUUUyQW1BZ0FFSHduUUUyQWx3Z0FFSHduUUUyQWxnZ0FFSHduUUUyQWxRZ0FFSHduUUUyQWxBZ0FFSHduUUUyQWt3Z0FFSHduUUUyQWtnZ0FFSHduUUUyQWtRZ0FFSHduUUUyQWtBZ0FFSHduUUUyQWp3Z0FFSHduUUUyQWpnZ0FFSHduUUUyQWpRZ0FFSHduUUUyQWpBZ0FFSHduUUUyQWl3Z0FFSHduUUUyQWlnZ0FFSHduUUUyQWlRZ0FFSHduUUUyQWlBZ0FFSHduUUUyQWh3TGtnWUNDWDhFZmlBQUlBRTJBZ0FnQVAwTUFBQUFBQUFBQUFBQUFBQUFBQUFBQVAwTEF3Z2dBQ0FETmdJY0lBQWdBa0VCYXlJRk5nSVlJQUZCQTNFaENnSi9JQUpCQUV3RVFDQUJJUVFnQXd3QkN5QUFJQUZCQVdvaUJEWUNBQ0FCTFFBQUN5RUJRUWdoQnlBQVFRZzJBaEFnQUNBQnJTSU5Od01JSUFBZ0RVTC9BWU1pRGtML0FWRWlDVFlDRkFKQUlBcEJBMFlOQUNBQUlBSkJBbXNpQ0RZQ0dBSi9JQUpCQWtnRVFDQUVJUUVnQXd3QkN5QUFJQVJCQVdvaUFUWUNBQ0FFTFFBQUN5RUVJQUJCRDBFUUlBNUMvd0ZSR3lJSE5nSVFJQUFnQkswaURrTC9BWU1pRDBML0FWRWlDVFlDRkNBQUlBNUNDSVlnRFlRaURUY0RDQ0FLUVFKR0JFQWdBU0VFSUFVaEFpQUlJUVVNQVFzZ0FDQUNRUU5ySWdzMkFoZ2dBQUovSUFKQkEwZ0VRQ0FCSVFZZ0F3d0JDeUFBSUFGQkFXb2lCallDQUNBQkxRQUFDNjBpRGtML0FZTWlFRUwvQVZFaUNUWUNGQ0FBUVFkQkNDQVBRdjhCVVJzZ0Iyb2lBVFlDRUNBQUlBNGdCNjJHSUEyRUlnMDNBd2dnQ2tFQlJnUkFJQVloQkNBQklRY2dDQ0VDSUFzaEJRd0JDeUFBSUFKQkJHc2lCVFlDR0NBQUFuOGdBa0VFU0FSQUlBWWhCQ0FEREFFTElBQWdCa0VCYWlJRU5nSUFJQVl0QUFBTHJTSU9RdjhCZzBML0FWRWlDVFlDRkNBQVFRZEJDQ0FRUXY4QlVSc2dBV29pQnpZQ0VDQUFJQTRnQWEyR0lBMkVJZzAzQXdnZ0N5RUNDd0pBSUFKQkJVNEVRQ0FFS0FJQUlRTWdBQ0FDUVFWck5nSVlJQUFnQkVFRWFqWUNBQXdCQzBFQUlRRkJmMEVBSUFNYklRTWdBa0VDU0EwQUEwQWdBQ0FFUVFGcUlnSTJBZ0FnQkMwQUFDRUVJQUFnQlVFQmF5SUdOZ0lZSUFOQi93RWdBWFJCZjNOeElBUWdBWFJ5SVFNZ0FVRUlhaUVCSUFWQkFVc2hEQ0FDSVFRZ0JpRUZJQXdOQUFzTElBQWdBMEVZZGlJQlFmOEJSallDRkNBQVFRZEJDQ0FKR3lJQ1FRZEJDQ0FEUWY4QmNTSUVRZjhCUmh0cUlnVkJCMEVJSUFOQkNIWkIvd0Z4SWdaQi93RkdHMm9pQ0VFSFFRZ2dBMEVRZGtIL0FYRWlBMEgvQVVZYklBZHFhallDRUNBQUlBWWdBblFnQXlBRmRISWdBU0FJZEhJZ0JIS3RJQWV0aGlBTmhEY0RDQXUyQlFJU2Z3SitBbjhnQUNnQ0hDQUJRWmdCYkdvaUFrR1FBV3NvQWdBZ0FrR1lBV3NvQWdCcklnTWhCU0FDUVl3QmF5Z0NBQ0FDUVpRQmF5Z0NBR3NpQWlFR1FjQUFJQU1nQTBIQUFFOGJJUU5Cd0FBZ0FpQUNRY0FBVHhzaEJBSkFJQVZGRFFBZ0JrVU5BQ0FEUlEwQUlBUkZEUUJCZnlBRWJrRUNkaUFEU1EwQVFRRkJIQkFUSWdJZ0JEWUNEQ0FDSUFNMkFnZ2dBaUFHTmdJRUlBSWdCVFlDQUNBQ0lBU3RJaFFnQnExOFFnRjlJQlNBSWhTbklnUTJBaFFnQWlBRHJTSVZJQVd0ZkVJQmZTQVZnQ0lWcHlJRE5nSVFBa0FnRkVMLy8vLy9ENE1nRlVMLy8vLy9ENE4rUWlDSXB3MEFJQUpCQkNBRElBUnNFQk1pQXpZQ0dDQURSUTBBSUFJTUFnc2dBaEFRQzBFQUN5SUpSUVJBUVFBUEN3SkFJQUVFUUFOQUlBNUJtQUZzSWc4Z0FDZ0NIR29pQlNnQ0dDSUNCRUFnQlVFY2FpRVFJQVVvQWhRaEF5QUZLQUlRSVFSQkFDRUtBMEFnQXlBRWJBUkFJQkFnQ2tFa2JHb2hCa0VBSVFzRFFDQUdLQUlVSUF0QktHeHFJZ2dvQWhRaUFpQUlLQUlRSWdkc0JFQkJBQ0VFQTBBZ0NDZ0NHQ0FFUVFaMGFpSURLQUk4SWhFRVFDQURLQUlNSVFjZ0F5Z0NGQ0VTSUFNb0FoQWhEQ0FES0FJSUloTWdCaWdDQUdzaEF5QUdLQUlRSWcxQkFYRUVRQ0FBS0FJY0lBOXFJZ0pCa0FGcktBSUFJQU5xSUFKQm1BRnJLQUlBYXlFREN5QUhJQVlvQWdScklRSWdEVUVDY1FSQUlBSWdBQ2dDSENBUGFpSU5RWXdCYXlnQ0FHb2dEVUdVQVdzb0FnQnJJUUlMSUFrZ0F5QUNJQU1nRENBVGF5SU1haUFTSUFkcklBSnFJQkZCQVNBTVFRQVFKa1VOQ1NBSUtBSVFJUWNnQ0NnQ0ZDRUNDeUFFUVFGcUlnUWdBaUFIYkVrTkFBc2dCU2dDRUNFRUlBVW9BaFFoQXdzZ0MwRUJhaUlMSUFNZ0JHeEpEUUFMSUFVb0FoZ2hBZ3NnQ2tFQmFpSUtJQUpKRFFBTEN5QU9RUUZxSWc0Z0FVY05BQXNMSUFrUEN5QUpFQ05CQUF2UURBSVFmd1o3SUFBb0FnZ2lDeUFBS0FJRWFpRUhBa0FnQUNnQ0RFVUVRQ0FIUVFKSURRRWdBU2dDQUNBQklBdEJBblJxSWcwb0FnQWlCRUVCYWtFQmRXc2hBeUFBS0FJQUlRWUNRQ0FIUVFSSkJFQWdCQ0VDREFFTElBZEJCR3NpQUVFQmRpSUpRUUZxSVF3Q1FDQUFRUlpKQkVCQkFTRUFEQUVMSUFZZ0FTQUxRUUowYWlJRklBbEJBblFpQW1wQkNHcEpJQVlnQ1VFRGRHcEJDR29pQUNBRlFRUnFTM0VFUUVFQklRQU1BUXNnQmlBQklBSnFRUWhxU1NBQlFRUnFJQUJKY1FSQVFRRWhBQXdCQ3lBTVFmei8vLzhIY1NJRlFRRnlJUUFnQlVFQmRDRUlJQVQ5RVNFU0lBUDlFU0VUL1F3QUFBQUFBZ0FBQUFRQUFBQUdBQUFBSVJaQkFDRUNBMEFnQVNBQ1FRSjBRUVJ5SWdOcS9RQUNBQ0VWSUFNZ0RXcjlBQUlBSVJRZ0JpQUNRUU4wYWlJRElCUDlXZ0lBQXlBRFFRaHFJQlVnRkNBU0lCVDlEUXdORGc4UUVSSVRGQlVXRnhnWkdoc2lGZjJ1QWYwTUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQVAydUFVRUMvYXdCL2JFQkloTDlXZ0lBQUNBRFFSQnFJQkw5V2dJQUFTQURRUmhxSUJMOVdnSUFBaUFHSUJiOURBRUFBQUFCQUFBQUFRQUFBQUVBQUFEOVVDSVgvUnNBUVFKMGFpQVNJQk1nRXYwTkRBME9EeEFSRWhNVUZSWVhHQmthRy8ydUFVRUIvYXdCSUJYOXJnRWlFLzFhQWdBQUlBWWdGLzBiQVVFQ2RHb2dFLzFhQWdBQklBWWdGLzBiQWtFQ2RHb2dFLzFhQWdBQ0lBWWdGLzBiQTBFQ2RHb2dFLzFhQWdBRElCYjlEQWdBQUFBSUFBQUFDQUFBQUFnQUFBRDlyZ0VoRmlBU0lSTWdGQ0VTSUFKQkJHb2lBaUFGUncwQUN5QVMvUnNESVFJZ0UvMGJBeUVESUFVZ0RFWU5BU0FDSVFRTEEwQWdBU0FBUVFKMElnSnFLQUlBSVFrZ0FpQU5haWdDQUNFQ0lBWWdDRUVDZEdvaUJTQUROZ0lBSUFVZ0F5QUpJQUlnQkdwQkFtcEJBblZySWdOcVFRRjFJQVJxTmdJRUlBaEJBbW9oQ0NBQUlBeEhJUkFnQWlFRUlBQkJBV29oQUNBUURRQUxDeUFHSUFoQkFuUnFJQU0yQWdCQmZDRUFJQWRCQVhFRWZ5QUdJQWRCQVdzaUFFRUNkR29nQVNBQVFRRjBhaWdDQUNBQ1FRRnFRUUYxYXlJQU5nSUFJQUFnQTJwQkFYVWhBMEY0QlVGOEN5QUdJQWRCQW5RaUFHcHFJQUlnQTJvMkFnQWdBU0FHSUFBUUVob1BDd0pBQWtBQ1FDQUhRUUZyRGdJQUFRSUxJQUVnQVNnQ0FFRUNiVFlDQUE4TElBQW9BZ0FpQkNBQktBSUFJQUVnQzBFQ2RHb2lBeWdDQUVFQmFrRUJkV3NpQURZQ0JDQUVJQUFnQXlnQ0FHbzJBZ0FnQVNBRUtRSUFOd0lBRHdzZ0IwRURTQTBBSUFBb0FnQWlDaUFCS0FJQUlBRWdDMEVDZEdvaURpZ0NCQ0lFSUE0b0FnQWlBR3BCQW1wQkFuVnJJZ01nQUdvMkFnQkJBU0VJQWtBZ0IwRUNheUlHSUFkQkFYRWlERVVpQUd0QkFra0VRQ0FFSVFJTUFRc2dCeUFBYTBFRWF5SUFRUUYySWdKQkFXb2hEd0pBQWtBZ0FFRVdTUTBBSUFwQkJHb2lCU0FCSUFKQkFuUWlBR3BCQ0dwSklBb2dBa0VEZEdwQkRHb2lBaUFCUVFScVMzRU5BQ0FGSUFBZ0FTQUxRUUowYWlJQWFrRU1ha2tnQUVFSWFpQUNTWEVOQUNBUFFYeHhJZ1ZCQVhJaEFDQUZRUUYwUVFGeUlRZ2dCUDBSSVJNZ0EvMFJJUkpCQUNFQ0EwQWdDaUFDUVFOMGFpSUVJQUVnQWtFQ2RDSURhdjBBQWdRZ0V5QURJQTVxL1FBQ0NDSVQvUTBNRFE0UEVCRVNFeFFWRmhjWUdSb2JJaFVnRS8ydUFmME1BZ0FBQUFJQUFBQUNBQUFBQWdBQUFQMnVBVUVDL2F3Qi9iRUJJaFFnRkNBU0lCVDlEUXdORGc4UUVSSVRGQlVXRnhnWkdodjlyZ0ZCQWYyc0FTQVYvYTRCSWhYOURRUUZCZ2NZR1JvYkNBa0tDeHdkSGgvOUN3SVVJQVFnRWlBVi9RME1EUTRQRUJFU0V3QUJBZ01VRlJZWElCVDlEUUFCQWdNRUJRWUhFQkVTRXd3TkRnLzlDd0lFSUJRaEVpQUNRUVJxSWdJZ0JVY05BQXNnRS8wYkF5RUNJQkw5R3dNaEF5QUZJQTlHRFFJZ0FpRUVEQUVMUVFFaEFBc0RRQ0FCSUFCQkFuUnFLQUlBSVEwZ0RpQUFRUUZxSWdWQkFuUnFLQUlBSVFJZ0NpQUlRUUowYWlJSklBTTJBZ0FnQ1NBRElBMGdBaUFFYWtFQ2FrRUNkV3NpQTJwQkFYVWdCR28yQWdRZ0NFRUNhaUVJSUFBZ0QwY2hFU0FDSVFRZ0JTRUFJQkVOQUFzTElBb2dDRUVDZEdvZ0F6WUNBQUpBSUF4RkJFQWdDaUFHUVFKMGFpQUJJQWRCQVhScVFRUnJLQUlBSUFKQkFXcEJBWFZySWdBZ0EycEJBWFVnQW1vMkFnQU1BUXNnQWlBRGFpRUFDeUFLSUFkQkFuUWlBMnBCQkdzZ0FEWUNBQ0FCSUFvZ0F4QVNHZ3NMb0FjREEzMERld0ovSUFOQkNFOEVRQ0FEUVFOMklRc0RRQ0FCL1FBRUFDRUhJQUFnQVAwQUJBQWlDQ0FDL1FBRUFDSUovUXk4ZExNL3ZIU3pQN3gwc3orOGRMTS8vZVlCL2VRQi9Rc0VBQ0FCSUFnZ0IvME16ekd3UHM4eHNEN1BNYkErenpHd1B2M21BZjNsQVNBSi9RemgwVFkvNGRFMlArSFJOai9oMFRZLy9lWUIvZVVCL1FzRUFDQUNJQWdnQi8wTTVkRGlQK1hRNGovbDBPSS81ZERpUC8zbUFmM2tBZjBMQkFBZ0FmMEFCQkFoQnlBQUlBRDlBQVFRSWdnZ0F2MEFCQkFpQ2YwTXZIU3pQN3gwc3orOGRMTS92SFN6UC8zbUFmM2tBZjBMQkJBZ0FTQUlJQWY5RE04eHNEN1BNYkErenpHd1BzOHhzRDc5NWdIOTVRRWdDZjBNNGRFMlArSFJOai9oMFRZLzRkRTJQLzNtQWYzbEFmMExCQkFnQWlBSUlBZjlET1hRNGovbDBPSS81ZERpUCtYUTRqLzk1Z0g5NUFIOUN3UVFJQUpCSUdvaEFpQUJRU0JxSVFFZ0FFRWdhaUVBSUFwQkFXb2lDaUFMUncwQUN3c0NRQ0FEUVFkeElnTkZEUUFnQVNvQ0FDRUVJQUFnQWlvQ0FDSUdRN3gwc3orVUlBQXFBZ0FpQlpJNEFnQWdBU0FGSUFSRHp6R3d2cFNTSUFaRDRkRTJ2NVNTT0FJQUlBSWdCU0FFUStYUTRqK1VramdDQUNBRFFRRkdEUUFnQVNvQ0JDRUVJQUFnQWlvQ0JDSUdRN3gwc3orVUlBQXFBZ1FpQlpJNEFnUWdBU0FGSUFSRHp6R3d2cFNTSUFaRDRkRTJ2NVNTT0FJRUlBSWdCU0FFUStYUTRqK1VramdDQkNBRFFRSkdEUUFnQVNvQ0NDRUVJQUFnQWlvQ0NDSUdRN3gwc3orVUlBQXFBZ2dpQlpJNEFnZ2dBU0FGSUFSRHp6R3d2cFNTSUFaRDRkRTJ2NVNTT0FJSUlBSWdCU0FFUStYUTRqK1VramdDQ0NBRFFRTkdEUUFnQVNvQ0RDRUVJQUFnQWlvQ0RDSUdRN3gwc3orVUlBQXFBZ3dpQlpJNEFnd2dBU0FGSUFSRHp6R3d2cFNTSUFaRDRkRTJ2NVNTT0FJTUlBSWdCU0FFUStYUTRqK1VramdDRENBRFFRUkdEUUFnQVNvQ0VDRUVJQUFnQWlvQ0VDSUdRN3gwc3orVUlBQXFBaEFpQlpJNEFoQWdBU0FGSUFSRHp6R3d2cFNTSUFaRDRkRTJ2NVNTT0FJUUlBSWdCU0FFUStYUTRqK1VramdDRUNBRFFRVkdEUUFnQVNvQ0ZDRUVJQUFnQWlvQ0ZDSUdRN3gwc3orVUlBQXFBaFFpQlpJNEFoUWdBU0FGSUFSRHp6R3d2cFNTSUFaRDRkRTJ2NVNTT0FJVUlBSWdCU0FFUStYUTRqK1VramdDRkNBRFFRWkdEUUFnQVNvQ0dDRUVJQUFnQWlvQ0dDSUdRN3gwc3orVUlBQXFBaGdpQlpJNEFoZ2dBU0FGSUFSRHp6R3d2cFNTSUFaRDRkRTJ2NVNTT0FJWUlBSWdCU0FFUStYUTRqK1VramdDR0FzTDRBRUNCbjhEZXdKQUlBTkZEUUFnQTBFRVR3UkFJQU5CZkhFaEJnTkFJQUFnQkVFQ2RDSUZhaUlISUFmOUFBSUFJQUlnQldvaUIvMEFBZ0FpQ3lBQklBVnFJZ1g5QUFJQUlnejlyZ0ZCQXYyc0FmMnhBU0lLSUF2OXJnSDlDd0lBSUFVZ0N2MExBZ0FnQnlBS0lBejlyZ0g5Q3dJQUlBUkJCR29pQkNBR1J3MEFDeUFESUFaR0RRRUxBMEFnQUNBR1FRSjBJZ1JxSWdVZ0JTZ0NBQ0FDSUFScUlnVW9BZ0FpQnlBQklBUnFJZ2dvQWdBaUNXcEJBblZySWdRZ0IybzJBZ0FnQ0NBRU5nSUFJQVVnQkNBSmFqWUNBQ0FHUVFGcUlnWWdBMGNOQUFzTEM5MEJBUVIvSXdCQmdBRnJJZ1lrQUNBR0lRVUNRQ0FCS0FJTUlBSkJCSFJxSWdJb0FnQWlCRVVFUUNBQ0lRRU1BUXNEUUNBRklBSTJBZ0FnQlVFRWFpRUZJQVFpQVNJQ0tBSUFJZ1FOQUFzTFFRQWhCQU5BSUFFb0FnZ2lBaUFFU0FSQUlBRWdCRFlDQ0NBRUlRSUxBa0FnQWlBRFRnMEFBMEFnQWlBQktBSUVUZzBCQWtBZ0FFRUJFQjhFUUNBQklBSTJBZ1FNQVFzZ0FrRUJhaUVDQ3lBQ0lBTklEUUFMQ3lBQklBSTJBZ2dnQlNBR1J3UkFJQVZCQkdzaUJTZ0NBQ0VCSUFJaEJBd0JDd3NnQVNnQ0JDRUhJQVpCZ0FGcUpBQWdCeUFEU0F2OUJnRUxmeU1BUVlBQ2F5SUtKQUFDUUNBQVJRUkFRUUFoQUF3QkN3SkFJQUVnQUNnQ0FFWUVRQ0FBS0FJRUlBSkdEUUVMSUFBZ0FqWUNCQ0FBSUFFMkFnQWdDaUFDTmdJQUlBb2dBVFlDZ0FFZ0FpRUVJQUVoQlFOQUlBb2dCeUlNUVFGcUlnZEJBblFpQ0dvZ0JFRUJha0VDYlNJSk5nSUFJQXBCZ0FGcUlBaHFJQVZCQVdwQkFtMGlDRFlDQUNBR0lBUWdCV3dpQzJvaEJpQUpJUVFnQ0NFRklBdEJBVXNOQUFzZ0FDQUdOZ0lJQWtBQ1FBSkFBa0FnQmtVRVFDQUFLQUlNSWdSRkRRSWdBRUVNYWlFRkRBRUxJQVpCQkhRaUJDQUFLQUlRVFEwRElBQW9BZ3dnQkJBWElnRU5BaUFEUVFGQm1qRkJBQkFQSUFCQkRHb2lCU2dDQUNJRVJRMEJDeUFFRUJBZ0JVRUFOZ0lBQ3lBQUVCQkJBQ0VBREFNTElBQWdBVFlDRENBQklBQW9BaEFpQW1wQkFDQUVJQUpyRUJVYUlBQWdCRFlDRUNBQUtBSUVJUUlnQUNnQ0FDRUJDeUFBS0FJTUlRVWdEQVJBUVFBaEF5QUZJQUVnQW14QkJIUnFJZ1FoQmdOQUFrQWdDaUFEUVFKMElnRnFLQUlBSWdoQkFFd05BQ0FJUVFGcklRdEJBQ0VKQWtBQ1FDQUtRWUFCYWlBQmFpZ0NBQ0lDUVFCTUJFQWdDRUVCY1NFTlFRQWhCeUFJUVFGSERRRWdCaUVCREFJTEEwQWdCaUVCSUFJaEJnTkFBa0FnQlNBRU5nSUFJQVpCQVVZRVFDQUZRUkJxSVFVZ0JFRVFhaUVFREFFTElBVWdCRFlDRUNBRVFSQnFJUVFnQlVFZ2FpRUZJQVpCQWtvaERpQUdRUUpySVFZZ0RnMEJDd3NnQkNBQklBSkJCSFJxSUFrZ0NTQUxSbkpCQVhFaUJ4c2hCaUFFSUFFZ0J4c2hCQ0FKUVFGcUlna2dDRWNOQUFzTUFnc2dDRUgrLy8vL0IzRWhDQU5BSUFjZ0MwWWhBU0FIUVFKcUlRY2dCQ0FHSUFFYklnUWhCaUFFSVFFZ0NVRUNhaUlKSUFoSERRQUxDeUFOUlFSQUlBUWhCZ3dCQ3lBRUlBRWdBa0VFZEdvZ0J5QUhJQXRHY2tFQmNTSUNHeUVHSUFRZ0FTQUNHeUVFQ3lBRFFRRnFJZ01nREVjTkFBc0xJQVZCQURZQ0FBc2dBQ2dDQ0NJQlJRMEFJQUFvQWd3aEJDQUJRUVJQQkVBZ0FVRjhjU0VDUVFBaEJRTkFJQVJCQURZQ1BDQUVRdWNITndJMElBUkJBRFlDTENBRVF1Y0hOd0lrSUFSQkFEWUNIQ0FFUXVjSE53SVVJQVJCQURZQ0RDQUVRdWNITndJRUlBUkJRR3NoQkNBRlFRUnFJZ1VnQWtjTkFBc0xJQUZCQTNFaUFVVU5BRUVBSVFVRFFDQUVRUUEyQWd3Z0JFTG5CemNDQkNBRVFSQnFJUVFnQlVFQmFpSUZJQUZIRFFBTEN5QUtRWUFDYWlRQUlBQUxzUUVCQTM4Q1FDQUFSUTBBSUFBb0FnZ2lBVVVOQUNBQUtBSU1JUUFnQVVFRVR3UkFJQUZCZkhFaEF3TkFJQUJCQURZQ1BDQUFRdWNITndJMElBQkJBRFlDTENBQVF1Y0hOd0lrSUFCQkFEWUNIQ0FBUXVjSE53SVVJQUJCQURZQ0RDQUFRdWNITndJRUlBQkJRR3NoQUNBQ1FRUnFJZ0lnQTBjTkFBc0xJQUZCQTNFaUFVVU5BRUVBSVFJRFFDQUFRUUEyQWd3Z0FFTG5CemNDQkNBQVFSQnFJUUFnQWtFQmFpSUNJQUZIRFFBTEN3djdCUUVRZnlNQVFZQUNheUlJSkFBQ2YwRUJRUlFRRXlJR1JRUkFJQUpCQVVIME1FRUFFQTlCQUF3QkN5QUdJQUUyQWdRZ0JpQUFOZ0lBSUFnZ0FUWUNBQ0FJSUFBMkFvQUJBMEFnQ0NBRklnMUJBV29pQlVFQ2RDSUhhaUFCUVFGcVFRSnRJZ00yQWdBZ0NFR0FBV29nQjJvZ0FFRUJha0VDYlNJSE5nSUFJQVFnQUNBQmJDSUphaUVFSUFNaEFTQUhJUUFnQ1VFQlN3MEFDeUFHSUFRMkFnZ2dCRVVFUUNBR0VCQkJBQXdCQ3lBR0lBUkJFQkFUSWdNMkFnd2dBMFVFUUNBQ1FRRkIyaHBCQUJBUElBWVFFRUVBREFFTElBWWdCaWdDQ0NJTFFRUjBOZ0lRSUFNaEFDQU5CRUFnQXlBR0tBSUVJQVlvQWdCc1FRUjBhaUlFSVFFRFFBSkFJQWdnRGtFQ2RDSUNhaWdDQUNJSlFRQk1EUUFnQ1VFQmF5RU1RUUFoQndKQUlBaEJnQUZxSUFKcUtBSUFJZ0pCQUV3RVFFRUFJUVVnQ1VFQlJ3UkFJQWxCL3YvLy93ZHhJUW9EUUNBRklBeEdJUThnQlVFQ2FpRUZJQUVnQkNBUEd5SUVJUUVnQjBFQ2FpSUhJQXBIRFFBTEN5QUpRUUZ4RFFFZ0JDRUJEQUlMQTBBZ0JDRUZJQUloQkFOQUFrQWdBQ0FCTmdJQUlBUkJBVVlFUUNBQVFSQnFJUUFnQVVFUWFpRUJEQUVMSUFBZ0FUWUNFQ0FCUVJCcUlRRWdBRUVnYWlFQUlBUkJBa29oRUNBRVFRSnJJUVFnRUEwQkN3c2dBU0FGSUFKQkJIUnFJQWNnQnlBTVJuSkJBWEVpQ2hzaEJDQUJJQVVnQ2hzaEFTQUhRUUZxSWdjZ0NVY05BQXNNQVFzZ0FTQUVJQUpCQkhScUlBVWdCU0FNUm5KQkFYRWlCUnNoRVNBQklBUWdCUnNoQVNBUklRUUxJQTVCQVdvaURpQU5SdzBBQ3dzZ0FFRUFOZ0lBQWtBZ0MwVU5BQ0FMUVFSUEJFQWdDMEY4Y1NFQVFRQWhBUU5BSUFOQkFEWUNQQ0FEUXVjSE53STBJQU5CQURZQ0xDQURRdWNITndJa0lBTkJBRFlDSENBRFF1Y0hOd0lVSUFOQkFEWUNEQ0FEUXVjSE53SUVJQU5CUUdzaEF5QUJRUVJxSWdFZ0FFY05BQXNMSUF0QkEzRWlBRVVOQUVFQUlRRURRQ0FEUVFBMkFnd2dBMExuQnpjQ0JDQURRUkJxSVFNZ0FVRUJhaUlCSUFCSERRQUxDeUFHQ3lFU0lBaEJnQUpxSkFBZ0VndFRBUUYvQW44Z0FDMEFERUgvQVVZRVFDQUFRb0QrZzREd0FEY0NERUVBSUFBb0FnZ2lBU0FBS0FJRVR3MEJHaUFBSUFGQkFXbzJBZ2dnQUNBQkxRQUFRWUQrQTNJMkFnd0xJQUJCQURZQ0VFRUJDd3QrQWdGL0FYNGdBTDBpQTBJMGlLZEIvdzl4SWdKQi93OUhCSHdnQWtVRVFDQUJJQUJFQUFBQUFBQUFBQUJoQkg5QkFBVWdBRVFBQUFBQUFBRHdRNklnQVJCbElRQWdBU2dDQUVGQWFnczJBZ0FnQUE4TElBRWdBa0grQjJzMkFnQWdBMEwvLy8vLy8vLy9oNEIvZzBLQWdJQ0FnSUNBOEQrRXZ3VWdBQXNMU1FFQmZ3SkFRUUZCTEJBVElnRUVRQ0FCUVFBMkFoQUNRQ0FBUVFCTUJFQWdBVUVCUVFnUUV5SUFOZ0lrSUFCRkRRRU1Bd3NnQVVFQU5nSU1DeUFCRUJBTFFRQWhBUXNnQVF1UkFnQWdBRVVFUUVFQUR3c0Nmd0pBSUFGQi93Qk5EUUFDUUVHVTBBRW9BZ0FvQWdCRkJFQWdBVUdBZjNGQmdMOERSZzBDREFFTElBRkIvdzlOQkVBZ0FDQUJRVDl4UVlBQmNqb0FBU0FBSUFGQkJuWkJ3QUZ5T2dBQVFRSU1Bd3NnQVVHQVFIRkJnTUFEUnlBQlFZQ3dBMDl4UlFSQUlBQWdBVUUvY1VHQUFYSTZBQUlnQUNBQlFReDJRZUFCY2pvQUFDQUFJQUZCQm5aQlAzRkJnQUZ5T2dBQlFRTU1Bd3NnQVVHQWdBUnJRZi8vUDAwRVFDQUFJQUZCUDNGQmdBRnlPZ0FESUFBZ0FVRVNka0h3QVhJNkFBQWdBQ0FCUVFaMlFUOXhRWUFCY2pvQUFpQUFJQUZCREhaQlAzRkJnQUZ5T2dBQlFRUU1Bd3NMUVpUSEFVRVpOZ0lBUVg4TUFRc2dBQ0FCT2dBQVFRRUxDN3dDQUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQWdBVUVKYXc0U0FBZ0pDZ2dKQVFJREJBb0pDZ29JQ1FVR0J3c2dBaUFDS0FJQUlnRkJCR28yQWdBZ0FDQUJLQUlBTmdJQUR3c2dBaUFDS0FJQUlnRkJCR28yQWdBZ0FDQUJNZ0VBTndNQUR3c2dBaUFDS0FJQUlnRkJCR28yQWdBZ0FDQUJNd0VBTndNQUR3c2dBaUFDS0FJQUlnRkJCR28yQWdBZ0FDQUJNQUFBTndNQUR3c2dBaUFDS0FJQUlnRkJCR28yQWdBZ0FDQUJNUUFBTndNQUR3c2dBaUFDS0FJQVFRZHFRWGh4SWdGQkNHbzJBZ0FnQUNBQkt3TUFPUU1BRHdzZ0FDQUNJQU1SQXdBTER3c2dBaUFDS0FJQUlnRkJCR28yQWdBZ0FDQUJOQUlBTndNQUR3c2dBaUFDS0FJQUlnRkJCR28yQWdBZ0FDQUJOUUlBTndNQUR3c2dBaUFDS0FJQVFRZHFRWGh4SWdGQkNHbzJBZ0FnQUNBQktRTUFOd01BQzNNQkJuOGdBQ2dDQUNJRExBQUFRVEJySWdGQkNVc0VRRUVBRHdzRFFFRi9JUVFnQWtITW1iUG1BRTBFUUVGL0lBRWdBa0VLYkNJRmFpQUJJQVZCLy8vLy93ZHpTeHNoQkFzZ0FDQURRUUZxSWdVMkFnQWdBeXdBQVNFR0lBUWhBaUFGSVFNZ0JrRXdheUlCUVFwSkRRQUxJQUlMdEJRQ0ZYOEJmaU1BUVVCcUlnZ2tBQ0FJSUFFMkFqd2dDRUVuYWlFV0lBaEJLR29oRVFKQUFrQUNRQUpBQTBCQkFDRUhBMEFnQVNFTklBY2dEa0gvLy8vL0IzTktEUUlnQnlBT2FpRU9Ba0FDUUFKQUFrQWdBU0lITFFBQUlnc0VRQU5BQWtBQ1FDQUxRZjhCY1NJQlJRUkFJQWNoQVF3QkN5QUJRU1ZIRFFFZ0J5RUxBMEFnQ3kwQUFVRWxSd1JBSUFzaEFRd0NDeUFIUVFGcUlRY2dDeTBBQWlFWklBdEJBbW9pQVNFTElCbEJKVVlOQUFzTElBY2dEV3NpQnlBT1FmLy8vLzhIY3lJWFNnMEpJQUFFUUNBQUlBMGdCeEFaQ3lBSERRY2dDQ0FCTmdJOElBRkJBV29oQjBGL0lSQUNRQ0FCTEFBQlFUQnJJZ2xCQ1VzTkFDQUJMUUFDUVNSSERRQWdBVUVEYWlFSFFRRWhFaUFKSVJBTElBZ2dCellDUEVFQUlRd0NRQ0FITEFBQUlndEJJR3NpQVVFZlN3UkFJQWNoQ1F3QkN5QUhJUWxCQVNBQmRDSUJRWW5SQkhGRkRRQURRQ0FJSUFkQkFXb2lDVFlDUENBQklBeHlJUXdnQnl3QUFTSUxRU0JySWdGQklFOE5BU0FKSVFkQkFTQUJkQ0lCUVluUkJIRU5BQXNMQWtBZ0MwRXFSZ1JBQW44Q1FDQUpMQUFCUVRCcklnRkJDVXNOQUNBSkxRQUNRU1JIRFFBQ2Z5QUFSUVJBSUFRZ0FVRUNkR3BCQ2pZQ0FFRUFEQUVMSUFNZ0FVRURkR29vQWdBTElROGdDVUVEYWlFQlFRRU1BUXNnRWcwR0lBbEJBV29oQVNBQVJRUkFJQWdnQVRZQ1BFRUFJUkpCQUNFUERBTUxJQUlnQWlnQ0FDSUhRUVJxTmdJQUlBY29BZ0FoRDBFQUN5RVNJQWdnQVRZQ1BDQVBRUUJPRFFGQkFDQVBheUVQSUF4QmdNQUFjaUVNREFFTElBaEJQR29RYVNJUFFRQklEUW9nQ0NnQ1BDRUJDMEVBSVFkQmZ5RUtBbjlCQUNBQkxRQUFRUzVIRFFBYUlBRXRBQUZCS2tZRVFBSi9Ba0FnQVN3QUFrRXdheUlKUVFsTERRQWdBUzBBQTBFa1J3MEFJQUZCQkdvaEFRSi9JQUJGQkVBZ0JDQUpRUUowYWtFS05nSUFRUUFNQVFzZ0F5QUpRUU4wYWlnQ0FBc01BUXNnRWcwR0lBRkJBbW9oQVVFQUlBQkZEUUFhSUFJZ0FpZ0NBQ0lKUVFScU5nSUFJQWtvQWdBTElRb2dDQ0FCTmdJOElBcEJBRTRNQVFzZ0NDQUJRUUZxTmdJOElBaEJQR29RYVNFS0lBZ29BandoQVVFQkN5RVRBMEFnQnlFVVFSd2hDU0FCSWhnc0FBQWlCMEg3QUd0QlJra05DeUFCUVFGcUlRRWdCeUFVUVRwc2FrRy93QUZxTFFBQUlnZEJBV3RCQ0VrTkFBc2dDQ0FCTmdJOEFrQWdCMEViUndSQUlBZEZEUXdnRUVFQVRnUkFJQUJGQkVBZ0JDQVFRUUowYWlBSE5nSUFEQXdMSUFnZ0F5QVFRUU4wYWlrREFEY0RNQXdDQ3lBQVJRMElJQWhCTUdvZ0J5QUNJQVlRYUF3QkN5QVFRUUJPRFF0QkFDRUhJQUJGRFFnTElBQXRBQUJCSUhFTkN5QU1RZi8vZTNFaUN5QU1JQXhCZ01BQWNSc2hERUVBSVJCQnNBZ2hGU0FSSVFrQ1FBSkFBbjhDUUFKQUFrQUNRQUpBQWtBQ2Z3SkFBa0FDUUFKQUFrQUNRQUpBSUJnc0FBQWlCMEZUY1NBSElBZEJEM0ZCQTBZYklBY2dGQnNpQjBIWUFHc09JUVFXRmhZV0ZoWVdGaEFXQ1FZUUVCQVdCaFlXRmhZQ0JRTVdGZ29XQVJZV0JBQUxBa0FnQjBIQkFHc09CeEFXQ3hZUUVCQUFDeUFIUWRNQVJnMExEQlVMSUFncEF6QWhIRUd3Q0F3RkMwRUFJUWNDUUFKQUFrQUNRQUpBQWtBQ1FDQVVRZjhCY1E0SUFBRUNBd1FjQlFZY0N5QUlLQUl3SUE0MkFnQU1Hd3NnQ0NnQ01DQU9OZ0lBREJvTElBZ29BakFnRHF3M0F3QU1HUXNnQ0NnQ01DQU9Pd0VBREJnTElBZ29BakFnRGpvQUFBd1hDeUFJS0FJd0lBNDJBZ0FNRmdzZ0NDZ0NNQ0FPckRjREFBd1ZDMEVJSUFvZ0NrRUlUUnNoQ2lBTVFRaHlJUXhCK0FBaEJ3c2dFU0VCSUFncEF6QWlIRUlBVWdSQUlBZEJJSEVoRFFOQUlBRkJBV3NpQVNBY3AwRVBjVUhReEFGcUxRQUFJQTF5T2dBQUlCeENEMVloR2lBY1FnU0lJUndnR2cwQUN3c2dBU0VOSUFncEF6QlFEUU1nREVFSWNVVU5BeUFIUVFSMlFiQUlhaUVWUVFJaEVBd0RDeUFSSVFFZ0NDa0RNQ0ljUWdCU0JFQURRQ0FCUVFGcklnRWdIS2RCQjNGQk1ISTZBQUFnSEVJSFZpRWJJQnhDQTRnaEhDQWJEUUFMQ3lBQklRMGdERUVJY1VVTkFpQUtJQkVnQVdzaUFVRUJhaUFCSUFwSUd5RUtEQUlMSUFncEF6QWlIRUlBVXdSQUlBaENBQ0FjZlNJY053TXdRUUVoRUVHd0NBd0JDeUFNUVlBUWNRUkFRUUVoRUVHeENBd0JDMEd5Q0VHd0NDQU1RUUZ4SWhBYkN5RVZJQndnRVJBcUlRMExJQk1nQ2tFQVNIRU5FU0FNUWYvL2UzRWdEQ0FUR3lFTUFrQWdDQ2tETUNJY1FnQlNEUUFnQ2cwQUlCRWhEVUVBSVFvTURnc2dDaUFjVUNBUklBMXJhaUlCSUFFZ0NrZ2JJUW9NRFFzZ0NDa0RNQ0VjREFzTEFuOUIvLy8vL3djZ0NpQUtRZi8vLy84SFR4c2lEQ0lIUVFCSElRa0NRQUpBQWtBZ0NDZ0NNQ0lCUVlRTUlBRWJJZzBpQVVFRGNVVU5BQ0FIUlEwQUEwQWdBUzBBQUVVTkFpQUhRUUZySWdkQkFFY2hDU0FCUVFGcUlnRkJBM0ZGRFFFZ0J3MEFDd3NnQ1VVTkFRSkFJQUV0QUFCRkRRQWdCMEVFU1EwQUEwQkJnSUtFQ0NBQktBSUFJZ2xySUFseVFZQ0Jnb1I0Y1VHQWdZS0VlRWNOQWlBQlFRUnFJUUVnQjBFRWF5SUhRUU5MRFFBTEN5QUhSUTBCQ3dOQUlBRWdBUzBBQUVVTkFob2dBVUVCYWlFQklBZEJBV3NpQncwQUN3dEJBQXNpQVNBTmF5QU1JQUViSWdFZ0RXb2hDU0FLUVFCT0JFQWdDeUVNSUFFaENnd01DeUFMSVF3Z0FTRUtJQWt0QUFBTkR3d0xDeUFJS1FNd0loeENBRklOQVVJQUlSd01DUXNnQ2dSQUlBZ29BakFNQWd0QkFDRUhJQUJCSUNBUFFRQWdEQkFjREFJTElBaEJBRFlDRENBSUlCdytBZ2dnQ0NBSVFRaHFJZ2MyQWpCQmZ5RUtJQWNMSVF0QkFDRUhBMEFDUUNBTEtBSUFJZzFGRFFBZ0NFRUVhaUFORUdjaURVRUFTQTBQSUEwZ0NpQUhhMHNOQUNBTFFRUnFJUXNnQnlBTmFpSUhJQXBKRFFFTEMwRTlJUWtnQjBFQVNBME1JQUJCSUNBUElBY2dEQkFjSUFkRkJFQkJBQ0VIREFFTFFRQWhDU0FJS0FJd0lRc0RRQ0FMS0FJQUlnMUZEUUVnQ0VFRWFpSUtJQTBRWnlJTklBbHFJZ2tnQjBzTkFTQUFJQW9nRFJBWklBdEJCR29oQ3lBSElBbExEUUFMQ3lBQVFTQWdEeUFISUF4QmdNQUFjeEFjSUE4Z0J5QUhJQTlJR3lFSERBZ0xJQk1nQ2tFQVNIRU5DVUU5SVFrZ0FDQUlLd013SUE4Z0NpQU1JQWNnQlJFVEFDSUhRUUJPRFFjTUNnc2dCeTBBQVNFTElBZEJBV29oQnd3QUN3QUxJQUFOQ1NBU1JRMERRUUVoQndOQUlBUWdCMEVDZEdvb0FnQWlBQVJBSUFNZ0IwRURkR29nQUNBQ0lBWVFhRUVCSVE0Z0IwRUJhaUlIUVFwSERRRU1Dd3NMUVFFaERpQUhRUXBQRFFrRFFDQUVJQWRCQW5ScUtBSUFEUUVnQjBFQmFpSUhRUXBIRFFBTERBa0xRUndoQ1F3R0N5QUlJQnc4QUNkQkFTRUtJQlloRFNBTElRd0xJQW9nQ1NBTmF5SUxJQW9nQzBvYklnb2dFRUgvLy8vL0IzTktEUU5CUFNFSklBOGdDaUFRYWlJQklBRWdEMGdiSWdjZ0Ywb05CQ0FBUVNBZ0J5QUJJQXdRSENBQUlCVWdFQkFaSUFCQk1DQUhJQUVnREVHQWdBUnpFQndnQUVFd0lBb2dDMEVBRUJ3Z0FDQU5JQXNRR1NBQVFTQWdCeUFCSUF4QmdNQUFjeEFjSUFnb0Fqd2hBUXdCQ3dzTFFRQWhEZ3dEQzBFOUlRa0xRWlRIQVNBSk5nSUFDMEYvSVE0TElBaEJRR3NrQUNBT0M2Z0NBUVIvSXdCQjBBRnJJZ1VrQUNBRklBSTJBc3dCSUFWQm9BRnFJZ0pCQUVFb0VCVWFJQVVnQlNnQ3pBRTJBc2dCQWtCQkFDQUJJQVZCeUFGcUlBVkIwQUJxSUFJZ0F5QUVFR3BCQUVnTkFDQUFLQUpNUVFCSUlRZ2dBQ0FBS0FJQUlnZEJYM0UyQWdBQ2Z3SkFBa0FnQUNnQ01FVUVRQ0FBUWRBQU5nSXdJQUJCQURZQ0hDQUFRZ0EzQXhBZ0FDZ0NMQ0VHSUFBZ0JUWUNMQXdCQ3lBQUtBSVFEUUVMUVg4Z0FCQStEUUVhQ3lBQUlBRWdCVUhJQVdvZ0JVSFFBR29nQlVHZ0FXb2dBeUFFRUdvTElRRWdCZ1IvSUFCQkFFRUFJQUFvQWlRUkFBQWFJQUJCQURZQ01DQUFJQVkyQWl3Z0FFRUFOZ0ljSUFBb0FoUWFJQUJDQURjREVFRUFCU0FCQ3hvZ0FDQUFLQUlBSUFkQklIRnlOZ0lBSUFnTkFBc2dCVUhRQVdva0FBc25BUUYvUVJ3aEF5QUJRUU54Qkg5QkhBVWdBQ0FCSUFJUUpTSUFOZ0lBUVFCQk1DQUFHd3NML1FNQkJYOENmMEhneEFFb0FnQWlBaUFBUVFkcVFYaHhJZ0ZCQjJwQmVIRWlBMm9oQUFKQUlBTkJBQ0FBSUFKTkcwVUVRQ0FBUHdCQkVIUk5EUUVnQUJBS0RRRUxRWlRIQVVFd05nSUFRWDhNQVF0QjRNUUJJQUEyQWdBZ0Fnc2lBa0YvUndSQUlBRWdBbW9pQUVFRWEwRVFOZ0lBSUFCQkVHc2lBMEVRTmdJQUFrQUNmMEdnendFb0FnQWlBUVIvSUFFb0FnZ0ZRUUFMSUFKR0JFQWdBaUFDUVFScktBSUFRWDV4YXlJRVFRUnJLQUlBSVFVZ0FTQUFOZ0lJSUFRZ0JVRitjV3NpQUNBQUtBSUFha0VFYXkwQUFFRUJjUVJBSUFBb0FnUWlBU0FBS0FJSUlnUTJBZ2dnQkNBQk5nSUVJQUFnQXlBQWF5SUJOZ0lBREFNTElBSkJFR3NNQVFzZ0FrRVFOZ0lBSUFJZ0FEWUNDQ0FDSUFFMkFnUWdBa0VRTmdJTVFhRFBBU0FDTmdJQUlBSkJFR29MSWdBZ0F5QUFheUlCTmdJQUN5QUFJQUZCZkhGcVFRUnJJQUZCQVhJMkFnQWdBQUovSUFBb0FnQkJDR3NpQVVIL0FFMEVRQ0FCUVFOMlFRRnJEQUVMSUFGQkhTQUJaeUlEYTNaQkJITWdBMEVDZEd0QjdnQnFJQUZCL3g5TkRRQWFRVDhnQVVFZUlBTnJka0VDY3lBRFFRRjBhMEhIQUdvaUFTQUJRVDlQR3dzaUFVRUVkQ0lEUWFESEFXbzJBZ1FnQUNBRFFhakhBV29pQXlnQ0FEWUNDQ0FESUFBMkFnQWdBQ2dDQ0NBQU5nSUVRYWpQQVVHb3p3RXBBd0JDQVNBQnJZYUVOd01BQ3lBQ1FYOUhDNzBCQVFKL0FrQWdBQ2dDVENJQlFRQk9CRUFnQVVVTkFVSE16d0VvQWdBZ0FVSC8vLy8vQTNGSERRRUxBa0FnQUNnQ1VFRUtSZzBBSUFBb0FoUWlBU0FBS0FJUVJnMEFJQUFnQVVFQmFqWUNGQ0FCUVFvNkFBQVBDeUFBRUc4UEN5QUFRY3dBYWlJQklBRW9BZ0FpQWtILy8vLy9BeUFDR3pZQ0FBSkFBa0FnQUNnQ1VFRUtSZzBBSUFBb0FoUWlBaUFBS0FJUVJnMEFJQUFnQWtFQmFqWUNGQ0FDUVFvNkFBQU1BUXNnQUJCdkN5QUJLQUlBR2lBQlFRQTJBZ0FMZkFFQ2Z5TUFRUkJySWdFa0FDQUJRUW82QUE4Q1FBSkFJQUFvQWhBaUFnUi9JQUlGSUFBUVBnMENJQUFvQWhBTElBQW9BaFFpQWtZTkFDQUFLQUpRUVFwR0RRQWdBQ0FDUVFGcU5nSVVJQUpCQ2pvQUFBd0JDeUFBSUFGQkQycEJBU0FBS0FJa0VRQUFRUUZIRFFBZ0FTMEFEeG9MSUFGQkVHb2tBQXV3QWdFQ2Z5QUFCRUFnQUNnQ0FCQTRJQUJCQURZQ0FDQUFLQUpJSWdFRVFDQUJFQkFnQUVFQU5nSklDeUFBS0FKRUlnRUVRQ0FCRUJBZ0FFRUFOZ0pFQ3lBQUtBSnNJZ0VFUUNBQkVCQWdBRUVBTmdKc0N5QUFLQUowSWdFRVFDQUJLQUlBSWdJRVFDQUNFQkFnQUNnQ2RDSUJRUUEyQWdBTElBRVFFQ0FBUVFBMkFuUUxJQUFvQW5naUFRUkFJQUVvQWd3aUFnUkFJQUlRRUNBQUtBSjRJZ0ZCQURZQ0RBc2dBU2dDQkNJQ0JFQWdBaEFRSUFBb0FuZ2lBVUVBTmdJRUN5QUJLQUlJSWdJRVFDQUNFQkFnQUNnQ2VDSUJRUUEyQWdnTElBRW9BZ0FpQWdSQUlBSVFFQ0FBS0FKNElnRkJBRFlDQUFzZ0FSQVFJQUJCQURZQ2VBc2dBQ2dDQkNJQkJFQWdBUkF5SUFCQkFEWUNCQXNnQUNnQ0NDSUJCRUFnQVJBeUlBQkJBRFlDQ0FzZ0FCQVFDd3VMR3dJZWZ3VjdJd0JCOEFGcklna2tBRUVCSVE0Q1FDQUFLQUlBS0FJOERRQWdBQ2dDZ0FFTkFBSkFBa0FnQUNnQ2RDSUlSUVJBSUFBb0FuZ2hCQXdCQ3lBQktBSVFJUU1nQ0M4QkJDRUdBa0FnQUNnQ2VDSUVSUTBBSUFRb0FneEZEUUFnQkMwQUVpRURDd0pBSUFZRVFDQUlLQUlBSVFnRFFDQUlJQVZCQm14cUlnb3ZBUUFpQnlBRFR3UkFJQWtnQXpZQ3RBRWdDU0FITmdLd0FTQUNRUUZCb09ZQUlBbEJzQUZxRUE5QkFDRU9EQVlMQWtBZ0NpOEJCQ0lLUlEwQUlBcEIvLzhEUmcwQUlBcEJBV3NpQ2lBRFNRMEFJQWtnQXpZQ3BBRWdDU0FLTmdLZ0FTQUNRUUZCb09ZQUlBbEJvQUZxRUE5QkFDRU9EQVlMSUFWQkFXb2lCU0FHUncwQUN3d0JDeUFERFFJTUFRc0RRQ0FEUVFGcklRTkJBQ0VGQTBBZ0NDQUZRUVpzYWk4QkFDQURSd1JBSUFWQkFXb2lCU0FHUncwQkRBUUxDeUFERFFBTEN3SkFJQVJGRFFBZ0JDZ0NEQ0lLUlEwQUFrQUNRQ0FFTFFBU0lnZ0VRRUVBSVFWQkFTRUhBMEFnQVNnQ0VDSURJQW9nQlVFQ2RHb3ZBUUFpQkUwRVFDQUpJQU0yQXBRQklBa2dCRFlDa0FFZ0FrRUJRYURtQUNBSlFaQUJhaEFQUVFBaEJ3c2dCVUVCYWlJRklBaEhEUUFMSUFoQkJCQVRJZ05GRFFGQkFDRUZBMEFDUUNBS0lBVkJBblJxSWdRdEFBSWlCa0VDVHdSQUlBa2dCallDUkNBSklBVTJBa0FnQWtFQlFjdlpBQ0FKUVVCckVBOUJBQ0VIREFFTElBZ2dCQzBBQXlJRVRRUkFJQWtnQkRZQ2dBRWdBa0VCUVpQWkFDQUpRWUFCYWhBUFFRQWhCd3dCQ3lBRElBUkJBblJxSVFzQ1FDQUdRUUZISWd3TkFDQUxLQUlBUlEwQUlBa2dCRFlDVUNBQ1FRRkJ2TlVBSUFsQjBBQnFFQTlCQUNFSERBRUxBa0FnQmcwQUlBUkZEUUFnQ1NBRU5nSmtJQWtnQlRZQ1lDQUNRUUZCaXRnQUlBbEI0QUJxRUE5QkFDRUhEQUVMQWtBZ0RBMEFJQVFnQlVZTkFDQUpJQVEyQW5nZ0NTQUZOZ0owSUFrZ0JUWUNjQ0FDUVFGQnJ0Z0FJQWxCOEFCcUVBOUJBQ0VIREFFTElBdEJBVFlDQUFzZ0JVRUJhaUlGSUFoSERRQUxRUUFoQlFOQUFrQUNRQ0FESUFWQkFuUWlCR29vQWdCRkJFQWdCQ0FLYWkwQUFnMEJDeUFGUVFGcUlnVWdDRWNOQWlBSFJRMEJJQUVvQWhCQkFVY05CVUVBSVFVRFFDQURJQVZCQW5ScUtBSUFCRUFnQ0NBRlFRRnFJZ1ZIRFFFTUJ3c0xRUUFoQnlBQ1FRSkI3c1VBUVFBUUR5QUlRUkJQQkVBZ0NFSHdBWEVoQjBFQUlRUURRQ0FLSUFSQkFuUnFJZ1pCQVRvQUFpQUdJQVE2QUFNZ0JrRUJPZ0ErSUFaQkFUb0FPaUFHUVFFNkFEWWdCa0VCT2dBeUlBWkJBVG9BTGlBR1FRRTZBQ29nQmtFQk9nQW1JQVpCQVRvQUlpQUdRUUU2QUI0Z0JrRUJPZ0FhSUFaQkFUb0FGaUFHUVFFNkFCSWdCa0VCT2dBT0lBWkJBVG9BQ2lBR1FRRTZBQVlnQmlBRVFRRnlPZ0FISUFZZ0JFRVBjam9BUHlBR0lBUkJEbkk2QURzZ0JpQUVRUTF5T2dBM0lBWWdCRUVNY2pvQU15QUdJQVJCQzNJNkFDOGdCaUFFUVFweU9nQXJJQVlnQkVFSmNqb0FKeUFHSUFSQkNISTZBQ01nQmlBRVFRZHlPZ0FmSUFZZ0JFRUdjam9BR3lBR0lBUkJCWEk2QUJjZ0JpQUVRUVJ5T2dBVElBWWdCRUVEY2pvQUR5QUdJQVJCQW5JNkFBc2dCRUVRYWlJRUlBZEhEUUFMSUFjZ0NFWU5CZ3NEUUNBS0lBZEJBblJxSWdRZ0J6b0FBeUFFUVFFNkFBSWdCMEVCYWlJSElBaEhEUUFMREFVTElBa2dCVFlDTUNBQ1FRRkJ5TklBSUFsQk1Hb1FEMEVBSVFjZ0JVRUJhaUlGSUFoSERRRUxDeUFERUJCQkFDRU9EQVVMSUFoQkJCQVRJZ01OQVF0QkFDRU9JQUpCQVVHSzJ3QkJBQkFQREFNTElBTVFFQXNDUUNBQUtBSjRJZ05GRFFBZ0F5Z0NEQ0lQUlFSQUlBTW9BZ1FRRUNBQUtBSjRLQUlJRUJBZ0FDZ0NlQ2dDQUJBUUlBQW9BbmdpQXlnQ0RDSUVCSDhnQkJBUUlBQW9BbmdGSUFNTEVCQWdBRUVBTmdKNERBRUxJQUVvQWhnaERRSkFBa0FnQXkwQUVpSUtCRUFnQXlnQ0FDRVVJQU1vQWdRaEJpQURLQUlJSVFoQkFDRUZBa0FEUUNBTklBOGdCVUVDZEdvdkFRQkJOR3hxS0FJc0JFQWdDaUFGUVFGcUlnVkhEUUVNQWdzTElBa2dCVFlDSUNBQ1FRRkJ3dWNBSUFsQklHb1FEMEVBSVE0TUJnc2dDa0UwYkJBVUlndEZEUUZCQUNFRkEwQWdEeUFGUVFKMGFpSURMd0VBSVFjZ0N5QURMUUFDQkg4Z0F5MEFBd1VnQlF0Qk5HeHFJZ1FnRFNBSFFUUnNhaUlEL1FBQ0FQMExBZ0FnQkNBREtBSXdOZ0l3SUFRZ0EvMEFBaUQ5Q3dJZ0lBUWdBLzBBQWhEOUN3SVFJQXNnQlVFMGJHb2lCQ0FES0FJSUlBTW9BZ3hzUVFKMEVCZ2lBellDTENBRFJRUkFJQVVFUUNBRlFmLy9BM0VoQUFOQUlBQkJOR3dnQzJwQkNHc29BZ0FRRUNBQVFRRnJJZ0FOQUFzTElBc1FFRUVBSVE0Z0FrRUJRWTduQUVFQUVBOE1Cd3NnQkNBRklBaHFMUUFBTmdJWUlBUWdCU0FHYWkwQUFEWUNJQ0FGUVFGcUlnVWdDa2NOQUFzZ0FDZ0NlQzhCRUNJUVFRRnJJUklEUUNBTElCTkJOR3hxSWdNb0Fnd2dBeWdDQ0d3aEJpQU5JQThnRTBFQ2RHb2lCQzhCQUVFMGJHb29BaXdoQ0FKQUlBUXRBQUpGQkVBZ0JrVU5BU0FES0FJc0lRVkJBQ0VIUVFBaEJBSkFJQVpCQkVrTkFDQUZJQWhyUVJCSkRRQWdCa0Y4Y1NFRVFRQWhBd05BSUFVZ0EwRUNkQ0lNYWlBSUlBeHEvUUFDQVAwTEFnQWdBMEVFYWlJRElBUkhEUUFMSUFRZ0JrWU5BZ3NnQkNFRElBWkJBM0VpREFSQUEwQWdCU0FEUVFKMEloRnFJQWdnRVdvb0FnQTJBZ0FnQTBFQmFpRURJQWRCQVdvaUJ5QU1SdzBBQ3dzZ0JDQUdhMEY4U3cwQkEwQWdCU0FEUVFKMElnUnFJQVFnQ0dvb0FnQTJBZ0FnQlNBRVFRUnFJZ2RxSUFjZ0NHb29BZ0EyQWdBZ0JTQUVRUWhxSWdkcUlBY2dDR29vQWdBMkFnQWdCU0FFUVF4cUlnUnFJQVFnQ0dvb0FnQTJBZ0FnQTBFRWFpSURJQVpIRFFBTERBRUxJQVpGRFFBZ0ZDQUVMUUFESWdOQkFuUnFJUVFnQ3lBRFFUUnNhaWdDTENFRlFRQWhBeUFHUVFGSEJFQWdCa0YrY1NFVlFRQWhEQU5BSUFVZ0EwRUNkQ0lIYWlBRUlBY2dDR29vQWdBaUVTQVNJQkFnRVVvYlFRQWdFVUVBVGhzZ0NteEJBblJxS0FJQU5nSUFJQVVnQjBFRWNpSUhhaUFFSUFjZ0NHb29BZ0FpQnlBU0lBY2dFRWdiUVFBZ0IwRUFUaHNnQ214QkFuUnFLQUlBTmdJQUlBTkJBbW9oQXlBTVFRSnFJZ3dnRlVjTkFBc0xJQVpCQVhGRkRRQWdCU0FEUVFKMElnTnFJQVFnQXlBSWFpZ0NBQ0lESUJJZ0F5QVFTQnRCQUNBRFFRQk9HeUFLYkVFQ2RHb29BZ0EyQWdBTElCTkJBV29pRXlBS1J3MEFDd3dDQ3lBS1FUUnNFQlFpQ3cwQkMwRUFJUTRnQWtFQlFZN25BRUVBRUE4TUF3c2dBU2dDRUNJREJFQkJBQ0VGQTBBZ0RTQUZRVFJzYWlnQ0xDSUVCRUFnQkJBUUN5QUZRUUZxSWdVZ0EwY05BQXNMSUEwUUVDQUJJQW8yQWhBZ0FTQUxOZ0lZQ3lBQUtBSjBJZ1ZGRFFFZ0JTZ0NBQ0VISUFVdkFRUWlDd1JBSUFkQkttb2hFaUFIUVNScUlSTWdCMEVlYWlFUklBZEJHR29oRkNBSFFSSnFJUlVnQjBFTWFpRVdJQWRCQm1vaEZ5QUxRUUpySVJoQkFDRUZRUUVoQkFOQUFrQWdBU2dDRUNJRElBY2dCVUVHYkdvaURTOEJBQ0lHVFFSQUlBa2dBellDRkNBSklBWTJBaEFnQWtFQ1FjdzNJQWxCRUdvUUR3d0JDeUFOTHdFRUlnaEJBV3BCLy84RGNVRUJUUVJBSUFFb0FoZ2dCa0UwYkdvZ0RTOEJBanNCTUF3QkN5QUlRUUZySWdwQi8vOERjU0lQSUFOUEJFQWdDU0FETmdJRUlBa2dEellDQUNBQ1FRSkJvemNnQ1JBUERBRUxBa0FnQmlBUFJnMEFJQTB2QVFJTkFDQUpJQUVvQWhnaUNDQUdRVFJzYWlJREtBSXdOZ0xvQVNBSklBUDlBQUlnL1FzRDJBRWdDU0FEL1FBQ0VQMExBOGdCSUFrZ0EvMEFBZ0Q5Q3dPNEFTQURJQWdnRDBFMGJDSU1haUlJS1FJSU53SUlJQU1nQ0NrQ0VEY0NFQ0FESUFncEFoZzNBaGdnQXlBSUtRSWdOd0lnSUFNZ0NDa0NLRGNDS0NBRElBZ29BakEyQWpBZ0F5QUlLUUlBTndJQUlBRW9BaGdnREdvaUF5QUovUUFEdUFIOUN3SUFJQU1nQ2YwQUE5Z0IvUXNDSUNBRElBbjlBQVBJQWYwTEFoQWdBeUFKS0FMb0FUWUNNQ0FGUVFGcUlBdFBEUUFnQkNFSUlCZ2dCV3RCLy84RGNTSURRUWRQQkVBZ0JDQURRUUZxSWhsQitQOEhjU0lRYWlFSUlBcjlFQ0VrSUFiOUVDRWpRUUFoREFOQUlDTWdKQ0FTSUFRZ0RHcEJCbXdpQTJvaUdpQURJQk5xSWhzZ0F5QVJhaUljSUFNZ0ZHb2lIU0FESUJWcUloNGdBeUFXYWlJZklBTWdGMm9pSUNBRElBZHFJZ1A5Q0FFQS9WVUJBQUg5VlFFQUF2MVZBUUFEL1ZVQkFBVDlWUUVBQmYxVkFRQUcvVlVCQUFjaUlTQWovUzRnSVNBay9TMGlKZjFPL1ZJaElpQWhJQ1A5TFNBbC9WQWlJZjBaQUVFQmNRUkFJQU1nSXYxWkFRQUFDeUFoL1JrQlFRRnhCRUFnSUNBaS9Wa0JBQUVMSUNIOUdRSkJBWEVFUUNBZklDTDlXUUVBQWdzZ0lmMFpBMEVCY1FSQUlCNGdJdjFaQVFBREN5QWgvUmtFUVFGeEJFQWdIU0FpL1ZrQkFBUUxJQ0g5R1FWQkFYRUVRQ0FjSUNMOVdRRUFCUXNnSWYwWkJrRUJjUVJBSUJzZ0l2MVpBUUFHQ3lBaC9Sa0hRUUZ4QkVBZ0dpQWkvVmtCQUFjTElBeEJDR29pRENBUVJ3MEFDeUFRSUJsR0RRRUxBMEFnQ2lFREFrQWdCaUFISUFoQkJteHFJZ3d2QVFBaUVFY0VRQ0FHSVFNZ0R5QVFSdzBCQ3lBTUlBTTdBUUFMSUFzZ0NFRUJhaUlJUWYvL0EzRkhEUUFMQ3lBQktBSVlJQVpCTkd4cUlBMHZBUUk3QVRBTElBUkJBV29oQkNBRlFRRnFJZ1VnQzBjTkFBc2dBQ2dDZENJRktBSUFJUWNMSUFjRWZ5QUhFQkFnQUNnQ2RBVWdCUXNRRUNBQVFRQTJBblFNQVF0QkFDRU9JQUpCQVVHaHhnQkJBQkFQQ3lBSlFmQUJhaVFBSUE0TDZRRUJCbjhqQUVFZ2F5SUVKQUFDZndKQUlBQW9BandpQXdSQVFRRWhCUU5BSUFBb0Frd29BaGdnQUNnQ1FDQUNRUUowYWlnQ0FDSUdRVFJzYWlnQ0xFVUVRQ0FFSUFZMkFoQWdBVUVDUWRvNUlBUkJFR29RRDBFQUlRVWdBQ2dDUENFREN5QUNRUUZxSWdJZ0Ewa05BQXNNQVF0QkFTRUZRUUVnQUNnQ1RDSURLQUlRUlEwQkdnTkFJQU1vQWhnZ0FrRTBiR29vQWl4RkJFQWdCQ0FDTmdJQUlBRkJBa0hhT1NBRUVBOUJBQ0VGSUFBb0Frd2hBd3NnQWtFQmFpSUNJQU1vQWhCSkRRQUxDMEVCSUFVTkFCb2dBVUVCUWI4VlFRQVFEMEVBQ3lFSElBUkJJR29rQUNBSEN3UUFRWDhMaGdjQ0ZuOENmaUFBS0FJWUloQW9BaEJGQkVCQkFROExJQkFvQWhnaERTQUFLQUlVS0FJQUtBSVVJUXNEUUNBQklBMG9BaVFpQWpZQ0pDQUxLQUljSWdZZ0FrR1lBV3hxSVFNQ1FBSkFBbjhnQUNnQ1FDSVJCRUFnQmlBTEtBSVlRWmdCYkdvaUFrR1FBV3NvQWdBZ0FrR1lBV3NvQWdCcklRd2dBMEVNYWlFR0lBTkJCR29oQkNBREtBSUlJUUlnQXlnQ0FDRUZRU1FNQVFzZ0EwR1VBV29oQmlBRFFZd0JhaUVFSUFNb0FwQUJJZ0lnQXlnQ2lBRWlCV3NoREVFMEN5QUxhaWdDQUNJU1JRMEFJQVFvQWdBaEJ5QUdLQUlBSVFrZ0FpQUZheUVHSUFFb0FnZ2lBMEovSUFFMUFpZ2lHSVpDZjRVaUdTQUJOUUlRZkNBWWlLY2lDR29oQkFKL0lBVWdDRXNFUUNBRklBaHJJUTVCQUNFSVFRQWdBaUFFVFEwQkdpQUdJQVFnQldzaUJtc01BUXNnQ0NBRmF5RUlJQUlnQkUwRVFDQUdJQWhySVFaQkFDRU9RUUFNQVF0QkFDRU9JQU1oQmlBQ0lBUnJDeUVWSUFrZ0Iyc2hBaUFCS0FJTUlnUWdHU0FCTlFJVWZDQVlpS2NpQ21vaEJRSi9JQWNnQ2tzRVFDQUhJQXBySVE5QkFDRUtRUUFnQlNBSlR3MEJHaUFDSUFVZ0Iyc2lBbXNNQVFzZ0NpQUhheUVLSUFVZ0NVOEVRQ0FDSUFwcklRSkJBQ0VQUVFBTUFRdEJBQ0VQSUFRaEFpQUpJQVZyQ3lFSFFRQWhCU0FJUVFCSURRRWdDa0VBU0EwQklCVkJBRWdOQVNBSFFRQklEUUVnQmtFQVNBMEJJQUpCQUVnTkFTQURJQTlzSUE1cUlRY2dDaUFNYkNBSWFpRUpBa0FDUUFKQUlBRW9BaXdpQ0EwQUlBa05BQ0FIRFFBZ0F5QU1SdzBBSUFNZ0JrY05BQ0FDSUFSSERRRWdBU0FMUVNSQk5DQVJHMm9pQWlnQ0FEWUNMQ0FDUVFBMkFnQU1Bd3NnQ0EwQkN5QUVSUTBDSUFTdElBT3Rma0lnaUtjTkFpQURJQVJzSWdOQi8vLy8vd05MRFFJZ0FTQURRUUowRUJnaUF6WUNMQ0FEUlEwQ0lBWWdBU2dDQ0NJRVJpQUJLQUlNSWdVZ0FrWnhEUUFnQTBFQUlBUWdCV3hCQW5RUUZSb0xJQUpGRFFBZ0FrRUJjU0VYSUFaQkFuUWhCaUFCS0FJc0lBZEJBblJxSVFRZ0VpQUpRUUowYWlFRklBSkJBVWNFUUNBQ1FmNy8vLzhIY1NFSFFRQWhBZ05BSUFRZ0JTQUdFQkloRmlBRklBeEJBblFpQ1dvaUNDQUphaUVGSUJZZ0FTZ0NDRUVDZEdvZ0NDQUdFQklnQVNnQ0NFRUNkR29oQkNBQ1FRSnFJZ0lnQjBjTkFBc0xJQmRGRFFBZ0JDQUZJQVlRRWhvTElBdEJ6QUJxSVFzZ0RVRTBhaUVOSUFGQk5Hb2hBVUVCSVFVZ0ZFRUJhaUlVSUJBb0FoQkpEUUVMQ3lBRkM5VVNBZ2wvREg0akFFR2dBV3NpQlNRQUFrQWdBa0VqVFFSQVFRQWhBaUFEUVFGQnRpNUJBQkFQREFFTElBSkJKR3NpQWlBQ1FRTnVJZ2xCQTJ4SEJFQkJBQ0VDSUFOQkFVRzJMa0VBRUE4TUFRc2dBQ2dDU0NFR0lBRWdCVUdjQVdvaUFrRUNFQkVnQUNBRktBS2NBVHNCVUNBQlFRSnFJQVpCQ0dwQkJCQVJJQUZCQm1vZ0JrRU1ha0VFRUJFZ0FVRUthaUFHUVFRUUVTQUJRUTVxSUFaQkJHcEJCQkFSSUFGQkVtb2dBRUhjQUdwQkJCQVJJQUZCRm1vZ0FFSGdBR3BCQkJBUklBRkJHbW9nQUVIVUFHcEJCQkFSSUFGQkhtb2dBRUhZQUdwQkJCQVJJQUZCSW1vZ0FrRUNFQkVDUUFKQUFrQWdCU2dDbkFFaUFrR0FnQUZOQkVBZ0JpQUNOZ0lRSUFJZ0NVY0VRQ0FGSUFrMkFvUUJJQVVnQWpZQ2dBRWdBMEVCUVpId0FDQUZRWUFCYWhBUFFRQWhBZ3dGQ3lBR0tBSUVJZ0lnQmlnQ0RDSUlTU0FHS0FJSUlnc2dCaWdDQUNJRVMzRkZCRUFnQlNBSXJTQUNyWDAzQTNnZ0JTQUxyU0FFclgwM0EzQWdBMEVCUWR2c0FDQUZRZkFBYWhBUFFRQWhBZ3dGQ3lBQUtBSmNJZ2RCQUNBQUtBSmdJZ29iUlFSQUlBVWdDallDQkNBRklBYzJBZ0FnQTBFQlFZUHhBQ0FGRUE5QkFDRUNEQVVMQWtBQ1FDQUFLQUpVSWd3Z0JFc05BRUYvSUFjZ0RHb2lCeUFISUF4Skd5QUVUUTBBSUFBb0FsZ2lCeUFDU3cwQVFYOGdCeUFLYWlJS0lBY2dDa3NiSUFKTERRRUxRUUFoQWlBRFFRRkIxaFJCQUJBUERBVUxBa0FnQUNnQzRBRU5BQ0FBS0FMWUFTSUhSUTBBSUFBb0F0d0JJZ3BGRFFBZ0N5QUVheUlFSUFkR0lBZ2dBbXNpQWlBS1JuRU5BQ0FGSUFJMkFtd2dCU0FFTmdKb0lBVWdDallDWkNBRklBYzJBbUFnQTBFQlFjUG9BQ0FGUWVBQWFoQVBRUUFoQWd3RkN5QUdJQWxCTkJBVElnUTJBaGdnQkVVTkFRSkFJQVlvQWhCRkRRQWdBVUVrYWlBRlFaZ0JhaUlDUVFFUUVTQUVJQVVvQXBnQklnbEJCM1lpQ2pZQ0lDQUVJQWxCL3dCeFFRRnFJZ3cyQWhnZ0FDZ0M0QUVoQ3lBQlFTVnFJQUpCQVJBUklBUWdCU2dDbUFFMkFnQWdBVUVtYWlBQ1FRRVFFU0FFSUFVb0FwZ0JJZ2cyQWdSQkFDRUNJQVFvQWdBaUIwR0FBbXRCZ1g1SkJFQkJBQ0VKREFVTFFRQWhDU0FJUVlBQ2EwR0Jma2tOQkNBRUtBSVlJZ2hCSDBzTkF5QUVRUUEyQWlRZ0JDQUFLQUtnQVRZQ0tFRUJJUWtnQmlnQ0VFRUJUUTBBUVFBZ0NpQUxHeUVLUVFBZ0RDQUxHeUVMSUFGQkoyb2hBUU5BSUFFZ0JVR1lBV3BCQVJBUklBUWdCU2dDbUFFaUIwRUhkaUlJTmdKVUlBUWdCMEgvQUhGQkFXb2lCellDVEFKQUlBQW9BdUFCRFFBZ0FDMEF2QUZCQkhFTkFDQUhJQXRHSUFnZ0NrWnhEUUFnQlNBSU5nSlVJQVVnQnpZQ1VDQUZJQWsyQWt3Z0JTQUtOZ0pJSUFVZ0N6WUNSQ0FGSUFrMkFrQWdBMEVDUWNmdUFDQUZRVUJyRUE4TElBRkJBV29nQlVHWUFXb2lDRUVCRUJFZ0JDQUZLQUtZQVRZQ05DQUJRUUpxSUFoQkFSQVJJQVFnQlNnQ21BRWlDRFlDT0NBRUtBSTBJZ2RCZ0FKclFZRitTUTBGSUFoQmdBSnJRWUIrVFEwRklBUW9Ba3dpQ0VFZ1R3MEVJQUZCQTJvaEFTQUVRUUEyQWxnZ0JDQUFLQUtnQVRZQ1hDQUVRVFJxSVFRZ0NVRUJhaUlKSUFZb0FoQkpEUUFMQzBFQUlRSWdBQ2dDWENJSVJRMEVJQUFvQW1BaUMwVU5CQ0FBSUFpdElnMUNBWDBpRHlBR0tBSUlJQUFvQWxRaUIydXRmQ0FOZ0tjaUFUWUNhQ0FBSUF1dElnNUNBWDBpRUNBR0tBSU1JQUFvQWxnaUNtdXRmQ0FPZ0tjaUJEWUNiQUpBQWtBZ0FVVU5BQ0FFUlEwQVFmLy9BeUFFYmlBQlR3MEJDeUFGSUFRMkFoUWdCU0FCTmdJUUlBTkJBVUcxNlFBZ0JVRVFhaEFQREFVTElBRWdCR3doQ1FKQUlBQXRBRVJCQW5FRVFDQUFJQUFvQWh3Z0Iyc2dDRzQyQWh3Z0FDQUFLQUlnSUFwcklBdHVOZ0lnSUFBZ0R5QUFLQUlrSUFkcnJYd2dEWUErQWlRZ0FDQVFJQUFvQWlnZ0NtdXRmQ0FPZ0Q0Q0tBd0JDeUFBSUFRMkFpZ2dBQ0FCTmdJa0lBQkNBRGNDSEFzZ0FDQUpRWXdzRUJNaUFUWUNuQUVnQVVVRVFDQURRUUZCelIxQkFCQVBEQVVMSUFZb0FoQkJ1QWdRRXlFQklBQW9BZ3dnQVRZQzBDc2dBQ2dDRENnQzBDdEZCRUFnQTBFQlFjMGRRUUFRRHd3RkMwRUtRUlFRRXlFQklBQW9BZ3dnQVRZQzhDc2dBQ2dDRENJQktBTHdLMFVFUUNBRFFRRkJ6UjFCQUJBUERBVUxJQUZCQ2pZQytDdEJDa0VVRUJNaEFTQUFLQUlNSUFFMkF2d3JJQUFvQWd3aUFTZ0MvQ3RGQkVBZ0EwRUJRYzBkUVFBUUR3d0ZDeUFCUVFvMkFvUXNBa0FnQmlnQ0VDSUVSUTBBSUFZb0FoZ2hDRUVBSVFFZ0JFRUJSd1JBSUFSQmZuRWhDd05BSUFnZ0FVRTBiR29pQnlnQ0lFVUVRQ0FBS0FJTUtBTFFLeUFCUWJnSWJHcEJBU0FIS0FJWVFRRnJkRFlDdEFnTElBZ2dBVUVCY2lJSFFUUnNhaUlLS0FJZ1JRUkFJQUFvQWd3b0F0QXJJQWRCdUFoc2FrRUJJQW9vQWhoQkFXdDBOZ0swQ0FzZ0FVRUNhaUVCSUFKQkFtb2lBaUFMUncwQUN3c2dCRUVCY1VVTkFDQUlJQUZCTkd4cUlnSW9BaUFOQUNBQUtBSU1LQUxRS3lBQlFiZ0liR3BCQVNBQ0tBSVlRUUZyZERZQ3RBZ0xJQWtFUUNBQUtBS2NBU0VCUVFBaEFnTkFJQUVnQmlnQ0VFRzRDQkFUSWdRMkF0QXJJQVJGQkVCQkFDRUNJQU5CQVVITkhVRUFFQThNQndzZ0FVR01MR29oQVNBQ1FRRnFJZ0lnQ1VrTkFBc0xJQUJCQkRZQ0NDQUdLQUlRSWdNRVFFRi9JQUFvQWxnaUFTQUFLQUpnSWdJZ0FDZ0NiRUVCYTJ4cUlnUWdBbW9pQWlBQ0lBUkpHeUlDSUFZb0Fnd2lCQ0FDSUFSSkc2MGhFRUYvSUFBb0FsUWlBaUFBS0FKY0lnUWdBQ2dDYUVFQmEyeHFJZ0FnQkdvaUJDQUFJQVJMR3lJQUlBWW9BZ2dpQkNBQUlBUkpHNjBoRVNBQklBWW9BZ1FpQUNBQUlBRkpHNjBoRWlBQ0lBWW9BZ0FpQUNBQUlBSkpHNjBoRXlBR0tBSVlJUUJCQUNFQkEwQWdBQ0FBTlFJRUlnMUNBWDBpRkNBU2ZDQU5nQ0lWUGdJVUlBQWdBRFVDQUNJT1FnRjlJaFlnRTN3Z0RvQWlGejRDRUNBQVFuOGdBRFVDS0NJUGhrSi9oU0lZSUJBZ0ZId2dEWUFnRlgxQy8vLy8vdytEZkNBUGlENENEQ0FBSUJFZ0Zud2dEb0FnRjMxQy8vLy8vdytESUJoOElBK0lQZ0lJSUFCQk5Hb2hBQ0FCUVFGcUlnRWdBMGNOQUFzTFFRRWhBZ3dFQ3lBRklBSTJBcEFCSUFOQkFVSDJPeUFGUVpBQmFoQVBRUUFoQWd3REMwRUFJUUlnQmtFQU5nSVFJQU5CQVVITkhVRUFFQThNQWdzZ0JTQUlOZ0kwSUFVZ0NUWUNNQ0FEUVFGQnQvTUFJQVZCTUdvUUR3d0JDeUFGSUFnMkFpZ2dCU0FITmdJa0lBVWdDVFlDSUNBRFFRRkJrZXNBSUFWQklHb1FEd3NnQlVHZ0FXb2tBQ0FDQzU0REFRZC9Jd0JCRUdzaUJpUUFBbjhnQWlBQ1FRRkJBaUFBS0FKSUtBSVFJZ2hCZ1FKSkd5SUhRUUYwUVFWcUlnUnVJZ1VnQkd4R0lBSWdCRTl4UlFSQUlBTkJBVUdLSTBFQUVBOUJBQXdCQ3dKL0lBQW9BZ2hCRUVZRVFDQUFLQUtjQVNBQUtBTE1BVUdNTEd4cURBRUxJQUFvQWd3TElRUkJBQ0VBSUFRdEFJZ3NJZ0pCQkhFRVFDQUVLQUtrQTBFQmFpRUFDeUFBSUFWcUlnVkJJRThFUUNBR0lBVTJBZ0FnQTBFQlFZczdJQVlRRDBFQURBRUxJQVFnQWtFRWNqb0FpQ3dnQUNBRlNRUkFJQVFnQUVHVUFXeHFRYWdEYWlFQ0EwQWdBU0FDUVFFUUVTQUJRUUZxSWdFZ0FrRUVhaUFIRUJFZ0FTQUhhaUlCSUFKQkNHcEJBaEFSSUFJZ0FpZ0NDQ0lESUFRb0FnZ2lDU0FESUFsSkd6WUNDQ0FCUVFKcUlBSkJER3BCQVJBUklBRkJBMm9pQVNBQ1FSQnFJQWNRRVNBQklBZHFJZ0VnQmtFTWFrRUJFQkVnQWlBR0tBSU1OZ0lrSUFJZ0FpZ0NFQ0lESUFnZ0F5QUlTUnMyQWhBZ0FrR1VBV29oQWlBQlFRRnFJUUVnQUVFQmFpSUFJQVZIRFFBTEN5QUVJQVZCQVdzMkFxUURRUUVMSVFvZ0JrRVFhaVFBSUFvTDdBRUJCSDhqQUVFUWF5SUVKQUFDZndKQUlBRWdCRUVJYWdKL0lBQW9Ba2dvQWhCQmdBSk5CRUFnQWdSQVFYOGhCVUVCREFJTElBTkJBVUcrSTBFQUVBOUJBQXdEQ3lBQ1FRRk5EUUZCZmlFRlFRSUxJZ1lRRVNBRUlBSWdCV28yQWd3Z0JDZ0NDQ0lDSUFBb0FrZ29BaEFpQlU4RVFDQUVJQVUyQWdRZ0JDQUNOZ0lBSUFOQkFVSEdPaUFFRUE5QkFBd0NDeUFBSUFJZ0FTQUdhaUFFUVF4cUlBTVFRa1VFUUNBRFFRRkJ2aU5CQUJBUFFRQU1BZ3RCQVNBRUtBSU1SUTBCR2lBRFFRRkJ2aU5CQUJBUFFRQU1BUXNnQTBFQlFiNGpRUUFRRDBFQUN5RUhJQVJCRUdva0FDQUhDOWtCQVFSL0l3QkJFR3NpQkNRQUlBUWdBallDREFKQUFrQWdBRUVBSUFFZ0JFRU1haUFERUVKRkRRQWdCQ2dDREEwQUFuOGdBQ2dDQ0VFUVJnUkFJQUFvQXB3QklBQW9Bc3dCUVl3c2JHb01BUXNnQUNnQ0RBc2hCMEVCSVFVZ0FDZ0NTQ2dDRUVFQ1NRMEJJQWNvQXRBcklnSkJIR29oQmtFQklRRWdBaUVEQTBBZ0F5QUNLQUlZTmdMUUNDQURJQUlvQXFRR05nTGNEaUFEUWRRSWFpQUdRWWdHRUJJYUlBTkJ1QWhxSVFNZ0FVRUJhaUlCSUFBb0FrZ29BaEJKRFFBTERBRUxJQU5CQVVIV0lrRUFFQThMSUFSQkVHb2tBQ0FGQzlZQkFRTi9Jd0JCRUdzaUJDUUFBa0FnQWtFQlFRSWdBQ2dDU0NnQ0VDSUdRWUVDU1JzaUJVRUNha2NFUUVFQUlRQWdBMEVCUVlvZ1FRQVFEd3dCQ3dKL0lBQW9BZ2hCRUVZRVFDQUFLQUtjQVNBQUtBTE1BVUdNTEd4cURBRUxJQUFvQWd3TElRSWdBU0FFUVF4cUlBVVFFVUVCSVFBZ0FTQUZhaUlGSUFSQkNHcEJBUkFSSUFZZ0JDZ0NEQ0lCVFFSQUlBUWdCallDQkNBRUlBRTJBZ0FnQTBFQlFkanZBQ0FFRUE5QkFDRUFEQUVMSUFWQkFXb2dBaWdDMENzZ0FVRzRDR3hxUWFnR2FrRUJFQkVMSUFSQkVHb2tBQ0FBQzRRQ0FRVi9Jd0JCRUdzaUJDUUFBbjhnQUNnQ0NFRVFSZ1JBSUFBb0Fwd0JJQUFvQXN3QlFZd3NiR29NQVFzZ0FDZ0NEQXNoQmdKQUlBSkJBVUVDSUFBb0FrZ2lCeWdDRUVHQkFra2JJZ1ZOQkVCQkFDRUNJQU5CQVVHa0kwRUFFQThNQVFzZ0JDQUZRWDl6SUFKcU5nSU1JQUVnQkVFSWFpQUZFQkVnQkNnQ0NDSUlJQWNvQWhCUEJFQkJBQ0VDSUFOQkFVR0E2UUJCQUJBUERBRUxRUUVoQWlBQklBVnFJZ0VnQmlnQzBDc2dDRUc0Q0d4cVFRRVFFU0FBSUFRb0FnZ2dBVUVCYWlBRVFReHFJQU1RUTBVRVFFRUFJUUlnQTBFQlFhUWpRUUFRRHd3QkN5QUVLQUlNUlEwQVFRQWhBaUFEUVFGQnBDTkJBQkFQQ3lBRVFSQnFKQUFnQWd1c0JnRUhmeU1BUVJCcklnWWtBQ0FHSUFJMkFnd2dBQ2dDU0NFSkFuOGdBQ2dDQ0VFUVJnUkFJQUFvQXB3QklBQW9Bc3dCUVl3c2JHb01BUXNnQUNnQ0RBc2lCQ0FFTFFDSUxFRUJjam9BaUN3Q1FDQUNRUVJOQkVBZ0EwRUJRYndpUVFBUUR3d0JDeUFCSUFSQkFSQVJJQVFvQWdCQkNFOEVRQ0FEUVFGQm1pSkJBQkFQREFFTElBRkJBV29nQmtFSWFrRUJFQkVnQkNBR0tBSUlJZ0kyQWdRZ0FrRUZUZ1JBSUFOQkFVSHhJVUVBRUE4Z0JFRi9OZ0lFQ3lBQlFRSnFJQVJCQ0dwQkFoQVJJQVFvQWdnaUIwR0FnQVJyUVlDQWZFMEVRQ0FHSUFjMkFnQWdBMEVCUWFrOUlBWVFEd3dCQ3lBRUlBQW9BcVFCSWdJZ0J5QUNHellDRENBQlFRUnFJQVJCRUdwQkFSQVJJQVFvQWhCQkFrOEVRQ0FEUVFGQmh5cEJBQkFQREFFTElBRkJCV29oQWlBR0lBWW9BZ3hCQldzMkFnd0NRQ0FKS0FJUUlnZEZEUUFnQkNnQ0FFRUJjU0VJSUFRb0F0QXJJUVJCQUNFSklBZEJDRThFUUNBSFFYaHhJUUVEUUNBRUlBVkJ1QWhzYWlBSU5nSUFJQVFnQlVFQmNrRzRDR3hxSUFnMkFnQWdCQ0FGUVFKeVFiZ0liR29nQ0RZQ0FDQUVJQVZCQTNKQnVBaHNhaUFJTmdJQUlBUWdCVUVFY2tHNENHeHFJQWcyQWdBZ0JDQUZRUVZ5UWJnSWJHb2dDRFlDQUNBRUlBVkJCbkpCdUFoc2FpQUlOZ0lBSUFRZ0JVRUhja0c0Q0d4cUlBZzJBZ0FnQlVFSWFpRUZJQXBCQ0dvaUNpQUJSdzBBQ3dzZ0IwRUhjU0lCUlEwQUEwQWdCQ0FGUWJnSWJHb2dDRFlDQUNBRlFRRnFJUVVnQ1VFQmFpSUpJQUZIRFFBTEMwRUFJUVVnQUVFQUlBSWdCa0VNYWlBREVFTkZCRUFnQTBFQlFid2lRUUFRRHd3QkN5QUdLQUlNQkVBZ0EwRUJRYndpUVFBUUR3d0JDd0ovSUFBb0FnaEJFRVlFUUNBQUtBS2NBU0FBS0FMTUFVR01MR3hxREFFTElBQW9BZ3dMSVFFZ0FDZ0NTQ2dDRUVFQ1R3UkFJQUVvQXRBcklnRW9BZ1JCQW5RaEJ5QUJRYkFIYWlFS0lBRkJyQVpxSVFOQkFTRUpJQUVoQWdOQUlBSWdBZjBBQWdUOUN3SzhDQ0FDSUFFb0FoUTJBc3dJSUFKQjVBNXFJQU1nQnhBU0dpQUNRZWdQYWlBS0lBY1FFaG9nQWtHNENHb2hBaUFKUVFGcUlna2dBQ2dDU0NnQ0VFa05BQXNMUVFFaEJRc2dCa0VRYWlRQUlBVUw3QWtCQm44akFFSHdBR3NpQkNRQUlBUkJBRFlDYUFKQUlBSkJDRWNFUUNBRFFRRkJ2UjVCQUJBUElBTkJBVUc5SGtFQUVBOE1BUXNnQVNBQVFjd0Jha0VDRUJFZ0FVRUNhaUFFUWV3QWFrRUVFQkVnQVVFR2FpQUVRZVFBYWtFQkVCRWdBVUVIYWlBRVFlZ0Fha0VCRUJFZ0FDZ0N6QUVpQWlBQUtBSm9JZ2dnQUNnQ2JHeFBCRUFnQkNBQ05nSmdJQU5CQVVHZE95QUVRZUFBYWhBUERBRUxJQUFvQXB3QklBSkJqQ3hzYWlFRklBSWdDRzRoQnlBRUtBSmtJUUVDUUNBQUtBSXNJZ1pCQUU0Z0FpQUdSM0VOQUNBRktBTFVLMEVCYWlJR0lBRkdEUUFnQkNBR05nSllJQVFnQVRZQ1ZDQUVJQUkyQWxBZ0EwRUJRYlU3SUFSQjBBQnFFQTlCQUNFRkRBRUxJQVVnQVRZQzFDc0NRQUpBSUFRb0Ftd2lBVUVCYTBFTVRRUi9JQUZCREVjTkFTQUVRUXcyQWpBZ0EwRUNRZVhYQUNBRVFUQnFFQThnQkNnQ2JBVWdBUXRGQkVBZ0EwRUVRYkxQQUVFQUVBOGdBRUVCTmdJNEN3SkFBa0FDUUFKQUlBVW9BdGdySWdFRVFDQUVLQUprSWdZZ0FVa05BU0FFSUFFMkFpUWdCQ0FHTmdJZ0lBTkJBVUdGSnlBRVFTQnFFQThnQUVFQk5nSTRRUUFoQlF3SEN5QUVLQUpvSWdZTkFRd0RDeUFFS0FKb0lnWkZEUUVMSUFRZ0JpQUFMUUJFUVFSMlFRRnhhaUlCTmdKb0lBUW9BbVFpQmlBRktBTFlLeUlKUVFGclN3UkFJQVFnQ1RZQ0JDQUVJQVkyQWdBZ0EwRUJRYUltSUFRUUR5QUFRUUUyQWpoQkFDRUZEQVVMSUFFZ0JrMEVRQ0FFSUFFMkFoUWdCQ0FHTmdJUUlBTkJBVUhwSnlBRVFSQnFFQThnQUVFQk5nSTRRUUFoQlF3RkN5QUZJQUUyQXRnckN5QUJJQVFvQW1SQkFXcEhEUUFnQUNBQUxRQkVRUUZ5T2dCRUN5QUVLQUpzSVFFZ0FFRVFOZ0lJSUFCQkFDQUJRUXhySUFBb0FqZ2JOZ0lZQWtBZ0FDZ0NMQ0lCUVg5R0JFQkJCQ0VGSUFJZ0J5QUliR3NpQVNBQUtBSWNTUTBCSUFFZ0FDZ0NKRThOQVNBSElBQW9BaUJKRFFFZ0J5QUFLQUlvVDBFQ2RDRUZEQUVMSUFBb0Fzd0JJQUZIUVFKMElRVUxJQUFnQUMwQVJFSDdBWEVnQlhJNkFFUkJBU0VGSUFBb0FzZ0JJZ0ZGRFFJZ0FTZ0NLQ0lHSUFBb0Fzd0JJZ0pCS0d4cUlnY2dBallDQUNBSElBUW9BbVFpQ0RZQ0RDQUVLQUpvSWdFRVFDQUhJQUUyQWdRZ0J5QUVLQUpvSWdFMkFnZ2dCeWdDRUNJQ1JRUkFJQUZCR0JBVElRRWdBQ2dDeUFFb0FpZ2dBQ2dDekFGQktHeHFJQUUyQWhBZ0FRMEVRUUFoQlNBRFFRRkJ5VFJCQUJBUERBUUxJQUlnQVVFWWJCQVhJUUVnQUNnQ3lBRW9BaWdnQUNnQ3pBRkJLR3hxSVFJZ0FVVUVRQ0FDS0FJUUVCQkJBQ0VGSUFBb0FzZ0JLQUlvSUFBb0Fzd0JRU2hzYWtFQU5nSVFJQU5CQVVISk5FRUFFQThNQkFzZ0FpQUJOZ0lRREFNTElBY29BaEFpQVVVRVFDQUhRUW8yQWdoQkNrRVlFQk1oQVNBQUtBTElBU2dDS0NJR0lBQW9Bc3dCSWdKQktHeHFJZ2NnQVRZQ0VDQUJSUTBDSUFRb0FtUWhDQXNnQ0NBR0lBSkJLR3hxSWdJb0FnaEpEUUlnQWlBSVFRRnFJZ0kyQWdnZ0FTQUNRUmhzRUJjaEFTQUFLQUxJQVNnQ0tDQUFLQUxNQVVFb2JHb2hBaUFCUlFSQUlBSW9BaEFRRUVFQUlRVWdBQ2dDeUFFb0FpZ2dBQ2dDekFGQktHeHFJZ0JCQURZQ0NDQUFRUUEyQWhBZ0EwRUJRY2swUVFBUUR3d0RDeUFDSUFFMkFoQU1BZ3NnQkNBQk5nSkFJQU5CQVVIeTJRQWdCRUZBYXhBUFFRQWhCUXdCQzBFQUlRVWdCMEVBTmdJSUlBTkJBVUhKTkVFQUVBOExJQVJCOEFCcUpBQWdCUXVyQndFSWZ5TUFRZEFBYXlJRUpBQWdCRUVCTmdKTUFrQUNRQ0FBS0FMSUFTSUZLQUlvSWdNTkFDQUZJQUFvQW13Z0FDZ0NhR3dpQXpZQ0pDQURRU2dRRXlFRElBQW9Bc2dCSWdVZ0F6WUNLQ0FEUlFSQVFRQWhCUXdDQ3lBRktBSWtSUTBBQTBCQkFDRUZJQU1nQmtFb2JDSUhhaUlEUVFBMkFoUWdBMEhrQURZQ0hFSGtBRUVZRUJNaENTQUhJQUFvQXNnQklnZ29BaWdpQTJvZ0NUWUNHQ0FKUlEwQ0lBWkJBV29pQmlBSUtBSWtTUTBBQ3dzZ0FDZ0NMQ0VKQWtBZ0F5Z0NFRVVOQUFKQUlBTWdDVUVvYkdvaUF5Z0NCRVVFUUNBQklBQXBBekJDQW53Z0FoQTJEUUZCQUNFRklBSkJBVUduS1VFQUVBOE1Bd3NnQVNBREtBSVFLUU1BUWdKOElBSVFOZzBBUVFBaEJTQUNRUUZCcHlsQkFCQVBEQUlMSUFBb0FnaEJnQUpIRFFBZ0FFRUlOZ0lJQ3dKQUlBQW9BbXdnQUNnQ2FHd2lCMFVOQUNBQUtBS2NBU0VGUVFBaEF5QUhRUWhQQkVBZ0IwRjRjU0VJUVFBaEJnTkFJQVVnQTBHTUxHeHFRWDgyQXRRcklBVWdBMEVCY2tHTUxHeHFRWDgyQXRRcklBVWdBMEVDY2tHTUxHeHFRWDgyQXRRcklBVWdBMEVEY2tHTUxHeHFRWDgyQXRRcklBVWdBMEVFY2tHTUxHeHFRWDgyQXRRcklBVWdBMEVGY2tHTUxHeHFRWDgyQXRRcklBVWdBMEVHY2tHTUxHeHFRWDgyQXRRcklBVWdBMEVIY2tHTUxHeHFRWDgyQXRRcklBTkJDR29oQXlBR1FRaHFJZ1lnQ0VjTkFBc0xJQWRCQjNFaUJrVU5BQU5BSUFVZ0EwR01MR3hxUVg4MkF0UXJJQU5CQVdvaEF5QUtRUUZxSWdvZ0JrY05BQXNMUVFBaEJTQUFJQVJCeUFCcVFRQWdCRUhFQUdvZ0JFRkFheUFFUVR4cUlBUkJPR29nQkVFMGFpQUVRY3dBYWlBQklBSVFKMFVOQUNBSlFRRnFJUWNEUUFKQUlBUW9Ba3hGRFFBZ0FDQUVLQUpJSWdOQkFFRUFJQUVnQWhBclJRMENJQUFvQW1naENDQUFLQUpzSVFvZ0JDQURRUUZxSWdZMkFpQWdCQ0FJSUFwc05nSWtJQUpCQkVHZzF3QWdCRUVnYWhBUElBQW9BdEFCSUFBb0Frd29BaGdRZEVVTkFpQUFLQUtjQVNBRFFZd3NiR29pQlNnQzNDc2lDQVJBSUFnUUVDQUZRZ0EzQXR3ckN5QUVJQVkyQWhBZ0FrRUVRZWI4QUNBRVFSQnFFQThnQXlBSlJnUkFJQUVnQUNnQ3lBRXBBd2hDQW53Z0FoQTJEUUZCQUNFRklBSkJBVUduS1VFQUVBOE1Bd3NnQkNBSE5nSUVJQVFnQmpZQ0FDQUNRUUpCM2VVQUlBUVFEMEVBSVFVZ0FDQUVRY2dBYWtFQUlBUkJ4QUJxSUFSQlFHc2dCRUU4YWlBRVFUaHFJQVJCTkdvZ0JFSE1BR29nQVNBQ0VDY05BUXdDQ3dzZ0FDQUNFSEloQlFzZ0JFSFFBR29rQUNBRkM4Z0dBZ2QvQVg0akFFSFFBR3NpQXlRQUlBTkJBVFlDVEFKQUFrQWdBQ2dDYUNJRVFRRkhEUUFnQUNnQ2JFRUJSdzBBSUFBb0FsUU5BQ0FBS0FKWURRQWdBQ2dDVENJRktBSUFEUUFnQlNnQ0JBMEFJQVVvQWdnZ0FDZ0NYRWNOQUNBRktBSU1JQUFvQW1CSERRQkJBQ0VFSUFBZ0EwSElBR3BCQUNBRFFjUUFhaUFEUVVCcklBTkJQR29nQTBFNGFpQURRVFJxSUFOQnpBQnFJQUVnQWhBblJRMEJBa0FnQUNBREtBSklRUUJCQUNBQklBSVFLd1JBSUFBb0Frd2lBU2dDRUEwQlFRRWhCQXdEQ3lBQ1FRRkJrY0lBUVFBUUR3d0NDeUFCS0FJWUlRRkJBQ0VDQTBBZ0FTQUNRVFJzSWdScUtBSXNFQkFnQUNnQ1RDSUZLQUlZSWdFZ0JHb2lCaUFBS0FMUUFTSUhLQUlVS0FJQUtBSVVJQUpCekFCc2FpSUlLQUlrTmdJc0lBWWdCeWdDR0NnQ0dDQUVhaWdDSkRZQ0pDQUlRUUEyQWlSQkFTRUVJQUpCQVdvaUFpQUZLQUlRU1EwQUN3d0JDd05BQWtBQ2Z3SkFJQVJCQVVjTkFDQUFLQUpzUVFGSERRQWdBQ2dDbkFFb0F0d3JSUTBBSUFOQkFEWUNTQ0FBUVFBMkFzd0JJQUFnQUNnQ0NFR0FBWEkyQWdoQkFBd0JDMEVBSVFRZ0FDQURRY2dBYWtFQUlBTkJ4QUJxSUFOQlFHc2dBMEU4YWlBRFFUaHFJQU5CTkdvZ0EwSE1BR29nQVNBQ0VDZEZEUU1nQXlnQ1RFVU5BU0FES0FKSUN5SUhRUUZxSVFRZ0FDQUhRUUJCQUNBQklBSVFLeUVKSUFBb0FtZ2dBQ2dDYkd3aEJTQUpSUVJBSUFNZ0JUWUNCQ0FESUFRMkFnQWdBa0VCUVpjNUlBTVFEMEVBSVFRTUF3c2dBeUFGTmdJa0lBTWdCRFlDSUNBQ1FRUkJvTmNBSUFOQklHb1FEeUFBS0FMUUFTQUFLQUpNS0FJWUVIUkZCRUJCQUNFRURBTUxBa0FDUUNBQUtBSm9RUUZIRFFBZ0FDZ0NiRUVCUncwQUlBQW9Ba3dpQlNnQ0FDQUFLQUpJSWdZb0FnQkhEUUVnQlNnQ0JDQUdLQUlFUncwQklBVW9BZ2dnQmlnQ0NFY05BU0FGS0FJTUlBWW9BZ3hIRFFFTElBQW9BcHdCSUFkQmpDeHNhaUlGS0FMY0t5SUdSUTBBSUFZUUVDQUZRZ0EzQXR3ckN5QURJQVEyQWhBZ0FrRUVRZWI4QUNBRFFSQnFFQThnQVNrRENDSUtVQVIrUWdBRklBb2dBU2tET0gwTFVBUkFJQUFvQWdoQndBQkdEUUVMSUFoQkFXb2lDQ0FBS0FKb0lnUWdBQ2dDYkd4SERRRUxDeUFBSUFJUWNpRUVDeUFEUWRBQWFpUUFJQVFMdFFZQkRIOGdBQ2dDU0NFSkFrQWdBQ2dDYUNBQUtBSnNiQ0lNQkVBZ0NTZ0NFQ0lCUWJnSWJDRU5JQUVnQVd4QkFuUWhDaUFBS0FJTUlRUWdBQ2dDbkFFaEF3TkFJQU1vQXRBcklRc2dBeUFFUVl3c0VCSWlBVUVBTmdMb0t5QUJRWDgyQXRRcklBRkJBRFlDc0NnZ0FVRUFOZ0tFTENBQlFRQTJBdkFySUFGQ0FEY0MrQ3NnQVNBTE5nTFFLeUFCSUFFdEFJZ3NRZndCY1RvQWlDd2dCQ2dDNkNzRVFDQUJJQW9RRkNJRE5nTG9LeUFEUlFSQVFRQVBDeUFESUFRb0F1Z3JJQW9RRWhvTElBRWdCQ2dDK0N0QkZHd2lCUkFVSWdNMkF2QXJRUUFoQ0NBRFJRMENJQU1nQkNnQzhDc2dCUkFTR2lBRUtBTDBLeUlHQkVBZ0JDZ0M4Q3NoQXlBQktBTHdLeUVGUVFBaEJ3TkFJQU1vQWd3RVFDQUZJQU1vQWhBUUZDSUdOZ0lNSUFaRkJFQkJBQThMSUFZZ0F5Z0NEQ0FES0FJUUVCSWFJQVFvQXZRcklRWUxJQUVnQVNnQytDdEJBV28yQXZncklBVkJGR29oQlNBRFFSUnFJUU1nQjBFQmFpSUhJQVpKRFFBTEN5QUJJQVFvQW9Rc1FSUnNJZ1VRRkNJRE5nTDhLeUFEUlEwQ0lBTWdCQ2dDL0NzZ0JSQVNHaUFCSUFRb0FvUXNJZ2cyQW9Rc0lBZ0VRQ0FFS0FMOEt5RURJQUVvQXZ3cklRVkJBQ0VIQTBBZ0F5Z0NDQ0lHQkVBZ0JTQUJLQUx3S3lBR0lBUW9BdkFyYTJvMkFnZ0xJQU1vQWd3aUJnUkFJQVVnQVNnQzhDc2dCaUFFS0FMd0sydHFOZ0lNQ3lBRlFSUnFJUVVnQTBFVWFpRURJQWRCQVdvaUJ5QUlSdzBBQ3dzZ0N5QUVLQUxRS3lBTkVCSWFJQUZCakN4cUlRTWdEa0VCYWlJT0lBeEhEUUFMQzBFQklRZ2dBQUovUVFCQkFVSElBQkFUSWdGRkRRQWFJQUVnQVMwQUtFSCtBWEZCQVhJNkFDZ2dBVUVCUVFRUUV5SUVOZ0lVSUFFZ0JBMEFHaUFCRUJCQkFBc2lBVFlDMEFFZ0FVVUVRRUVBRHdzZ0FDZ0MxQUVoQlVFQUlRUWdBU0FBUWRBQWFqWUNIQ0FCSUFrMkFoaEJBVUhRQmhBVElRTWdBU2dDRkNBRE5nSUFBa0FnQTBVTkFDQUpLQUlRUWN3QUVCTWhBeUFCS0FJVUtBSUFJZ2NnQXpZQ0ZDQURSUTBBSUFjZ0NTZ0NFRFlDRUNBQUtBS2tBU0VFSUFFZ0JUWUNMQ0FCSUFRMkFnQkJBU0VFQ3lBRURRQWdBQ2dDMEFFUVZVRUFJUWdnQUVFQU5nTFFBU0FDUVFGQndodEJBQkFQQ3lBSUM5VVNBd3gvQVgwQmZpTUFRVEJySWdna0FDQUFRUUUyQWdnQ2Z3SkFBa0FnQVNBSVFTaHFJZ1ZCQWlBQ0VCcEJBa2NOQUNBRklBaEJMR3BCQWhBUklBZ29BaXhCei80RFJ3MEFJQUJCQWpZQ0NDQUFLQUxJQVNBQktRTTRRZ0o5SWhBM0F3QWdDQ0FRTndNUUlBSkJCRUh1M2dBZ0NFRVFhaEFQSUFBb0FzZ0JJZ01wQXdBaEVDQURLQUlZSWdkQkFXb2lCU0FES0FJZ0lnUk5CRUFnQXlnQ0hDRUVEQUlMSUFNQ2Z5QUVzME1BQU1oQ2tpSVBRd0FBZ0U5ZElBOURBQUFBQUdCeEJFQWdENmtNQVF0QkFBc2lCVFlDSUNBREtBSWNJQVZCR0d3UUZ5SUVCRUFnQXlBRU5nSWNJQU1vQWhnaUIwRUJhaUVGREFJTElBTW9BaHdRRUNBRFFRQTJBaUFnQTBJQU53TVlJQUpCQVVHcEhVRUFFQThMSUFKQkFVRzE5UUJCQUJBUFFRQU1BUXNnQkNBSFFSaHNhaUlFUVFJMkFoQWdCQ0FReERjRENDQUVRYy8rQXpzQkFDQURJQVUyQWhnZ0FTQUFLQUlRUVFJZ0FoQWFRUUpIQkVBZ0FrRUJRWllTUVFBUUQwRUFEQUVMSUFBb0FoQWdDRUVvYWtFQ0VCRUNRQUpBSUFnb0FpZ2lCRUdRL3dOSEJFQURRRUhndlFFaEJ5QUVRZi85QTAwRVFDQUlJQVEyQWdBZ0FrRUJRY29RSUFnUUQwRUFEQVVMQTBBZ0J5SUZLQUlBSWdNRVFDQUZRUXhxSVFjZ0F5QUVSdzBCQ3dzQ1FBSkFJQU1OQUVFQ0lRWWdBa0VDUWZVY1FRQVFEMEdXRWlFSEFrQUNRQ0FCSUFBb0FoQkJBaUFDRUJwQkFrY05BQU5BSUFBb0FoQWdDRUVzYWtFQ0VCRkI0TDBCSVFNZ0NDZ0NMQ0lFUVlEK0EwOEVRQU5BSUFNaUJTZ0NBQ0lNQkVBZ0EwRU1haUVESUFRZ0RFY05BUXNMSUFVb0FnUWdBQ2dDQ0hGRkJFQkIvQ2doQnd3REN5QU1CRUFnREVHUS93TkdCRUFnQ0VHUS93TTJBaWdNQndzZ0FTa0RPQ0VRSUFBb0FzZ0JJZ01vQWhnaUJVRUJhaUlFSUFNb0FpQWlCMDBFUUNBREtBSWNJUWNNQlFzZ0F3Si9JQWV6UXdBQXlFS1NJZzlEQUFDQVQxMGdEME1BQUFBQVlIRUVRQ0FQcVF3QkMwRUFDeUlGTmdJZ0lBTW9BaHdnQlVFWWJCQVhJZ2NFUUNBRElBYzJBaHdnQXlnQ0dDSUZRUUZxSVFRTUJRc2dBeWdDSEJBUUlBTkJBRFlDSUNBRFFnQTNBeGhCcVIwaEJ3d0RDeUFHUVFKcUlRWUxJQUVnQUNnQ0VFRUNJQUlRR2tFQ1JnMEFDd3NnQWtFQklBZEJBQkFQSUFKQkFVSDl5QUJCQUJBUFFRQU1Cd3NnQnlBRlFSaHNhaUlGSUFZMkFoQWdCU0FRcHlBR2E2dzNBd2dnQlVFQU93RUFJQU1nQkRZQ0dDQUlJQXcyQWloQjRMMEJJUVFEUUNBRUlnVW9BZ0FpQTBVTkFTQUVRUXhxSVFRZ0F5QU1SdzBBQ3dzZ0JTZ0NCQ0FBS0FJSWNVVUVRQ0FDUVFGQi9DaEJBQkFQUVFBTUJnc2dBU0FBS0FJUVFRSWdBaEFhUVFKSEJFQWdBa0VCUVpZU1FRQVFEMEVBREFZTElBQW9BaEFnQ0VFa2FrRUNFQkVnQ0NnQ0pDSUVRUUZOQkVBZ0FrRUJRYUV1UVFBUUQwRUFEQVlMSUFnZ0JFRUNheUlITmdJa0lBQW9BaEFoQkNBQUtBSVVJQWRKQkVBZ0JDQUhFQmNpQkVVRVFDQUFLQUlRRUJBZ0FFSUFOd01RSUFKQkFVSFVKVUVBRUE5QkFBd0hDeUFBSUFRMkFoQWdBQ0FJS0FJa0lnYzJBaFFMSUFFZ0JDQUhJQUlRR2lJRUlBZ29BaVJIQkVBZ0FrRUJRWllTUVFBUUQwRUFEQVlMSUFBZ0FDZ0NFQ0FFSUFJZ0JTZ0NDQkVCQUVVRVFDQUNRUUZCcUJKQkFCQVBRUUFNQmdzZ0FTa0RPQ0VRSUFnb0FpUWhEQUpBSUFBb0FzZ0JJZ1VvQWhnaUJrRUJhaUlISUFVb0FpQWlCRTBFUUNBRktBSWNJUVFNQVFzZ0JRSi9JQVN6UXdBQXlFS1NJZzlEQUFDQVQxMGdEME1BQUFBQVlIRUVRQ0FQcVF3QkMwRUFDeUlFTmdJZ0lBVW9BaHdnQkVFWWJCQVhJZ1JGRFFVZ0JTQUVOZ0ljSUFVb0FoZ2lCa0VCYWlFSEN5QUVJQVpCR0d4cUlnUWdERUVFYWpZQ0VDQUVJQkNuSUF4clFRUnJyRGNEQ0NBRUlBTTdBUUFnQlNBSE5nSVlJQUVnQUNnQ0VFRUNJQUlRR2tFQ1J3UkFJQUpCQVVHV0VrRUFFQTlCQUF3R0MwRUJJQW9nQTBIYy9nTkdHeUVLUVFFZ0N5QURRZEwrQTBZYklRdEJBU0FOSUFOQjBmNERSaHNoRFNBQUtBSVFJQWhCS0dwQkFoQVJJQWdvQWlnaUJFR1Evd05IRFFFTEN5QU5EUUVMSUFKQkFVR1lKRUVBRUE5QkFBd0NDeUFMUlFSQUlBSkJBVUhHSkVFQUVBOUJBQXdDQ3lBS1JRUkFJQUpCQVVIMEpFRUFFQTlCQUF3Q0MwRUFJUU5CQUNFTkl3QkJFR3NpQkNRQVFRRWhCd0pBSUFBdEFMd0JRUUZ4UlEwQUFrQWdBQ2dDY0NJTFJRMEFBa0FEUUNBQUtBSjBJQTFCQTNScUlnVW9BZ0FpQ2dSQUlBTWdCU2dDQkNJR2F5SUZRUUFnQXlBRlR4c2hCU0FESUFaSkJFQWdCaUFEYXlFTElBTWdDbW9oQ2dOQUlBdEJCRWtFUUVHT0t5RUREQVVMSUFvZ0JFRU1ha0VFRUJFZ0JDZ0NEQ0lEUVg5eklBbEpCRUJCOUNvaEF3d0ZDeUFESUF0QkJHc2lCbXNnQlNBRElBWkxJZ3diSVFVZ0F5QUphaUVKSUFZZ0Eyc2hDeUFLUVFBZ0F5QU1HMnBCQkdvaENpQURJQVpKRFFBTElBQW9BbkFoQ3dzZ0JTRURDeUFOUVFGcUlnMGdDMGtOQUFzZ0EwVU5BVUVBSVFjZ0FrRUJRZWtXUVFBUUR3d0NDMEVBSVFjZ0FrRUJJQU5CQUJBUERBRUxJQUFnQ1JBVUlnTTJBb2dCSUFORkJFQkJBQ0VISUFKQkFVRytJRUVBRUE4TUFRc2dBQ0FKTmdKOElBQW9BblFoQmdKQUlBQW9BbkFpQ2dSQVFRQWhDVUVBSVFOQkFDRUZBMEFnQmlBRlFRTjBJZzFxSWd3b0FnQWlDd1JBSUFBb0FvZ0JJQU5xSVFvQ2Z5QU1LQUlFSWdZZ0NVMEVRQ0FLSUFzZ0JoQVNHaUFESUFacUlRTWdDU0FHYXd3QkN5QUtJQXNnQ1JBU0dpQURJQWxxSVFNZ0JpQUpheUlHQkVBZ0NTQUxhaUVKQTBBZ0JrRUVTUTBHSUFrZ0JFRUlha0VFRUJFZ0NVRUVhaUVKSUFBb0FvZ0JJQU5xSVFvZ0JrRUVheUlHSUFRb0FnZ2lDMGtFUUNBS0lBa2dCaEFTR2lBRElBWnFJUU1nQkNnQ0NDQUdhd3dEQ3lBS0lBa2dDeEFTR2lBRUtBSUlJZ29nQTJvaEF5QUpJQXBxSVFrZ0JpQUtheUlHRFFBTEMwRUFDeUVKSUFBb0FuUWdEV29vQWdBUUVDQUFLQUowSWdZZ0RXcENBRGNDQUNBQUtBSndJUW9MSUFWQkFXb2lCU0FLU1EwQUN5QUFLQUo4SVFrZ0FDZ0NpQUVoQXdzZ0FDQUpOZ0tRQVNBQUlBTTJBbmdnQUVFQU5nSndJQVlRRUNBQVFRQTJBblFNQVF0QkFDRUhJQUpCQVVHT0swRUFFQThMSUFSQkVHb2tBQ0FIUlFSQUlBSkJBVUdQUFVFQUVBOUJBQXdDQ3lBQ1FRUkI5OVlBUVFBUUR5QUFLQUxJQVNBQktRTTRRdjcvLy84UGZFTC8vLy8vRDRNM0F3Z2dBRUVJTmdJSVFRRU1BUXNnQlNnQ0hCQVFJQVZCQURZQ0lDQUZRZ0EzQXhnZ0FrRUJRYWtkUVFBUUQwRUFDeUVPSUFoQk1Hb2tBQ0FPQ3h3QUlBQW9BZ2hGSUFBb0FzQUJRUUJISUFBb0FzUUJRUUJIY1hFTEJBQkJBQXNQQUNBQUJFQWdBQ0FCTmdLNEFRc0xqd0VCQkg4Z0FDZ0NHQ0lCQkVBZ0FDZ0NIQ0lEUVRSdUlRUWdBMEUwVHdSL1FRQWhBd05BSUFFb0FnQWlBZ1JBSUFKQkFXc1FFQ0FCUVFBMkFnQUxJQUVvQWdRaUFnUkFJQUlRRUNBQlFRQTJBZ1FMSUFFb0FnZ2lBZ1JBSUFJUUVDQUJRUUEyQWdnTElBRkJOR29oQVNBRFFRRnFJZ01nQkVjTkFBc2dBQ2dDR0FVZ0FRc1FFQ0FBUVFBMkFoZ0xDNFlCQVFSL0lBQW9BaGdpQVFSQUlBQW9BaHdpQWtIQUFFOEVmeUFDUVFaMklRUkJBQ0VDQTBBZ0FTZ0NBQ0lEQkVBZ0F4QVFJQUZCQURZQ0FBc2dBU2dDQkNJREJFQWdBeEFRSUFGQkFEWUNCQXNnQVNnQ1BCQVFJQUZCQURZQ1BDQUJRVUJySVFFZ0FrRUJhaUlDSUFSSERRQUxJQUFvQWhnRklBRUxFQkFnQUVFQU5nSVlDd3MvQVFGL0lBQUVRQ0FBS0FKMElnRUVRQ0FCRUJBZ0FFRUFOZ0owQ3lBQUtBSjRJZ0VFUUNBQkVCQWdBRUVBTmdKNEN5QUFLQUtVQVJBUUlBQVFFQXNMd2FZRkJGeC9BbnNHZmdGOUl3QkI0QUJySWlNa0FDQUFLQUlJSVJvQ1FBSkFBa0FDUUNBQUtBSUFSUVJBSUJvZ0dpZ0NFQ0FhS0FJSWF5QWFLQUlVSUJvb0FneHJiRUVDZENJR0VCZ2lBellDUENBRFJRUkFJQUFvQWlRYUlBQW9BaUJCQVVIUlBFRUFFQThnQUNnQ0pCb2dBRUVjYWlFUURBTUxJQU5CQUNBR0VCVWFEQUVMSUJvb0Fqd2lBMFVOQUNBREVCQWdHa0VBTmdJOEN5QUFLQUlRSWpJb0Fod2dNaWdDR0VHWUFXeHFJZ05CbUFGcktBSUFJVFVnQTBHUUFXc29BZ0FoTmlBQUtBSVVJUzhnQUNnQ0RDRXdJQUFvQWdRaE55QUFLQUljS0FJQVJRMENJQUJCSEdvaEVBSkFBbjlCQUNBQktBSUVJZ05CQUV3TkFCb2dBU2dDQUNFR0FrQURRQ0FHSUFkQkRHeHFJZ1FvQWdCRkRRRWdCMEVCYWlJSElBTkhEUUFMUVFBTUFRc2dCQ2dDQkFzaUJBMEFRUUZCbkFFUUV5SUVSUVJBSUFBb0FpQkJBVUdRTUVFQUVBOE1BZ3NnQkVFQU5nS01BU0FCS0FJRUlnTkIvLy8vL3dkSEJIOENmeUFCS0FJQUlRWWdBMEVBU2dSQUEwQWdCaUFKUVF4c2FpSUhLQUlBUlFSQUlBY29BZ2dpQXdSL0lBY29BZ1FnQXhFQ0FDQUJLQUlBQlNBR0N5QUpRUXhzYWlJQlFRODJBZ2dnQVNBRU5nSUVRUUVNQXdzZ0NVRUJhaUlKSUFOSERRQUxDMEVBSUFZZ0EwRU1iRUVNYWhBWElnTkZEUUFhSUFFZ0F6WUNBQ0FESUFFb0FnUWlCa0VNYkdvaUEwRVBOZ0lJSUFNZ0JEWUNCQ0FEUVFBMkFnQWdBU0FHUVFGcU5nSUVRUUVMQlVFQUN3MEFJQUFvQWlCQkFVR01QMEVBRUE4Z0JDZ0NkQ0lCQkVBZ0FSQVFJQVJCQURZQ2RBc2dCQ2dDZUNJQkJFQWdBUkFRSUFSQkFEWUNlQXNnQkNnQ2xBRVFFQ0FFRUJBTUFRc2dCQ0FBS0FJWU5nS1FBU0FBS0FJb0lTc2dBQ2dDSkNFaElBQW9BaUFoSFNBdktBS29CaUVSSURBb0FoQWhBUUpBQWtBZ0x5Z0NFQ0lXUWNBQWNRUkFJQlloQ2lNQVFiQUNheUlQSkFBQ1FDQVJCRUFnSVFSQVFRQWhCeUFkUVFGQmdSaEJBQkFQREFJTFFRQWhCeUFkUVFGQmdSaEJBQkFQREFFTElBUW9BblFoQndKQUFrQWdHaWdDRkNBYUtBSU1heUlESUJvb0FoQWdHaWdDQ0dzaUJtd2lBU0FFS0FLRUFVc0VRQ0FIRUJBZ0JDQUJRUUowSWhFUUdDSUhOZ0owSUFkRkJFQkJBQ0VIREFRTElBUWdBVFlDaEFFTUFRc2dCMFVOQVNBQlFRSjBJUkVMSUFkQkFDQVJFQlVhQ3lBRUtBSjRJUWNDUUNBRUtBS0lBVUhQRkVzTkFDQUhFQkFnQkVIQTBnQVFHQ0lITmdKNElBY05BRUVBSVFjTUFRc2dCRUhRRkRZQ2lBRWdCMEVBUWNEU0FCQVZHaUFFSUFNMkFvQUJJQVFnQmpZQ2ZDQWFLQUlZSWdKRkJFQkJBU0VIREFFTElCb29BaHdoRFVFQklRY0NRQUpBQWtBQ1FBSkFJQm9vQWpRaUF3UkFJQm9vQWdRaENVRUFJUWRCQUNFQkFrQWdBMEVFVHdSQUlBTkJmSEVoQVFOQUlBa2dDRUVEZEdvaUJrRWNhaUFHUVJScUlBWkJER29nQnYwSkFnVDlWZ0lBQWYxV0FnQUMvVllDQUFNZ1h2MnVBU0ZlSUFoQkJHb2lDQ0FCUncwQUN5QmVJRjRnWHYwTkNBa0tDd3dORGc4QUFRSURBQUVDQS8ydUFTSmVJRjRnWHYwTkJBVUdCd0FCQWdNQUFRSURBQUVDQS8ydUFmMGJBQ0VISUFFZ0EwWU5BUXNEUUNBSklBRkJBM1JxS0FJRUlBZHFJUWNnQVVFQmFpSUJJQU5IRFFBTEN5QURRUUZHQkVBZ0JDZ0NrQUZGRFFVTElBY2dCQ2dDbUFGTkRRRWdCQ2dDbEFFZ0J4QVhJaEVOQWtFQUlRY01CZ3NnQkNnQ2tBRkZEUVVMSUFRb0FwUUJJaEVOQVVFQUlRY01CQXNnQkNBSE5nS1lBU0FFSUJFMkFwUUJDeUFhS0FJMFJRUkFRUUFoQnd3Q0N5QWFLQUlFSVFoQkFDRUhRUUFoQVFOQUlBY2dFV29nQ0NBQlFRTjBJZ05xSWdZb0FnQWdCaWdDQkJBU0dpQWFLQUlFSWdnZ0Eyb29BZ1FnQjJvaEJ5QUJRUUZxSWdFZ0dpZ0NORWtOQUFzTUFRc2dHaWdDQkNnQ0FDRVJDMEVBSVFGQkFDRUlBbjlCQUNBYUtBSW9JZ05GRFFBYUlCb29BZ0FpQmlnQ0NDRUlRUUFnQTBFQlJnMEFHaUFHS0FJZ0N5RURJQUlnRFdzaFJRSkFJQU1nQ0dvaUNFVUVRRUVBSVFrTUFRdEJBU0VCSUJvb0FnQWlBeWdDQUNFRlFRQWhDU0FJUVFGR0JFQkJBQ0VCREFFTElBTW9BaGdoQ1FzZ1JVRUJhaUVXSUFRb0FuUWhEaUFFS0FKNElSUWdHaWdDRENFU0lCb29BaFFoR0NBYUtBSUlJU1FnR2lnQ0VDRXJBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFJQUZGRFFBZ0NRMEFJQ0ZGRFFFZ0hVRUNRYUhRQUVFQUVBOUJBU0VJREFJTElBaEJCRWtOQVNBaEJFQWdEeUFJTmdKd0lCMUJBVUg4eGdBZ0QwSHdBR29RRHd3SUN5QVBJQWcyQW1BZ0hVRUJRZnpHQUNBUFFlQUFhaEFQUVFBaEJ3d0lDeUFkUVFKQm9kQUFRUUFRRHlBYUtBSVlJZ0ZCSGtzTkFVRUJJUXdnQVNBV1R3MEREQVVMSUJvb0FoZ2lBVUVlVFEwQklDRkZEUUFnRHlBQk5nSWdJQjFCQVVHYjJ3QWdEMEVnYWhBUERBVUxJQThnQVRZQ0FDQWRRUUZCbTlzQUlBOFFEMEVBSVFjTUJRc2dBU0FXU1EwQklBaEJBa2tFUUNBSUlRd01BUXNnQVNBV1J3UkFJQWdoREF3QkMwRUJJUXhCa01jQkxRQUFEUUFnSVVVRVFFR1F4d0ZCQVRvQUFDQVBJQWcyQWtBZ0hVRUNRYWJNQUNBUFFVQnJFQThNQVF0QmtNY0JMUUFBUlFSQVFaREhBVUVCT2dBQUlBOGdDRFlDVUNBZFFRSkJwc3dBSUE5QjBBQnFFQThMQ3dKQUFrQWdCVUVDU1EwQUlBVWdCMHNOQUNBRklBbHFJQWRORFFFTElDRUVRRUVBSVFjZ0hVRUJRY0xHQUVFQUVBOE1CUXRCQUNFSElCMUJBVUhDeGdCQkFCQVBEQVFMQWtBQ1FDQUZJQkZxSWhOQkFXc3RBQUJCQkhRZ0UwRUNheTBBQUVFUGNYSWlCa0VDU1EwQUlBVWdCa2dOQUNBR1FmQWZTUTBCQ3lBaEJFQkJBQ0VISUIxQkFVSFc4Z0JCQUJBUERBVUxRUUFoQnlBZFFRRkIxdklBUVFBUUR3d0VDeUFhS0FJY0lTWWdEMEVBTmdLUUFpQVBRUUEyQXBnQ0lBOUNBRGNEaUFJZ0QwSUFOd09vQWlBUFFnQTNBcHdDSUE4Z0JrRUJheUlITmdLVUFpQVBJQVVnRVdvZ0Jtc2lBVFlDZ0FKQy93RWhZQ0FHUVFKUEJFQWdBVEVBQUNGZ0MwRUlJUU1nRDBFSU5nS1FBaUFQSUFaQkFtc2lDRFlDbEFJZ0R5QmdRZytFSUdBZ0IwRUJSaHNpWURjRGlBSWdEeUFCSUFaQkFVcHFJZ2MyQW9BQ0lBOGdZRUwvQVZFaURUWUNtQUlDZndKQUlBRkJBM0VpQWtFRFJnMEFRdjhCSVdFZ0RRUkFRUUFnQnkwQUFFR1BBVXNOQWhvTElBWkJBMDRFUUNBSE1RQUFJV0VMSUE4Z0JrRURheUlOTmdLVUFpQVBRUTlCRUNCZ1F2OEJVU0lMR3lJRE5nS1FBaUFQSUFjZ0JrRUNTbW9pQVRZQ2dBSWdEeUJoUWcrRUlHRWdDRUVCUmhzaVlVTC9BVkUyQXBnQ0lBOGdZRUlIUWdnZ0N4dUdJR0dFSW1BM0E0Z0NJQUpCQWtZTkFDQmhRdjhCVVFSQVFRQWdBUzBBQUVHUEFVc05BaG9MUXY4QklXSWdCa0VFVGdSQUlBRXhBQUFoWWdzZ0R5QUdRUVJySWdjMkFwUUNJQThnQVNBR1FRTkthaUlCTmdLQUFpQVBJR0pDRDRRZ1lpQU5RUUZHR3lKaVF2OEJVVFlDbUFJZ0R5QURRUWRCQ0NCaFF2OEJVU0lJRzJvaUF6WUNrQUlnRHlCZ1FnZENDQ0FJRzRZZ1lvUWlZRGNEaUFJZ0FrRUJSZzBBUXY4QklXRWdZa0wvQVZFRVFFRUFJQUV0QUFCQmp3RkxEUUlhQ3lBR1FRVk9CRUFnQVRFQUFDRmhDeUFQSUFaQkJXczJBcFFDSUE4Z0FTQUdRUVJLYWpZQ2dBSWdEeUJoUWcrRUlHRWdCMEVCUmhzaVlVTC9BVkUyQXBnQ0lBOGdBMEVIUVFnZ1lrTC9BVkVpQVJ0cUlnTTJBcEFDSUE4Z1lFSUhRZ2dnQVJ1R0lHR0VJbUEzQTRnQ0N5QVBJR0JCd0FBZ0EydXRoamNEaUFKQkFRdEZCRUFnSVFSQVFRQWhCeUFkUVFGQmc5VUFRUUFRRHd3RkMwRUFJUWNnSFVFQlFZUFZBRUVBRUE4TUJBc2dLeUFrYXlFVklBOGdCa0VDYXlJTE5nTDBBU0FQSUFVZ0VXb2lBa0VEYXlJRE5nTGdBU0FQSUFKQkFtc3RBQUFpR1VHUEFVc2lEVFlDK0FFZ0R5QVpRUVIyclNKZ053UG9BU0FQUVFOQkJDQmdRZ2VEUWdkUkd5SUJOZ0x3QVNBRFFRTnhRUUZxSWdjZ0N5QUhJQXRJR3lFSUFrQUNRQ0FHUVFKTUJFQWdEeUFMSUFocklnSTJBdlFCREFFTElBOGdBa0VFYXlJSE5nTGdBU0FQSUFNdEFBQWlGMEdQQVVzaURUWUMrQUVnRHlBWHJTSmhJQUd0aGlCZ2hDSmdOd1BvQVNBUFFRaEJCMEVJSUdGQy93Q0RRdjhBVVJzZ0dVR1BBVTBiSUFGcUlnRTJBdkFCQWtBZ0NFRUJSZ1JBSUFjaEF3d0JDeUFQSUFKQkJXc2lBellDNEFFZ0R5QUhMUUFBSWhsQmp3RkxJZzAyQXZnQklBOGdHYTBpWVNBQnJZWWdZSVFpWURjRDZBRWdEMEVJUVFkQkNDQmhRdjhBZzBML0FGRWJJQmRCandGTkd5QUJhaUlCTmdMd0FTQUlRUUpHRFFBZ0R5QUNRUVpySWdjMkF1QUJJQThnQXkwQUFDSVhRWThCU3lJTk5nTDRBU0FQSUJldEltRWdBYTJHSUdDRUltQTNBK2dCSUE5QkNFRUhRUWdnWVVML0FJTkMvd0JSR3lBWlFZOEJUUnNnQVdvaUFUWUM4QUVnQ0VFRFJnUkFJQWNoQXd3QkN5QVBJQUpCQjJzaUF6WUM0QUVnRHlBSE1RQUFJbUZDandGV0lnMDJBdmdCSUE4Z1lTQUJyWVlnWUlRaVlEY0Q2QUVnRDBFSVFRZEJDQ0JoUXY4QWcwTC9BRkViSUJkQmp3Rk5HeUFCYWlJQk5nTHdBUXNnRHlBTElBaHJJZ0kyQXZRQklBRkJJRXNOQVFzQ1FDQUNRUVJPQkVBZ0EwRURheWdDQUNFSElBOGdBa0VFYXpZQzlBRWdEeUFEUVFSck5nTGdBUXdCQ3lBQ1FRQk1CRUJCQUNFSERBRUxJQUpCQVhFaFJ3SkFJQUpCQVVZRVFFRVlJUWhCQUNFSERBRUxJQUpCL3YvLy93ZHhJUmRCR0NFSVFRQWhCMEVBSVFzRFFDQVBJQU5CQVdzaUh6WUM0QUVnQXkwQUFDRkdJQThnQTBFQ2F5SUROZ0xnQVNBUElBSkJBV3MyQXZRQklCOHRBQUFoSHlBUElBSkJBbXNpQWpZQzlBRWdSaUFJZENBSGNpQWZJQWhCQ0d0MGNpRUhJQWhCRUdzaENDQUxRUUpxSWdzZ0YwY05BQXNMSUVkRkRRQWdEeUFEUVFGck5nTGdBU0FETFFBQUlVZ2dEeUFDUVFGck5nTDBBU0JJSUFoMElBZHlJUWNMSUE4Z0IwSC9BWEVpQTBHUEFVczJBdmdCSUE5QkIwRUlJQWRCZ0lDQStBZHhRWUNBZ1BnSFJodEJDQ0FOR3lJQ1FRaEJCMEVJSUFkQmdJRDhBM0ZCZ0lEOEEwWWJJQWRCLy8vLy8zaE5HMm9pQ0VFSVFRZEJDQ0FIUVlEK0FYRkJnUDRCUmhzZ0IwRVFka0gvQVhFaURVR1BBVTBiYWlJTFFRaEJCMEVJSUFkQi93QnhRZjhBUmhzZ0IwRUlka0gvQVhFaUdVR1BBVTBiSUFGcWFqWUM4QUVnRHlBTklBSjBJQWRCR0haeUlCa2dDSFJ5SUFNZ0MzUnlyU0FCcllZZ1lJUTNBK2dCQ3lBUFFjQUJhaUFSSUFVZ0JtdEIvd0VRV3dKL1FRQWdERUVDU1EwQUdpQVBRYUFCYWlBVElBbEJBQkJiUVFBZ0RFRUNSZzBBR2tJQUlXQkNBQ0ZpSUE5QkFUWUNtQUVnRDBFQU5nS1FBU0FQUWdBM0E0Z0JJQThnQ1VFQmF5SUdOZ0tVQVNBUElBVWdFV29nQ1dvaUEwRUJheUlCTmdLQUFTQUJRUU54SVFVQ1FDQUpRUUJNQkVBZ0FTRUREQUVMSUE4Z0EwRUNheUlETmdLQUFTQUJNUUFBSVdBTElBOGdZRGNEaUFFZ0R5QmdRbzhCVmlJUk5nS1lBU0FQUVFkQkNDQmdRdjhBZzBML0FGRWJJZzAyQXBBQkFrQWdCVVVOQUNBUElBbEJBbXNpQWpZQ2xBRUNRQ0FKUVFKSUJFQWdBeUVIREFFTElBOGdBMEVCYXlJSE5nS0FBU0FETVFBQUlXSUxJQThnWWtLUEFWWWlFVFlDbUFFZ0R5QmlJQTJ0aGlCZ2hDSmhOd09JQVNBUFFRaEJCMEVJSUdKQy93Q0RRdjhBVVJzZ1lFS1BBVmdiSUExcUlnMDJBcEFCSUFWQkFVWUVRQ0FISVFNZ1lTRmdJQVloQ1NBQ0lRWU1BUXNnRHlBSlFRTnJJZ2cyQXBRQkFrQWdDVUVEU0FSQUlBY2hBUXdCQ3lBUElBZEJBV3NpQVRZQ2dBRWdCekVBQUNGakN5QVBJR05DandGV0loRTJBcGdCSUE4Z1l5QU5yWVlnWVlRaVlEY0RpQUVnRDBFSVFRZEJDQ0JqUXY4QWcwTC9BRkViSUdKQ2p3RllHeUFOYWlJTk5nS1FBU0FGUVFKR0JFQWdBU0VESUFJaENTQUlJUVlNQVFzZ0R5QUpRUVJySWdZMkFwUUJRZ0FoWWdKQUlBbEJCRWdFUUNBQklRTU1BUXNnRHlBQlFRRnJJZ00yQW9BQklBRXhBQUFoWWdzZ0R5QmlRbzhCVmlJUk5nS1lBU0FQSUdJZ0RhMkdJR0NFSW1BM0E0Z0JJQTlCQ0VFSFFRZ2dZa0wvQUlOQy93QlJHeUJqUW84QldCc2dEV29pRFRZQ2tBRWdDQ0VKQ3lBTlFTQk5CRUFDUUNBSlFRVk9CRUFnQTBFRGF5Z0NBQ0VISUE4Z0NVRUZhellDbEFFZ0R5QURRUVJyTmdLQUFRd0JDMEVBSVFjZ0NVRUNTQTBBUVJnaENRTkFJQThnQTBFQmF5SUJOZ0tBQVNBRExRQUFJVWtnRHlBR1FRRnJJZ0kyQXBRQklFa2dDWFFnQjNJaEJ5QUdRUUZMSVVvZ0FTRURJQWxCQ0dzaENTQUNJUVlnU2cwQUN3c2dEeUFIUWY4QmNTSUJRWThCU3pZQ21BRWdEMEVIUVFnZ0IwR0FnSUQ0QjNGQmdJQ0ErQWRHRzBFSUlCRWJJZ05CQ0VFSFFRZ2dCMEdBZ1B3RGNVR0FnUHdEUmhzZ0IwSC8vLy8vZUUwYmFpSUdRUWhCQjBFSUlBZEJnUDRCY1VHQS9nRkdHeUFIUVJCMlFmOEJjU0lKUVk4QlRSdHFJZ0pCQ0VFSFFRZ2dCMEgvQUhGQi93QkdHeUFIUVFoMlFmOEJjU0lJUVk4QlRSc2dEV3BxTmdLUUFTQVBJQWtnQTNRZ0IwRVlkbklnQ0NBR2RISWdBU0FDZEhLdElBMnRoaUJnaERjRGlBRUxRUUVMSVRFZ0dDQVNheUVmSUJaQkFXb2hMQ0FVUVFBNkFNQVFJQlJCd0JCcUlRc2dEMEdBQW1vUUtDRUNJQlZCQUVvRVFDQW1RUUZySVJNZ0ZDRURJQXNoQ0VFQUlSRWdEaUVHUVFBaERRTkFJQTBoQlNBUlFRaDBJQTlCNEFGcUVDOUIvd0J4UVFGMGNrR2cvUUJxTHdFQUlRRUNRQ0FSRFFBZ0FVRUFJQUpCQW1zaUIwRi9SaHNoQVNBQ1FRRktCRUFnQnlFQ0RBRUxJQTlCZ0FKcUVDZ2hBZ3NnRHlrRDZBRWhaQ0FQS0FMd0FTRkxJQU1nQXlnQ0FDQUJRUVIySWhoQkEzRWdBVUVDZGtFd2NYSWdJblJ5SWhZMkFnQWdBVUVGZGtFSGNTQUJRUkJ4SWg1QkJIWnlJUkVnU3lBQlFRZHhJZ2RySVEwZ1pDQUhyWWdpWUtjaENVRUFJUWNnRlNBRlFRSnlTZ1JBSUJGQkNIUWdDVUgvQUhGQkFYUnlRYUQ5QUdvdkFRQWhCd0pBSUJFTkFDQUhRUUFnQWtFQ2F5SUpRWDlHR3lFSElBSkJBVW9FUUNBSklRSU1BUXNnRDBHQUFtb1FLQ0VDQ3lBSFFRUjJRUUZ4SUFkQkJYWkJCM0Z5SVJFZ0RTQUhRUWR4SWdscklRMGdZQ0FKcllnaVlLY2hDUXNnQXlBSFFRSjBRWUFHY1NBSFFUQnhjaUFpUVFScWRDQVdjallDQUFKQUlBZEJBblpCQW5FZ0FVRURka0VCY1hJaUYwRURSdzBBUVFSQkF5QUNRUUpySWhaQmYwWWJJUmNnQWtFQlNnUkFJQlloQWd3QkN5QVBRWUFDYWhBb0lRSUxBbjhnRjBVRVFDQVBRb0dBZ0lBUU53SjRRUUFNQVFzZ0YwRUNUUVJBSUE5QkFTQUpRUWR4UWRTZEFXb3RBQUFpRmtFRmRrRi9JQlpCQW5aQkIzRWlHWFJCZjNNZ0NTQVdRUU54SWdsMmNXcEJBV29pRmlBWFFRRkdJaGNiTmdKOElBOGdGa0VCSUJjYk5nSjRJQWtnR1dvTUFRc2dDU0FKUVFkeFFkU2RBV290QUFBaUZrRURjU0laZGlFSklCZEJBMFlFUUNBV1FRVjJRUUZxSVJjZ0dVRURSZ1JBSUE4Z0NVRUJjVUVDY2pZQ2ZDQVBJQmRCZnlBV1FRSjJRUWR4SWhaMFFYOXpJQWxCQVhaeGFqWUNlQ0FXUVFScURBSUxJQThnRnlBSklBbEJCM0ZCMUowQmFpMEFBQ0lKUVFOeEloSjJJaUJCZnlBV1FRSjJRUWR4SWhaMFFYOXpjV28yQW5nZ0QwRi9JQWxCQW5aQkIzRWlGM1JCZjNNZ0lDQVdkbkVnQ1VFRmRtcEJBV28yQW53Z0ZpQVphaUFTYWlBWGFnd0JDeUFQSUFrZ0NVRUhjVUhVblFGcUxRQUFJZ2xCQTNFaUVuWWlJRUYvSUJaQkFuWkJCM0VpRjNSQmYzTnhJQlpCQlhacVFRTnFOZ0o0SUE5QmZ5QUpRUUoyUVFkeEloWjBRWDl6SUNBZ0YzWnhJQWxCQlhacVFRTnFOZ0o4SUJJZ0dXb2dGMm9nRm1vTElRa0NRQ0FzSUE4b0FuZ2lHVThFUUNBUEtBSjhJaElnTEUwTkFRc2dJUVJBUVFBaEJ5QWRRUUZCbWZZQVFRQVFEd3dIQzBFQUlRY2dIVUVCUVpuMkFFRUFFQThNQmdzZ0R5QU5JQWxyTmdMd0FTQVBJR0FnQ2EySU53UG9BU0FIUWZBQmNTQVlRUTl4Y2tIL0FVSC9BU0FGUVFScUlnMGdGV3RCQVhSMklBMGdGVXdiSWdrZ0NVSFZBSEVnSDBFQlNoc2lDVUYvYzNFRVFDQWhCRUJCQUNFSElCMUJBVUd2MmdCQkFCQVBEQWNMUVFBaEJ5QWRRUUZCcjlvQVFRQVFEd3dHQ3dKQUFrQWdIZ1JBSUE5QndBRnFFQnNoRnlBUElBOG9BdEFCSUJrZ0FVRVRkRUVmZFdvaUZtczJBdEFCSUE4Z0R5a0R5QUVnRnEySU53UElBU0FYUVg4Z0ZuUkJmM054SUFGQkNIWkJBWEVnRm5SeVFRRnlRUUpxSUJOMElCZEJIM1J5SVJZTUFRdEJBQ0VXSUFsQkFYRkZEUUVMSUFZZ0ZqWUNBQXNDUUNBQlFTQnhCRUFnRDBIQUFXb1FHeUVYSUE4Z0R5Z0MwQUVnR1NBQlFSSjBRUjkxYWlJV2F6WUMwQUVnRHlBUEtRUElBU0FXcllnM0E4Z0JJQVlnRlVFQ2RHb2dGMEYvSUJaMFFYOXpjU0FCUVFsMlFRRnhJQlowY2tFQmNpSVdRUUpxSUJOMElCZEJIM1J5TmdJQUlBaEJJQ0FXWjJzaUZpQUlMUUFBUWY4QWNTSVhJQllnRjBzYlFZQUJjam9BQUF3QkN5QUpRUUp4UlEwQUlBWWdGVUVDZEdwQkFEWUNBQXNnQmtFRWFpRVhBa0FDUUNBQlFjQUFjUVJBSUE5QndBRnFFQnNoR0NBUElBOG9BdEFCSUJrZ0FVRVJkRUVmZFdvaUZtczJBdEFCSUE4Z0R5a0R5QUVnRnEySU53UElBU0FZUVg4Z0ZuUkJmM054SUFGQkNuWkJBWEVnRm5SeVFRRnlRUUpxSUJOMElCaEJIM1J5SVJZTUFRdEJBQ0VXSUFsQkJIRkZEUUVMSUJjZ0ZqWUNBQXNnQ0VFQU9nQUJBa0FnQVVHQUFYRUVRQ0FQUWNBQmFoQWJJUmdnRHlBUEtBTFFBU0FaSUFGQkVIUkJIM1ZxSWhack5nTFFBU0FQSUE4cEE4Z0JJQmF0aURjRHlBRWdGeUFWUVFKMGFpQVlRWDhnRm5SQmYzTnhJQUZCQzNaQkFYRWdGblJ5UVFGeUlnRkJBbW9nRTNRZ0dFRWZkSEkyQWdBZ0NFR2dmeUFCWjJzNkFBRU1BUXNnQ1VFSWNVVU5BQ0FYSUJWQkFuUnFRUUEyQWdBTElBWkJDR29oQVFKQUFrQWdCMEVRY1FSQUlBOUJ3QUZxRUJzaEdTQVBJQThvQXRBQklCSWdCMEVUZEVFZmRXb2lGbXMyQXRBQklBOGdEeWtEeUFFZ0ZxMklOd1BJQVNBWlFYOGdGblJCZjNOeElBZEJDSFpCQVhFZ0ZuUnlRUUZ5UVFKcUlCTjBJQmxCSDNSeUlSY01BUXRCQUNFWElBbEJFSEZGRFFFTElBRWdGellDQUFzQ1FDQUhRU0J4QkVBZ0QwSEFBV29RR3lFWklBOGdEeWdDMEFFZ0VpQUhRUkowUVI5MWFpSVdhellDMEFFZ0R5QVBLUVBJQVNBV3JZZzNBOGdCSUFFZ0ZVRUNkR29nR1VGL0lCWjBRWDl6Y1NBSFFRbDJRUUZ4SUJaMGNrRUJjaUlCUVFKcUlCTjBJQmxCSDNSeU5nSUFJQWhCSUNBQloyc2lBU0FJTFFBQlFmOEFjU0lXSUFFZ0Zrc2JRWUFCY2pvQUFRd0JDeUFKUVNCeFJRMEFJQUVnRlVFQ2RHcEJBRFlDQUFzZ0JrRU1haUVCQWtBQ1FDQUhRY0FBY1FSQUlBOUJ3QUZxRUJzaEdTQVBJQThvQXRBQklCSWdCMEVSZEVFZmRXb2lGbXMyQXRBQklBOGdEeWtEeUFFZ0ZxMklOd1BJQVNBWlFYOGdGblJCZjNOeElBZEJDblpCQVhFZ0ZuUnlRUUZ5UVFKcUlCTjBJQmxCSDNSeUlSY01BUXRCQUNFWElBbEJ3QUJ4UlEwQkN5QUJJQmMyQWdBTElBaEJBbW9pQ0VFQU9nQUFBa0FnQjBHQUFYRUVRQ0FQUWNBQmFoQWJJUllnRHlBUEtBTFFBU0FTSUFkQkVIUkJIM1ZxSWdsck5nTFFBU0FQSUE4cEE4Z0JJQW10aURjRHlBRWdBU0FWUVFKMGFpQVdRWDhnQ1hSQmYzTnhJQWRCQzNaQkFYRWdDWFJ5UVFGeUlnRkJBbW9nRTNRZ0ZrRWZkSEkyQWdBZ0NFR2dmeUFCWjJzNkFBQU1BUXNnQ1VHQUFVa05BQ0FCSUJWQkFuUnFRUUEyQWdBTElDSkJFSE1oSWlBRElBVkJCSEZxSVFNZ0JrRVFhaUVHSUEwZ0ZVZ05BQXNMSUFwQkNIRWhPQ0FVUWJBTWFpRW9JQlJCb0FocUlTa2dGRUdRQkdvaEpTQWZRUU5PQkVBZ0ZVRURiQ0U1SUJWQkFYUWhPaUFtUVFGcklTQkJBeUFtUVFKcklnRjBJUzFCQVNBQmRDRXVJQlZCQjJwQkFYWkIvUC8vL3dkeFFRUnFJVDBnS3lBa1FYOXphaUlCUVFOMklnTkJBblFpUGtFRWFpRTdJQU5CQVdvaVAwSDgvLy8vQTNFaUhFRUNkQ0U4SUJ4QkEzUWhFaUFCUVJoSklVQkJBaUVaQTBBZ0dTRVRJQXN0QUFBaEZpQUxRUUE2QUFBZ0lrRnZjVUVDY3lFaUFrQWdGVUVBVEFSQUlCTkJBbW9oR1F3QkN5QWxJQlFnRTBFRWNSc2hFU0FUUVFKcUlSa2dEaUFUSUJWc1FRSjBhaUVJUVFBaENpQUxJUVpCQUNFTkEwQWdEU0VGSUFZdEFBRkJCWFpCQkhFZ0NpQVdRUWQyY25JaUEwRUlkQ0FQUWVBQmFoQXZRZjhBY1VFQmRISkJvSTBCYWk4QkFDRUJBa0FnQXcwQUlBRkJBQ0FDUVFKcklnTkJmMFliSVFFZ0FrRUJTZ1JBSUFNaEFnd0JDeUFQUVlBQ2FoQW9JUUlMSUE4cEErZ0JJV1VnRHlnQzhBRWhUQ0FSSUJFb0FnQWdBVUVFZGtFRGNTQUJRUUoyUVRCeGNpQWlkSElpQ1RZQ0FDQUJRY0FBY1NJcVFRVjJJQUZCZ0FGeElpZEJCblp5SVFvZ1RDQUJRUWR4SWdOcklSY2daU0FEcllnaVlLY2hEVUVBSVJnQ1FDQVZJQVZCQW5KTUJFQkJBQ0VIREFFTElBb2dCaTBBQWtFRmRrRUVjU0FHTFFBQlFRZDJjbklpQTBFSWRDQU5RZjhBY1VFQmRISkJvSTBCYWk4QkFDRUhBa0FnQXcwQUlBZEJBQ0FDUVFKcklnTkJmMFliSVFjZ0FrRUJTZ1JBSUFNaEFnd0JDeUFQUVlBQ2FoQW9JUUlMSUFkQkJYWWdCMEVHZG5KQkFuRWhDaUFYSUFkQkIzRWlBMnNoRnlCZ0lBT3RpQ0pncHlFTkN5QVJJQWRCQW5SQmdBWnhJQWRCTUhGeUlDSkJCR3AwSUFseU5nSUFRUUVoQ1VFQklRTUNRQ0FIUVFKMlFRSnhJQUZCQTNaQkFYRnlJaDVGRFFBZ0RTQU5RUWR4UWRTZEFXb3RBQUFpQTBFRGNTSU5kaUVKSUI1QkEwY0VRRUVCSUFsQmZ5QURRUUoyUVFkeEloaDBRWDl6Y1NBRFFRVjJha0VCYWlJRElCNUJBVVlpSGhzaENTQURRUUVnSGhzaEF5QU5JQmhxSVJnTUFRc2dDVUVIY1VIVW5RRnFMUUFBSWg1QkEzRWlNeUFOSUFOQkFuWkJCM0VpRzJwcUlCNUJBblpCQjNFaURXb2hHQ0FKSUROMklnbEJmeUFiZEVGL2MzRWdBMEVGZG1wQkFXb2hBMEYvSUExMFFYOXpJQWtnRzNaeElCNUJCWFpxUVFGcUlRa0xJQThnRnlBWWF6WUM4QUVnRHlCZ0lCaXRpRGNENkFFZ0FVSHdBWEVpRFNBTlFRRnJjUVJBSUFNZ0ZrSC9BSEVpRmlBR0xRQUJRZjhBY1NJWElCWWdGMHNiSWhaQkFtc2lGMEVBSUJZZ0YwOGJhaUVEQ3lBSFFmQUJjU0lYSUJkQkFXdHhCRUFnQ1NBR0xRQUJRZjhBY1NJV0lBWXRBQUpCL3dCeEloZ2dGaUFZU3hzaUZrRUNhMEVBSUJaQkFrc2JhaUVKQ3lBRElDeE5JQWtnTEUxeFJRUkFJQ0VFUUVFQUlRY2dIVUVCUWYzMkFFRUFFQThNQ1F0QkFDRUhJQjFCQVVIOTlnQkJBQkFQREFnTElBWXRBQUloRmlBR1FRQTdBQUVnRnlBTlFRUjJja0gvQVVIL0FTQUZRUVJxSWcwZ0ZXdEJBWFIySUEwZ0ZVd2JJaGRCMVFCeElCY2dHU0FmU2hzaUdFRi9jM0VFUUNBaEJFQkJBQ0VISUIxQkFVR3YyZ0JCQUJBUERBa0xRUUFoQnlBZFFRRkJyOW9BUVFBUUR3d0lDd0pBQWtBZ0FVRVFjUVJBSUE5QndBRnFFQnNoSGlBUElBOG9BdEFCSUFNZ0FVRVRkRUVmZFdvaUYyczJBdEFCSUE4Z0R5a0R5QUVnRjYySU53UElBU0FlUVg4Z0YzUkJmM054SUFGQkNIWkJBWEVnRjNSeVFRRnlRUUpxSUNCMElCNUJIM1J5SVJjTUFRdEJBQ0VYSUJoQkFYRkZEUUVMSUFnZ0Z6WUNBQXNDUUNBQlFTQnhCRUFnRDBIQUFXb1FHeUVlSUE4Z0R5Z0MwQUVnQXlBQlFSSjBRUjkxYWlJWGF6WUMwQUVnRHlBUEtRUElBU0FYcllnM0E4Z0JJQWdnRlVFQ2RHb2dIa0YvSUJkMFFYOXpjU0FCUVFsMlFRRnhJQmQwY2tFQmNpSVhRUUpxSUNCMElCNUJIM1J5TmdJQUlBWkJJQ0FYWjJzaUZ5QUdMUUFBUWY4QWNTSWVJQmNnSGtzYlFZQUJjam9BQUF3QkN5QVlRUUp4UlEwQUlBZ2dGVUVDZEdwQkFEWUNBQXNnQ0VFRWFpRWVBa0FDUUNBcUJFQWdEMEhBQVdvUUd5RWJJQThnRHlnQzBBRWdBeUFCUVJGMFFSOTFhaUlYYXpZQzBBRWdEeUFQS1FQSUFTQVhyWWczQThnQklCdEJmeUFYZEVGL2MzRWdBVUVLZGtFQmNTQVhkSEpCQVhKQkFtb2dJSFFnRzBFZmRISWhGd3dCQzBFQUlSY2dHRUVFY1VVTkFRc2dIaUFYTmdJQUN3SkFJQ2NFUUNBUFFjQUJhaEFiSVJjZ0R5QVBLQUxRQVNBRElBRkJFSFJCSDNWcUlnTnJOZ0xRQVNBUElBOHBBOGdCSUFPdGlEY0R5QUVnSGlBVlFRSjBhaUFYUVg4Z0EzUkJmM054SUFGQkMzWkJBWEVnQTNSeVFRRnlJZ0ZCQW1vZ0lIUWdGMEVmZEhJMkFnQWdCa0dnZnlBQloyczZBQUVNQVFzZ0dFRUljVVVOQUNBZUlCVkJBblJxUVFBMkFnQUxJQWhCQ0dvaEFRSkFBa0FnQjBFUWNRUkFJQTlCd0FGcUVCc2hGeUFQSUE4b0F0QUJJQWtnQjBFVGRFRWZkV29pQTJzMkF0QUJJQThnRHlrRHlBRWdBNjJJTndQSUFTQVhRWDhnQTNSQmYzTnhJQWRCQ0haQkFYRWdBM1J5UVFGeVFRSnFJQ0IwSUJkQkgzUnlJUU1NQVF0QkFDRURJQmhCRUhGRkRRRUxJQUVnQXpZQ0FBc0NRQ0FIUVNCeEJFQWdEMEhBQVdvUUd5RVhJQThnRHlnQzBBRWdDU0FIUVJKMFFSOTFhaUlEYXpZQzBBRWdEeUFQS1FQSUFTQURyWWczQThnQklBRWdGVUVDZEdvZ0YwRi9JQU4wUVg5emNTQUhRUWwyUVFGeElBTjBja0VCY2lJQlFRSnFJQ0IwSUJkQkgzUnlOZ0lBSUFaQklDQUJaMnNpQVNBR0xRQUJRZjhBY1NJRElBRWdBMHNiUVlBQmNqb0FBUXdCQ3lBWVFTQnhSUTBBSUFFZ0ZVRUNkR3BCQURZQ0FBc2dDRUVNYWlFQkFrQUNRQ0FIUWNBQWNRUkFJQTlCd0FGcUVCc2hGeUFQSUE4b0F0QUJJQWtnQjBFUmRFRWZkV29pQTJzMkF0QUJJQThnRHlrRHlBRWdBNjJJTndQSUFTQVhRWDhnQTNSQmYzTnhJQWRCQ25aQkFYRWdBM1J5UVFGeVFRSnFJQ0IwSUJkQkgzUnlJUU1NQVF0QkFDRURJQmhCd0FCeFJRMEJDeUFCSUFNMkFnQUxJQVpCQW1vaEJnSkFJQWRCZ0FGeEJFQWdEMEhBQVdvUUd5RVhJQThnRHlnQzBBRWdDU0FIUVJCMFFSOTFhaUlEYXpZQzBBRWdEeUFQS1FQSUFTQURyWWczQThnQklBRWdGVUVDZEdvZ0YwRi9JQU4wUVg5emNTQUhRUXQyUVFGeElBTjBja0VCY2lJQlFRSnFJQ0IwSUJkQkgzUnlOZ0lBSUFaQm9IOGdBV2RyT2dBQURBRUxJQmhCZ0FGSkRRQWdBU0FWUVFKMGFrRUFOZ0lBQ3lBaVFSQnpJU0lnRVNBRlFRUnhhaUVSSUFoQkVHb2hDQ0FOSUJWSURRQUxDd0pBSUF4QkFra05BQ0FUUVFKeFJRMEFJQmxCQkhFaEF3SkFBbjhDUUFKQUlERUVRQ0FVSUNVZ0F4c2hGa0VBSVJnZ0ZVRUFUQTBCSUE0Z0UwRUNheUFWYkVFQ2RHb2hFUU5BSUE5QmdBRnFFQzhoQjBFQUlRRWdGaWdDQUNJSUJFQWdFU0FZUVFKMGFpRUJRUUFoQ1VFUElRWURRQUpBSUFZZ0NIRkZEUUFnQmtHUm9zU0lBWEVpRFNBSWNRUkFJQUVnQVNnQ0FDQUhRWDl6UVFGeElDQjBjeUF1Y2pZQ0FDQUhRUUYySVFjTElBMUJBWFFnQ0hFRVFDQUJJQlZCQW5ScUlnVWdCU2dDQUNBSFFYOXpRUUZ4SUNCMGN5QXVjallDQUNBSFFRRjJJUWNMSUExQkFuUWdDSEVFUUNBQklEcEJBblJxSWdVZ0JTZ0NBQ0FIUVg5elFRRnhJQ0IwY3lBdWNqWUNBQ0FIUVFGMklRY0xJQTFCQTNRZ0NIRkZEUUFnQVNBNVFRSjBhaUlOSUEwb0FnQWdCMEYvYzBFQmNTQWdkSE1nTG5JMkFnQWdCMEVCZGlFSEN5QUJRUVJxSVFFZ0JrRUVkQ0VHSUFsQkFXb2lDVUVJUncwQUN5QUlhU0VCQ3lBV1FRUnFJUllnRHlBUEtBS1FBU0FCYXpZQ2tBRWdEeUFQS1FPSUFTQUJyWWczQTRnQklCaEJDR29pR0NBVlNBMEFDd3NnS1NBb0lBTWJJUVVnRkNBbElBTWJJUllnQTBVaEdDQVZRUUJNRFFOQkFDRURJRUFOQVNBRklCWWdPMnBKSUJZZ0JTQTdhaUlIU1hFTkFVRUFJQVVpQVNBV0lnWWdQbXBCQ0dwSklBWkJCR29nQjBseERRSWFJQVlnUEdvaEJpQUJJRHhxSVFIOURBQUFBQUFBQUFBQUFBQUFBQUFBQUFBaFhrRUFJUWNEUUNBRklBZEJBblFpQTJvaUNTQURJQlpxSWdQOUFBSUFJbDlCQlAydEFTQmZRUVQ5cXdFZ1hpQmYvUTBNRFE0UEVCRVNFeFFWRmhjWUdSb2JRUno5clFIOVVQMVFJRi85VUNKZS9Rc0NBQ0FKSUY0Z0EvMEFBZ1JCSFAyckFmMVFJbDVCQWYydEFmME1kM2QzZDNkM2QzZDNkM2QzZDNkM2QvMU9JRjVCQWYyckFmME03dTd1N3U3dTd1N3U3dTd1N3U3dTd2MU8vVkFnWHYxUUlGLzlULzBMQWdBZ1h5RmVJQWRCQkdvaUJ5QWNSdzBBQ3lBY0lEOUdEUU1nRWlFRElGNzlHd01NQWdzZ0EwVWhHQ0FwSUNnZ0F4c2hCUXdDQ3lBRklRRWdGaUVHUVFBTElRY0RRQ0FIUVJ4MklRa2dBU0FHS0FJQUlnZEJCSFlnQ1NBSFFRUjBjbklnQjNJaUNUWUNBQ0FCSUFrZ0JpZ0NCRUVjZEhJaUNVRUJka0gzN3QyN0IzRWdDVUVCZEVIdTNidjNmbkZ5SUFseUlBZEJmM054TmdJQUlBRkJCR29oQVNBR1FRUnFJUVlnQTBFSWFpSURJQlZJRFFBTEN5QVRRUVpKRFFCQkFDRUpRUUFoRVNBV0lRRWdLU0FvSUJnYkloc2hCeUFVSUNVZ0dCc2lGeUVHQWtBZ0ZVRUFUQ0lORFFBRFFDQUJRUVJxSVFNZ0J5Z0NBQ0VJSUFFb0FnQWhBU0FISURnRWZ5QUlCU0FCUVFSMElCRkJISFp5SUFGQkJIWnlJQU1vQWdCQkhIUnlJQUZ5UVFOMFFZaVJvc1I0Y1NBSWNnc2dCaWdDQUVGL2MzRTJBZ0FnQmtFRWFpRUdJQWRCQkdvaEJ5QUJJUkVnQXlFQklBbEJDR29pQ1NBVlNBMEFDeUFORFFBZ0RpQVRRUVpySUJWc1FRSjBhaUZCUVFBaEhpQVhJUkVEUUVFQUlRTWdHeWdDQUNJQkJFQWdGU0FlYXlGQ1FRQWhCMEVBSVFvRFFDQUhJVTBnRDBHZ0FXb1FHeUVIQWtBZ0NpQUtRUVJxSWdZZ1FpQUdJQjVxSUJWSUd5SXpUaUpEQkVCQkFDRUdEQUVMSUJFb0FnQkJmM01oS2lCQklBb2dIbkpCQW5ScUlSaEJBQ0VHUVE4Z0NpSUpRUUowSWtSMElnMGhDQU5BQWtBZ0FTQUljVVVOQUNBSVFaR2l4SWdCY1NJbklBRnhCRUFnQjBFQmNRUkFJQU1nSjNJaEEwRXlJQWxCQW5SMElDcHhJQUZ5SVFFTElBZEJBWFloQnlBR1FRRnFJUVlMSUFFZ0owRUJkQ0kwY1FSQUlBZEJBWEVFUUNBRElEUnlJUU1nQVVIMEFDQUpRUUowZENBcWNYSWhBUXNnQjBFQmRpRUhJQVpCQVdvaEJnc2dBU0FuUVFKMElqUnhCRUFnQjBFQmNRUkFJQU1nTkhJaEF5QUJRZWdCSUFsQkFuUjBJQ3B4Y2lFQkN5QUhRUUYySVFjZ0JrRUJhaUVHQ3lBQklDZEJBM1FpSjNGRkRRQWdCMEVCY1FSQUlBTWdKM0loQXlBQlFjQUJJQWxCQW5SMElDcHhjaUVCQ3lBR1FRRnFJUVlnQjBFQmRpRUhDeUFJUVFSMElRZ2dDVUVCYWlJSklETklEUUFMSUFNZ1JIWkIvLzhEY1VVTkFDQkREUUFEUUFKQUlBTWdEWEZGRFFBZ0RVR1Jvc1NJQVhFaUNTQURjUVJBSUJnZ0dDZ0NBQ0FIUVI5MGNpQXRjallDQUNBSFFRRjJJUWNnQmtFQmFpRUdDeUFKUVFGMElBTnhCRUFnR0NBVlFRSjBhaUlJSUFnb0FnQWdCMEVmZEhJZ0xYSTJBZ0FnQjBFQmRpRUhJQVpCQVdvaEJnc2dDVUVDZENBRGNRUkFJQmdnT2tFQ2RHb2lDQ0FJS0FJQUlBZEJIM1J5SUMxeU5nSUFJQWRCQVhZaEJ5QUdRUUZxSVFZTElBbEJBM1FnQTNGRkRRQWdHQ0E1UVFKMGFpSUpJQWtvQWdBZ0IwRWZkSElnTFhJMkFnQWdCa0VCYWlFR0lBZEJBWFloQndzZ0RVRUVkQ0VOSUJoQkJHb2hHQ0FLUVFGcUlnb2dNMGdOQUFzTElBOGdEeWdDc0FFZ0JtczJBckFCSUE4Z0R5a0RxQUVnQnEySU53T29BVUVCSVFkQkJDRUtJRTFCQVhGRkRRQUxJQnNnR3lnQ0JDQURRUnQyUVE1eElBTkJIWFp5SUFOQkhIWnlJQkVvQWdSQmYzTnhjallDQkFzZ0VTZ0NBQ0FEY2lJRFFRTjJRWkdpeElnQmNTSUJRUVIySUFGQkJIUnlJQUZ5SVFZZ0hnUkFJQVZCQkdzaUJ5QUhLQUlBSUJaQkJHc29BZ0JCZjNNZ0FVRWNkSEZ5TmdJQUN5QUZJQVVvQWdBZ0JpQVdLQUlBUVg5emNYSTJBZ0FnQlNBRktBSUVJQllvQWdSQmYzTWdBMEVmZG5GeU5nSUVJQnRCQkdvaEd5QVJRUVJxSVJFZ0JVRUVhaUVGSUJaQkJHb2hGaUFlUVFocUloNGdGVWdOQUFzTElCZEJBQ0E5RUJVYUN5QVpJQjlJRFFBTEN3SkFJQXhCQWtrTkFBSkFJQjlCQTNGQkFXc2lGa0VDU1NBeGNRUkFJQlZCQUV3TkFVRUJJQ1pCQW10MElRSWdEaUFmUWZ6Ly93ZHhJQlZzUVFKMGFpRVJJQ1VnRkNBZlFRUnhHeUVGSUNaQkFXc2hDRUVBSVFvZ0ZVRU1iQ0VNSUJWQkEzUWhDd05BSUE5QmdBRnFFQzhoQjBFQUlRRWdCU2dDQUNJREJFQWdFU0FLUVFKMGFpRUJRUThoQmtFQUlRa0RRQUpBSUFNZ0JuRkZEUUFnQmtHUm9zU0lBWEVpRFNBRGNRUkFJQUVnQVNnQ0FDQUhRWDl6UVFGeElBaDBjeUFDY2pZQ0FDQUhRUUYySVFjTElBMUJBWFFnQTNFRVFDQUJJQlZCQW5ScUloMGdIU2dDQUNBSFFYOXpRUUZ4SUFoMGN5QUNjallDQUNBSFFRRjJJUWNMSUExQkFuUWdBM0VFUUNBQklBdHFJaDBnSFNnQ0FDQUhRWDl6UVFGeElBaDBjeUFDY2pZQ0FDQUhRUUYySVFjTElBMUJBM1FnQTNGRkRRQWdBU0FNYWlJTklBMG9BZ0FnQjBGL2MwRUJjU0FJZEhNZ0FuSTJBZ0FnQjBFQmRpRUhDeUFCUVFScUlRRWdCa0VFZENFR0lBbEJBV29pQ1VFSVJ3MEFDeUFEYVNFQkN5QUZRUVJxSVFVZ0R5QVBLQUtRQVNBQmF6WUNrQUVnRHlBUEtRT0lBU0FCcllnM0E0Z0JJQXBCQ0dvaUNpQVZTQTBBQ3dzZ0ZrRUJTdzBBSUJWQkFFd05BQ0FsSUJRZ0gwRUVjU0lCR3lFSklDZ2dLU0FCR3lFQ1FRQWhBd0ovQWtBZ0t5QWtRWDl6YWlJQlFUaEpEUUFnQWlBSklBRkJBWFpCL1AvLy93ZHhJZ1pCQkdvaUIycEpJQWtnQWlBSGFpSUhTWEVOQUNBQ0lBWWdDV3BCQ0dwSklBbEJCR29nQjBseERRQWdBVUVEZGtFQmFpSU5RZnovLy84RGNTSUlRUU4wSVFNZ0NTQUlRUUowSWdGcUlRWWdBU0FDYWlFQi9Rd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUlWNUJBQ0VIQTBBZ0FpQUhRUUowSWhacUloRWdDU0FXYWlJVy9RQUNBQ0pmUVFUOXJRRWdYMEVFL2FzQklGNGdYLzBOREEwT0R4QVJFaE1VRlJZWEdCa2FHMEVjL2EwQi9WRDlVQ0JmL1ZBaVh2MExBZ0FnRVNCZUlCYjlBQUlFUVJ6OXF3SDlVQ0plUVFIOXJRSDlESGQzZDNkM2QzZDNkM2QzZDNkM2QzZjlUaUJlUVFIOXF3SDlETzd1N3U3dTd1N3U3dTd1N3U3dTd1NzlUdjFRSUY3OVVDQmYvVS85Q3dJQUlGOGhYaUFIUVFScUlnY2dDRWNOQUFzZ0NDQU5SZzBDSUY3OUd3TU1BUXNnQWlFQklBa2hCa0VBQ3lFSEEwQWdCMEVjZGlFSklBRWdCaWdDQUNJSFFRUjJJQWtnQjBFRWRISnlJQWR5SWdrMkFnQWdBU0FKSUFZb0FnUkJISFJ5SWdsQkFYWkI5KzdkdXdkeElBbEJBWFJCN3QyNzkzNXhjaUFKY2lBSFFYOXpjVFlDQUNBQlFRUnFJUUVnQmtFRWFpRUdJQU5CQ0dvaUF5QVZTQTBBQ3dzZ0h5QWZRUUZxUVFOeGEwRURhMEVBSUI5QkJrb2JJaEVnSDA0TkFFRURJQ1pCQW10MElSa2dLeUFrUVg5emFpSUJRUU4ySWdOQkFuUWlLMEVFYWlFZElBTkJBV29pQTBIOC8vLy9BM0VpRWtFQ2RDRWhJQkpCQTNRaEZpQVZRUXhzSVN3Z0ZVRURkQ0V0SUFGQkdFa2hKaUFESUJKR0lSc0RRQUpBQWtBQ1FBSkFBbjhDUUNBZklCRnJJZ0ZCQVdzaUEwRURUd1JBUVg4aEZ5QUJRUVZJRFFVZ0ZVRUFUQTBHSUNVZ0ZDQVJRUVJ4SWdFYklRSWdLQ0FwSUFFYklRa2dPQVJBUVFBaEJpQW1EUVFnQWlBSklCMXFTU0FDSUIxcUlBbExjUTBFSUFJZ0lXb2hBU0FKSUNGcUlRY0RRQ0FKSUFaQkFuUWlBMm9pQ0NBSS9RQUNBQ0FDSUFOcS9RQUNBUDFQL1FzQ0FDQUdRUVJxSWdZZ0VrY05BQXNnRmlFR0lCc05CZ3dGQ3lBVUlDVWdBUnNoRFVFQUlRTWdKZzBCSUFrZ0RTQWRha2tnRFNBSklCMXFJZ0ZKY1EwQklBa2dEU0FyYWtFSWFra2dEVUVFYWlBQlNYRU5BU0FKSUFJZ0hXcEpJQUVnQWt0eERRRWdBaUFoYWlFSUlBa2dJV29oQVNBTklDRnFJUWY5REFBQUFBQUFBQUFBQUFBQUFBQUFBQUFoWGtFQUlRWURRQ0FKSUFaQkFuUWlBMm9pQlNBRElBMXFJZ3o5QUFJQUlsOUJCUDJ0QVNCZlFRVDlxd0VnWGlCZi9RME1EUTRQRUJFU0V4UVZGaGNZR1JvYlFSejlyUUg5VVAxUUlBejlBQUlFUVJ6OXF3SDlVQ0JmL1ZCQkEvMnJBZjBNaUlpSWlJaUlpSWlJaUlpSWlJaUlpUDFPSUFYOUFBSUEvVkFnQWlBRGF2MEFBZ0Q5VC8wTEFnQWdYeUZlSUFaQkJHb2lCaUFTUncwQUN5QWJEUVVnRmlFRElGNzlHd01NQWdzZ0EwRUNkRUhjblFGcUtBSUFJUmNNQkFzZ0RTRUhJQWtoQVNBQ0lRaEJBQXNoQmdOQUlBWkJISFloQ1NBQklBRW9BZ0FnQnlnQ0FDSUdRUVIySUFrZ0JrRUVkSEp5SUFjb0FnUkJISFJ5SUFaeVFRTjBRWWlSb3NSNGNYSWdDQ2dDQUVGL2MzRTJBZ0FnQ0VFRWFpRUlJQUZCQkdvaEFTQUhRUVJxSVFjZ0EwRUlhaUlESUJWSURRQUxEQUlMSUFraEJ5QUNJUUVMQTBBZ0J5QUhLQUlBSUFFb0FnQkJmM054TmdJQUlBRkJCR29oQVNBSFFRUnFJUWNnQmtFSWFpSUdJQlZJRFFBTEN5QVZRUUJNRFFBZ0pTQVVJQkZCQkhFaUFSc2hDaUFvSUNrZ0FSc2hBaUFVSUNVZ0FSc2hFeUFwSUNnZ0FSc2hIaUFPSUJFZ0ZXeEJBblJxSVM1QkFDRUZBMEJCQUNFRElBSW9BZ0FnRjNFaUFRUkFJQlVnQldzaEtrRUFJUWRCQUNFTkEwQWdCeUZPSUE5Qm9BRnFFQnNoQndKQUlBMGdEVUVFYWlJR0lDb2dCU0FHYWlBVlNCc2lKRTRpSndSQVFRQWhCZ3dCQ3lBWElBb29BZ0JCZjNOeElSZ2dMaUFGSUExeVFRSjBhaUVMUVFBaEJrRVBJQTBpQ1VFQ2RDSWNkQ0lnSVFnRFFBSkFJQUVnQ0hGRkRRQWdDRUdSb3NTSUFYRWlJaUFCY1FSQUlBZEJBWEVFUUNBRElDSnlJUU5CTWlBSlFRSjBkQ0FZY1NBQmNpRUJDeUFIUVFGMklRY2dCa0VCYWlFR0N5QUJJQ0pCQVhRaU1YRUVRQ0FIUVFGeEJFQWdBeUF4Y2lFRElBRkI5QUFnQ1VFQ2RIUWdHSEZ5SVFFTElBZEJBWFloQnlBR1FRRnFJUVlMSUFFZ0lrRUNkQ0l4Y1FSQUlBZEJBWEVFUUNBRElERnlJUU1nQVVIb0FTQUpRUUowZENBWWNYSWhBUXNnQjBFQmRpRUhJQVpCQVdvaEJnc2dBU0FpUVFOMElpSnhSUTBBSUFkQkFYRUVRQ0FESUNKeUlRTWdBVUhBQVNBSlFRSjBkQ0FZY1hJaEFRc2dCa0VCYWlFR0lBZEJBWFloQndzZ0NFRUVkQ0VJSUFsQkFXb2lDU0FrU0EwQUN5QURJQngyUWYvL0EzRkZEUUFnSncwQUEwQUNRQ0FESUNCeFJRMEFJQ0JCa2FMRWlBRnhJZ2tnQTNFRVFDQUxJQXNvQWdBZ0IwRWZkSElnR1hJMkFnQWdCMEVCZGlFSElBWkJBV29oQmdzZ0NVRUJkQ0FEY1FSQUlBc2dGVUVDZEdvaUNDQUlLQUlBSUFkQkgzUnlJQmx5TmdJQUlBZEJBWFloQnlBR1FRRnFJUVlMSUFsQkFuUWdBM0VFUUNBTElDMXFJZ2dnQ0NnQ0FDQUhRUjkwY2lBWmNqWUNBQ0FIUVFGMklRY2dCa0VCYWlFR0N5QUpRUU4wSUFOeFJRMEFJQXNnTEdvaUNTQUpLQUlBSUFkQkgzUnlJQmx5TmdJQUlBWkJBV29oQmlBSFFRRjJJUWNMSUNCQkJIUWhJQ0FMUVFScUlRc2dEVUVCYWlJTklDUklEUUFMQ3lBUElBOG9BckFCSUFack5nS3dBU0FQSUE4cEE2Z0JJQWF0aURjRHFBRkJBU0VIUVFRaERTQk9RUUZ4UlEwQUN5QUNJQUlvQWdRZ0EwRWJka0VPY1NBRFFSMTJjaUFEUVJ4MmNpQUtLQUlFUVg5emNYSTJBZ1FMSUFvb0FnQWdBM0lpQTBFRGRrR1Jvc1NJQVhFaUFVRUVkaUFCUVFSMGNpQUJjaUVHSUFVRVFDQWVRUVJySWdjZ0J5Z0NBQ0FUUVFScktBSUFRWDl6SUFGQkhIUnhjallDQUFzZ0hpQWVLQUlBSUFZZ0V5Z0NBRUYvYzNGeU5nSUFJQjRnSGlnQ0JDQVRLQUlFUVg5eklBTkJIM1p4Y2pZQ0JDQUNRUVJxSVFJZ0NrRUVhaUVLSUI1QkJHb2hIaUFUUVFScUlSTWdCVUVJYWlJRklCVklEUUFMQ3lBUlFRUnFJaEVnSDBnTkFBc0xRUUVoQnlBZlFRQk1EUU1nRlVFQVRBMERJQlZCL1AvLy93ZHhJZ1pCQW5RaEFpQVZRUVJKSVFoQkFDRUpBMEFnRGlBSklCVnNRUUowYWlFREFrQUNRQ0FJQkVBZ0F5RUhRUUFoQVF3QkN5QUNJQU5xSVFkQkFDRUJBMEFnQXlBQlFRSjBhaUlOSUEzOUFBSUFJbDc5RFAvLy8zLy8vLzkvLy8vL2YvLy8vMy85VGlKZi9hRUJJRjhnWHYwTUFBQUFBQUFBQUFBQUFBQUFBQUFBQVAwNS9WTDlDd0lBSUFGQkJHb2lBU0FHUncwQUN5QUdJZ0VnRlVZTkFRc0RRQ0FIUVFBZ0J5Z0NBQ0lEUWYvLy8vOEhjU0lOYXlBTklBTkJBRWdiTmdJQUlBZEJCR29oQnlBQlFRRnFJZ0VnRlVjTkFBc0xRUUVoQnlBSlFRRnFJZ2tnSDBjTkFBc01Bd3NnSVVVTkFDQVBJQm9vQWhnMkFqUWdEeUFXTmdJd0lCMUJBVUhjeHdBZ0QwRXdhaEFQREFFTElBOGdBVFlDRkNBUElCWTJBaEFnSFVFQlFkekhBQ0FQUVJCcUVBOUJBQ0VIREFFTFFRQWhCd3NnRDBHd0Ftb2tBQ0FIRFFFTUF3c2dCQ0FCUVFsMFFkQ3BBV28yQW13Q2Z5QUVLQUowSVFFQ1FBSkFJQm9vQWhBZ0dpZ0NDR3NpQlNBYUtBSVVJQm9vQWd4cklnbHNJZ01nQkNnQ2hBRkxCRUFnQVJBUUlBUWdBMEVDZEJBWUlnRTJBblJCQUNBQlJRMERHaUFFSUFNMkFvUUJEQUVMSUFGRkRRRUxJQUZCQUNBRFFRSjBFQlVhQ3lBRUtBSjRJUUVDUUNBRlFRSnFJZ1lnQ1VFRGFrRUNkaUlNUVFKcWJDSURJQVFvQW9nQlRRUkFJQU5CQW5RaENBd0JDeUFCRUJBZ0JDQURRUUowSWdnUUdDSUJOZ0o0SUFFTkFFRUFEQUVMSUFRZ0F6WUNpQUVnQVVFQUlBZ1FGUm9DUUNBR1JRMEFJQVFvQW5naUJ5RUJBa0FnQmtFRVR3UkFJQWNnQmtGOGNTSU5RUUowYWlFQlFRQWhDQU5BSUFjZ0NFRUNkR3I5REFBQUlFa0FBQ0JKQUFBZ1NRQUFJRW45Q3dJQUlBaEJCR29pQ0NBTlJ3MEFDeUFHSUExR0RRRUxBMEFnQVVHQWdJREpCRFlDQUNBQlFRUnFJUUVnRFVFQmFpSU5JQVpIRFFBTEN5QUhJQXhCQVdvZ0JteEJBblJxSVFOQkFDRU5Ba0FDUUNBR1FRUkpCRUFnQXlFQkRBRUxJQU1nQmtGOGNTSU5RUUowYWlFQlFRQWhDQU5BSUFNZ0NFRUNkR3I5REFBQUlFa0FBQ0JKQUFBZ1NRQUFJRW45Q3dJQUlBaEJCR29pQ0NBTlJ3MEFDeUFHSUExR0RRRUxBMEFnQVVHQWdJREpCRFlDQUNBQlFRUnFJUUVnRFVFQmFpSU5JQVpIRFFBTEN5QUpRUU54SWdGRkRRQWdCa1VOQUVHQWdJRElCRUdBZ0lEQUJFR0FnSUNBQkNBQlFRSkdHeUFCUVFGR0d5RUxJQWNnQmlBTWJFRUNkR29oQTBFQUlRMENRQ0FHUVFSSkJFQWdBeUVCREFFTElBTWdCa0Y4Y1NJTlFRSjBhaUVCSUF2OUVTRmZRUUFoQ0FOQUlBTWdDRUVDZEdvZ1gvMExBZ0FnQ0VFRWFpSUlJQTFIRFFBTElBWWdEVVlOQVFzRFFDQUJJQXMyQWdBZ0FVRUVhaUVCSUExQkFXb2lEU0FHUncwQUN3c2dCQ0FKTmdLQUFTQUVJQVUyQW54QkFRdEZEUUlnR2lnQ0hDQVJhaUlaUVI5T0JFQWdJVVVOQWlBaklCazJBaEFnSFVFQ1FkWEJBQ0FqUVJCcUVBOE1Bd3NnQkJCYVFRQWhBU0FFUWJDcEFUWUNaQ0FFUWRDZUFUWUNZQ0FFUWZDZUFUWUNIQUpBQWtBQ1FBSkFJQm9vQWpRaUIwRUJTdzBBSUFRb0FwQUJSUTBDSUFjTkFBd0JDeUFhS0FJRUlRTWdCMEVFVHdSQUlBZEJmSEVoQWtFQUlRWURRQ0FESUFaQkEzUnFJZ0ZCSEdvZ0FVRVVhaUFCUVF4cUlBSDlDUUlFL1ZZQ0FBSDlWZ0lBQXYxV0FnQURJRjc5cmdFaFhpQUdRUVJxSWdZZ0FrY05BQXNnWGlCZUlGNzlEUWdKQ2dzTURRNFBBQUVDQXdBQkFnUDlyZ0VpWGlCZUlGNzlEUVFGQmdjQUFRSURBQUVDQXdBQkFnUDlyZ0g5R3dBaEFTQUNJQWRHRFFFTEEwQWdBeUFDUVFOMGFpZ0NCQ0FCYWlFQklBSkJBV29pQWlBSFJ3MEFDd3NnQVVFQ2FpSURJQVFvQXBnQlN3UkFJQVFvQXBRQklBTVFGeUlHUlEwRklBUWdCallDbEFFZ0FTQUdha0VBT3dBQUlBUWdBellDbUFFZ0dpZ0NOQ0VIQ3lBRUtBS1VBU0VlSUFkRkRRRWdHaWdDQkNFR1FRQWhBa0VBSVFFRFFDQUNJQjVxSUFZZ0FVRURkQ0lEYWlJR0tBSUFJQVlvQWdRUUVob2dHaWdDQkNJR0lBTnFLQUlFSUFKcUlRSWdBVUVCYWlJQklCb29BalJKRFFBTERBRUxJQWRCQVVjTkFTQWFLQUlFS0FJQUlSNExJQm9vQWp3aUFRUkFJQVFvQW5RaExDQUVJQUUyQW5RTElCb29BaXdFUUNBV1FRaHhJU1VnQkVFY2FpRVBJQlpCQVhFaExTQVdRUUp4UlNFdVFRSWhId05BSUI0Z0tHb2hBU0FhS0FJQUlDbEJHR3hxSWlBb0FnQWhBd0pBSUMwZ0gwRUNTU0FaSUJvb0FoeEJCR3RNY1hFaUlnUkFJQVFnQVRZQ0ZDQUVJQUVnQTJvaUF6WUNHQ0FFSUFNdkFBQTdBWEFnQTBIL0FUb0FBQ0FFS0FJWVFmOEJPZ0FCSUFSQkFEWUNDQ0FFUVFBMkFnQWdCQ0FCTmdJUURBRUxJQVFnQVRZQ0ZDQUVJQUVnQTJvaUJqWUNHQ0FFSUFZdkFBQTdBWEFnQmtIL0FUb0FBQ0FFS0FJWVFmOEJPZ0FCSUFRZ0JFRWNhallDYUNBRUlBRTJBaEFnQkVFQU5nSU1JQVFnQXdSL0lBRXRBQUJCRUhRRlFZQ0EvQWNMSWdNMkFnQkJBU0VHSUFGQkFXb2hDU0FCTFFBQklRY0NmeUFCTFFBQVFmOEJSZ1JBSUFkQmtBRlBCRUFnQkVFQk5nSU1JQU5CZ1A0RGNnd0NDeUFFSUFrMkFoQkJBQ0VHSUFkQkNYUWdBMm9NQVFzZ0JDQUpOZ0lRSUFkQkNIUWdBM0lMSVFFZ0JDQUdOZ0lJSUFSQmdJQUNOZ0lFSUFRZ0FVRUhkRFlDQUFzZ0lDZ0NBQ0VxQWtBZ0dVRUFUQTBBSUNBb0FnaEZEUUFnSWlBdWNpRW5RUUFoSmdOQUFrQUNRQUpBQWtBQ1FDQWZRUUZyRGdJQkFnQUxJQ0lFUUVFQklCbDBJZ0ZCQVhZZ0FYSWhFU0FFS0FKOElnVkJBblFpRFNBRUtBSjRha0VNYWlFQklBUW9BblFoQmtFQUlRZ2dCQ2dDZ0FFaUEwRUVUd1JBSUFWRkRRVWdCVUVEYkNFQ0lBVkJBWFFoREVFQUlCRnJJUWtEUUNBTVFRSjBJUXRCQUNFREEwQUNRQ0FCSWdjb0FnQWlBVVVOQUFKQUlBRkJrSUNBQVhFTkFDQUJRZThEY1VVTkFDQUVLQUlBSVFFQ1FDQUVLQUlJSWhBTkFDQUJRZjhCUmlFS0lBUW9BaEFpRUMwQUFDRUJBa0FnQ2tVRVFDQUVJQUUyQWdBZ0JDQVFRUUZxTmdJUURBRUxJQUZCandGTkJFQWdCQ0FCTmdJQUlBUWdFRUVCYWpZQ0VFRUhJUkFNQWd0Qi93RWhBU0FFUWY4Qk5nSUFDMEVJSVJBTElBUWdFRUVCYXlJUU5nSUlBa0FnQVNBUWRrRUJjVVVOQUFKQUlCQU5BQ0FCUWY4QlJpRUtJQVFvQWhBaUVDMEFBQ0VCQWtBZ0NrVUVRQ0FFSUFFMkFnQWdCQ0FRUVFGcU5nSVFEQUVMSUFGQmp3Rk5CRUFnQkNBQk5nSUFJQVFnRUVFQmFqWUNFRUVISVJBTUFndEIvd0VoQVNBRVFmOEJOZ0lBQzBFSUlSQUxJQVFnRUVFQmF5SVFOZ0lJSUFZZ0NTQVJJQUVnRUhaQkFYRWlFQnMyQWdBZ0JDZ0NmQ0VCSUFkQkJHc2lDaUFLS0FJQVFTQnlOZ0lBSUFjZ0J5Z0NCRUVJY2pZQ0JDQUhJQWNvQWdBZ0VFRVRkSEpCRUhJMkFnQWdKUTBBSUFkQmZpQUJhMEVDZEdvaUFTQUJLQUlFUVlDQUFuSTJBZ1FnQVNBQktBSUFJQkJCSDNSeVFZQ0FCSEkyQWdBZ0FVRUVheUlCSUFFb0FnQkJnSUFJY2pZQ0FBc2dCeUFIS0FJQVFZQ0FnQUZ5SWdFMkFnQUxBa0FnQVVHQWdZQUljUTBBSUFGQitCNXhSUTBBSUFRb0FnQWhBUUpBSUFRb0FnZ2lFQTBBSUFGQi93RkdJUW9nQkNnQ0VDSVFMUUFBSVFFQ1FDQUtSUVJBSUFRZ0FUWUNBQ0FFSUJCQkFXbzJBaEFNQVFzZ0FVR1BBVTBFUUNBRUlBRTJBZ0FnQkNBUVFRRnFOZ0lRUVFjaEVBd0NDMEgvQVNFQklBUkIvd0UyQWdBTFFRZ2hFQXNnQkNBUVFRRnJJaEEyQWdnZ0J3Si9JQUVnRUhaQkFYRkZCRUFnQnlnQ0FBd0JDd0pBSUJBTkFDQUJRZjhCUmlFS0lBUW9BaEFpRUMwQUFDRUJBa0FnQ2tVRVFDQUVJQUUyQWdBZ0JDQVFRUUZxTmdJUURBRUxJQUZCandGTkJFQWdCQ0FCTmdJQUlBUWdFRUVCYWpZQ0VFRUhJUkFNQWd0Qi93RWhBU0FFUWY4Qk5nSUFDMEVJSVJBTElBUWdFRUVCYXlJUU5nSUlJQVlnRFdvZ0NTQVJJQUVnRUhaQkFYRWlBUnMyQWdBZ0IwRUVheUlRSUJBb0FnQkJnQUp5TmdJQUlBY2dCeWdDQkVIQUFISTJBZ1FnQnlnQ0FDQUJRUlowY2tHQUFYSUxRWUNBZ0FoeUlnRTJBZ0FMQWtBZ0FVR0FpSURBQUhFTkFDQUJRY0QzQVhGRkRRQWdCQ2dDQUNFQkFrQWdCQ2dDQ0NJUURRQWdBVUgvQVVZaENpQUVLQUlRSWhBdEFBQWhBUUpBSUFwRkJFQWdCQ0FCTmdJQUlBUWdFRUVCYWpZQ0VBd0JDeUFCUVk4QlRRUkFJQVFnQVRZQ0FDQUVJQkJCQVdvMkFoQkJCeUVRREFJTFFmOEJJUUVnQkVIL0FUWUNBQXRCQ0NFUUN5QUVJQkJCQVdzaUVEWUNDQ0FIQW44Z0FTQVFka0VCY1VVRVFDQUhLQUlBREFFTEFrQWdFQTBBSUFGQi93RkdJUW9nQkNnQ0VDSVFMUUFBSVFFQ1FDQUtSUVJBSUFRZ0FUWUNBQ0FFSUJCQkFXbzJBaEFNQVFzZ0FVR1BBVTBFUUNBRUlBRTJBZ0FnQkNBUVFRRnFOZ0lRUVFjaEVBd0NDMEgvQVNFQklBUkIvd0UyQWdBTFFRZ2hFQXNnQkNBUVFRRnJJaEEyQWdnZ0JpQUxhaUFKSUJFZ0FTQVFka0VCY1NJQkd6WUNBQ0FIUVFSckloQWdFQ2dDQUVHQUVISTJBZ0FnQnlBSEtBSUVRWUFFY2pZQ0JDQUhLQUlBSUFGQkdYUnlRWUFJY2d0QmdJQ0F3QUJ5SWdFMkFnQUxJQUZCZ01DQWdBUnhEUUFnQVVHQXZBOXhSUTBBSUFRb0FnQWhBUUpBSUFRb0FnZ2lFQTBBSUFGQi93RkdJUW9nQkNnQ0VDSVFMUUFBSVFFQ1FDQUtSUVJBSUFRZ0FUWUNBQ0FFSUJCQkFXbzJBaEFNQVFzZ0FVR1BBVTBFUUNBRUlBRTJBZ0FnQkNBUVFRRnFOZ0lRUVFjaEVBd0NDMEgvQVNFQklBUkIvd0UyQWdBTFFRZ2hFQXNnQkNBUVFRRnJJaEEyQWdnZ0FTQVFka0VCY1FSQUlBWWdBa0VDZEdvaFR3SkFJQkFOQUNBQlFmOEJSaUVVSUFRb0FoQWlFQzBBQUNFQkFrQWdGRVVFUUNBRUlBRTJBZ0FnQkNBUVFRRnFOZ0lRREFFTElBRkJqd0ZOQkVBZ0JDQUJOZ0lBSUFRZ0VFRUJhallDRUVFSElSQU1BZ3RCL3dFaEFTQUVRZjhCTmdJQUMwRUlJUkFMSUFRZ0VFRUJheUlRTmdJSUlFOGdDU0FSSUFFZ0VIWkJBWEVpRUJzMkFnQWdCQ2dDZkNFQklBZEJCR3NpQ2lBS0tBSUFRWUNBQVhJMkFnQWdCeUFIS0FJRVFZQWdjallDQkNBSElBY29BZ0FnRUVFY2RISkJnTUFBY2pZQ0FDQUhJQUZCQW5ScUlnRWdBU2dDQkVFRWNqWUNCQ0FCSUFFb0FneEJBWEkyQWd3Z0FTQUJLQUlJSUJCQkVuUnlRUUp5TmdJSUN5QUhJQWNvQWdCQmdJQ0FnQVJ5TmdJQUN5QUdRUVJxSVFZZ0IwRUVhaUVCSUFOQkFXb2lBeUFGUncwQUN5QUhRUXhxSVFFZ0JpQUNRUUowYWlFR0lBaEJCR29pQ0NBRUtBS0FBU0lEUVh4eFNRMEFDd3NnQXlBSVRRMERJQVZGRFFOQkFDRVRRUUFnRVdzaEN5QURJUkFEUUFKQUlBZ2dFRVlFUUNBSUlSQU1BUXNnQVVFRWF5RU1JQUVvQWdBaERVRUFJUUlEUUFKQUlBMGdBa0VEYkNJSGRpSUpRWkNBZ0FGeERRQWdDVUh2QTNGRkRRQWdCQ2dDQUNFREFrQWdCQ2dDQ0NJSkRRQWdBMEgvQVVjaEVDQUVLQUlRSWdrdEFBQWhBd0pBSUJCRkJFQWdBMEdRQVU4RVFFSC9BU0VESUFSQi93RTJBZ0FNQWdzZ0JDQUROZ0lBSUFRZ0NVRUJhallDRUVFSElRa01BZ3NnQkNBRE5nSUFJQVFnQ1VFQmFqWUNFQXRCQ0NFSkN5QUVJQWxCQVdzaUNUWUNDQUpBSUFNZ0NYWkJBWEZGRFFBZ0JpQUNJQVZzUVFKMGFpRlFBa0FnQ1EwQUlBTkIvd0ZISVEwZ0JDZ0NFQ0lKTFFBQUlRTUNRQ0FOUlFSQUlBTkJrQUZQQkVCQi93RWhBeUFFUWY4Qk5nSUFEQUlMSUFRZ0F6WUNBQ0FFSUFsQkFXbzJBaEJCQnlFSkRBSUxJQVFnQXpZQ0FDQUVJQWxCQVdvMkFoQUxRUWdoQ1FzZ0JDQUpRUUZySWdrMkFnZ2dVQ0FMSUJFZ0F5QUpka0VCY1NJSkd6WUNBQ0FFS0FKOElSQWdEQ0FNS0FJQVFTQWdCM1J5TmdJQUlBRWdBU2dDQUNBSlFSTjBRUkJ5SUFkMGNqWUNBQ0FCSUFFb0FnUkJDQ0FIZEhJMkFnUWdBaUFsY2tVRVFDQUJRWDRnRUd0QkFuUnFJZ01nQXlnQ0JFR0FnQUp5TmdJRUlBTWdBeWdDQUNBSlFSOTBja0dBZ0FSeU5nSUFJQU5CQkdzaUF5QURLQUlBUVlDQUNISTJBZ0FMSUFKQkEwY05BQ0FCSUJCQkFuUnFJZ01nQXlnQ0JFRUVjallDQkNBRElBTW9BZ3hCQVhJMkFnd2dBeUFES0FJSUlBbEJFblJ5UVFKeU5nSUlDeUFCSUFFb0FnQkJnSUNBQVNBSGRISWlEVFlDQUNBRUtBS0FBU0VEQ3lBRElSQWdBa0VCYWlJQ0lBTWdDR3RKRFFBTEN5QUdRUVJxSVFZZ0FVRUVhaUVCSUJOQkFXb2lFeUFGUncwQUN3d0RDMEVBSVFkQkFDRU5RUUFoRndKQUFrQUNRQUpBSUFRb0Fud2lFRUhBQUVjTkFDQUVLQUtBQVVIQUFFY05BRUVBUVFFZ0dYUWlBVUVCZGlBQmNpSVJheUVGSUFSQkhHb2hFQ0FFS0FKNFFZd0NhaUVHSUFRb0FnZ2hDQ0FFS0FJRUlRTWdCQ2dDQUNFQ0lBUW9BbWdoRENBRUtBSjBJUUVnRmtFSWNRMEJBMEJCQUNFWEEwQWdBU0VKSUFZaUJ5Z0NBQ0lHQkVBQ1FDQUdRWkNBZ0FGeERRQWdCa0h2QTNFaUFVVU5BQ0FESUJBZ0JDZ0NiQ0FCYWkwQUFFRUNkR29pRENnQ0FDSUxLQUlBSWdGcklRTUNmeUFCSUFKQkVIWkxCRUFnQ3lnQ0JDRUtJQXdnQzBFSVFRd2dBU0FEU3lJVUcyb29BZ0EyQWdBRFFBSkFJQWdOQUNBRUtBSVFJZ2hCQVdvaEN5QUlMUUFCSVFNZ0NDMEFBRUgvQVVZRVFDQURRWkFCVHdSQUlBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFnTUFnc2dCQ0FMTmdJUUlBTkJDWFFnQW1vaEFrRUhJUWdNQVFzZ0JDQUxOZ0lRUVFnaENDQURRUWgwSUFKcUlRSUxJQWhCQVdzaENDQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnQVNFRElBb2dDa1VnRkJzTUFRc2dBaUFCUVJCMGF5RUNJQU5CZ0lBQ2NVVUVRQ0FMS0FJRUlRb2dEQ0FMUVF4QkNDQUJJQU5MSWhRYmFpZ0NBRFlDQUFOQUFrQWdDQTBBSUFRb0FoQWlDRUVCYWlFTElBZ3RBQUVoQVNBSUxRQUFRZjhCUmdSQUlBRkJrQUZQQkVBZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQ0F3Q0N5QUVJQXMyQWhBZ0FVRUpkQ0FDYWlFQ1FRY2hDQXdCQ3lBRUlBczJBaEJCQ0NFSUlBRkJDSFFnQW1vaEFnc2dDRUVCYXlFSUlBSkJBWFFoQWlBRFFRRjBJZ05CZ0lBQ1NRMEFDeUFLUlNBS0lCUWJEQUVMSUFzb0FnUUxCSDhnQXlBUUlBY29BZ1JCRVhaQkJIRWdCMEVFYXlJS0tBSUFRUk4yUVFGeElBWkJEblpCRUhFZ0JrRVFka0hBQUhFZ0JrR3FBWEZ5Y25KeUloUkIwTGtCYWkwQUFFRUNkR29pRENnQ0FDSUxLQUlBSWdGcklRTWdGRUhRdXdGcUxRQUFJUk1nQ1NBRklCRUNmeUFCSUFKQkVIWkxCRUFnQ3lnQ0JDRVVJQXdnQzBFSVFRd2dBU0FEU3lJT0cyb29BZ0EyQWdBRFFBSkFJQWdOQUNBRUtBSVFJZ2hCQVdvaEN5QUlMUUFCSVFNZ0NDMEFBRUgvQVVZRVFDQURRWkFCVHdSQUlBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFnTUFnc2dCQ0FMTmdJUUlBTkJDWFFnQW1vaEFrRUhJUWdNQVFzZ0JDQUxOZ0lRUVFnaENDQURRUWgwSUFKcUlRSUxJQWhCQVdzaENDQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnQVNFRElCUWdGRVVnRGhzTUFRc2dBaUFCUVJCMGF5RUNJQU5CZ0lBQ2NVVUVRQ0FMS0FJRUlSUWdEQ0FMUVF4QkNDQUJJQU5MSWc0YmFpZ0NBRFlDQUFOQUFrQWdDQTBBSUFRb0FoQWlDRUVCYWlFTElBZ3RBQUVoQVNBSUxRQUFRZjhCUmdSQUlBRkJrQUZQQkVBZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQ0F3Q0N5QUVJQXMyQWhBZ0FVRUpkQ0FDYWlFQ1FRY2hDQXdCQ3lBRUlBczJBaEJCQ0NFSUlBRkJDSFFnQW1vaEFnc2dDRUVCYXlFSUlBSkJBWFFoQWlBRFFRRjBJZ05CZ0lBQ1NRMEFDeUFVUlNBVUlBNGJEQUVMSUFzb0FnUUxJQk56SWdFYk5nSUFJQW9nQ2lnQ0FFRWdjallDQUNBSElBY29BZ1JCQ0hJMkFnUWdCMEdNQW1zaUN5QUxLQUlBUVlDQUNISTJBZ0FnQjBHRUFtc2lDeUFMS0FJQVFZQ0FBbkkyQWdBZ0IwR0lBbXNpQ3lBTEtBSUFJQUZCSDNSeVFZQ0FCSEkyQWdBZ0JpQUJRUk4wY2tFUWNnVWdCZ3RCZ0lDQUFYSWhCZ3NDUUNBR1FZQ0JnQWh4RFFBZ0JrSDRIbkZGRFFBZ0F5QVFJQVFvQW13Z0JrRURkaUlVUWU4RGNXb3RBQUJCQW5ScUlnd29BZ0FpQ3lnQ0FDSUJheUVEQW44Z0FTQUNRUkIyU3dSQUlBc29BZ1FoQ2lBTUlBdEJDRUVNSUFFZ0Ewc2lFeHRxS0FJQU5nSUFBMEFDUUNBSURRQWdCQ2dDRUNJSVFRRnFJUXNnQ0MwQUFTRURJQWd0QUFCQi93RkdCRUFnQTBHUUFVOEVRQ0FFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUlEQUlMSUFRZ0N6WUNFQ0FEUVFsMElBSnFJUUpCQnlFSURBRUxJQVFnQ3pZQ0VFRUlJUWdnQTBFSWRDQUNhaUVDQ3lBSVFRRnJJUWdnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBRWhBeUFLSUFwRklCTWJEQUVMSUFJZ0FVRVFkR3NoQWlBRFFZQ0FBbkZGQkVBZ0N5Z0NCQ0VLSUF3Z0MwRU1RUWdnQVNBRFN5SVRHMm9vQWdBMkFnQURRQUpBSUFnTkFDQUVLQUlRSWdoQkFXb2hDeUFJTFFBQklRRWdDQzBBQUVIL0FVWUVRQ0FCUVpBQlR3UkFJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRZ01BZ3NnQkNBTE5nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFnTUFRc2dCQ0FMTmdJUVFRZ2hDQ0FCUVFoMElBSnFJUUlMSUFoQkFXc2hDQ0FDUVFGMElRSWdBMEVCZENJRFFZQ0FBa2tOQUFzZ0NrVWdDaUFUR3d3QkN5QUxLQUlFQ3dSL0lBTWdFQ0FIS0FJRVFSUjJRUVJ4SUFkQkJHc2lDaWdDQUVFV2RrRUJjU0FHUVE5MlFSQnhJQVpCRTNaQndBQnhJQlJCcWdGeGNuSnljaUlVUWRDNUFXb3RBQUJCQW5ScUlnd29BZ0FpQ3lnQ0FDSUJheUVESUJSQjBMc0JhaTBBQUNFVElBa2dCU0FSQW44Z0FTQUNRUkIyU3dSQUlBc29BZ1FoRkNBTUlBdEJDRUVNSUFFZ0Ewc2lEaHRxS0FJQU5nSUFBMEFDUUNBSURRQWdCQ2dDRUNJSVFRRnFJUXNnQ0MwQUFTRURJQWd0QUFCQi93RkdCRUFnQTBHUUFVOEVRQ0FFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUlEQUlMSUFRZ0N6WUNFQ0FEUVFsMElBSnFJUUpCQnlFSURBRUxJQVFnQ3pZQ0VFRUlJUWdnQTBFSWRDQUNhaUVDQ3lBSVFRRnJJUWdnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBRWhBeUFVSUJSRklBNGJEQUVMSUFJZ0FVRVFkR3NoQWlBRFFZQ0FBbkZGQkVBZ0N5Z0NCQ0VVSUF3Z0MwRU1RUWdnQVNBRFN5SU9HMm9vQWdBMkFnQURRQUpBSUFnTkFDQUVLQUlRSWdoQkFXb2hDeUFJTFFBQklRRWdDQzBBQUVIL0FVWUVRQ0FCUVpBQlR3UkFJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRZ01BZ3NnQkNBTE5nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFnTUFRc2dCQ0FMTmdJUVFRZ2hDQ0FCUVFoMElBSnFJUUlMSUFoQkFXc2hDQ0FDUVFGMElRSWdBMEVCZENJRFFZQ0FBa2tOQUFzZ0ZFVWdGQ0FPR3d3QkN5QUxLQUlFQ3lBVGN5SUJHellDZ0FJZ0NpQUtLQUlBUVlBQ2NqWUNBQ0FISUFjb0FnUkJ3QUJ5TmdJRUlBWWdBVUVXZEhKQmdBRnlCU0FHQzBHQWdJQUljaUVHQ3dKQUlBWkJnSWlBd0FCeERRQWdCa0hBOXdGeFJRMEFJQU1nRUNBRUtBSnNJQVpCQm5ZaUZFSHZBM0ZxTFFBQVFRSjBhaUlNS0FJQUlnc29BZ0FpQVdzaEF3Si9JQUVnQWtFUWRrc0VRQ0FMS0FJRUlRb2dEQ0FMUVFoQkRDQUJJQU5MSWhNYmFpZ0NBRFlDQUFOQUFrQWdDQTBBSUFRb0FoQWlDRUVCYWlFTElBZ3RBQUVoQXlBSUxRQUFRZjhCUmdSQUlBTkJrQUZQQkVBZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQ0F3Q0N5QUVJQXMyQWhBZ0EwRUpkQ0FDYWlFQ1FRY2hDQXdCQ3lBRUlBczJBaEJCQ0NFSUlBTkJDSFFnQW1vaEFnc2dDRUVCYXlFSUlBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFCSVFNZ0NpQUtSU0FUR3d3QkN5QUNJQUZCRUhScklRSWdBMEdBZ0FKeFJRUkFJQXNvQWdRaENpQU1JQXRCREVFSUlBRWdBMHNpRXh0cUtBSUFOZ0lBQTBBQ1FDQUlEUUFnQkNnQ0VDSUlRUUZxSVFzZ0NDMEFBU0VCSUFndEFBQkIvd0ZHQkVBZ0FVR1FBVThFUUNBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VJREFJTElBUWdDellDRUNBQlFRbDBJQUpxSVFKQkJ5RUlEQUVMSUFRZ0N6WUNFRUVJSVFnZ0FVRUlkQ0FDYWlFQ0N5QUlRUUZySVFnZ0FrRUJkQ0VDSUFOQkFYUWlBMEdBZ0FKSkRRQUxJQXBGSUFvZ0V4c01BUXNnQ3lnQ0JBc0VmeUFESUJBZ0J5Z0NCRUVYZGtFRWNTQUhRUVJySWdvb0FnQkJHWFpCQVhFZ0JrRVNka0VRY1NBR1FSWjJRY0FBY1NBVVFhb0JjWEp5Y25JaUZFSFF1UUZxTFFBQVFRSjBhaUlNS0FJQUlnc29BZ0FpQVdzaEF5QVVRZEM3QVdvdEFBQWhFeUFKSUFVZ0VRSi9JQUVnQWtFUWRrc0VRQ0FMS0FJRUlSUWdEQ0FMUVFoQkRDQUJJQU5MSWc0YmFpZ0NBRFlDQUFOQUFrQWdDQTBBSUFRb0FoQWlDRUVCYWlFTElBZ3RBQUVoQXlBSUxRQUFRZjhCUmdSQUlBTkJrQUZQQkVBZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQ0F3Q0N5QUVJQXMyQWhBZ0EwRUpkQ0FDYWlFQ1FRY2hDQXdCQ3lBRUlBczJBaEJCQ0NFSUlBTkJDSFFnQW1vaEFnc2dDRUVCYXlFSUlBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFCSVFNZ0ZDQVVSU0FPR3d3QkN5QUNJQUZCRUhScklRSWdBMEdBZ0FKeFJRUkFJQXNvQWdRaEZDQU1JQXRCREVFSUlBRWdBMHNpRGh0cUtBSUFOZ0lBQTBBQ1FDQUlEUUFnQkNnQ0VDSUlRUUZxSVFzZ0NDMEFBU0VCSUFndEFBQkIvd0ZHQkVBZ0FVR1FBVThFUUNBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VJREFJTElBUWdDellDRUNBQlFRbDBJQUpxSVFKQkJ5RUlEQUVMSUFRZ0N6WUNFRUVJSVFnZ0FVRUlkQ0FDYWlFQ0N5QUlRUUZySVFnZ0FrRUJkQ0VDSUFOQkFYUWlBMEdBZ0FKSkRRQUxJQlJGSUJRZ0Roc01BUXNnQ3lnQ0JBc2dFM01pQVJzMkFvQUVJQW9nQ2lnQ0FFR0FFSEkyQWdBZ0J5QUhLQUlFUVlBRWNqWUNCQ0FHSUFGQkdYUnlRWUFJY2dVZ0JndEJnSUNBd0FCeUlRWUxBa0FnQmtHQXdJQ0FCSEVOQUNBR1FZQzhEM0ZGRFFBZ0F5QVFJQVFvQW13Z0JrRUpkaUlVUWU4RGNXb3RBQUJCQW5ScUlnd29BZ0FpQ3lnQ0FDSUJheUVEQW44Z0FTQUNRUkIyU3dSQUlBc29BZ1FoQ2lBTUlBdEJDRUVNSUFFZ0Ewc2lFeHRxS0FJQU5nSUFBMEFDUUNBSURRQWdCQ2dDRUNJSVFRRnFJUXNnQ0MwQUFTRURJQWd0QUFCQi93RkdCRUFnQTBHUUFVOEVRQ0FFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUlEQUlMSUFRZ0N6WUNFQ0FEUVFsMElBSnFJUUpCQnlFSURBRUxJQVFnQ3pZQ0VFRUlJUWdnQTBFSWRDQUNhaUVDQ3lBSVFRRnJJUWdnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBRWhBeUFLSUFwRklCTWJEQUVMSUFJZ0FVRVFkR3NoQWlBRFFZQ0FBbkZGQkVBZ0N5Z0NCQ0VLSUF3Z0MwRU1RUWdnQVNBRFN5SVRHMm9vQWdBMkFnQURRQUpBSUFnTkFDQUVLQUlRSWdoQkFXb2hDeUFJTFFBQklRRWdDQzBBQUVIL0FVWUVRQ0FCUVpBQlR3UkFJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRZ01BZ3NnQkNBTE5nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFnTUFRc2dCQ0FMTmdJUVFRZ2hDQ0FCUVFoMElBSnFJUUlMSUFoQkFXc2hDQ0FDUVFGMElRSWdBMEVCZENJRFFZQ0FBa2tOQUFzZ0NrVWdDaUFUR3d3QkN5QUxLQUlFQ3dSL0lBTWdFQ0FIS0FJRVFScDJRUVJ4SUFkQkJHc2lDaWdDQUVFY2RrRUJjU0FHUVJWMlFSQnhJQVpCR1haQndBQnhJQlJCcWdGeGNuSnljaUlVUWRDNUFXb3RBQUJCQW5ScUlnd29BZ0FpQ3lnQ0FDSUJheUVESUJSQjBMc0JhaTBBQUNFVElBa2dCU0FSQW44Z0FTQUNRUkIyU3dSQUlBc29BZ1FoRkNBTUlBdEJDRUVNSUFFZ0Ewc2lEaHRxS0FJQU5nSUFBMEFDUUNBSURRQWdCQ2dDRUNJSVFRRnFJUXNnQ0MwQUFTRURJQWd0QUFCQi93RkdCRUFnQTBHUUFVOEVRQ0FFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUlEQUlMSUFRZ0N6WUNFQ0FEUVFsMElBSnFJUUpCQnlFSURBRUxJQVFnQ3pZQ0VFRUlJUWdnQTBFSWRDQUNhaUVDQ3lBSVFRRnJJUWdnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBRWhBeUFVSUJSRklBNGJEQUVMSUFJZ0FVRVFkR3NoQWlBRFFZQ0FBbkZGQkVBZ0N5Z0NCQ0VVSUF3Z0MwRU1RUWdnQVNBRFN5SU9HMm9vQWdBMkFnQURRQUpBSUFnTkFDQUVLQUlRSWdoQkFXb2hDeUFJTFFBQklRRWdDQzBBQUVIL0FVWUVRQ0FCUVpBQlR3UkFJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRZ01BZ3NnQkNBTE5nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFnTUFRc2dCQ0FMTmdJUVFRZ2hDQ0FCUVFoMElBSnFJUUlMSUFoQkFXc2hDQ0FDUVFGMElRSWdBMEVCZENJRFFZQ0FBa2tOQUFzZ0ZFVWdGQ0FPR3d3QkN5QUxLQUlFQ3lBVGN5SUJHellDZ0FZZ0NpQUtLQUlBUVlDQUFYSTJBZ0FnQnlBSEtBSUVRWUFnY2pZQ0JDQUhJQWNvQW9RQ1FRUnlOZ0tFQWlBSElBY29Bb3dDUVFGeU5nS01BaUFISUFjb0FvZ0NJQUZCRW5SeVFRSnlOZ0tJQWlBR0lBRkJISFJ5UVlEQUFISUZJQVlMUVlDQWdJQUVjaUVHQ3lBSElBWTJBZ0FMSUFkQkJHb2hCaUFKUVFScUlRRWdGMEVCYWlJWFFjQUFSdzBBQ3lBSFFReHFJUVlnQ1VHRUJtb2hBU0FOUVR4SklWRWdEVUVFYWlFTklGRU5BQXNNQWd0QkFTQVpkQ0lCUVFGMklBRnlJUTBnQkNnQ2VDSUpJQkJCQW5ScVFReHFJUVlnQkNnQ2dBRWhBU0FFS0FJSUlRZ2dCQ2dDQkNFRElBUW9BZ0FoQWlBRUtBSm9JUXdnQkNnQ2RDRVJBa0FnRmtFSWNRUkFBa0FnQVVFRVNRMEFJQkFFUUVFQUlBMXJJUlFnQkVFY2FpRUZJQkJCREd3aEV5QVFRUU4wSVJVRFFFRUFJUXNEUUNBR0lna29BZ0FpQmdSQUFrQWdCa0dRZ0lBQmNRMEFJQVpCN3dOeElnRkZEUUFnQXlBRklBUW9BbXdnQVdvdEFBQkJBblJxSWd3b0FnQWlDaWdDQUNJQmF5RURBbjhnQVNBQ1FSQjJUUVJBSUFJZ0FVRVFkR3NoQWlBRFFZQ0FBbkVFUUNBS0tBSUVEQUlMSUFvb0FnUWhEaUFNSUFwQkRFRUlJQUVnQTBzaUVodHFLQUlBTmdJQUEwQUNRQ0FJRFFBZ0JDZ0NFQ0lJUVFGcUlRb2dDQzBBQVNFQklBZ3RBQUJCL3dGSEJFQWdCQ0FLTmdJUVFRZ2hDQ0FCUVFoMElBSnFJUUlNQVFzZ0FVR1BBVTBFUUNBRUlBbzJBaEFnQVVFSmRDQUNhaUVDUVFjaENBd0JDeUFFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUlDeUFJUVFGcklRZ2dBa0VCZENFQ0lBTkJBWFFpQTBHQWdBSkpEUUFMSUE1RklBNGdFaHNNQVFzZ0NpZ0NCQ0VPSUF3Z0NrRUlRUXdnQVNBRFN5SVNHMm9vQWdBMkFnQURRQUpBSUFnTkFDQUVLQUlRSWdoQkFXb2hDaUFJTFFBQklRTWdDQzBBQUVIL0FVY0VRQ0FFSUFvMkFoQkJDQ0VJSUFOQkNIUWdBbW9oQWd3QkN5QURRWThCVFFSQUlBUWdDallDRUNBRFFRbDBJQUpxSVFKQkJ5RUlEQUVMSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUWdMSUFoQkFXc2hDQ0FDUVFGMElRSWdBVUVCZENJQlFZQ0FBa2tOQUFzZ0FTRURJQTRnRGtVZ0Voc0xCSDhnQXlBRklBa29BZ1JCRVhaQkJIRWdDVUVFYXlJT0tBSUFRUk4yUVFGeElBWkJEblpCRUhFZ0JrRVFka0hBQUhFZ0JrR3FBWEZ5Y25KeUloSkIwTGtCYWkwQUFFRUNkR29pRENnQ0FDSUtLQUlBSWdGcklRTWdFa0hRdXdGcUxRQUFJUmdnRVNBVUlBMENmeUFCSUFKQkVIWk5CRUFnQWlBQlFSQjBheUVDSUFOQmdJQUNjUVJBSUFvb0FnUU1BZ3NnQ2lnQ0JDRVNJQXdnQ2tFTVFRZ2dBU0FEU3lJYkcyb29BZ0EyQWdBRFFBSkFJQWdOQUNBRUtBSVFJZ2hCQVdvaENpQUlMUUFCSVFFZ0NDMEFBRUgvQVVjRVFDQUVJQW8yQWhCQkNDRUlJQUZCQ0hRZ0Ftb2hBZ3dCQ3lBQlFZOEJUUVJBSUFRZ0NqWUNFQ0FCUVFsMElBSnFJUUpCQnlFSURBRUxJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRZ0xJQWhCQVdzaENDQUNRUUYwSVFJZ0EwRUJkQ0lEUVlDQUFra05BQXNnRWtVZ0VpQWJHd3dCQ3lBS0tBSUVJUklnRENBS1FRaEJEQ0FCSUFOTEloc2JhaWdDQURZQ0FBTkFBa0FnQ0EwQUlBUW9BaEFpQ0VFQmFpRUtJQWd0QUFFaEF5QUlMUUFBUWY4QlJ3UkFJQVFnQ2pZQ0VFRUlJUWdnQTBFSWRDQUNhaUVDREFFTElBTkJqd0ZOQkVBZ0JDQUtOZ0lRSUFOQkNYUWdBbW9oQWtFSElRZ01BUXNnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hDQXNnQ0VFQmF5RUlJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBQklRTWdFaUFTUlNBYkd3c2dHSE1pQVJzMkFnQWdEaUFPS0FJQVFTQnlOZ0lBSUFrZ0NTZ0NCRUVJY2pZQ0JDQUdJQUZCRTNSeVFSQnlCU0FHQzBHQWdJQUJjaUVHQ3dKQUlBWkJnSUdBQ0hFTkFDQUdRZmdlY1VVTkFDQURJQVVnQkNnQ2JDQUdRUU4ySWhKQjd3TnhhaTBBQUVFQ2RHb2lEQ2dDQUNJS0tBSUFJZ0ZySVFNQ2Z5QUJJQUpCRUhaTkJFQWdBaUFCUVJCMGF5RUNJQU5CZ0lBQ2NRUkFJQW9vQWdRTUFnc2dDaWdDQkNFT0lBd2dDa0VNUVFnZ0FTQURTeUlZRzJvb0FnQTJBZ0FEUUFKQUlBZ05BQ0FFS0FJUUlnaEJBV29oQ2lBSUxRQUJJUUVnQ0MwQUFFSC9BVWNFUUNBRUlBbzJBaEJCQ0NFSUlBRkJDSFFnQW1vaEFnd0JDeUFCUVk4QlRRUkFJQVFnQ2pZQ0VDQUJRUWwwSUFKcUlRSkJCeUVJREFFTElBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFnTElBaEJBV3NoQ0NBQ1FRRjBJUUlnQTBFQmRDSURRWUNBQWtrTkFBc2dEa1VnRGlBWUd3d0JDeUFLS0FJRUlRNGdEQ0FLUVFoQkRDQUJJQU5MSWhnYmFpZ0NBRFlDQUFOQUFrQWdDQTBBSUFRb0FoQWlDRUVCYWlFS0lBZ3RBQUVoQXlBSUxRQUFRZjhCUndSQUlBUWdDallDRUVFSUlRZ2dBMEVJZENBQ2FpRUNEQUVMSUFOQmp3Rk5CRUFnQkNBS05nSVFJQU5CQ1hRZ0Ftb2hBa0VISVFnTUFRc2dCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaENBc2dDRUVCYXlFSUlBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFCSVFNZ0RpQU9SU0FZR3dzRWZ5QURJQVVnQ1NnQ0JFRVVka0VFY1NBSlFRUnJJZzRvQWdCQkZuWkJBWEVnQmtFUGRrRVFjU0FHUVJOMlFjQUFjU0FTUWFvQmNYSnljbklpRWtIUXVRRnFMUUFBUVFKMGFpSU1LQUlBSWdvb0FnQWlBV3NoQXlBU1FkQzdBV290QUFBaEdDQVJJQkJCQW5ScUlCUWdEUUovSUFFZ0FrRVFkazBFUUNBQ0lBRkJFSFJySVFJZ0EwR0FnQUp4QkVBZ0NpZ0NCQXdDQ3lBS0tBSUVJUklnRENBS1FReEJDQ0FCSUFOTEloc2JhaWdDQURZQ0FBTkFBa0FnQ0EwQUlBUW9BaEFpQ0VFQmFpRUtJQWd0QUFFaEFTQUlMUUFBUWY4QlJ3UkFJQVFnQ2pZQ0VFRUlJUWdnQVVFSWRDQUNhaUVDREFFTElBRkJqd0ZOQkVBZ0JDQUtOZ0lRSUFGQkNYUWdBbW9oQWtFSElRZ01BUXNnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hDQXNnQ0VFQmF5RUlJQUpCQVhRaEFpQURRUUYwSWdOQmdJQUNTUTBBQ3lBU1JTQVNJQnNiREFFTElBb29BZ1FoRWlBTUlBcEJDRUVNSUFFZ0Ewc2lHeHRxS0FJQU5nSUFBMEFDUUNBSURRQWdCQ2dDRUNJSVFRRnFJUW9nQ0MwQUFTRURJQWd0QUFCQi93RkhCRUFnQkNBS05nSVFRUWdoQ0NBRFFRaDBJQUpxSVFJTUFRc2dBMEdQQVUwRVFDQUVJQW8yQWhBZ0EwRUpkQ0FDYWlFQ1FRY2hDQXdCQ3lBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VJQ3lBSVFRRnJJUWdnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBRWhBeUFTSUJKRklCc2JDeUFZY3lJQkd6WUNBQ0FPSUE0b0FnQkJnQUp5TmdJQUlBa2dDU2dDQkVIQUFISTJBZ1FnQmlBQlFSWjBja0dBQVhJRklBWUxRWUNBZ0FoeUlRWUxBa0FnQmtHQWlJREFBSEVOQUNBR1FjRDNBWEZGRFFBZ0F5QUZJQVFvQW13Z0JrRUdkaUlTUWU4RGNXb3RBQUJCQW5ScUlnd29BZ0FpQ2lnQ0FDSUJheUVEQW44Z0FTQUNRUkIyVFFSQUlBSWdBVUVRZEdzaEFpQURRWUNBQW5FRVFDQUtLQUlFREFJTElBb29BZ1FoRGlBTUlBcEJERUVJSUFFZ0Ewc2lHQnRxS0FJQU5nSUFBMEFDUUNBSURRQWdCQ2dDRUNJSVFRRnFJUW9nQ0MwQUFTRUJJQWd0QUFCQi93RkhCRUFnQkNBS05nSVFRUWdoQ0NBQlFRaDBJQUpxSVFJTUFRc2dBVUdQQVUwRVFDQUVJQW8yQWhBZ0FVRUpkQ0FDYWlFQ1FRY2hDQXdCQ3lBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VJQ3lBSVFRRnJJUWdnQWtFQmRDRUNJQU5CQVhRaUEwR0FnQUpKRFFBTElBNUZJQTRnR0JzTUFRc2dDaWdDQkNFT0lBd2dDa0VJUVF3Z0FTQURTeUlZRzJvb0FnQTJBZ0FEUUFKQUlBZ05BQ0FFS0FJUUlnaEJBV29oQ2lBSUxRQUJJUU1nQ0MwQUFFSC9BVWNFUUNBRUlBbzJBaEJCQ0NFSUlBTkJDSFFnQW1vaEFnd0JDeUFEUVk4QlRRUkFJQVFnQ2pZQ0VDQURRUWwwSUFKcUlRSkJCeUVJREFFTElBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFnTElBaEJBV3NoQ0NBQ1FRRjBJUUlnQVVFQmRDSUJRWUNBQWtrTkFBc2dBU0VESUE0Z0RrVWdHQnNMQkg4Z0F5QUZJQWtvQWdSQkYzWkJCSEVnQ1VFRWF5SU9LQUlBUVJsMlFRRnhJQVpCRW5aQkVIRWdCa0VXZGtIQUFIRWdFa0dxQVhGeWNuSnlJaEpCMExrQmFpMEFBRUVDZEdvaURDZ0NBQ0lLS0FJQUlnRnJJUU1nRWtIUXV3RnFMUUFBSVJnZ0VTQVZhaUFVSUEwQ2Z5QUJJQUpCRUhaTkJFQWdBaUFCUVJCMGF5RUNJQU5CZ0lBQ2NRUkFJQW9vQWdRTUFnc2dDaWdDQkNFU0lBd2dDa0VNUVFnZ0FTQURTeUliRzJvb0FnQTJBZ0FEUUFKQUlBZ05BQ0FFS0FJUUlnaEJBV29oQ2lBSUxRQUJJUUVnQ0MwQUFFSC9BVWNFUUNBRUlBbzJBaEJCQ0NFSUlBRkJDSFFnQW1vaEFnd0JDeUFCUVk4QlRRUkFJQVFnQ2pZQ0VDQUJRUWwwSUFKcUlRSkJCeUVJREFFTElBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFnTElBaEJBV3NoQ0NBQ1FRRjBJUUlnQTBFQmRDSURRWUNBQWtrTkFBc2dFa1VnRWlBYkd3d0JDeUFLS0FJRUlSSWdEQ0FLUVFoQkRDQUJJQU5MSWhzYmFpZ0NBRFlDQUFOQUFrQWdDQTBBSUFRb0FoQWlDRUVCYWlFS0lBZ3RBQUVoQXlBSUxRQUFRZjhCUndSQUlBUWdDallDRUVFSUlRZ2dBMEVJZENBQ2FpRUNEQUVMSUFOQmp3Rk5CRUFnQkNBS05nSVFJQU5CQ1hRZ0Ftb2hBa0VISVFnTUFRc2dCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaENBc2dDRUVCYXlFSUlBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFCSVFNZ0VpQVNSU0FiR3dzZ0dITWlBUnMyQWdBZ0RpQU9LQUlBUVlBUWNqWUNBQ0FKSUFrb0FnUkJnQVJ5TmdJRUlBWWdBVUVaZEhKQmdBaHlCU0FHQzBHQWdJREFBSEloQmdzQ1FDQUdRWURBZ0lBRWNRMEFJQVpCZ0x3UGNVVU5BQ0FESUFVZ0JDZ0NiQ0FHUVFsMkloSkI3d054YWkwQUFFRUNkR29pRENnQ0FDSUtLQUlBSWdGcklRTUNmeUFCSUFKQkVIWk5CRUFnQWlBQlFSQjBheUVDSUFOQmdJQUNjUVJBSUFvb0FnUU1BZ3NnQ2lnQ0JDRU9JQXdnQ2tFTVFRZ2dBU0FEU3lJWUcyb29BZ0EyQWdBRFFBSkFJQWdOQUNBRUtBSVFJZ2hCQVdvaENpQUlMUUFCSVFFZ0NDMEFBRUgvQVVjRVFDQUVJQW8yQWhCQkNDRUlJQUZCQ0hRZ0Ftb2hBZ3dCQ3lBQlFZOEJUUVJBSUFRZ0NqWUNFQ0FCUVFsMElBSnFJUUpCQnlFSURBRUxJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRZ0xJQWhCQVdzaENDQUNRUUYwSVFJZ0EwRUJkQ0lEUVlDQUFra05BQXNnRGtVZ0RpQVlHd3dCQ3lBS0tBSUVJUTRnRENBS1FRaEJEQ0FCSUFOTEloZ2JhaWdDQURZQ0FBTkFBa0FnQ0EwQUlBUW9BaEFpQ0VFQmFpRUtJQWd0QUFFaEF5QUlMUUFBUWY4QlJ3UkFJQVFnQ2pZQ0VFRUlJUWdnQTBFSWRDQUNhaUVDREFFTElBTkJqd0ZOQkVBZ0JDQUtOZ0lRSUFOQkNYUWdBbW9oQWtFSElRZ01BUXNnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hDQXNnQ0VFQmF5RUlJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBQklRTWdEaUFPUlNBWUd3c0VmeUFESUFVZ0NTZ0NCRUVhZGtFRWNTQUpRUVJySWc0b0FnQkJISFpCQVhFZ0JrRVZka0VRY1NBR1FSbDJRY0FBY1NBU1Fhb0JjWEp5Y25JaUVrSFF1UUZxTFFBQVFRSjBhaUlNS0FJQUlnb29BZ0FpQVdzaEF5QVNRZEM3QVdvdEFBQWhHQ0FSSUJOcUlCUWdEUUovSUFFZ0FrRVFkazBFUUNBQ0lBRkJFSFJySVFJZ0EwR0FnQUp4QkVBZ0NpZ0NCQXdDQ3lBS0tBSUVJUklnRENBS1FReEJDQ0FCSUFOTEloc2JhaWdDQURZQ0FBTkFBa0FnQ0EwQUlBUW9BaEFpQ0VFQmFpRUtJQWd0QUFFaEFTQUlMUUFBUWY4QlJ3UkFJQVFnQ2pZQ0VFRUlJUWdnQVVFSWRDQUNhaUVDREFFTElBRkJqd0ZOQkVBZ0JDQUtOZ0lRSUFGQkNYUWdBbW9oQWtFSElRZ01BUXNnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hDQXNnQ0VFQmF5RUlJQUpCQVhRaEFpQURRUUYwSWdOQmdJQUNTUTBBQ3lBU1JTQVNJQnNiREFFTElBb29BZ1FoRWlBTUlBcEJDRUVNSUFFZ0Ewc2lHeHRxS0FJQU5nSUFBMEFDUUNBSURRQWdCQ2dDRUNJSVFRRnFJUW9nQ0MwQUFTRURJQWd0QUFCQi93RkhCRUFnQkNBS05nSVFRUWdoQ0NBRFFRaDBJQUpxSVFJTUFRc2dBMEdQQVUwRVFDQUVJQW8yQWhBZ0EwRUpkQ0FDYWlFQ1FRY2hDQXdCQ3lBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VJQ3lBSVFRRnJJUWdnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBRWhBeUFTSUJKRklCc2JDeUFZY3lJS0d6WUNBQ0FPSUE0b0FnQkJnSUFCY2pZQ0FDQUpJQWtvQWdSQmdDQnlOZ0lFSUFRb0FueEJBblFnQ1dvaUFTQUJLQUlFUVFSeU5nSUVJQUVnQVNnQ0RFRUJjallDRENBQklBRW9BZ2dnQ2tFU2RISkJBbkkyQWdnZ0JpQUtRUngwY2tHQXdBQnlCU0FHQzBHQWdJQ0FCSEloQmdzZ0NTQUdOZ0lBQ3lBSlFRUnFJUVlnRVVFRWFpRVJJQXRCQVdvaUN5QVFSdzBBQ3lBSlFReHFJUVlnRVNBVGFpRVJJQWRCQkdvaUJ5QUVLQUtBQVNJQlFYeHhTUTBBQ3d3QkMwRUVJQUZCZkhFaUJpQUdRUVJORzBFQmF5SUdRWHh4UVFScUlRY2dDU0FHUVFGMFFYaHhha0VVYWlFR0N5QUVJQWcyQWdnZ0JDQUROZ0lFSUFRZ0FqWUNBQ0FFSUF3MkFtZ2dFRVVOQVNBQklBZE5EUUVEUUNBQklBZEdJVkpCQUNFSUlBY2hBU0JTUlFSQUEwQWdCQ0FHSUJFZ0NDQVFiRUVDZEdvZ0RTQUlJQVFvQW54QkFtcEJBUkJaSUFoQkFXb2lDQ0FFS0FLQUFTSUJJQWRyU1EwQUN3c2dCa0VFYWlFR0lCRkJCR29oRVNBWFFRRnFJaGNnRUVjTkFBc01BUXNDUUNBQlFRUkpEUUFnRUFSQVFRQWdEV3NoRkNBRVFSeHFJUVVnRUVFTWJDRVRJQkJCQTNRaEZRTkFRUUFoQ3dOQUlBWWlDU2dDQUNJR0JFQUNRQ0FHUVpDQWdBRnhEUUFnQmtIdkEzRWlBVVVOQUNBRElBVWdCQ2dDYkNBQmFpMEFBRUVDZEdvaURDZ0NBQ0lLS0FJQUlnRnJJUU1DZnlBQklBSkJFSFpOQkVBZ0FpQUJRUkIwYXlFQ0lBTkJnSUFDY1FSQUlBb29BZ1FNQWdzZ0NpZ0NCQ0VPSUF3Z0NrRU1RUWdnQVNBRFN5SVNHMm9vQWdBMkFnQURRQUpBSUFnTkFDQUVLQUlRSWdoQkFXb2hDaUFJTFFBQklRRWdDQzBBQUVIL0FVY0VRQ0FFSUFvMkFoQkJDQ0VJSUFGQkNIUWdBbW9oQWd3QkN5QUJRWThCVFFSQUlBUWdDallDRUNBQlFRbDBJQUpxSVFKQkJ5RUlEQUVMSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUWdMSUFoQkFXc2hDQ0FDUVFGMElRSWdBMEVCZENJRFFZQ0FBa2tOQUFzZ0RrVWdEaUFTR3d3QkN5QUtLQUlFSVE0Z0RDQUtRUWhCRENBQklBTkxJaEliYWlnQ0FEWUNBQU5BQWtBZ0NBMEFJQVFvQWhBaUNFRUJhaUVLSUFndEFBRWhBeUFJTFFBQVFmOEJSd1JBSUFRZ0NqWUNFRUVJSVFnZ0EwRUlkQ0FDYWlFQ0RBRUxJQU5CandGTkJFQWdCQ0FLTmdJUUlBTkJDWFFnQW1vaEFrRUhJUWdNQVFzZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQ0FzZ0NFRUJheUVJSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QUJJUU1nRGlBT1JTQVNHd3NFZnlBRElBVWdDU2dDQkVFUmRrRUVjU0FKUVFScklnNG9BZ0JCRTNaQkFYRWdCa0VPZGtFUWNTQUdRUkIyUWNBQWNTQUdRYW9CY1hKeWNuSWlFa0hRdVFGcUxRQUFRUUowYWlJTUtBSUFJZ29vQWdBaUFXc2hBeUFTUWRDN0FXb3RBQUFoR0NBUklCUWdEUUovSUFFZ0FrRVFkazBFUUNBQ0lBRkJFSFJySVFJZ0EwR0FnQUp4QkVBZ0NpZ0NCQXdDQ3lBS0tBSUVJUklnRENBS1FReEJDQ0FCSUFOTEloc2JhaWdDQURZQ0FBTkFBa0FnQ0EwQUlBUW9BaEFpQ0VFQmFpRUtJQWd0QUFFaEFTQUlMUUFBUWY4QlJ3UkFJQVFnQ2pZQ0VFRUlJUWdnQVVFSWRDQUNhaUVDREFFTElBRkJqd0ZOQkVBZ0JDQUtOZ0lRSUFGQkNYUWdBbW9oQWtFSElRZ01BUXNnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hDQXNnQ0VFQmF5RUlJQUpCQVhRaEFpQURRUUYwSWdOQmdJQUNTUTBBQ3lBU1JTQVNJQnNiREFFTElBb29BZ1FoRWlBTUlBcEJDRUVNSUFFZ0Ewc2lHeHRxS0FJQU5nSUFBMEFDUUNBSURRQWdCQ2dDRUNJSVFRRnFJUW9nQ0MwQUFTRURJQWd0QUFCQi93RkhCRUFnQkNBS05nSVFRUWdoQ0NBRFFRaDBJQUpxSVFJTUFRc2dBMEdQQVUwRVFDQUVJQW8yQWhBZ0EwRUpkQ0FDYWlFQ1FRY2hDQXdCQ3lBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VJQ3lBSVFRRnJJUWdnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBRWhBeUFTSUJKRklCc2JDeUFZY3lJS0d6WUNBQ0FPSUE0b0FnQkJJSEkyQWdBZ0NTQUpLQUlFUVFoeU5nSUVJQWxCZmlBRUtBSjhhMEVDZEdvaUFTQUJLQUlFUVlDQUFuSTJBZ1FnQVNBQktBSUFJQXBCSDNSeVFZQ0FCSEkyQWdBZ0FVRUVheUlCSUFFb0FnQkJnSUFJY2pZQ0FDQUdJQXBCRTNSeVFSQnlCU0FHQzBHQWdJQUJjaUVHQ3dKQUlBWkJnSUdBQ0hFTkFDQUdRZmdlY1VVTkFDQURJQVVnQkNnQ2JDQUdRUU4ySWhKQjd3TnhhaTBBQUVFQ2RHb2lEQ2dDQUNJS0tBSUFJZ0ZySVFNQ2Z5QUJJQUpCRUhaTkJFQWdBaUFCUVJCMGF5RUNJQU5CZ0lBQ2NRUkFJQW9vQWdRTUFnc2dDaWdDQkNFT0lBd2dDa0VNUVFnZ0FTQURTeUlZRzJvb0FnQTJBZ0FEUUFKQUlBZ05BQ0FFS0FJUUlnaEJBV29oQ2lBSUxRQUJJUUVnQ0MwQUFFSC9BVWNFUUNBRUlBbzJBaEJCQ0NFSUlBRkJDSFFnQW1vaEFnd0JDeUFCUVk4QlRRUkFJQVFnQ2pZQ0VDQUJRUWwwSUFKcUlRSkJCeUVJREFFTElBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFnTElBaEJBV3NoQ0NBQ1FRRjBJUUlnQTBFQmRDSURRWUNBQWtrTkFBc2dEa1VnRGlBWUd3d0JDeUFLS0FJRUlRNGdEQ0FLUVFoQkRDQUJJQU5MSWhnYmFpZ0NBRFlDQUFOQUFrQWdDQTBBSUFRb0FoQWlDRUVCYWlFS0lBZ3RBQUVoQXlBSUxRQUFRZjhCUndSQUlBUWdDallDRUVFSUlRZ2dBMEVJZENBQ2FpRUNEQUVMSUFOQmp3Rk5CRUFnQkNBS05nSVFJQU5CQ1hRZ0Ftb2hBa0VISVFnTUFRc2dCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaENBc2dDRUVCYXlFSUlBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFCSVFNZ0RpQU9SU0FZR3dzRWZ5QURJQVVnQ1NnQ0JFRVVka0VFY1NBSlFRUnJJZzRvQWdCQkZuWkJBWEVnQmtFUGRrRVFjU0FHUVJOMlFjQUFjU0FTUWFvQmNYSnljbklpRWtIUXVRRnFMUUFBUVFKMGFpSU1LQUlBSWdvb0FnQWlBV3NoQXlBU1FkQzdBV290QUFBaEdDQVJJQkJCQW5ScUlCUWdEUUovSUFFZ0FrRVFkazBFUUNBQ0lBRkJFSFJySVFJZ0EwR0FnQUp4QkVBZ0NpZ0NCQXdDQ3lBS0tBSUVJUklnRENBS1FReEJDQ0FCSUFOTEloc2JhaWdDQURZQ0FBTkFBa0FnQ0EwQUlBUW9BaEFpQ0VFQmFpRUtJQWd0QUFFaEFTQUlMUUFBUWY4QlJ3UkFJQVFnQ2pZQ0VFRUlJUWdnQVVFSWRDQUNhaUVDREFFTElBRkJqd0ZOQkVBZ0JDQUtOZ0lRSUFGQkNYUWdBbW9oQWtFSElRZ01BUXNnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hDQXNnQ0VFQmF5RUlJQUpCQVhRaEFpQURRUUYwSWdOQmdJQUNTUTBBQ3lBU1JTQVNJQnNiREFFTElBb29BZ1FoRWlBTUlBcEJDRUVNSUFFZ0Ewc2lHeHRxS0FJQU5nSUFBMEFDUUNBSURRQWdCQ2dDRUNJSVFRRnFJUW9nQ0MwQUFTRURJQWd0QUFCQi93RkhCRUFnQkNBS05nSVFRUWdoQ0NBRFFRaDBJQUpxSVFJTUFRc2dBMEdQQVUwRVFDQUVJQW8yQWhBZ0EwRUpkQ0FDYWlFQ1FRY2hDQXdCQ3lBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VJQ3lBSVFRRnJJUWdnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBRWhBeUFTSUJKRklCc2JDeUFZY3lJQkd6WUNBQ0FPSUE0b0FnQkJnQUp5TmdJQUlBa2dDU2dDQkVIQUFISTJBZ1FnQmlBQlFSWjBja0dBQVhJRklBWUxRWUNBZ0FoeUlRWUxBa0FnQmtHQWlJREFBSEVOQUNBR1FjRDNBWEZGRFFBZ0F5QUZJQVFvQW13Z0JrRUdkaUlTUWU4RGNXb3RBQUJCQW5ScUlnd29BZ0FpQ2lnQ0FDSUJheUVEQW44Z0FTQUNRUkIyVFFSQUlBSWdBVUVRZEdzaEFpQURRWUNBQW5FRVFDQUtLQUlFREFJTElBb29BZ1FoRGlBTUlBcEJERUVJSUFFZ0Ewc2lHQnRxS0FJQU5nSUFBMEFDUUNBSURRQWdCQ2dDRUNJSVFRRnFJUW9nQ0MwQUFTRUJJQWd0QUFCQi93RkhCRUFnQkNBS05nSVFRUWdoQ0NBQlFRaDBJQUpxSVFJTUFRc2dBVUdQQVUwRVFDQUVJQW8yQWhBZ0FVRUpkQ0FDYWlFQ1FRY2hDQXdCQ3lBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VJQ3lBSVFRRnJJUWdnQWtFQmRDRUNJQU5CQVhRaUEwR0FnQUpKRFFBTElBNUZJQTRnR0JzTUFRc2dDaWdDQkNFT0lBd2dDa0VJUVF3Z0FTQURTeUlZRzJvb0FnQTJBZ0FEUUFKQUlBZ05BQ0FFS0FJUUlnaEJBV29oQ2lBSUxRQUJJUU1nQ0MwQUFFSC9BVWNFUUNBRUlBbzJBaEJCQ0NFSUlBTkJDSFFnQW1vaEFnd0JDeUFEUVk4QlRRUkFJQVFnQ2pZQ0VDQURRUWwwSUFKcUlRSkJCeUVJREFFTElBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFnTElBaEJBV3NoQ0NBQ1FRRjBJUUlnQVVFQmRDSUJRWUNBQWtrTkFBc2dBU0VESUE0Z0RrVWdHQnNMQkg4Z0F5QUZJQWtvQWdSQkYzWkJCSEVnQ1VFRWF5SU9LQUlBUVJsMlFRRnhJQVpCRW5aQkVIRWdCa0VXZGtIQUFIRWdFa0dxQVhGeWNuSnlJaEpCMExrQmFpMEFBRUVDZEdvaURDZ0NBQ0lLS0FJQUlnRnJJUU1nRWtIUXV3RnFMUUFBSVJnZ0VTQVZhaUFVSUEwQ2Z5QUJJQUpCRUhaTkJFQWdBaUFCUVJCMGF5RUNJQU5CZ0lBQ2NRUkFJQW9vQWdRTUFnc2dDaWdDQkNFU0lBd2dDa0VNUVFnZ0FTQURTeUliRzJvb0FnQTJBZ0FEUUFKQUlBZ05BQ0FFS0FJUUlnaEJBV29oQ2lBSUxRQUJJUUVnQ0MwQUFFSC9BVWNFUUNBRUlBbzJBaEJCQ0NFSUlBRkJDSFFnQW1vaEFnd0JDeUFCUVk4QlRRUkFJQVFnQ2pZQ0VDQUJRUWwwSUFKcUlRSkJCeUVJREFFTElBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFnTElBaEJBV3NoQ0NBQ1FRRjBJUUlnQTBFQmRDSURRWUNBQWtrTkFBc2dFa1VnRWlBYkd3d0JDeUFLS0FJRUlSSWdEQ0FLUVFoQkRDQUJJQU5MSWhzYmFpZ0NBRFlDQUFOQUFrQWdDQTBBSUFRb0FoQWlDRUVCYWlFS0lBZ3RBQUVoQXlBSUxRQUFRZjhCUndSQUlBUWdDallDRUVFSUlRZ2dBMEVJZENBQ2FpRUNEQUVMSUFOQmp3Rk5CRUFnQkNBS05nSVFJQU5CQ1hRZ0Ftb2hBa0VISVFnTUFRc2dCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaENBc2dDRUVCYXlFSUlBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFCSVFNZ0VpQVNSU0FiR3dzZ0dITWlBUnMyQWdBZ0RpQU9LQUlBUVlBUWNqWUNBQ0FKSUFrb0FnUkJnQVJ5TmdJRUlBWWdBVUVaZEhKQmdBaHlCU0FHQzBHQWdJREFBSEloQmdzQ1FDQUdRWURBZ0lBRWNRMEFJQVpCZ0x3UGNVVU5BQ0FESUFVZ0JDZ0NiQ0FHUVFsMkloSkI3d054YWkwQUFFRUNkR29pRENnQ0FDSUtLQUlBSWdGcklRTUNmeUFCSUFKQkVIWk5CRUFnQWlBQlFSQjBheUVDSUFOQmdJQUNjUVJBSUFvb0FnUU1BZ3NnQ2lnQ0JDRU9JQXdnQ2tFTVFRZ2dBU0FEU3lJWUcyb29BZ0EyQWdBRFFBSkFJQWdOQUNBRUtBSVFJZ2hCQVdvaENpQUlMUUFCSVFFZ0NDMEFBRUgvQVVjRVFDQUVJQW8yQWhCQkNDRUlJQUZCQ0hRZ0Ftb2hBZ3dCQ3lBQlFZOEJUUVJBSUFRZ0NqWUNFQ0FCUVFsMElBSnFJUUpCQnlFSURBRUxJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRZ0xJQWhCQVdzaENDQUNRUUYwSVFJZ0EwRUJkQ0lEUVlDQUFra05BQXNnRGtVZ0RpQVlHd3dCQ3lBS0tBSUVJUTRnRENBS1FRaEJEQ0FCSUFOTEloZ2JhaWdDQURZQ0FBTkFBa0FnQ0EwQUlBUW9BaEFpQ0VFQmFpRUtJQWd0QUFFaEF5QUlMUUFBUWY4QlJ3UkFJQVFnQ2pZQ0VFRUlJUWdnQTBFSWRDQUNhaUVDREFFTElBTkJqd0ZOQkVBZ0JDQUtOZ0lRSUFOQkNYUWdBbW9oQWtFSElRZ01BUXNnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hDQXNnQ0VFQmF5RUlJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBQklRTWdEaUFPUlNBWUd3c0VmeUFESUFVZ0NTZ0NCRUVhZGtFRWNTQUpRUVJySWc0b0FnQkJISFpCQVhFZ0JrRVZka0VRY1NBR1FSbDJRY0FBY1NBU1Fhb0JjWEp5Y25JaUVrSFF1UUZxTFFBQVFRSjBhaUlNS0FJQUlnb29BZ0FpQVdzaEF5QVNRZEM3QVdvdEFBQWhHQ0FSSUJOcUlCUWdEUUovSUFFZ0FrRVFkazBFUUNBQ0lBRkJFSFJySVFJZ0EwR0FnQUp4QkVBZ0NpZ0NCQXdDQ3lBS0tBSUVJUklnRENBS1FReEJDQ0FCSUFOTEloc2JhaWdDQURZQ0FBTkFBa0FnQ0EwQUlBUW9BaEFpQ0VFQmFpRUtJQWd0QUFFaEFTQUlMUUFBUWY4QlJ3UkFJQVFnQ2pZQ0VFRUlJUWdnQVVFSWRDQUNhaUVDREFFTElBRkJqd0ZOQkVBZ0JDQUtOZ0lRSUFGQkNYUWdBbW9oQWtFSElRZ01BUXNnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hDQXNnQ0VFQmF5RUlJQUpCQVhRaEFpQURRUUYwSWdOQmdJQUNTUTBBQ3lBU1JTQVNJQnNiREFFTElBb29BZ1FoRWlBTUlBcEJDRUVNSUFFZ0Ewc2lHeHRxS0FJQU5nSUFBMEFDUUNBSURRQWdCQ2dDRUNJSVFRRnFJUW9nQ0MwQUFTRURJQWd0QUFCQi93RkhCRUFnQkNBS05nSVFRUWdoQ0NBRFFRaDBJQUpxSVFJTUFRc2dBMEdQQVUwRVFDQUVJQW8yQWhBZ0EwRUpkQ0FDYWlFQ1FRY2hDQXdCQ3lBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VJQ3lBSVFRRnJJUWdnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBRWhBeUFTSUJKRklCc2JDeUFZY3lJS0d6WUNBQ0FPSUE0b0FnQkJnSUFCY2pZQ0FDQUpJQWtvQWdSQmdDQnlOZ0lFSUFRb0FueEJBblFnQ1dvaUFTQUJLQUlFUVFSeU5nSUVJQUVnQVNnQ0RFRUJjallDRENBQklBRW9BZ2dnQ2tFU2RISkJBbkkyQWdnZ0JpQUtRUngwY2tHQXdBQnlCU0FHQzBHQWdJQ0FCSEloQmdzZ0NTQUdOZ0lBQ3lBSlFRUnFJUVlnRVVFRWFpRVJJQXRCQVdvaUN5QVFSdzBBQ3lBSlFReHFJUVlnRVNBVGFpRVJJQWRCQkdvaUJ5QUVLQUtBQVNJQlFYeHhTUTBBQ3d3QkMwRUVJQUZCZkhFaUJpQUdRUVJORzBFQmF5SUdRWHh4UVFScUlRY2dDU0FHUVFGMFFYaHhha0VVYWlFR0N5QUVJQWcyQWdnZ0JDQUROZ0lFSUFRZ0FqWUNBQ0FFSUF3MkFtZ2dFRVVOQUNBQklBZE5EUUFEUUNBQklBZEdJVk5CQUNFSUlBY2hBU0JUUlFSQUEwQWdCQ0FHSUJFZ0NDQVFiRUVDZEdvZ0RTQUlJQVFvQW54QkFtcEJBQkJaSUFoQkFXb2lDQ0FFS0FLQUFTSUJJQWRyU1EwQUN3c2dCa0VFYWlFR0lCRkJCR29oRVNBWFFRRnFJaGNnRUVjTkFBc0xEQUlMQTBCQkFDRVhBMEFnQVNFSklBWWlCeWdDQUNJR0JFQUNRQ0FHUVpDQWdBRnhEUUFnQmtIdkEzRWlBVVVOQUNBRElCQWdCQ2dDYkNBQmFpMEFBRUVDZEdvaURDZ0NBQ0lMS0FJQUlnRnJJUU1DZnlBQklBSkJFSFpMQkVBZ0N5Z0NCQ0VLSUF3Z0MwRUlRUXdnQVNBRFN5SVVHMm9vQWdBMkFnQURRQUpBSUFnTkFDQUVLQUlRSWdoQkFXb2hDeUFJTFFBQklRTWdDQzBBQUVIL0FVWUVRQ0FEUVpBQlR3UkFJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRZ01BZ3NnQkNBTE5nSVFJQU5CQ1hRZ0Ftb2hBa0VISVFnTUFRc2dCQ0FMTmdJUVFRZ2hDQ0FEUVFoMElBSnFJUUlMSUFoQkFXc2hDQ0FDUVFGMElRSWdBVUVCZENJQlFZQ0FBa2tOQUFzZ0FTRURJQW9nQ2tVZ0ZCc01BUXNnQWlBQlFSQjBheUVDSUFOQmdJQUNjVVVFUUNBTEtBSUVJUW9nRENBTFFReEJDQ0FCSUFOTEloUWJhaWdDQURZQ0FBTkFBa0FnQ0EwQUlBUW9BaEFpQ0VFQmFpRUxJQWd0QUFFaEFTQUlMUUFBUWY4QlJnUkFJQUZCa0FGUEJFQWdCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaENBd0NDeUFFSUFzMkFoQWdBVUVKZENBQ2FpRUNRUWNoQ0F3QkN5QUVJQXMyQWhCQkNDRUlJQUZCQ0hRZ0Ftb2hBZ3NnQ0VFQmF5RUlJQUpCQVhRaEFpQURRUUYwSWdOQmdJQUNTUTBBQ3lBS1JTQUtJQlFiREFFTElBc29BZ1FMQkg4Z0F5QVFJQWNvQWdSQkVYWkJCSEVnQjBFRWF5SUtLQUlBUVJOMlFRRnhJQVpCRG5aQkVIRWdCa0VRZGtIQUFIRWdCa0dxQVhGeWNuSnlJaFJCMExrQmFpMEFBRUVDZEdvaURDZ0NBQ0lMS0FJQUlnRnJJUU1nRkVIUXV3RnFMUUFBSVJNZ0NTQUZJQkVDZnlBQklBSkJFSFpMQkVBZ0N5Z0NCQ0VVSUF3Z0MwRUlRUXdnQVNBRFN5SU9HMm9vQWdBMkFnQURRQUpBSUFnTkFDQUVLQUlRSWdoQkFXb2hDeUFJTFFBQklRTWdDQzBBQUVIL0FVWUVRQ0FEUVpBQlR3UkFJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRZ01BZ3NnQkNBTE5nSVFJQU5CQ1hRZ0Ftb2hBa0VISVFnTUFRc2dCQ0FMTmdJUVFRZ2hDQ0FEUVFoMElBSnFJUUlMSUFoQkFXc2hDQ0FDUVFGMElRSWdBVUVCZENJQlFZQ0FBa2tOQUFzZ0FTRURJQlFnRkVVZ0Roc01BUXNnQWlBQlFSQjBheUVDSUFOQmdJQUNjVVVFUUNBTEtBSUVJUlFnRENBTFFReEJDQ0FCSUFOTElnNGJhaWdDQURZQ0FBTkFBa0FnQ0EwQUlBUW9BaEFpQ0VFQmFpRUxJQWd0QUFFaEFTQUlMUUFBUWY4QlJnUkFJQUZCa0FGUEJFQWdCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaENBd0NDeUFFSUFzMkFoQWdBVUVKZENBQ2FpRUNRUWNoQ0F3QkN5QUVJQXMyQWhCQkNDRUlJQUZCQ0hRZ0Ftb2hBZ3NnQ0VFQmF5RUlJQUpCQVhRaEFpQURRUUYwSWdOQmdJQUNTUTBBQ3lBVVJTQVVJQTRiREFFTElBc29BZ1FMSUJOeklnRWJOZ0lBSUFvZ0NpZ0NBRUVnY2pZQ0FDQUhJQWNvQWdSQkNISTJBZ1FnQmlBQlFSTjBja0VRY2dVZ0JndEJnSUNBQVhJaEJnc0NRQ0FHUVlDQmdBaHhEUUFnQmtINEhuRkZEUUFnQXlBUUlBUW9BbXdnQmtFRGRpSVVRZThEY1dvdEFBQkJBblJxSWd3b0FnQWlDeWdDQUNJQmF5RURBbjhnQVNBQ1FSQjJTd1JBSUFzb0FnUWhDaUFNSUF0QkNFRU1JQUVnQTBzaUV4dHFLQUlBTmdJQUEwQUNRQ0FJRFFBZ0JDZ0NFQ0lJUVFGcUlRc2dDQzBBQVNFRElBZ3RBQUJCL3dGR0JFQWdBMEdRQVU4RVFDQUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFSURBSUxJQVFnQ3pZQ0VDQURRUWwwSUFKcUlRSkJCeUVJREFFTElBUWdDellDRUVFSUlRZ2dBMEVJZENBQ2FpRUNDeUFJUVFGcklRZ2dBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUFFaEF5QUtJQXBGSUJNYkRBRUxJQUlnQVVFUWRHc2hBaUFEUVlDQUFuRkZCRUFnQ3lnQ0JDRUtJQXdnQzBFTVFRZ2dBU0FEU3lJVEcyb29BZ0EyQWdBRFFBSkFJQWdOQUNBRUtBSVFJZ2hCQVdvaEN5QUlMUUFCSVFFZ0NDMEFBRUgvQVVZRVFDQUJRWkFCVHdSQUlBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFnTUFnc2dCQ0FMTmdJUUlBRkJDWFFnQW1vaEFrRUhJUWdNQVFzZ0JDQUxOZ0lRUVFnaENDQUJRUWgwSUFKcUlRSUxJQWhCQVdzaENDQUNRUUYwSVFJZ0EwRUJkQ0lEUVlDQUFra05BQXNnQ2tVZ0NpQVRHd3dCQ3lBTEtBSUVDd1IvSUFNZ0VDQUhLQUlFUVJSMlFRUnhJQWRCQkdzaUNpZ0NBRUVXZGtFQmNTQUdRUTkyUVJCeElBWkJFM1pCd0FCeElCUkJxZ0Z4Y25KeWNpSVVRZEM1QVdvdEFBQkJBblJxSWd3b0FnQWlDeWdDQUNJQmF5RURJQlJCMExzQmFpMEFBQ0VUSUFrZ0JTQVJBbjhnQVNBQ1FSQjJTd1JBSUFzb0FnUWhGQ0FNSUF0QkNFRU1JQUVnQTBzaURodHFLQUlBTmdJQUEwQUNRQ0FJRFFBZ0JDZ0NFQ0lJUVFGcUlRc2dDQzBBQVNFRElBZ3RBQUJCL3dGR0JFQWdBMEdRQVU4RVFDQUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFSURBSUxJQVFnQ3pZQ0VDQURRUWwwSUFKcUlRSkJCeUVJREFFTElBUWdDellDRUVFSUlRZ2dBMEVJZENBQ2FpRUNDeUFJUVFGcklRZ2dBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUFFaEF5QVVJQlJGSUE0YkRBRUxJQUlnQVVFUWRHc2hBaUFEUVlDQUFuRkZCRUFnQ3lnQ0JDRVVJQXdnQzBFTVFRZ2dBU0FEU3lJT0cyb29BZ0EyQWdBRFFBSkFJQWdOQUNBRUtBSVFJZ2hCQVdvaEN5QUlMUUFCSVFFZ0NDMEFBRUgvQVVZRVFDQUJRWkFCVHdSQUlBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFnTUFnc2dCQ0FMTmdJUUlBRkJDWFFnQW1vaEFrRUhJUWdNQVFzZ0JDQUxOZ0lRUVFnaENDQUJRUWgwSUFKcUlRSUxJQWhCQVdzaENDQUNRUUYwSVFJZ0EwRUJkQ0lEUVlDQUFra05BQXNnRkVVZ0ZDQU9Hd3dCQ3lBTEtBSUVDeUFUY3lJQkd6WUNnQUlnQ2lBS0tBSUFRWUFDY2pZQ0FDQUhJQWNvQWdSQndBQnlOZ0lFSUFZZ0FVRVdkSEpCZ0FGeUJTQUdDMEdBZ0lBSWNpRUdDd0pBSUFaQmdJaUF3QUJ4RFFBZ0JrSEE5d0Z4UlEwQUlBTWdFQ0FFS0FKc0lBWkJCbllpRkVIdkEzRnFMUUFBUVFKMGFpSU1LQUlBSWdzb0FnQWlBV3NoQXdKL0lBRWdBa0VRZGtzRVFDQUxLQUlFSVFvZ0RDQUxRUWhCRENBQklBTkxJaE1iYWlnQ0FEWUNBQU5BQWtBZ0NBMEFJQVFvQWhBaUNFRUJhaUVMSUFndEFBRWhBeUFJTFFBQVFmOEJSZ1JBSUFOQmtBRlBCRUFnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hDQXdDQ3lBRUlBczJBaEFnQTBFSmRDQUNhaUVDUVFjaENBd0JDeUFFSUFzMkFoQkJDQ0VJSUFOQkNIUWdBbW9oQWdzZ0NFRUJheUVJSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QUJJUU1nQ2lBS1JTQVRHd3dCQ3lBQ0lBRkJFSFJySVFJZ0EwR0FnQUp4UlFSQUlBc29BZ1FoQ2lBTUlBdEJERUVJSUFFZ0Ewc2lFeHRxS0FJQU5nSUFBMEFDUUNBSURRQWdCQ2dDRUNJSVFRRnFJUXNnQ0MwQUFTRUJJQWd0QUFCQi93RkdCRUFnQVVHUUFVOEVRQ0FFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUlEQUlMSUFRZ0N6WUNFQ0FCUVFsMElBSnFJUUpCQnlFSURBRUxJQVFnQ3pZQ0VFRUlJUWdnQVVFSWRDQUNhaUVDQ3lBSVFRRnJJUWdnQWtFQmRDRUNJQU5CQVhRaUEwR0FnQUpKRFFBTElBcEZJQW9nRXhzTUFRc2dDeWdDQkFzRWZ5QURJQkFnQnlnQ0JFRVhka0VFY1NBSFFRUnJJZ29vQWdCQkdYWkJBWEVnQmtFU2RrRVFjU0FHUVJaMlFjQUFjU0FVUWFvQmNYSnljbklpRkVIUXVRRnFMUUFBUVFKMGFpSU1LQUlBSWdzb0FnQWlBV3NoQXlBVVFkQzdBV290QUFBaEV5QUpJQVVnRVFKL0lBRWdBa0VRZGtzRVFDQUxLQUlFSVJRZ0RDQUxRUWhCRENBQklBTkxJZzRiYWlnQ0FEWUNBQU5BQWtBZ0NBMEFJQVFvQWhBaUNFRUJhaUVMSUFndEFBRWhBeUFJTFFBQVFmOEJSZ1JBSUFOQmtBRlBCRUFnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hDQXdDQ3lBRUlBczJBaEFnQTBFSmRDQUNhaUVDUVFjaENBd0JDeUFFSUFzMkFoQkJDQ0VJSUFOQkNIUWdBbW9oQWdzZ0NFRUJheUVJSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QUJJUU1nRkNBVVJTQU9Hd3dCQ3lBQ0lBRkJFSFJySVFJZ0EwR0FnQUp4UlFSQUlBc29BZ1FoRkNBTUlBdEJERUVJSUFFZ0Ewc2lEaHRxS0FJQU5nSUFBMEFDUUNBSURRQWdCQ2dDRUNJSVFRRnFJUXNnQ0MwQUFTRUJJQWd0QUFCQi93RkdCRUFnQVVHUUFVOEVRQ0FFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUlEQUlMSUFRZ0N6WUNFQ0FCUVFsMElBSnFJUUpCQnlFSURBRUxJQVFnQ3pZQ0VFRUlJUWdnQVVFSWRDQUNhaUVDQ3lBSVFRRnJJUWdnQWtFQmRDRUNJQU5CQVhRaUEwR0FnQUpKRFFBTElCUkZJQlFnRGhzTUFRc2dDeWdDQkFzZ0UzTWlBUnMyQW9BRUlBb2dDaWdDQUVHQUVISTJBZ0FnQnlBSEtBSUVRWUFFY2pZQ0JDQUdJQUZCR1hSeVFZQUljZ1VnQmd0QmdJQ0F3QUJ5SVFZTEFrQWdCa0dBd0lDQUJIRU5BQ0FHUVlDOEQzRkZEUUFnQXlBUUlBUW9BbXdnQmtFSmRpSVVRZThEY1dvdEFBQkJBblJxSWd3b0FnQWlDeWdDQUNJQmF5RURBbjhnQVNBQ1FSQjJTd1JBSUFzb0FnUWhDaUFNSUF0QkNFRU1JQUVnQTBzaUV4dHFLQUlBTmdJQUEwQUNRQ0FJRFFBZ0JDZ0NFQ0lJUVFGcUlRc2dDQzBBQVNFRElBZ3RBQUJCL3dGR0JFQWdBMEdRQVU4RVFDQUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFSURBSUxJQVFnQ3pZQ0VDQURRUWwwSUFKcUlRSkJCeUVJREFFTElBUWdDellDRUVFSUlRZ2dBMEVJZENBQ2FpRUNDeUFJUVFGcklRZ2dBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUFFaEF5QUtJQXBGSUJNYkRBRUxJQUlnQVVFUWRHc2hBaUFEUVlDQUFuRkZCRUFnQ3lnQ0JDRUtJQXdnQzBFTVFRZ2dBU0FEU3lJVEcyb29BZ0EyQWdBRFFBSkFJQWdOQUNBRUtBSVFJZ2hCQVdvaEN5QUlMUUFCSVFFZ0NDMEFBRUgvQVVZRVFDQUJRWkFCVHdSQUlBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFnTUFnc2dCQ0FMTmdJUUlBRkJDWFFnQW1vaEFrRUhJUWdNQVFzZ0JDQUxOZ0lRUVFnaENDQUJRUWgwSUFKcUlRSUxJQWhCQVdzaENDQUNRUUYwSVFJZ0EwRUJkQ0lEUVlDQUFra05BQXNnQ2tVZ0NpQVRHd3dCQ3lBTEtBSUVDd1IvSUFNZ0VDQUhLQUlFUVJwMlFRUnhJQWRCQkdzaUNpZ0NBRUVjZGtFQmNTQUdRUlYyUVJCeElBWkJHWFpCd0FCeElCUkJxZ0Z4Y25KeWNpSVVRZEM1QVdvdEFBQkJBblJxSWd3b0FnQWlDeWdDQUNJQmF5RURJQlJCMExzQmFpMEFBQ0VUSUFrZ0JTQVJBbjhnQVNBQ1FSQjJTd1JBSUFzb0FnUWhGQ0FNSUF0QkNFRU1JQUVnQTBzaURodHFLQUlBTmdJQUEwQUNRQ0FJRFFBZ0JDZ0NFQ0lJUVFGcUlRc2dDQzBBQVNFRElBZ3RBQUJCL3dGR0JFQWdBMEdRQVU4RVFDQUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFSURBSUxJQVFnQ3pZQ0VDQURRUWwwSUFKcUlRSkJCeUVJREFFTElBUWdDellDRUVFSUlRZ2dBMEVJZENBQ2FpRUNDeUFJUVFGcklRZ2dBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUFFaEF5QVVJQlJGSUE0YkRBRUxJQUlnQVVFUWRHc2hBaUFEUVlDQUFuRkZCRUFnQ3lnQ0JDRVVJQXdnQzBFTVFRZ2dBU0FEU3lJT0cyb29BZ0EyQWdBRFFBSkFJQWdOQUNBRUtBSVFJZ2hCQVdvaEN5QUlMUUFCSVFFZ0NDMEFBRUgvQVVZRVFDQUJRWkFCVHdSQUlBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFnTUFnc2dCQ0FMTmdJUUlBRkJDWFFnQW1vaEFrRUhJUWdNQVFzZ0JDQUxOZ0lRUVFnaENDQUJRUWgwSUFKcUlRSUxJQWhCQVdzaENDQUNRUUYwSVFJZ0EwRUJkQ0lEUVlDQUFra05BQXNnRkVVZ0ZDQU9Hd3dCQ3lBTEtBSUVDeUFUY3lJQkd6WUNnQVlnQ2lBS0tBSUFRWUNBQVhJMkFnQWdCeUFIS0FJRVFZQWdjallDQkNBSElBY29Bb1FDUVFSeU5nS0VBaUFISUFjb0Fvd0NRUUZ5TmdLTUFpQUhJQWNvQW9nQ0lBRkJFblJ5UVFKeU5nS0lBaUFHSUFGQkhIUnlRWURBQUhJRklBWUxRWUNBZ0lBRWNpRUdDeUFISUFZMkFnQUxJQWRCQkdvaEJpQUpRUVJxSVFFZ0YwRUJhaUlYUWNBQVJ3MEFDeUFIUVF4cUlRWWdDVUdFQm1vaEFTQU5RVHhKSVZRZ0RVRUVhaUVOSUZRTkFBc0xJQVFnQ0RZQ0NDQUVJQU0yQWdRZ0JDQUNOZ0lBSUFRZ0REWUNhQXNNQWdzZ0lnUkFRUUVnR1hSQkFYWWhDU0FFS0FKOEloRkJBblFpRENBRUtBSjRha0VNYWlFQklBUW9BblFoQmtFQUlRMGdCQ2dDZ0FFaUEwRUVUd1JBSUJGRkRRUWdFVUVEYkNFRklCRkJBWFFoQzBFQUlBbHJJUUlEUUNBTFFRSjBJUXBCQUNFREEwQUNRQ0FCSWdjb0FnQWlBVVVOQUNBQlFaQ0FnQUZ4UVJCR0JFQWdCQ2dDQUNFQkFrQWdCQ2dDQ0NJUURRQWdBVUgvQVVZaEVDQUVLQUlRSWdndEFBQWhBUUpBSUJCRkJFQWdCQ0FCTmdJQUlBUWdDRUVCYWpZQ0VBd0JDeUFCUVk4QlRRUkFJQVFnQVRZQ0FDQUVJQWhCQVdvMkFoQkJCeUVRREFJTFFmOEJJUUVnQkVIL0FUWUNBQXRCQ0NFUUN5QUVJQkJCQVdzaUNEWUNDQ0FHSUFJZ0NTQUJJQWgyUVFGeElBWW9BZ0FpQVVFZmRrWWJJQUZxTmdJQUlBY2dCeWdDQUVHQWdNQUFjaUlCTmdJQUN5QUJRWUNCZ0FoeFFZQUJSZ1JBSUFRb0FnQWhBUUpBSUFRb0FnZ2lFQTBBSUFGQi93RkdJUkFnQkNnQ0VDSUlMUUFBSVFFQ1FDQVFSUVJBSUFRZ0FUWUNBQ0FFSUFoQkFXbzJBaEFNQVFzZ0FVR1BBVTBFUUNBRUlBRTJBZ0FnQkNBSVFRRnFOZ0lRUVFjaEVBd0NDMEgvQVNFQklBUkIvd0UyQWdBTFFRZ2hFQXNnQkNBUVFRRnJJZ2cyQWdnZ0JpQU1haUlRSUFJZ0NTQUJJQWgyUVFGeElCQW9BZ0FpQVVFZmRrWWJJQUZxTmdJQUlBY2dCeWdDQUVHQWdJQUVjaUlCTmdJQUN5QUJRWUNJZ01BQWNVR0FDRVlFUUNBRUtBSUFJUUVDUUNBRUtBSUlJaEFOQUNBQlFmOEJSaUVRSUFRb0FoQWlDQzBBQUNFQkFrQWdFRVVFUUNBRUlBRTJBZ0FnQkNBSVFRRnFOZ0lRREFFTElBRkJqd0ZOQkVBZ0JDQUJOZ0lBSUFRZ0NFRUJhallDRUVFSElSQU1BZ3RCL3dFaEFTQUVRZjhCTmdJQUMwRUlJUkFMSUFRZ0VFRUJheUlJTmdJSUlBWWdDbW9pRUNBQ0lBa2dBU0FJZGtFQmNTQVFLQUlBSWdGQkgzWkdHeUFCYWpZQ0FDQUhJQWNvQWdCQmdJQ0FJSElpQVRZQ0FBc2dBVUdBd0lDQUJIRkJnTUFBUncwQUlBWWdCVUVDZEdvaEVDQUVLQUlBSVFFQ1FDQUVLQUlJSWdnTkFDQUJRZjhCUmlFVUlBUW9BaEFpQ0MwQUFDRUJBa0FnRkVVRVFDQUVJQUUyQWdBZ0JDQUlRUUZxTmdJUURBRUxJQUZCandGTkJFQWdCQ0FCTmdJQUlBUWdDRUVCYWpZQ0VFRUhJUWdNQWd0Qi93RWhBU0FFUWY4Qk5nSUFDMEVJSVFnTElBUWdDRUVCYXlJSU5nSUlJQkFnQWlBSklBRWdDSFpCQVhFZ0VDZ0NBQ0lCUVI5MlJoc2dBV28yQWdBZ0J5QUhLQUlBUVlDQWdJQUNjallDQUFzZ0JrRUVhaUVHSUFkQkJHb2hBU0FEUVFGcUlnTWdFVWNOQUFzZ0IwRU1haUVCSUFZZ0JVRUNkR29oQmlBTlFRUnFJZzBnQkNnQ2dBRWlBMEY4Y1VrTkFBc0xJQU1nRFUwTkFpQVJSUTBDUVFBaEUwRUFJQWxySVFVZ0F5RUhBMEFDUUNBSElBMUdCRUFnRFNFSERBRUxJQUVvQWdBaEVFRUFJUUlEUUVHUWdJQUJJQUpCQTJ3aUIzUWdFSEZCRUNBSGRFWUVRQ0FHSUFJZ0VXeEJBblJxSVJBZ0JDZ0NBQ0VEQWtBZ0JDZ0NDQ0lJRFFBZ0EwSC9BVWNoRENBRUtBSVFJZ2d0QUFBaEF3SkFJQXhGQkVBZ0EwR1FBVThFUUVIL0FTRURJQVJCL3dFMkFnQU1BZ3NnQkNBRE5nSUFJQVFnQ0VFQmFqWUNFRUVISVFnTUFnc2dCQ0FETmdJQUlBUWdDRUVCYWpZQ0VBdEJDQ0VJQ3lBRUlBaEJBV3NpQ0RZQ0NDQVFJQVVnQ1NBRElBaDJRUUZ4SUJBb0FnQWlBMEVmZGtZYklBTnFOZ0lBSUFFZ0FTZ0NBRUdBZ01BQUlBZDBjaUlRTmdJQUlBUW9Bb0FCSVFNTElBTWhCeUFDUVFGcUlnSWdBeUFOYTBrTkFBc0xJQVpCQkdvaEJpQUJRUVJxSVFFZ0UwRUJhaUlUSUJGSERRQUxEQUlMSUFRb0FuZ2hDQ0FFS0FKMElRY2dCQ2dDZ0FFaEF3SkFJQVFvQW53aURFSEFBRWNOQUNBRFFjQUFSdzBBSUFoQmpBSnFJUU5CQUNFVFFRQkJBU0FaZEVFQmRpSUZheUVNSUFRb0FnZ2hBaUFFS0FJRUlRWWdCQ2dDQUNFQklBUW9BbWdoRFFOQVFRQWhDQU5BSUFjaENTQURJaEFvQWdBaUJ3UkFJQU1oVlNBSFFaQ0FnQUZ4UVJCR0JFQWdCaUFQUVJCQkQwRU9JQWRCN3dOeEd5QUhRWUNBd0FCeEcwRUNkR29pRFNnQ0FDSVJLQUlBSWdOcklRWUNmeUFESUFGQkVIWkxCRUFnRVNnQ0JDRUxJQTBnRVVFSVFRd2dBeUFHU3lJS0cyb29BZ0EyQWdBRFFBSkFJQUlOQUNBRUtBSVFJZ0pCQVdvaEVTQUNMUUFCSVFZZ0FpMEFBRUgvQVVZRVFDQUdRWkFCVHdSQUlBUWdCQ2dDREVFQmFqWUNEQ0FCUVlEK0Eyb2hBVUVJSVFJTUFnc2dCQ0FSTmdJUUlBWkJDWFFnQVdvaEFVRUhJUUlNQVFzZ0JDQVJOZ0lRUVFnaEFpQUdRUWgwSUFGcUlRRUxJQUpCQVdzaEFpQUJRUUYwSVFFZ0EwRUJkQ0lEUVlDQUFra05BQXNnQXlFR0lBc2dDMFVnQ2hzTUFRc2dBU0FEUVJCMGF5RUJJQVpCZ0lBQ2NVVUVRQ0FSS0FJRUlRc2dEU0FSUVF4QkNDQURJQVpMSWdvYmFpZ0NBRFlDQUFOQUFrQWdBZzBBSUFRb0FoQWlBa0VCYWlFUklBSXRBQUVoQXlBQ0xRQUFRZjhCUmdSQUlBTkJrQUZQQkVBZ0JDQUVLQUlNUVFGcU5nSU1JQUZCZ1A0RGFpRUJRUWdoQWd3Q0N5QUVJQkUyQWhBZ0EwRUpkQ0FCYWlFQlFRY2hBZ3dCQ3lBRUlCRTJBaEJCQ0NFQ0lBTkJDSFFnQVdvaEFRc2dBa0VCYXlFQ0lBRkJBWFFoQVNBR1FRRjBJZ1pCZ0lBQ1NRMEFDeUFMUlNBTElBb2JEQUVMSUJFb0FnUUxJUU1nQ1NBTUlBVWdBeUFKS0FJQUloRkJIM1pHR3lBUmFqWUNBQ0FIUVlDQXdBQnlJUWNMSUFkQmdJR0FDSEZCZ0FGR0JFQWdCaUFQUVJCQkQwRU9JQWRCK0I1eEd5QUhRWUNBZ0FSeEcwRUNkR29pRFNnQ0FDSVJLQUlBSWdOcklRWUNmeUFESUFGQkVIWkxCRUFnRVNnQ0JDRUxJQTBnRVVFSVFRd2dBeUFHU3lJS0cyb29BZ0EyQWdBRFFBSkFJQUlOQUNBRUtBSVFJZ0pCQVdvaEVTQUNMUUFCSVFZZ0FpMEFBRUgvQVVZRVFDQUdRWkFCVHdSQUlBUWdCQ2dDREVFQmFqWUNEQ0FCUVlEK0Eyb2hBVUVJSVFJTUFnc2dCQ0FSTmdJUUlBWkJDWFFnQVdvaEFVRUhJUUlNQVFzZ0JDQVJOZ0lRUVFnaEFpQUdRUWgwSUFGcUlRRUxJQUpCQVdzaEFpQUJRUUYwSVFFZ0EwRUJkQ0lEUVlDQUFra05BQXNnQXlFR0lBc2dDMFVnQ2hzTUFRc2dBU0FEUVJCMGF5RUJJQVpCZ0lBQ2NVVUVRQ0FSS0FJRUlRc2dEU0FSUVF4QkNDQURJQVpMSWdvYmFpZ0NBRFlDQUFOQUFrQWdBZzBBSUFRb0FoQWlBa0VCYWlFUklBSXRBQUVoQXlBQ0xRQUFRZjhCUmdSQUlBTkJrQUZQQkVBZ0JDQUVLQUlNUVFGcU5nSU1JQUZCZ1A0RGFpRUJRUWdoQWd3Q0N5QUVJQkUyQWhBZ0EwRUpkQ0FCYWlFQlFRY2hBZ3dCQ3lBRUlCRTJBaEJCQ0NFQ0lBTkJDSFFnQVdvaEFRc2dBa0VCYXlFQ0lBRkJBWFFoQVNBR1FRRjBJZ1pCZ0lBQ1NRMEFDeUFMUlNBTElBb2JEQUVMSUJFb0FnUUxJUU1nQ1NBTUlBVWdBeUFKS0FLQUFpSVJRUjkyUmhzZ0VXbzJBb0FDSUFkQmdJQ0FCSEloQndzZ0IwR0FpSURBQUhGQmdBaEdCRUFnQmlBUFFSQkJEMEVPSUFkQndQY0JjUnNnQjBHQWdJQWdjUnRCQW5ScUlnMG9BZ0FpRVNnQ0FDSURheUVHQW44Z0F5QUJRUkIyU3dSQUlCRW9BZ1FoQ3lBTklCRkJDRUVNSUFNZ0Jrc2lDaHRxS0FJQU5nSUFBMEFDUUNBQ0RRQWdCQ2dDRUNJQ1FRRnFJUkVnQWkwQUFTRUdJQUl0QUFCQi93RkdCRUFnQmtHUUFVOEVRQ0FFSUFRb0FneEJBV28yQWd3Z0FVR0EvZ05xSVFGQkNDRUNEQUlMSUFRZ0VUWUNFQ0FHUVFsMElBRnFJUUZCQnlFQ0RBRUxJQVFnRVRZQ0VFRUlJUUlnQmtFSWRDQUJhaUVCQ3lBQ1FRRnJJUUlnQVVFQmRDRUJJQU5CQVhRaUEwR0FnQUpKRFFBTElBTWhCaUFMSUF0RklBb2JEQUVMSUFFZ0EwRVFkR3NoQVNBR1FZQ0FBbkZGQkVBZ0VTZ0NCQ0VMSUEwZ0VVRU1RUWdnQXlBR1N5SUtHMm9vQWdBMkFnQURRQUpBSUFJTkFDQUVLQUlRSWdKQkFXb2hFU0FDTFFBQklRTWdBaTBBQUVIL0FVWUVRQ0FEUVpBQlR3UkFJQVFnQkNnQ0RFRUJhallDRENBQlFZRCtBMm9oQVVFSUlRSU1BZ3NnQkNBUk5nSVFJQU5CQ1hRZ0FXb2hBVUVISVFJTUFRc2dCQ0FSTmdJUVFRZ2hBaUFEUVFoMElBRnFJUUVMSUFKQkFXc2hBaUFCUVFGMElRRWdCa0VCZENJR1FZQ0FBa2tOQUFzZ0MwVWdDeUFLR3d3QkN5QVJLQUlFQ3lFRElBa2dEQ0FGSUFNZ0NTZ0NnQVFpRVVFZmRrWWJJQkZxTmdLQUJDQUhRWUNBZ0NCeUlRY0xJRlVnQjBHQXdJQ0FCSEZCZ01BQVJnUi9JQVlnRDBFUVFROUJEaUFIUVlDOEQzRWJJQWRCZ0lDQWdBSnhHMEVDZEdvaURTZ0NBQ0lSS0FJQUlnTnJJUVlDZnlBRElBRkJFSFpMQkVBZ0VTZ0NCQ0VMSUEwZ0VVRUlRUXdnQXlBR1N5SUtHMm9vQWdBMkFnQURRQUpBSUFJTkFDQUVLQUlRSWdKQkFXb2hFU0FDTFFBQklRWWdBaTBBQUVIL0FVWUVRQ0FHUVpBQlR3UkFJQVFnQkNnQ0RFRUJhallDRENBQlFZRCtBMm9oQVVFSUlRSU1BZ3NnQkNBUk5nSVFJQVpCQ1hRZ0FXb2hBVUVISVFJTUFRc2dCQ0FSTmdJUVFRZ2hBaUFHUVFoMElBRnFJUUVMSUFKQkFXc2hBaUFCUVFGMElRRWdBMEVCZENJRFFZQ0FBa2tOQUFzZ0F5RUdJQXNnQzBVZ0Noc01BUXNnQVNBRFFSQjBheUVCSUFaQmdJQUNjVVVFUUNBUktBSUVJUXNnRFNBUlFReEJDQ0FESUFaTElnb2JhaWdDQURZQ0FBTkFBa0FnQWcwQUlBUW9BaEFpQWtFQmFpRVJJQUl0QUFFaEF5QUNMUUFBUWY4QlJnUkFJQU5Ca0FGUEJFQWdCQ0FFS0FJTVFRRnFOZ0lNSUFGQmdQNERhaUVCUVFnaEFnd0NDeUFFSUJFMkFoQWdBMEVKZENBQmFpRUJRUWNoQWd3QkN5QUVJQkUyQWhCQkNDRUNJQU5CQ0hRZ0FXb2hBUXNnQWtFQmF5RUNJQUZCQVhRaEFTQUdRUUYwSWdaQmdJQUNTUTBBQ3lBTFJTQUxJQW9iREFFTElCRW9BZ1FMSVFNZ0NTQU1JQVVnQXlBSktBS0FCaUlSUVI5MlJoc2dFV28yQW9BR0lBZEJnSUNBZ0FKeUJTQUhDellDQUFzZ0VFRUVhaUVESUFsQkJHb2hCeUFJUVFGcUlnaEJ3QUJIRFFBTElCQkJER29oQXlBSlFZUUdhaUVISUJOQlBFa2hWaUFUUVFScUlSTWdWZzBBQ3lBRUlBSTJBZ2dnQkNBR05nSUVJQVFnQVRZQ0FDQUVJQTAyQW1nTUFndEJBU0FaZEVFQmRpRUxJQWdnREVFQ2RDSU9ha0VNYWlFSklBUW9BZ2doQWlBRUtBSUVJUVlnQkNnQ0FDRUJJQVFvQW1naERVRUFJUkVDUUNBRFFRUkpEUUFnREFSQUlBeEJBMndoRkNBTVFRRjBJUmRCQUNBTGF5RUtBMEFnRjBFQ2RDRVNRUUFoQ0FOQUlBa2lCU2dDQUNJUUJFQWdFRUdRZ0lBQmNVRVFSZ1JBSUFZZ0QwRVFRUTlCRGlBUVFlOERjUnNnRUVHQWdNQUFjUnRCQW5ScUlnMG9BZ0FpQ1NnQ0FDSURheUVHQW44Z0F5QUJRUkIyVFFSQUlBRWdBMEVRZEdzaEFTQUdRWUNBQW5FRVFDQUpLQUlFREFJTElBa29BZ1FoRXlBTklBbEJERUVJSUFNZ0Jrc2lGUnRxS0FJQU5nSUFBMEFDUUNBQ0RRQWdCQ2dDRUNJSlFRRnFJUUlnQ1MwQUFTRURJQWt0QUFCQi93RkhCRUFnQkNBQ05nSVFRUWdoQWlBRFFRaDBJQUZxSVFFTUFRc2dBMEdQQVUwRVFDQUVJQUkyQWhBZ0EwRUpkQ0FCYWlFQlFRY2hBZ3dCQ3lBRUlBUW9BZ3hCQVdvMkFnd2dBVUdBL2dOcUlRRkJDQ0VDQ3lBQ1FRRnJJUUlnQVVFQmRDRUJJQVpCQVhRaUJrR0FnQUpKRFFBTElCTkZJQk1nRlJzTUFRc2dDU2dDQkNFVElBMGdDVUVJUVF3Z0F5QUdTeUlWRzJvb0FnQTJBZ0FEUUFKQUlBSU5BQ0FFS0FJUUlnbEJBV29oQWlBSkxRQUJJUVlnQ1MwQUFFSC9BVWNFUUNBRUlBSTJBaEJCQ0NFQ0lBWkJDSFFnQVdvaEFRd0JDeUFHUVk4QlRRUkFJQVFnQWpZQ0VDQUdRUWwwSUFGcUlRRkJCeUVDREFFTElBUWdCQ2dDREVFQmFqWUNEQ0FCUVlEK0Eyb2hBVUVJSVFJTElBSkJBV3NoQWlBQlFRRjBJUUVnQTBFQmRDSURRWUNBQWtrTkFBc2dBeUVHSUJNZ0UwVWdGUnNMSVFNZ0J5QUtJQXNnQXlBSEtBSUFJZ2xCSDNaR0d5QUphallDQUNBUVFZQ0F3QUJ5SVJBTElCQkJnSUdBQ0hGQmdBRkdCRUFnQmlBUFFSQkJEMEVPSUJCQitCNXhHeUFRUVlDQWdBUnhHMEVDZEdvaURTZ0NBQ0lKS0FJQUlnTnJJUVlDZnlBRElBRkJFSFpOQkVBZ0FTQURRUkIwYXlFQklBWkJnSUFDY1FSQUlBa29BZ1FNQWdzZ0NTZ0NCQ0VUSUEwZ0NVRU1RUWdnQXlBR1N5SVZHMm9vQWdBMkFnQURRQUpBSUFJTkFDQUVLQUlRSWdsQkFXb2hBaUFKTFFBQklRTWdDUzBBQUVIL0FVY0VRQ0FFSUFJMkFoQkJDQ0VDSUFOQkNIUWdBV29oQVF3QkN5QURRWThCVFFSQUlBUWdBallDRUNBRFFRbDBJQUZxSVFGQkJ5RUNEQUVMSUFRZ0JDZ0NERUVCYWpZQ0RDQUJRWUQrQTJvaEFVRUlJUUlMSUFKQkFXc2hBaUFCUVFGMElRRWdCa0VCZENJR1FZQ0FBa2tOQUFzZ0UwVWdFeUFWR3d3QkN5QUpLQUlFSVJNZ0RTQUpRUWhCRENBRElBWkxJaFViYWlnQ0FEWUNBQU5BQWtBZ0FnMEFJQVFvQWhBaUNVRUJhaUVDSUFrdEFBRWhCaUFKTFFBQVFmOEJSd1JBSUFRZ0FqWUNFRUVJSVFJZ0JrRUlkQ0FCYWlFQkRBRUxJQVpCandGTkJFQWdCQ0FDTmdJUUlBWkJDWFFnQVdvaEFVRUhJUUlNQVFzZ0JDQUVLQUlNUVFGcU5nSU1JQUZCZ1A0RGFpRUJRUWdoQWdzZ0FrRUJheUVDSUFGQkFYUWhBU0FEUVFGMElnTkJnSUFDU1EwQUN5QURJUVlnRXlBVFJTQVZHd3NoQXlBSElBNXFJZ2tnQ2lBTElBTWdDU2dDQUNJSlFSOTJSaHNnQ1dvMkFnQWdFRUdBZ0lBRWNpRVFDeUFRUVlDSWdNQUFjVUdBQ0VZRVFDQUdJQTlCRUVFUFFRNGdFRUhBOXdGeEd5QVFRWUNBZ0NCeEcwRUNkR29pRFNnQ0FDSUpLQUlBSWdOcklRWUNmeUFESUFGQkVIWk5CRUFnQVNBRFFSQjBheUVCSUFaQmdJQUNjUVJBSUFrb0FnUU1BZ3NnQ1NnQ0JDRVRJQTBnQ1VFTVFRZ2dBeUFHU3lJVkcyb29BZ0EyQWdBRFFBSkFJQUlOQUNBRUtBSVFJZ2xCQVdvaEFpQUpMUUFCSVFNZ0NTMEFBRUgvQVVjRVFDQUVJQUkyQWhCQkNDRUNJQU5CQ0hRZ0FXb2hBUXdCQ3lBRFFZOEJUUVJBSUFRZ0FqWUNFQ0FEUVFsMElBRnFJUUZCQnlFQ0RBRUxJQVFnQkNnQ0RFRUJhallDRENBQlFZRCtBMm9oQVVFSUlRSUxJQUpCQVdzaEFpQUJRUUYwSVFFZ0JrRUJkQ0lHUVlDQUFra05BQXNnRTBVZ0V5QVZHd3dCQ3lBSktBSUVJUk1nRFNBSlFRaEJEQ0FESUFaTEloVWJhaWdDQURZQ0FBTkFBa0FnQWcwQUlBUW9BaEFpQ1VFQmFpRUNJQWt0QUFFaEJpQUpMUUFBUWY4QlJ3UkFJQVFnQWpZQ0VFRUlJUUlnQmtFSWRDQUJhaUVCREFFTElBWkJqd0ZOQkVBZ0JDQUNOZ0lRSUFaQkNYUWdBV29oQVVFSElRSU1BUXNnQkNBRUtBSU1RUUZxTmdJTUlBRkJnUDREYWlFQlFRZ2hBZ3NnQWtFQmF5RUNJQUZCQVhRaEFTQURRUUYwSWdOQmdJQUNTUTBBQ3lBRElRWWdFeUFUUlNBVkd3c2hBeUFISUJKcUlna2dDaUFMSUFNZ0NTZ0NBQ0lKUVI5MlJoc2dDV28yQWdBZ0VFR0FnSUFnY2lFUUN5QUZJQkJCZ01DQWdBUnhRWURBQUVZRWZ5QUdJQTlCRUVFUFFRNGdFRUdBdkE5eEd5QVFRWUNBZ0lBQ2NSdEJBblJxSWcwb0FnQWlDU2dDQUNJRGF5RUdBbjhnQXlBQlFSQjJUUVJBSUFFZ0EwRVFkR3NoQVNBR1FZQ0FBbkVFUUNBSktBSUVEQUlMSUFrb0FnUWhFeUFOSUFsQkRFRUlJQU1nQmtzaUZSdHFLQUlBTmdJQUEwQUNRQ0FDRFFBZ0JDZ0NFQ0lKUVFGcUlRSWdDUzBBQVNFRElBa3RBQUJCL3dGSEJFQWdCQ0FDTmdJUVFRZ2hBaUFEUVFoMElBRnFJUUVNQVFzZ0EwR1BBVTBFUUNBRUlBSTJBaEFnQTBFSmRDQUJhaUVCUVFjaEFnd0JDeUFFSUFRb0FneEJBV28yQWd3Z0FVR0EvZ05xSVFGQkNDRUNDeUFDUVFGcklRSWdBVUVCZENFQklBWkJBWFFpQmtHQWdBSkpEUUFMSUJORklCTWdGUnNNQVFzZ0NTZ0NCQ0VUSUEwZ0NVRUlRUXdnQXlBR1N5SVZHMm9vQWdBMkFnQURRQUpBSUFJTkFDQUVLQUlRSWdsQkFXb2hBaUFKTFFBQklRWWdDUzBBQUVIL0FVY0VRQ0FFSUFJMkFoQkJDQ0VDSUFaQkNIUWdBV29oQVF3QkN5QUdRWThCVFFSQUlBUWdBallDRUNBR1FRbDBJQUZxSVFGQkJ5RUNEQUVMSUFRZ0JDZ0NERUVCYWpZQ0RDQUJRWUQrQTJvaEFVRUlJUUlMSUFKQkFXc2hBaUFCUVFGMElRRWdBMEVCZENJRFFZQ0FBa2tOQUFzZ0F5RUdJQk1nRTBVZ0ZSc0xJUU1nQnlBVVFRSjBhaUlKSUFvZ0N5QURJQWtvQWdBaUNVRWZka1liSUFscU5nSUFJQkJCZ0lDQWdBSnlCU0FRQ3pZQ0FBc2dCVUVFYWlFSklBZEJCR29oQnlBSVFRRnFJZ2dnREVjTkFBc2dCVUVNYWlFSklBY2dGRUVDZEdvaEJ5QVJRUVJxSWhFZ0JDZ0NnQUVpQTBGOGNVa05BQXNNQVF0QkJDQURRWHh4SWdrZ0NVRUVUUnRCQVdzaUNVRjhjVUVFYWlFUklBZ2dDVUVCZEVGNGNXcEJGR29oQ1FzZ0JDQUNOZ0lJSUFRZ0JqWUNCQ0FFSUFFMkFnQWdCQ0FOTmdKb0lBeEZEUUVnQXlBUlRRMEJRUUFoRTBFQUlBdHJJUlFnQXlFQkEwQUNRQ0FCSUJGR0JFQWdFU0VCREFFTElBa29BZ0FoQWtFQUlSQURRRUdRZ0lBQklCQkJBMndpQ0hRZ0FuRkJFQ0FJZEVZRVFDQUhJQXdnRUd4QkFuUnFJUVVnQkNBUFFSQkJEMEVPSUFJZ0NIWWlBVUh2QTNFYklBRkJnSURBQUhFYlFRSjBhaUlOTmdKb0lBUWdCQ2dDQkNBTktBSUFJZ0lvQWdBaUFXc2lBellDQkFKL0lBRWdCQ2dDQUNJR1FSQjJTd1JBSUFJb0FnUWhDaUFFSUFFMkFnUWdEU0FDUVFoQkRDQUJJQU5MSWc0YmFpZ0NBRFlDQUNBRUtBSUlJUUlEUUFKQUlBSU5BQ0FFS0FJUUlnSkJBV29oRFNBQ0xRQUJJUU1nQWkwQUFFSC9BVVlFUUNBRFFaQUJUd1JBSUFRZ0JDZ0NERUVCYWpZQ0RDQUdRWUQrQTJvaEJrRUlJUUlNQWdzZ0JDQU5OZ0lRSUFOQkNYUWdCbW9oQmtFSElRSU1BUXNnQkNBTk5nSVFRUWdoQWlBRFFRaDBJQVpxSVFZTElBUWdBa0VCYXlJQ05nSUlJQVFnQmtFQmRDSUdOZ0lBSUFRZ0FVRUJkQ0lCTmdJRUlBRkJnSUFDU1EwQUN5QUtJQXBGSUE0YkRBRUxJQVFnQmlBQlFSQjBheUlHTmdJQUlBTkJnSUFDY1VVRVFDQUNLQUlFSVFvZ0RTQUNRUXhCQ0NBQklBTkxJZzRiYWlnQ0FEWUNBQ0FFS0FJSUlRSURRQUpBSUFJTkFDQUVLQUlRSWdKQkFXb2hEU0FDTFFBQklRRWdBaTBBQUVIL0FVWUVRQ0FCUVpBQlR3UkFJQVFnQkNnQ0RFRUJhallDRENBR1FZRCtBMm9oQmtFSUlRSU1BZ3NnQkNBTk5nSVFJQUZCQ1hRZ0Jtb2hCa0VISVFJTUFRc2dCQ0FOTmdJUVFRZ2hBaUFCUVFoMElBWnFJUVlMSUFRZ0FrRUJheUlDTmdJSUlBUWdCa0VCZENJR05nSUFJQVFnQTBFQmRDSUROZ0lFSUFOQmdJQUNTUTBBQ3lBS1JTQUtJQTRiREFFTElBSW9BZ1FMSVFFZ0JTQVVJQXNnQVNBRktBSUFJZ05CSDNaR0d5QURhallDQUNBSklBa29BZ0JCZ0lEQUFDQUlkSElpQWpZQ0FDQUVLQUtBQVNFREN5QVFRUUZxSWhBZ0F5SUJJQkZyU1EwQUN3c2dDVUVFYWlFSklBZEJCR29oQnlBVFFRRnFJaE1nREVjTkFBc01BUXRCQUNFUlFRQWhGd0pBQWtBQ1FBSkFJQVFvQW53aUZFSEFBRWNOQUNBRUtBS0FBVUhBQUVjTkFFRUFRUUVnR1hRaUFVRUJkaUFCY2lJVWF5RVRJQVJCNUFCcUlRZ2dCRUhnQUdvaEVDQUVRUnhxSVFzZ0JDZ0NlRUdNQW1vaEJpQUVLQUlJSVFVZ0JDZ0NCQ0VCSUFRb0FnQWhBaUFFS0FKb0lRa2dCQ2dDZENFRElCWkJDSEVOQVFOQVFRQWhEQU5BSUFNaEVRSkFBa0FDZndKQUFrQWdCaUlOS0FJQUlnWkZCRUFnQVNBUUtBSUFJZ01vQWdBaUJtc2hBUUovSUFZZ0FrRVFka3NFUUNBREtBSUVJUWNnRUNBRFFRaEJEQ0FCSUFaSklnb2JhaWdDQURZQ0FBTkFBa0FnQlEwQUlBUW9BaEFpQTBFQmFpRUpJQU10QUFFaEFTQURMUUFBUWY4QlJnUkFJQUZCa0FGUEJFQWdCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJRd0NDeUFFSUFrMkFoQWdBVUVKZENBQ2FpRUNRUWNoQlF3QkN5QUVJQWsyQWhCQkNDRUZJQUZCQ0hRZ0Ftb2hBZ3NnQlVFQmF5RUZJQUpCQVhRaEFpQUdRUUYwSWdaQmdJQUNTUTBBQ3lBR0lRRWdCeUFIUlNBS0d3d0JDeUFDSUFaQkVIUnJJUUlnQVVHQWdBSnhSUVJBSUFNb0FnUWhCeUFRSUFOQkRFRUlJQUVnQmtraUNodHFLQUlBTmdJQUEwQUNRQ0FGRFFBZ0JDZ0NFQ0lHUVFGcUlRa2dCaTBBQVNFRElBWXRBQUJCL3dGR0JFQWdBMEdRQVU4RVFDQUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRkRBSUxJQVFnQ1RZQ0VDQURRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdDVFlDRUVFSUlRVWdBMEVJZENBQ2FpRUNDeUFGUVFGcklRVWdBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUFkRklBY2dDaHNNQVFzZ0F5Z0NCQXRGQkVBZ0VDRUpEQVlMSUFFZ0NDZ0NBQ0lES0FJQUlnWnJJUUVDZnlBR0lBSkJFSFpMQkVBZ0F5Z0NCQ0VISUFnZ0EwRUlRUXdnQVNBR1NTSUtHMm9vQWdBaUF6WUNBQU5BQWtBZ0JRMEFJQVFvQWhBaUNVRUJhaUVGSUFrdEFBRWhBU0FKTFFBQVFmOEJSZ1JBSUFGQmtBRlBCRUFnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCUXdDQ3lBRUlBVTJBaEFnQVVFSmRDQUNhaUVDUVFjaEJRd0JDeUFFSUFVMkFoQkJDQ0VGSUFGQkNIUWdBbW9oQWdzZ0JVRUJheUVGSUFKQkFYUWhBaUFHUVFGMElnWkJnSUFDU1EwQUN5QUdJUUVnQnlBSFJTQUtHd3dCQ3lBQ0lBWkJFSFJySVFJZ0FVR0FnQUp4UlFSQUlBTW9BZ1FoQnlBSUlBTkJERUVJSUFFZ0Jra2lDaHRxS0FJQUlnTTJBZ0FEUUFKQUlBVU5BQ0FFS0FJUUlnbEJBV29oQlNBSkxRQUJJUVlnQ1MwQUFFSC9BVVlFUUNBR1FaQUJUd1JBSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVVNQWdzZ0JDQUZOZ0lRSUFaQkNYUWdBbW9oQWtFSElRVU1BUXNnQkNBRk5nSVFRUWdoQlNBR1FRaDBJQUpxSVFJTElBVkJBV3NoQlNBQ1FRRjBJUUlnQVVFQmRDSUJRWUNBQWtrTkFBc2dCMFVnQnlBS0d3d0JDeUFES0FJRUN5RUtJQUVnQXlnQ0FDSUdheUVCQW44Z0JpQUNRUkIyU3dSQUlBTW9BZ1FoQnlBSUlBTkJDRUVNSUFFZ0Jra2lEaHRxS0FJQU5nSUFBMEFDUUNBRkRRQWdCQ2dDRUNJRFFRRnFJUWtnQXkwQUFTRUJJQU10QUFCQi93RkdCRUFnQVVHUUFVOEVRQ0FFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUZEQUlMSUFRZ0NUWUNFQ0FCUVFsMElBSnFJUUpCQnlFRkRBRUxJQVFnQ1RZQ0VFRUlJUVVnQVVFSWRDQUNhaUVDQ3lBRlFRRnJJUVVnQWtFQmRDRUNJQVpCQVhRaUJrR0FnQUpKRFFBTElBWWhBU0FISUFkRklBNGJEQUVMSUFJZ0JrRVFkR3NoQWlBQlFZQ0FBbkZGQkVBZ0F5Z0NCQ0VISUFnZ0EwRU1RUWdnQVNBR1NTSU9HMm9vQWdBMkFnQURRQUpBSUFVTkFDQUVLQUlRSWdaQkFXb2hDU0FHTFFBQklRTWdCaTBBQUVIL0FVWUVRQ0FEUVpBQlR3UkFJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRVU1BZ3NnQkNBSk5nSVFJQU5CQ1hRZ0Ftb2hBa0VISVFVTUFRc2dCQ0FKTmdJUVFRZ2hCU0FEUVFoMElBSnFJUUlMSUFWQkFXc2hCU0FDUVFGMElRSWdBVUVCZENJQlFZQ0FBa2tOQUFzZ0IwVWdCeUFPR3d3QkN5QURLQUlFQ3lFRFFRQWhCaUFJSVFrQ1FBSkFBa0FDZndKQUFrQWdBeUFLUVFGMGNnNEVBQUVEQlFvTElBRWdDeUFOS0FJRVFSRjJRUVJ4SUExQkJHc2lCeWdDQUVFVGRrRUJjWElpRGtIUXVRRnFMUUFBUVFKMGFpSUpLQUlBSWdNb0FnQWlCbXNoQVFKL0lBWWdBa0VRZGtzRVFDQURLQUlFSVFvZ0NTQURRUWhCRENBQklBWkpJaEliYWlnQ0FEWUNBQU5BQWtBZ0JRMEFJQVFvQWhBaUEwRUJhaUVKSUFNdEFBRWhBU0FETFFBQVFmOEJSZ1JBSUFGQmtBRlBCRUFnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCUXdDQ3lBRUlBazJBaEFnQVVFSmRDQUNhaUVDUVFjaEJRd0JDeUFFSUFrMkFoQkJDQ0VGSUFGQkNIUWdBbW9oQWdzZ0JVRUJheUVGSUFKQkFYUWhBaUFHUVFGMElnWkJnSUFDU1EwQUN5QUdJUUVnQ2lBS1JTQVNHd3dCQ3lBQ0lBWkJFSFJySVFJZ0FVR0FnQUp4UlFSQUlBTW9BZ1FoQ2lBSklBTkJERUVJSUFFZ0Jra2lFaHRxS0FJQU5nSUFBMEFDUUNBRkRRQWdCQ2dDRUNJR1FRRnFJUWtnQmkwQUFTRURJQVl0QUFCQi93RkdCRUFnQTBHUUFVOEVRQ0FFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUZEQUlMSUFRZ0NUWUNFQ0FEUVFsMElBSnFJUUpCQnlFRkRBRUxJQVFnQ1RZQ0VFRUlJUVVnQTBFSWRDQUNhaUVDQ3lBRlFRRnJJUVVnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBcEZJQW9nRWhzTUFRc2dBeWdDQkFzaEF5QVJJQk1nRkNBRElBNUIwTHNCYWkwQUFITWlBeHMyQWdBZ0J5QUhLQUlBUVNCeU5nSUFJQTBnRFNnQ0JFRUljallDQkNBTlFZd0NheUlHSUFZb0FnQkJnSUFJY2pZQ0FDQU5RWVFDYXlJR0lBWW9BZ0JCZ0lBQ2NqWUNBQ0FOUVlnQ2F5SUdJQVlvQWdBZ0EwRWZkSEpCZ0lBRWNqWUNBQ0FEUVJOMElWY2dBU0FMSUFRb0Ftd3RBQUpCQW5ScUlnY29BZ0FpQXlnQ0FDSUdheUVCQW44Z0JpQUNRUkIyU3dSQUlBTW9BZ1FoQ1NBSElBTkJDRUVNSUFFZ0Jra2lEaHRxS0FJQU5nSUFBMEFDUUNBRkRRQWdCQ2dDRUNJRFFRRnFJUWNnQXkwQUFTRUJJQU10QUFCQi93RkdCRUFnQVVHUUFVOEVRQ0FFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUZEQUlMSUFRZ0J6WUNFQ0FCUVFsMElBSnFJUUpCQnlFRkRBRUxJQVFnQnpZQ0VFRUlJUVVnQVVFSWRDQUNhaUVDQ3lBRlFRRnJJUVVnQWtFQmRDRUNJQVpCQVhRaUJrR0FnQUpKRFFBTElBWWhBU0FKSUFsRklBNGJEQUVMSUFJZ0JrRVFkR3NoQWlBQlFZQ0FBbkZGQkVBZ0F5Z0NCQ0VKSUFjZ0EwRU1RUWdnQVNBR1NTSU9HMm9vQWdBMkFnQURRQUpBSUFVTkFDQUVLQUlRSWdaQkFXb2hCeUFHTFFBQklRTWdCaTBBQUVIL0FVWUVRQ0FEUVpBQlR3UkFJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRVU1BZ3NnQkNBSE5nSVFJQU5CQ1hRZ0Ftb2hBa0VISVFVTUFRc2dCQ0FITmdJUVFRZ2hCU0FEUVFoMElBSnFJUUlMSUFWQkFXc2hCU0FDUVFGMElRSWdBVUVCZENJQlFZQ0FBa2tOQUFzZ0NVVWdDU0FPR3d3QkN5QURLQUlFQ3lFRElGZEJFSElpQmlBRFJRMEJHZ3NnQVNBTElBMG9BZ1JCRkhaQkJIRWdEVUVFYXlJSktBSUFRUloyUVFGeElBWkJEM1pCRUhFZ0JrRVRka0hBQUhFZ0JrRURka0dxQVhGeWNuSnlJaEpCMExrQmFpMEFBRUVDZEdvaUNpZ0NBQ0lIS0FJQUlnTnJJUUVDZnlBRElBSkJFSFpMQkVBZ0J5Z0NCQ0VPSUFvZ0IwRUlRUXdnQVNBRFNTSUtHMm9vQWdBMkFnQURRQUpBSUFVTkFDQUVLQUlRSWdkQkFXb2hCU0FITFFBQklRRWdCeTBBQUVIL0FVWUVRQ0FCUVpBQlR3UkFJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRVU1BZ3NnQkNBRk5nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFVTUFRc2dCQ0FGTmdJUVFRZ2hCU0FCUVFoMElBSnFJUUlMSUFWQkFXc2hCU0FDUVFGMElRSWdBMEVCZENJRFFZQ0FBa2tOQUFzZ0F5RUJJQTRnRGtVZ0Noc01BUXNnQWlBRFFSQjBheUVDSUFGQmdJQUNjVVVFUUNBSEtBSUVJUTRnQ2lBSFFReEJDQ0FCSUFOSklnb2JhaWdDQURZQ0FBTkFBa0FnQlEwQUlBUW9BaEFpQjBFQmFpRUZJQWN0QUFFaEF5QUhMUUFBUWY4QlJnUkFJQU5Ca0FGUEJFQWdCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJRd0NDeUFFSUFVMkFoQWdBMEVKZENBQ2FpRUNRUWNoQlF3QkN5QUVJQVUyQWhCQkNDRUZJQU5CQ0hRZ0Ftb2hBZ3NnQlVFQmF5RUZJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBT1JTQU9JQW9iREFFTElBY29BZ1FMSVFNZ0VTQVRJQlFnQXlBU1FkQzdBV290QUFCeklnTWJOZ0tBQWlBSklBa29BZ0JCZ0FKeU5nSUFJQTBnRFNnQ0JFSEFBSEkyQWdRZ0JpQURRUlowY2tHQUFYSUxJUVlnQVNBTElBUW9BbXdnQmtFR2RrSHZBM0ZxTFFBQVFRSjBhaUlKS0FJQUlnY29BZ0FpQTJzaEFRSi9JQU1nQWtFUWRrc0VRQ0FIS0FJRUlRb2dDU0FIUVFoQkRDQUJJQU5KSWc0YmFpZ0NBRFlDQUFOQUFrQWdCUTBBSUFRb0FoQWlCMEVCYWlFSklBY3RBQUVoQVNBSExRQUFRZjhCUmdSQUlBRkJrQUZQQkVBZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQlF3Q0N5QUVJQWsyQWhBZ0FVRUpkQ0FDYWlFQ1FRY2hCUXdCQ3lBRUlBazJBaEJCQ0NFRklBRkJDSFFnQW1vaEFnc2dCVUVCYXlFRklBSkJBWFFoQWlBRFFRRjBJZ05CZ0lBQ1NRMEFDeUFESVFFZ0NpQUtSU0FPR3d3QkN5QUNJQU5CRUhScklRSWdBVUdBZ0FKeFJRUkFJQWNvQWdRaENpQUpJQWRCREVFSUlBRWdBMGtpRGh0cUtBSUFOZ0lBQTBBQ1FDQUZEUUFnQkNnQ0VDSUhRUUZxSVFrZ0J5MEFBU0VESUFjdEFBQkIvd0ZHQkVBZ0EwR1FBVThFUUNBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VGREFJTElBUWdDVFlDRUNBRFFRbDBJQUpxSVFKQkJ5RUZEQUVMSUFRZ0NUWUNFRUVJSVFVZ0EwRUlkQ0FDYWlFQ0N5QUZRUUZySVFVZ0FrRUJkQ0VDSUFGQkFYUWlBVUdBZ0FKSkRRQUxJQXBGSUFvZ0Roc01BUXNnQnlnQ0JBdEZEUUVMSUFFZ0N5QU5LQUlFUVJkMlFRUnhJQTFCQkdzaUNTZ0NBRUVaZGtFQmNTQUdRUkoyUVJCeElBWkJGblpCd0FCeElBWkJCblpCcWdGeGNuSnljaUlTUWRDNUFXb3RBQUJCQW5ScUlnb29BZ0FpQnlnQ0FDSURheUVCQW44Z0F5QUNRUkIyU3dSQUlBY29BZ1FoRGlBS0lBZEJDRUVNSUFFZ0Ewa2lDaHRxS0FJQU5nSUFBMEFDUUNBRkRRQWdCQ2dDRUNJSFFRRnFJUVVnQnkwQUFTRUJJQWN0QUFCQi93RkdCRUFnQVVHUUFVOEVRQ0FFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUZEQUlMSUFRZ0JUWUNFQ0FCUVFsMElBSnFJUUpCQnlFRkRBRUxJQVFnQlRZQ0VFRUlJUVVnQVVFSWRDQUNhaUVDQ3lBRlFRRnJJUVVnQWtFQmRDRUNJQU5CQVhRaUEwR0FnQUpKRFFBTElBTWhBU0FPSUE1RklBb2JEQUVMSUFJZ0EwRVFkR3NoQWlBQlFZQ0FBbkZGQkVBZ0J5Z0NCQ0VPSUFvZ0IwRU1RUWdnQVNBRFNTSUtHMm9vQWdBMkFnQURRQUpBSUFVTkFDQUVLQUlRSWdkQkFXb2hCU0FITFFBQklRTWdCeTBBQUVIL0FVWUVRQ0FEUVpBQlR3UkFJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRVU1BZ3NnQkNBRk5nSVFJQU5CQ1hRZ0Ftb2hBa0VISVFVTUFRc2dCQ0FGTmdJUVFRZ2hCU0FEUVFoMElBSnFJUUlMSUFWQkFXc2hCU0FDUVFGMElRSWdBVUVCZENJQlFZQ0FBa2tOQUFzZ0RrVWdEaUFLR3d3QkN5QUhLQUlFQ3lFRElCRWdFeUFVSUFNZ0VrSFF1d0ZxTFFBQWN5SURHellDZ0FRZ0NTQUpLQUlBUVlBUWNqWUNBQ0FOSUEwb0FnUkJnQVJ5TmdJRUlBWWdBMEVaZEhKQmdBaHlJUVlMSUFFZ0N5QUVLQUpzSUFaQkNYWkI3d054YWkwQUFFRUNkR29pQ1NnQ0FDSUhLQUlBSWdOcklRRUNmeUFESUFKQkVIWkxCRUFnQnlnQ0JDRUtJQWtnQjBFSVFRd2dBU0FEU1NJT0cyb29BZ0EyQWdBRFFBSkFJQVVOQUNBRUtBSVFJZ2RCQVdvaEJTQUhMUUFCSVFFZ0J5MEFBRUgvQVVZRVFDQUJRWkFCVHdSQUlBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTUFnc2dCQ0FGTmdJUUlBRkJDWFFnQW1vaEFrRUhJUVVNQVFzZ0JDQUZOZ0lRUVFnaEJTQUJRUWgwSUFKcUlRSUxJQVZCQVdzaEJTQUNRUUYwSVFJZ0EwRUJkQ0lEUVlDQUFra05BQXNnQXlFQklBb2dDa1VnRGhzTUFRc2dBaUFEUVJCMGF5RUNJQUZCZ0lBQ2NVVUVRQ0FIS0FJRUlRb2dDU0FIUVF4QkNDQUJJQU5KSWc0YmFpZ0NBRFlDQUFOQUFrQWdCUTBBSUFRb0FoQWlCMEVCYWlFRklBY3RBQUVoQXlBSExRQUFRZjhCUmdSQUlBTkJrQUZQQkVBZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQlF3Q0N5QUVJQVUyQWhBZ0EwRUpkQ0FDYWlFQ1FRY2hCUXdCQ3lBRUlBVTJBaEJCQ0NFRklBTkJDSFFnQW1vaEFnc2dCVUVCYXlFRklBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFLUlNBS0lBNGJEQUVMSUFjb0FnUUxSUTBGQ3lBQklBc2dEU2dDQkVFYWRrRUVjU0FOUVFScklnNG9BZ0JCSEhaQkFYRWdCa0VWZGtFUWNTQUdRUmwyUWNBQWNTQUdRUWwyUWFvQmNYSnljbklpQ2tIUXVRRnFMUUFBUVFKMGFpSUpLQUlBSWdjb0FnQWlBMnNoQVNBRElBSkJFSFpMQkVBZ0J5Z0NCQ0VTSUFrZ0IwRUlRUXdnQVNBRFNTSVZHMm9vQWdBMkFnQURRQUpBSUFVTkFDQUVLQUlRSWdkQkFXb2hCU0FITFFBQklRRWdCeTBBQUVIL0FVWUVRQ0FCUVpBQlR3UkFJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRVU1BZ3NnQkNBRk5nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFVTUFRc2dCQ0FGTmdJUVFRZ2hCU0FCUVFoMElBSnFJUUlMSUFWQkFXc2hCU0FDUVFGMElRSWdBMEVCZENJRFFZQ0FBa2tOQUFzZ0F5RUJJQklnRWtVZ0ZSc01CQXNnQWlBRFFSQjBheUVDSUFGQmdJQUNjUTBCSUFjb0FnUWhFaUFKSUFkQkRFRUlJQUVnQTBraUZSdHFLQUlBTmdJQUEwQUNRQ0FGRFFBZ0JDZ0NFQ0lIUVFGcUlRVWdCeTBBQVNFRElBY3RBQUJCL3dGR0JFQWdBMEdRQVU4RVFDQUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRkRBSUxJQVFnQlRZQ0VDQURRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdCVFlDRUVFSUlRVWdBMEVJZENBQ2FpRUNDeUFGUVFGcklRVWdBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUJKRklCSWdGUnNNQXdzQ1FDQUdRWkNBZ0FGeERRQWdBU0FMSUFRb0Ftd2dCa0h2QTNGcUxRQUFRUUowYWlJSktBSUFJZ2NvQWdBaUEyc2hBUUovSUFNZ0FrRVFka3NFUUNBSEtBSUVJUW9nQ1NBSFFRaEJEQ0FCSUFOSklnNGJhaWdDQURZQ0FBTkFBa0FnQlEwQUlBUW9BaEFpQjBFQmFpRUZJQWN0QUFFaEFTQUhMUUFBUWY4QlJnUkFJQUZCa0FGUEJFQWdCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJRd0NDeUFFSUFVMkFoQWdBVUVKZENBQ2FpRUNRUWNoQlF3QkN5QUVJQVUyQWhCQkNDRUZJQUZCQ0hRZ0Ftb2hBZ3NnQlVFQmF5RUZJQUpCQVhRaEFpQURRUUYwSWdOQmdJQUNTUTBBQ3lBRElRRWdDaUFLUlNBT0d3d0JDeUFDSUFOQkVIUnJJUUlnQVVHQWdBSnhSUVJBSUFjb0FnUWhDaUFKSUFkQkRFRUlJQUVnQTBraURodHFLQUlBTmdJQUEwQUNRQ0FGRFFBZ0JDZ0NFQ0lIUVFGcUlRVWdCeTBBQVNFRElBY3RBQUJCL3dGR0JFQWdBMEdRQVU4RVFDQUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRkRBSUxJQVFnQlRZQ0VDQURRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdCVFlDRUVFSUlRVWdBMEVJZENBQ2FpRUNDeUFGUVFGcklRVWdBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUFwRklBb2dEaHNNQVFzZ0J5Z0NCQXRGRFFBZ0FTQUxJQTBvQWdSQkVYWkJCSEVnRFVFRWF5SUtLQUlBUVJOMlFRRnhJQVpCRG5aQkVIRWdCa0VRZGtIQUFIRWdCa0dxQVhGeWNuSnlJaEpCMExrQmFpMEFBRUVDZEdvaUNTZ0NBQ0lIS0FJQUlnTnJJUUVDZnlBRElBSkJFSFpMQkVBZ0J5Z0NCQ0VPSUFrZ0IwRUlRUXdnQVNBRFNTSVZHMm9vQWdBMkFnQURRQUpBSUFVTkFDQUVLQUlRSWdkQkFXb2hCU0FITFFBQklRRWdCeTBBQUVIL0FVWUVRQ0FCUVpBQlR3UkFJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRVU1BZ3NnQkNBRk5nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFVTUFRc2dCQ0FGTmdJUVFRZ2hCU0FCUVFoMElBSnFJUUlMSUFWQkFXc2hCU0FDUVFGMElRSWdBMEVCZENJRFFZQ0FBa2tOQUFzZ0F5RUJJQTRnRGtVZ0ZSc01BUXNnQWlBRFFSQjBheUVDSUFGQmdJQUNjVVVFUUNBSEtBSUVJUTRnQ1NBSFFReEJDQ0FCSUFOSkloVWJhaWdDQURZQ0FBTkFBa0FnQlEwQUlBUW9BaEFpQjBFQmFpRUZJQWN0QUFFaEF5QUhMUUFBUWY4QlJnUkFJQU5Ca0FGUEJFQWdCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJRd0NDeUFFSUFVMkFoQWdBMEVKZENBQ2FpRUNRUWNoQlF3QkN5QUVJQVUyQWhCQkNDRUZJQU5CQ0hRZ0Ftb2hBZ3NnQlVFQmF5RUZJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBT1JTQU9JQlViREFFTElBY29BZ1FMSVFNZ0VTQVRJQlFnQXlBU1FkQzdBV290QUFCeklnTWJOZ0lBSUFvZ0NpZ0NBRUVnY2pZQ0FDQU5JQTBvQWdSQkNISTJBZ1FnRFVHTUFtc2lCeUFIS0FJQVFZQ0FDSEkyQWdBZ0RVR0VBbXNpQnlBSEtBSUFRWUNBQW5JMkFnQWdEVUdJQW1zaUJ5QUhLQUlBSUFOQkgzUnlRWUNBQkhJMkFnQWdCaUFEUVJOMGNrRVFjaUVHQ3dKQUlBWkJnSUdBQ0hFTkFDQUJJQXNnQkNnQ2JDQUdRUU4ySWc1Qjd3TnhhaTBBQUVFQ2RHb2lDU2dDQUNJSEtBSUFJZ05ySVFFQ2Z5QURJQUpCRUhaTEJFQWdCeWdDQkNFS0lBa2dCMEVJUVF3Z0FTQURTU0lTRzJvb0FnQTJBZ0FEUUFKQUlBVU5BQ0FFS0FJUUlnZEJBV29oQlNBSExRQUJJUUVnQnkwQUFFSC9BVVlFUUNBQlFaQUJUd1JBSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVVNQWdzZ0JDQUZOZ0lRSUFGQkNYUWdBbW9oQWtFSElRVU1BUXNnQkNBRk5nSVFRUWdoQlNBQlFRaDBJQUpxSVFJTElBVkJBV3NoQlNBQ1FRRjBJUUlnQTBFQmRDSURRWUNBQWtrTkFBc2dBeUVCSUFvZ0NrVWdFaHNNQVFzZ0FpQURRUkIwYXlFQ0lBRkJnSUFDY1VVRVFDQUhLQUlFSVFvZ0NTQUhRUXhCQ0NBQklBTkpJaEliYWlnQ0FEWUNBQU5BQWtBZ0JRMEFJQVFvQWhBaUIwRUJhaUVGSUFjdEFBRWhBeUFITFFBQVFmOEJSZ1JBSUFOQmtBRlBCRUFnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCUXdDQ3lBRUlBVTJBaEFnQTBFSmRDQUNhaUVDUVFjaEJRd0JDeUFFSUFVMkFoQkJDQ0VGSUFOQkNIUWdBbW9oQWdzZ0JVRUJheUVGSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QUtSU0FLSUJJYkRBRUxJQWNvQWdRTFJRMEFJQUVnQ3lBTktBSUVRUlIyUVFSeElBMUJCR3NpQ2lnQ0FFRVdka0VCY1NBR1FROTJRUkJ4SUFaQkUzWkJ3QUJ4SUE1QnFnRnhjbkp5Y2lJU1FkQzVBV290QUFCQkFuUnFJZ2tvQWdBaUJ5Z0NBQ0lEYXlFQkFuOGdBeUFDUVJCMlN3UkFJQWNvQWdRaERpQUpJQWRCQ0VFTUlBRWdBMGtpRlJ0cUtBSUFOZ0lBQTBBQ1FDQUZEUUFnQkNnQ0VDSUhRUUZxSVFVZ0J5MEFBU0VCSUFjdEFBQkIvd0ZHQkVBZ0FVR1FBVThFUUNBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VGREFJTElBUWdCVFlDRUNBQlFRbDBJQUpxSVFKQkJ5RUZEQUVMSUFRZ0JUWUNFRUVJSVFVZ0FVRUlkQ0FDYWlFQ0N5QUZRUUZySVFVZ0FrRUJkQ0VDSUFOQkFYUWlBMEdBZ0FKSkRRQUxJQU1oQVNBT0lBNUZJQlViREFFTElBSWdBMEVRZEdzaEFpQUJRWUNBQW5GRkJFQWdCeWdDQkNFT0lBa2dCMEVNUVFnZ0FTQURTU0lWRzJvb0FnQTJBZ0FEUUFKQUlBVU5BQ0FFS0FJUUlnZEJBV29oQlNBSExRQUJJUU1nQnkwQUFFSC9BVVlFUUNBRFFaQUJUd1JBSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVVNQWdzZ0JDQUZOZ0lRSUFOQkNYUWdBbW9oQWtFSElRVU1BUXNnQkNBRk5nSVFRUWdoQlNBRFFRaDBJQUpxSVFJTElBVkJBV3NoQlNBQ1FRRjBJUUlnQVVFQmRDSUJRWUNBQWtrTkFBc2dEa1VnRGlBVkd3d0JDeUFIS0FJRUN5RURJQkVnRXlBVUlBTWdFa0hRdXdGcUxRQUFjeUlER3pZQ2dBSWdDaUFLS0FJQVFZQUNjallDQUNBTklBMG9BZ1JCd0FCeU5nSUVJQVlnQTBFV2RISkJnQUZ5SVFZTEFrQWdCa0dBaUlEQUFIRU5BQ0FCSUFzZ0JDZ0NiQ0FHUVFaMklnNUI3d054YWkwQUFFRUNkR29pQ1NnQ0FDSUhLQUlBSWdOcklRRUNmeUFESUFKQkVIWkxCRUFnQnlnQ0JDRUtJQWtnQjBFSVFRd2dBU0FEU1NJU0cyb29BZ0EyQWdBRFFBSkFJQVVOQUNBRUtBSVFJZ2RCQVdvaEJTQUhMUUFCSVFFZ0J5MEFBRUgvQVVZRVFDQUJRWkFCVHdSQUlBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTUFnc2dCQ0FGTmdJUUlBRkJDWFFnQW1vaEFrRUhJUVVNQVFzZ0JDQUZOZ0lRUVFnaEJTQUJRUWgwSUFKcUlRSUxJQVZCQVdzaEJTQUNRUUYwSVFJZ0EwRUJkQ0lEUVlDQUFra05BQXNnQXlFQklBb2dDa1VnRWhzTUFRc2dBaUFEUVJCMGF5RUNJQUZCZ0lBQ2NVVUVRQ0FIS0FJRUlRb2dDU0FIUVF4QkNDQUJJQU5KSWhJYmFpZ0NBRFlDQUFOQUFrQWdCUTBBSUFRb0FoQWlCMEVCYWlFRklBY3RBQUVoQXlBSExRQUFRZjhCUmdSQUlBTkJrQUZQQkVBZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQlF3Q0N5QUVJQVUyQWhBZ0EwRUpkQ0FDYWlFQ1FRY2hCUXdCQ3lBRUlBVTJBaEJCQ0NFRklBTkJDSFFnQW1vaEFnc2dCVUVCYXlFRklBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFLUlNBS0lCSWJEQUVMSUFjb0FnUUxSUTBBSUFFZ0N5QU5LQUlFUVJkMlFRUnhJQTFCQkdzaUNpZ0NBRUVaZGtFQmNTQUdRUkoyUVJCeElBWkJGblpCd0FCeElBNUJxZ0Z4Y25KeWNpSVNRZEM1QVdvdEFBQkJBblJxSWdrb0FnQWlCeWdDQUNJRGF5RUJBbjhnQXlBQ1FSQjJTd1JBSUFjb0FnUWhEaUFKSUFkQkNFRU1JQUVnQTBraUZSdHFLQUlBTmdJQUEwQUNRQ0FGRFFBZ0JDZ0NFQ0lIUVFGcUlRVWdCeTBBQVNFQklBY3RBQUJCL3dGR0JFQWdBVUdRQVU4RVFDQUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRkRBSUxJQVFnQlRZQ0VDQUJRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdCVFlDRUVFSUlRVWdBVUVJZENBQ2FpRUNDeUFGUVFGcklRVWdBa0VCZENFQ0lBTkJBWFFpQTBHQWdBSkpEUUFMSUFNaEFTQU9JQTVGSUJVYkRBRUxJQUlnQTBFUWRHc2hBaUFCUVlDQUFuRkZCRUFnQnlnQ0JDRU9JQWtnQjBFTVFRZ2dBU0FEU1NJVkcyb29BZ0EyQWdBRFFBSkFJQVVOQUNBRUtBSVFJZ2RCQVdvaEJTQUhMUUFCSVFNZ0J5MEFBRUgvQVVZRVFDQURRWkFCVHdSQUlBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTUFnc2dCQ0FGTmdJUUlBTkJDWFFnQW1vaEFrRUhJUVVNQVFzZ0JDQUZOZ0lRUVFnaEJTQURRUWgwSUFKcUlRSUxJQVZCQVdzaEJTQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnRGtVZ0RpQVZHd3dCQ3lBSEtBSUVDeUVESUJFZ0V5QVVJQU1nRWtIUXV3RnFMUUFBY3lJREd6WUNnQVFnQ2lBS0tBSUFRWUFRY2pZQ0FDQU5JQTBvQWdSQmdBUnlOZ0lFSUFZZ0EwRVpkSEpCZ0FoeUlRWUxJQVpCZ01DQWdBUnhEUU1nQVNBTElBUW9BbXdnQmtFSmRpSVNRZThEY1dvdEFBQkJBblJxSWdrb0FnQWlBU2dDQUNJRGF5RUhBbjhnQXlBQ1FSQjJTd1JBSUFFb0FnUWhDaUFKSUFGQkNFRU1JQU1nQjBzaURodHFLQUlBTmdJQUEwQUNRQ0FGRFFBZ0JDZ0NFQ0lIUVFGcUlRVWdCeTBBQVNFQklBY3RBQUJCL3dGR0JFQWdBVUdRQVU4RVFDQUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRkRBSUxJQVFnQlRZQ0VDQUJRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdCVFlDRUVFSUlRVWdBVUVJZENBQ2FpRUNDeUFGUVFGcklRVWdBa0VCZENFQ0lBTkJBWFFpQTBHQWdBSkpEUUFMSUFNaEJ5QUtJQXBGSUE0YkRBRUxJQUlnQTBFUWRHc2hBaUFIUVlDQUFuRkZCRUFnQVNnQ0JDRUtJQWtnQVVFTVFRZ2dBeUFIU3lJT0cyb29BZ0EyQWdBRFFBSkFJQVVOQUNBRUtBSVFJZ05CQVdvaEJTQURMUUFCSVFFZ0F5MEFBRUgvQVVZRVFDQUJRWkFCVHdSQUlBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTUFnc2dCQ0FGTmdJUUlBRkJDWFFnQW1vaEFrRUhJUVVNQVFzZ0JDQUZOZ0lRUVFnaEJTQUJRUWgwSUFKcUlRSUxJQVZCQVdzaEJTQUNRUUYwSVFJZ0IwRUJkQ0lIUVlDQUFra05BQXNnQ2tVZ0NpQU9Hd3dCQ3lBQktBSUVDMFVFUUNBSElRRU1CQXNnQnlBTElBMG9BZ1JCR25aQkJIRWdEVUVFYXlJT0tBSUFRUngyUVFGeElBWkJGWFpCRUhFZ0JrRVpka0hBQUhFZ0VrR3FBWEZ5Y25KeUlncEIwTGtCYWkwQUFFRUNkR29pQ1NnQ0FDSUhLQUlBSWdGcklRTWdBU0FDUVJCMlN3UkFJQWNvQWdRaEVpQUpJQWRCQ0VFTUlBRWdBMHNpRlJ0cUtBSUFOZ0lBQTBBQ1FDQUZEUUFnQkNnQ0VDSUhRUUZxSVFVZ0J5MEFBU0VESUFjdEFBQkIvd0ZHQkVBZ0EwR1FBVThFUUNBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VGREFJTElBUWdCVFlDRUNBRFFRbDBJQUpxSVFKQkJ5RUZEQUVMSUFRZ0JUWUNFRUVJSVFVZ0EwRUlkQ0FDYWlFQ0N5QUZRUUZySVFVZ0FrRUJkQ0VDSUFGQkFYUWlBVUdBZ0FKSkRRQUxJQklnRWtVZ0ZSc01Bd3NnQWlBQlFSQjBheUVDSUFOQmdJQUNjVVVOQVNBRElRRUxJQWNvQWdRTUFRc2dCeWdDQkNFU0lBa2dCMEVNUVFnZ0FTQURTeUlWRzJvb0FnQTJBZ0FEUUFKQUlBVU5BQ0FFS0FJUUlnZEJBV29oQlNBSExRQUJJUUVnQnkwQUFFSC9BVVlFUUNBQlFaQUJUd1JBSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVVNQWdzZ0JDQUZOZ0lRSUFGQkNYUWdBbW9oQWtFSElRVU1BUXNnQkNBRk5nSVFRUWdoQlNBQlFRaDBJQUpxSVFJTElBVkJBV3NoQlNBQ1FRRjBJUUlnQTBFQmRDSURRWUNBQWtrTkFBc2dBeUVCSUJKRklCSWdGUnNMSVFNZ0VTQVRJQlFnQXlBS1FkQzdBV290QUFCeklnTWJOZ0tBQmlBT0lBNG9BZ0JCZ0lBQmNqWUNBQ0FOSUEwb0FnUkJnQ0J5TmdJRUlBMGdEU2dDaEFKQkJISTJBb1FDSUEwZ0RTZ0NqQUpCQVhJMkFvd0NJQTBnRFNnQ2lBSWdBMEVTZEhKQkFuSTJBb2dDSUFZZ0EwRWNkSEpCZ01BQWNpRUdDeUFOSUFaQi8vLy90bnR4TmdJQUN5QU5RUVJxSVFZZ0VVRUVhaUVESUF4QkFXb2lERUhBQUVjTkFBc2dEVUVNYWlFR0lCRkJoQVpxSVFNZ0YwRThTU0ZZSUJkQkJHb2hGeUJZRFFBTERBSUxRUUVnR1hRaUFVRUJkaUFCY2lFT0lBUW9BbmdpQnlBVVFRSjBha0VNYWlFRElBUW9Bb0FCSVFZZ0JDZ0NDQ0VGSUFRb0FnUWhBU0FFS0FJQUlRSWdCQ2dDYUNFSklBUW9BblFoQ3dKQUFrQWdGa0VJY1FSQUlBWkJCRWtOQWlBVVJRMEJJQVJCNUFCcUlSQWdCRUhnQUdvaERTQVVRUU5zSVJzZ0ZFRUJkQ0VrUVFBZ0Rtc2hGU0FFUVJ4cUlSSURRRUVBSVJnRFFBSkFBa0FDZndKQUlBTWlDQ2dDQUNJREJFQUNRQ0FEUVpDQWdBRnhEUUFnQVNBU0lBUW9BbXdnQTBIdkEzRnFMUUFBUVFKMGFpSUpLQUlBSWdjb0FnQWlCbXNoQVFKL0lBWWdBa0VRZGswRVFDQUNJQVpCRUhScklRSWdBVUdBZ0FKeEJFQWdCeWdDQkF3Q0N5QUhLQUlFSVF3Z0NTQUhRUXhCQ0NBQklBWkpJZ29iYWlnQ0FEWUNBQU5BQWtBZ0JRMEFJQVFvQWhBaUIwRUJhaUVGSUFjdEFBRWhCaUFITFFBQVFmOEJSd1JBSUFRZ0JUWUNFRUVJSVFVZ0JrRUlkQ0FDYWlFQ0RBRUxJQVpCandGTkJFQWdCQ0FGTmdJUUlBWkJDWFFnQW1vaEFrRUhJUVVNQVFzZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQlFzZ0JVRUJheUVGSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QU1SU0FNSUFvYkRBRUxJQWNvQWdRaERDQUpJQWRCQ0VFTUlBRWdCa2tpQ2h0cUtBSUFOZ0lBQTBBQ1FDQUZEUUFnQkNnQ0VDSUhRUUZxSVFVZ0J5MEFBU0VCSUFjdEFBQkIvd0ZIQkVBZ0JDQUZOZ0lRUVFnaEJTQUJRUWgwSUFKcUlRSU1BUXNnQVVHUEFVMEVRQ0FFSUFVMkFoQWdBVUVKZENBQ2FpRUNRUWNoQlF3QkN5QUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRkN5QUZRUUZySVFVZ0FrRUJkQ0VDSUFaQkFYUWlCa0dBZ0FKSkRRQUxJQVloQVNBTUlBeEZJQW9iQzBVTkFDQUJJQklnQ0NnQ0JFRVJka0VFY1NBSVFRUnJJZ3dvQWdCQkUzWkJBWEVnQTBFT2RrRVFjU0FEUVJCMlFjQUFjU0FEUWFvQmNYSnljbklpRTBIUXVRRnFMUUFBUVFKMGFpSUpLQUlBSWdjb0FnQWlCbXNoQVFKL0lBWWdBa0VRZGswRVFDQUNJQVpCRUhScklRSWdBVUdBZ0FKeEJFQWdCeWdDQkF3Q0N5QUhLQUlFSVFvZ0NTQUhRUXhCQ0NBQklBWkpJaHdiYWlnQ0FEWUNBQU5BQWtBZ0JRMEFJQVFvQWhBaUIwRUJhaUVGSUFjdEFBRWhCaUFITFFBQVFmOEJSd1JBSUFRZ0JUWUNFRUVJSVFVZ0JrRUlkQ0FDYWlFQ0RBRUxJQVpCandGTkJFQWdCQ0FGTmdJUUlBWkJDWFFnQW1vaEFrRUhJUVVNQVFzZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQlFzZ0JVRUJheUVGSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QUtSU0FLSUJ3YkRBRUxJQWNvQWdRaENpQUpJQWRCQ0VFTUlBRWdCa2tpSEJ0cUtBSUFOZ0lBQTBBQ1FDQUZEUUFnQkNnQ0VDSUhRUUZxSVFVZ0J5MEFBU0VCSUFjdEFBQkIvd0ZIQkVBZ0JDQUZOZ0lRUVFnaEJTQUJRUWgwSUFKcUlRSU1BUXNnQVVHUEFVMEVRQ0FFSUFVMkFoQWdBVUVKZENBQ2FpRUNRUWNoQlF3QkN5QUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRkN5QUZRUUZySVFVZ0FrRUJkQ0VDSUFaQkFYUWlCa0dBZ0FKSkRRQUxJQVloQVNBS0lBcEZJQndiQ3lFR0lBc2dGU0FPSUFZZ0UwSFF1d0ZxTFFBQWN5SUdHellDQUNBTUlBd29BZ0JCSUhJMkFnQWdDQ0FJS0FJRVFRaHlOZ0lFSUFNZ0JrRVRkSEpCRUhJaEF3c0NRQ0FEUVlDQmdBaHhEUUFnQVNBU0lBUW9BbXdnQTBFRGRpSUtRZThEY1dvdEFBQkJBblJxSWdrb0FnQWlCeWdDQUNJR2F5RUJBbjhnQmlBQ1FSQjJUUVJBSUFJZ0JrRVFkR3NoQWlBQlFZQ0FBbkVFUUNBSEtBSUVEQUlMSUFjb0FnUWhEQ0FKSUFkQkRFRUlJQUVnQmtraUV4dHFLQUlBTmdJQUEwQUNRQ0FGRFFBZ0JDZ0NFQ0lIUVFGcUlRVWdCeTBBQVNFR0lBY3RBQUJCL3dGSEJFQWdCQ0FGTmdJUVFRZ2hCU0FHUVFoMElBSnFJUUlNQVFzZ0JrR1BBVTBFUUNBRUlBVTJBaEFnQmtFSmRDQUNhaUVDUVFjaEJRd0JDeUFFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUZDeUFGUVFGcklRVWdBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUF4RklBd2dFeHNNQVFzZ0J5Z0NCQ0VNSUFrZ0IwRUlRUXdnQVNBR1NTSVRHMm9vQWdBMkFnQURRQUpBSUFVTkFDQUVLQUlRSWdkQkFXb2hCU0FITFFBQklRRWdCeTBBQUVIL0FVY0VRQ0FFSUFVMkFoQkJDQ0VGSUFGQkNIUWdBbW9oQWd3QkN5QUJRWThCVFFSQUlBUWdCVFlDRUNBQlFRbDBJQUpxSVFKQkJ5RUZEQUVMSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVVMSUFWQkFXc2hCU0FDUVFGMElRSWdCa0VCZENJR1FZQ0FBa2tOQUFzZ0JpRUJJQXdnREVVZ0V4c0xSUTBBSUFFZ0VpQUlLQUlFUVJSMlFRUnhJQWhCQkdzaURDZ0NBRUVXZGtFQmNTQURRUTkyUVJCeElBTkJFM1pCd0FCeElBcEJxZ0Z4Y25KeWNpSVRRZEM1QVdvdEFBQkJBblJxSWdrb0FnQWlCeWdDQUNJR2F5RUJBbjhnQmlBQ1FSQjJUUVJBSUFJZ0JrRVFkR3NoQWlBQlFZQ0FBbkVFUUNBSEtBSUVEQUlMSUFjb0FnUWhDaUFKSUFkQkRFRUlJQUVnQmtraUhCdHFLQUlBTmdJQUEwQUNRQ0FGRFFBZ0JDZ0NFQ0lIUVFGcUlRVWdCeTBBQVNFR0lBY3RBQUJCL3dGSEJFQWdCQ0FGTmdJUVFRZ2hCU0FHUVFoMElBSnFJUUlNQVFzZ0JrR1BBVTBFUUNBRUlBVTJBaEFnQmtFSmRDQUNhaUVDUVFjaEJRd0JDeUFFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUZDeUFGUVFGcklRVWdBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUFwRklBb2dIQnNNQVFzZ0J5Z0NCQ0VLSUFrZ0IwRUlRUXdnQVNBR1NTSWNHMm9vQWdBMkFnQURRQUpBSUFVTkFDQUVLQUlRSWdkQkFXb2hCU0FITFFBQklRRWdCeTBBQUVIL0FVY0VRQ0FFSUFVMkFoQkJDQ0VGSUFGQkNIUWdBbW9oQWd3QkN5QUJRWThCVFFSQUlBUWdCVFlDRUNBQlFRbDBJQUpxSVFKQkJ5RUZEQUVMSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVVMSUFWQkFXc2hCU0FDUVFGMElRSWdCa0VCZENJR1FZQ0FBa2tOQUFzZ0JpRUJJQW9nQ2tVZ0hCc0xJUVlnQ3lBVVFRSjBhaUFWSUE0Z0JpQVRRZEM3QVdvdEFBQnpJZ1liTmdJQUlBd2dEQ2dDQUVHQUFuSTJBZ0FnQ0NBSUtBSUVRY0FBY2pZQ0JDQURJQVpCRm5SeVFZQUJjaUVEQ3dKQUlBTkJnSWlBd0FCeERRQWdBU0FTSUFRb0Ftd2dBMEVHZGlJS1FlOERjV290QUFCQkFuUnFJZ2tvQWdBaUJ5Z0NBQ0lHYXlFQkFuOGdCaUFDUVJCMlRRUkFJQUlnQmtFUWRHc2hBaUFCUVlDQUFuRUVRQ0FIS0FJRURBSUxJQWNvQWdRaERDQUpJQWRCREVFSUlBRWdCa2tpRXh0cUtBSUFOZ0lBQTBBQ1FDQUZEUUFnQkNnQ0VDSUhRUUZxSVFVZ0J5MEFBU0VHSUFjdEFBQkIvd0ZIQkVBZ0JDQUZOZ0lRUVFnaEJTQUdRUWgwSUFKcUlRSU1BUXNnQmtHUEFVMEVRQ0FFSUFVMkFoQWdCa0VKZENBQ2FpRUNRUWNoQlF3QkN5QUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRkN5QUZRUUZySVFVZ0FrRUJkQ0VDSUFGQkFYUWlBVUdBZ0FKSkRRQUxJQXhGSUF3Z0V4c01BUXNnQnlnQ0JDRU1JQWtnQjBFSVFRd2dBU0FHU1NJVEcyb29BZ0EyQWdBRFFBSkFJQVVOQUNBRUtBSVFJZ2RCQVdvaEJTQUhMUUFCSVFFZ0J5MEFBRUgvQVVjRVFDQUVJQVUyQWhCQkNDRUZJQUZCQ0hRZ0Ftb2hBZ3dCQ3lBQlFZOEJUUVJBSUFRZ0JUWUNFQ0FCUVFsMElBSnFJUUpCQnlFRkRBRUxJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRVUxJQVZCQVdzaEJTQUNRUUYwSVFJZ0JrRUJkQ0lHUVlDQUFra05BQXNnQmlFQklBd2dERVVnRXhzTFJRMEFJQUVnRWlBSUtBSUVRUmQyUVFSeElBaEJCR3NpRENnQ0FFRVpka0VCY1NBRFFSSjJRUkJ4SUFOQkZuWkJ3QUJ4SUFwQnFnRnhjbkp5Y2lJVFFkQzVBV290QUFCQkFuUnFJZ2tvQWdBaUJ5Z0NBQ0lHYXlFQkFuOGdCaUFDUVJCMlRRUkFJQUlnQmtFUWRHc2hBaUFCUVlDQUFuRUVRQ0FIS0FJRURBSUxJQWNvQWdRaENpQUpJQWRCREVFSUlBRWdCa2tpSEJ0cUtBSUFOZ0lBQTBBQ1FDQUZEUUFnQkNnQ0VDSUhRUUZxSVFVZ0J5MEFBU0VHSUFjdEFBQkIvd0ZIQkVBZ0JDQUZOZ0lRUVFnaEJTQUdRUWgwSUFKcUlRSU1BUXNnQmtHUEFVMEVRQ0FFSUFVMkFoQWdCa0VKZENBQ2FpRUNRUWNoQlF3QkN5QUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRkN5QUZRUUZySVFVZ0FrRUJkQ0VDSUFGQkFYUWlBVUdBZ0FKSkRRQUxJQXBGSUFvZ0hCc01BUXNnQnlnQ0JDRUtJQWtnQjBFSVFRd2dBU0FHU1NJY0cyb29BZ0EyQWdBRFFBSkFJQVVOQUNBRUtBSVFJZ2RCQVdvaEJTQUhMUUFCSVFFZ0J5MEFBRUgvQVVjRVFDQUVJQVUyQWhCQkNDRUZJQUZCQ0hRZ0Ftb2hBZ3dCQ3lBQlFZOEJUUVJBSUFRZ0JUWUNFQ0FCUVFsMElBSnFJUUpCQnlFRkRBRUxJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRVUxJQVZCQVdzaEJTQUNRUUYwSVFJZ0JrRUJkQ0lHUVlDQUFra05BQXNnQmlFQklBb2dDa1VnSEJzTElRWWdDeUFrUVFKMGFpQVZJQTRnQmlBVFFkQzdBV290QUFCeklnWWJOZ0lBSUF3Z0RDZ0NBRUdBRUhJMkFnQWdDQ0FJS0FJRVFZQUVjallDQkNBRElBWkJHWFJ5UVlBSWNpRURDeUFEUVlEQWdJQUVjUTBESUFFZ0VpQUVLQUpzSUFOQkNYWWlDa0h2QTNGcUxRQUFRUUowYWlJSktBSUFJZ0VvQWdBaUJtc2hCd0ovSUFZZ0FrRVFkazBFUUNBQ0lBWkJFSFJySVFJZ0IwR0FnQUp4QkVBZ0FTZ0NCQXdDQ3lBQktBSUVJUXdnQ1NBQlFReEJDQ0FHSUFkTEloTWJhaWdDQURZQ0FBTkFBa0FnQlEwQUlBUW9BaEFpQmtFQmFpRUZJQVl0QUFFaEFTQUdMUUFBUWY4QlJ3UkFJQVFnQlRZQ0VFRUlJUVVnQVVFSWRDQUNhaUVDREFFTElBRkJqd0ZOQkVBZ0JDQUZOZ0lRSUFGQkNYUWdBbW9oQWtFSElRVU1BUXNnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCUXNnQlVFQmF5RUZJQUpCQVhRaEFpQUhRUUYwSWdkQmdJQUNTUTBBQ3lBTVJTQU1JQk1iREFFTElBRW9BZ1FoRENBSklBRkJDRUVNSUFZZ0Iwc2lFeHRxS0FJQU5nSUFBMEFDUUNBRkRRQWdCQ2dDRUNJSFFRRnFJUVVnQnkwQUFTRUJJQWN0QUFCQi93RkhCRUFnQkNBRk5nSVFRUWdoQlNBQlFRaDBJQUpxSVFJTUFRc2dBVUdQQVUwRVFDQUVJQVUyQWhBZ0FVRUpkQ0FDYWlFQ1FRY2hCUXdCQ3lBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VGQ3lBRlFRRnJJUVVnQWtFQmRDRUNJQVpCQVhRaUJrR0FnQUpKRFFBTElBWWhCeUFNSUF4RklCTWJDMFVFUUNBSElRRU1CQXNnQnlBU0lBZ29BZ1JCR25aQkJIRWdDRUVFYXlJTUtBSUFRUngyUVFGeElBTkJGWFpCRUhFZ0EwRVpka0hBQUhFZ0NrR3FBWEZ5Y25KeUloTkIwTGtCYWkwQUFFRUNkR29pQ1NnQ0FDSUtLQUlBSWdGcklRWWdBU0FDUVJCMlRRUkFJQUlnQVVFUWRHc2hBaUFHUVlDQUFuRUVRQ0FHSVFFTUF3c2dDaWdDQkNFSElBa2dDa0VNUVFnZ0FTQUdTeUljRzJvb0FnQTJBZ0FEUUFKQUlBVU5BQ0FFS0FJUUlnVkJBV29oQ2lBRkxRQUJJUUVnQlMwQUFFSC9BVWNFUUNBRUlBbzJBaEJCQ0NFRklBRkJDSFFnQW1vaEFnd0JDeUFCUVk4QlRRUkFJQVFnQ2pZQ0VDQUJRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTElBVkJBV3NoQlNBQ1FRRjBJUUlnQmtFQmRDSUdRWUNBQWtrTkFBc2dCaUVCSUFkRklBY2dIQnNNQXdzZ0NpZ0NCQ0VISUFrZ0NrRUlRUXdnQVNBR1N5SWNHMm9vQWdBMkFnQURRQUpBSUFVTkFDQUVLQUlRSWdWQkFXb2hDaUFGTFFBQklRWWdCUzBBQUVIL0FVY0VRQ0FFSUFvMkFoQkJDQ0VGSUFaQkNIUWdBbW9oQWd3QkN5QUdRWThCVFFSQUlBUWdDallDRUNBR1FRbDBJQUpxSVFKQkJ5RUZEQUVMSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVVMSUFWQkFXc2hCU0FDUVFGMElRSWdBVUVCZENJQlFZQ0FBa2tOQUFzZ0J5QUhSU0FjR3d3Q0N5QUJJQTBvQWdBaUJpZ0NBQ0lEYXlFQkFuOGdBeUFDUVJCMlRRUkFJQUlnQTBFUWRHc2hBaUFCUVlDQUFuRUVRQ0FHS0FJRURBSUxJQVlvQWdRaEJ5QU5JQVpCREVFSUlBRWdBMGtpREJ0cUtBSUFOZ0lBQTBBQ1FDQUZEUUFnQkNnQ0VDSUdRUUZxSVFrZ0JpMEFBU0VESUFZdEFBQkIvd0ZIQkVBZ0JDQUpOZ0lRUVFnaEJTQURRUWgwSUFKcUlRSU1BUXNnQTBHUEFVMEVRQ0FFSUFrMkFoQWdBMEVKZENBQ2FpRUNRUWNoQlF3QkN5QUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRkN5QUZRUUZySVFVZ0FrRUJkQ0VDSUFGQkFYUWlBVUdBZ0FKSkRRQUxJQWRGSUFjZ0RCc01BUXNnQmlnQ0JDRUhJQTBnQmtFSVFRd2dBU0FEU1NJTUcyb29BZ0EyQWdBRFFBSkFJQVVOQUNBRUtBSVFJZ1pCQVdvaENTQUdMUUFCSVFFZ0JpMEFBRUgvQVVjRVFDQUVJQWsyQWhCQkNDRUZJQUZCQ0hRZ0Ftb2hBZ3dCQ3lBQlFZOEJUUVJBSUFRZ0NUWUNFQ0FCUVFsMElBSnFJUUpCQnlFRkRBRUxJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRVUxJQVZCQVdzaEJTQUNRUUYwSVFJZ0EwRUJkQ0lEUVlDQUFra05BQXNnQXlFQklBY2dCMFVnREJzTFJRUkFJQTBoQ1F3RUN5QUJJQkFvQWdBaUJpZ0NBQ0lEYXlFQkFuOGdBeUFDUVJCMlRRUkFJQUlnQTBFUWRHc2hBaUFCUVlDQUFuRUVRQ0FHS0FJRURBSUxJQVlvQWdRaEJ5QVFJQVpCREVFSUlBRWdBMGtpREJ0cUtBSUFJZ1kyQWdBRFFBSkFJQVVOQUNBRUtBSVFJZ2xCQVdvaEJTQUpMUUFCSVFNZ0NTMEFBRUgvQVVjRVFDQUVJQVUyQWhCQkNDRUZJQU5CQ0hRZ0Ftb2hBZ3dCQ3lBRFFZOEJUUVJBSUFRZ0JUWUNFQ0FEUVFsMElBSnFJUUpCQnlFRkRBRUxJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRVUxJQVZCQVdzaEJTQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnQjBVZ0J5QU1Hd3dCQ3lBR0tBSUVJUWNnRUNBR1FRaEJEQ0FCSUFOSklnd2JhaWdDQUNJR05nSUFBMEFDUUNBRkRRQWdCQ2dDRUNJSlFRRnFJUVVnQ1MwQUFTRUJJQWt0QUFCQi93RkhCRUFnQkNBRk5nSVFRUWdoQlNBQlFRaDBJQUpxSVFJTUFRc2dBVUdQQVUwRVFDQUVJQVUyQWhBZ0FVRUpkQ0FDYWlFQ1FRY2hCUXdCQ3lBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VGQ3lBRlFRRnJJUVVnQWtFQmRDRUNJQU5CQVhRaUEwR0FnQUpKRFFBTElBTWhBU0FISUFkRklBd2JDeUVNSUFFZ0JpZ0NBQ0lEYXlFQkFuOGdBeUFDUVJCMlRRUkFJQUlnQTBFUWRHc2hBaUFCUVlDQUFuRUVRQ0FHS0FJRURBSUxJQVlvQWdRaEJ5QVFJQVpCREVFSUlBRWdBMGtpQ2h0cUtBSUFOZ0lBQTBBQ1FDQUZEUUFnQkNnQ0VDSUdRUUZxSVFrZ0JpMEFBU0VESUFZdEFBQkIvd0ZIQkVBZ0JDQUpOZ0lRUVFnaEJTQURRUWgwSUFKcUlRSU1BUXNnQTBHUEFVMEVRQ0FFSUFrMkFoQWdBMEVKZENBQ2FpRUNRUWNoQlF3QkN5QUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRkN5QUZRUUZySVFVZ0FrRUJkQ0VDSUFGQkFYUWlBVUdBZ0FKSkRRQUxJQWRGSUFjZ0Noc01BUXNnQmlnQ0JDRUhJQkFnQmtFSVFRd2dBU0FEU1NJS0cyb29BZ0EyQWdBRFFBSkFJQVVOQUNBRUtBSVFJZ1pCQVdvaENTQUdMUUFCSVFFZ0JpMEFBRUgvQVVjRVFDQUVJQWsyQWhCQkNDRUZJQUZCQ0hRZ0Ftb2hBZ3dCQ3lBQlFZOEJUUVJBSUFRZ0NUWUNFQ0FCUVFsMElBSnFJUUpCQnlFRkRBRUxJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRVUxJQVZCQVdzaEJTQUNRUUYwSVFJZ0EwRUJkQ0lEUVlDQUFra05BQXNnQXlFQklBY2dCMFVnQ2hzTElRWkJBQ0VESUJBaENRSkFBa0FDUUFKL0FrQUNRQ0FHSUF4QkFYUnlEZ1FBQVFNRkNBc2dBU0FTSUFnb0FnUkJFWFpCQkhFZ0NFRUVheUlIS0FJQVFSTjJRUUZ4Y2lJS1FkQzVBV290QUFCQkFuUnFJZ2tvQWdBaUJpZ0NBQ0lEYXlFQkFuOGdBeUFDUVJCMlRRUkFJQUlnQTBFUWRHc2hBaUFCUVlDQUFuRUVRQ0FHS0FJRURBSUxJQVlvQWdRaERDQUpJQVpCREVFSUlBRWdBMGtpRXh0cUtBSUFOZ0lBQTBBQ1FDQUZEUUFnQkNnQ0VDSUdRUUZxSVFrZ0JpMEFBU0VESUFZdEFBQkIvd0ZIQkVBZ0JDQUpOZ0lRUVFnaEJTQURRUWgwSUFKcUlRSU1BUXNnQTBHUEFVMEVRQ0FFSUFrMkFoQWdBMEVKZENBQ2FpRUNRUWNoQlF3QkN5QUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRkN5QUZRUUZySVFVZ0FrRUJkQ0VDSUFGQkFYUWlBVUdBZ0FKSkRRQUxJQXhGSUF3Z0V4c01BUXNnQmlnQ0JDRU1JQWtnQmtFSVFRd2dBU0FEU1NJVEcyb29BZ0EyQWdBRFFBSkFJQVVOQUNBRUtBSVFJZ1pCQVdvaENTQUdMUUFCSVFFZ0JpMEFBRUgvQVVjRVFDQUVJQWsyQWhCQkNDRUZJQUZCQ0hRZ0Ftb2hBZ3dCQ3lBQlFZOEJUUVJBSUFRZ0NUWUNFQ0FCUVFsMElBSnFJUUpCQnlFRkRBRUxJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRVUxJQVZCQVdzaEJTQUNRUUYwSVFJZ0EwRUJkQ0lEUVlDQUFra05BQXNnQXlFQklBd2dERVVnRXhzTElRTWdDeUFWSUE0Z0F5QUtRZEM3QVdvdEFBQnpJZ01iTmdJQUlBY2dCeWdDQUVFZ2NqWUNBQ0FJSUFnb0FnUkJDSEkyQWdRZ0EwRVRkQ0ZaSUFFZ0VpQUVLQUpzTFFBQ1FRSjBhaUlIS0FJQUlnWW9BZ0FpQTJzaEFRSi9JQU1nQWtFUWRrMEVRQ0FDSUFOQkVIUnJJUUlnQVVHQWdBSnhCRUFnQmlnQ0JBd0NDeUFHS0FJRUlRa2dCeUFHUVF4QkNDQUJJQU5KSWdvYmFpZ0NBRFlDQUFOQUFrQWdCUTBBSUFRb0FoQWlCa0VCYWlFSElBWXRBQUVoQXlBR0xRQUFRZjhCUndSQUlBUWdCellDRUVFSUlRVWdBMEVJZENBQ2FpRUNEQUVMSUFOQmp3Rk5CRUFnQkNBSE5nSVFJQU5CQ1hRZ0Ftb2hBa0VISVFVTUFRc2dCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJRc2dCVUVCYXlFRklBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFKUlNBSklBb2JEQUVMSUFZb0FnUWhDU0FISUFaQkNFRU1JQUVnQTBraUNodHFLQUlBTmdJQUEwQUNRQ0FGRFFBZ0JDZ0NFQ0lHUVFGcUlRY2dCaTBBQVNFQklBWXRBQUJCL3dGSEJFQWdCQ0FITmdJUVFRZ2hCU0FCUVFoMElBSnFJUUlNQVFzZ0FVR1BBVTBFUUNBRUlBYzJBaEFnQVVFSmRDQUNhaUVDUVFjaEJRd0JDeUFFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUZDeUFGUVFGcklRVWdBa0VCZENFQ0lBTkJBWFFpQTBHQWdBSkpEUUFMSUFNaEFTQUpJQWxGSUFvYkN5RUdJRmxCRUhJaUF5QUdSUTBCR2dzZ0FTQVNJQWdvQWdSQkZIWkJCSEVnQ0VFRWF5SUpLQUlBUVJaMlFRRnhJQU5CRDNaQkVIRWdBMEVUZGtIQUFIRWdBMEVEZGtHcUFYRnljbkp5SWhOQjBMa0JhaTBBQUVFQ2RHb2lEQ2dDQUNJSEtBSUFJZ1pySVFFQ2Z5QUdJQUpCRUhaTkJFQWdBaUFHUVJCMGF5RUNJQUZCZ0lBQ2NRUkFJQWNvQWdRTUFnc2dCeWdDQkNFS0lBd2dCMEVNUVFnZ0FTQUdTU0lNRzJvb0FnQTJBZ0FEUUFKQUlBVU5BQ0FFS0FJUUlnZEJBV29oQlNBSExRQUJJUVlnQnkwQUFFSC9BVWNFUUNBRUlBVTJBaEJCQ0NFRklBWkJDSFFnQW1vaEFnd0JDeUFHUVk4QlRRUkFJQVFnQlRZQ0VDQUdRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTElBVkJBV3NoQlNBQ1FRRjBJUUlnQVVFQmRDSUJRWUNBQWtrTkFBc2dDa1VnQ2lBTUd3d0JDeUFIS0FJRUlRb2dEQ0FIUVFoQkRDQUJJQVpKSWd3YmFpZ0NBRFlDQUFOQUFrQWdCUTBBSUFRb0FoQWlCMEVCYWlFRklBY3RBQUVoQVNBSExRQUFRZjhCUndSQUlBUWdCVFlDRUVFSUlRVWdBVUVJZENBQ2FpRUNEQUVMSUFGQmp3Rk5CRUFnQkNBRk5nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFVTUFRc2dCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJRc2dCVUVCYXlFRklBSkJBWFFoQWlBR1FRRjBJZ1pCZ0lBQ1NRMEFDeUFHSVFFZ0NpQUtSU0FNR3dzaEJpQUxJQlJCQW5ScUlCVWdEaUFHSUJOQjBMc0JhaTBBQUhNaUJoczJBZ0FnQ1NBSktBSUFRWUFDY2pZQ0FDQUlJQWdvQWdSQndBQnlOZ0lFSUFNZ0JrRVdkSEpCZ0FGeUN5RURJQUVnRWlBRUtBSnNJQU5CQm5aQjd3TnhhaTBBQUVFQ2RHb2lDU2dDQUNJSEtBSUFJZ1pySVFFQ2Z5QUdJQUpCRUhaTkJFQWdBaUFHUVJCMGF5RUNJQUZCZ0lBQ2NRUkFJQWNvQWdRTUFnc2dCeWdDQkNFTUlBa2dCMEVNUVFnZ0FTQUdTU0lLRzJvb0FnQTJBZ0FEUUFKQUlBVU5BQ0FFS0FJUUlnZEJBV29oQ1NBSExRQUJJUVlnQnkwQUFFSC9BVWNFUUNBRUlBazJBaEJCQ0NFRklBWkJDSFFnQW1vaEFnd0JDeUFHUVk4QlRRUkFJQVFnQ1RZQ0VDQUdRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTElBVkJBV3NoQlNBQ1FRRjBJUUlnQVVFQmRDSUJRWUNBQWtrTkFBc2dERVVnRENBS0d3d0JDeUFIS0FJRUlRd2dDU0FIUVFoQkRDQUJJQVpKSWdvYmFpZ0NBRFlDQUFOQUFrQWdCUTBBSUFRb0FoQWlCMEVCYWlFSklBY3RBQUVoQVNBSExRQUFRZjhCUndSQUlBUWdDVFlDRUVFSUlRVWdBVUVJZENBQ2FpRUNEQUVMSUFGQmp3Rk5CRUFnQkNBSk5nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFVTUFRc2dCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJRc2dCVUVCYXlFRklBSkJBWFFoQWlBR1FRRjBJZ1pCZ0lBQ1NRMEFDeUFHSVFFZ0RDQU1SU0FLR3d0RkRRRUxJQUVnRWlBSUtBSUVRUmQyUVFSeElBaEJCR3NpQ1NnQ0FFRVpka0VCY1NBRFFSSjJRUkJ4SUFOQkZuWkJ3QUJ4SUFOQkJuWkJxZ0Z4Y25KeWNpSVRRZEM1QVdvdEFBQkJBblJxSWd3b0FnQWlCeWdDQUNJR2F5RUJBbjhnQmlBQ1FSQjJUUVJBSUFJZ0JrRVFkR3NoQWlBQlFZQ0FBbkVFUUNBSEtBSUVEQUlMSUFjb0FnUWhDaUFNSUFkQkRFRUlJQUVnQmtraURCdHFLQUlBTmdJQUEwQUNRQ0FGRFFBZ0JDZ0NFQ0lIUVFGcUlRVWdCeTBBQVNFR0lBY3RBQUJCL3dGSEJFQWdCQ0FGTmdJUVFRZ2hCU0FHUVFoMElBSnFJUUlNQVFzZ0JrR1BBVTBFUUNBRUlBVTJBaEFnQmtFSmRDQUNhaUVDUVFjaEJRd0JDeUFFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUZDeUFGUVFGcklRVWdBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUFwRklBb2dEQnNNQVFzZ0J5Z0NCQ0VLSUF3Z0IwRUlRUXdnQVNBR1NTSU1HMm9vQWdBMkFnQURRQUpBSUFVTkFDQUVLQUlRSWdkQkFXb2hCU0FITFFBQklRRWdCeTBBQUVIL0FVY0VRQ0FFSUFVMkFoQkJDQ0VGSUFGQkNIUWdBbW9oQWd3QkN5QUJRWThCVFFSQUlBUWdCVFlDRUNBQlFRbDBJQUpxSVFKQkJ5RUZEQUVMSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVVMSUFWQkFXc2hCU0FDUVFGMElRSWdCa0VCZENJR1FZQ0FBa2tOQUFzZ0JpRUJJQW9nQ2tVZ0RCc0xJUVlnQ3lBa1FRSjBhaUFWSUE0Z0JpQVRRZEM3QVdvdEFBQnpJZ1liTmdJQUlBa2dDU2dDQUVHQUVISTJBZ0FnQ0NBSUtBSUVRWUFFY2pZQ0JDQURJQVpCR1hSeVFZQUljaUVEQ3lBQklCSWdCQ2dDYkNBRFFRbDJRZThEY1dvdEFBQkJBblJxSWdrb0FnQWlCeWdDQUNJR2F5RUJBbjhnQmlBQ1FSQjJUUVJBSUFJZ0JrRVFkR3NoQWlBQlFZQ0FBbkVFUUNBSEtBSUVEQUlMSUFjb0FnUWhEQ0FKSUFkQkRFRUlJQUVnQmtraUNodHFLQUlBTmdJQUEwQUNRQ0FGRFFBZ0JDZ0NFQ0lIUVFGcUlRVWdCeTBBQVNFR0lBY3RBQUJCL3dGSEJFQWdCQ0FGTmdJUVFRZ2hCU0FHUVFoMElBSnFJUUlNQVFzZ0JrR1BBVTBFUUNBRUlBVTJBaEFnQmtFSmRDQUNhaUVDUVFjaEJRd0JDeUFFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUZDeUFGUVFGcklRVWdBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUF4RklBd2dDaHNNQVFzZ0J5Z0NCQ0VNSUFrZ0IwRUlRUXdnQVNBR1NTSUtHMm9vQWdBMkFnQURRQUpBSUFVTkFDQUVLQUlRSWdkQkFXb2hCU0FITFFBQklRRWdCeTBBQUVIL0FVY0VRQ0FFSUFVMkFoQkJDQ0VGSUFGQkNIUWdBbW9oQWd3QkN5QUJRWThCVFFSQUlBUWdCVFlDRUNBQlFRbDBJQUpxSVFKQkJ5RUZEQUVMSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVVMSUFWQkFXc2hCU0FDUVFGMElRSWdCa0VCZENJR1FZQ0FBa2tOQUFzZ0JpRUJJQXdnREVVZ0Noc0xSUTBEQ3lBQklCSWdDQ2dDQkVFYWRrRUVjU0FJUVFScklnd29BZ0JCSEhaQkFYRWdBMEVWZGtFUWNTQURRUmwyUWNBQWNTQURRUWwyUWFvQmNYSnljbklpRTBIUXVRRnFMUUFBUVFKMGFpSUpLQUlBSWdvb0FnQWlCbXNoQVNBR0lBSkJFSFpOQkVBZ0FpQUdRUkIwYXlFQ0lBRkJnSUFDY1EwQklBb29BZ1FoQnlBSklBcEJERUVJSUFFZ0Jra2lIQnRxS0FJQU5nSUFBMEFDUUNBRkRRQWdCQ2dDRUNJRlFRRnFJUW9nQlMwQUFTRUdJQVV0QUFCQi93RkhCRUFnQkNBS05nSVFRUWdoQlNBR1FRaDBJQUpxSVFJTUFRc2dCa0dQQVUwRVFDQUVJQW8yQWhBZ0JrRUpkQ0FDYWlFQ1FRY2hCUXdCQ3lBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VGQ3lBRlFRRnJJUVVnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBZEZJQWNnSEJzTUFnc2dDaWdDQkNFSElBa2dDa0VJUVF3Z0FTQUdTU0ljRzJvb0FnQTJBZ0FEUUFKQUlBVU5BQ0FFS0FJUUlnVkJBV29oQ2lBRkxRQUJJUUVnQlMwQUFFSC9BVWNFUUNBRUlBbzJBaEJCQ0NFRklBRkJDSFFnQW1vaEFnd0JDeUFCUVk4QlRRUkFJQVFnQ2pZQ0VDQUJRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTElBVkJBV3NoQlNBQ1FRRjBJUUlnQmtFQmRDSUdRWUNBQWtrTkFBc2dCaUVCSUFjZ0IwVWdIQnNNQVFzZ0NpZ0NCQXNoQmlBTElCdEJBblJxSUJVZ0RpQUdJQk5CMExzQmFpMEFBSE1pQnhzMkFnQWdEQ0FNS0FJQVFZQ0FBWEkyQWdBZ0NDQUlLQUlFUVlBZ2NqWUNCQ0FFS0FKOFFRSjBJQWhxSWdZZ0JpZ0NCRUVFY2pZQ0JDQUdJQVlvQWd4QkFYSTJBZ3dnQmlBR0tBSUlJQWRCRW5SeVFRSnlOZ0lJSUFNZ0IwRWNkSEpCZ01BQWNpRURDeUFJSUFOQi8vLy90bnR4TmdJQUN5QUlRUVJxSVFNZ0MwRUVhaUVMSUJoQkFXb2lHQ0FVUncwQUN5QUlRUXhxSVFNZ0N5QWJRUUowYWlFTElCRkJCR29pRVNBRUtBS0FBU0lHUVh4eFNRMEFDd3dDQ3dKQUlBWkJCRWtOQUNBVUJFQWdCRUhrQUdvaEVDQUVRZUFBYWlFTklCUkJBMndoR3lBVVFRRjBJU1JCQUNBT2F5RVZJQVJCSEdvaEVnTkFRUUFoR0FOQUFrQUNRQUovQWtBZ0F5SUlLQUlBSWdNRVFBSkFJQU5Ca0lDQUFYRU5BQ0FCSUJJZ0JDZ0NiQ0FEUWU4RGNXb3RBQUJCQW5ScUlna29BZ0FpQnlnQ0FDSUdheUVCQW44Z0JpQUNRUkIyVFFSQUlBSWdCa0VRZEdzaEFpQUJRWUNBQW5FRVFDQUhLQUlFREFJTElBY29BZ1FoRENBSklBZEJERUVJSUFFZ0Jra2lDaHRxS0FJQU5nSUFBMEFDUUNBRkRRQWdCQ2dDRUNJSFFRRnFJUVVnQnkwQUFTRUdJQWN0QUFCQi93RkhCRUFnQkNBRk5nSVFRUWdoQlNBR1FRaDBJQUpxSVFJTUFRc2dCa0dQQVUwRVFDQUVJQVUyQWhBZ0JrRUpkQ0FDYWlFQ1FRY2hCUXdCQ3lBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VGQ3lBRlFRRnJJUVVnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBeEZJQXdnQ2hzTUFRc2dCeWdDQkNFTUlBa2dCMEVJUVF3Z0FTQUdTU0lLRzJvb0FnQTJBZ0FEUUFKQUlBVU5BQ0FFS0FJUUlnZEJBV29oQlNBSExRQUJJUUVnQnkwQUFFSC9BVWNFUUNBRUlBVTJBaEJCQ0NFRklBRkJDSFFnQW1vaEFnd0JDeUFCUVk4QlRRUkFJQVFnQlRZQ0VDQUJRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTElBVkJBV3NoQlNBQ1FRRjBJUUlnQmtFQmRDSUdRWUNBQWtrTkFBc2dCaUVCSUF3Z0RFVWdDaHNMUlEwQUlBRWdFaUFJS0FJRVFSRjJRUVJ4SUFoQkJHc2lEQ2dDQUVFVGRrRUJjU0FEUVE1MlFSQnhJQU5CRUhaQndBQnhJQU5CcWdGeGNuSnljaUlUUWRDNUFXb3RBQUJCQW5ScUlna29BZ0FpQnlnQ0FDSUdheUVCQW44Z0JpQUNRUkIyVFFSQUlBSWdCa0VRZEdzaEFpQUJRWUNBQW5FRVFDQUhLQUlFREFJTElBY29BZ1FoQ2lBSklBZEJERUVJSUFFZ0Jra2lIQnRxS0FJQU5nSUFBMEFDUUNBRkRRQWdCQ2dDRUNJSFFRRnFJUVVnQnkwQUFTRUdJQWN0QUFCQi93RkhCRUFnQkNBRk5nSVFRUWdoQlNBR1FRaDBJQUpxSVFJTUFRc2dCa0dQQVUwRVFDQUVJQVUyQWhBZ0JrRUpkQ0FDYWlFQ1FRY2hCUXdCQ3lBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VGQ3lBRlFRRnJJUVVnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBcEZJQW9nSEJzTUFRc2dCeWdDQkNFS0lBa2dCMEVJUVF3Z0FTQUdTU0ljRzJvb0FnQTJBZ0FEUUFKQUlBVU5BQ0FFS0FJUUlnZEJBV29oQlNBSExRQUJJUUVnQnkwQUFFSC9BVWNFUUNBRUlBVTJBaEJCQ0NFRklBRkJDSFFnQW1vaEFnd0JDeUFCUVk4QlRRUkFJQVFnQlRZQ0VDQUJRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTElBVkJBV3NoQlNBQ1FRRjBJUUlnQmtFQmRDSUdRWUNBQWtrTkFBc2dCaUVCSUFvZ0NrVWdIQnNMSVFZZ0N5QVZJQTRnQmlBVFFkQzdBV290QUFCeklnY2JOZ0lBSUF3Z0RDZ0NBRUVnY2pZQ0FDQUlJQWdvQWdSQkNISTJBZ1FnQ0VGK0lBUW9BbnhyUVFKMGFpSUdJQVlvQWdSQmdJQUNjallDQkNBR0lBWW9BZ0FnQjBFZmRISkJnSUFFY2pZQ0FDQUdRUVJySWdZZ0JpZ0NBRUdBZ0FoeU5nSUFJQU1nQjBFVGRISkJFSEloQXdzQ1FDQURRWUNCZ0FoeERRQWdBU0FTSUFRb0Ftd2dBMEVEZGlJS1FlOERjV290QUFCQkFuUnFJZ2tvQWdBaUJ5Z0NBQ0lHYXlFQkFuOGdCaUFDUVJCMlRRUkFJQUlnQmtFUWRHc2hBaUFCUVlDQUFuRUVRQ0FIS0FJRURBSUxJQWNvQWdRaERDQUpJQWRCREVFSUlBRWdCa2tpRXh0cUtBSUFOZ0lBQTBBQ1FDQUZEUUFnQkNnQ0VDSUhRUUZxSVFVZ0J5MEFBU0VHSUFjdEFBQkIvd0ZIQkVBZ0JDQUZOZ0lRUVFnaEJTQUdRUWgwSUFKcUlRSU1BUXNnQmtHUEFVMEVRQ0FFSUFVMkFoQWdCa0VKZENBQ2FpRUNRUWNoQlF3QkN5QUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRkN5QUZRUUZySVFVZ0FrRUJkQ0VDSUFGQkFYUWlBVUdBZ0FKSkRRQUxJQXhGSUF3Z0V4c01BUXNnQnlnQ0JDRU1JQWtnQjBFSVFRd2dBU0FHU1NJVEcyb29BZ0EyQWdBRFFBSkFJQVVOQUNBRUtBSVFJZ2RCQVdvaEJTQUhMUUFCSVFFZ0J5MEFBRUgvQVVjRVFDQUVJQVUyQWhCQkNDRUZJQUZCQ0hRZ0Ftb2hBZ3dCQ3lBQlFZOEJUUVJBSUFRZ0JUWUNFQ0FCUVFsMElBSnFJUUpCQnlFRkRBRUxJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRVUxJQVZCQVdzaEJTQUNRUUYwSVFJZ0JrRUJkQ0lHUVlDQUFra05BQXNnQmlFQklBd2dERVVnRXhzTFJRMEFJQUVnRWlBSUtBSUVRUlIyUVFSeElBaEJCR3NpRENnQ0FFRVdka0VCY1NBRFFROTJRUkJ4SUFOQkUzWkJ3QUJ4SUFwQnFnRnhjbkp5Y2lJVFFkQzVBV290QUFCQkFuUnFJZ2tvQWdBaUJ5Z0NBQ0lHYXlFQkFuOGdCaUFDUVJCMlRRUkFJQUlnQmtFUWRHc2hBaUFCUVlDQUFuRUVRQ0FIS0FJRURBSUxJQWNvQWdRaENpQUpJQWRCREVFSUlBRWdCa2tpSEJ0cUtBSUFOZ0lBQTBBQ1FDQUZEUUFnQkNnQ0VDSUhRUUZxSVFVZ0J5MEFBU0VHSUFjdEFBQkIvd0ZIQkVBZ0JDQUZOZ0lRUVFnaEJTQUdRUWgwSUFKcUlRSU1BUXNnQmtHUEFVMEVRQ0FFSUFVMkFoQWdCa0VKZENBQ2FpRUNRUWNoQlF3QkN5QUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRkN5QUZRUUZySVFVZ0FrRUJkQ0VDSUFGQkFYUWlBVUdBZ0FKSkRRQUxJQXBGSUFvZ0hCc01BUXNnQnlnQ0JDRUtJQWtnQjBFSVFRd2dBU0FHU1NJY0cyb29BZ0EyQWdBRFFBSkFJQVVOQUNBRUtBSVFJZ2RCQVdvaEJTQUhMUUFCSVFFZ0J5MEFBRUgvQVVjRVFDQUVJQVUyQWhCQkNDRUZJQUZCQ0hRZ0Ftb2hBZ3dCQ3lBQlFZOEJUUVJBSUFRZ0JUWUNFQ0FCUVFsMElBSnFJUUpCQnlFRkRBRUxJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRVUxJQVZCQVdzaEJTQUNRUUYwSVFJZ0JrRUJkQ0lHUVlDQUFra05BQXNnQmlFQklBb2dDa1VnSEJzTElRWWdDeUFVUVFKMGFpQVZJQTRnQmlBVFFkQzdBV290QUFCeklnWWJOZ0lBSUF3Z0RDZ0NBRUdBQW5JMkFnQWdDQ0FJS0FJRVFjQUFjallDQkNBRElBWkJGblJ5UVlBQmNpRURDd0pBSUFOQmdJaUF3QUJ4RFFBZ0FTQVNJQVFvQW13Z0EwRUdkaUlLUWU4RGNXb3RBQUJCQW5ScUlna29BZ0FpQnlnQ0FDSUdheUVCQW44Z0JpQUNRUkIyVFFSQUlBSWdCa0VRZEdzaEFpQUJRWUNBQW5FRVFDQUhLQUlFREFJTElBY29BZ1FoRENBSklBZEJERUVJSUFFZ0Jra2lFeHRxS0FJQU5nSUFBMEFDUUNBRkRRQWdCQ2dDRUNJSFFRRnFJUVVnQnkwQUFTRUdJQWN0QUFCQi93RkhCRUFnQkNBRk5nSVFRUWdoQlNBR1FRaDBJQUpxSVFJTUFRc2dCa0dQQVUwRVFDQUVJQVUyQWhBZ0JrRUpkQ0FDYWlFQ1FRY2hCUXdCQ3lBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VGQ3lBRlFRRnJJUVVnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBeEZJQXdnRXhzTUFRc2dCeWdDQkNFTUlBa2dCMEVJUVF3Z0FTQUdTU0lURzJvb0FnQTJBZ0FEUUFKQUlBVU5BQ0FFS0FJUUlnZEJBV29oQlNBSExRQUJJUUVnQnkwQUFFSC9BVWNFUUNBRUlBVTJBaEJCQ0NFRklBRkJDSFFnQW1vaEFnd0JDeUFCUVk4QlRRUkFJQVFnQlRZQ0VDQUJRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTElBVkJBV3NoQlNBQ1FRRjBJUUlnQmtFQmRDSUdRWUNBQWtrTkFBc2dCaUVCSUF3Z0RFVWdFeHNMUlEwQUlBRWdFaUFJS0FJRVFSZDJRUVJ4SUFoQkJHc2lEQ2dDQUVFWmRrRUJjU0FEUVJKMlFSQnhJQU5CRm5aQndBQnhJQXBCcWdGeGNuSnljaUlUUWRDNUFXb3RBQUJCQW5ScUlna29BZ0FpQnlnQ0FDSUdheUVCQW44Z0JpQUNRUkIyVFFSQUlBSWdCa0VRZEdzaEFpQUJRWUNBQW5FRVFDQUhLQUlFREFJTElBY29BZ1FoQ2lBSklBZEJERUVJSUFFZ0Jra2lIQnRxS0FJQU5nSUFBMEFDUUNBRkRRQWdCQ2dDRUNJSFFRRnFJUVVnQnkwQUFTRUdJQWN0QUFCQi93RkhCRUFnQkNBRk5nSVFRUWdoQlNBR1FRaDBJQUpxSVFJTUFRc2dCa0dQQVUwRVFDQUVJQVUyQWhBZ0JrRUpkQ0FDYWlFQ1FRY2hCUXdCQ3lBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VGQ3lBRlFRRnJJUVVnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBcEZJQW9nSEJzTUFRc2dCeWdDQkNFS0lBa2dCMEVJUVF3Z0FTQUdTU0ljRzJvb0FnQTJBZ0FEUUFKQUlBVU5BQ0FFS0FJUUlnZEJBV29oQlNBSExRQUJJUUVnQnkwQUFFSC9BVWNFUUNBRUlBVTJBaEJCQ0NFRklBRkJDSFFnQW1vaEFnd0JDeUFCUVk4QlRRUkFJQVFnQlRZQ0VDQUJRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTElBVkJBV3NoQlNBQ1FRRjBJUUlnQmtFQmRDSUdRWUNBQWtrTkFBc2dCaUVCSUFvZ0NrVWdIQnNMSVFZZ0N5QWtRUUowYWlBVklBNGdCaUFUUWRDN0FXb3RBQUJ6SWdZYk5nSUFJQXdnRENnQ0FFR0FFSEkyQWdBZ0NDQUlLQUlFUVlBRWNqWUNCQ0FESUFaQkdYUnlRWUFJY2lFREN5QURRWURBZ0lBRWNRMERJQUVnRWlBRUtBSnNJQU5CQ1hZaUNrSHZBM0ZxTFFBQVFRSjBhaUlKS0FJQUlnRW9BZ0FpQm1zaEJ3Si9JQVlnQWtFUWRrMEVRQ0FDSUFaQkVIUnJJUUlnQjBHQWdBSnhCRUFnQVNnQ0JBd0NDeUFCS0FJRUlRd2dDU0FCUVF4QkNDQUdJQWRMSWhNYmFpZ0NBRFlDQUFOQUFrQWdCUTBBSUFRb0FoQWlCa0VCYWlFRklBWXRBQUVoQVNBR0xRQUFRZjhCUndSQUlBUWdCVFlDRUVFSUlRVWdBVUVJZENBQ2FpRUNEQUVMSUFGQmp3Rk5CRUFnQkNBRk5nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFVTUFRc2dCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJRc2dCVUVCYXlFRklBSkJBWFFoQWlBSFFRRjBJZ2RCZ0lBQ1NRMEFDeUFNUlNBTUlCTWJEQUVMSUFFb0FnUWhEQ0FKSUFGQkNFRU1JQVlnQjBzaUV4dHFLQUlBTmdJQUEwQUNRQ0FGRFFBZ0JDZ0NFQ0lIUVFGcUlRVWdCeTBBQVNFQklBY3RBQUJCL3dGSEJFQWdCQ0FGTmdJUVFRZ2hCU0FCUVFoMElBSnFJUUlNQVFzZ0FVR1BBVTBFUUNBRUlBVTJBaEFnQVVFSmRDQUNhaUVDUVFjaEJRd0JDeUFFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUZDeUFGUVFGcklRVWdBa0VCZENFQ0lBWkJBWFFpQmtHQWdBSkpEUUFMSUFZaEJ5QU1JQXhGSUJNYkMwVUVRQ0FISVFFTUJBc2dCeUFTSUFnb0FnUkJHblpCQkhFZ0NFRUVheUlNS0FJQVFSeDJRUUZ4SUFOQkZYWkJFSEVnQTBFWmRrSEFBSEVnQ2tHcUFYRnljbkp5SWhOQjBMa0JhaTBBQUVFQ2RHb2lDU2dDQUNJS0tBSUFJZ0ZySVFZZ0FTQUNRUkIyVFFSQUlBSWdBVUVRZEdzaEFpQUdRWUNBQW5FRVFDQUdJUUVNQXdzZ0NpZ0NCQ0VISUFrZ0NrRU1RUWdnQVNBR1N5SWNHMm9vQWdBMkFnQURRQUpBSUFVTkFDQUVLQUlRSWdWQkFXb2hDaUFGTFFBQklRRWdCUzBBQUVIL0FVY0VRQ0FFSUFvMkFoQkJDQ0VGSUFGQkNIUWdBbW9oQWd3QkN5QUJRWThCVFFSQUlBUWdDallDRUNBQlFRbDBJQUpxSVFKQkJ5RUZEQUVMSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVVMSUFWQkFXc2hCU0FDUVFGMElRSWdCa0VCZENJR1FZQ0FBa2tOQUFzZ0JpRUJJQWRGSUFjZ0hCc01Bd3NnQ2lnQ0JDRUhJQWtnQ2tFSVFRd2dBU0FHU3lJY0cyb29BZ0EyQWdBRFFBSkFJQVVOQUNBRUtBSVFJZ1ZCQVdvaENpQUZMUUFCSVFZZ0JTMEFBRUgvQVVjRVFDQUVJQW8yQWhCQkNDRUZJQVpCQ0hRZ0Ftb2hBZ3dCQ3lBR1FZOEJUUVJBSUFRZ0NqWUNFQ0FHUVFsMElBSnFJUUpCQnlFRkRBRUxJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRVUxJQVZCQVdzaEJTQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnQnlBSFJTQWNHd3dDQ3lBQklBMG9BZ0FpQmlnQ0FDSURheUVCQW44Z0F5QUNRUkIyVFFSQUlBSWdBMEVRZEdzaEFpQUJRWUNBQW5FRVFDQUdLQUlFREFJTElBWW9BZ1FoQnlBTklBWkJERUVJSUFFZ0Ewa2lEQnRxS0FJQU5nSUFBMEFDUUNBRkRRQWdCQ2dDRUNJR1FRRnFJUWtnQmkwQUFTRURJQVl0QUFCQi93RkhCRUFnQkNBSk5nSVFRUWdoQlNBRFFRaDBJQUpxSVFJTUFRc2dBMEdQQVUwRVFDQUVJQWsyQWhBZ0EwRUpkQ0FDYWlFQ1FRY2hCUXdCQ3lBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VGQ3lBRlFRRnJJUVVnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBZEZJQWNnREJzTUFRc2dCaWdDQkNFSElBMGdCa0VJUVF3Z0FTQURTU0lNRzJvb0FnQTJBZ0FEUUFKQUlBVU5BQ0FFS0FJUUlnWkJBV29oQ1NBR0xRQUJJUUVnQmkwQUFFSC9BVWNFUUNBRUlBazJBaEJCQ0NFRklBRkJDSFFnQW1vaEFnd0JDeUFCUVk4QlRRUkFJQVFnQ1RZQ0VDQUJRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTElBVkJBV3NoQlNBQ1FRRjBJUUlnQTBFQmRDSURRWUNBQWtrTkFBc2dBeUVCSUFjZ0IwVWdEQnNMUlFSQUlBMGhDUXdFQ3lBQklCQW9BZ0FpQmlnQ0FDSURheUVCQW44Z0F5QUNRUkIyVFFSQUlBSWdBMEVRZEdzaEFpQUJRWUNBQW5FRVFDQUdLQUlFREFJTElBWW9BZ1FoQnlBUUlBWkJERUVJSUFFZ0Ewa2lEQnRxS0FJQUlnWTJBZ0FEUUFKQUlBVU5BQ0FFS0FJUUlnbEJBV29oQlNBSkxRQUJJUU1nQ1MwQUFFSC9BVWNFUUNBRUlBVTJBaEJCQ0NFRklBTkJDSFFnQW1vaEFnd0JDeUFEUVk4QlRRUkFJQVFnQlRZQ0VDQURRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTElBVkJBV3NoQlNBQ1FRRjBJUUlnQVVFQmRDSUJRWUNBQWtrTkFBc2dCMFVnQnlBTUd3d0JDeUFHS0FJRUlRY2dFQ0FHUVFoQkRDQUJJQU5KSWd3YmFpZ0NBQ0lHTmdJQUEwQUNRQ0FGRFFBZ0JDZ0NFQ0lKUVFGcUlRVWdDUzBBQVNFQklBa3RBQUJCL3dGSEJFQWdCQ0FGTmdJUVFRZ2hCU0FCUVFoMElBSnFJUUlNQVFzZ0FVR1BBVTBFUUNBRUlBVTJBaEFnQVVFSmRDQUNhaUVDUVFjaEJRd0JDeUFFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUZDeUFGUVFGcklRVWdBa0VCZENFQ0lBTkJBWFFpQTBHQWdBSkpEUUFMSUFNaEFTQUhJQWRGSUF3YkN5RU1JQUVnQmlnQ0FDSURheUVCQW44Z0F5QUNRUkIyVFFSQUlBSWdBMEVRZEdzaEFpQUJRWUNBQW5FRVFDQUdLQUlFREFJTElBWW9BZ1FoQnlBUUlBWkJERUVJSUFFZ0Ewa2lDaHRxS0FJQU5nSUFBMEFDUUNBRkRRQWdCQ2dDRUNJR1FRRnFJUWtnQmkwQUFTRURJQVl0QUFCQi93RkhCRUFnQkNBSk5nSVFRUWdoQlNBRFFRaDBJQUpxSVFJTUFRc2dBMEdQQVUwRVFDQUVJQWsyQWhBZ0EwRUpkQ0FDYWlFQ1FRY2hCUXdCQ3lBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VGQ3lBRlFRRnJJUVVnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBZEZJQWNnQ2hzTUFRc2dCaWdDQkNFSElCQWdCa0VJUVF3Z0FTQURTU0lLRzJvb0FnQTJBZ0FEUUFKQUlBVU5BQ0FFS0FJUUlnWkJBV29oQ1NBR0xRQUJJUUVnQmkwQUFFSC9BVWNFUUNBRUlBazJBaEJCQ0NFRklBRkJDSFFnQW1vaEFnd0JDeUFCUVk4QlRRUkFJQVFnQ1RZQ0VDQUJRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTElBVkJBV3NoQlNBQ1FRRjBJUUlnQTBFQmRDSURRWUNBQWtrTkFBc2dBeUVCSUFjZ0IwVWdDaHNMSVFaQkFDRURJQkFoQ1FKQUFrQUNRQUovQWtBQ1FDQUdJQXhCQVhSeURnUUFBUU1GQ0FzZ0FTQVNJQWdvQWdSQkVYWkJCSEVnQ0VFRWF5SUhLQUlBUVJOMlFRRnhjaUlLUWRDNUFXb3RBQUJCQW5ScUlna29BZ0FpQmlnQ0FDSURheUVCQW44Z0F5QUNRUkIyVFFSQUlBSWdBMEVRZEdzaEFpQUJRWUNBQW5FRVFDQUdLQUlFREFJTElBWW9BZ1FoRENBSklBWkJERUVJSUFFZ0Ewa2lFeHRxS0FJQU5nSUFBMEFDUUNBRkRRQWdCQ2dDRUNJR1FRRnFJUWtnQmkwQUFTRURJQVl0QUFCQi93RkhCRUFnQkNBSk5nSVFRUWdoQlNBRFFRaDBJQUpxSVFJTUFRc2dBMEdQQVUwRVFDQUVJQWsyQWhBZ0EwRUpkQ0FDYWlFQ1FRY2hCUXdCQ3lBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VGQ3lBRlFRRnJJUVVnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBeEZJQXdnRXhzTUFRc2dCaWdDQkNFTUlBa2dCa0VJUVF3Z0FTQURTU0lURzJvb0FnQTJBZ0FEUUFKQUlBVU5BQ0FFS0FJUUlnWkJBV29oQ1NBR0xRQUJJUUVnQmkwQUFFSC9BVWNFUUNBRUlBazJBaEJCQ0NFRklBRkJDSFFnQW1vaEFnd0JDeUFCUVk4QlRRUkFJQVFnQ1RZQ0VDQUJRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTElBVkJBV3NoQlNBQ1FRRjBJUUlnQTBFQmRDSURRWUNBQWtrTkFBc2dBeUVCSUF3Z0RFVWdFeHNMSVFNZ0N5QVZJQTRnQXlBS1FkQzdBV290QUFCeklnWWJOZ0lBSUFjZ0J5Z0NBRUVnY2pZQ0FDQUlJQWdvQWdSQkNISTJBZ1FnQ0VGK0lBUW9BbnhyUVFKMGFpSURJQU1vQWdSQmdJQUNjallDQkNBRElBTW9BZ0FnQmtFZmRISkJnSUFFY2pZQ0FDQURRUVJySWdNZ0F5Z0NBRUdBZ0FoeU5nSUFJQVpCRTNRaFdpQUJJQklnQkNnQ2JDMEFBa0VDZEdvaUJ5Z0NBQ0lHS0FJQUlnTnJJUUVDZnlBRElBSkJFSFpOQkVBZ0FpQURRUkIwYXlFQ0lBRkJnSUFDY1FSQUlBWW9BZ1FNQWdzZ0JpZ0NCQ0VKSUFjZ0JrRU1RUWdnQVNBRFNTSUtHMm9vQWdBMkFnQURRQUpBSUFVTkFDQUVLQUlRSWdaQkFXb2hCeUFHTFFBQklRTWdCaTBBQUVIL0FVY0VRQ0FFSUFjMkFoQkJDQ0VGSUFOQkNIUWdBbW9oQWd3QkN5QURRWThCVFFSQUlBUWdCellDRUNBRFFRbDBJQUpxSVFKQkJ5RUZEQUVMSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVVMSUFWQkFXc2hCU0FDUVFGMElRSWdBVUVCZENJQlFZQ0FBa2tOQUFzZ0NVVWdDU0FLR3d3QkN5QUdLQUlFSVFrZ0J5QUdRUWhCRENBQklBTkpJZ29iYWlnQ0FEWUNBQU5BQWtBZ0JRMEFJQVFvQWhBaUJrRUJhaUVISUFZdEFBRWhBU0FHTFFBQVFmOEJSd1JBSUFRZ0J6WUNFRUVJSVFVZ0FVRUlkQ0FDYWlFQ0RBRUxJQUZCandGTkJFQWdCQ0FITmdJUUlBRkJDWFFnQW1vaEFrRUhJUVVNQVFzZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQlFzZ0JVRUJheUVGSUFKQkFYUWhBaUFEUVFGMElnTkJnSUFDU1EwQUN5QURJUUVnQ1NBSlJTQUtHd3NoQmlCYVFSQnlJZ01nQmtVTkFSb0xJQUVnRWlBSUtBSUVRUlIyUVFSeElBaEJCR3NpQ1NnQ0FFRVdka0VCY1NBRFFROTJRUkJ4SUFOQkUzWkJ3QUJ4SUFOQkEzWkJxZ0Z4Y25KeWNpSVRRZEM1QVdvdEFBQkJBblJxSWd3b0FnQWlCeWdDQUNJR2F5RUJBbjhnQmlBQ1FSQjJUUVJBSUFJZ0JrRVFkR3NoQWlBQlFZQ0FBbkVFUUNBSEtBSUVEQUlMSUFjb0FnUWhDaUFNSUFkQkRFRUlJQUVnQmtraURCdHFLQUlBTmdJQUEwQUNRQ0FGRFFBZ0JDZ0NFQ0lIUVFGcUlRVWdCeTBBQVNFR0lBY3RBQUJCL3dGSEJFQWdCQ0FGTmdJUVFRZ2hCU0FHUVFoMElBSnFJUUlNQVFzZ0JrR1BBVTBFUUNBRUlBVTJBaEFnQmtFSmRDQUNhaUVDUVFjaEJRd0JDeUFFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUZDeUFGUVFGcklRVWdBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUFwRklBb2dEQnNNQVFzZ0J5Z0NCQ0VLSUF3Z0IwRUlRUXdnQVNBR1NTSU1HMm9vQWdBMkFnQURRQUpBSUFVTkFDQUVLQUlRSWdkQkFXb2hCU0FITFFBQklRRWdCeTBBQUVIL0FVY0VRQ0FFSUFVMkFoQkJDQ0VGSUFGQkNIUWdBbW9oQWd3QkN5QUJRWThCVFFSQUlBUWdCVFlDRUNBQlFRbDBJQUpxSVFKQkJ5RUZEQUVMSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVVMSUFWQkFXc2hCU0FDUVFGMElRSWdCa0VCZENJR1FZQ0FBa2tOQUFzZ0JpRUJJQW9nQ2tVZ0RCc0xJUVlnQ3lBVVFRSjBhaUFWSUE0Z0JpQVRRZEM3QVdvdEFBQnpJZ1liTmdJQUlBa2dDU2dDQUVHQUFuSTJBZ0FnQ0NBSUtBSUVRY0FBY2pZQ0JDQURJQVpCRm5SeVFZQUJjZ3NoQXlBQklCSWdCQ2dDYkNBRFFRWjJRZThEY1dvdEFBQkJBblJxSWdrb0FnQWlCeWdDQUNJR2F5RUJBbjhnQmlBQ1FSQjJUUVJBSUFJZ0JrRVFkR3NoQWlBQlFZQ0FBbkVFUUNBSEtBSUVEQUlMSUFjb0FnUWhEQ0FKSUFkQkRFRUlJQUVnQmtraUNodHFLQUlBTmdJQUEwQUNRQ0FGRFFBZ0JDZ0NFQ0lIUVFGcUlRa2dCeTBBQVNFR0lBY3RBQUJCL3dGSEJFQWdCQ0FKTmdJUVFRZ2hCU0FHUVFoMElBSnFJUUlNQVFzZ0JrR1BBVTBFUUNBRUlBazJBaEFnQmtFSmRDQUNhaUVDUVFjaEJRd0JDeUFFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUZDeUFGUVFGcklRVWdBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUF4RklBd2dDaHNNQVFzZ0J5Z0NCQ0VNSUFrZ0IwRUlRUXdnQVNBR1NTSUtHMm9vQWdBMkFnQURRQUpBSUFVTkFDQUVLQUlRSWdkQkFXb2hDU0FITFFBQklRRWdCeTBBQUVIL0FVY0VRQ0FFSUFrMkFoQkJDQ0VGSUFGQkNIUWdBbW9oQWd3QkN5QUJRWThCVFFSQUlBUWdDVFlDRUNBQlFRbDBJQUpxSVFKQkJ5RUZEQUVMSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVVMSUFWQkFXc2hCU0FDUVFGMElRSWdCa0VCZENJR1FZQ0FBa2tOQUFzZ0JpRUJJQXdnREVVZ0Noc0xSUTBCQ3lBQklCSWdDQ2dDQkVFWGRrRUVjU0FJUVFScklna29BZ0JCR1haQkFYRWdBMEVTZGtFUWNTQURRUloyUWNBQWNTQURRUVoyUWFvQmNYSnljbklpRTBIUXVRRnFMUUFBUVFKMGFpSU1LQUlBSWdjb0FnQWlCbXNoQVFKL0lBWWdBa0VRZGswRVFDQUNJQVpCRUhScklRSWdBVUdBZ0FKeEJFQWdCeWdDQkF3Q0N5QUhLQUlFSVFvZ0RDQUhRUXhCQ0NBQklBWkpJZ3diYWlnQ0FEWUNBQU5BQWtBZ0JRMEFJQVFvQWhBaUIwRUJhaUVGSUFjdEFBRWhCaUFITFFBQVFmOEJSd1JBSUFRZ0JUWUNFRUVJSVFVZ0JrRUlkQ0FDYWlFQ0RBRUxJQVpCandGTkJFQWdCQ0FGTmdJUUlBWkJDWFFnQW1vaEFrRUhJUVVNQVFzZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQlFzZ0JVRUJheUVGSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QUtSU0FLSUF3YkRBRUxJQWNvQWdRaENpQU1JQWRCQ0VFTUlBRWdCa2tpREJ0cUtBSUFOZ0lBQTBBQ1FDQUZEUUFnQkNnQ0VDSUhRUUZxSVFVZ0J5MEFBU0VCSUFjdEFBQkIvd0ZIQkVBZ0JDQUZOZ0lRUVFnaEJTQUJRUWgwSUFKcUlRSU1BUXNnQVVHUEFVMEVRQ0FFSUFVMkFoQWdBVUVKZENBQ2FpRUNRUWNoQlF3QkN5QUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRkN5QUZRUUZySVFVZ0FrRUJkQ0VDSUFaQkFYUWlCa0dBZ0FKSkRRQUxJQVloQVNBS0lBcEZJQXdiQ3lFR0lBc2dKRUVDZEdvZ0ZTQU9JQVlnRTBIUXV3RnFMUUFBY3lJR0d6WUNBQ0FKSUFrb0FnQkJnQkJ5TmdJQUlBZ2dDQ2dDQkVHQUJISTJBZ1FnQXlBR1FSbDBja0dBQ0hJaEF3c2dBU0FTSUFRb0Ftd2dBMEVKZGtIdkEzRnFMUUFBUVFKMGFpSUpLQUlBSWdjb0FnQWlCbXNoQVFKL0lBWWdBa0VRZGswRVFDQUNJQVpCRUhScklRSWdBVUdBZ0FKeEJFQWdCeWdDQkF3Q0N5QUhLQUlFSVF3Z0NTQUhRUXhCQ0NBQklBWkpJZ29iYWlnQ0FEWUNBQU5BQWtBZ0JRMEFJQVFvQWhBaUIwRUJhaUVGSUFjdEFBRWhCaUFITFFBQVFmOEJSd1JBSUFRZ0JUWUNFRUVJSVFVZ0JrRUlkQ0FDYWlFQ0RBRUxJQVpCandGTkJFQWdCQ0FGTmdJUUlBWkJDWFFnQW1vaEFrRUhJUVVNQVFzZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQlFzZ0JVRUJheUVGSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QU1SU0FNSUFvYkRBRUxJQWNvQWdRaERDQUpJQWRCQ0VFTUlBRWdCa2tpQ2h0cUtBSUFOZ0lBQTBBQ1FDQUZEUUFnQkNnQ0VDSUhRUUZxSVFVZ0J5MEFBU0VCSUFjdEFBQkIvd0ZIQkVBZ0JDQUZOZ0lRUVFnaEJTQUJRUWgwSUFKcUlRSU1BUXNnQVVHUEFVMEVRQ0FFSUFVMkFoQWdBVUVKZENBQ2FpRUNRUWNoQlF3QkN5QUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRkN5QUZRUUZySVFVZ0FrRUJkQ0VDSUFaQkFYUWlCa0dBZ0FKSkRRQUxJQVloQVNBTUlBeEZJQW9iQzBVTkF3c2dBU0FTSUFnb0FnUkJHblpCQkhFZ0NFRUVheUlNS0FJQVFSeDJRUUZ4SUFOQkZYWkJFSEVnQTBFWmRrSEFBSEVnQTBFSmRrR3FBWEZ5Y25KeUloTkIwTGtCYWkwQUFFRUNkR29pQ1NnQ0FDSUtLQUlBSWdacklRRWdCaUFDUVJCMlRRUkFJQUlnQmtFUWRHc2hBaUFCUVlDQUFuRU5BU0FLS0FJRUlRY2dDU0FLUVF4QkNDQUJJQVpKSWh3YmFpZ0NBRFlDQUFOQUFrQWdCUTBBSUFRb0FoQWlCVUVCYWlFS0lBVXRBQUVoQmlBRkxRQUFRZjhCUndSQUlBUWdDallDRUVFSUlRVWdCa0VJZENBQ2FpRUNEQUVMSUFaQmp3Rk5CRUFnQkNBS05nSVFJQVpCQ1hRZ0Ftb2hBa0VISVFVTUFRc2dCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJRc2dCVUVCYXlFRklBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFIUlNBSElCd2JEQUlMSUFvb0FnUWhCeUFKSUFwQkNFRU1JQUVnQmtraUhCdHFLQUlBTmdJQUEwQUNRQ0FGRFFBZ0JDZ0NFQ0lGUVFGcUlRb2dCUzBBQVNFQklBVXRBQUJCL3dGSEJFQWdCQ0FLTmdJUVFRZ2hCU0FCUVFoMElBSnFJUUlNQVFzZ0FVR1BBVTBFUUNBRUlBbzJBaEFnQVVFSmRDQUNhaUVDUVFjaEJRd0JDeUFFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUZDeUFGUVFGcklRVWdBa0VCZENFQ0lBWkJBWFFpQmtHQWdBSkpEUUFMSUFZaEFTQUhJQWRGSUJ3YkRBRUxJQW9vQWdRTElRWWdDeUFiUVFKMGFpQVZJQTRnQmlBVFFkQzdBV290QUFCeklnY2JOZ0lBSUF3Z0RDZ0NBRUdBZ0FGeU5nSUFJQWdnQ0NnQ0JFR0FJSEkyQWdRZ0JDZ0NmRUVDZENBSWFpSUdJQVlvQWdSQkJISTJBZ1FnQmlBR0tBSU1RUUZ5TmdJTUlBWWdCaWdDQ0NBSFFSSjBja0VDY2pZQ0NDQURJQWRCSEhSeVFZREFBSEloQXdzZ0NDQURRZi8vLzdaN2NUWUNBQXNnQ0VFRWFpRURJQXRCQkdvaEN5QVlRUUZxSWhnZ0ZFY05BQXNnQ0VFTWFpRURJQXNnRzBFQ2RHb2hDeUFSUVFScUloRWdCQ2dDZ0FFaUJrRjhjVWtOQUFzTUFRdEJCQ0FHUVh4eElnTWdBMEVFVFJ0QkFXc2lBMEY4Y1VFRWFpRVJJQWNnQTBFQmRFRjRjV3BCRkdvaEF3c2dCQ0FGTmdJSUlBUWdBVFlDQkNBRUlBSTJBZ0FnQkNBSk5nSm9JQlJGRFFRZ0JpQVJUUTBFQTBCQkFDRUZJQkVnQkNnQ2dBRkhCRUFEUUNBRUlBTWdDeUFGSUJSc1FRSjBhaUFPSUFWQkFCQllJQVZCQVdvaUJTQUVLQUtBQVNBUmEwa05BQXNMSUFNZ0F5Z0NBRUgvLy8rMmUzRTJBZ0FnQzBFRWFpRUxJQU5CQkdvaEF5QVhRUUZxSWhjZ0ZFY05BQXNNQkF0QkJDQUdRWHh4SWdNZ0EwRUVUUnRCQVdzaUEwRjhjVUVFYWlFUklBY2dBMEVCZEVGNGNXcEJGR29oQXdzZ0JDQUZOZ0lJSUFRZ0FUWUNCQ0FFSUFJMkFnQWdCQ0FKTmdKb0lCUkZEUUlnQmlBUlRRMENBMEJCQUNFRklCRWdCQ2dDZ0FGSEJFQURRQ0FFSUFNZ0N5QUZJQlJzUVFKMGFpQU9JQVZCQVJCWUlBVkJBV29pQlNBRUtBS0FBU0FSYTBrTkFBc0xJQU1nQXlnQ0FFSC8vLysyZTNFMkFnQWdDMEVFYWlFTElBTkJCR29oQXlBWFFRRnFJaGNnRkVjTkFBc01BZ3NEUUVFQUlRd0RRQ0FESVJFQ1FBSkFBbjhDUUFKQUlBWWlEU2dDQUNJR1JRUkFJQUVnRUNnQ0FDSURLQUlBSWdacklRRUNmeUFHSUFKQkVIWkxCRUFnQXlnQ0JDRUhJQkFnQTBFSVFRd2dBU0FHU1NJS0cyb29BZ0EyQWdBRFFBSkFJQVVOQUNBRUtBSVFJZ05CQVdvaENTQURMUUFCSVFFZ0F5MEFBRUgvQVVZRVFDQUJRWkFCVHdSQUlBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTUFnc2dCQ0FKTmdJUUlBRkJDWFFnQW1vaEFrRUhJUVVNQVFzZ0JDQUpOZ0lRUVFnaEJTQUJRUWgwSUFKcUlRSUxJQVZCQVdzaEJTQUNRUUYwSVFJZ0JrRUJkQ0lHUVlDQUFra05BQXNnQmlFQklBY2dCMFVnQ2hzTUFRc2dBaUFHUVJCMGF5RUNJQUZCZ0lBQ2NVVUVRQ0FES0FJRUlRY2dFQ0FEUVF4QkNDQUJJQVpKSWdvYmFpZ0NBRFlDQUFOQUFrQWdCUTBBSUFRb0FoQWlCa0VCYWlFSklBWXRBQUVoQXlBR0xRQUFRZjhCUmdSQUlBTkJrQUZQQkVBZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQlF3Q0N5QUVJQWsyQWhBZ0EwRUpkQ0FDYWlFQ1FRY2hCUXdCQ3lBRUlBazJBaEJCQ0NFRklBTkJDSFFnQW1vaEFnc2dCVUVCYXlFRklBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFIUlNBSElBb2JEQUVMSUFNb0FnUUxSUVJBSUJBaENRd0dDeUFCSUFnb0FnQWlBeWdDQUNJR2F5RUJBbjhnQmlBQ1FSQjJTd1JBSUFNb0FnUWhCeUFJSUFOQkNFRU1JQUVnQmtraUNodHFLQUlBSWdNMkFnQURRQUpBSUFVTkFDQUVLQUlRSWdsQkFXb2hCU0FKTFFBQklRRWdDUzBBQUVIL0FVWUVRQ0FCUVpBQlR3UkFJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRVU1BZ3NnQkNBRk5nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFVTUFRc2dCQ0FGTmdJUVFRZ2hCU0FCUVFoMElBSnFJUUlMSUFWQkFXc2hCU0FDUVFGMElRSWdCa0VCZENJR1FZQ0FBa2tOQUFzZ0JpRUJJQWNnQjBVZ0Noc01BUXNnQWlBR1FSQjBheUVDSUFGQmdJQUNjVVVFUUNBREtBSUVJUWNnQ0NBRFFReEJDQ0FCSUFaSklnb2JhaWdDQUNJRE5nSUFBMEFDUUNBRkRRQWdCQ2dDRUNJSlFRRnFJUVVnQ1MwQUFTRUdJQWt0QUFCQi93RkdCRUFnQmtHUUFVOEVRQ0FFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUZEQUlMSUFRZ0JUWUNFQ0FHUVFsMElBSnFJUUpCQnlFRkRBRUxJQVFnQlRZQ0VFRUlJUVVnQmtFSWRDQUNhaUVDQ3lBRlFRRnJJUVVnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBZEZJQWNnQ2hzTUFRc2dBeWdDQkFzaENpQUJJQU1vQWdBaUJtc2hBUUovSUFZZ0FrRVFka3NFUUNBREtBSUVJUWNnQ0NBRFFRaEJEQ0FCSUFaSklnNGJhaWdDQURZQ0FBTkFBa0FnQlEwQUlBUW9BaEFpQTBFQmFpRUpJQU10QUFFaEFTQURMUUFBUWY4QlJnUkFJQUZCa0FGUEJFQWdCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJRd0NDeUFFSUFrMkFoQWdBVUVKZENBQ2FpRUNRUWNoQlF3QkN5QUVJQWsyQWhCQkNDRUZJQUZCQ0hRZ0Ftb2hBZ3NnQlVFQmF5RUZJQUpCQVhRaEFpQUdRUUYwSWdaQmdJQUNTUTBBQ3lBR0lRRWdCeUFIUlNBT0d3d0JDeUFDSUFaQkVIUnJJUUlnQVVHQWdBSnhSUVJBSUFNb0FnUWhCeUFJSUFOQkRFRUlJQUVnQmtraURodHFLQUlBTmdJQUEwQUNRQ0FGRFFBZ0JDZ0NFQ0lHUVFGcUlRa2dCaTBBQVNFRElBWXRBQUJCL3dGR0JFQWdBMEdRQVU4RVFDQUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRkRBSUxJQVFnQ1RZQ0VDQURRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdDVFlDRUVFSUlRVWdBMEVJZENBQ2FpRUNDeUFGUVFGcklRVWdBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUFkRklBY2dEaHNNQVFzZ0F5Z0NCQXNoQTBFQUlRWWdDQ0VKQWtBQ1FBSkFBbjhDUUFKQUlBTWdDa0VCZEhJT0JBQUJBd1VLQ3lBQklBc2dEU2dDQkVFUmRrRUVjU0FOUVFScklnY29BZ0JCRTNaQkFYRnlJZzVCMExrQmFpMEFBRUVDZEdvaUNTZ0NBQ0lES0FJQUlnWnJJUUVDZnlBR0lBSkJFSFpMQkVBZ0F5Z0NCQ0VLSUFrZ0EwRUlRUXdnQVNBR1NTSVNHMm9vQWdBMkFnQURRQUpBSUFVTkFDQUVLQUlRSWdOQkFXb2hDU0FETFFBQklRRWdBeTBBQUVIL0FVWUVRQ0FCUVpBQlR3UkFJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRVU1BZ3NnQkNBSk5nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFVTUFRc2dCQ0FKTmdJUVFRZ2hCU0FCUVFoMElBSnFJUUlMSUFWQkFXc2hCU0FDUVFGMElRSWdCa0VCZENJR1FZQ0FBa2tOQUFzZ0JpRUJJQW9nQ2tVZ0Voc01BUXNnQWlBR1FSQjBheUVDSUFGQmdJQUNjVVVFUUNBREtBSUVJUW9nQ1NBRFFReEJDQ0FCSUFaSkloSWJhaWdDQURZQ0FBTkFBa0FnQlEwQUlBUW9BaEFpQmtFQmFpRUpJQVl0QUFFaEF5QUdMUUFBUWY4QlJnUkFJQU5Ca0FGUEJFQWdCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJRd0NDeUFFSUFrMkFoQWdBMEVKZENBQ2FpRUNRUWNoQlF3QkN5QUVJQWsyQWhCQkNDRUZJQU5CQ0hRZ0Ftb2hBZ3NnQlVFQmF5RUZJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBS1JTQUtJQkliREFFTElBTW9BZ1FMSVFNZ0VTQVRJQlFnQXlBT1FkQzdBV290QUFCeklnTWJOZ0lBSUFjZ0J5Z0NBRUVnY2pZQ0FDQU5JQTBvQWdSQkNISTJBZ1FnQTBFVGRDRmJJQUVnQ3lBRUtBSnNMUUFDUVFKMGFpSUhLQUlBSWdNb0FnQWlCbXNoQVFKL0lBWWdBa0VRZGtzRVFDQURLQUlFSVFrZ0J5QURRUWhCRENBQklBWkpJZzRiYWlnQ0FEWUNBQU5BQWtBZ0JRMEFJQVFvQWhBaUEwRUJhaUVISUFNdEFBRWhBU0FETFFBQVFmOEJSZ1JBSUFGQmtBRlBCRUFnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCUXdDQ3lBRUlBYzJBaEFnQVVFSmRDQUNhaUVDUVFjaEJRd0JDeUFFSUFjMkFoQkJDQ0VGSUFGQkNIUWdBbW9oQWdzZ0JVRUJheUVGSUFKQkFYUWhBaUFHUVFGMElnWkJnSUFDU1EwQUN5QUdJUUVnQ1NBSlJTQU9Hd3dCQ3lBQ0lBWkJFSFJySVFJZ0FVR0FnQUp4UlFSQUlBTW9BZ1FoQ1NBSElBTkJERUVJSUFFZ0Jra2lEaHRxS0FJQU5nSUFBMEFDUUNBRkRRQWdCQ2dDRUNJR1FRRnFJUWNnQmkwQUFTRURJQVl0QUFCQi93RkdCRUFnQTBHUUFVOEVRQ0FFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUZEQUlMSUFRZ0J6WUNFQ0FEUVFsMElBSnFJUUpCQnlFRkRBRUxJQVFnQnpZQ0VFRUlJUVVnQTBFSWRDQUNhaUVDQ3lBRlFRRnJJUVVnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBbEZJQWtnRGhzTUFRc2dBeWdDQkFzaEF5QmJRUkJ5SWdZZ0EwVU5BUm9MSUFFZ0N5QU5LQUlFUVJSMlFRUnhJQTFCQkdzaUNTZ0NBRUVXZGtFQmNTQUdRUTkyUVJCeElBWkJFM1pCd0FCeElBWkJBM1pCcWdGeGNuSnljaUlTUWRDNUFXb3RBQUJCQW5ScUlnb29BZ0FpQnlnQ0FDSURheUVCQW44Z0F5QUNRUkIyU3dSQUlBY29BZ1FoRGlBS0lBZEJDRUVNSUFFZ0Ewa2lDaHRxS0FJQU5nSUFBMEFDUUNBRkRRQWdCQ2dDRUNJSFFRRnFJUVVnQnkwQUFTRUJJQWN0QUFCQi93RkdCRUFnQVVHUUFVOEVRQ0FFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUZEQUlMSUFRZ0JUWUNFQ0FCUVFsMElBSnFJUUpCQnlFRkRBRUxJQVFnQlRZQ0VFRUlJUVVnQVVFSWRDQUNhaUVDQ3lBRlFRRnJJUVVnQWtFQmRDRUNJQU5CQVhRaUEwR0FnQUpKRFFBTElBTWhBU0FPSUE1RklBb2JEQUVMSUFJZ0EwRVFkR3NoQWlBQlFZQ0FBbkZGQkVBZ0J5Z0NCQ0VPSUFvZ0IwRU1RUWdnQVNBRFNTSUtHMm9vQWdBMkFnQURRQUpBSUFVTkFDQUVLQUlRSWdkQkFXb2hCU0FITFFBQklRTWdCeTBBQUVIL0FVWUVRQ0FEUVpBQlR3UkFJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRVU1BZ3NnQkNBRk5nSVFJQU5CQ1hRZ0Ftb2hBa0VISVFVTUFRc2dCQ0FGTmdJUVFRZ2hCU0FEUVFoMElBSnFJUUlMSUFWQkFXc2hCU0FDUVFGMElRSWdBVUVCZENJQlFZQ0FBa2tOQUFzZ0RrVWdEaUFLR3d3QkN5QUhLQUlFQ3lFRElCRWdFeUFVSUFNZ0VrSFF1d0ZxTFFBQWN5SURHellDZ0FJZ0NTQUpLQUlBUVlBQ2NqWUNBQ0FOSUEwb0FnUkJ3QUJ5TmdJRUlBWWdBMEVXZEhKQmdBRnlDeUVHSUFFZ0N5QUVLQUpzSUFaQkJuWkI3d054YWkwQUFFRUNkR29pQ1NnQ0FDSUhLQUlBSWdOcklRRUNmeUFESUFKQkVIWkxCRUFnQnlnQ0JDRUtJQWtnQjBFSVFRd2dBU0FEU1NJT0cyb29BZ0EyQWdBRFFBSkFJQVVOQUNBRUtBSVFJZ2RCQVdvaENTQUhMUUFCSVFFZ0J5MEFBRUgvQVVZRVFDQUJRWkFCVHdSQUlBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTUFnc2dCQ0FKTmdJUUlBRkJDWFFnQW1vaEFrRUhJUVVNQVFzZ0JDQUpOZ0lRUVFnaEJTQUJRUWgwSUFKcUlRSUxJQVZCQVdzaEJTQUNRUUYwSVFJZ0EwRUJkQ0lEUVlDQUFra05BQXNnQXlFQklBb2dDa1VnRGhzTUFRc2dBaUFEUVJCMGF5RUNJQUZCZ0lBQ2NVVUVRQ0FIS0FJRUlRb2dDU0FIUVF4QkNDQUJJQU5KSWc0YmFpZ0NBRFlDQUFOQUFrQWdCUTBBSUFRb0FoQWlCMEVCYWlFSklBY3RBQUVoQXlBSExRQUFRZjhCUmdSQUlBTkJrQUZQQkVBZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQlF3Q0N5QUVJQWsyQWhBZ0EwRUpkQ0FDYWlFQ1FRY2hCUXdCQ3lBRUlBazJBaEJCQ0NFRklBTkJDSFFnQW1vaEFnc2dCVUVCYXlFRklBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFLUlNBS0lBNGJEQUVMSUFjb0FnUUxSUTBCQ3lBQklBc2dEU2dDQkVFWGRrRUVjU0FOUVFScklna29BZ0JCR1haQkFYRWdCa0VTZGtFUWNTQUdRUloyUWNBQWNTQUdRUVoyUWFvQmNYSnljbklpRWtIUXVRRnFMUUFBUVFKMGFpSUtLQUlBSWdjb0FnQWlBMnNoQVFKL0lBTWdBa0VRZGtzRVFDQUhLQUlFSVE0Z0NpQUhRUWhCRENBQklBTkpJZ29iYWlnQ0FEWUNBQU5BQWtBZ0JRMEFJQVFvQWhBaUIwRUJhaUVGSUFjdEFBRWhBU0FITFFBQVFmOEJSZ1JBSUFGQmtBRlBCRUFnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCUXdDQ3lBRUlBVTJBaEFnQVVFSmRDQUNhaUVDUVFjaEJRd0JDeUFFSUFVMkFoQkJDQ0VGSUFGQkNIUWdBbW9oQWdzZ0JVRUJheUVGSUFKQkFYUWhBaUFEUVFGMElnTkJnSUFDU1EwQUN5QURJUUVnRGlBT1JTQUtHd3dCQ3lBQ0lBTkJFSFJySVFJZ0FVR0FnQUp4UlFSQUlBY29BZ1FoRGlBS0lBZEJERUVJSUFFZ0Ewa2lDaHRxS0FJQU5nSUFBMEFDUUNBRkRRQWdCQ2dDRUNJSFFRRnFJUVVnQnkwQUFTRURJQWN0QUFCQi93RkdCRUFnQTBHUUFVOEVRQ0FFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUZEQUlMSUFRZ0JUWUNFQ0FEUVFsMElBSnFJUUpCQnlFRkRBRUxJQVFnQlRZQ0VFRUlJUVVnQTBFSWRDQUNhaUVDQ3lBRlFRRnJJUVVnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBNUZJQTRnQ2hzTUFRc2dCeWdDQkFzaEF5QVJJQk1nRkNBRElCSkIwTHNCYWkwQUFITWlBeHMyQW9BRUlBa2dDU2dDQUVHQUVISTJBZ0FnRFNBTktBSUVRWUFFY2pZQ0JDQUdJQU5CR1hSeVFZQUljaUVHQ3lBQklBc2dCQ2dDYkNBR1FRbDJRZThEY1dvdEFBQkJBblJxSWdrb0FnQWlCeWdDQUNJRGF5RUJBbjhnQXlBQ1FSQjJTd1JBSUFjb0FnUWhDaUFKSUFkQkNFRU1JQUVnQTBraURodHFLQUlBTmdJQUEwQUNRQ0FGRFFBZ0JDZ0NFQ0lIUVFGcUlRVWdCeTBBQVNFQklBY3RBQUJCL3dGR0JFQWdBVUdRQVU4RVFDQUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRkRBSUxJQVFnQlRZQ0VDQUJRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdCVFlDRUVFSUlRVWdBVUVJZENBQ2FpRUNDeUFGUVFGcklRVWdBa0VCZENFQ0lBTkJBWFFpQTBHQWdBSkpEUUFMSUFNaEFTQUtJQXBGSUE0YkRBRUxJQUlnQTBFUWRHc2hBaUFCUVlDQUFuRkZCRUFnQnlnQ0JDRUtJQWtnQjBFTVFRZ2dBU0FEU1NJT0cyb29BZ0EyQWdBRFFBSkFJQVVOQUNBRUtBSVFJZ2RCQVdvaEJTQUhMUUFCSVFNZ0J5MEFBRUgvQVVZRVFDQURRWkFCVHdSQUlBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTUFnc2dCQ0FGTmdJUUlBTkJDWFFnQW1vaEFrRUhJUVVNQVFzZ0JDQUZOZ0lRUVFnaEJTQURRUWgwSUFKcUlRSUxJQVZCQVdzaEJTQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnQ2tVZ0NpQU9Hd3dCQ3lBSEtBSUVDMFVOQlFzZ0FTQUxJQTBvQWdSQkduWkJCSEVnRFVFRWF5SU9LQUlBUVJ4MlFRRnhJQVpCRlhaQkVIRWdCa0VaZGtIQUFIRWdCa0VKZGtHcUFYRnljbkp5SWdwQjBMa0JhaTBBQUVFQ2RHb2lDU2dDQUNJSEtBSUFJZ05ySVFFZ0F5QUNRUkIyU3dSQUlBY29BZ1FoRWlBSklBZEJDRUVNSUFFZ0Ewa2lGUnRxS0FJQU5nSUFBMEFDUUNBRkRRQWdCQ2dDRUNJSFFRRnFJUVVnQnkwQUFTRUJJQWN0QUFCQi93RkdCRUFnQVVHUUFVOEVRQ0FFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUZEQUlMSUFRZ0JUWUNFQ0FCUVFsMElBSnFJUUpCQnlFRkRBRUxJQVFnQlRZQ0VFRUlJUVVnQVVFSWRDQUNhaUVDQ3lBRlFRRnJJUVVnQWtFQmRDRUNJQU5CQVhRaUEwR0FnQUpKRFFBTElBTWhBU0FTSUJKRklCVWJEQVFMSUFJZ0EwRVFkR3NoQWlBQlFZQ0FBbkVOQVNBSEtBSUVJUklnQ1NBSFFReEJDQ0FCSUFOSkloVWJhaWdDQURZQ0FBTkFBa0FnQlEwQUlBUW9BaEFpQjBFQmFpRUZJQWN0QUFFaEF5QUhMUUFBUWY4QlJnUkFJQU5Ca0FGUEJFQWdCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJRd0NDeUFFSUFVMkFoQWdBMEVKZENBQ2FpRUNRUWNoQlF3QkN5QUVJQVUyQWhCQkNDRUZJQU5CQ0hRZ0Ftb2hBZ3NnQlVFQmF5RUZJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBU1JTQVNJQlViREFNTEFrQWdCa0dRZ0lBQmNRMEFJQUVnQ3lBRUtBSnNJQVpCN3dOeGFpMEFBRUVDZEdvaUNTZ0NBQ0lIS0FJQUlnTnJJUUVDZnlBRElBSkJFSFpMQkVBZ0J5Z0NCQ0VLSUFrZ0IwRUlRUXdnQVNBRFNTSU9HMm9vQWdBMkFnQURRQUpBSUFVTkFDQUVLQUlRSWdkQkFXb2hCU0FITFFBQklRRWdCeTBBQUVIL0FVWUVRQ0FCUVpBQlR3UkFJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRVU1BZ3NnQkNBRk5nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFVTUFRc2dCQ0FGTmdJUVFRZ2hCU0FCUVFoMElBSnFJUUlMSUFWQkFXc2hCU0FDUVFGMElRSWdBMEVCZENJRFFZQ0FBa2tOQUFzZ0F5RUJJQW9nQ2tVZ0Roc01BUXNnQWlBRFFSQjBheUVDSUFGQmdJQUNjVVVFUUNBSEtBSUVJUW9nQ1NBSFFReEJDQ0FCSUFOSklnNGJhaWdDQURZQ0FBTkFBa0FnQlEwQUlBUW9BaEFpQjBFQmFpRUZJQWN0QUFFaEF5QUhMUUFBUWY4QlJnUkFJQU5Ca0FGUEJFQWdCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJRd0NDeUFFSUFVMkFoQWdBMEVKZENBQ2FpRUNRUWNoQlF3QkN5QUVJQVUyQWhCQkNDRUZJQU5CQ0hRZ0Ftb2hBZ3NnQlVFQmF5RUZJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBS1JTQUtJQTRiREFFTElBY29BZ1FMUlEwQUlBRWdDeUFOS0FJRVFSRjJRUVJ4SUExQkJHc2lDaWdDQUVFVGRrRUJjU0FHUVE1MlFSQnhJQVpCRUhaQndBQnhJQVpCcWdGeGNuSnljaUlTUWRDNUFXb3RBQUJCQW5ScUlna29BZ0FpQnlnQ0FDSURheUVCQW44Z0F5QUNRUkIyU3dSQUlBY29BZ1FoRGlBSklBZEJDRUVNSUFFZ0Ewa2lGUnRxS0FJQU5nSUFBMEFDUUNBRkRRQWdCQ2dDRUNJSFFRRnFJUVVnQnkwQUFTRUJJQWN0QUFCQi93RkdCRUFnQVVHUUFVOEVRQ0FFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUZEQUlMSUFRZ0JUWUNFQ0FCUVFsMElBSnFJUUpCQnlFRkRBRUxJQVFnQlRZQ0VFRUlJUVVnQVVFSWRDQUNhaUVDQ3lBRlFRRnJJUVVnQWtFQmRDRUNJQU5CQVhRaUEwR0FnQUpKRFFBTElBTWhBU0FPSUE1RklCVWJEQUVMSUFJZ0EwRVFkR3NoQWlBQlFZQ0FBbkZGQkVBZ0J5Z0NCQ0VPSUFrZ0IwRU1RUWdnQVNBRFNTSVZHMm9vQWdBMkFnQURRQUpBSUFVTkFDQUVLQUlRSWdkQkFXb2hCU0FITFFBQklRTWdCeTBBQUVIL0FVWUVRQ0FEUVpBQlR3UkFJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRVU1BZ3NnQkNBRk5nSVFJQU5CQ1hRZ0Ftb2hBa0VISVFVTUFRc2dCQ0FGTmdJUVFRZ2hCU0FEUVFoMElBSnFJUUlMSUFWQkFXc2hCU0FDUVFGMElRSWdBVUVCZENJQlFZQ0FBa2tOQUFzZ0RrVWdEaUFWR3d3QkN5QUhLQUlFQ3lFRElCRWdFeUFVSUFNZ0VrSFF1d0ZxTFFBQWN5SURHellDQUNBS0lBb29BZ0JCSUhJMkFnQWdEU0FOS0FJRVFRaHlOZ0lFSUFZZ0EwRVRkSEpCRUhJaEJnc0NRQ0FHUVlDQmdBaHhEUUFnQVNBTElBUW9BbXdnQmtFRGRpSU9RZThEY1dvdEFBQkJBblJxSWdrb0FnQWlCeWdDQUNJRGF5RUJBbjhnQXlBQ1FSQjJTd1JBSUFjb0FnUWhDaUFKSUFkQkNFRU1JQUVnQTBraUVodHFLQUlBTmdJQUEwQUNRQ0FGRFFBZ0JDZ0NFQ0lIUVFGcUlRVWdCeTBBQVNFQklBY3RBQUJCL3dGR0JFQWdBVUdRQVU4RVFDQUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRkRBSUxJQVFnQlRZQ0VDQUJRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdCVFlDRUVFSUlRVWdBVUVJZENBQ2FpRUNDeUFGUVFGcklRVWdBa0VCZENFQ0lBTkJBWFFpQTBHQWdBSkpEUUFMSUFNaEFTQUtJQXBGSUJJYkRBRUxJQUlnQTBFUWRHc2hBaUFCUVlDQUFuRkZCRUFnQnlnQ0JDRUtJQWtnQjBFTVFRZ2dBU0FEU1NJU0cyb29BZ0EyQWdBRFFBSkFJQVVOQUNBRUtBSVFJZ2RCQVdvaEJTQUhMUUFCSVFNZ0J5MEFBRUgvQVVZRVFDQURRWkFCVHdSQUlBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTUFnc2dCQ0FGTmdJUUlBTkJDWFFnQW1vaEFrRUhJUVVNQVFzZ0JDQUZOZ0lRUVFnaEJTQURRUWgwSUFKcUlRSUxJQVZCQVdzaEJTQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnQ2tVZ0NpQVNHd3dCQ3lBSEtBSUVDMFVOQUNBQklBc2dEU2dDQkVFVWRrRUVjU0FOUVFScklnb29BZ0JCRm5aQkFYRWdCa0VQZGtFUWNTQUdRUk4yUWNBQWNTQU9RYW9CY1hKeWNuSWlFa0hRdVFGcUxRQUFRUUowYWlJSktBSUFJZ2NvQWdBaUEyc2hBUUovSUFNZ0FrRVFka3NFUUNBSEtBSUVJUTRnQ1NBSFFRaEJEQ0FCSUFOSkloVWJhaWdDQURZQ0FBTkFBa0FnQlEwQUlBUW9BaEFpQjBFQmFpRUZJQWN0QUFFaEFTQUhMUUFBUWY4QlJnUkFJQUZCa0FGUEJFQWdCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJRd0NDeUFFSUFVMkFoQWdBVUVKZENBQ2FpRUNRUWNoQlF3QkN5QUVJQVUyQWhCQkNDRUZJQUZCQ0hRZ0Ftb2hBZ3NnQlVFQmF5RUZJQUpCQVhRaEFpQURRUUYwSWdOQmdJQUNTUTBBQ3lBRElRRWdEaUFPUlNBVkd3d0JDeUFDSUFOQkVIUnJJUUlnQVVHQWdBSnhSUVJBSUFjb0FnUWhEaUFKSUFkQkRFRUlJQUVnQTBraUZSdHFLQUlBTmdJQUEwQUNRQ0FGRFFBZ0JDZ0NFQ0lIUVFGcUlRVWdCeTBBQVNFRElBY3RBQUJCL3dGR0JFQWdBMEdRQVU4RVFDQUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRkRBSUxJQVFnQlRZQ0VDQURRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdCVFlDRUVFSUlRVWdBMEVJZENBQ2FpRUNDeUFGUVFGcklRVWdBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUE1RklBNGdGUnNNQVFzZ0J5Z0NCQXNoQXlBUklCTWdGQ0FESUJKQjBMc0JhaTBBQUhNaUF4czJBb0FDSUFvZ0NpZ0NBRUdBQW5JMkFnQWdEU0FOS0FJRVFjQUFjallDQkNBR0lBTkJGblJ5UVlBQmNpRUdDd0pBSUFaQmdJaUF3QUJ4RFFBZ0FTQUxJQVFvQW13Z0JrRUdkaUlPUWU4RGNXb3RBQUJCQW5ScUlna29BZ0FpQnlnQ0FDSURheUVCQW44Z0F5QUNRUkIyU3dSQUlBY29BZ1FoQ2lBSklBZEJDRUVNSUFFZ0Ewa2lFaHRxS0FJQU5nSUFBMEFDUUNBRkRRQWdCQ2dDRUNJSFFRRnFJUVVnQnkwQUFTRUJJQWN0QUFCQi93RkdCRUFnQVVHUUFVOEVRQ0FFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUZEQUlMSUFRZ0JUWUNFQ0FCUVFsMElBSnFJUUpCQnlFRkRBRUxJQVFnQlRZQ0VFRUlJUVVnQVVFSWRDQUNhaUVDQ3lBRlFRRnJJUVVnQWtFQmRDRUNJQU5CQVhRaUEwR0FnQUpKRFFBTElBTWhBU0FLSUFwRklCSWJEQUVMSUFJZ0EwRVFkR3NoQWlBQlFZQ0FBbkZGQkVBZ0J5Z0NCQ0VLSUFrZ0IwRU1RUWdnQVNBRFNTSVNHMm9vQWdBMkFnQURRQUpBSUFVTkFDQUVLQUlRSWdkQkFXb2hCU0FITFFBQklRTWdCeTBBQUVIL0FVWUVRQ0FEUVpBQlR3UkFJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRVU1BZ3NnQkNBRk5nSVFJQU5CQ1hRZ0Ftb2hBa0VISVFVTUFRc2dCQ0FGTmdJUVFRZ2hCU0FEUVFoMElBSnFJUUlMSUFWQkFXc2hCU0FDUVFGMElRSWdBVUVCZENJQlFZQ0FBa2tOQUFzZ0NrVWdDaUFTR3d3QkN5QUhLQUlFQzBVTkFDQUJJQXNnRFNnQ0JFRVhka0VFY1NBTlFRUnJJZ29vQWdCQkdYWkJBWEVnQmtFU2RrRVFjU0FHUVJaMlFjQUFjU0FPUWFvQmNYSnljbklpRWtIUXVRRnFMUUFBUVFKMGFpSUpLQUlBSWdjb0FnQWlBMnNoQVFKL0lBTWdBa0VRZGtzRVFDQUhLQUlFSVE0Z0NTQUhRUWhCRENBQklBTkpJaFViYWlnQ0FEWUNBQU5BQWtBZ0JRMEFJQVFvQWhBaUIwRUJhaUVGSUFjdEFBRWhBU0FITFFBQVFmOEJSZ1JBSUFGQmtBRlBCRUFnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCUXdDQ3lBRUlBVTJBaEFnQVVFSmRDQUNhaUVDUVFjaEJRd0JDeUFFSUFVMkFoQkJDQ0VGSUFGQkNIUWdBbW9oQWdzZ0JVRUJheUVGSUFKQkFYUWhBaUFEUVFGMElnTkJnSUFDU1EwQUN5QURJUUVnRGlBT1JTQVZHd3dCQ3lBQ0lBTkJFSFJySVFJZ0FVR0FnQUp4UlFSQUlBY29BZ1FoRGlBSklBZEJERUVJSUFFZ0Ewa2lGUnRxS0FJQU5nSUFBMEFDUUNBRkRRQWdCQ2dDRUNJSFFRRnFJUVVnQnkwQUFTRURJQWN0QUFCQi93RkdCRUFnQTBHUUFVOEVRQ0FFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUZEQUlMSUFRZ0JUWUNFQ0FEUVFsMElBSnFJUUpCQnlFRkRBRUxJQVFnQlRZQ0VFRUlJUVVnQTBFSWRDQUNhaUVDQ3lBRlFRRnJJUVVnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBNUZJQTRnRlJzTUFRc2dCeWdDQkFzaEF5QVJJQk1nRkNBRElCSkIwTHNCYWkwQUFITWlBeHMyQW9BRUlBb2dDaWdDQUVHQUVISTJBZ0FnRFNBTktBSUVRWUFFY2pZQ0JDQUdJQU5CR1hSeVFZQUljaUVHQ3lBR1FZREFnSUFFY1EwRElBRWdDeUFFS0FKc0lBWkJDWFlpRWtIdkEzRnFMUUFBUVFKMGFpSUpLQUlBSWdFb0FnQWlBMnNoQndKL0lBTWdBa0VRZGtzRVFDQUJLQUlFSVFvZ0NTQUJRUWhCRENBRElBZExJZzRiYWlnQ0FEWUNBQU5BQWtBZ0JRMEFJQVFvQWhBaUIwRUJhaUVGSUFjdEFBRWhBU0FITFFBQVFmOEJSZ1JBSUFGQmtBRlBCRUFnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCUXdDQ3lBRUlBVTJBaEFnQVVFSmRDQUNhaUVDUVFjaEJRd0JDeUFFSUFVMkFoQkJDQ0VGSUFGQkNIUWdBbW9oQWdzZ0JVRUJheUVGSUFKQkFYUWhBaUFEUVFGMElnTkJnSUFDU1EwQUN5QURJUWNnQ2lBS1JTQU9Hd3dCQ3lBQ0lBTkJFSFJySVFJZ0IwR0FnQUp4UlFSQUlBRW9BZ1FoQ2lBSklBRkJERUVJSUFNZ0Iwc2lEaHRxS0FJQU5nSUFBMEFDUUNBRkRRQWdCQ2dDRUNJRFFRRnFJUVVnQXkwQUFTRUJJQU10QUFCQi93RkdCRUFnQVVHUUFVOEVRQ0FFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUZEQUlMSUFRZ0JUWUNFQ0FCUVFsMElBSnFJUUpCQnlFRkRBRUxJQVFnQlRZQ0VFRUlJUVVnQVVFSWRDQUNhaUVDQ3lBRlFRRnJJUVVnQWtFQmRDRUNJQWRCQVhRaUIwR0FnQUpKRFFBTElBcEZJQW9nRGhzTUFRc2dBU2dDQkF0RkJFQWdCeUVCREFRTElBY2dDeUFOS0FJRVFScDJRUVJ4SUExQkJHc2lEaWdDQUVFY2RrRUJjU0FHUVJWMlFSQnhJQVpCR1haQndBQnhJQkpCcWdGeGNuSnljaUlLUWRDNUFXb3RBQUJCQW5ScUlna29BZ0FpQnlnQ0FDSUJheUVESUFFZ0FrRVFka3NFUUNBSEtBSUVJUklnQ1NBSFFRaEJEQ0FCSUFOTEloVWJhaWdDQURZQ0FBTkFBa0FnQlEwQUlBUW9BaEFpQjBFQmFpRUZJQWN0QUFFaEF5QUhMUUFBUWY4QlJnUkFJQU5Ca0FGUEJFQWdCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJRd0NDeUFFSUFVMkFoQWdBMEVKZENBQ2FpRUNRUWNoQlF3QkN5QUVJQVUyQWhCQkNDRUZJQU5CQ0hRZ0Ftb2hBZ3NnQlVFQmF5RUZJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBU0lCSkZJQlViREFNTElBSWdBVUVRZEdzaEFpQURRWUNBQW5GRkRRRWdBeUVCQ3lBSEtBSUVEQUVMSUFjb0FnUWhFaUFKSUFkQkRFRUlJQUVnQTBzaUZSdHFLQUlBTmdJQUEwQUNRQ0FGRFFBZ0JDZ0NFQ0lIUVFGcUlRVWdCeTBBQVNFQklBY3RBQUJCL3dGR0JFQWdBVUdRQVU4RVFDQUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRkRBSUxJQVFnQlRZQ0VDQUJRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdCVFlDRUVFSUlRVWdBVUVJZENBQ2FpRUNDeUFGUVFGcklRVWdBa0VCZENFQ0lBTkJBWFFpQTBHQWdBSkpEUUFMSUFNaEFTQVNSU0FTSUJVYkN5RURJQkVnRXlBVUlBTWdDa0hRdXdGcUxRQUFjeUlER3pZQ2dBWWdEaUFPS0FJQVFZQ0FBWEkyQWdBZ0RTQU5LQUlFUVlBZ2NqWUNCQ0FOSUEwb0FvUUNRUVJ5TmdLRUFpQU5JQTBvQW93Q1FRRnlOZ0tNQWlBTklBMG9Bb2dDSUFOQkVuUnlRUUp5TmdLSUFpQUdJQU5CSEhSeVFZREFBSEloQmdzZ0RTQUdRZi8vLzdaN2NUWUNBQXNnRFVFRWFpRUdJQkZCQkdvaEF5QU1RUUZxSWd4QndBQkhEUUFMSUExQkRHb2hCaUFSUVlRR2FpRURJQmRCUEVraFhDQVhRUVJxSVJjZ1hBMEFDd3NnQkNBRk5nSUlJQVFnQVRZQ0JDQUVJQUkyQWdBZ0JDQUpOZ0pvQ3dKQUlCWkJJSEZGRFFBZ0JDQUVRZVFBYWpZQ2FDQUVJQVFvQWdRZ0JDZ0NaQ0lHS0FJQUlnRnJJZ0kyQWdRQ1FDQUJJQVFvQWdBaUJVRVFka3NFUUNBRUlBRTJBZ1FnQkNBR1FRaEJEQ0FCSUFKTEcyb29BZ0FpQmpZQ1pDQUVLQUlJSVFJRFFBSkFJQUlOQUNBRUtBSVFJZ2RCQVdvaENTQUhMUUFCSVFNZ0J5MEFBRUgvQVVZRVFDQURRWkFCVHdSQUlBUWdCQ2dDREVFQmFqWUNEQ0FGUVlEK0Eyb2hCVUVJSVFJTUFnc2dCQ0FKTmdJUUlBTkJDWFFnQldvaEJVRUhJUUlNQVFzZ0JDQUpOZ0lRUVFnaEFpQURRUWgwSUFWcUlRVUxJQVFnQWtFQmF5SUNOZ0lJSUFRZ0JVRUJkQ0lGTmdJQUlBUWdBVUVCZENJQk5nSUVJQUZCZ0lBQ1NRMEFDeUFCSVFJTUFRc2dCQ0FGSUFGQkVIUnJJZ1UyQWdBZ0FrR0FnQUp4RFFBZ0JDQUdRUXhCQ0NBQklBSkxHMm9vQWdBaUJqWUNaQ0FFS0FJSUlRRURRQUpBSUFFTkFDQUVLQUlRSWdGQkFXb2hCeUFCTFFBQklRTWdBUzBBQUVIL0FVWUVRQ0FEUVpBQlR3UkFJQVFnQkNnQ0RFRUJhallDRENBRlFZRCtBMm9oQlVFSUlRRU1BZ3NnQkNBSE5nSVFJQU5CQ1hRZ0JXb2hCVUVISVFFTUFRc2dCQ0FITmdJUVFRZ2hBU0FEUVFoMElBVnFJUVVMSUFRZ0FVRUJheUlCTmdJSUlBUWdCVUVCZENJRk5nSUFJQVFnQWtFQmRDSUNOZ0lFSUFKQmdJQUNTUTBBQ3dzZ0JDQUNJQVlvQWdBaUFXc2lBallDQkFKQUlBRWdCVUVRZGtzRVFDQUVJQUUyQWdRZ0JDQUdRUWhCRENBQklBSkxHMm9vQWdBaUJqWUNaQ0FFS0FJSUlRSURRQUpBSUFJTkFDQUVLQUlRSWdkQkFXb2hDU0FITFFBQklRTWdCeTBBQUVIL0FVWUVRQ0FEUVpBQlR3UkFJQVFnQkNnQ0RFRUJhallDRENBRlFZRCtBMm9oQlVFSUlRSU1BZ3NnQkNBSk5nSVFJQU5CQ1hRZ0JXb2hCVUVISVFJTUFRc2dCQ0FKTmdJUVFRZ2hBaUFEUVFoMElBVnFJUVVMSUFRZ0FrRUJheUlDTmdJSUlBUWdCVUVCZENJRk5nSUFJQVFnQVVFQmRDSUJOZ0lFSUFGQmdJQUNTUTBBQ3lBQklRSU1BUXNnQkNBRklBRkJFSFJySWdVMkFnQWdBa0dBZ0FKeERRQWdCQ0FHUVF4QkNDQUJJQUpMRzJvb0FnQWlCallDWkNBRUtBSUlJUUVEUUFKQUlBRU5BQ0FFS0FJUUlnRkJBV29oQnlBQkxRQUJJUU1nQVMwQUFFSC9BVVlFUUNBRFFaQUJUd1JBSUFRZ0JDZ0NERUVCYWpZQ0RDQUZRWUQrQTJvaEJVRUlJUUVNQWdzZ0JDQUhOZ0lRSUFOQkNYUWdCV29oQlVFSElRRU1BUXNnQkNBSE5nSVFRUWdoQVNBRFFRaDBJQVZxSVFVTElBUWdBVUVCYXlJQk5nSUlJQVFnQlVFQmRDSUZOZ0lBSUFRZ0FrRUJkQ0lDTmdJRUlBSkJnSUFDU1EwQUN3c2dCQ0FDSUFZb0FnQWlBV3NpQWpZQ0JBSkFJQUVnQlVFUWRrc0VRQ0FFSUFFMkFnUWdCQ0FHUVFoQkRDQUJJQUpMRzJvb0FnQWlCallDWkNBRUtBSUlJUUlEUUFKQUlBSU5BQ0FFS0FJUUlnZEJBV29oQ1NBSExRQUJJUU1nQnkwQUFFSC9BVVlFUUNBRFFaQUJUd1JBSUFRZ0JDZ0NERUVCYWpZQ0RDQUZRWUQrQTJvaEJVRUlJUUlNQWdzZ0JDQUpOZ0lRSUFOQkNYUWdCV29oQlVFSElRSU1BUXNnQkNBSk5nSVFRUWdoQWlBRFFRaDBJQVZxSVFVTElBUWdBa0VCYXlJQ05nSUlJQVFnQlVFQmRDSUZOZ0lBSUFRZ0FVRUJkQ0lCTmdJRUlBRkJnSUFDU1EwQUN5QUJJUUlNQVFzZ0JDQUZJQUZCRUhScklnVTJBZ0FnQWtHQWdBSnhEUUFnQkNBR1FReEJDQ0FCSUFKTEcyb29BZ0FpQmpZQ1pDQUVLQUlJSVFFRFFBSkFJQUVOQUNBRUtBSVFJZ0ZCQVdvaEJ5QUJMUUFCSVFNZ0FTMEFBRUgvQVVZRVFDQURRWkFCVHdSQUlBUWdCQ2dDREVFQmFqWUNEQ0FGUVlEK0Eyb2hCVUVJSVFFTUFnc2dCQ0FITmdJUUlBTkJDWFFnQldvaEJVRUhJUUVNQVFzZ0JDQUhOZ0lRUVFnaEFTQURRUWgwSUFWcUlRVUxJQVFnQVVFQmF5SUJOZ0lJSUFRZ0JVRUJkQ0lGTmdJQUlBUWdBa0VCZENJQ05nSUVJQUpCZ0lBQ1NRMEFDd3NnQkNBQ0lBWW9BZ0FpQVdzaUFqWUNCQ0FCSUFWQkVIWkxCRUFnQkNBQk5nSUVJQVFnQmtFSVFRd2dBU0FDU3h0cUtBSUFOZ0prSUFRb0FnZ2hBZ05BQWtBZ0FnMEFJQVFvQWhBaUJrRUJhaUVISUFZdEFBRWhBeUFHTFFBQVFmOEJSZ1JBSUFOQmtBRlBCRUFnQkNBRUtBSU1RUUZxTmdJTUlBVkJnUDREYWlFRlFRZ2hBZ3dDQ3lBRUlBYzJBaEFnQTBFSmRDQUZhaUVGUVFjaEFnd0JDeUFFSUFjMkFoQkJDQ0VDSUFOQkNIUWdCV29oQlFzZ0JDQUNRUUZySWdJMkFnZ2dCQ0FGUVFGMElnVTJBZ0FnQkNBQlFRRjBJZ0UyQWdRZ0FVR0FnQUpKRFFBTERBRUxJQVFnQlNBQlFSQjBheUlITmdJQUlBSkJnSUFDY1EwQUlBUWdCa0VNUVFnZ0FTQUNTeHRxS0FJQU5nSmtJQVFvQWdnaEJRTkFBa0FnQlEwQUlBUW9BaEFpQTBFQmFpRUdJQU10QUFFaEFTQURMUUFBUWY4QlJnUkFJQUZCa0FGUEJFQWdCQ0FFS0FJTVFRRnFOZ0lNSUFkQmdQNERhaUVIUVFnaEJRd0NDeUFFSUFZMkFoQWdBVUVKZENBSGFpRUhRUWNoQlF3QkN5QUVJQVkyQWhCQkNDRUZJQUZCQ0hRZ0Iyb2hCd3NnQkNBRlFRRnJJZ1UyQWdnZ0JDQUhRUUYwSWdjMkFnQWdCQ0FDUVFGMElnSTJBZ1FnQWtHQWdBSkpEUUFMQ3dzZ0p3MEFJQVFRV2lBRVFiQ3BBVFlDWkNBRVFkQ2VBVFlDWUNBRVFmQ2VBVFlDSEF0QkFDQWZRUUZxSWdFZ0FVRURSaUlCR3lFZklCa2dBV3NoR1NBbVFRRnFJaVlnSUNnQ0NFOE5BU0FaUVFCS0RRQUxDeUFvSUNwcUlTZ2dCQ2dDR0NBRUx3RndPd0FBSUNsQkFXb2lLU0FhS0FJc1NRMEFDd3NDUUNBclJRMEFBa0FnQkNnQ0dDSUJJQVFvQWhBaUEwRUNha3NFUUNBaFJRMEJJQ01nQVNBRUtBSVVJZ1pyTmdJNElDTWdBeUFHYXpZQ05DQWpJQUVnQTJ0QkFtczJBakFnSFVFQ1FaRHlBQ0FqUVRCcUVBOE1BZ3NnQkNnQ0RDSUJRUU5KRFFFZ0lRUkFJQ01nQVRZQ1VDQWRRUUpCNlRVZ0kwSFFBR29RRHd3Q0N5QWpJQUUyQWtBZ0hVRUNRZWsxSUNOQlFHc1FEd3dCQ3lBaklBRWdCQ2dDRkNJR2F6WUNLQ0FqSUFNZ0JtczJBaVFnSXlBQklBTnJRUUpyTmdJZ0lCMUJBa0dROGdBZ0kwRWdhaEFQQ3lBYUtBSThSUTBBSUFRZ0xEWUNkQXNnTUNnQ0JDRUJJQm9vQWd3aFhTQWFLQUlJSURBb0FnQnJJUWdnTUNnQ0VDSUdRUUZ4QkVBZ01pZ0NIQ0EzUVpnQmJHb2lCMEdRQVdzb0FnQWdDR29nQjBHWUFXc29BZ0JySVFnTElGMGdBV3NoQXlBR1FRSnhCRUFnTWlnQ0hDQTNRWmdCYkdvaUFVR01BV3NvQWdBZ0Eyb2dBVUdVQVdzb0FnQnJJUU1MSUJvb0Fqd2lCaUVDSUFaRkJFQWdCQ2dDZENFQ0N5QUVLQUtBQVNFV0lBUW9BbndoRFFKQUlDOG9BcWdHSWdkRkRRQWdGa1VnRFVWeUlRRWdCMEVlVEFSQUlBRU5BVUVBSVJBRFFDQU5JQkJzSVFSQkFDRUJBMEFnQWlBQklBUnFRUUowYWlJUktBSUFJZ2tnQ1VFZmRTSUZjeUFGYXlJRklBZDJCRUFnRVVFQUlBVWdMeWdDcUFaMkloRnJJQkVnQ1VFQVNCczJBZ0FMSUFGQkFXb2lBU0FOUncwQUN5QVFRUUZxSWhBZ0ZrY05BQXNNQVFzZ0FRMEFJQUpCQUNBTklCWnNRUUowRUJVYUN5QUdCRUFnRFNBV2JDRUdJQzhvQWhSQkFVWUVRQ0FHUlEwRlFRQWhBU0FHUVFSUEJFQWdCa0Y4Y1NFQlFRQWhCQU5BSUFJZ0JFRUNkR29pQXlBRC9RQUNBQ0plL1JzQVFRSnQvUkVnWHYwYkFVRUNiZjBjQVNCZS9Sc0NRUUp0L1J3Q0lGNzlHd05CQW0zOUhBUDlDd0lBSUFSQkJHb2lCQ0FCUncwQUN5QUJJQVpHRFFZTEEwQWdBaUFCUVFKMGFpSURJQU1vQWdCQkFtMDJBZ0FnQVVFQmFpSUJJQVpIRFFBTERBVUxJQVpGRFFRZ01Db0NJRU1BQUFBL2xDRm1RUUFoQkFKQUlBWkJCRWtFUUNBQ0lRRU1BUXNnQWlBR1FYeHhJZ1JCQW5ScUlRRWdadjBUSVY1QkFDRURBMEFnQWlBRFFRSjBhaUlISUY0Z0IvMEFBZ0Q5K2dIOTVnSDlDd0lBSUFOQkJHb2lBeUFFUncwQUN5QUVJQVpHRFFVTEEwQWdBU0JtSUFFb0FnQ3lsRGdDQUNBQlFRUnFJUUVnQkVFQmFpSUVJQVpIRFFBTERBUUxJRFlnTldzaEVTQXZLQUlVUVFGSERRSWdGa1VOQXlBeUtBSWtJZ1lnQXlBUmJDSURRUUowYWlBSVFRSjBhaUVKSUExQmZIRWlERUVCYXlJQlFRUnhJUXNnTmlBTklEVnFhMEVDZENFYUlBRkJBblpCQVdwQi92Ly8vd2R4SVIwZ0F5QUlha0VDZENBR2FpQUNheUVLUVFBaENDQUJRUU5ISVJRRFFFRUFJUUVDUUNBTVJRMEFJQWdnRFd3aEF5QUpJQWdnRVd4QkFuUnFJUVpCQUNFSElCUUVRQU5BSUFZZ0FVRUNkR29nQWlBQklBTnFRUUowYXYwQUFnQWlYdjBiQUVFQ2JmMFJJRjc5R3dGQkFtMzlIQUVnWHYwYkFrRUNiZjBjQWlCZS9Sc0RRUUp0L1J3RC9Rc0NBQ0FHSUFGQkJISWlCRUVDZEdvZ0FpQURJQVJxUVFKMGF2MEFBZ0FpWHYwYkFFRUNiZjBSSUY3OUd3RkJBbTM5SEFFZ1h2MGJBa0VDYmYwY0FpQmUvUnNEUVFKdC9Sd0QvUXNDQUNBQlFRaHFJUUVnQjBFQ2FpSUhJQjFIRFFBTEN5QUxEUUFnQmlBQlFRSjBhaUFDSUFFZ0EycEJBblJxL1FBQ0FDSmUvUnNBUVFKdC9SRWdYdjBiQVVFQ2JmMGNBU0JlL1JzQ1FRSnQvUndDSUY3OUd3TkJBbTM5SEFQOUN3SUFJQUZCQkdvaEFRc0NRQ0FCSUExUERRQWdDQ0FOYkNFRElBa2dDQ0FSYkVFQ2RHb2hCd0pBSUEwZ0FXc2lFRUVFU1FSQUlBRWhCQXdCQ3lBS0lBZ2dHbXhxUVJCSkJFQWdBU0VFREFFTElBRWdFRUY4Y1NJRmFpRUVRUUFoQmdOQUlBY2dBU0FHYWlJaFFRSjBhaUFDSUFNZ0lXcEJBblJxL1FBQ0FDSmUvUnNBUVFKdC9SRWdYdjBiQVVFQ2JmMGNBU0JlL1JzQ1FRSnQvUndDSUY3OUd3TkJBbTM5SEFQOUN3SUFJQVpCQkdvaUJpQUZSdzBBQ3lBRklCQkdEUUVMSUFSQkFXb2hBU0FOSUFSclFRRnhCRUFnQnlBRVFRSjBhaUFDSUFNZ0JHcEJBblJxS0FJQVFRSnROZ0lBSUFFaEJBc2dBU0FOUmcwQUEwQWdCeUFFUVFKMGFpQUNJQU1nQkdwQkFuUnFLQUlBUVFKdE5nSUFJQWNnQkVFQmFpSUJRUUowYWlBQ0lBRWdBMnBCQW5ScUtBSUFRUUp0TmdJQUlBUkJBbW9pQkNBTlJ3MEFDd3NnQ0VFQmFpSUlJQlpIRFFBTERBTUxJQ01nR1RZQ0FDQWRRUUpCMWNFQUlDTVFEd3NnRUNnQ0FFRUFOZ0lBREFFTElCWkZEUUFnRFVVTkFDQXlLQUlrSUFNZ0VXeEJBblJxSUFoQkFuUnFJUWNnRFVGOGNTSURRUUowSVFZZ01Db0NJRU1BQUFBL2xDSm0vUk1oWGtFQUlSQWdEVUVFU1NFSUEwQUNRQUpBSUFnRVFDQUNJUWtnQnlFQlFRQWhCQXdCQ3lBR0lBZHFJUUVnQWlBR2FpRUpRUUFoQkFOQUlBY2dCRUVDZENJRmFpQmVJQUlnQldyOUFBSUEvZm9CL2VZQi9Rc0NBQ0FFUVFScUlnUWdBMGNOQUFzZ0NTRUNJQU1pQkNBTlJnMEJDeUFKSVFJRFFDQUJJR1lnQWlnQ0FMS1VPQUlBSUFGQkJHb2hBU0FDUVFScUlRSWdCRUVCYWlJRUlBMUhEUUFMQ3lBSElCRkJBblJxSVFjZ0VFRUJhaUlRSUJaSERRQUxDeUFBRUJBZ0kwSGdBR29rQUF2V0JBRUpmeUFBS0FJc1FRaFBCRUFnQUNnQ0tDRUZRUWdoQ2dOQUlBQW9BZ3hCQlhRaENDQUFLQUlBSVFRZ0FDZ0NKQ0VEQWtBZ0FDZ0NGQ0lHSUFBb0FoQWlBVTBOQUNBRUlBaHFJUWNnQVVFQmFpRUNJQVlnQVd0QkFYRUVRQ0FISUFGQkJuUnFJZ2tnQlNBQklBTnNRUUowYWlJQi9RQUNBUDBMQWdBZ0NTQUIvUUFDRVAwTEFoQWdBaUVCQ3lBQ0lBWkdEUUFEUUNBSElBRkJCblJxSWdJZ0JTQUJJQU5zUVFKMGFpSUovUUFDQVAwTEFnQWdBaUFKL1FBQ0VQMExBaEFnQnlBQlFRRnFJZ0pCQm5ScUlna2dCU0FDSUFOc1FRSjBhaUlDL1FBQ0VQMExBaEFnQ1NBQy9RQUNBUDBMQWdBZ0FVRUNhaUlCSUFaSERRQUxDd0pBSUFBb0Fod2lCaUFBS0FJWUlnRk5EUUFnQkNBSWEwRWdhaUVISUFVZ0FDZ0NDQ0FEYkVFQ2RHb2hDQ0FCUVFGcUlRSWdCaUFCYTBFQmNRUkFJQWNnQVVFR2RHb2lCQ0FJSUFFZ0EyeEJBblJxSWdIOUFBSUEvUXNDQUNBRUlBSDlBQUlRL1FzQ0VDQUNJUUVMSUFJZ0JrWU5BQU5BSUFjZ0FVRUdkR29pQWlBSUlBRWdBMnhCQW5ScUlnVDlBQUlBL1FzQ0FDQUNJQVQ5QUFJUS9Rc0NFQ0FISUFGQkFXb2lBa0VHZEdvaUJDQUlJQUlnQTJ4QkFuUnFJZ0w5QUFJUS9Rc0NFQ0FFSUFMOUFBSUEvUXNDQUNBQlFRSnFJZ0VnQmtjTkFBc0xJQUFRSWtFQUlRRWdBQ2dDSUFSQUEwQWdCU0FBS0FJa0lBRnNRUUowYWlJQ0lBQW9BZ0FnQVVFRmRHb2lBLzBBQWdEOUN3SUFJQUlnQS8wQUFoRDlDd0lRSUFGQkFXb2lBU0FBS0FJZ1NRMEFDd3NnQlVFZ2FpRUZJQXBCQ0dvaUNpQUFLQUlzVFEwQUN3c2dBQ2dDQUJBUUlBQVFFQXYzRFFFbGZ5QUFLQUlzUVFoUEJFQWdBQ2dDSkNJS1FRVjBJUjRnQ2tFSGJDRVdJQXBCQm13aEZ5QUtRUVZzSVJnZ0NrRURiQ0VaSUFwQkFYUWhHaUFBS0FJb0lnRWdDa0VjYkdvaEh5QUJJQXBCR0d4cUlTQWdBU0FLUVJSc2FpRWhJQUVnQ2tFRWRHb2hJaUFCSUFwQkRHeHFJU01nQVNBS1FRTjBJaVJxSVNVZ0FTQUtRUUowSWh0cUlTWkJDQ0VjQTBBZ0FDQUJJQUFvQWlSQkNCQTdJQUFRSWdKQUlBQW9BaUFpQzBVTkFDQWRJQjVzSVFnZ0FDZ0NBQ0VHUVFBaEJBSkFBa0FnQzBIb0Fra05BQ0FHUVF4cUlnNGdDMEVCYXlJQ1FRVjBJZ05xSUE1SkRRQWdCa0VJYWlJUElBTnFJQTlKRFFBZ0F5QUdhaUFHU1EwQUlBWkJCR29pRUNBRGFpQVFTUTBBSUFKQi8vLy9QMHNOQUNBQklBZ2dKbW9pQXlBTFFRSjBJZ1ZxSWd4SklBTWdBU0FGYWlJSFNYRU5BQ0FCSUFnZ0pXb2lBaUFGYWlJTlNTQUNJQWRKY1EwQUlBRWdCU0FJSUNOcUlnbHFJZ1ZKSUFjZ0NVdHhEUUFnQmlBSFNTQUJJQVlnQzBFRmRHb2lFVUVjYXlJU1NYRU5BQ0FCSUJGQkdHc2lFMGtnQnlBUVMzRU5BQ0FCSUJGQkZHc2lGRWtnQnlBUFMzRU5BQ0FISUE1TElBRWdFVUVRYXlJSFNYRU5BQ0FESUExSklBSWdERWx4RFFBZ0F5QUZTU0FKSUF4SmNRMEFJQU1nRWtrZ0JpQU1TWEVOQUNBRElCTkpJQXdnRUV0eERRQWdBeUFVU1NBTUlBOUxjUTBBSUFNZ0Iwa2dEQ0FPUzNFTkFDQUNJQVZKSUFrZ0RVbHhEUUFnQWlBU1NTQUdJQTFKY1EwQUlBSWdFMGtnRFNBUVMzRU5BQ0FDSUJSSklBMGdEMHR4RFFBZ0FpQUhTU0FOSUE1TGNRMEFJQWtnRWtrZ0JTQUdTM0VOQUNBSklCTkpJQVVnRUV0eERRQWdDU0FVU1NBRklBOUxjUTBBSUFjZ0NVc2dCU0FPUzNFTkFDQUxRZnovLy84QWNTRUVRUUFoQXdOQUlBRWdBMEVDZEdvZ0JpQURRUVYwYWlJQy9Ra0NBQ0FDS2dJZy9TQUJJQUpCUUdzcUFnRDlJQUlnQWlvQ1lQMGdBLzBMQWdBZ0FTQURJQXBxUVFKMGFpQUMvUWtDQkNBQ0tnSWsvU0FCSUFJcUFrVDlJQUlnQWlvQ1pQMGdBLzBMQWdBZ0FTQURJQnBxUVFKMGFpQUMvUWtDQ0NBQ0tnSW8vU0FCSUFJcUFrajlJQUlnQWlvQ2FQMGdBLzBMQWdBZ0FTQURJQmxxUVFKMGFpQUMvUWtDRENBQ0tnSXMvU0FCSUFJcUFrejlJQUlnQWlvQ2JQMGdBLzBMQWdBZ0EwRUVhaUlESUFSSERRQUxJQVFnQzBZTkFRc0RRQ0FCSUFSQkFuUnFJQVlnQkVFRmRHb2lBeW9DQURnQ0FDQUJJQVFnQ21wQkFuUnFJQU1xQWdRNEFnQWdBU0FFSUJwcVFRSjBhaUFES2dJSU9BSUFJQUVnQkNBWmFrRUNkR29nQXlvQ0REZ0NBQ0FFUVFGcUlnUWdDMGNOQUFzTElBQW9BZ0FoQmtFQUlRUUNRQ0FMUWR3QVNRMEFJQVpCSEdvaUR5QUxRUUZySWdKQkJYUWlBMm9nRDBrTkFDQUdRUmhxSWhBZ0Eyb2dFRWtOQUNBR1FSQnFJaEVnQTJvZ0VVa05BQ0FHUVJScUloSWdBMm9nRWtrTkFDQUNRZi8vL3o5TERRQWdDQ0FpYWlJRElBZ2dJV29pQWlBTFFRSjBJZ1ZxSWd4SklBSWdBeUFGYWlJSFNYRU5BQ0FESUFnZ0lHb2lDU0FGYWlJTlNTQUhJQWxMY1EwQUlBTWdDQ0FmYWlJSUlBVnFJZ1ZKSUFjZ0NFdHhEUUFnQXlBR0lBdEJCWFJxSWc1QkRHc2lFMGtnQnlBUlMzRU5BQ0FESUE1QkNHc2lGRWtnQnlBU1MzRU5BQ0FESUE1QkJHc2lGVWtnQnlBUVMzRU5BQ0FESUE1SklBY2dEMHR4RFFBZ0FpQU5TU0FKSUF4SmNRMEFJQUlnQlVrZ0NDQU1TWEVOQUNBQ0lCTkpJQXdnRVV0eERRQWdBaUFVU1NBTUlCSkxjUTBBSUFJZ0ZVa2dEQ0FRUzNFTkFDQUNJQTVKSUF3Z0QwdHhEUUFnQ0NBTlNTQUZJQWxMY1EwQUlBa2dFMGtnRFNBUlMzRU5BQ0FKSUJSSklBMGdFa3R4RFFBZ0NTQVZTU0FOSUJCTGNRMEFJQWtnRGtrZ0RTQVBTM0VOQUNBSUlCTkpJQVVnRVV0eERRQWdDQ0FVU1NBRklCSkxjUTBBSUFnZ0ZVa2dCU0FRUzNFTkFDQUlJQTVKSUFVZ0QwdHhEUUFnQzBIOC8vLy9BSEVoQkVFQUlRTURRQ0FCSUFNZ0cycEJBblJxSUFZZ0EwRUZkR29pQXYwSkFoQWdBaW9DTVAwZ0FTQUNLZ0pRL1NBQ0lBSXFBbkQ5SUFQOUN3SUFJQUVnQXlBWWFrRUNkR29nQXYwSkFoUWdBaW9DTlAwZ0FTQUNLZ0pVL1NBQ0lBSXFBblQ5SUFQOUN3SUFJQUVnQXlBWGFrRUNkR29nQXYwSkFoZ2dBaW9DT1AwZ0FTQUNLZ0pZL1NBQ0lBSXFBbmo5SUFQOUN3SUFJQUVnQXlBV2FrRUNkR29nQXYwSkFod2dBaW9DUFAwZ0FTQUNLZ0pjL1NBQ0lBSXFBbno5SUFQOUN3SUFJQU5CQkdvaUF5QUVSdzBBQ3lBRUlBdEdEUUVMQTBBZ0FTQUVJQnRxUVFKMGFpQUdJQVJCQlhScUlnTXFBaEE0QWdBZ0FTQUVJQmhxUVFKMGFpQURLZ0lVT0FJQUlBRWdCQ0FYYWtFQ2RHb2dBeW9DR0RnQ0FDQUJJQVFnRm1wQkFuUnFJQU1xQWh3NEFnQWdCRUVCYWlJRUlBdEhEUUFMQ3lBZFFRRnFJUjBnQVNBa1FRSjBhaUVCSUJ4QkNHb2lIQ0FBS0FJc1RRMEFDd3NnQUNnQ0FCQVFJQUFRRUF0ekFRSi9JQUFvQWh3aUFVRUlhaUlESUFBb0FpQWlBazBFUUFOQUlBQWdBQ2dDR0NBQlFRSjBhaUFBS0FJVVFRZ1FNQ0FESWdGQkNHb2lBeUFBS0FJZ0lnSk5EUUFMQ3lBQklBSkpCRUFnQUNBQUtBSVlJQUZCQW5ScUlBQW9BaFFnQWlBQmF4QXdDeUFBS0FJQUVCQWdBQkFRQzBRQUlBQW9BaHdpQVNBQUtBSWdTUVJBQTBBZ0FDQUFLQUlZSUFBb0FoUWdBV3hCQW5ScUVGMGdBVUVCYWlJQklBQW9BaUJKRFFBTEN5QUFLQUlBRUJBZ0FCQVFDNmdCQVFWL0lBQW9BbFFpQXlnQ0FDRUZJQU1vQWdRaUJDQUFLQUlVSUFBb0Fod2lCMnNpQmlBRUlBWkpHeUlHQkVBZ0JTQUhJQVlRRWhvZ0F5QURLQUlBSUFacUlnVTJBZ0FnQXlBREtBSUVJQVpySWdRMkFnUUxJQVFnQWlBQ0lBUkxHeUlFQkVBZ0JTQUJJQVFRRWhvZ0F5QURLQUlBSUFScUlnVTJBZ0FnQXlBREtBSUVJQVJyTmdJRUN5QUZRUUE2QUFBZ0FDQUFLQUlzSWdFMkFod2dBQ0FCTmdJVUlBSUxuZ1VDQm40RWZ5QUJJQUVvQWdCQkIycEJlSEVpQVVFUWFqWUNBQ0FBSVFzZ0FTa0RBQ0VESUFFcEF3Z2hCeU1BUVNCcklnZ2tBQ0FIUXYvLy8vLy8veitESVFRQ2ZpQUhRakNJUXYvL0FZTWlCYWNpQ2tHQitBQnJRZjBQVFFSQUlBUkNCSVlnQTBJOGlJUWhBaUFLUVlENEFHdXRJUVVDUUNBRFF2Ly8vLy8vLy8vL0Q0TWlBMEtCZ0lDQWdJQ0FnQWhhQkVBZ0FrSUJmQ0VDREFFTElBTkNnSUNBZ0lDQWdJQUlVZzBBSUFKQ0FZTWdBbndoQWd0Q0FDQUNJQUpDLy8vLy8vLy8vd2RXSWdBYklRSWdBSzBnQlh3TUFRc0NRQ0FESUFTRVVBMEFJQVZDLy84QlVnMEFJQVJDQklZZ0EwSThpSVJDZ0lDQWdJQ0FnQVNFSVFKQy93OE1BUXRDL3c4Z0NrSCtod0ZMRFFBYVFnQkJnUGdBUVlINEFDQUZVQ0lCR3lJQUlBcHJJZ2xCOEFCS0RRQWFJQU1oQWlBRUlBUkNnSUNBZ0lDQXdBQ0VJQUViSWdZaEJBSkFRWUFCSUFscklnRkJ3QUJ4QkVBZ0F5QUJRVUJxcllZaEJFSUFJUUlNQVFzZ0FVVU5BQ0FFSUFHdElnV0dJQUpCd0FBZ0FXdXRpSVFoQkNBQ0lBV0dJUUlMSUFnZ0FqY0RFQ0FJSUFRM0F4Z0NRQ0FKUWNBQWNRUkFJQVlnQ1VGQWFxMklJUU5DQUNFR0RBRUxJQWxGRFFBZ0JrSEFBQ0FKYTYyR0lBTWdDYTBpQW9pRUlRTWdCaUFDaUNFR0N5QUlJQU0zQXdBZ0NDQUdOd01JSUFncEF3aENCSVlnQ0NrREFDSUNRanlJaENFREFrQWdBQ0FLUnlBSUtRTVFJQWdwQXhpRVFnQlNjYTBnQWtMLy8vLy8vLy8vL3crRGhDSUNRb0dBZ0lDQWdJQ0FDRm9FUUNBRFFnRjhJUU1NQVFzZ0FrS0FnSUNBZ0lDQWdBaFNEUUFnQTBJQmd5QURmQ0VEQ3lBRFFvQ0FnSUNBZ0lBSWhTQURJQU5DLy8vLy8vLy8vd2RXSWdBYklRSWdBSzBMSVFNZ0NFRWdhaVFBSUFzZ0IwS0FnSUNBZ0lDQWdJQi9neUFEUWpTR2hDQUNoTDg1QXdBTGhoZ0RFMzhCZkFOK0l3QkJzQVJySWd3a0FDQU1RUUEyQWl3Q1FDQUJ2U0lhUWdCVEJFQkJBU0VSUWJvSUlSTWdBWm9pQWIwaEdnd0JDeUFFUVlBUWNRUkFRUUVoRVVHOUNDRVREQUVMUWNBSVFic0lJQVJCQVhFaUVSc2hFeUFSUlNFVkN3SkFJQnBDZ0lDQWdJQ0FnUGovQUlOQ2dJQ0FnSUNBZ1BqL0FGRUVRQ0FBUVNBZ0FpQVJRUU5xSWdNZ0JFSC8vM3R4RUJ3Z0FDQVRJQkVRR1NBQVFaSUpRZllLSUFWQklIRWlCUnRCK3dsQitnb2dCUnNnQVNBQllodEJBeEFaSUFCQklDQUNJQU1nQkVHQXdBQnpFQndnQXlBQ0lBSWdBMGdiSVFvTUFRc2dERUVRYWlFU0FrQUNmd0pBSUFFZ0RFRXNhaEJsSWdFZ0FhQWlBVVFBQUFBQUFBQUFBR0lFUUNBTUlBd29BaXdpQmtFQmF6WUNMQ0FGUVNCeUlnNUI0UUJIRFFFTUF3c2dCVUVnY2lJT1FlRUFSZzBDSUF3b0Fpd2hDVUVHSUFNZ0EwRUFTQnNNQVFzZ0RDQUdRUjFySWdrMkFpd2dBVVFBQUFBQUFBQ3dRYUloQVVFR0lBTWdBMEVBU0JzTElRc2dERUV3YWtHZ0FrRUFJQWxCQUU0YmFpSU5JUWNEUUNBSEFuOGdBVVFBQUFBQUFBRHdRV01nQVVRQUFBQUFBQUFBQUdaeEJFQWdBYXNNQVF0QkFBc2lBellDQUNBSFFRUnFJUWNnQVNBRHVLRkVBQUFBQUdYTnpVR2lJZ0ZFQUFBQUFBQUFBQUJpRFFBTEFrQWdDVUVBVEFSQUlBa2hBeUFISVFZZ0RTRUlEQUVMSUEwaENDQUpJUU1EUUVFZElBTWdBMEVkVHhzaEF3SkFJQWRCQkdzaUJpQUlTUTBBSUFPdElSeENBQ0VhQTBBZ0JpQWFRdi8vLy84UGd5QUdOUUlBSUJ5R2ZDSWJRb0NVNjl3RGdDSWFRb0RzbEtNTWZpQWJmRDRDQUNBR1FRUnJJZ1lnQ0U4TkFBc2dHMEtBbE92Y0ExUU5BQ0FJUVFScklnZ2dHajRDQUFzRFFDQUlJQWNpQmtrRVFDQUdRUVJySWdjb0FnQkZEUUVMQ3lBTUlBd29BaXdnQTJzaUF6WUNMQ0FHSVFjZ0EwRUFTZzBBQ3dzZ0EwRUFTQVJBSUF0QkdXcEJDVzVCQVdvaER5QU9RZVlBUmlFUUEwQkJDVUVBSUFOcklnTWdBMEVKVHhzaENnSkFJQVlnQ0UwRVFDQUlLQUlBUlVFQ2RDRUhEQUVMUVlDVTY5d0RJQXAySVJSQmZ5QUtkRUYvY3lFV1FRQWhBeUFJSVFjRFFDQUhJQU1nQnlnQ0FDSVhJQXAyYWpZQ0FDQVdJQmR4SUJSc0lRTWdCMEVFYWlJSElBWkpEUUFMSUFnb0FnQkZRUUowSVFjZ0EwVU5BQ0FHSUFNMkFnQWdCa0VFYWlFR0N5QU1JQXdvQWl3Z0Ntb2lBellDTENBTklBY2dDR29pQ0NBUUd5SUhJQTlCQW5ScUlBWWdCaUFIYTBFQ2RTQVBTaHNoQmlBRFFRQklEUUFMQzBFQUlRTUNRQ0FHSUFoTkRRQWdEU0FJYTBFQ2RVRUpiQ0VEUVFvaEJ5QUlLQUlBSWdwQkNra05BQU5BSUFOQkFXb2hBeUFLSUFkQkNtd2lCMDhOQUFzTElBc2dBMEVBSUE1QjVnQkhHMnNnRGtIbkFFWWdDMEVBUjNGcklnY2dCaUFOYTBFQ2RVRUpiRUVKYTBnRVFDQU1RVEJxUVlSZ1FhUmlJQWxCQUVnYmFpQUhRWURJQUdvaUNrRUpiU0lQUVFKMGFpRUpRUW9oQnlBUFFYZHNJQXBxSWdwQkIwd0VRQU5BSUFkQkNtd2hCeUFLUVFGcUlncEJDRWNOQUFzTEFrQWdDU2dDQUNJUUlCQWdCMjRpRHlBSGJDSUtSaUFKUVFScUloUWdCa1p4RFFBZ0VDQUtheUVRQWtBZ0QwRUJjVVVFUUVRQUFBQUFBQUJBUXlFQklBZEJnSlRyM0FOSERRRWdDQ0FKVHcwQklBbEJCR3N0QUFCQkFYRkZEUUVMUkFFQUFBQUFBRUJESVFFTFJBQUFBQUFBQU9BL1JBQUFBQUFBQVBBL1JBQUFBQUFBQVBnL0lBWWdGRVliUkFBQUFBQUFBUGcvSUJBZ0IwRUJkaUlVUmhzZ0VDQVVTUnNoR1FKQUlCVU5BQ0FUTFFBQVFTMUhEUUFnR1pvaEdTQUJtaUVCQ3lBSklBbzJBZ0FnQVNBWm9DQUJZUTBBSUFrZ0J5QUthaUlETmdJQUlBTkJnSlRyM0FOUEJFQURRQ0FKUVFBMkFnQWdDQ0FKUVFScklnbExCRUFnQ0VFRWF5SUlRUUEyQWdBTElBa2dDU2dDQUVFQmFpSUROZ0lBSUFOQi81UHIzQU5MRFFBTEN5QU5JQWhyUVFKMVFRbHNJUU5CQ2lFSElBZ29BZ0FpQ2tFS1NRMEFBMEFnQTBFQmFpRURJQW9nQjBFS2JDSUhUdzBBQ3dzZ0NVRUVhaUlISUFZZ0JpQUhTeHNoQmdzRFFDQUdJZ2NnQ0UwaUNrVUVRQ0FHUVFScklnWW9BZ0JGRFFFTEN3SkFJQTVCNXdCSEJFQWdCRUVJY1NFSkRBRUxJQU5CZjNOQmZ5QUxRUUVnQ3hzaUJpQURTaUFEUVh0S2NTSUpHeUFHYWlFTFFYOUJmaUFKR3lBRmFpRUZJQVJCQ0hFaUNRMEFRWGNoQmdKQUlBb05BQ0FIUVFScktBSUFJZzVGRFFCQkNpRUtRUUFoQmlBT1FRcHdEUUFEUUNBR0lnbEJBV29oQmlBT0lBcEJDbXdpQ25CRkRRQUxJQWxCZjNNaEJnc2dCeUFOYTBFQ2RVRUpiQ0VLSUFWQlgzRkJ4Z0JHQkVCQkFDRUpJQXNnQmlBS2FrRUpheUlHUVFBZ0JrRUFTaHNpQmlBR0lBdEtHeUVMREFFTFFRQWhDU0FMSUFNZ0Ntb2dCbXBCQ1dzaUJrRUFJQVpCQUVvYklnWWdCaUFMU2hzaEN3dEJmeUVLSUF0Qi9mLy8vd2RCL3YvLy93Y2dDU0FMY2lJUUcwb05BU0FMSUJCQkFFZHFRUUZxSVE0Q1FDQUZRVjl4SWhWQnhnQkdCRUFnQXlBT1FmLy8vLzhIYzBvTkF5QURRUUFnQTBFQVNoc2hCZ3dCQ3lBU0lBTWdBMEVmZFNJR2N5QUdhNjBnRWhBcUlnWnJRUUZNQkVBRFFDQUdRUUZySWdaQk1Eb0FBQ0FTSUFaclFRSklEUUFMQ3lBR1FRSnJJZzhnQlRvQUFDQUdRUUZyUVMxQkt5QURRUUJJR3pvQUFDQVNJQTlySWdZZ0RrSC8vLy8vQjNOS0RRSUxJQVlnRG1vaUF5QVJRZi8vLy84SGMwb05BU0FBUVNBZ0FpQURJQkZxSWdNZ0JCQWNJQUFnRXlBUkVCa2dBRUV3SUFJZ0F5QUVRWUNBQkhNUUhBSkFBa0FDUUNBVlFjWUFSZ1JBSUF4QkVHcEJDWEloQlNBTklBZ2dDQ0FOU3hzaUNTRUlBMEFnQ0RVQ0FDQUZFQ29oQmdKQUlBZ2dDVWNFUUNBR0lBeEJFR3BORFFFRFFDQUdRUUZySWdaQk1Eb0FBQ0FHSUF4QkVHcExEUUFMREFFTElBVWdCa2NOQUNBR1FRRnJJZ1pCTURvQUFBc2dBQ0FHSUFVZ0Jtc1FHU0FJUVFScUlnZ2dEVTBOQUFzZ0VBUkFJQUJCZ2d4QkFSQVpDeUFISUFoTkRRRWdDMEVBVEEwQkEwQWdDRFVDQUNBRkVDb2lCaUFNUVJCcVN3UkFBMEFnQmtFQmF5SUdRVEE2QUFBZ0JpQU1RUkJxU3cwQUN3c2dBQ0FHUVFrZ0N5QUxRUWxPR3hBWklBdEJDV3NoQmlBSVFRUnFJZ2dnQjA4TkF5QUxRUWxLSVJnZ0JpRUxJQmdOQUFzTUFnc0NRQ0FMUVFCSURRQWdCeUFJUVFScUlBY2dDRXNiSVEwZ0RFRVFha0VKY2lFRklBZ2hCd05BSUFVZ0J6VUNBQ0FGRUNvaUJrWUVRQ0FHUVFGcklnWkJNRG9BQUFzQ1FDQUhJQWhIQkVBZ0JpQU1RUkJxVFEwQkEwQWdCa0VCYXlJR1FUQTZBQUFnQmlBTVFSQnFTdzBBQ3d3QkN5QUFJQVpCQVJBWklBWkJBV29oQmlBSklBdHlSUTBBSUFCQmdneEJBUkFaQ3lBQUlBWWdCU0FHYXlJR0lBc2dCaUFMU0JzUUdTQUxJQVpySVFzZ0IwRUVhaUlISUExUERRRWdDMEVBVGcwQUN3c2dBRUV3SUF0QkVtcEJFa0VBRUJ3Z0FDQVBJQklnRDJzUUdRd0NDeUFMSVFZTElBQkJNQ0FHUVFscVFRbEJBQkFjQ3lBQVFTQWdBaUFESUFSQmdNQUFjeEFjSUFNZ0FpQUNJQU5JR3lFS0RBRUxJQk1nQlVFYWRFRWZkVUVKY1dvaENBSkFJQU5CQzBzTkFFRU1JQU5ySVFaRUFBQUFBQUFBTUVBaEdRTkFJQmxFQUFBQUFBQUFNRUNpSVJrZ0JrRUJheUlHRFFBTElBZ3RBQUJCTFVZRVFDQVpJQUdhSUJtaG9Kb2hBUXdCQ3lBQklCbWdJQm1oSVFFTElCSWdEQ2dDTENJSElBZEJIM1VpQm5NZ0JtdXRJQklRS2lJR1JnUkFJQVpCQVdzaUJrRXdPZ0FBQ3lBUlFRSnlJUXNnQlVFZ2NTRU5JQVpCQW1zaUNTQUZRUTlxT2dBQUlBWkJBV3RCTFVFcklBZEJBRWdiT2dBQUlBUkJDSEVoQmlBTVFSQnFJUWNEUUNBSElnVUNmeUFCbVVRQUFBQUFBQURnUVdNRVFDQUJxZ3dCQzBHQWdJQ0FlQXNpQjBIUXhBRnFMUUFBSUExeU9nQUFJQUVnQjdlaFJBQUFBQUFBQURCQW9pRUJBa0FnQlVFQmFpSUhJQXhCRUdwclFRRkhEUUFDUUNBR0RRQWdBMEVBU2cwQUlBRkVBQUFBQUFBQUFBQmhEUUVMSUFWQkxqb0FBU0FGUVFKcUlRY0xJQUZFQUFBQUFBQUFBQUJpRFFBTFFYOGhDa0g5Ly8vL0J5QUxJQklnQ1dzaUJtb2lEV3NnQTBnTkFDQUFRU0FnQWlBTklBTkJBbW9nQnlBTVFSQnFJZ2RySWdVZ0JVRUNheUFEU0JzZ0JTQURHeUlLYWlJRElBUVFIQ0FBSUFnZ0N4QVpJQUJCTUNBQ0lBTWdCRUdBZ0FSekVCd2dBQ0FISUFVUUdTQUFRVEFnQ2lBRmEwRUFRUUFRSENBQUlBa2dCaEFaSUFCQklDQUNJQU1nQkVHQXdBQnpFQndnQXlBQ0lBSWdBMGdiSVFvTElBeEJzQVJxSkFBZ0Nnc0VBRUlBQ3dRQVFRQUxud01CQ1g5QjVnb2hBQUpBQTBBZ0FDMEFBQ0lCUlEwQklBRkJQVVlOQVNBQVFRRnFJZ0JCQTNFTkFBc0NRQUpBUVlDQ2hBZ2dBQ2dDQUNJQ2F5QUNja0dBZ1lLRWVIRkJnSUdDaEhoSERRQURRRUdBZ29RSUlBSkJ2ZnIwNlFOeklnRnJJQUZ5UVlDQmdvUjRjVUdBZ1lLRWVFY05BU0FBS0FJRUlRSWdBRUVFYWlJQklRQWdBa0dBZ29RSUlBSnJja0dBZ1lLRWVIRkJnSUdDaEhoR0RRQUxEQUVMSUFBaEFRc0RRQ0FCSWdBdEFBQWlBa1VOQVNBQVFRRnFJUUVnQWtFOVJ3MEFDd3NnQUNJQlFlWUtSZ1JBUVFBUEN3SkFJQUZCNWdwcklnQkI1Z3BxTFFBQURRQkJzTThCS0FJQUlnUkZEUUFnQkNnQ0FDSUZSUTBBQTBBQ1FBSi9JQVVoQWtIbUNpRUdRUUFnQUNJQlJRMEFHa0htQ2kwQUFDSURCSDhDUUFOQUlBTWdBaTBBQUNJSFJ3MEJJQWRGRFFFZ0FVRUJheUlCUlEwQklBSkJBV29oQWlBR0xRQUJJUU1nQmtFQmFpRUdJQU1OQUF0QkFDRURDeUFEQlVFQUN5QUNMUUFBYXd0RkJFQWdBQ0FGYWlJQkxRQUFRVDFHRFFFTElBUW9BZ1FoQlNBRVFRUnFJUVFnQlEwQkRBSUxDeUFCUVFGcUlRZ0xJQWdMQ1FBZ0FDZ0NQQkFOQzg0Q0FRaC9Jd0JCSUdzaUF5UUFJQU1nQUNnQ0hDSUVOZ0lRSUFBb0FoUWhCU0FESUFJMkFod2dBeUFCTmdJWUlBTWdCU0FFYXlJQk5nSVVJQUVnQW1vaEJVRUNJUVlnQTBFUWFpRUJBbjhEUUFKQUFrQUNRQ0FBS0FJOElBRWdCaUFEUVF4cUVBRWlCQVIvUVpUSEFTQUVOZ0lBUVg4RlFRQUxSUVJBSUFVZ0F5Z0NEQ0lIUmcwQklBZEJBRTROQWd3REN5QUZRWDlIRFFJTElBQWdBQ2dDTENJQk5nSWNJQUFnQVRZQ0ZDQUFJQUVnQUNnQ01HbzJBaEFnQWd3REN5QUJJQWNnQVNnQ0JDSUlTeUlKUVFOMGFpSUVJQWNnQ0VFQUlBa2JheUlJSUFRb0FnQnFOZ0lBSUFGQkRFRUVJQWtiYWlJQklBRW9BZ0FnQ0dzMkFnQWdCU0FIYXlFRklBWWdDV3NoQmlBRUlRRU1BUXNMSUFCQkFEWUNIQ0FBUWdBM0F4QWdBQ0FBS0FJQVFTQnlOZ0lBUVFBZ0JrRUNSZzBBR2lBQ0lBRW9BZ1JyQ3lFS0lBTkJJR29rQUNBS0MxWUJBbjhnQUNnQ1BDRUVJd0JCRUdzaUFDUUFJQVFnQWFjZ0FVSWdpS2NnQWtIL0FYRWdBRUVJYWhBSklnSUVmMEdVeHdFZ0FqWUNBRUYvQlVFQUN5RUNJQUFwQXdnaEFTQUFRUkJxSkFCQ2Z5QUJJQUliQ3dZQUlBQVFBQXNHQUNBQUVBTUw4bjRGQW53MmZ3aDdBMzRHZlNNQVFlREFBR3NpR0NRQUlCaEJBRFlDSUVFQ0lRd0NRQUpBSUFBb0FnQWlCMEdObEp6VUFFWU5BQ0FIUWYrZi9ZOEZSd1JBQWtBZ0IwR0FnSURnQUVjTkFDQUFLQUlFUWVxZ2dZRUNSdzBBSUFBb0FnaEJqWlNjMUFCR0RRSUxRYzBJRUFCQkFTRU1EQUlMUVFBaERBc0NmMEVBUVFGQjRBQVFFeUlIUlEwQUdpQUhRUUUyQWt3Q1FBSkFBa0FDUUNBTURnTUFBd0VEQ3lBSFFjTUFOZ0pZSUFkQnhBQTJBbFFnQjBIRkFEWUNVQ0FIUWNZQU5nSVFJQWRCeHdBMkFnUWdCMEhJQURZQ0hDQUhRY2tBTmdJWUlBZEJ5Z0EyQWhRZ0IwSExBRFlDQUNBSFFjd0FOZ0pjSUFkQnpRQTJBaXdnQjBIT0FEWUNLQ0FIUWM4QU5nSWtJQWRCMEFBMkFpQWdCMEhSQURZQ0RDQUhRZElBTmdJSUlBY1FUU0lJTmdJd0lBZ05BUXdDQ3lBSFFkTUFOZ0pZSUFkQjFBQTJBbFFnQjBIVkFEWUNVQ0FIUWRZQU5nSVFJQWRCMXdBMkFnUWdCMEhZQURZQ1hDQUhRZGtBTmdJc0lBZEIyZ0EyQWlnZ0IwSGJBRFlDSkNBSFFkd0FOZ0lnSUFkQjNRQTJBaHdnQjBIZUFEWUNHQ0FIUWQ4QU5nSVVJQWRCNEFBMkFnd2dCMEhoQURZQ0NDQUhRZUlBTmdJQUlBY0NmMEVCUVlnQkVCTWlDQVJBSUFnUVRTSU9OZ0lBQWtBZ0RrVU5BQ0FJL1F3QUFBQUFBQUFBQUFBQUFBQUFBQUFBL1FzQ2JDQUlRUUE2QUh3Z0NCQXpJZzQyQWdRZ0RrVU5BQ0FJRURNaURqWUNDQ0FPUlEwQUlBZ01BZ3NnQ0JCd0MwRUFDeUlJTmdJd0lBaEZEUUVMSUFkQkFUWUNTQ0FIUVFFMkFrQWdCMEVBTmdJOElBZENBRGNDTkNBSFFRRTJBa1FnQnd3QkN5QUhFQkJCQUFzaUNBUkFJQWhCQURZQ1BDQUlRZU1BTmdKSUN5QUlCRUFnQ0VFQU5nSTRJQWhCNUFBMkFrUUxJQWdFUUNBSVFRQTJBalFnQ0VIbEFEWUNRQXNnR0VFa2FpSUhCRUFnQjBFQVFiakFBQkFWSWdkQkFEWUN1RUFnQjBKL053S0lRQXNnQXdSQUlCZ2dHQ2dDM0VCQkFYSTJBdHhBQ3lBWUlBRTJBaHdnR0NBQU5nSVlJQmdnQURZQ0ZFRUJJUXhCQUNFQkFrQWdHRUVVYWlJSFJRMEFRUUZCeUFBUUV5SUFCSDhDZnlBQVFZQ0F3QUEyQWtBZ0FFR0FnTUFBRUJRaURqWUNJQ0FPUlFSQUlBQVFFRUVBREFFTElBQWdEallDSkNBQVFRSTJBaHdnQUVFRE5nSVlJQUJCQkRZQ0ZDQUFRUVUyQWhBZ0FFRUdOZ0lzSUFCQkNEWUNLQ0FBSUFBb0FrUkJBbkkyQWtRZ0FBc0ZRUUFMSWdCRkRRQWdBQVJBSUFCQkFEWUNCQ0FBSUFjMkFnQUxJQWMxQWdnaFJTQUFCRUFnQUNCRk53TUlDd0pBSUFCRkRRQWdBQzBBUkVFQ2NVVU5BQ0FBUVQ4MkFoQUxJQUFFUUNBQVFjRUFOZ0lZQ3lBQUJFQWdBRUhDQURZQ0hBc2dBQ0VCQ3lBQklRQUNmeUFZUVNScUlRRUNRQ0FJUlEwQUlBRkZEUUFnQ0NnQ1RFVUVRQ0FJUVRScVFRRkJ0TWtBUVFBUUQwRUFEQUlMSUFnb0FqQWdBU0FJS0FJWUVRTUFRUUVoQ3dzZ0N3dEZCRUJCM0FnUUFDQUFFRFFnQ0JBMURBRUxBbjhnR0VFZ2FpRUJRUUFoQndKQUlBQkZEUUFnQ0VVTkFDQUlLQUpNUlFSQUlBaEJOR3BCQVVHRnlnQkJBQkFQUVFBTUFnc2dBQ0FJS0FJd0lBRWdDRUUwYWlBSUtBSUFFUUVBSVFjTElBY0xSUVJBUWZnSUVBQWdBQkEwSUFnUU5TQVlLQUlnRUNFTUFRc2dHQ2dDSUNFQlFRQWhCd0pBSUFoRkRRQWdBRVVOQUNBSUtBSk1SUTBBSUFnb0FqQWdBQ0FCSUFoQk5Hb2dDQ2dDQkJFQkFDRUhDd0pBSUFjRVFFRUFJUWNDUUNBSVJRMEFJQUJGRFFBZ0NDZ0NURVVOQUNBSUtBSXdJQUFnQ0VFMGFpQUlLQUlRRVFBQUlRY0xJQWNOQVF0Qi93a1FBQ0FJRURVZ0FCQTBJQmdvQWlBUUlRd0JDeUFBRURRZ0NCQTFJQmdvQWlBaURTZ0NIQ0lBQkVBZ0FCQVFJQmdvQWlBaURVSUFOd0ljQ3lBTktBSVFJU0VDUUFKQUlBSkZCRUFDUUNBRVJRMEFJQ0ZCQkVjTkFFRUJJUmxCQkNFaERBTUxBa0FDUUNBTktBSVVJZ0ZCQTBZTkFDQWhRUU5IRFFBZ0RTZ0NHQ0lBS0FJQUlBQW9BZ1JIRFFFZ0FDZ0NORUVCUmcwQklBMUJBellDRkF3REN5QWhRUUpMRFFBZ0RVRUNOZ0lVREFNTEFrQUNRQ0FCUVFOckRnTURBUUFFQ3lNQVFSQnJJZzRrQUFKQUFrQUNRQ0FOS0FJUVFRUkpEUUFnRFNnQ0dDSUFLQUlBSWdFZ0FDZ0NORWNOQUNBQklBQW9BbWhIRFFBZ0FTQUFLQUtjQVVjTkFDQUFLQUlFSWdFZ0FDZ0NPRWNOQUNBQklBQW9BbXhIRFFBZ0FTQUFLQUtnQVVZTkFRc2dEa0dIQ0RZQ0JDQU9RYmdLTmdJQVFlakVBVUh0UFNBT0VCWU1BUXNDUUNBQUtBSU1JQUFvQWdoc0lnaEZCRUFnQUNnQ3lBRWhBUXdCQzBNQUFJQS9RWDhnQUNnQ3RBRjBRWDl6czVVaFNFTUFBSUEvUVg4Z0FDZ0NnQUYwUVg5enM1VWhTa01BQUlBL1FYOGdBQ2dDVEhSQmYzT3psU0ZMUXdBQWdEOUJmeUFBS0FJWWRFRi9jN09WSVVrZ0FDZ0N5QUVoQVNBQUtBS1VBU0VDSUFBb0FtQWhDaUFBS0FJc0lRZEJBQ0VBQWtBZ0NFRUlTUTBBSUFjZ0NpQUlRUUowSWd0cUlnOUpJQW9nQnlBTGFpSVhTWEVOQUNBQ0lCZEpJQWNnQWlBTGFpSUpTWEVOQUNBQklCZEpJQWNnQVNBTGFpSUxTWEVOQUNBQ0lBOUpJQWtnQ2t0eERRQWdBU0FQU1NBS0lBdEpjUTBBSUFFZ0NVa2dBaUFMU1hFTkFDQUlRWHh4SVFBZ1NQMFRJVDBnU3YwVElUNGdTLzBUSVVNZ1NmMFRJVUJCQUNFTEEwQWdBaUFMUVFKMElnOXFJaGY5QUFJQUlVRWdDaUFQYWlJSi9RQUNBQ0ZDSUFjZ0Qyb2lFUDBNQUFDQVB3QUFnRDhBQUlBL0FBQ0FQeUJBSUJEOUFBSUEvZm9CL2VZQi9lVUIvUXdBQUg5REFBQi9Rd0FBZjBNQUFIOUQvZVlCL1F3QUFJQS9BQUNBUHdBQWdEOEFBSUEvSUQwZ0FTQVBhdjBBQWdEOStnSDk1Z0g5NVFFaVAvM21BZjM0QWYwTEFnQWdDZjBNQUFDQVB3QUFnRDhBQUlBL0FBQ0FQeUJESUVMOStnSDk1Z0g5NVFIOURBQUFmME1BQUg5REFBQi9Rd0FBZjBQOTVnRWdQLzNtQWYzNEFmMExBZ0FnRi8wTUFBQ0FQd0FBZ0Q4QUFJQS9BQUNBUHlBK0lFSDkrZ0g5NWdIOTVRSDlEQUFBZjBNQUFIOURBQUIvUXdBQWYwUDk1Z0VnUC8zbUFmMzRBZjBMQWdBZ0MwRUVhaUlMSUFCSERRQUxJQUFnQ0VZTkFRc0RRQUovUXdBQWdEOGdTU0FISUFCQkFuUWlDMm9pRHlnQ0FMS1VrME1BQUg5RGxFTUFBSUEvSUVnZ0FTQUxhaWdDQUxLVWt5Sk1sQ0pOaTBNQUFBQlBYUVJBSUUyb0RBRUxRWUNBZ0lCNEN5RVhJQUlnQzJvaUNTZ0NBQ0VRSUFvZ0Myb2lDeWdDQUNFTUlBOGdGellDQUNBTEFuOURBQUNBUHlCTElBeXlsSk5EQUFCL1E1UWdUSlFpVFl0REFBQUFUMTBFUUNCTnFBd0JDMEdBZ0lDQWVBczJBZ0FnQ1FKL1F3QUFnRDhnU2lBUXNwU1RRd0FBZjBPVUlFeVVJa3lMUXdBQUFFOWRCRUFnVEtnTUFRdEJnSUNBZ0hnTE5nSUFJQUJCQVdvaUFDQUlSdzBBQ3dzZ0FSQVFJQTBvQWhnaUFFRUlOZ0tBQVNBQVFRZzJBa3dnQUVFSU5nSVlJQUJCQURZQ3lBRWdEVUVCTmdJVUlBMGdEU2dDRUVFQmF5SUFOZ0lRSUFCQkJFa05BRUVESVFBRFFDQU5LQUlZSUFCQk5HeHFJZ0VnQVNnQ1pEWUNNQ0FCSUFIOUFBSlUvUXNDSUNBQklBSDlBQUpFL1FzQ0VDQUJJQUg5QUFJMC9Rc0NBQ0FBUVFGcUlnQWdEU2dDRUVrTkFBc0xJQTVCRUdva0FBd0RDeU1BUVJCcklnc2tBQUpBQWtBQ1FDQU5LQUlRUVFOSkRRQWdEU2dDR0NJQUtBSUFJZ0VnQUNnQ05FY05BQ0FCSUFBb0FtaEhEUUFnQUNnQ0JDSUJJQUFvQWpoSERRQWdBU0FBS0FKc1JnMEJDeUFMUWNVSU5nSUVJQXRCdUFvMkFnQkI2TVFCUVpjK0lBc1FGZ3dCQ3dKQUlBQW9BZ3dnQUNnQ0NHd2lBa1VOQUVGL0lBQW9BaGdpQ25SQmYzTWhBVUVBUVFFZ0NrRUJhM1FpQ2lBQUtBS0lBUnNoRDBFQUlBb2dBQ2dDVkJzaEZ5QUFLQUtVQVNFS0lBQW9BbUFoQnlBQUtBSXNJUTVCQUNFQUFrQWdBa0VFU1EwQUlBNGdCeUFDUVFKMElnaHFJZ2xKSUFjZ0NDQU9haUlRU1hFTkFDQUtJQkJKSUE0Z0NDQUthaUlJU1hFTkFDQUhJQWhKSUFrZ0NrdHhEUUFnQWtGOGNTRUFJQUg5RVNFL0lBLzlFU0ZBSUJmOUVTRkJRUUFoQ0FOQUlBNGdDRUVDZENJSmFpSVFJRDhnQ1NBS2FpSU0vUUFDQUNCQS9iRUIvZm9CSWozOURHbDBzejlwZExNL2FYU3pQMmwwc3ovOTVnRWdCeUFKYWlJSi9RQUNBQ0JCL2JFQi9mb0JJajc5RExOWkdyaXpXUnE0czFrYXVMTlpHcmo5NWdFZ0VQMEFBZ0Q5K2dFaVEvM2tBZjNrQWYwTUFBQUFQd0FBQUQ4QUFBQS9BQUFBUC8za0FmMzRBU0pDL1F3QUFBQUFBQUFBQUFBQUFBQUFBQUFBL2JnQklEOGdRdjA1L1ZMOUN3SUFJQWtnUHlBOS9Rd1owRGEvR2RBMnZ4blFOcjhaMERhLy9lWUJJRVA5RE5VSmdEL1ZDWUEvMVFtQVA5VUpnRC85NWdFZ1B2ME1Kekd3dmljeHNMNG5NYkMrSnpHd3Z2M21BZjNrQWYza0FmME1BQUFBUHdBQUFEOEFBQUEvQUFBQVAvM2tBZjM0QVNKQy9Rd0FBQUFBQUFBQUFBQUFBQUFBQUFBQS9iZ0JJRDhnUXYwNS9WTDlDd0lBSUF3Z1B5QTkvUXk5TndhM3ZUY0d0NzAzQnJlOU53YTMvZVlCSUVQOURHYjBmejltOUg4L1p2Ui9QMmIwZnovOTVnRWdQdjBNTmRMaVB6WFM0ajgxMHVJL05kTGlQLzNtQWYza0FmM2tBZjBNQUFBQVB3QUFBRDhBQUFBL0FBQUFQLzNrQWYzNEFTSTkvUXdBQUFBQUFBQUFBQUFBQUFBQUFBQUEvYmdCSUQ4Z1BmMDUvVkw5Q3dJQUlBaEJCR29pQ0NBQVJ3MEFDeUFBSUFKR0RRRUxBMEFDZnlBS0lBQkJBblFpQ0dvaUNTZ0NBQ0FQYTdJaVNFTnBkTE0vbENBSElBaHFJaEFvQWdBZ0YydXlJa3BEczFrYXVKUWdDQ0FPYWlJTUtBSUFzaUpMa3BKREFBQUFQNUlpU1l0REFBQUFUMTBFUUNCSnFBd0JDMEdBZ0lDQWVBc2hDQ0FNSUFFZ0NFRUFJQWhCQUVvYklBRWdDRWdiTmdJQUlCQWdBUUovSUVoREdkQTJ2NVFnUzBQVkNZQS9sQ0JLUXljeHNMNlVrcEpEQUFBQVA1SWlTWXREQUFBQVQxMEVRQ0JKcUF3QkMwR0FnSUNBZUFzaUNFRUFJQWhCQUVvYklBRWdDRWdiTmdJQUlBa2dBUUovSUVoRHZUY0d0NVFnUzBObTlIOC9sQ0JLUXpYUzRqK1VrcEpEQUFBQVA1SWlTSXREQUFBQVQxMEVRQ0JJcUF3QkMwR0FnSUNBZUFzaUNFRUFJQWhCQUVvYklBRWdDRWdiTmdJQUlBQkJBV29pQUNBQ1J3MEFDd3NnRFVFQk5nSVVDeUFMUVJCcUpBQU1BZ3NnSVNBQ0lBSWdJVXNiSVNGQkFTRVpEQUVMQWtBQ1FBSi9Ba0FDUUNBTktBSVlJZ0VvQWdCQkFVY05BQUpBQWtBZ0FTZ0NORUVCYXc0Q0FRQUNDeUFCS0FKb1FRSkhEUUVDUUNBQktBSUVRUUZIRFFBZ0FTZ0NPRUVDUncwQUlBRW9BbXhCQWtjTkFFRUFJUXNnRFNJWEtBSVlJZ0FvQWhnaEFTQUFLQUtVQVNFUklBQW9BbUFoQ2lBQUtBSXNJUkFnQUNnQ0NDSU5JQUFvQWd3aUFteEJBblFpQUJBWUlRY2dBQkFZSVFnZ0FCQVlJUTRDUUFKQUFrQUNRQUpBQWtBZ0IwVU5BQ0FJUlEwQUlBNUZEUUJCZnlBQmRFRi9jeUVKUVFFZ0FVRUJhM1FoRENBQ0lCY29BZ1JCQVhFaUFHc2hIaUFYS0FJQVFRRnhJUnNnQUVVTkF5QU5SUTBEQW45QkFDQU1hN0s3SWdWRWFyeDBreGdFMWoraUlBVkVEQUlyaHhiWjVqK2lvQ0lHbVVRQUFBQUFBQURnUVdNRVFDQUdxZ3dCQzBHQWdJQ0FlQXNoRkFKL0lBVkVKekVJckJ4YS9EK2lJZ2FaUkFBQUFBQUFBT0JCWXdSQUlBYXFEQUVMUVlDQWdJQjRDeUVhSUExQkNFa2hPQUovSUFWRU85OVBqWmR1OWoraUlnV1pSQUFBQUFBQUFPQkJZd1JBSUFXcURBRUxRWUNBZ0lCNEN5RWRJRGdOQVNBSUlBZHJRUkJKRFFFZ0RpQUhhMEVRU1EwQklBY2dFR3RCRUVrTkFTQU9JQWhyUVJCSkRRRWdDQ0FRYTBFUVNRMEJJQTRnRUd0QkVFa05BU0FPSUExQmZIRWlDMEVDZENJQ2FpRUJJQUlnQjJvaEFDQWEvUkVoUGlBVS9SRWhReUFKL1JFaFB5QWQvUkVoUUFOQUlBY2dEMEVDZENJVGF2ME1BQUFBQUFBQUFBQUFBQUFBQUFBQUFDQVFJQk5xL1FBQ0FDSTlJRUQ5cmdFaVFTQS8vYllCSUVIOURBQUFBQUFBQUFBQUFBQUFBQUFBQUFEOU9mMVMvUXNDQUNBSUlCTnEvUXdBQUFBQUFBQUFBQUFBQUFBQUFBQUFJRDBnUS8yeEFTSkJJRC85dGdFZ1FmME1BQUFBQUFBQUFBQUFBQUFBQUFBQUFQMDUvVkw5Q3dJQUlBNGdFMnI5REFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnUFNBKy9hNEJJajBnUC8yMkFTQTkvUXdBQUFBQUFBQUFBQUFBQUFBQUFBQUEvVG45VXYwTEFnQWdEMEVFYWlJUElBdEhEUUFMSUFJZ0VHb2hFQ0FDSUFocUlRSWdDeUFOUmcwRURBSUxJQWNRRUNBSUVCQWdEaEFRREFRTElBY2hBQ0FJSVFJZ0RpRUJDd05BSUFBZ0VDZ0NBQ0lQSUIxcUloTWdDU0FKSUJOS0cwRUFJQk5CQUU0Yk5nSUFJQUlnRHlBVWF5SVRJQWtnQ1NBVFNodEJBQ0FUUVFCT0d6WUNBQ0FCSUE4Z0dtb2lEeUFKSUFrZ0Qwb2JRUUFnRDBFQVRoczJBZ0FnQVVFRWFpRUJJQUpCQkdvaEFpQUFRUVJxSVFBZ0VFRUVhaUVRSUF0QkFXb2lDeUFOUncwQUN3d0JDeUFPSVFFZ0NDRUNJQWNoQUFzZ0RTQWJheUVhQWtBZ0hrRitjU0lkQkg4Q2YwRUFJQXhyc3JzaUJVUnF2SFNUR0FUV1A2SWdCVVFNQWl1SEZ0bm1QNktnSWdhWlJBQUFBQUFBQU9CQll3UkFJQWFxREFFTFFZQ0FnSUI0Q3lFaUlCcEJmbkVpSEVFQmF5RTVBbjhnQlVRbk1RaXNIRnI4UDZJaUJwbEVBQUFBQUFBQTRFRmpCRUFnQnFvTUFRdEJnSUNBZ0hnTElTTWdPVUYrY1NFNkFuOGdCVVE3MzArTmwyNzJQNklpQlpsRUFBQUFBQUFBNEVGakJFQWdCYW9NQVF0QmdJQ0FnSGdMSVNRZ0hVRUJheUVsSURwQkFtb2hKaUFOUVFKMElRMERRQ0FCSUExcUlROGdBaUFOYWlFVElBQWdEV29oQ3lBTklCQnFJUlFnR3dSQUlBQWdFQ2dDQUNJVklDUnFJaElnQ1NBSklCSktHMEVBSUJKQkFFNGJOZ0lBSUFJZ0ZTQWlheUlTSUFrZ0NTQVNTaHRCQUNBU1FRQk9HellDQUNBQklCVWdJMm9pRlNBSklBa2dGVW9iUVFBZ0ZVRUFUaHMyQWdBZ0NpZ0NBQ0VXSUFzQ2Z5QVJLQUlBSUF4cnNyc2lCVVE3MzArTmwyNzJQNklpQnBsRUFBQUFBQUFBNEVGakJFQWdCcW9NQVF0QmdJQ0FnSGdMSUJRb0FnQWlGV29pRWlBSklBa2dFa29iUVFBZ0VrRUFUaHMyQWdBZ0V5QVZBbjhnRmlBTWE3SzdJZ1pFYXJ4MGt4Z0UxaitpSUFWRURBSXJoeGJaNWoraW9DSUZtVVFBQUFBQUFBRGdRV01FUUNBRnFnd0JDMEdBZ0lDQWVBdHJJaElnQ1NBSklCSktHMEVBSUJKQkFFNGJOZ0lBSUE4Q2Z5QUdSQ2N4Q0t3Y1d2dy9vaUlGbVVRQUFBQUFBQURnUVdNRVFDQUZxZ3dCQzBHQWdJQ0FlQXNnRldvaUZTQUpJQWtnRlVvYlFRQWdGVUVBVGhzMkFnQWdEMEVFYWlFUElCTkJCR29oRXlBTFFRUnFJUXNnRkVFRWFpRVVJQUpCQkdvaEFpQVFRUVJxSVJBZ0FVRUVhaUVCSUFCQkJHb2hBQXRCQUNFVklCd0Vmd05BSUFvb0FnQWhIeUFBQW44Z0VTZ0NBQ0FNYTdLN0lnVkVPOTlQalpkdTlqK2lJZ2FaUkFBQUFBQUFBT0JCWXdSQUlBYXFEQUVMUVlDQWdJQjRDeUFRS0FJQUloSnFJaFlnQ1NBSklCWktHMEVBSUJaQkFFNGJOZ0lBSUFJZ0VnSi9JQjhnREd1eXV5SUdSR3E4ZEpNWUJOWS9vaUFGUkF3Q0s0Y1cyZVkvb3FBaUJabEVBQUFBQUFBQTRFRmpCRUFnQmFvTUFRdEJnSUNBZ0hnTGF5SVdJQWtnQ1NBV1NodEJBQ0FXUVFCT0d6WUNBQ0FCQW44Z0JrUW5NUWlzSEZyOFA2SWlCWmxFQUFBQUFBQUE0RUZqQkVBZ0Jhb01BUXRCZ0lDQWdIZ0xJQkpxSWhJZ0NTQUpJQkpLRzBFQUlCSkJBRTRiTmdJQUlBb29BZ0FoSHlBQUFuOGdFU2dDQUNBTWE3SzdJZ1ZFTzk5UGpaZHU5aitpSWdhWlJBQUFBQUFBQU9CQll3UkFJQWFxREFFTFFZQ0FnSUI0Q3lBUUtBSUVJaEpxSWhZZ0NTQUpJQlpLRzBFQUlCWkJBRTRiTmdJRUlBSWdFZ0ovSUI4Z0RHdXl1eUlHUkdxOGRKTVlCTlkvb2lBRlJBd0NLNGNXMmVZL29xQWlCWmxFQUFBQUFBQUE0RUZqQkVBZ0Jhb01BUXRCZ0lDQWdIZ0xheUlXSUFrZ0NTQVdTaHRCQUNBV1FRQk9HellDQkNBQkFuOGdCa1FuTVFpc0hGcjhQNklpQlpsRUFBQUFBQUFBNEVGakJFQWdCYW9NQVF0QmdJQ0FnSGdMSUJKcUloSWdDU0FKSUJKS0cwRUFJQkpCQUU0Yk5nSUVJQW9vQWdBaEh5QUxBbjhnRVNnQ0FDQU1hN0s3SWdWRU85OVBqWmR1OWoraUlnYVpSQUFBQUFBQUFPQkJZd1JBSUFhcURBRUxRWUNBZ0lCNEN5QVVLQUlBSWhKcUloWWdDU0FKSUJaS0cwRUFJQlpCQUU0Yk5nSUFJQk1nRWdKL0lCOGdER3V5dXlJR1JHcThkSk1ZQk5ZL29pQUZSQXdDSzRjVzJlWS9vcUFpQlpsRUFBQUFBQUFBNEVGakJFQWdCYW9NQVF0QmdJQ0FnSGdMYXlJV0lBa2dDU0FXU2h0QkFDQVdRUUJPR3pZQ0FDQVBBbjhnQmtRbk1RaXNIRnI4UDZJaUJabEVBQUFBQUFBQTRFRmpCRUFnQmFvTUFRdEJnSUNBZ0hnTElCSnFJaElnQ1NBSklCSktHMEVBSUJKQkFFNGJOZ0lBSUFvb0FnQWhIeUFMQW44Z0VTZ0NBQ0FNYTdLN0lnVkVPOTlQalpkdTlqK2lJZ2FaUkFBQUFBQUFBT0JCWXdSQUlBYXFEQUVMUVlDQWdJQjRDeUFVS0FJRUloSnFJaFlnQ1NBSklCWktHMEVBSUJaQkFFNGJOZ0lFSUJNZ0VnSi9JQjhnREd1eXV5SUdSR3E4ZEpNWUJOWS9vaUFGUkF3Q0s0Y1cyZVkvb3FBaUJabEVBQUFBQUFBQTRFRmpCRUFnQmFvTUFRdEJnSUNBZ0hnTGF5SVdJQWtnQ1NBV1NodEJBQ0FXUVFCT0d6WUNCQ0FQQW44Z0JrUW5NUWlzSEZyOFA2SWlCWmxFQUFBQUFBQUE0RUZqQkVBZ0Jhb01BUXRCZ0lDQWdIZ0xJQkpxSWhJZ0NTQUpJQkpLRzBFQUlCSkJBRTRiTmdJRUlCRkJCR29oRVNBS1FRUnFJUW9nRDBFSWFpRVBJQk5CQ0dvaEV5QUxRUWhxSVFzZ0ZFRUlhaUVVSUFGQkNHb2hBU0FDUVFocUlRSWdBRUVJYWlFQUlCQkJDR29oRUNBVlFRSnFJaFVnSEVrTkFBc2dKZ1ZCQUFzZ0dra0VmeUFLS0FJQUlSWWdBQUovSUJFb0FnQWdER3V5dXlJRlJEdmZUNDJYYnZZL29pSUdtVVFBQUFBQUFBRGdRV01FUUNBR3Fnd0JDMEdBZ0lDQWVBc2dFQ2dDQUNJVmFpSVNJQWtnQ1NBU1NodEJBQ0FTUVFCT0d6WUNBQ0FDSUJVQ2Z5QVdJQXhyc3JzaUJrUnF2SFNUR0FUV1A2SWdCVVFNQWl1SEZ0bm1QNktnSWdXWlJBQUFBQUFBQU9CQll3UkFJQVdxREFFTFFZQ0FnSUI0QzJzaUVpQUpJQWtnRWtvYlFRQWdFa0VBVGhzMkFnQWdBUUovSUFaRUp6RUlyQnhhL0QraUlnV1pSQUFBQUFBQUFPQkJZd1JBSUFXcURBRUxRWUNBZ0lCNEN5QVZhaUlWSUFrZ0NTQVZTaHRCQUNBVlFRQk9HellDQUNBS0tBSUFJUlVnQ3dKL0lCRW9BZ0FnREd1eXV5SUZSRHZmVDQyWGJ2WS9vaUlHbVVRQUFBQUFBQURnUVdNRVFDQUdxZ3dCQzBHQWdJQ0FlQXNnRkNnQ0FDSUxhaUlVSUFrZ0NTQVVTaHRCQUNBVVFRQk9HellDQUNBVElBc0NmeUFWSUF4cnNyc2lCa1JxdkhTVEdBVFdQNklnQlVRTUFpdUhGdG5tUDZLZ0lnV1pSQUFBQUFBQUFPQkJZd1JBSUFXcURBRUxRWUNBZ0lCNEMyc2lFeUFKSUFrZ0Uwb2JRUUFnRTBFQVRoczJBZ0FnRHdKL0lBWkVKekVJckJ4YS9EK2lJZ1daUkFBQUFBQUFBT0JCWXdSQUlBV3FEQUVMUVlDQWdJQjRDeUFMYWlJTElBa2dDU0FMU2h0QkFDQUxRUUJPR3pZQ0FDQVJRUVJxSVJFZ0NrRUVhaUVLSUFKQkJHb2hBaUFRUVFScUlSQWdBRUVFYWlFQUlBRkJCR29GSUFFTElBMXFJUUVnQWlBTmFpRUNJQUFnRFdvaEFDQU5JQkJxSVJBZ0lFRUNhaUlnSUIxSkRRQUxJQ1ZCZm5GQkFtb0ZRUUFMSUI1UERRQWdHd1JBSUFBQ2YwRUFJQXhyc3JzaUJVUTczMCtObDI3MlA2SWlCcGxFQUFBQUFBQUE0RUZqQkVBZ0Jxb01BUXRCZ0lDQWdIZ0xJQkFvQWdBaUMyb2lEU0FKSUFrZ0RVb2JRUUFnRFVFQVRoczJBZ0FnQWlBTEFuOGdCVVJxdkhTVEdBVFdQNklnQlVRTUFpdUhGdG5tUDZLZ0lnYVpSQUFBQUFBQUFPQkJZd1JBSUFhcURBRUxRWUNBZ0lCNEMyc2lEU0FKSUFrZ0RVb2JRUUFnRFVFQVRoczJBZ0FnQVFKL0lBVkVKekVJckJ4YS9EK2lJZ1daUkFBQUFBQUFBT0JCWXdSQUlBV3FEQUVMUVlDQWdJQjRDeUFMYWlJTElBa2dDU0FMU2h0QkFDQUxRUUJPR3pZQ0FDQUNRUVJxSVFJZ0VFRUVhaUVRSUFGQkJHb2hBU0FBUVFScUlRQUxJQnBCZm5FaUlBUi9JQ0JCQVdzaUMwRitjU0U3QWtBQ2YwRUFJQ0JCRDBrTkFCcEJBQ0FBSUFJZ0MwRUJkaUlVUVFOMFFRaHFJaE5xSWd0SklBSWdBQ0FUYWlJTlNYRU5BQnBCQUNBQklBMUpJQUFnQVNBVGFpSVBTWEVOQUJwQkFDQUFJQkFnRTJvaUUwa2dEU0FRUzNFTkFCcEJBQ0FLSUExSklBQWdDaUFVUVFKMFFRUnFJaDVxSWh0SmNRMEFHa0VBSUEwZ0VVc2dBQ0FSSUI1cUlnMUpjUTBBR2tFQUlBSWdEMGtnQVNBTFNYRU5BQnBCQUNBQ0lCTkpJQXNnRUV0eERRQWFRUUFnQ2lBTFNTQUNJQnRKY1EwQUdrRUFJQUlnRFVrZ0N5QVJTM0VOQUJwQkFDQUJJQk5KSUE4Z0VFdHhEUUFhUVFBZ0NpQVBTU0FCSUJ0SmNRMEFHa0VBSUFFZ0RVa2dEeUFSUzNFTkFCb2dDaUFVUVFGcUloWkIvUC8vL3dkeElodEJBblFpSW1vaEN5QUJJQnRCQTNRaUhtb2hEU0FBSUI1cUlROGdDZjBSSVQ4Z0RQMFJJVU5CQUNFVEEwQWdFQ0FUUVFOMEloUkJHSElpSFdvaUl5QVFJQlJCRUhJaUhHb2lKQ0FRSUJSQkNISWlGV29pSlNBUUlCUnFJaWI5Q1FJQS9WWUNBQUg5VmdJQUF2MVdBZ0FESVQwQ2Z5QVJJQk5CQW5RaUgycjlBQUlBSUVQOXNRSDkrZ0VpUHYxZklrRDlERHZmVDQyWGJ2WS9POTlQalpkdTlqLzk4Z0VpUWYwaEFTSUZtVVFBQUFBQUFBRGdRV01FUUNBRnFnd0JDMEdBZ0lDQWVBc2hKeUFLSUI5cS9RQUNBQ0ZDSUFBZ0ZHb2lILzBNQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0E5QW44Z1FmMGhBQ0lGbVVRQUFBQUFBQURnUVdNRVFDQUZxZ3dCQzBHQWdJQ0FlQXY5RVNBbi9Sd0JBbjhnUGlBKy9RMElDUW9MREEwT0R3QUJBZ01BQVFJRC9WOGlRZjBNTzk5UGpaZHU5ajg3MzArTmwyNzJQLzN5QVNJKy9TRUFJZ1daUkFBQUFBQUFBT0JCWXdSQUlBV3FEQUVMUVlDQWdJQjRDLzBjQWdKL0lENzlJUUVpQlpsRUFBQUFBQUFBNEVGakJFQWdCYW9NQVF0QmdJQ0FnSGdML1J3RElrVDlyZ0VpUGlBLy9iWUJJRDc5REFBQUFBQUFBQUFBQUFBQUFBQUFBQUQ5T2YxU0lqNzlXZ0lBQUNBQUlCVnFJaWNnUHYxYUFnQUJJQUFnSEdvaUtTQSsvVm9DQUFJZ0FDQWRhaUlxSUQ3OVdnSUFBd0ovSUVJZ1EvMnhBZjM2QVNJKy9WOGlRdjBNYXJ4MGt4Z0UxajlxdkhTVEdBVFdQLzN5QVNCQS9Rd01BaXVIRnRubVB3d0NLNGNXMmVZLy9mSUIvZkFCSWtEOUlRRWlCWmxFQUFBQUFBQUE0RUZqQkVBZ0Jhb01BUXRCZ0lDQWdIZ0xJU2dnQWlBVWFpSXIvUXdBQUFBQUFBQUFBQUFBQUFBQUFBQUFJRDBDZnlCQS9TRUFJZ1daUkFBQUFBQUFBT0JCWXdSQUlBV3FEQUVMUVlDQWdJQjRDLzBSSUNqOUhBRUNmeUErL1F3QUFBQUFBQUFBQUFBQUFBQUFBQUFBL1EwSUNRb0xEQTBPRHdBQkFnTUFBUUlEL1Y4aVFQME1hcngwa3hnRTFqOXF2SFNUR0FUV1AvM3lBU0JCL1F3TUFpdUhGdG5tUHd3Q0s0Y1cyZVkvL2ZJQi9mQUJJajc5SVFBaUJabEVBQUFBQUFBQTRFRmpCRUFnQmFvTUFRdEJnSUNBZ0hnTC9Sd0NBbjhnUHYwaEFTSUZtVVFBQUFBQUFBRGdRV01FUUNBRnFnd0JDMEdBZ0lDQWVBdjlIQU1pUWYyeEFTSStJRC85dGdFZ1B2ME1BQUFBQUFBQUFBQUFBQUFBQUFBQUFQMDUvVklpUHYxYUFnQUFJQUlnRldvaUtDQSsvVm9DQUFFZ0FpQWNhaUlzSUQ3OVdnSUFBaUFDSUIxcUlpMGdQdjFhQWdBREFuOGdRdjBNSnpFSXJCeGEvRDhuTVFpc0hGcjhQLzN5QVNJKy9TRUJJZ1daUkFBQUFBQUFBT0JCWXdSQUlBV3FEQUVMUVlDQWdJQjRDeUV1SUFFZ0ZHb2lGUDBNQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0E5QW44Z1B2MGhBQ0lGbVVRQUFBQUFBQURnUVdNRVFDQUZxZ3dCQzBHQWdJQ0FlQXY5RVNBdS9Sd0JBbjhnUVAwTUp6RUlyQnhhL0Q4bk1RaXNIRnI4UC8zeUFTSTkvU0VBSWdXWlJBQUFBQUFBQU9CQll3UkFJQVdxREFFTFFZQ0FnSUI0Qy8wY0FnSi9JRDM5SVFFaUJabEVBQUFBQUFBQTRFRmpCRUFnQmFvTUFRdEJnSUNBZ0hnTC9Sd0RJa0Q5cmdFaVBTQS8vYllCSUQzOURBQUFBQUFBQUFBQUFBQUFBQUFBQUFEOU9mMVNJajM5V2dJQUFDQUJJQlZxSWhVZ1BmMWFBZ0FCSUFFZ0hHb2lIQ0E5L1ZvQ0FBSWdBU0FkYWlJZElEMzlXZ0lBQXlBZi9Rd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUlDTkJCR29nSkVFRWFpQWxRUVJxSUNiOUNRSUUvVllDQUFIOVZnSUFBdjFXQWdBRElqNGdSUDJ1QVNJOUlELzl0Z0VnUGYwTUFBQUFBQUFBQUFBQUFBQUFBQUFBQVAwNS9WSWlQZjFhQWdRQUlDY2dQZjFhQWdRQklDa2dQZjFhQWdRQ0lDb2dQZjFhQWdRRElDdjlEQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdQaUJCL2JFQklqMGdQLzIyQVNBOS9Rd0FBQUFBQUFBQUFBQUFBQUFBQUFBQS9UbjlVaUk5L1ZvQ0JBQWdLQ0E5L1ZvQ0JBRWdMQ0E5L1ZvQ0JBSWdMU0E5L1ZvQ0JBTWdGUDBNQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0ErSUVEOXJnRWlQU0EvL2JZQklEMzlEQUFBQUFBQUFBQUFBQUFBQUFBQUFBRDlPZjFTSWozOVdnSUVBQ0FWSUQzOVdnSUVBU0FjSUQzOVdnSUVBaUFkSUQzOVdnSUVBeUFUUVFScUloTWdHMGNOQUFzZ0VTQWlhaUVSSUJBZ0htb2hFQ0FDSUI1cUlRSWdGaUFiUmdSQUlBOGhBQ0FOSVFFZ0N5RUtEQUlMSUE4aEFDQU5JUUVnQ3lFS0lCdEJBWFFMSVFzRFFDQUtLQUlBSVJNZ0FBSi9JQkVvQWdBZ0RHdXl1eUlGUkR2ZlQ0Mlhidlkvb2lJR21VUUFBQUFBQUFEZ1FXTUVRQ0FHcWd3QkMwR0FnSUNBZUFzZ0VDZ0NBQ0lOYWlJUElBa2dDU0FQU2h0QkFDQVBRUUJPR3pZQ0FDQUNJQTBDZnlBVElBeHJzcnNpQmtScXZIU1RHQVRXUDZJZ0JVUU1BaXVIRnRubVA2S2dJZ1daUkFBQUFBQUFBT0JCWXdSQUlBV3FEQUVMUVlDQWdJQjRDMnNpRHlBSklBa2dEMG9iUVFBZ0QwRUFUaHMyQWdBZ0FRSi9JQVpFSnpFSXJCeGEvRCtpSWdXWlJBQUFBQUFBQU9CQll3UkFJQVdxREFFTFFZQ0FnSUI0Q3lBTmFpSU5JQWtnQ1NBTlNodEJBQ0FOUVFCT0d6WUNBQ0FLS0FJQUlSTWdBQUovSUJFb0FnQWdER3V5dXlJRlJEdmZUNDJYYnZZL29pSUdtVVFBQUFBQUFBRGdRV01FUUNBR3Fnd0JDMEdBZ0lDQWVBc2dFQ2dDQkNJTmFpSVBJQWtnQ1NBUFNodEJBQ0FQUVFCT0d6WUNCQ0FDSUEwQ2Z5QVRJQXhyc3JzaUJrUnF2SFNUR0FUV1A2SWdCVVFNQWl1SEZ0bm1QNktnSWdXWlJBQUFBQUFBQU9CQll3UkFJQVdxREFFTFFZQ0FnSUI0QzJzaUR5QUpJQWtnRDBvYlFRQWdEMEVBVGhzMkFnUWdBUUovSUFaRUp6RUlyQnhhL0QraUlnV1pSQUFBQUFBQUFPQkJZd1JBSUFXcURBRUxRWUNBZ0lCNEN5QU5haUlOSUFrZ0NTQU5TaHRCQUNBTlFRQk9HellDQkNBUlFRUnFJUkVnQ2tFRWFpRUtJQUZCQ0dvaEFTQUNRUWhxSVFJZ0FFRUlhaUVBSUJCQkNHb2hFQ0FMUVFKcUlnc2dJRWtOQUFzTElEdEJBbW9GUVFBTElCcFBEUUFnQ2lnQ0FDRUxJQUFDZnlBUktBSUFJQXhyc3JzaUJVUTczMCtObDI3MlA2SWlCcGxFQUFBQUFBQUE0RUZqQkVBZ0Jxb01BUXRCZ0lDQWdIZ0xJQkFvQWdBaUFHb2lDaUFKSUFrZ0Nrb2JRUUFnQ2tFQVRoczJBZ0FnQWlBQUFuOGdDeUFNYTdLN0lnWkVhcngwa3hnRTFqK2lJQVZFREFJcmh4Ylo1aitpb0NJRm1VUUFBQUFBQUFEZ1FXTUVRQ0FGcWd3QkMwR0FnSUNBZUF0cklnSWdDU0FDSUFsSUcwRUFJQUpCQUU0Yk5nSUFJQUVDZnlBR1JDY3hDS3djV3Z3L29pSUZtVVFBQUFBQUFBRGdRV01FUUNBRnFnd0JDMEdBZ0lDQWVBc2dBR29pQUNBSklBQWdDVWdiUVFBZ0FFRUFUaHMyQWdBTElCY29BaGdvQWl3UUVDQVhLQUlZSWdBZ0J6WUNMQ0FBS0FKZ0VCQWdGeWdDR0NJQUlBZzJBbUFnQUNnQ2xBRVFFQ0FYS0FJWUlnQWdEallDbEFFZ0FDQUEvUUFDQUNJLy9Rc0NhQ0FBSUQvOUN3STBJQmRCQVRZQ0ZBc01Cd3NnQVNnQ0JFRUJSdzBCSUFFb0FqaEJBVWNOQVNBQktBSnNRUUZIRFFFZ0FTZ0NHQ0VBSUFFb0FwUUJJUUlnQVNnQ1lDRUhJQUVvQWl3aERDQUJLQUlJSWdvZ0FTZ0NEQ0lXYkVFQ2RDSUJFQmdoRHlBQkVCZ2hGeUFCRUJnaENTQVBSUTBGSUJkRkRRVWdDVVVOQlNBV0JFQWdDaUFOS0FJQVFRRnhJaDlySVNJQ2YwRUFRUUVnQUVFQmEzUWlGR3V5dXlJRlJHcThkSk1ZQk5ZL29pQUZSQXdDSzRjVzJlWS9vcUFpQnBsRUFBQUFBQUFBNEVGakJFQWdCcW9NQVF0QmdJQ0FnSGdMSVNkQmZ5QUFkQ0U4SUNKQmZuRWlIVUVCYXlJS1FRRjJJZ0JCQVdvaEl3Si9JQVZFSnpFSXJCeGEvRCtpSWdhWlJBQUFBQUFBQU9CQll3UkFJQWFxREFFTFFZQ0FnSUI0Q3lFcElBcEJmbkVoQ2lBQVFRSjBJUWdnQUVFRGRDRUFJQ05CZkhFaEd5QThRWDl6SVJFQ2Z5QUZSRHZmVDQyWGJ2WS9vaUlGbVVRQUFBQUFBQURnUVdNRVFDQUZxZ3dCQzBHQWdJQ0FlQXNoS2lBS1FRSnFJU1FnQ0VFRWFpRWxJQUJCQ0dvaElDQWJRUUowSVNZZ0cwRURkQ0VlSUJ0QkFYUWhFQ0FSL1JFaFB5QVUvUkVoUXlBZFFRZEpJU2dnRHlFS0lCY2hBQ0FKSVE0RFFDQWZCRUFnQ2lBTUtBSUFJZ0VnS21vaUNDQVJJQWdnRVVnYlFRQWdDRUVBVGhzMkFnQWdBQ0FCSUNkcklnZ2dFU0FJSUJGSUcwRUFJQWhCQUU0Yk5nSUFJQTRnQVNBcGFpSUJJQkVnQVNBUlNCdEJBQ0FCUVFCT0d6WUNBQ0FPUVFScUlRNGdDa0VFYWlFS0lBeEJCR29oRENBQVFRUnFJUUFMQW44Q2Z5QWRSUVJBSUFjaEFTQU9JUXNnQ2lFSVFRQU1BUXRCQUNFWkFrQUNRQ0FvRFFBZ0NpQUFJQ0JxSWdGSklBQWdDaUFnYWlJSVNYRU5BQ0FLSUE0Z0lHb2lDMGtnQ0NBT1MzRU5BQ0FLSUF3Z0lHb2lHa2tnQ0NBTVMzRU5BQ0FISUFoSklBb2dCeUFsYWlJY1NYRU5BQ0FDSUFoSklBb2dBaUFsYWlJSVNYRU5BQ0FBSUF0SklBRWdEa3R4RFFBZ0FDQWFTU0FCSUF4TGNRMEFJQUFnSEVrZ0FTQUhTM0VOQUNBQUlBaEpJQUVnQWt0eERRQWdEaUFhU1NBTElBeExjUTBBSUE0Z0hFa2dCeUFMU1hFTkFDQUNJQXRKSUFnZ0RrdHhEUUFnQnlBbWFpRUJJQTRnSG1vaEN5QUtJQjVxSVFnRFFDQU1JQmxCQTNRaUdrRVljaUljYWlJcklBd2dHa0VRY2lJVmFpSXNJQXdnR2tFSWNpSVNhaUl0SUF3Z0dtb2lMdjBKQWdEOVZnSUFBZjFXQWdBQy9WWUNBQU1oUFFKL0lBSWdHVUVDZENJdmF2MEFBZ0FnUS8yeEFmMzZBU0krL1Y4aVFQME1POTlQalpkdTlqODczMCtObDI3MlAvM3lBU0pCL1NFQklnV1pSQUFBQUFBQUFPQkJZd1JBSUFXcURBRUxRWUNBZ0lCNEN5RXdJQWNnTDJyOUFBSUFJVUlnQ2lBYWFpSXYvUXdBQUFBQUFBQUFBQUFBQUFBQUFBQUFJRDBDZnlCQi9TRUFJZ1daUkFBQUFBQUFBT0JCWXdSQUlBV3FEQUVMUVlDQWdJQjRDLzBSSUREOUhBRUNmeUErSUQ3OURRZ0pDZ3NNRFE0UEFBRUNBd0FCQWdQOVh5SkIvUXc3MzArTmwyNzJQenZmVDQyWGJ2WS8vZklCSWo3OUlRQWlCWmxFQUFBQUFBQUE0RUZqQkVBZ0Jhb01BUXRCZ0lDQWdIZ0wvUndDQW44Z1B2MGhBU0lGbVVRQUFBQUFBQURnUVdNRVFDQUZxZ3dCQzBHQWdJQ0FlQXY5SEFNaVJQMnVBU0krSUQvOXRnRWdQdjBNQUFBQUFBQUFBQUFBQUFBQUFBQUFBUDA1L1ZJaVB2MWFBZ0FBSUFvZ0Vtb2lNQ0ErL1ZvQ0FBRWdDaUFWYWlJeUlENzlXZ0lBQWlBS0lCeHFJak1nUHYxYUFnQURBbjhnUWlCRC9iRUIvZm9CSWo3OVh5SkMvUXhxdkhTVEdBVFdQMnE4ZEpNWUJOWS8vZklCSUVEOURBd0NLNGNXMmVZL0RBSXJoeGJaNWovOThnSDk4QUVpUVAwaEFTSUZtVVFBQUFBQUFBRGdRV01FUUNBRnFnd0JDMEdBZ0lDQWVBc2hNU0FBSUJwcUlqVDlEQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdQUUovSUVEOUlRQWlCWmxFQUFBQUFBQUE0RUZqQkVBZ0Jhb01BUXRCZ0lDQWdIZ0wvUkVnTWYwY0FRSi9JRDc5REFBQUFBQUFBQUFBQUFBQUFBQUFBQUQ5RFFnSkNnc01EUTRQQUFFQ0F3QUJBZ1A5WHlKQS9ReHF2SFNUR0FUV1AycThkSk1ZQk5ZLy9mSUJJRUg5REF3Q0s0Y1cyZVkvREFJcmh4Ylo1ai85OGdIOThBRWlQdjBoQUNJRm1VUUFBQUFBQUFEZ1FXTUVRQ0FGcWd3QkMwR0FnSUNBZUF2OUhBSUNmeUErL1NFQklnV1pSQUFBQUFBQUFPQkJZd1JBSUFXcURBRUxRWUNBZ0lCNEMvMGNBeUpCL2JFQklqNGdQLzIyQVNBKy9Rd0FBQUFBQUFBQUFBQUFBQUFBQUFBQS9UbjlVaUkrL1ZvQ0FBQWdBQ0FTYWlJeElENzlXZ0lBQVNBQUlCVnFJalVnUHYxYUFnQUNJQUFnSEdvaU5pQSsvVm9DQUFNQ2Z5QkMvUXduTVFpc0hGcjhQeWN4Q0t3Y1d2dy8vZklCSWo3OUlRRWlCWmxFQUFBQUFBQUE0RUZqQkVBZ0Jhb01BUXRCZ0lDQWdIZ0xJVGNnRGlBYWFpSWEvUXdBQUFBQUFBQUFBQUFBQUFBQUFBQUFJRDBDZnlBKy9TRUFJZ1daUkFBQUFBQUFBT0JCWXdSQUlBV3FEQUVMUVlDQWdJQjRDLzBSSURmOUhBRUNmeUJBL1F3bk1RaXNIRnI4UHljeENLd2NXdncvL2ZJQklqMzlJUUFpQlpsRUFBQUFBQUFBNEVGakJFQWdCYW9NQVF0QmdJQ0FnSGdML1J3Q0FuOGdQZjBoQVNJRm1VUUFBQUFBQUFEZ1FXTUVRQ0FGcWd3QkMwR0FnSUNBZUF2OUhBTWlRUDJ1QVNJOUlELzl0Z0VnUGYwTUFBQUFBQUFBQUFBQUFBQUFBQUFBQVAwNS9WSWlQZjFhQWdBQUlBNGdFbW9pRWlBOS9Wb0NBQUVnRGlBVmFpSVZJRDM5V2dJQUFpQU9JQnhxSWh3Z1BmMWFBZ0FESUMvOURBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0swRUVhaUFzUVFScUlDMUJCR29nTHYwSkFnVDlWZ0lBQWYxV0FnQUMvVllDQUFNaVBpQkUvYTRCSWowZ1AvMjJBU0E5L1F3QUFBQUFBQUFBQUFBQUFBQUFBQUFBL1RuOVVpSTkvVm9DQkFBZ01DQTkvVm9DQkFFZ01pQTkvVm9DQkFJZ015QTkvVm9DQkFNZ05QME1BQUFBQUFBQUFBQUFBQUFBQUFBQUFDQStJRUg5c1FFaVBTQS8vYllCSUQzOURBQUFBQUFBQUFBQUFBQUFBQUFBQUFEOU9mMVNJajM5V2dJRUFDQXhJRDM5V2dJRUFTQTFJRDM5V2dJRUFpQTJJRDM5V2dJRUF5QWEvUXdBQUFBQUFBQUFBQUFBQUFBQUFBQUFJRDRnUVAydUFTSTlJRC85dGdFZ1BmME1BQUFBQUFBQUFBQUFBQUFBQUFBQUFQMDUvVklpUGYxYUFnUUFJQklnUGYxYUFnUUJJQlVnUGYxYUFnUUNJQndnUGYxYUFnUURJQmxCQkdvaUdTQWJSdzBBQ3lBQ0lDWnFJUUlnRENBZWFpRU1JQUFnSG1vaEFDQVFJUmtnSkNBYklDTkdEUUlhREFFTElBb2hDQ0FPSVFzZ0J5RUJDd05BSUFFb0FnQWhEaUFJQW44Z0FpZ0NBQ0FVYTdLN0lnVkVPOTlQalpkdTlqK2lJZ2FaUkFBQUFBQUFBT0JCWXdSQUlBYXFEQUVMUVlDQWdJQjRDeUFNS0FJQUlncHFJZ2NnRVNBSElCRklHMEVBSUFkQkFFNGJOZ0lBSUFBZ0NnSi9JQTRnRkd1eXV5SUdSR3E4ZEpNWUJOWS9vaUFGUkF3Q0s0Y1cyZVkvb3FBaUJabEVBQUFBQUFBQTRFRmpCRUFnQmFvTUFRdEJnSUNBZ0hnTGF5SUhJQkVnQnlBUlNCdEJBQ0FIUVFCT0d6WUNBQ0FMQW44Z0JrUW5NUWlzSEZyOFA2SWlCWmxFQUFBQUFBQUE0RUZqQkVBZ0Jhb01BUXRCZ0lDQWdIZ0xJQXBxSWdvZ0VTQUtJQkZJRzBFQUlBcEJBRTRiTmdJQUlBRW9BZ0FoRGlBSUFuOGdBaWdDQUNBVWE3SzdJZ1ZFTzk5UGpaZHU5aitpSWdhWlJBQUFBQUFBQU9CQll3UkFJQWFxREFFTFFZQ0FnSUI0Q3lBTUtBSUVJZ3BxSWdjZ0VTQUhJQkZJRzBFQUlBZEJBRTRiTmdJRUlBQWdDZ0ovSUE0Z0ZHdXl1eUlHUkdxOGRKTVlCTlkvb2lBRlJBd0NLNGNXMmVZL29xQWlCWmxFQUFBQUFBQUE0RUZqQkVBZ0Jhb01BUXRCZ0lDQWdIZ0xheUlISUJFZ0J5QVJTQnRCQUNBSFFRQk9HellDQkNBTEFuOGdCa1FuTVFpc0hGcjhQNklpQlpsRUFBQUFBQUFBNEVGakJFQWdCYW9NQVF0QmdJQ0FnSGdMSUFwcUlnb2dFU0FLSUJGSUcwRUFJQXBCQUU0Yk5nSUVJQUpCQkdvaEFpQUJRUVJxSVFFZ0MwRUlhaUVMSUFCQkNHb2hBQ0FJUVFocUlRZ2dERUVJYWlFTUlCbEJBbW9pR1NBZFNRMEFDeUFrQ3lBaVR3UkFJQUVoQnlBSUlRb2dDd3dCQ3lBQktBSUFJUTRnQ0FKL0lBSW9BZ0FnRkd1eXV5SUZSRHZmVDQyWGJ2WS9vaUlHbVVRQUFBQUFBQURnUVdNRVFDQUdxZ3dCQzBHQWdJQ0FlQXNnRENnQ0FDSUthaUlISUJFZ0J5QVJTQnRCQUNBSFFRQk9HellDQUNBQUlBb0NmeUFPSUJScnNyc2lCa1JxdkhTVEdBVFdQNklnQlVRTUFpdUhGdG5tUDZLZ0lnV1pSQUFBQUFBQUFPQkJZd1JBSUFXcURBRUxRWUNBZ0lCNEMyc2lCeUFSSUFjZ0VVZ2JRUUFnQjBFQVRoczJBZ0FnQ3dKL0lBWkVKekVJckJ4YS9EK2lJZ1daUkFBQUFBQUFBT0JCWXdSQUlBV3FEQUVMUVlDQWdJQjRDeUFLYWlJS0lCRWdDaUFSU0J0QkFDQUtRUUJPR3pZQ0FDQUNRUVJxSVFJZ0FVRUVhaUVISUFCQkJHb2hBQ0FJUVFScUlRb2dERUVFYWlFTUlBdEJCR29MSVE0Z0UwRUJhaUlUSUJaSERRQUxDeUFOS0FJWUtBSXNFQkFnRFNnQ0dDSUFJQTgyQWl3Z0FDZ0NZQkFRSUEwb0FoZ2lBQ0FYTmdKZ0lBQW9BcFFCRUJBZ0RTZ0NHQ0lBSUFrMkFwUUJJQUFnQVAwQUFnQWlQLzBMQW1nZ0FDQS8vUXNDTkNBTlFRRTJBaFJCQUNFWkRBWUxJQUVvQW1oQkFVY05BQ0FCS0FJRVFRRkhEUUFnQVNnQ09FRUJSdzBBSUFFb0FteEJBVWNOQUNBQktBSVlJUUlnQVNnQ2xBRWhDQ0FCS0FKZ0lRd2dBU2dDTENFQUlBRW9BZ3dnQVNnQ0NHd2lGMEVDZENJQkVCZ2hCeUFCRUJnaER5QUJFQmdoRGdKQUlBZEZEUUFnRDBVTkFDQU9SUTBBSUJkRkRRUkJmeUFDZEVGL2N5RVpRUUVnQWtFQmEzUWhFU0FYUVFoSkRRSWdEeUFIYTBFUVNRMENJQTRnQjJ0QkVFa05BaUFISUFCclFSQkpEUUlnQnlBTWEwRVFTUTBDSUFjZ0NHdEJFRWtOQWlBT0lBOXJRUkJKRFFJZ0R5QUFhMEVRU1EwQ0lBOGdER3RCRUVrTkFpQVBJQWhyUVJCSkRRSWdEaUFBYTBFUVNRMENJQTRnREd0QkVFa05BaUFPSUFoclFSQkpEUUlnQ0NBWFFYeHhJZ3BCQW5RaUNXb2hDeUFKSUE1cUlRRWdCeUFKYWlFQ0lCbjlFU0UvSUJIOUVTRTlBMEFDZnlBSUlCTkJBblFpRUdyOUFBSUFJRDM5c1FIOStnRWlQdjFmSWtEOUREdmZUNDJYYnZZL085OVBqWmR1OWovOThnRWlRZjBoQVNJRm1VUUFBQUFBQUFEZ1FXTUVRQ0FGcWd3QkMwR0FnSUNBZUFzaEZDQU1JQkJxL1FBQ0FDRkNJQWNnRUdyOURBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0FDQVFhdjBBQWdBaVF3Si9JRUg5SVFBaUJabEVBQUFBQUFBQTRFRmpCRUFnQmFvTUFRdEJnSUNBZ0hnTC9SRWdGUDBjQVFKL0lENGdQdjBOQ0FrS0N3d05EZzhBQVFJREFBRUNBLzFmSWo3OUREdmZUNDJYYnZZL085OVBqWmR1OWovOThnRWlRZjBoQUNJRm1VUUFBQUFBQUFEZ1FXTUVRQ0FGcWd3QkMwR0FnSUNBZUF2OUhBSUNmeUJCL1NFQklnV1pSQUFBQUFBQUFPQkJZd1JBSUFXcURBRUxRWUNBZ0lCNEMvMGNBLzJ1QVNKQklELzl0Z0VnUWYwTUFBQUFBQUFBQUFBQUFBQUFBQUFBQVAwNS9WTDlDd0lBQW44Z1FpQTkvYkVCL2ZvQklrSDlYeUpDL1F4cXZIU1RHQVRXUDJxOGRKTVlCTlkvL2ZJQklFRDlEQXdDSzRjVzJlWS9EQUlyaHhiWjVqLzk4Z0g5OEFFaVFQMGhBU0lGbVVRQUFBQUFBQURnUVdNRVFDQUZxZ3dCQzBHQWdJQ0FlQXNoRkNBUElCQnEvUXdBQUFBQUFBQUFBQUFBQUFBQUFBQUFJRU1DZnlCQS9TRUFJZ1daUkFBQUFBQUFBT0JCWXdSQUlBV3FEQUVMUVlDQWdJQjRDLzBSSUJUOUhBRUNmeUJCL1F3QUFBQUFBQUFBQUFBQUFBQUFBQUFBL1EwSUNRb0xEQTBPRHdBQkFnTUFBUUlEL1Y4aVFQME1hcngwa3hnRTFqOXF2SFNUR0FUV1AvM3lBU0ErL1F3TUFpdUhGdG5tUHd3Q0s0Y1cyZVkvL2ZJQi9mQUJJajc5SVFBaUJabEVBQUFBQUFBQTRFRmpCRUFnQmFvTUFRdEJnSUNBZ0hnTC9Sd0NBbjhnUHYwaEFTSUZtVVFBQUFBQUFBRGdRV01FUUNBRnFnd0JDMEdBZ0lDQWVBdjlIQVA5c1FFaVBpQS8vYllCSUQ3OURBQUFBQUFBQUFBQUFBQUFBQUFBQUFEOU9mMVMvUXNDQUFKL0lFTDlEQ2N4Q0t3Y1d2dy9KekVJckJ4YS9ELzk4Z0VpUHYwaEFTSUZtVVFBQUFBQUFBRGdRV01FUUNBRnFnd0JDMEdBZ0lDQWVBc2hGQ0FPSUJCcS9Rd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUlFTUNmeUErL1NFQUlnV1pSQUFBQUFBQUFPQkJZd1JBSUFXcURBRUxRWUNBZ0lCNEMvMFJJQlQ5SEFFQ2Z5QkEvUXduTVFpc0hGcjhQeWN4Q0t3Y1d2dy8vZklCSWo3OUlRQWlCWmxFQUFBQUFBQUE0RUZqQkVBZ0Jhb01BUXRCZ0lDQWdIZ0wvUndDQW44Z1B2MGhBU0lGbVVRQUFBQUFBQURnUVdNRVFDQUZxZ3dCQzBHQWdJQ0FlQXY5SEFQOXJnRWlQaUEvL2JZQklENzlEQUFBQUFBQUFBQUFBQUFBQUFBQUFBRDlPZjFTL1FzQ0FDQVRRUVJxSWhNZ0NrY05BQXNnQ2lBWFJnMEVJQWtnREdvaERDQUFJQWxxSVFBZ0NTQVBhZ3dEQ3lBSEVCQWdEeEFRSUE0UUVBd0ZDeUFZUWJrRE5nSUVJQmhCdUFvMkFnQkI2TVFCUWNJK0lCZ1FGZ3dFQ3lBSElRSWdEaUVCSUFnaEN5QVBDeUVJQTBBZ0RDZ0NBQ0VUSUFJQ2Z5QUxLQUlBSUJGcnNyc2lCVVE3MzArTmwyNzJQNklpQnBsRUFBQUFBQUFBNEVGakJFQWdCcW9NQVF0QmdJQ0FnSGdMSUFBb0FnQWlDV29pRUNBWklCQWdHVWdiUVFBZ0VFRUFUaHMyQWdBZ0NDQUpBbjhnRXlBUmE3SzdJZ1pFYXJ4MGt4Z0UxaitpSUFWRURBSXJoeGJaNWoraW9DSUZtVVFBQUFBQUFBRGdRV01FUUNBRnFnd0JDMEdBZ0lDQWVBdHJJaEFnR1NBUUlCbElHMEVBSUJCQkFFNGJOZ0lBSUFFQ2Z5QUdSQ2N4Q0t3Y1d2dy9vaUlGbVVRQUFBQUFBQURnUVdNRVFDQUZxZ3dCQzBHQWdJQ0FlQXNnQ1dvaUNTQVpJQWtnR1VnYlFRQWdDVUVBVGhzMkFnQWdBVUVFYWlFQklBaEJCR29oQ0NBQ1FRUnFJUUlnQzBFRWFpRUxJQXhCQkdvaERDQUFRUVJxSVFBZ0NrRUJhaUlLSUJkSERRQUxDeUFOS0FJWUtBSXNFQkFnRFNnQ0dDSUFJQWMyQWl3Z0FDZ0NZQkFRSUEwb0FoZ2lBQ0FQTmdKZ0lBQW9BcFFCRUJBZ0RTZ0NHQ0FPTmdLVUFTQU5RUUUyQWhSQkFDRVpEQUVMSUE4UUVDQVhFQkFnQ1JBUUN5QVlLQUlnSVFBQ1FDQUREUUFnSVVVTkFDQUFLQUlZSVE1QkFDRVRBMEFnRGlBVFFUUnNhaUlES0FJWUlnSkJDRWNFUUFKQUlBSkJCMDBFUUNBREtBSU1JQU1vQWdoc0lRRWdBeWdDTENFS0lBTW9BaUFFUUNBQlJRMENRUUVnQWtFQmEzU3RJVVZCQUNFSElBRkJCRThFUUNBQlFYeHhJUWNnUmYwU0lUOUJBQ0VNQTBBZ0NpQU1RUUowYWlJQ0lBTDlBQUlBSWozOXh3RkJCLzNMQVNJKy9SMEFJRC85SFFBaVJuLzlFaUErL1IwQklELzlIUUVpUjMvOUhnRWdQU0EvL1EwSUNRb0xEQTBPRHdBQkFnTUFBUUlEL2NjQlFRZjl5d0VpUGYwZEFDQkdmLzBTSUQzOUhRRWdSMy85SGdIOURRQUJBZ01JQ1FvTEVCRVNFeGdaR2h2OUN3SUFJQXhCQkdvaURDQUhSdzBBQ3lBQklBZEdEUU1MQTBBZ0NpQUhRUUowYWlJQ0lBSTBBZ0JDQjRZZ1JYOCtBZ0FnQjBFQmFpSUhJQUZIRFFBTERBSUxJQUZGRFFGQmZ5QUNkRUYvYzYwaFJVRUFJUWNnQVVFRVR3UkFJQUZCZkhFaEJ5QkYvUkloUDBFQUlRd0RRQ0FLSUF4QkFuUnFJZ0lnQXYwQUFnQWlQZjNKQWYwTS93QUFBQUFBQUFEL0FBQUFBQUFBQVAzVkFTSSsvUjBBSUQvOUhRQWlSb0Q5RWlBKy9SMEJJRC85SFFFaVI0RDlIZ0VnUFNBLy9RMElDUW9MREEwT0R3QUJBZ01BQVFJRC9ja0IvUXovQUFBQUFBQUFBUDhBQUFBQUFBQUEvZFVCSWozOUhRQWdSb0Q5RWlBOS9SMEJJRWVBL1I0Qi9RMEFBUUlEQ0FrS0N4QVJFaE1ZR1JvYi9Rc0NBQ0FNUVFScUlnd2dCMGNOQUFzZ0FTQUhSZzBDQ3dOQUlBb2dCMEVDZEdvaUFpQUNOUUlBUXY4QmZpQkZnRDRDQUNBSFFRRnFJZ2NnQVVjTkFBc01BUXNnQWtFSWF5RUtJQU1vQWd3Z0F5Z0NDR3doQVNBREtBSXNJUWdnQXlnQ0lBUkFJQUZGRFFGQkFDRUhJQUZCQkU4RVFDQUJRWHh4SVFkQkFDRUNBMEFnQ0NBQ1FRSjBhaUlMSUF2OUFBSUFJQXI5ckFIOUN3SUFJQUpCQkdvaUFpQUhSdzBBQ3lBQklBZEdEUUlMQTBBZ0NDQUhRUUowYWlJQ0lBSW9BZ0FnQ25VMkFnQWdCMEVCYWlJSElBRkhEUUFMREFFTElBRkZEUUJCQUNFSElBRkJCRThFUUNBQlFYeHhJUWRCQUNFQ0EwQWdDQ0FDUVFKMGFpSUxJQXY5QUFJQUlBcjlyUUg5Q3dJQUlBSkJCR29pQWlBSFJ3MEFDeUFCSUFkR0RRRUxBMEFnQ0NBSFFRSjBhaUlDSUFJb0FnQWdDblkyQWdBZ0IwRUJhaUlISUFGSERRQUxDeUFEUVFnMkFoZ0xJQk5CQVdvaUV5QWhSdzBBQ3dzZ0FDZ0NEQ0FBS0FJSWJDRUJBa0FnR1VVRVFDQUFLQUlVUVFKR0JFQWdBQ2dDRUVFQlJnUkFJQUFvQWhnb0Fpd2dBUkFPREFNTElBUkZEUUlnQUNnQ0dDSUFLQUlzSUFBb0FtQWdBUkFJREFJTElBQW9BaGdpQUNnQ0xDQUFLQUpnSUFBb0FwUUJJQUVRQnd3QkN3SkFBa0FDUUNBaFFRRnJEZ1FBQXdFQ0F3c2dBQ2dDR0NnQ0xDQUJFQVlNQWdzZ0FDZ0NHQ0lBS0FJc0lBQW9BbUFnQUNnQ2xBRWdBUkFGREFFTElBQW9BaGdpQUNnQ0xDQUFLQUpnSUFBb0FwUUJJQUFvQXNnQklBRVFCQXNnR0NnQ0lCQWhRUUFoREFzZ0dFSGd3QUJxSkFBZ0RBc0lBRUVJSUFBUUpRdXJBZ0lDZmdKL1FuOGhBeUFBTFFCRVFRaHhSUVJBSUFBZ0FDZ0NJQ0lHTmdJa0FrQUNRQUpBSUFBZ0FDZ0NNQ0lGQkg4RFFDQUdJQVVnQUNnQ0FDQUFLQUlVRVFBQUlnVkJmMFlOQWlBQUlBQW9BaVFnQldvaUJqWUNKQ0FBSUFBb0FqQWdCV3NpQlRZQ01DQUZEUUFMSUFBb0FpQUZJQVlMTmdJa0lBRkNBRlVOQVVJQUlRTU1BZ3NnQUNBQUtBSkVRUWh5TmdKRUlBSkJCRUdCOVFCQkFCQVBJQUJCQURZQ01DQUFJQUFvQWtSQkNISTJBa1JDZnc4TFFnQWhBd05BSUFFZ0FDZ0NBQ0FBS0FJWUVRc0FJZ1JDZjFFRVFDQUNRUVJCOHZRQVFRQVFEeUFBSUFBb0FrUkJDSEkyQWtRZ0FDQUFLUU00SUFOOE53TTRRbjhnQXlBRFVCc1BDeUFESUFSOElRTWdBU0FFZlNJQlFnQlZEUUFMQ3lBQUlBQXBBemdnQTN3M0F6Z0xJQU1MSXdFQmZ5QUJJQUVvQWdBZ0FTZ0NDQ0lCSUFDbklnSWdBU0FDU1J0cU5nSUVRUUVMUEFJQ2Z3RitJQUVvQWdBZ0FTZ0NDR29pQXlBQktBSUVJZ0pHQkVCQ2Z3OExJQUVnQWlBQXAybzJBZ1FnQXlBQ2E2d2lCQ0FBSUFBZ0JGVWJDNWdEQWdKK0FuOGdBQ2dDTUNJRklBR25JZ1pQQkVBZ0FDQUZJQVpyTmdJd0lBQWdBQ2dDSkNBR2FqWUNKQ0FBSUFBcEF6Z2dBWHczQXpnZ0FROExJQUF0QUVSQkJIRUVRQ0FBUVFBMkFqQWdBQ0FBS0FJa0lBVnFOZ0lrSUFBZ0JhMGlBU0FBS1FNNGZEY0RPQ0FCUW44Z0JSc1BDd0pBSUFWRkJFQU1BUXNnQUVFQU5nSXdJQUFnQUNnQ0lEWUNKQ0FCSUFXdElnTjlJUUVMSUFGQ0FGVUVRQU5BSUFBcEF3Z2dBQ2tET0NBQklBTjhmRlFFUUNBQ1FRUkJtL1VBUVFBUUR5QUFRUUEyQWpBZ0FDQUFLQUlnTmdJa0lBQWdBQ2tET0NBRGZDSUROd000SUFBcEF3Z2lBU0FEZlNFRUlBRWdBQ2dDQUNBQUtBSWNFUW9BSVFVZ0FDZ0NSQ0VDSUFBZ0JRUi9JQUFnQVRjRE9DQUNRWHR4QlNBQ0MwRUVjallDUkVKL0lBUWdBU0FEVVJzUEN5QUJJQUFvQWdBZ0FDZ0NHQkVMQUNJRVFuOVJCRUFnQWtFRVFadjFBRUVBRUE4Z0FDQUFLQUpFUVFSeU5nSkVJQUFnQUNrRE9DQURmRGNET0VKL0lBTWdBMUFiRHdzZ0F5QUVmQ0VESUFFZ0JIMGlBVUlBVlEwQUN3c2dBQ0FBS1FNNElBTjhOd000SUFNTG13RUJCWDlCQVNBQ0tBSUlJZ2NnQjBFQlRSc2hCQ0FDS0FJRUlnTWdBaWdDQUdzaEJnTkFJQVFpQlVFQmRDRUVJQVVnQm1zZ0FVa05BQXNnQlNBSFJ3UkFJQVVRRkNJRFJRUkFRWDhQQ3lBQ0tBSUFJZ1FFUUNBRElBUWdCaEFTR2lBQ0tBSUFFQkFMSUFJZ0JUWUNDQ0FDSUFNMkFnQWdBaUFESUFacUlnTTJBZ1FMSUFNZ0FDQUJFQklhSUFJZ0FpZ0NCQ0FCYWpZQ0JDQUJDMFlCQW44Z0FpZ0NBQ0FDS0FJSWFpSUVJQUlvQWdRaUEwWUVRRUYvRHdzZ0FDQURJQVFnQTJzaUFDQUJJQUFnQVVrYklnQVFFaG9nQWlBQ0tBSUVJQUJxTmdJRUlBQUxxZ0lCQkg4akFFRVFheUlFSkFBQ1FDQUFLQUowRFFBZ0FrRUJUUVJBSUFOQkFVSDd3Z0JCQUJBUERBRUxJQUVnQkVFTWFrRUNFQkVnQkNnQ0RDSUdRZi8vQTNFaUIwVUVRQ0FEUVFGQm5NTUFRUUFRRHd3QkN5QUNJQWRCQm14QkFtcEpCRUFnQTBFQlFmdkNBRUVBRUE4TUFRc2dCa0VHYkJBVUlnTkZEUUFnQUVFSUVCUWlBallDZENBQ1JRUkFJQU1RRUF3QkN5QUNJQU0yQWdBZ0FpQUVMd0VNSWdJN0FRUWdBa1VFUUVFQklRVU1BUXRCQUNFQ0EwQWdBVUVDYWlBRVFReHFJZ1ZCQWhBUklBTWdBa0VHYkdvaUJpQUVLQUlNT3dFQUlBRkJCR29nQlVFQ0VCRWdCaUFFS0FJTU93RUNJQUZCQm1vaUFTQUZRUUlRRVNBR0lBUW9BZ3c3QVFSQkFTRUZJQUpCQVdvaUFpQUFLQUowTHdFRVNRMEFDd3NnQkVFUWFpUUFJQVVMOEFFQkJYOGpBRUVRYXlJRUpBQUNmeUFBS0FKNElnVkZCRUFnQTBFQlFjM0NBRUVBRUE5QkFBd0JDeUFGS0FJTUJFQWdBMEVCUWR2VkFFRUFFQTlCQUF3QkN5QUNJQVV0QUJJaUJVRUNkQ0lHU1FSQUlBTkJBVUdzd2dCQkFCQVBRUUFNQVF0QkFDQUdFQlFpQWtVTkFCb2dCUVJBUVFBaEF3TkFJQUVnQkVFTWFpSUhRUUlRRVNBQ0lBTkJBblJxSWdZZ0JDZ0NERHNCQUNBQlFRSnFJQWRCQVJBUklBWWdCQ2dDRERvQUFpQUJRUU5xSUFkQkFSQVJJQVlnQkNnQ0REb0FBeUFCUVFScUlRRWdBMEVCYWlJRElBVkhEUUFMQ3lBQUtBSjRJQUkyQWd4QkFRc2hDQ0FFUVJCcUpBQWdDQXZ3QXdFSmZ5TUFRUkJySWdVa0FBSkFJQUpCQTBrTkFDQUFLQUo0RFFBZ0FTQUZRUXhxUVFJUUVTQUZMd0VNSWdsQmdRaHJRZjkzVFFSQUlBVWdDVFlDQUNBRFFRRkJ0Qm9nQlJBUERBRUxJQUZCQW1vZ0JVRU1ha0VCRUJFZ0JTOEJEQ0lJUlFSQUlBTkJBVUhVRjBFQUVBOE1BUXNnQ0VFRGFpQUNTdzBBSUFnZ0NXeEJBblFRRkNJSFJRMEFJQWdRRkNJS1JRUkFJQWNRRUF3QkN5QUlFQlFpQzBVRVFDQUhFQkFnQ2hBUURBRUxRUlFRRkNJR1JRUkFJQWNRRUNBS0VCQWdDeEFRREFFTElBRkJBMm9oQXlBR0lBbzJBZ2dnQmlBTE5nSUVJQVlnQ1RzQkVDQUdJQWMyQWdBZ0JTZ0NEQ0VNSUFaQkFEWUNEQ0FHSUF3NkFCSWdBQ0FHTmdKNEEwQWdBeUFGUVF4cVFRRVFFU0FFSUFwcUlBVXRBQXhCL3dCeFFRRnFPZ0FBSUFRZ0Myb2dCU2dDREVHQUFYRkJCM1k2QUFBZ0EwRUJhaUVESUFSQkFXb2lCQ0FJUncwQUN5QUpSUVJBUVFFaEJBd0JDMEVBSVFZRFFFRUFJUVJCQUNFQUEwQWdBa0VFSUFRZ0Ntb3RBQUJCQjJwQkEzWWlCQ0FFUVFSUEd5SUVJQU1nQVd0cVNBUkFRUUFoQkF3REN5QURJQVZCREdvZ0JCQVJJQWNnQlNnQ0REWUNBQ0FIUVFScUlRY2dBeUFFYWlFRElBQkJBV29pQUVILy93TnhJZ1FnQ0VrTkFBdEJBU0VFSUFaQkFXb2lCa0gvL3dOeElBbEpEUUFMQ3lBRlFSQnFKQUFnQkF1WUFRRUNmeU1BUVJCcklnVWtBQ0FBS0FJWUlnUkIvd0ZIQkVBZ0JTQUVOZ0lBSUFOQkFrSGtFeUFGRUE4TEFrQUNRQ0FDSUFBb0FoUkdCRUFnQWcwQlFRRWhCQXdDQzBFQUlRUWdBMEVCUWJ2c0FFRUFFQThNQVF0QkFDRUNBMEJCQVNFRUlBRWdBQ2dDU0NBQ1FReHNha0VJYWtFQkVCRWdBVUVCYWlFQklBSkJBV29pQWlBQUtBSVVTUTBBQ3dzZ0JVRVFhaVFBSUFRTGpnWUJCbjhqQUVIUUFHc2lCQ1FBQWtBZ0FrRUNUUVJBSUFOQkFVR2I3QUJCQUJBUERBRUxJQUF0QUh3RVFDQURRUVJCN3RJQVFRQVFEMEVCSVFZTUFRdEJBU0VHSUFFZ0FFRW9ha0VCRUJFZ0FVRUJhaUFBUVRScVFRRVFFU0FCUVFKcUlBQkJMR3BCQVJBUklBRkJBMm9oQlFKQUFrQUNRQUpBQWtBZ0FDZ0NLQ0lIUVFGckRnSUFBUUlMSUFKQkJrMEVRQ0FFSUFJMkFoQWdBMEVCUWNEeEFDQUVRUkJxRUE5QkFDRUdEQVVMQWtBZ0FrRUhSZzBBSUFBb0FqQkJEa1lOQUNBRUlBSTJBakFnQTBFQ1FjRHhBQ0FFUVRCcUVBOExJQVVnQUVFd2FrRUVFQkVnQUNnQ01FRU9SdzBEUVNRUUZDSUZSUVJBUVFBaEJpQURRUUZCc3p4QkFCQVBEQVVMSUFWQkRqWUNBQ0FFUVFBMkFrQWdCRUVBTmdJNElBUkJBRFlDU0NBRVFRQTJBandnQkVFQU5nSkVJQVJCQURZQ1RFR3c2cEFDSVFZZ0JFR3c2cEFDTmdJMElBVkJnSXlWb2dRMkFnUUNmeUFDUVFkSEJFQWdBa0VqUmdSQUlBRkJCMm9nQkVITUFHcEJCQkFSSUFGQkMyb2dCRUhJQUdwQkJCQVJJQUZCRDJvZ0JFSEVBR3BCQkJBUklBRkJFMm9nQkVGQWEwRUVFQkVnQVVFWGFpQUVRVHhxUVFRUUVTQUJRUnRxSUFSQk9HcEJCQkFSSUFGQkgyb2dCRUUwYWtFRUVCRWdCVUVBTmdJRUlBUW9BalFoQmlBRUtBSTRJUUlnQkNnQ1FDRURJQVFvQWp3aEJ5QUVLQUpFSVFnZ0JDZ0NUQ0VKSUFRb0FrZ01BZ3NnQkNBQ05nSWdJQU5CQWtIazhRQWdCRUVnYWhBUEMwRUFJUUpCQUNFRFFRQWhCMEVBQ3lFQklBVWdCellDR0NBRklBZzJBaEFnQlNBSk5nSUlJQVVnQmpZQ0lDQUZJQUkyQWh3Z0JTQUROZ0lVSUFVZ0FUWUNEQ0FBUVFBMkFuQWdBQ0FGTmdKc0RBTUxJQUFnQWtFRGF5SUJOZ0p3SUFCQkFTQUJFQk1pQXpZQ2JDQURSUTBCSUFKQkEwd05Ba0VBSVFJRFFDQUZJQVJCekFCcVFRRVFFU0FBS0FKc0lBSnFJQVFvQWt3NkFBQWdCVUVCYWlFRklBSkJBV29pQWlBQlJ3MEFDd3dDQ3lBSFFRTkpEUUlnQkNBSE5nSUFJQU5CQkVIYjl3QWdCQkFQREFJTFFRQWhCaUFBUVFBMkFuQU1BUXRCQVNFR0lBQkJBVG9BZkFzZ0JFSFFBR29rQUNBR0M3UURBUU4vSXdCQklHc2lCQ1FBQWtBZ0FDZ0NTQVJBSUFOQkFrR05OVUVBRUE5QkFTRUNEQUVMSUFKQkRrY0VRRUVBSVFJZ0EwRUJRZnJyQUVFQUVBOE1BUXNnQVNBQVFSQnFRUVFRRVNBQlFRUnFJQUJCREdwQkJCQVJJQUZCQ0dvZ0FFRVVha0VDRUJFZ0FDZ0NEQ0VGQWtBZ0JBSi9JQUFvQWhBaUJrVUVRQ0FBS0FJVURBRUxJQUFvQWhRaUFpQUZSUTBBR2lBQ0RRRkJBQXMyQWdnZ0JDQUdOZ0lFSUFRZ0JUWUNBQ0FEUVFGQjN1b0FJQVFRRDBFQUlRSU1BUXNnQWtHQmdBRnJRZi8vZmswRVFFRUFJUUlnQTBFQlFZanFBRUVBRUE4TUFRc2dBQ0FDUVF3UUV5SUNOZ0pJSUFKRkJFQkJBQ0VDSUFOQkFVR3Q2Z0JCQUJBUERBRUxRUUVoQWlBQlFRcHFJQUJCR0dwQkFSQVJJQUZCQzJvZ0FFRWNha0VCRUJFZ0FDZ0NIQ0lGUVFkSEJFQWdCQ0FGTmdJUUlBTkJCRUdkK2dBZ0JFRVFhaEFQQ3lBQlFReHFJQUJCSUdwQkFSQVJJQUZCRFdvZ0FFRWtha0VCRUJFZ0FDZ0NBQ0lCSUFFdEFMd0JRZnNCY1NBQUtBSVlRZjhCUmtFQ2RISTZBTHdCSUFBb0FnQWlBU0FBS0FJTU5nTFlBU0FCSUFBb0FoQTJBdHdCSUFCQkFUb0FoUUVMSUFSQklHb2tBQ0FDQzdvRUFRWi9Jd0JCRUdzaUJpUUFBbjhnQUMwQVpFRUNjVVVFUUNBRFFRRkJrZFFBUVFBUUQwRUFEQUVMSUFCQkFEWUNhQUpBQWtBQ1FDQUNCRUFEUUNBQ1FRZE5CRUFnQTBFQlFia1pRUUFRRHd3RkN5QUJJQVpCREdvaUJVRUVFQkVnQmlnQ0RDRUVJQUZCQkdvZ0JVRUVFQkZCQ0NFSElBWW9BZ3doQlFKQUFrQUNRQUpBSUFRT0FnRUFBd3NnQWtFUVNRUkFRZUVaSVFRTUJ3c2dBVUVJYWlBR1FRaHFRUVFRRVNBR0tBSUlCRUJCeWo4aEJBd0hDeUFCUVF4cUlBWkJER3BCQkJBUklBWW9BZ3dpQkEwQlFiSVlJUVFNQmdzZ0EwRUJRYklZUVFBUUR3d0dDMEVRSVFjTElBUWdCMGtFUUNBRFFRRkJoY1VBUVFBUUR3d0ZDeUFDSUFSSkJFQWdBMEVCUWIzRUFFRUFFQTlCQUF3R0N3SkFBa0FnQUNBQklBZHFJQVFnQjJzZ0F3Si9Ba0FDUUFKQUlBVkI4ZGk5bXdaTUJFQWdCVUhqeHNHVEJrWU5BU0FGUWViS2tac0dSZzBESUFWQjhNSzFtd1pIRFFWQjRNQUJEQVFMSUFWQjh0aU5nd2RHRFFGQndNQUJJQVZCOHNpaHl3WkdEUU1hSUFWQjh0aTltd1pIRFFSQnlNQUJEQU1MUWREQUFRd0NDMEhZd0FFTUFRdEI2TUFCQ3lnQ0JCRUJBQTBCUVFBTUJ3c2dBQ0FBS0FKb1FmLy8vLzhIY2pZQ2FBdEJBU0FJSUFWQjhzaWh5d1pHR3lFSUlBRWdCR29oQVNBQ0lBUnJJZ0lOQUFzZ0NBMEJDeUFEUVFGQjJjTUFRUUFRRDBFQURBTUxJQUJCQVRvQWhBRWdBQ0FBS0FKa1FRUnlOZ0prUVFFTUFnc2dBMEVCSUFSQkFCQVBDeUFEUVFGQm5nNUJBQkFQUVFBTElRa2dCa0VRYWlRQUlBa0w0Z0VCQVg4Z0FDZ0NaRUVCUndSQUlBTkJBVUcrMUFCQkFCQVBRUUFQQ3dKQUlBSkJCMDBFUUF3QkN5QUJJQUJCT0dwQkJCQVJJQUZCQkdvZ0FFRThha0VFRUJFZ0FrRURjUVJBREFFTElBQWdBa0VJYXlJQ1FRSjJJZ1EyQWtBQ1FDQUNSUTBBSUFBZ0JFRUVFQk1pQWpZQ1JDQUNSUVJBSUFOQkFVR3BFRUVBRUE5QkFBOExJQUFvQWtCRkRRQWdBVUVJYWlFRFFRQWhBZ05BSUFNZ0FDZ0NSQ0FDUVFKMGFrRUVFQkVnQTBFRWFpRURJQUpCQVdvaUFpQUFLQUpBU1EwQUN3c2dBQ0FBS0FKa1FRSnlOZ0prUVFFUEN5QURRUUZCcWkxQkFCQVBRUUFMeEFFQkFuOGdBQ0FBS0FJZ0lnUTJBaVFDUUNBQUtBSXdJZ01FUUFOQUlBUWdBeUFBS0FJQUlBQW9BaFFSQUFBaUEwRi9SZzBDSUFBZ0FDZ0NKQ0FEYWlJRU5nSWtJQUFnQUNnQ01DQURheUlETmdJd0lBTU5BQXNnQUNnQ0lDRUVDeUFBUVFBMkFqQWdBQ0FFTmdJa0lBRWdBQ2dDQUNBQUtBSWNFUW9BUlFSQUlBQWdBQ2dDUkVFSWNqWUNSRUVBRHdzZ0FDQUJOd000UVFFUEN5QUFJQUFvQWtSQkNISTJBa1FnQWtFRVFZSDFBRUVBRUE4Z0FDQUFLQUpFUVFoeU5nSkVRUUFMZ2dFQkFuOGpBRUVRYXlJRUpBQUNmeUFBS0FKa0JFQWdBMEVCUWR2VEFFRUFFQTlCQUF3QkN5QUNRUVJIQkVBZ0EwRUJRYzR0UVFBUUQwRUFEQUVMSUFFZ0JFRU1ha0VFRUJFZ0JDZ0NERUdLanFyb0FFY0VRQ0FEUVFGQjlpVkJBQkFQUVFBTUFRc2dBQ0FBS0FKa1FRRnlOZ0prUVFFTElRVWdCRUVRYWlRQUlBVUxEUUFnQUNnQ0FDQUJJQUlRUlFzSkFDQUFLQUlBRUVvTENRQWdBQ2dDQUJCSkN3MEFJQUFvQWdBZ0FTQUNFRXdMUVFFQmZ5QUNCSDhnQTBFQ1FkdkxBRUVBRUE4Z0FDZ0NBQ0FCSUFJZ0F5QUVFRVpGQkVBZ0EwRUJRYWt2UVFBUUQwRUFEd3NnQUNBQ0lBTVFjUVZCQUFzTEZRQWdBQ2dDQUNBQklBSWdBeUFFSUFVZ0JoQk9DdzhBSUFBb0FnQWdBU0FDSUFNUVR3c1RBQ0FBS0FJQUlBRWdBaUFESUFRZ0JSQXJDeDBBSUFBb0FnQWdBU0FDSUFNZ0JDQUZJQVlnQnlBSUlBa2dDaEFuQytvRUFRZC9Ba0FnQVNnQ0NFRTFJQU1RSkVVTkFDQUJLQUlFSWdjb0FnQWhCU0FIS0FJSUlRUUNRQ0FGQkVCQkFTRUdJQVZCQVVjRVFDQUZRWDV4SVFvRFFBSi9RUUFnQmtVTkFCcEJBQ0FCSUFBZ0F5QUVLQUlBRVFBQVJRMEFHaUFCSUFBZ0F5QUVLQUlFRVFBQVFRQkhDeUVHSUFSQkNHb2hCQ0FKUVFKcUlna2dDa2NOQUFzTEFrQWdCVUVCY1FSQUlBWkZEUUVnQVNBQUlBTWdCQ2dDQUJFQUFFRUFSeUVHQ3lBSFFRQTJBZ0FnQmtVTkF3d0NDeUFIUVFBMkFnQkJBQThMSUFkQkFEWUNBQXNnQVNnQ0NDSUhLQUlBSVFVZ0J5Z0NDQ0VFQWtBQ1FBSi9Ba0FnQlFSQVFRRWhCaUFGUVFGeElRZ2dCVUVCUncwQlFRQU1BZ3NnQjBFQU5nSUFEQUlMSUFWQmZuRWhCVUVBSVFrRFFBSi9RUUFnQmtVTkFCcEJBQ0FCSUFBZ0F5QUVLQUlBRVFBQVJRMEFHaUFCSUFBZ0F5QUVLQUlFRVFBQVFRQkhDeUVHSUFSQkNHb2hCQ0FKUVFKcUlna2dCVWNOQUFzZ0JrVUxJUVVnQ0FSQUlBVU5BaUFCSUFBZ0F5QUVLQUlBRVFBQVFRQkhJUVlMSUFkQkFEWUNBRUVBSVFnZ0JrVU5BZ3NnQVMwQWhBRkZCRUFnQTBFQlFiM1dBRUVBRUE5QkFBOExJQUV0QUlVQlJRUkFJQU5CQVVHZzFnQkJBQkFQUVFBUEN5QUFJQUVvQWdBZ0FpQURFRkFoQ0NBQ1JRMEJJQUlvQWdBaUFFVU5BVUVCSVFRQ1FBSkFBa0FDUUFKQUFrQWdBU2dDTUVFTWF3NE5Bd1FFQkFVQUFRUUVCQVFFQWdRTFFRSWhCQXdFQzBFRElRUU1Bd3RCQkNFRURBSUxRUVVoQkF3QkMwRi9JUVFMSUFBZ0JEWUNGQ0FCS0FKc0lnTkZEUUVnQUNBRE5nSWNJQUlvQWdBZ0FTZ0NjRFlDSUNBQlFRQTJBbXdnQ0E4TElBZEJBRFlDQUVFQUlRZ0xJQWdMNUFrQ0NuOEJmaU1BUWZBQWF5SURKQUJCZ0FnaENBSi9Ba0JCQVVHQUNCQVRJZ1lFUUNBRFFkd0FhaUVMSUFOQjdBQnFJUWtEUUFKQUFrQUNRQ0FCSUFOQjZBQnFJZ1JCQ0NBQ0VCcEJDRWNOQUNBRUlBTkIyQUJxUVFRUUVTQUpJQXRCQkJBUlFRZ2hCUUpBQWtBQ1FBSkFBa0FnQXlnQ1dBNENBQUVFQ3lBQktRTUlJZzFRQkg1Q0FBVWdEU0FCS1FNNGZRc2lEVUw0Ly8vL0QxTU5BU0FDUVFGQnlqOUJBQkFQREFRTElBRWdBMEhvQUdvaUJFRUlJQUlRR2tFSVJ3MERJQVFnQTBIa0FHcEJCQkFSSUFNb0FtUkZEUUVnQWtFQlFjby9RUUFRRHd3REN5QURJQTJuUVFocU5nSllEQUVMSUFrZ0EwSFlBR3BCQkJBUlFSQWhCUXNnQXlnQ1hDSUVRZVBrd05NR1JnUkFJQUFvQW1RaUFVRUVjUVJBSUFBZ0FVRUljallDWkF3Q0N5QUNRUUZCclN0QkFCQVBJQVlRRUVFQURBY0xJQU1vQWxnaUIwVUVRQ0FDUVFGQnNoaEJBQkFQSUFZUUVFRUFEQWNMSUFVZ0Iwc0VRQ0FESUFRMkFnUWdBeUFITmdJQUlBSkJBVUg2NXdBZ0F4QVBEQVlMQWtBQ2Z3Si9Ba0FDZndKQUFrQUNRQUpBQWtBZ0JFSHgyTDJiQmt3RVFDQUVRZVBHd1pNR1JnMENJQVJCNXNxUm13WkdEUVFnQkVId3dyV2JCa2NOQVVIZ3dBRU1CZ3NnQkVHZndNRFNCa3dFUUNBRVFmTFl2WnNHUmcwRlFjREFBU0FFUWZMSW9jc0dSZzBHR2lBRVFmRHkwYk1HUncwQlFhakFBUXdJQ3lBRVFmTFlqWU1IUmcwQ0lBUkJvTURBMGdaR0RRWkJzTUFCSUFSQjZPVEEwd1pHRFFjYUN5QUFLQUprSWdSQkFYRU5DQ0FDUVFGQi9BNUJBQkFQSUFZUUVFRUFEQThMUWREQUFRd0RDMEhZd0FFTUFndEI2TUFCREFFTFFjakFBUXNoQ2lBRElBUkIvd0Z4TmdKTUlBTWdCRUVZZGpZQ1FDQURJQVJCQ0haQi93RnhOZ0pJSUFNZ0JFRVFka0gvQVhFMkFrUWdBa0VDUWNrT0lBTkJRR3NRRHlBSElBVnJJZ1VnQUMwQVpFRUVjUTBDR2lBRElBTW9BbHdpQkVFWWRqWUNNQ0FESUFSQi93RnhOZ0k4SUFNZ0JFRVFka0gvQVhFMkFqUWdBeUFFUVFoMlFmOEJjVFlDT0NBQ1FRSkIyak1nQTBFd2FoQVBJQUFnQUNnQ1pFSC8vLy8vQjNJMkFtUWdBU0FGclNJTklBSWdBU2dDS0JFSUFDQU5VUTBISUFKQkFVR1NIRUVBRUE4Z0JoQVFRUUFNQ2d0Qm9NQUJDeUVLSUFjZ0JXc0xJUVVnQVNrRENDSU5VQVIrUWdBRklBMGdBU2tET0gwTElBV3RVd1JBSUFNb0FsZ2hCQ0FES0FKY0lRQWdBeUFCS1FNSUlnMVFCSDVDQUFVZ0RTQUJLUU00ZlFzK0FpZ2dBeUFGTmdJa0lBTWdBRUgvQVhFMkFpQWdBeUFBUVJoMk5nSVVJQU1nQkRZQ0VDQURJQUJCQ0haQi93RnhOZ0ljSUFNZ0FFRVFka0gvQVhFMkFoZ2dBa0VCUWMzMUFDQURRUkJxRUE4TUJ3c2dCU0FJVFFSQUlBWWhCQXdFQ3lBRklRZ2dCaUFGRUJjaUJBMERJQVlRRUNBQ1FRRkIvdzlCQUJBUFFRQU1Cd3NnQkVFQ2NVVUVRQ0FDUVFGQndnOUJBQkFQSUFZUUVFRUFEQWNMSUFBZ0JFSC8vLy8vQjNJMkFtUWdBU0FISUFWcnJTSU5JQUlnQVNnQ0tCRUlBQ0FOVVEwRElBQXRBR1JCQ0hGRkRRRWdBa0VDUVpJY1FRQVFEd3NnQmhBUVFRRU1CUXNnQWtFQlFaSWNRUUFRRHlBR0VCQkJBQXdFQ3lBQklBUWdCU0FDRUJvZ0JVY0VRQ0FDUVFGQnhCeEJBQkFQSUFRUUVFRUFEQVFMSUFBZ0JDSUdJQVVnQWlBS0tBSUVFUUVBRFFBTElBUVFFRUVBREFJTElBSkJBVUdpSlVFQUVBOUJBQXdCQ3lBR0VCQkJBQXNoRENBRFFmQUFhaVFBSUF3TDVnRUJCbjhnQUNnQ0NFRTFJQUlRSkFSQUFrQWdBQ2dDQ0NJR0tBSUFJUU1nQmlnQ0NDRUZBa0FDUUFKL0FrQWdBd1JBUVFFaEJDQURRUUZ4SVFjZ0EwRUJSdzBCUVFBTUFnc2dCa0VBTmdJQURBSUxJQU5CZm5FaEF3TkFBbjlCQUNBRVJRMEFHa0VBSUFBZ0FTQUNJQVVvQWdBUkFBQkZEUUFhSUFBZ0FTQUNJQVVvQWdRUkFBQkJBRWNMSVFRZ0JVRUlhaUVGSUFoQkFtb2lDQ0FEUncwQUN5QUVSUXNoQXlBSEJFQWdBdzBDSUFBZ0FTQUNJQVVvQWdBUkFBQkJBRWNoQkFzZ0JrRUFOZ0lBSUFSRkRRSUxJQUFvQWdBYVFRRVBDeUFHUVFBMkFnQUxDMEVBQ3dvQUlBQW9BZ0FhUVFBTEZBQWdBQ2dDQUNJQUJFQWdBQ0FCTmdLNEFRc0xJUUFnQUNnQ0FDQUJFRk1nQUVFQU9nQjhJQUFnQVNnQ3VFQkJBWEUyQW9BQkN6SUFJQUpGQkVCQkFBOExJQUFvQWdBZ0FTQUNJQU1RU0VVRVFDQURRUUZCcVM5QkFCQVBRUUFQQ3lBQUlBSWdBeEJ4QzJrQ0FuOEJmQ01BUVJCcklnTWtBQ0FDQkVBRFFDQUFJQU5CQ0dvUVJDQUJBbjhnQXlzRENDSUZtVVFBQUFBQUFBRGdRV01FUUNBRnFnd0JDMEdBZ0lDQWVBczJBZ0FnQVVFRWFpRUJJQUJCQ0dvaEFDQUVRUUZxSWdRZ0FrY05BQXNMSUFOQkVHb2tBQXVFQVFJQ2Z3RjlJd0JCRUdzaUF5UUFJQUlFUUFOQUlBTWdBQzBBQURvQUR5QURJQUF0QUFFNkFBNGdBeUFBTFFBQ09nQU5JQU1nQUMwQUF6b0FEQ0FCQW44Z0F5b0NEQ0lGaTBNQUFBQlBYUVJBSUFXb0RBRUxRWUNBZ0lCNEN6WUNBQ0FCUVFScUlRRWdBRUVFYWlFQUlBUkJBV29pQkNBQ1J3MEFDd3NnQTBFUWFpUUFDMHNCQW44akFFRVFheUlESkFBZ0FnUkFBMEFnQUNBRFFReHFRUVFRRVNBQklBTW9BZ3cyQWdBZ0FVRUVhaUVCSUFCQkJHb2hBQ0FFUVFGcUlnUWdBa2NOQUFzTElBTkJFR29rQUF0TEFRSi9Jd0JCRUdzaUF5UUFJQUlFUUFOQUlBQWdBMEVNYWtFQ0VCRWdBU0FES0FJTU5nSUFJQUZCQkdvaEFTQUFRUUpxSVFBZ0JFRUJhaUlFSUFKSERRQUxDeUFEUVJCcUpBQUxTZ0VDZnlNQVFSQnJJZ01rQUNBQ0JFQURRQ0FBSUFOQkNHb1FSQ0FCSUFNckF3aTJPQUlBSUFGQkJHb2hBU0FBUVFocUlRQWdCRUVCYWlJRUlBSkhEUUFMQ3lBRFFSQnFKQUFMYUFFQ2Z5TUFRUkJySWdNa0FDQUNCRUFEUUNBRElBQXRBQUE2QUE4Z0F5QUFMUUFCT2dBT0lBTWdBQzBBQWpvQURTQURJQUF0QUFNNkFBd2dBU0FES2dJTU9BSUFJQUZCQkdvaEFTQUFRUVJxSVFBZ0JFRUJhaUlFSUFKSERRQUxDeUFEUVJCcUpBQUxUQUVDZnlNQVFSQnJJZ01rQUNBQ0JFQURRQ0FBSUFOQkRHcEJCQkFSSUFFZ0F5Z0NETE00QWdBZ0FVRUVhaUVCSUFCQkJHb2hBQ0FFUVFGcUlnUWdBa2NOQUFzTElBTkJFR29rQUF0TUFRSi9Jd0JCRUdzaUF5UUFJQUlFUUFOQUlBQWdBMEVNYWtFQ0VCRWdBU0FES0FJTXN6Z0NBQ0FCUVFScUlRRWdBRUVDYWlFQUlBUkJBV29pQkNBQ1J3MEFDd3NnQTBFUWFpUUFDNm9JQWcxL0FYc2pBRUVRYXlJSUpBQUNmeUFBS0FJSVFSQkdCRUFnQUNnQ25BRWdBQ2dDekFGQmpDeHNhZ3dCQ3lBQUtBSU1DeUVKQWtBZ0FrVUVRQ0FEUVFGQjhCOUJBQkFQREFFTElBQW9Ba2doQmtFQklRUWdBU0FJUVFocVFRRVFFU0FJS0FJSUlnVkJBazhFUUNBRFFRSkJ4c2dBUVFBUUR3d0JDeUFDSUFWQkFXcEhCRUJCQUNFRUlBTkJBa0h3SDBFQUVBOE1BUXNDUUNBR0tBSVFJZ05GRFFBZ0NTZ0MwQ3NoQkNBRFFRaFBCRUFnQTBGNGNTRUdRUUFoQWdOQUlBUkJBRFlDdkVNZ0JFRUFOZ0tFT3lBRVFRQTJBc3d5SUFSQkFEWUNsQ29nQkVFQU5nTGNJU0FFUVFBMkFxUVpJQVJCQURZQzdCQWdCRUVBTmdLMENDQUVRY0REQUdvaEJDQUNRUWhxSWdJZ0JrY05BQXNMSUFOQkIzRWlBMFVOQUVFQUlRSURRQ0FFUVFBMkFyUUlJQVJCdUFocUlRUWdBa0VCYWlJQ0lBTkhEUUFMQ3lBSktBTG9LeUlDQkg4Z0FoQVFJQWxCQURZQzZDc2dDQ2dDQ0FVZ0JRdEZCRUJCQVNFRURBRUxBMEFnQVVFQmFpSUJJQWhCREdwQkFSQVJBa0FnQ1NnQ2dDeEZEUUFnQ1NnQy9Dc2lBeWdDQUNBSUtBSU1SdzBBSUFNb0FnUWlCU0FBS0FKSUlnWW9BaEJIRFFBZ0F5Z0NDQ0lDQkVCQkFDRUVJQUlvQWhBZ0JTQUZiQ0lGSUFJb0FnQkJBblJCMEwwQmFpZ0NBR3hIRFFNZ0NTQUZRUUowRUJRaUJ6WUM2Q3NnQjBVTkF5QUNLQUlNSUFjZ0JTQUNLQUlBUVFKMFFZREFBV29vQWdBUkJRQUxJQU1vQWd3aUFrVU5BRUVBSVFRZ0FpZ0NFQ0FHS0FJUUlnTWdBaWdDQUVFQ2RFSFF2UUZxS0FJQWJFY05BaUFEUVFKMEVCUWlCVVVOQWlBQ0tBSU1JQVVnQXlBQ0tBSUFRUUowUVpEQUFXb29BZ0FSQlFBQ1FDQUdLQUlRSWdkRkRRQWdDU2dDMENzaEJFRUFJUXNDUUFKQUlBZEJCRWtOQUNBRVFiUUlhaUlNSUFVZ0IwRUNkR3BKQkVBZ0JTQUVJQWRCdUFoc2Fra05BUXNnQkVIY0lXb2hEU0FFUWFRWmFpRU9JQVJCN0JCcUlROGdCU0FIUVh4eElnWkJBblJxSVFJZ0JDQUdRYmdJYkdvaEJFRUFJUU1EUUNBTUlBTkJ1QWhzSWdwcUlBVWdBMEVDZEdyOUFBSUFJaEg5V2dJQUFDQUtJQTlxSUJIOVdnSUFBU0FLSUE1cUlCSDlXZ0lBQWlBS0lBMXFJQkg5V2dJQUF5QURRUVJxSWdNZ0JrY05BQXNnQmlBSFJnMENEQUVMSUFVaEFrRUFJUVlMSUFjZ0JpSURhMEVIY1NJS0JFQURRQ0FFSUFJb0FnQTJBclFJSUFOQkFXb2hBeUFFUWJnSWFpRUVJQUpCQkdvaEFpQUxRUUZxSWdzZ0NrY05BQXNMSUFZZ0IydEJlRXNOQUFOQUlBUWdBaWdDQURZQ3RBZ2dCQ0FDS0FJRU5nTHNFQ0FFSUFJb0FnZzJBcVFaSUFRZ0FpZ0NERFlDM0NFZ0JDQUNLQUlRTmdLVUtpQUVJQUlvQWhRMkFzd3lJQVFnQWlnQ0dEWUNoRHNnQkNBQ0tBSWNOZ0s4UXlBRVFjRERBR29oQkNBQ1FTQnFJUUlnQTBFSWFpSURJQWRIRFFBTEN5QUZFQkFMUVFFaEJDQVFRUUZxSWhBZ0NDZ0NDRWtOQUFzTElBaEJFR29rQUNBRUN3UUFRbjhMdndrQkMzOGpBRUVRYXlJRkpBQUNmeUFBS0FJSVFSQkdCRUFnQUNnQ25BRWdBQ2dDekFGQmpDeHNhZ3dCQ3lBQUtBSU1DeUVIQW44Z0FrRUJUUVJBSUFOQkFVSFlJMEVBRUE5QkFBd0JDeUFCSUFWQkRHcEJBaEFSSUFVb0Fnd0VRQ0FEUVFKQjhDeEJBQkFQUVFFTUFRc2dBa0VHVFFSQUlBTkJBVUhZSTBFQUVBOUJBQXdCQ3lBQlFRSnFJQVZCQ0dwQkFSQVJJQWNvQXZ3cklna2hBQUpBQWtBQ1FDQUhLQUtBTENJR1JRMEFJQVVvQWdnaENBTkFJQUFvQWdBZ0NFWU5BU0FBUVJScUlRQWdCRUVCYWlJRUlBWkhEUUFMREFFTElBUWdCa2NOQVFzZ0J5Z0NoQ3dnQmtZRWZ5QUhJQVpCQ21vaUFEWUNoQ3dnQ1NBQVFSUnNFQmNpQUVVRVFDQUhLQUw4S3hBUUlBZEJBRFlDaEN3Z0IwSUFOd0w4S3lBRFFRRkI4aU5CQUJBUFFRQU1Bd3NnQnlBQU5nTDhLeUFBSUFjb0FvQXNJZ1JCRkd4cVFRQWdCeWdDaEN3Z0JHdEJGR3dRRlJvZ0J5Z0MvQ3NoQ1NBSEtBS0FMQVVnQmd0QkZHd2dDV29oQUVFQklRc0xJQUFnQlNnQ0NEWUNBQ0FCUVFOcUlBVkJER3BCQWhBUklBVW9BZ3dFUUNBRFFRSkI4Q3hCQUJBUFFRRU1BUXNnQVVFRmFpQUZRUVJxUVFJUUVTQUZLQUlFSWdSQkFrOEVRQ0FEUVFKQnFCZEJBQkFQUVFFTUFRc2dBa0VIYXlFR0lBUUVRQ0FCUVFkcUlRSkJBQ0VKQTBBZ0JrRUNUUVJBSUFOQkFVSFlJMEVBRUE5QkFBd0RDeUFDSUFWQkRHcEJBUkFSSUFVb0FneEJBVWNFUUNBRFFRSkJzaXBCQUJBUFFRRU1Bd3NnQWtFQmFpQUZRUUlRRVNBQUlBVW9BZ0FpQkVILy93RnhJZ0UyQWdRZ0JrRURheUlJSUFSQkQzWkJBV29pQmlBQmJFRUNhaUlLU1FSQUlBTkJBVUhZSTBFQUVBOUJBQXdEQ3lBQ1FRTnFJUUpCQUNFRUlBRUVRQU5BSUFJZ0JVRU1haUFHRUJFZ0JDQUZLQUlNUndSQUlBTkJBa0hhTDBFQUVBOUJBUXdGQ3lBQ0lBWnFJUUlnQkVFQmFpSUVJQUFvQWdSSkRRQUxDeUFDSUFWQkFoQVJJQVVnQlNnQ0FDSUVRZi8vQVhFaUFUWUNBQ0FBS0FJRUlBRkhCRUFnQTBFQ1FkZ1lRUUFRRDBFQkRBTUxJQWdnQ21zaUNpQUVRUTkyUVFGcUlnWWdBV3hCQTJvaURFa0VRQ0FEUVFGQjJDTkJBQkFQUVFBTUF3c2dBa0VDYWlFQ1FRQWhCQ0FCQkVBRFFDQUNJQVZCREdvZ0JoQVJJQVFnQlNnQ0RFY0VRQ0FEUVFKQjJpOUJBQkFQUVFFTUJRc2dBaUFHYWlFQ0lBUkJBV29pQkNBQUtBSUVTUTBBQ3dzZ0FpQUZRUXhxUVFNUUVTQUZLQUlNSVFZZ0FFSUFOd0lJSUFBZ0JrR0FnQVJ4UlNBQUxRQVFRZjRCY1hJNkFCQWdCU0FHUWY4QmNTSUlOZ0lJQWtBZ0NFVU5BQ0FIS0FMMEt5SU5CRUFnQnlnQzhDc2hCRUVBSVFFRFFDQUlJQVFvQWdoR0JFQWdBQ0FFTmdJSURBTUxJQVJCRkdvaEJDQUJRUUZxSWdFZ0RVY05BQXNMSUFOQkFVSFlJMEVBRUE5QkFBd0RDeUFGSUFaQkNIWkIvd0Z4SWdZMkFnZ0NRQ0FHUlEwQUlBY29BdlFySWdnRVFDQUhLQUx3S3lFRVFRQWhBUU5BSUFZZ0JDZ0NDRVlFUUNBQUlBUTJBZ3dNQXdzZ0JFRVVhaUVFSUFGQkFXb2lBU0FJUncwQUN3c2dBMEVCUWRnalFRQVFEMEVBREFNTElBb2dER3NoQmlBQ1FRTnFJUUlnQ1VFQmFpSUpJQVVvQWdSSkRRQUxDeUFHQkVBZ0EwRUJRZGdqUVFBUUQwRUFEQUVMUVFFZ0MwVU5BQm9nQnlBSEtBS0FMRUVCYWpZQ2dDeEJBUXNoRGlBRlFSQnFKQUFnRGd2MUFRRUZmeU1BUVJCcklnUWtBQUpBSUFJZ0FDZ0NTQ2dDRUNJR1FRSnFSd1JBSUFOQkFVSHdJa0VBRUE4TUFRc2dBU0FFUVF4cVFRSVFFU0FHSUFRb0FneEhCRUFnQTBFQlFmQWlRUUFRRHd3QkN5QUdSUVJBUVFFaEJRd0JDeUFCUVFKcUlRSWdBQ2dDU0NnQ0dDRUFRUUFoQVFOQUlBSWdCRUVJYWtFQkVCRWdBQ0FFS0FJSUlnVkIvd0J4SWdkQkFXb2lDRFlDR0NBQUlBVkJCM1pCQVhFMkFpQWdCMEVmVHdSQUlBUWdDRFlDQkNBRUlBRTJBZ0FnQTBFQlFiZnpBQ0FFRUE5QkFDRUZEQUlMSUFCQk5Hb2hBRUVCSVFVZ0FrRUJhaUVDSUFGQkFXb2lBU0FHUncwQUN3c2dCRUVRYWlRQUlBVUxtQVVCQ244akFFRVFheUlISkFBQ2Z5QUFLQUlJUVJCR0JFQWdBQ2dDbkFFZ0FDZ0N6QUZCakN4c2Fnd0JDeUFBS0FJTUN5RUZBbjhnQWtFQlRRUkFJQU5CQVVIeEhrRUFFQTlCQUF3QkN5QUJJQWRCREdwQkFoQVJBa0FnQnlnQ0RBUkFJQU5CQWtHR0cwRUFFQThNQVFzZ0FrRUdUUVJBSUFOQkFVSHhIa0VBRUE5QkFBd0NDeUFCUVFKcUlBZEJER3BCQWhBUklBVW9BdkFySVFRZ0J5MEFEQ0VLQWtBQ1FBSkFJQVVvQXZRcklnWkZCRUFnQkNFQURBRUxJQVFoQUFOQUlBQW9BZ2dnQ2tZTkFTQUFRUlJxSVFBZ0NFRUJhaUlJSUFaSERRQUxEQUVMSUFZZ0NFY05BUXNnQlNnQytDc2dCa1lFUUNBRklBWkJDbW9pQURZQytDc2dCQ0FBUVJSc0VCY2hBQ0FGS0FMd0t5RUVJQUJGQkVBZ0JCQVFJQVZCQURZQytDc2dCVUlBTndMd0t5QURRUUZCaXg5QkFCQVBRUUFNQkFzQ1FDQUFJQVJHRFFBZ0JTZ0NnQ3dpQzBVTkFDQUZLQUw4S3lFTVFRQWhDQU5BSUF3Z0NFRVViR29pQmlnQ0NDSUpCRUFnQmlBQUlBa2dCR3RxTmdJSUN5QUdLQUlNSWdrRVFDQUdJQUFnQ1NBRWEybzJBZ3dMSUFoQkFXb2lDQ0FMUncwQUN3c2dCU0FBTmdMd0t5QUFJQVVvQXZRcklnUkJGR3hxUVFBZ0JTZ0MrQ3NnQkd0QkZHd1FGUm9nQlNnQzlDc2hCaUFGS0FMd0t5RUVDeUFGSUFaQkFXbzJBdlFySUFRZ0JrRVViR29oQUFzZ0FDZ0NEQ0lFQkVBZ0JCQVFJQUJDQURjQ0RBc2dBQ0FLTmdJSUlBQWdCeWdDRENJRVFRcDJRUU54TmdJQUlBQWdCRUVJZGtFRGNUWUNCQ0FCUVFScUlBZEJER3BCQWhBUklBY29BZ3dFUUNBRFFRSkJ2UlpCQUJBUERBRUxJQUFnQWtFR2F5SUNFQlFpQkRZQ0RDQUVSUVJBSUFOQkFVSHhIa0VBRUE5QkFBd0NDeUFFSUFGQkJtb2dBaEFTR2lBQUlBSTJBaEFMUVFFTElRMGdCMEVRYWlRQUlBMExKd0JCQVNFQklBSWdBQ2dDU0NnQ0VFRUNkRWNFZnlBRFFRRkIxeUZCQUJBUFFRQUZRUUVMQzZzREFRVi9Jd0JCRUdzaUJpUUFBbjhnQWtFQlRRUkFJQU5CQVVIOUhVRUFFQTlCQUF3QkN5QUFMUUM4QVVFQmNRUkFJQU5CQVVHSjNnQkJBQkFQUVFBTUFRc2dBQ2dDbkFFZ0FDZ0N6QUZCakN4c2FpSUFJQUF0QUlnc1FRSnlPZ0NJTENBQklBWkJER3BCQVJBUkFrQWdBQ2dDckNnaUJFVUVRQ0FBSUFZb0FneEJBV29pQlVFSUVCTWlCRFlDckNnZ0JFVUVRQ0FEUVFGQmx4NUJBQkFQUVFBTUF3c2dBQ0FGTmdLb0tBd0JDeUFHS0FJTUlnVWdBQ2dDcUNoSkRRQWdCQ0FGUVFGcUlnUkJBM1FRRnlJRlJRUkFJQU5CQVVHWEhrRUFFQTlCQUF3Q0N5QUFJQVUyQXF3b0lBVWdBQ2dDcUNnaUIwRURkR3BCQUNBRUlBZHJRUU4wRUJVYUlBQWdCRFlDcUNnZ0FDZ0NyQ2doQkFzZ0JDQUdLQUlNSWdWQkEzUnFLQUlBQkVBZ0JpQUZOZ0lBSUFOQkFVRzlOU0FHRUE5QkFBd0JDeUFDUVFGcklnSVFGQ0VFSUFBb0Fxd29JZ0FnQmlnQ0RDSUZRUU4wYWlBRU5nSUFJQVJGQkVBZ0EwRUJRWmNlUVFBUUQwRUFEQUVMSUFBZ0JVRURkR29nQWpZQ0JDQUFJQVlvQWd4QkEzUnFLQUlBSUFGQkFXb2dBaEFTR2tFQkN5RUlJQVpCRUdva0FDQUlDL1VDQVFWL0l3QkJFR3NpQmlRQUFuOGdBa0VCVFFSQUlBTkJBVUdrSUVFQUVBOUJBQXdCQ3lBQUlBQXRBTHdCUVFGeU9nQzhBU0FCSUFaQkRHcEJBUkFSQWtBZ0FDZ0NkQ0lFUlFSQUlBQWdCaWdDREVFQmFpSUZRUWdRRXlJRU5nSjBJQVJGQkVBZ0EwRUJRYjRnUVFBUUQwRUFEQU1MSUFBZ0JUWUNjQXdCQ3lBR0tBSU1JZ1VnQUNnQ2NFa05BQ0FFSUFWQkFXb2lCRUVEZEJBWElnVkZCRUFnQTBFQlFiNGdRUUFRRDBFQURBSUxJQUFnQlRZQ2RDQUZJQUFvQW5BaUIwRURkR3BCQUNBRUlBZHJRUU4wRUJVYUlBQWdCRFlDY0NBQUtBSjBJUVFMSUFRZ0JpZ0NEQ0lGUVFOMGFpZ0NBQVJBSUFZZ0JUWUNBQ0FEUVFGQjB6VWdCaEFQUVFBTUFRc2dBa0VCYXlJQ0VCUWhCQ0FBS0FKMElnQWdCaWdDRENJRlFRTjBhaUFFTmdJQUlBUkZCRUFnQTBFQlFiNGdRUUFRRDBFQURBRUxJQUFnQlVFRGRHb2dBallDQkNBQUlBWW9BZ3hCQTNScUtBSUFJQUZCQVdvZ0FoQVNHa0VCQ3lFSUlBWkJFR29rQUNBSUM2QUJBUVIvSXdCQkVHc2lCQ1FBQW44Z0FrVUVRQ0FEUVFGQjF4NUJBQkFQUVFBTUFRc2dBU0FFUVF4cVFRRVFFVUVCSUFKQkFXc2lCVVVOQUJwQkFDRUFRUUFoQWdOQUlBRkJBV29pQVNBRVFRaHFRUUVRRVNBRUtBSUlJZ1pCR0hSQkgzVWdCa0gvQUhFZ0FuSkJCM1J4SVFJZ0FFRUJhaUlBSUFWSERRQUxRUUVnQWtVTkFCb2dBMEVCUWRjZVFRQVFEMEVBQ3lFSElBUkJFR29rQUNBSEN4c0FRUUVoQUNBQ0JIOUJBUVVnQTBFQlFmNGdRUUFRRDBFQUN3dUFBUUVCZnlNQVFSQnJJZ0FrQUVFQklRUUNRQ0FDUVFGTkJFQkJBQ0VFSUFOQkFVSGtJRUVBRUE4TUFRc2dBU0FBUVF4cVFRRVFFU0FCUVFGcUlBQkJDR3BCQVJBUklBSkJBbXNnQUNnQ0NDSUJRUVYyUVFKeElBRkJCSFpCQTNGcVFRSnFjRVVOQUVFQUlRUWdBMEVCUWVRZ1FRQVFEd3NnQUVFUWFpUUFJQVFMQkFCQkFBc0xvcndCSVFCQmdBZ0xrWFZqWVc1dWIzUWdZV3hzYjJOaGRHVWdiM0JxWDNSalpGOXpaV2RmWkdGMFlWOWphSFZ1YTE5MEtpQmhjbkpoZVFBdEt5QWdJREJZTUhnQUxUQllLekJZSURCWUxUQjRLekI0SURCNEFGVnVhMjV2ZDI0Z1ptOXliV0YwQUVaaGFXeGxaQ0IwYnlCelpYUjFjQ0IwYUdVZ1pHVmpiMlJsY2dCR1lXbHNaV1FnZEc4Z2NtVmhaQ0IwYUdVZ2FHVmhaR1Z5QUc1aGJnQXFiRjkwYVd4bFgyeGxiaUErSUZWSlRsUmZUVUZZSUMwZ1QxQktYME5QVFUxUFRsOURRa3hMWDBSQlZFRmZSVmhVVWtFZ0xTQndYMm95YXkwK2JWOXpjR1ZqYVdacFkxOXdZWEpoYlM1dFgyUmxZMjlrWlhJdWJWOXpiM1JmYkdWdVozUm9BR2x1WmdCR1lXbHNaV1FnZEc4Z1pHVmpiMlJsSUhSb1pTQnBiV0ZuWlFCSmJuWmhiR2xrSUdGalkyVnpjeUIwYnlCd2FTMCthVzVqYkhWa1pRQXZkRzF3TDI5d1pXNXFjR1ZuTDNOeVl5OWlhVzR2WTI5dGJXOXVMMk52Ykc5eUxtTUFRVXhNWDBOUVZWTUFUMUJLWDA1VlRWOVVTRkpGUVVSVEFFNUJUZ0JKVGtZQWNGOXFNbXN0UG0xZmMzQmxZMmxtYVdOZmNHRnlZVzB1YlY5a1pXTnZaR1Z5TG0xZmMyOTBYMnhsYm1kMGFDQStJRlZKVGxSZlRVRllJQzBnVDFCS1gwTlBUVTFQVGw5RFFreExYMFJCVkVGZlJWaFVVa0VBQ1FrSklIQnlaV05qYVc1MGMybDZaU0FvZHl4b0tUMEFDUWtKSUhOMFpYQnphWHBsY3lBb2JTeGxLVDBBTGdBb2JuVnNiQ2tBS0NWa0xDVmtLU0FBSlhOOUNnQUpDU0I5Q2dCYlJFVldYU0JFZFcxd0lHRnVJR2x0WVdkbFgyTnZiWEJmYUdWaFpHVnlJSE4wY25WamRDQjdDZ0JiUkVWV1hTQkVkVzF3SUdGdUlHbHRZV2RsWDJobFlXUmxjaUJ6ZEhKMVkzUWdld29BU1cxaFoyVWdhVzVtYnlCN0NnQUpJR1JsWm1GMWJIUWdkR2xzWlNCN0NnQWxjd2tnWTI5dGNHOXVaVzUwSUNWa0lIc0tBQWtKSUdOdmJYQWdKV1FnZXdvQUNTQlVhV3hsSUdsdVpHVjRPaUI3Q2dBSklFMWhjbXRsY2lCc2FYTjBPaUI3Q2dCRGIyUmxjM1J5WldGdElHbHVaR1Y0SUdaeWIyMGdiV0ZwYmlCb1pXRmtaWEk2SUhzS0FFTnZaR1Z6ZEhKbFlXMGdhVzVtYnlCbWNtOXRJRzFoYVc0Z2FHVmhaR1Z5T2lCN0NnQlRkSEpsWVcwZ1pYSnliM0lnZDJocGJHVWdjbVZoWkdsdVp5QktVRElnU0dWaFpHVnlJR0p2ZUFvQVJtOTFibVFnWVNCdGFYTndiR0ZqWldRZ0p5VmpKV01sWXlWakp5QmliM2dnYjNWMGMybGtaU0JxY0RKb0lHSnZlQW9BVFdGc1ptOXliV1ZrSUVwUU1pQm1hV3hsSUdadmNtMWhkRG9nWm1seWMzUWdZbTk0SUcxMWMzUWdZbVVnU2xCRlJ5QXlNREF3SUhOcFoyNWhkSFZ5WlNCaWIzZ0tBRTFoYkdadmNtMWxaQ0JLVURJZ1ptbHNaU0JtYjNKdFlYUTZJSE5sWTI5dVpDQmliM2dnYlhWemRDQmlaU0JtYVd4bElIUjVjR1VnWW05NENnQk9iM1FnWlc1dmRXZG9JRzFsYlc5eWVTQjBieUJvWVc1a2JHVWdhbkJsWnpJd01EQWdZbTk0Q2dCT2IzUWdaVzV2ZFdkb0lHMWxiVzl5ZVNCM2FYUm9JRVpVV1ZBZ1FtOTRDZ0JCSUcxaGNtdGxjaUJKUkNCM1lYTWdaWGh3WldOMFpXUWdLREI0Wm1ZdExTa2dhVzV6ZEdWaFpDQnZaaUFsTGpoNENnQUpDU0J0WTNROUpYZ0tBQWtKQ1NCallteHJjM1I1UFNVamVBb0FDUWtKSUdOemRIazlKU040Q2dBSkNTQndjbWM5SlNONENnQkpiblJsWjJWeUlHOTJaWEptYkc5M0NnQUpJSFJrZUQwbGRTd2dkR1I1UFNWMUNnQUpJSFIzUFNWMUxDQjBhRDBsZFFvQUNTQjBlREE5SlhVc0lIUjVNRDBsZFFvQVNXNTJZV3hwWkNCamIyMXdiMjVsYm5RZ2FXNWtaWGc2SUNWMUNnQlRkSEpsWVcwZ2RHOXZJSE5vYjNKMENnQk5ZWEpyWlhJZ2FHRnVaR3hsY2lCbWRXNWpkR2x2YmlCbVlXbHNaV1FnZEc4Z2NtVmhaQ0IwYUdVZ2JXRnlhMlZ5SUhObFoyMWxiblFLQUU1dmRDQmxibTkxWjJnZ2JXVnRiM0o1SUdadmNpQmpkWEp5Wlc1MElIQnlaV05wYm1OMElHTnZaR1ZpYkc5amF5QmxiR1Z0Wlc1MENnQkZjbkp2Y2lCeVpXRmthVzVuSUZOUVEyOWtJRk5RUTI5aklHVnNaVzFsYm5RS0FFVnljbTl5SUhKbFlXUnBibWNnVTFGalpDQnZjaUJUVVdOaklHVnNaVzFsYm5RS0FFRWdRbEJEUXlCb1pXRmtaWElnWW05NElHbHpJR0YyWVdsc1lXSnNaU0JoYkhSb2IzVm5hQ0JDVUVNZ1oybDJaVzRnWW5rZ2RHaGxJRWxJUkZJZ1ltOTRJQ2dsWkNrZ2FXNWthV05oZEdVZ1kyOXRjRzl1Wlc1MGN5QmlhWFFnWkdWd2RHZ2dhWE1nWTI5dWMzUmhiblFLQUVWeWNtOXlJSGRwZEdnZ1UwbGFJRzFoY210bGNqb2dhV3hzWldkaGJDQjBhV3hsSUc5bVpuTmxkQW9BU1c1MllXeHBaQ0J3Y21WamFXNWpkQW9BVG05MElHVnViM1ZuYUNCdFpXMXZjbmtnZEc4Z2FHRnVaR3hsSUdKaGJtUWdjSEpsWTJsdWRITUtBRVpoYVd4bFpDQjBieUJrWldOdlpHVWdZV3hzSUhWelpXUWdZMjl0Y0c5dVpXNTBjd29BVTJsNlpTQnZaaUJqYjJSbElHSnNiMk5ySUdSaGRHRWdaWGhqWldWa2N5QnplWE4wWlcwZ2JHbHRhWFJ6Q2dCVGFYcGxJRzltSUhScGJHVWdaR0YwWVNCbGVHTmxaV1J6SUhONWMzUmxiU0JzYVcxcGRITUtBRU5oYm01dmRDQjBZV3RsSUdsdUlHTm9ZWEpuWlNCdGRXeDBhWEJzWlNCTlExUWdiV0Z5YTJWeWN3b0FRMjl5Y25Wd2RHVmtJRkJRVFNCdFlYSnJaWEp6Q2dCT2IzUWdaVzV2ZFdkb0lHMWxiVzl5ZVNCbWIzSWdkR2xzWlNCeVpYTnZiSFYwYVc5dWN3b0FRMkZ1Ym05MElIUmhhMlVnYVc0Z1kyaGhjbWRsSUcxMWJIUnBjR3hsSUdOdmJHeGxZM1JwYjI1ekNnQkpiblpoYkdsa0lGQkRURklnWW05NExpQlNaWEJ2Y25SeklEQWdjR0ZzWlhSMFpTQmpiMngxYlc1ekNnQlhaU0JrYnlCdWIzUWdjM1Z3Y0c5eWRDQlNUMGtnYVc0Z1pHVmpiMlJwYm1jZ1NGUWdZMjlrWldKc2IyTnJjd29BUTJGdWJtOTBJR2hoYm1Sc1pTQmliM2dnYjJZZ2RXNWtaV1pwYm1Wa0lITnBlbVZ6Q2dCRFlXNXViM1FnZEdGclpTQnBiaUJqYUdGeVoyVWdZMjlzYkdWamRHbHZibk1nZDJsMGFHOTFkQ0J6WVcxbElHNTFiV0psY2lCdlppQnBibVJwZUdWekNnQkpiblpoYkdsa0lIUnBiR1ZqTFQ1M2FXNWZlSGg0SUhaaGJIVmxjd29BUTJGdWJtOTBJR2hoYm1Sc1pTQmliM2dnYjJZZ2JHVnpjeUIwYUdGdUlEZ2dZbmwwWlhNS0FFTmhibTV2ZENCb1lXNWtiR1VnV0V3Z1ltOTRJRzltSUd4bGMzTWdkR2hoYmlBeE5pQmllWFJsY3dvQVEyOXRjRzl1Wlc1MElHbHVaR1Y0SUNWMUlIVnpaV1FnYzJWMlpYSmhiQ0IwYVcxbGN3b0FTVzUyWVd4cFpDQlFRMHhTSUdKdmVDNGdVbVZ3YjNKMGN5QWxaQ0JsYm5SeWFXVnpDZ0JPYjNRZ1pXNXZkV2RvSUcxbGJXOXllU0IwYnlCamNtVmhkR1VnVkdGbkxYUnlaV1VnYm05a1pYTUtBRU5oYm01dmRDQjBZV3RsSUdsdUlHTm9ZWEpuWlNCdFkzUWdaR0YwWVNCM2FYUm9hVzRnYlhWc2RHbHdiR1VnVFVOVUlISmxZMjl5WkhNS0FFTmhibTV2ZENCa1pXTnZaR1VnZEdsc1pTd2diV1Z0YjNKNUlHVnljbTl5Q2dCdmNHcGZhakpyWDJGd2NHeDVYMjVpWDNScGJHVmZjR0Z5ZEhOZlkyOXljbVZqZEdsdmJpQmxjbkp2Y2dvQVVISnZZbXhsYlNCM2FYUm9JSE5yYVhCd2FXNW5JRXBRUlVjeU1EQXdJR0p2ZUN3Z2MzUnlaV0Z0SUdWeWNtOXlDZ0JRY205aWJHVnRJSGRwZEdnZ2NtVmhaR2x1WnlCS1VFVkhNakF3TUNCaWIzZ3NJSE4wY21WaGJTQmxjbkp2Y2dvQVZXNXJibTkzYmlCdFlYSnJaWElLQUU1dmRDQmxibTkxWjJnZ2JXVnRiM0o1SUhSdklHRmtaQ0IwYkNCdFlYSnJaWElLQUU1dmRDQmxibTkxWjJnZ2JXVnRiM0o1SUhSdklHRmtaQ0J0YUNCdFlYSnJaWElLQUU1dmRDQmxibTkxWjJnZ2JXVnRiM0o1SUhSdklIUmhhMlVnYVc0Z1kyaGhjbWRsSUZOSldpQnRZWEpyWlhJS0FFVnljbTl5SUhKbFlXUnBibWNnVUZCVUlHMWhjbXRsY2dvQVRtOTBJR1Z1YjNWbmFDQnRaVzF2Y25rZ2RHOGdjbVZoWkNCUVVGUWdiV0Z5YTJWeUNnQkZjbkp2Y2lCeVpXRmthVzVuSUZOUFZDQnRZWEpyWlhJS0FFVnljbTl5SUhKbFlXUnBibWNnVUV4VUlHMWhjbXRsY2dvQVJYSnliM0lnY21WaFpHbHVaeUJOUTFRZ2JXRnlhMlZ5Q2dCT2IzUWdaVzV2ZFdkb0lHMWxiVzl5ZVNCMGJ5QnlaV0ZrSUUxRFZDQnRZWEpyWlhJS0FFNXZkQ0JsYm05MVoyZ2djM0JoWTJVZ1ptOXlJR1Y0Y0dWamRHVmtJRk5QVUNCdFlYSnJaWElLQUVWNGNHVmpkR1ZrSUZOUFVDQnRZWEpyWlhJS0FFVnljbTl5SUhKbFlXUnBibWNnVFVOUElHMWhjbXRsY2dvQVJYSnliM0lnY21WaFpHbHVaeUJTUjA0Z2JXRnlhMlZ5Q2dCRmNuSnZjaUJ5WldGa2FXNW5JRkJRVFNCdFlYSnJaWElLQUU1dmRDQmxibTkxWjJnZ2JXVnRiM0o1SUhSdklISmxZV1FnVUZCTklHMWhjbXRsY2dvQVJYSnliM0lnY21WaFpHbHVaeUJVVEUwZ2JXRnlhMlZ5Q2dCRmNuSnZjaUJ5WldGa2FXNW5JRkJNVFNCdFlYSnJaWElLQUU1dmRDQmxibTkxWjJnZ2MzQmhZMlVnWm05eUlHVjRjR1ZqZEdWa0lFVlFTQ0J0WVhKclpYSUtBRVY0Y0dWamRHVmtJRVZRU0NCdFlYSnJaWElLQUVWeWNtOXlJSEpsWVdScGJtY2dRMUpISUcxaGNtdGxjZ29BVlc1cmJtOTNiaUJ3Y205bmNtVnpjMmx2YmlCdmNtUmxjaUJwYmlCRFQwUWdiV0Z5YTJWeUNnQlZibXR1YjNkdUlGTmpiMlFnZG1Gc2RXVWdhVzRnUTA5RUlHMWhjbXRsY2dvQVJYSnliM0lnY21WaFpHbHVaeUJEVDBRZ2JXRnlhMlZ5Q2dCRmNuSnZjaUJ5WldGa2FXNW5JRkZEUkNCdFlYSnJaWElLQUVOeWNtOXlJSEpsWVdScGJtY2dRMEpFSUcxaGNtdGxjZ29BUlhKeWIzSWdjbVZoWkdsdVp5QlFUME1nYldGeWEyVnlDZ0JGY25KdmNpQnlaV0ZrYVc1bklFTlBReUJ0WVhKclpYSUtBRVZ5Y205eUlISmxZV1JwYm1jZ1VVTkRJRzFoY210bGNnb0FSWEp5YjNJZ2NtVmhaR2x1WnlCTlEwTWdiV0Z5YTJWeUNnQk9iM1FnWlc1dmRXZG9JRzFsYlc5eWVTQjBieUJ5WldGa0lFMURReUJ0WVhKclpYSUtBSEpsY1hWcGNtVmtJRk5KV2lCdFlYSnJaWElnYm05MElHWnZkVzVrSUdsdUlHMWhhVzRnYUdWaFpHVnlDZ0J5WlhGMWFYSmxaQ0JEVDBRZ2JXRnlhMlZ5SUc1dmRDQm1iM1Z1WkNCcGJpQnRZV2x1SUdobFlXUmxjZ29BY21WeGRXbHlaV1FnVVVORUlHMWhjbXRsY2lCdWIzUWdabTkxYm1RZ2FXNGdiV0ZwYmlCb1pXRmtaWElLQUU1dmRDQmxibTkxWjJnZ2JXVnRiM0o1SUhSdklHaGhibVJzWlNCcWNHVm5NakF3TUNCbWFXeGxJR2hsWVdSbGNnb0FUbTkwSUdWdWIzVm5hQ0J0WlcxdmNua2dkRzhnY21WaFpDQm9aV0ZrWlhJS0FFVnljbTl5SUhkcGRHZ2dTbEFnVTJsbmJtRjBkWEpsSURvZ1ltRmtJRzFoWjJsaklHNTFiV0psY2dvQVNXNGdVMDlVSUcxaGNtdGxjaXdnVkZCVGIzUWdLQ1ZrS1NCcGN5QnViM1FnZG1Gc2FXUWdjbVZuWVhKa2N5QjBieUIwYUdVZ1kzVnljbVZ1ZENCdWRXMWlaWElnYjJZZ2RHbHNaUzF3WVhKMElDZ2xaQ2tzSUdkcGRtbHVaeUIxY0FvQVNXNGdVMDlVSUcxaGNtdGxjaXdnVkZCVGIzUWdLQ1ZrS1NCcGN5QnViM1FnZG1Gc2FXUWdjbVZuWVhKa2N5QjBieUIwYUdVZ2NISmxkbWx2ZFhNZ2JuVnRZbVZ5SUc5bUlIUnBiR1V0Y0dGeWRDQW9KV1FwTENCbmFYWnBibWNnZFhBS0FFbHVJRk5QVkNCdFlYSnJaWElzSUZSUVUyOTBJQ2dsWkNrZ2FYTWdibTkwSUhaaGJHbGtJSEpsWjJGeVpITWdkRzhnZEdobElHTjFjbkpsYm5RZ2JuVnRZbVZ5SUc5bUlIUnBiR1V0Y0dGeWRDQW9hR1ZoWkdWeUtTQW9KV1FwTENCbmFYWnBibWNnZFhBS0FIUnBiR1Z6SUhKbGNYVnBjbVVnWVhRZ2JHVmhjM1FnYjI1bElISmxjMjlzZFhScGIyNEtBRTFoY210bGNpQnBjeUJ1YjNRZ1kyOXRjR3hwWVc1MElIZHBkR2dnYVhSeklIQnZjMmwwYVc5dUNnQlFjbTlpYkdWdElIZHBkR2dnYzJWbGF5Qm1kVzVqZEdsdmJnb0FSWEp5YjNJZ2NtVmhaR2x1WnlCVFVFTnZaQ0JUVUVOdll5QmxiR1Z0Wlc1MExDQkpiblpoYkdsa0lHTmliR3QzTDJOaWJHdG9JR052YldKcGJtRjBhVzl1Q2dCSmJuWmhiR2xrSUcxMWJIUnBjR3hsSUdOdmJYQnZibVZ1ZENCMGNtRnVjMlp2Y20xaGRHbHZiZ29BUTJGdWJtOTBJSFJoYTJVZ2FXNGdZMmhoY21kbElHTnZiR3hsWTNScGIyNXpJRzkwYUdWeUlIUm9ZVzRnWVhKeVlYa2daR1ZqYjNKeVpXeGhkR2x2YmdvQVZHOXZJR3hoY21kbElIWmhiSFZsSUdadmNpQk9jSEJ0Q2dCT2IzUWdaVzV2ZFdkb0lHSjVkR1Z6SUhSdklISmxZV1FnVG5Cd2JRb0FZbUZrSUhCc1lXTmxaQ0JxY0dWbklHTnZaR1Z6ZEhKbFlXMEtBQWtnVFdGcGJpQm9aV0ZrWlhJZ2MzUmhjblFnY0c5emFYUnBiMjQ5Sld4c2FRb0pJRTFoYVc0Z2FHVmhaR1Z5SUdWdVpDQndiM05wZEdsdmJqMGxiR3hwQ2dCTllYSnJaWElnYzJsNlpTQnBibU52Ym5OcGMzUmxiblFnZDJsMGFDQnpkSEpsWVcwZ2JHVnVaM1JvQ2dCVWFXeGxJSEJoY25RZ2JHVnVaM1JvSUhOcGVtVWdhVzVqYjI1emFYTjBaVzUwSUhkcGRHZ2djM1J5WldGdElHeGxibWQwYUFvQVEyRnVibTkwSUhSaGEyVWdhVzRnWTJoaGNtZGxJRzExYkhScGNHeGxJR1JoZEdFZ2MzQmhibTVwYm1jS0FGZHliMjVuSUdac1lXY0tBRVZ5Y205eUlIZHBkR2dnUmxSWlVDQnphV2R1WVhSMWNtVWdRbTk0SUhOcGVtVUtBRVZ5Y205eUlIZHBkR2dnU2xBZ2MybG5ibUYwZFhKbElFSnZlQ0J6YVhwbENnQkpiblpoYkdsa0lIQnlaV05wYm1OMElITnBlbVVLQUVsdVkyOXVjMmx6ZEdWdWRDQnRZWEpyWlhJZ2MybDZaUW9BU1c1MllXeHBaQ0J0WVhKclpYSWdjMmw2WlFvQVJYSnliM0lnZDJsMGFDQlRTVm9nYldGeWEyVnlJSE5wZW1VS0FFNXZkQ0JsYm05MVoyZ2diV1Z0YjNKNUlIUnZJR0ZrWkNCaElHNWxkeUIyWVd4cFpHRjBhVzl1SUhCeWIyTmxaSFZ5WlFvQVRtOTBJR1Z1YjNWbmFDQnRaVzF2Y25rZ2RHOGdaR1ZqYjJSbElIUnBiR1VLQUVaaGFXeGxaQ0IwYnlCa1pXTnZaR1VnZEdobElHTnZaR1Z6ZEhKbFlXMGdhVzRnZEdobElFcFFNaUJtYVd4bENnQkRZVzV1YjNRZ2RHRnJaU0JwYmlCamFHRnlaMlVnWTI5c2JHVmpkR2x2Ym5NZ2QybDBhQ0JwYm1ScGVDQnphSFZtWm14bENnQkRZVzV1YjNRZ1lXeHNiMk5oZEdVZ1ZHbGxjaUF4SUdoaGJtUnNaUW9BVG04Z1pHVmpiMlJsWkNCaGNtVmhJSEJoY21GdFpYUmxjbk1zSUhObGRDQjBhR1VnWkdWamIyUmxaQ0JoY21WaElIUnZJSFJvWlNCM2FHOXNaU0JwYldGblpRb0FUbTkwSUdWdWIzVm5hQ0J0WlcxdmNua2dkRzhnWTNKbFlYUmxJRlJoWnkxMGNtVmxDZ0JPYjNRZ1pXNXZkV2RvSUcxbGJXOXllU0IwYnlCeVpXbHVhWFJwWVd4cGVtVWdkR2hsSUhSaFp5QjBjbVZsQ2dCRmNuSnZjaUJ5WldGa2FXNW5JRk5RUTI5a0lGTlFRMjlqSUdWc1pXMWxiblFzSUVsdWRtRnNhV1FnZEhKaGJuTm1iM0p0WVhScGIyNGdabTkxYm1RS0FFVnljbTl5SUhKbFlXUnBibWNnVTFCRGIyUWdVMUJEYjJNZ1pXeGxiV1Z1ZEM0Z1ZXNXpkWEJ3YjNKMFpXUWdUV2w0WldRZ1NGUWdZMjlrWlMxaWJHOWpheUJ6ZEhsc1pTQm1iM1Z1WkFvQVZHbHNaU0JaSUdOdmIzSmthVzVoZEdWeklHRnlaU0J1YjNRZ2MzVndjRzl5ZEdWa0NnQlVhV3hsSUZnZ1kyOXZjbVJwYm1GMFpYTWdZWEpsSUc1dmRDQnpkWEJ3YjNKMFpXUUtBRWx0WVdkbElHTnZiM0prYVc1aGRHVnpJR0ZpYjNabElFbE9WRjlOUVZnZ1lYSmxJRzV2ZENCemRYQndiM0owWldRS0FFcFFSVWN5TURBd0lFaGxZV1JsY2lCaWIzZ2dibTkwSUhKbFlXUWdlV1YwTENBbkpXTWxZeVZqSldNbklHSnZlQ0IzYVd4c0lHSmxJR2xuYm05eVpXUUtBRzl3YWw5cU1tdGZiV1Z5WjJWZmNIQjBLQ2tnYUdGeklHRnNjbVZoWkhrZ1ltVmxiaUJqWVd4c1pXUUtBRTV2ZENCbGJtOTFaMmdnYldWdGIzSjVJSFJ2SUhKbFlXUWdVMDlVSUcxaGNtdGxjaTRnVkdsc1pTQnBibVJsZUNCaGJHeHZZMkYwYVc5dUlHWmhhV3hsWkFvQVNXZHViM0pwYm1jZ2FXaGtjaUJpYjNndUlFWnBjbk4wSUdsb1pISWdZbTk0SUdGc2NtVmhaSGtnY21WaFpBb0FXbkJ3ZENBbGRTQmhiSEpsWVdSNUlISmxZV1FLQUZwd2NHMGdKWFVnWVd4eVpXRmtlU0J5WldGa0NnQlFWRVZTVFNCamFHVmpheUJtWVdsc2RYSmxPaUFsWkNCemVXNTBhR1YwYVhwbFpDQXdlRVpHSUcxaGNtdGxjbk1nY21WaFpBb0FDUWtKSUdOaWJHdDNQVEplSldRS0FBa0pDU0JqWW14cmFEMHlYaVZrQ2dBSkNRa2djVzUwYzNSNVBTVmtDZ0FsY3lCa2VEMGxaQ3dnWkhrOUpXUUtBQWtKQ1NCeWIybHphR2xtZEQwbFpBb0FDUWtKSUc1MWJXZGlhWFJ6UFNWa0NnQUpDU0J1ZFcxc1lYbGxjbk05SldRS0FDVnpJRzUxYldOdmJYQnpQU1ZrQ2dCdmNHcGZhbkF5WDJGd2NHeDVYMk5rWldZNklHRmpiajBsWkN3Z2JuVnRZMjl0Y0hNOUpXUUtBRzl3YWw5cWNESmZZWEJ3YkhsZlkyUmxaam9nWTI0OUpXUXNJRzUxYldOdmJYQnpQU1ZrQ2dBSkNRa2diblZ0Y21WemIyeDFkR2x2Ym5NOUpXUUtBQWtKSUhSNWNHVTlKU040TENCd2IzTTlKV3hzYVN3Z2JHVnVQU1ZrQ2dBbGN5QnpaMjVrUFNWa0NnQUpDUWtnY1cxbVltbGtQU1ZrQ2dBbGN5QndjbVZqUFNWa0NnQUpDU0J1WWlCdlppQjBhV3hsTFhCaGNuUWdhVzRnZEdsc1pTQmJKV1JkUFNWa0NnQWxjeUI0TVQwbFpDd2dlVEU5SldRS0FDVnpJSGd3UFNWa0xDQjVNRDBsWkFvQVJtRnBiR1ZrSUhSdklHUmxZMjlrWlNCMGFXeGxJQ1ZrTHlWa0NnQlRaWFIwYVc1bklHUmxZMjlrYVc1bklHRnlaV0VnZEc4Z0pXUXNKV1FzSldRc0pXUUtBRVpoYVd4bFpDQjBieUJrWldOdlpHVWdZMjl0Y0c5dVpXNTBJQ1ZrQ2dCSmJuWmhiR2xrSUhaaGJIVmxJR1p2Y2lCdWRXMXlaWE52YkhWMGFXOXVjeUE2SUNWa0xDQnRZWGdnZG1Gc2RXVWdhWE1nYzJWMElHbHVJRzl3Wlc1cWNHVm5MbWdnWVhRZ0pXUUtBRWx1ZG1Gc2FXUWdZMjl0Y0c5dVpXNTBJRzUxYldKbGNqb2dKV1FzSUhKbFoyRnlaR2x1WnlCMGFHVWdiblZ0WW1WeUlHOW1JR052YlhCdmJtVnVkSE1nSldRS0FGUnZieUJ0WVc1NUlGQlBRM01nSldRS0FFbHVkbUZzYVdRZ2RHbHNaU0J1ZFcxaVpYSWdKV1FLQUVsdWRtRnNhV1FnZEdsc1pTQndZWEowSUdsdVpHVjRJR1p2Y2lCMGFXeGxJRzUxYldKbGNpQWxaQzRnUjI5MElDVmtMQ0JsZUhCbFkzUmxaQ0FsWkFvQVJYSnliM0lnZDJsMGFDQlRTVm9nYldGeWEyVnlPaUJ1ZFcxaVpYSWdiMllnWTI5dGNHOXVaVzUwSUdseklHbHNiR1ZuWVd3Z0xUNGdKV1FLQUU1dmRDQmxibTkxWjJnZ2JXVnRiM0o1SUdadmNpQmphV1ZzWVdJS0FFTmhibTV2ZENCaGJHeHZZMkYwWlNCallteHJMVDVrWldOdlpHVmtYMlJoZEdFS0FFWmhhV3hsWkNCMGJ5QnRaWEpuWlNCUVVGUWdaR0YwWVFvQVJtRnBiR1ZrSUhSdklHMWxjbWRsSUZCUVRTQmtZWFJoQ2dCSmJuWmhiR2xrSUc1MWJXSmxjaUJ2WmlCc1lYbGxjbk1nYVc0Z1EwOUVJRzFoY210bGNpQTZJQ1ZrSUc1dmRDQnBiaUJ5WVc1blpTQmJNUzAyTlRVek5WMEtBQ1Z6T2lWa09tTnZiRzl5WDJOdGVXdGZkRzlmY21kaUNnbERRVTRnVGs5VUlFTlBUbFpGVWxRS0FDVnpPaVZrT21OdmJHOXlYMlZ6ZVdOalgzUnZYM0puWWdvSlEwRk9JRTVQVkNCRFQwNVdSVkpVQ2dBbGN6b2xaRHBqYjJ4dmNsOXplV05qWDNSdlgzSm5ZZ29KUTBGT0lFNVBWQ0JEVDA1V1JWSlVDZ0JUZEhKbFlXMGdkRzl2SUhOb2IzSjBMQ0JsZUhCbFkzUmxaQ0JUVDFRS0FGVnVZV0pzWlNCMGJ5QnpaWFFnZERFZ2FHRnVaR3hsSUdGeklGUk1Vd29BVTNSeVpXRnRJR1J2WlhNZ2JtOTBJR1Z1WkNCM2FYUm9JRVZQUXdvQVEyRnVibTkwSUdoaGJtUnNaU0JpYjNnZ2MybDZaWE1nYUdsbmFHVnlJSFJvWVc0Z01sNHpNZ29BYjNCcVgzQnBYMjVsZUhSZmJISmpjQ2dwT2lCcGJuWmhiR2xrSUdOdmJYQnViekF2WTI5dGNHNXZNUW9BYjNCcVgzQnBYMjVsZUhSZmNteGpjQ2dwT2lCcGJuWmhiR2xrSUdOdmJYQnViekF2WTI5dGNHNXZNUW9BYjNCcVgzQnBYMjVsZUhSZlkzQnliQ2dwT2lCcGJuWmhiR2xrSUdOdmJYQnViekF2WTI5dGNHNXZNUW9BYjNCcVgzQnBYMjVsZUhSZmNHTnliQ2dwT2lCcGJuWmhiR2xrSUdOdmJYQnViekF2WTI5dGNHNXZNUW9BYjNCcVgzQnBYMjVsZUhSZmNuQmpiQ2dwT2lCcGJuWmhiR2xrSUdOdmJYQnViekF2WTI5dGNHNXZNUW9BYjNCcVgzUXhYMlJsWTI5a1pWOWpZbXhyS0NrNklIVnVjM1Z3Y0c5eWRHVmtJR0p3Ym05ZmNHeDFjMTl2Ym1VZ1BTQWxaQ0ErUFNBek1Rb0FSbUZwYkdWa0lIUnZJR1JsWTI5a1pTQjBhV3hsSURFdk1Rb0FTVzV6ZFdabWFXTnBaVzUwSUdSaGRHRWdabTl5SUVOTlFWQWdZbTk0TGdvQVRtVmxaQ0IwYnlCeVpXRmtJR0VnVUVOTVVpQmliM2dnWW1WbWIzSmxJSFJvWlNCRFRVRlFJR0p2ZUM0S0FFbHVjM1ZtWm1samFXVnVkQ0JrWVhSaElHWnZjaUJEUkVWR0lHSnZlQzRLQUU1MWJXSmxjaUJ2WmlCamFHRnVibVZzSUdSbGMyTnlhWEIwYVc5dUlHbHpJR1Z4ZFdGc0lIUnZJSHBsY204Z2FXNGdRMFJGUmlCaWIzZ3VDZ0JUZEhKbFlXMGdaWEp5YjNJZ2QyaHBiR1VnY21WaFpHbHVaeUJLVURJZ1NHVmhaR1Z5SUdKdmVEb2dibThnSjJsb1pISW5JR0p2ZUM0S0FFNXZiaUJqYjI1bWIzSnRZVzUwSUdOdlpHVnpkSEpsWVcwZ1ZGQnpiM1E5UFZST2MyOTBMZ29BVTNSeVpXRnRJR1Z5Y205eUlIZG9hV3hsSUhKbFlXUnBibWNnU2xBeUlFaGxZV1JsY2lCaWIzZzZJR0p2ZUNCc1pXNW5kR2dnYVhNZ2FXNWpiMjV6YVhOMFpXNTBMZ29BUW05NElHeGxibWQwYUNCcGN5QnBibU52Ym5OcGMzUmxiblF1Q2dCU1pYTnZiSFYwYVc5dUlHWmhZM1J2Y2lCcGN5Qm5jbVZoZEdWeUlIUm9ZVzRnZEdobElHMWhlR2x0ZFcwZ2NtVnpiMngxZEdsdmJpQnBiaUIwYUdVZ1kyOXRjRzl1Wlc1MExnb0FRMjl0Y0c5dVpXNTBJRzFoY0hCcGJtY2djMlZsYlhNZ2QzSnZibWN1SUZSeWVXbHVaeUIwYnlCamIzSnlaV04wTGdvQVNXNWpiMjF3YkdWMFpTQmphR0Z1Ym1Wc0lHUmxabWx1YVhScGIyNXpMZ29BVFdGc1ptOXliV1ZrSUVoVUlHTnZaR1ZpYkc5amF5NGdTVzUyWVd4cFpDQmpiMlJsWW14dlkyc2diR1Z1WjNSb0lIWmhiSFZsY3k0S0FGZGxJR1J2SUc1dmRDQnpkWEJ3YjNKMElHMXZjbVVnZEdoaGJpQXpJR052WkdsdVp5QndZWE56WlhNZ2FXNGdZVzRnU0ZRZ1kyOWtaV0pzYjJOck95QlVhR2x6SUdOdlpHVmliRzlqYTNNZ2FHRnpJQ1ZrSUhCaGMzTmxjeTRLQUUxaGJHWnZjbTFsWkNCSVZDQmpiMlJsWW14dlkyc3VJRVJsWTI5a2FXNW5JSFJvYVhNZ1kyOWtaV0pzYjJOcklHbHpJSE4wYjNCd1pXUXVJRlJvWlhKbElHRnlaU0FsWkNCNlpYSnZJR0pwZEhCc1lXNWxjeUJwYmlBbFpDQmlhWFJ3YkdGdVpYTXVDZ0JEWVc1dWIzUWdkR0ZyWlNCcGJpQmphR0Z5WjJVZ2JYVnNkR2x3YkdVZ2RISmhibk5tYjNKdFlYUnBiMjRnYzNSaFoyVnpMZ29BVlc1cmJtOTNiaUJ0WVhKclpYSWdhR0Z6SUdKbFpXNGdaR1YwWldOMFpXUWdZVzVrSUdkbGJtVnlZWFJsWkNCbGNuSnZjaTRLQUVOdlpHVmpJSEJ5YjNacFpHVmtJSFJ2SUhSb1pTQnZjR3BmYzJWMGRYQmZaR1ZqYjJSbGNpQm1kVzVqZEdsdmJpQnBjeUJ1YjNRZ1lTQmtaV052YlhCeVpYTnpiM0lnYUdGdVpHeGxjaTRLQUVOdlpHVmpJSEJ5YjNacFpHVmtJSFJ2SUhSb1pTQnZjR3BmY21WaFpGOW9aV0ZrWlhJZ1puVnVZM1JwYjI0Z2FYTWdibTkwSUdFZ1pHVmpiMjF3Y21WemMyOXlJR2hoYm1Sc1pYSXVDZ0JVYVd4bGN5QmtiMjRuZENCaGJHd2dhR0YyWlNCMGFHVWdjMkZ0WlNCa2FXMWxibk5wYjI0dUlGTnJhWEFnZEdobElFMURWQ0J6ZEdWd0xnb0FUblZ0WW1WeUlHOW1JR052YlhCdmJtVnVkSE1nS0NWa0tTQnBjeUJwYm1OdmJuTnBjM1JsYm5RZ2QybDBhQ0JoSUUxRFZDNGdVMnRwY0NCMGFHVWdUVU5VSUhOMFpYQXVDZ0JLVURJZ1ltOTRJSGRvYVdOb0lHRnlaU0JoWm5SbGNpQjBhR1VnWTI5a1pYTjBjbVZoYlNCM2FXeHNJRzV2ZENCaVpTQnlaV0ZrSUdKNUlIUm9hWE1nWm5WdVkzUnBiMjR1Q2dCTllXeG1iM0p0WldRZ1NGUWdZMjlrWldKc2IyTnJMaUJYYUdWdUlIUm9aU0J1ZFcxaVpYSWdiMllnZW1WeWJ5QndiR0Z1WlhNZ1ltbDBjR3hoYm1WeklHbHpJR1Z4ZFdGc0lIUnZJSFJvWlNCdWRXMWlaWElnYjJZZ1ltbDBjR3hoYm1WekxDQnZibXg1SUhSb1pTQmpiR1ZoYm5Wd0lIQmhjM01nYldGclpYTWdjMlZ1YzJVc0lHSjFkQ0IzWlNCb1lYWmxJQ1ZrSUhCaGMzTmxjeUJwYmlCMGFHbHpJR052WkdWaWJHOWpheTRnVkdobGNtVm1iM0psTENCdmJteDVJSFJvWlNCamJHVmhiblZ3SUhCaGMzTWdkMmxzYkNCaVpTQmtaV052WkdWa0xpQlVhR2x6SUcxbGMzTmhaMlVnZDJsc2JDQnViM1FnWW1VZ1pHbHpjR3hoZVdWa0lHRm5ZV2x1TGdvQVNXMWhaMlVnYUdGeklHeGxjM01nWTI5dGNHOXVaVzUwY3lCMGFHRnVJR052WkdWemRISmxZVzB1Q2dCT1pXVmtJSFJ2SUdSbFkyOWtaU0IwYUdVZ2JXRnBiaUJvWldGa1pYSWdZbVZtYjNKbElHSmxaMmx1SUhSdklHUmxZMjlrWlNCMGFHVWdjbVZ0WVdsdWFXNW5JR052WkdWemRISmxZVzB1Q2dCUWMyOTBJSFpoYkhWbElHOW1JSFJvWlNCamRYSnlaVzUwSUhScGJHVXRjR0Z5ZENCcGN5QmxjWFZoYkNCMGJ5QjZaWEp2TENCM1pTQmhjM04xYldsdVp5QnBkQ0JwY3lCMGFHVWdiR0Z6ZENCMGFXeGxMWEJoY25RZ2IyWWdkR2hsSUdOdlpHVnpkSEpsWVcwdUNnQkJJRzFoYkdadmNtMWxaQ0JqYjJSbFlteHZZMnNnZEdoaGRDQm9ZWE1nYlc5eVpTQjBhR0Z1SUc5dVpTQmpiMlJwYm1jZ2NHRnpjeXdnWW5WMElIcGxjbThnYkdWdVozUm9JR1p2Y2lBeWJtUWdZVzVrSUhCdmRHVnVkR2xoYkd4NUlIUm9aU0F6Y21RZ2NHRnpjeUJwYmlCaGJpQklWQ0JqYjJSbFlteHZZMnN1Q2dBSkNRa2dkR2xzWlMxd1lYSjBXeVZrWFRvZ2MzUmhjbDl3YjNNOUpXeHNhU3dnWlc1a1gyaGxZV1JsY2owbGJHeHBMQ0JsYm1SZmNHOXpQU1ZzYkdrdUNnQlVhV3hsSUNWMUlHaGhjeUJVVUhOdmRDQTlQU0F3SUdGdVpDQlVUbk52ZENBOVBTQXdMQ0JpZFhRZ2JtOGdiM1JvWlhJZ2RHbHNaUzF3WVhKMGN5QjNaWEpsSUdadmRXNWtMaUJGVDBNZ2FYTWdZV3h6YnlCdGFYTnphVzVuTGdvQVEyOXRjRzl1Wlc1MElDVmtJR1J2WlhOdUozUWdhR0YyWlNCaElHMWhjSEJwYm1jdUNnQkJJR052Ym1admNtMXBibWNnU2xBeUlISmxZV1JsY2lCemFHRnNiQ0JwWjI1dmNtVWdZV3hzSUVOdmJHOTFjaUJUY0dWamFXWnBZMkYwYVc5dUlHSnZlR1Z6SUdGbWRHVnlJSFJvWlNCbWFYSnpkQ3dnYzI4Z2QyVWdhV2R1YjNKbElIUm9hWE1nYjI1bExnb0FWR2hsSUhOcFoyNWhkSFZ5WlNCaWIzZ2diWFZ6ZENCaVpTQjBhR1VnWm1seWMzUWdZbTk0SUdsdUlIUm9aU0JtYVd4bExnb0FWR2hsSUNCaWIzZ2diWFZ6ZENCaVpTQjBhR1VnWm1seWMzUWdZbTk0SUdsdUlIUm9aU0JtYVd4bExnb0FWR2hsSUdaMGVYQWdZbTk0SUcxMWMzUWdZbVVnZEdobElITmxZMjl1WkNCaWIzZ2dhVzRnZEdobElHWnBiR1V1Q2dCR1lXbHNaV1FnZEc4Z1pHVmpiMlJsTGdvQVRXRnNabTl5YldWa0lFaFVJR052WkdWaWJHOWpheTRnU1c1amIzSnlaV04wSUUxRlRDQnpaV2R0Wlc1MElITmxjWFZsYm1ObExnb0FRMjl0Y0c5dVpXNTBJQ1ZrSUdseklHMWhjSEJsWkNCMGQybGpaUzRLQUU5dWJIa2diMjVsSUVOTlFWQWdZbTk0SUdseklHRnNiRzkzWldRdUNnQlhaU0J1WldWa0lHRnVJR2x0WVdkbElIQnlaWFpwYjNWemJIa2dZM0psWVhSbFpDNEtBRWxJUkZJZ1ltOTRYMjFwYzNOcGJtY3VJRkpsY1hWcGNtVmtMZ29BU2xBeVNDQmliM2dnYldsemMybHVaeTRnVW1WeGRXbHlaV1F1Q2dCT2IzUWdjM1Z5WlNCb2IzY2dkR2hoZENCb1lYQndaVzVsWkM0S0FFMWhhVzRnYUdWaFpHVnlJR2hoY3lCaVpXVnVJR052Y25KbFkzUnNlU0JrWldOdlpHVmtMZ29BVkdsc1pTQWxaQzhsWkNCb1lYTWdZbVZsYmlCa1pXTnZaR1ZrTGdvQVNHVmhaR1Z5SUc5bUlIUnBiR1VnSldRZ0x5QWxaQ0JvWVhNZ1ltVmxiaUJ5WldGa0xnb0FSVzF3ZEhrZ1UwOVVJRzFoY210bGNpQmtaWFJsWTNSbFpEb2dVSE52ZEQwbFpDNEtBRVJwY21WamRDQjFjMlVnWVhRZ0l5VmtJR2h2ZDJWMlpYSWdjR052YkQwbFpDNEtBRWx0Y0d4bGJXVnVkR0YwYVc5dUlHeHBiV2wwWVhScGIyNDZJR1p2Y2lCd1lXeGxkSFJsSUcxaGNIQnBibWNzSUhCamIyeGJKV1JkSUhOb2IzVnNaQ0JpWlNCbGNYVmhiQ0IwYnlBbFpDd2dZblYwSUdseklHVnhkV0ZzSUhSdklDVmtMZ29BU1c1MllXeHBaQ0JqYjIxd2IyNWxiblF2Y0dGc1pYUjBaU0JwYm1SbGVDQm1iM0lnWkdseVpXTjBJRzFoY0hCcGJtY2dKV1F1Q2dCSmJuWmhiR2xrSUhaaGJIVmxJR1p2Y2lCamJXRndXeVZrWFM1dGRIbHdJRDBnSldRdUNnQlFjMjkwSUhaaGJIVmxJR2x6SUc1dmRDQmpiM0p5WldOMElISmxaMkZ5WkhNZ2RHOGdkR2hsSUVwUVJVY3lNREF3SUc1dmNtMDZJQ1ZrTGdvQVRXRnNabTl5YldWa0lFaFVJR052WkdWaWJHOWpheTRnVmt4RElHTnZaR1VnY0hKdlpIVmpaWE1nYzJsbmJtbG1hV05oYm5RZ2MyRnRjR3hsY3lCdmRYUnphV1JsSUhSb1pTQmpiMlJsWW14dlkyc2dZWEpsWVM0S0FGVnVaWGh3WldOMFpXUWdUMDlOTGdvQU16SWdZbWwwY3lCaGNtVWdibTkwSUdWdWIzVm5hQ0IwYnlCa1pXTnZaR1VnZEdocGN5QmpiMlJsWW14dlkyc3NJSE5wYm1ObElIUm9aU0J1ZFcxaVpYSWdiMllnWW1sMGNHeGhibVVzSUNWa0xDQnBjeUJzWVhKblpYSWdkR2hoYmlBek1DNEtBRUp2ZEhSdmJTQndiM05wZEdsdmJpQnZaaUIwYUdVZ1pHVmpiMlJsWkNCaGNtVmhJQ2h5WldkcGIyNWZlVEU5SldRcElITm9iM1ZzWkNCaVpTQStJREF1Q2dCU2FXZG9kQ0J3YjNOcGRHbHZiaUJ2WmlCMGFHVWdaR1ZqYjJSbFpDQmhjbVZoSUNoeVpXZHBiMjVmZURFOUpXUXBJSE5vYjNWc1pDQmlaU0ErSURBdUNnQlZjQ0J3YjNOcGRHbHZiaUJ2WmlCMGFHVWdaR1ZqYjJSbFpDQmhjbVZoSUNoeVpXZHBiMjVmZVRBOUpXUXBJSE5vYjNWc1pDQmlaU0ErUFNBd0xnb0FUR1ZtZENCd2IzTnBkR2x2YmlCdlppQjBhR1VnWkdWamIyUmxaQ0JoY21WaElDaHlaV2RwYjI1ZmVEQTlKV1FwSUhOb2IzVnNaQ0JpWlNBK1BTQXdMZ29BUlhKeWIzSWdjbVZoWkdsdVp5QlFVRlFnYldGeWEyVnlPaUJ3WVdOclpYUWdhR1ZoWkdWeUlHaGhkbVVnWW1WbGJpQndjbVYyYVc5MWMyeDVJR1p2ZFc1a0lHbHVJSFJvWlNCdFlXbHVJR2hsWVdSbGNpQW9VRkJOSUcxaGNtdGxjaWt1Q2dCVGRHRnlkQ0IwYnlCeVpXRmtJR295YXlCdFlXbHVJR2hsWVdSbGNpQW9KV3hzWkNrdUNnQkNiM1IwYjIwZ2NHOXphWFJwYjI0Z2IyWWdkR2hsSUdSbFkyOWtaV1FnWVhKbFlTQW9jbVZuYVc5dVgza3hQU1ZrS1NCcGN5QnZkWFJ6YVdSbElIUm9aU0JwYldGblpTQmhjbVZoSUNoWmMybDZQU1ZrS1M0S0FGVndJSEJ2YzJsMGFXOXVJRzltSUhSb1pTQmtaV052WkdWa0lHRnlaV0VnS0hKbFoybHZibDk1TUQwbFpDa2dhWE1nYjNWMGMybGtaU0IwYUdVZ2FXMWhaMlVnWVhKbFlTQW9XWE5wZWowbFpDa3VDZ0JTYVdkb2RDQndiM05wZEdsdmJpQnZaaUIwYUdVZ1pHVmpiMlJsWkNCaGNtVmhJQ2h5WldkcGIyNWZlREU5SldRcElHbHpJRzkxZEhOcFpHVWdkR2hsSUdsdFlXZGxJR0Z5WldFZ0tGaHphWG85SldRcExnb0FUR1ZtZENCd2IzTnBkR2x2YmlCdlppQjBhR1VnWkdWamIyUmxaQ0JoY21WaElDaHlaV2RwYjI1ZmVEQTlKV1FwSUdseklHOTFkSE5wWkdVZ2RHaGxJR2x0WVdkbElHRnlaV0VnS0ZoemFYbzlKV1FwTGdvQVFtOTBkRzl0SUhCdmMybDBhVzl1SUc5bUlIUm9aU0JrWldOdlpHVmtJR0Z5WldFZ0tISmxaMmx2Ymw5NU1UMGxaQ2tnYVhNZ2IzVjBjMmxrWlNCMGFHVWdhVzFoWjJVZ1lYSmxZU0FvV1U5emFYbzlKV1FwTGdvQVZYQWdjRzl6YVhScGIyNGdiMllnZEdobElHUmxZMjlrWldRZ1lYSmxZU0FvY21WbmFXOXVYM2t3UFNWa0tTQnBjeUJ2ZFhSemFXUmxJSFJvWlNCcGJXRm5aU0JoY21WaElDaFpUM05wZWowbFpDa3VDZ0JTYVdkb2RDQndiM05wZEdsdmJpQnZaaUIwYUdVZ1pHVmpiMlJsWkNCaGNtVmhJQ2h5WldkcGIyNWZlREU5SldRcElHbHpJRzkxZEhOcFpHVWdkR2hsSUdsdFlXZGxJR0Z5WldFZ0tGaFBjMmw2UFNWa0tTNEtBRXhsWm5RZ2NHOXphWFJwYjI0Z2IyWWdkR2hsSUdSbFkyOWtaV1FnWVhKbFlTQW9jbVZuYVc5dVgzZ3dQU1ZrS1NCcGN5QnZkWFJ6YVdSbElIUm9aU0JwYldGblpTQmhjbVZoSUNoWVQzTnBlajBsWkNrdUNnQlRhWHBsSUhnZ2IyWWdkR2hsSUdSbFkyOWtaV1FnWTI5dGNHOXVaVzUwSUdsdFlXZGxJR2x6SUdsdVkyOXljbVZqZENBb1kyOXRjRnNsWkYwdWR6MGxaQ2t1Q2dCVGFYcGxJSGtnYjJZZ2RHaGxJR1JsWTI5a1pXUWdZMjl0Y0c5dVpXNTBJR2x0WVdkbElHbHpJR2x1WTI5eWNtVmpkQ0FvWTI5dGNGc2xaRjB1YUQwbFpDa3VDZ0JVYVd4bElISmxZV1FzSUdSbFkyOWtaV1FnWVc1a0lIVndaR0YwWldRZ2FYTWdibTkwSUhSb1pTQmtaWE5wY21Wa0lHOXVaU0FvSldRZ2RuTWdKV1FwTGdvQVNXNTJZV3hwWkNCamIyMXdiMjVsYm5RZ2FXNWtaWGdnSldRZ0tENDlJQ1ZrS1M0S0FHOXdhbDl5WldGa1gyaGxZV1JsY2lncElITm9iM1ZzWkNCaVpTQmpZV3hzWldRZ1ltVm1iM0psSUc5d2FsOXpaWFJmWkdWamIyUmxaRjlqYjIxd2IyNWxiblJ6S0NrdUNnQk5aVzF2Y25rZ1lXeHNiMk5oZEdsdmJpQm1ZV2xzZFhKbElHbHVJRzl3YWw5cWNESmZZWEJ3YkhsZmNHTnNjaWdwTGdvQWFXMWhaMlV0UG1OdmJYQnpXeVZrWFM1a1lYUmhJRDA5SUU1VlRFd2dhVzRnYjNCcVgycHdNbDloY0hCc2VWOXdZMnh5S0NrdUNnQnBiblpoYkdsa0lHSnZlQ0J6YVhwbElDVmtJQ2dsZUNrS0FFWmhhV3dnZEc4Z2NtVmhaQ0IwYUdVZ1kzVnljbVZ1ZENCdFlYSnJaWElnYzJWbmJXVnVkQ0FvSlNONEtRb0FSWEp5YjNJZ2QybDBhQ0JUU1ZvZ2JXRnlhMlZ5T2lCSlNFUlNJSGNvSlhVcElHZ29KWFVwSUhaekxpQlRTVm9nZHlnbGRTa2dhQ2dsZFNrS0FFVnljbTl5SUhKbFlXUnBibWNnUTA5RElHMWhjbXRsY2lBb1ltRmtJRzUxYldKbGNpQnZaaUJqYjIxd2IyNWxiblJ6S1FvQVNXNTJZV3hwWkNCdWRXMWlaWElnYjJZZ2RHbHNaWE1nT2lBbGRTQjRJQ1YxSUNodFlYaHBiWFZ0SUdacGVHVmtJR0o1SUdwd1pXY3lNREF3SUc1dmNtMGdhWE1nTmpVMU16VWdkR2xzWlhNcENnQkpiblpoYkdsa0lHNTFiV0psY2lCdlppQmpiMjF3YjI1bGJuUnpJQ2hwYUdSeUtRb0FUbTkwSUdWdWIzVm5hQ0J0WlcxdmNua2dkRzhnYUdGdVpHeGxJR2x0WVdkbElHaGxZV1JsY2lBb2FXaGtjaWtLQUZkeWIyNW5JSFpoYkhWbGN5Qm1iM0k2SUhjb0pXUXBJR2dvSldRcElHNTFiV052YlhCektDVmtLU0FvYVdoa2Npa0tBRWx1ZG1Gc2FXUWdkbUZzZFdWeklHWnZjaUJqYjIxd0lEMGdKV1FnT2lCa2VEMGxkU0JrZVQwbGRTQW9jMmh2ZFd4a0lHSmxJR0psZEhkbFpXNGdNU0JoYm1RZ01qVTFJR0ZqWTI5eVpHbHVaeUIwYnlCMGFHVWdTbEJGUnpJd01EQWdibTl5YlNrS0FFSmhaQ0JwYldGblpTQm9aV0ZrWlhJZ1ltOTRJQ2hpWVdRZ2MybDZaU2tLQUVKaFpDQkRUMHhTSUdobFlXUmxjaUJpYjNnZ0tHSmhaQ0J6YVhwbEtRb0FRbUZrSUVKUVEwTWdhR1ZoWkdWeUlHSnZlQ0FvWW1Ga0lITnBlbVVwQ2dCRmNuSnZjaUIzYVhSb0lGTkpXaUJ0WVhKclpYSTZJRzVsWjJGMGFYWmxJRzl5SUhwbGNtOGdhVzFoWjJVZ2MybDZaU0FvSld4c1pDQjRJQ1ZzYkdRcENnQnphMmx3T2lCelpXZHRaVzUwSUhSdmJ5QnNiMjVuSUNnbFpDa2dkMmwwYUNCdFlYZ2dLQ1ZrS1NCbWIzSWdZMjlrWldKc2IyTnJJQ1ZrSUNod1BTVmtMQ0JpUFNWa0xDQnlQU1ZrTENCalBTVmtLUW9BY21WaFpEb2djMlZuYldWdWRDQjBiMjhnYkc5dVp5QW9KV1FwSUhkcGRHZ2diV0Y0SUNnbFpDa2dabTl5SUdOdlpHVmliRzlqYXlBbFpDQW9jRDBsWkN3Z1lqMGxaQ3dnY2owbFpDd2dZejBsWkNrS0FFUmxjM0JwZEdVZ1NsQXlJRUpRUXlFOU1qVTFMQ0J3Y21WamFYTnBiMjRnWVc1a0wyOXlJSE5uYm1RZ2RtRnNkV1Z6SUdadmNpQmpiMjF3V3lWa1hTQnBjeUJrYVdabVpYSmxiblFnZEdoaGJpQmpiMjF3V3pCZE9nb2dJQ0FnSUNBZ0lGc3dYU0J3Y21WaktDVmtLU0J6WjI1a0tDVmtLU0JiSldSZElIQnlaV01vSldRcElITm5ibVFvSldRcENnQmlZV1FnWTI5dGNHOXVaVzUwSUc1MWJXSmxjaUJwYmlCU1IwNGdLQ1ZrSUhkb1pXNGdkR2hsY21VZ1lYSmxJRzl1YkhrZ0pXUXBDZ0JGY25KdmNpQjNhWFJvSUZOSldpQnRZWEpyWlhJNklHNTFiV0psY2lCdlppQmpiMjF3YjI1bGJuUWdhWE1nYm05MElHTnZiWEJoZEdsaWJHVWdkMmwwYUNCMGFHVWdjbVZ0WVdsdWFXNW5JRzUxYldKbGNpQnZaaUJ3WVhKaGJXVjBaWEp6SUNnZ0pXUWdkbk1nSldRcENnQkZjbkp2Y2lCM2FYUm9JRk5KV2lCdFlYSnJaWEk2SUdsdWRtRnNhV1FnZEdsc1pTQnphWHBsSUNoMFpIZzZJQ1ZrTENCMFpIazZJQ1ZrS1FvQVFtRmtJRU5QVEZJZ2FHVmhaR1Z5SUdKdmVDQW9ZbUZrSUhOcGVtVTZJQ1ZrS1FvQVFtRmtJRU5QVEZJZ2FHVmhaR1Z5SUdKdmVDQW9RMGxGVEdGaUxDQmlZV1FnYzJsNlpUb2dKV1FwQ2dCUVZFVlNUU0JqYUdWamF5Qm1ZV2xzZFhKbE9pQWxaQ0J5WlcxaGFXNXBibWNnWW5sMFpYTWdhVzRnWTI5a1pTQmliRzlqYXlBb0pXUWdkWE5sWkNBdklDVmtLUW9BVFdGc1ptOXliV1ZrSUVoVUlHTnZaR1ZpYkc5amF5NGdUMjVsSUc5bUlIUm9aU0JtYjJ4c2IzZHBibWNnWTI5dVpHbDBhVzl1SUdseklHNXZkQ0J0WlhRNklESWdQRDBnVTJOMWNDQThQU0J0YVc0b1RHTjFjQ3dnTkRBM09Ta0tBRWx1ZG1Gc2FXUWdkbUZzZFdWeklHWnZjaUJqYjIxd0lEMGdKV1FnT2lCd2NtVmpQU1YxSUNoemFHOTFiR1FnWW1VZ1ltVjBkMlZsYmlBeElHRnVaQ0F6T0NCaFkyTnZjbVJwYm1jZ2RHOGdkR2hsSUVwUVJVY3lNREF3SUc1dmNtMHVJRTl3Wlc1S2NHVm5JRzl1YkhrZ2MzVndjRzl5ZEhNZ2RYQWdkRzhnTXpFcENnQkpiblpoYkdsa0lHSnBkQ0J1ZFcxaVpYSWdKV1FnYVc0Z2IzQnFYM1F5WDNKbFlXUmZjR0ZqYTJWMFgyaGxZV1JsY2lncENnQlRkSEpsWVcwZ1pYSnliM0loQ2dCRmNuSnZjaUJ2YmlCM2NtbDBhVzVuSUhOMGNtVmhiU0VLQUZOMGNtVmhiU0J5WldGamFHVmtJR2wwY3lCbGJtUWdJUW9BUlhod1pXTjBaV1FnWVNCVFQwTWdiV0Z5YTJWeUlBb0FTVzUyWVd4cFpDQmliM2dnYzJsNlpTQWxaQ0JtYjNJZ1ltOTRJQ2NsWXlWakpXTWxZeWN1SUU1bFpXUWdKV1FnWW5sMFpYTXNJQ1ZrSUdKNWRHVnpJSEpsYldGcGJtbHVaeUFLQUUxaGJHWnZjbTFsWkNCSVZDQmpiMlJsWW14dlkyc3VJRVJsWTI5a2FXNW5JSFJvYVhNZ1kyOWtaV0pzYjJOcklHbHpJSE4wYjNCd1pXUXVJRlZmY1NCcGN5QnNZWEpuWlhJZ2RHaGhiaUI2WlhKdklHSnBkSEJzWVc1bGN5QXJJREVnQ2dCTllXeG1iM0p0WldRZ1NGUWdZMjlrWldKc2IyTnJMaUJFWldOdlpHbHVaeUIwYUdseklHTnZaR1ZpYkc5amF5QnBjeUJ6ZEc5d2NHVmtMaUJWWDNFZ2FYTnNZWEpuWlhJZ2RHaGhiaUJpYVhSd2JHRnVaWE1nS3lBeElBb0FRMDlNVWlCQ1QxZ2diV1YwYUNCMllXeDFaU0JwY3lCdWIzUWdZU0J5WldkMWJHRnlJSFpoYkhWbElDZ2xaQ2tzSUhOdklIZGxJSGRwYkd3Z2FXZHViM0psSUhSb1pTQmxiblJwY21VZ1EyOXNiM1Z5SUZOd1pXTnBabWxqWVhScGIyNGdZbTk0TGlBS0FGZG9hV3hsSUhKbFlXUnBibWNnUTBOUVgxRk9WRk5VV1NCbGJHVnRaVzUwSUdsdWMybGtaU0JSUTBRZ2IzSWdVVU5ESUcxaGNtdGxjaUJ6WldkdFpXNTBMQ0J1ZFcxaVpYSWdiMllnYzNWaVltRnVaSE1nS0NWa0tTQnBjeUJuY21WaGRHVnlJSFJ2SUU5UVNsOUtNa3RmVFVGWVFrRk9SRk1nS0NWa0tTNGdVMjhnZDJVZ2JHbHRhWFFnZEdobElHNTFiV0psY2lCdlppQmxiR1Z0Wlc1MGN5QnpkRzl5WldRZ2RHOGdUMUJLWDBveVMxOU5RVmhDUVU1RVV5QW9KV1FwSUdGdVpDQnphMmx3SUhSb1pTQnlaWE4wTGlBS0FFcFFNaUJKU0VSU0lHSnZlRG9nWTI5dGNISmxjM05wYjI0Z2RIbHdaU0JwYm1ScFkyRjBaU0IwYUdGMElIUm9aU0JtYVd4bElHbHpJRzV2ZENCaElHTnZibVp2Y20xcGJtY2dTbEF5SUdacGJHVWdLQ1ZrS1NBS0FGUnBiR1VnYVc1a1pYZ2djSEp2ZG1sa1pXUWdZbmtnZEdobElIVnpaWElnYVhNZ2FXNWpiM0p5WldOMElDVmtJQ2h0WVhnZ1BTQWxaQ2tnQ2dCRmNuSnZjaUJrWldOdlpHbHVaeUJqYjIxd2IyNWxiblFnSldRdUNsUm9aU0J1ZFcxaVpYSWdiMllnY21WemIyeDFkR2x2Ym5NZ2RHOGdjbVZ0YjNabElDZ2xaQ2tnYVhNZ1ozSmxZWFJsY2lCdmNpQmxjWFZoYkNCMGFHRnVJSFJvWlNCdWRXMWlaWElnYjJZZ2NtVnpiMngxZEdsdmJuTWdiMllnZEdocGN5QmpiMjF3YjI1bGJuUWdLQ1ZrS1FwTmIyUnBabmtnZEdobElHTndYM0psWkhWalpTQndZWEpoYldWMFpYSXVDZ29BU1cxaFoyVWdaR0YwWVNCb1lYTWdZbVZsYmlCMWNHUmhkR1ZrSUhkcGRHZ2dkR2xzWlNBbFpDNEtDZ0JCb1AwQUM0QWdJd0NsQUVNQVpnQ0RBTzZvRkFEZjJDTUF2aEJEQVAvMWd3QitJRlVBWDFFakFEVUFRd0JPUklNQXpzUVVBTS9NSXdEKzRrTUEvNW1EQUpZQXhRQS9NU01BcFFCREFGNUVnd0RPeUJRQTN4RWpBUDcwUXdELy9JTUFuZ0JWQUhjQUl3QTFBRU1BLy9HREFLNklGQUMzQUNNQS92aERBTy9rZ3dDT2lNVUFIeEVqQUtVQVF3Qm1BSU1BN3FnVUFOOVVJd0MrRUVNQTd5S0RBSDRnVlFCL0lpTUFOUUJEQUU1RWd3RE94QlFBdnhFakFQN2lRd0QzQUlNQWxnREZBRDhpSXdDbEFFTUFYa1NEQU03SUZBRFhBQ01BL3ZSREFQKzZnd0NlQUZVQWJ3QWpBRFVBUXdELzVvTUFyb2dVQUsraUl3RCsrRU1BNXdDREFJNkl4UUF2SWdJQXhRQ0VBSDRnQWdET3hDUUE5d0FDQVA2aVJBQldBQUlBbmdBVUFOY0FBZ0MrRUlRQVpnQUNBSzZJSkFEZkVRSUE3cWhFQURZQUFnQ09pQlFBSHhFQ0FNVUFoQUJ1QUFJQXpvZ2tBUCtJQWdEK3VFUUFUa1FDQUpZQUZBQzNBQUlBL3VTRUFGNUVBZ0NtQUNRQTV3QUNBTjVVUkFBdUlnSUFQZ0FVQUhjQUFnREZBSVFBZmlBQ0FNN0VKQUQvOFFJQS9xSkVBRllBQWdDZUFCUUF2eEVDQUw0UWhBQm1BQUlBcm9na0FPOGlBZ0R1cUVRQU5nQUNBSTZJRkFCL0lnSUF4UUNFQUc0QUFnRE9pQ1FBNytRQ0FQNjRSQUJPUkFJQWxnQVVBSytpQWdEKzVJUUFYa1FDQUtZQUpBRGYyQUlBM2xSRUFDNGlBZ0ErQUJRQVgxRUNBRlVBaEFCbUFBSUEzb2drQVA4eUFnRCtFVVFBVGtRQ0FLNEFGQUMzQUFJQWZqR0VBRjVSQWdER0FDUUExd0FDQU80Z1JBQWVFUUlBbmdBVUFIY0FBZ0JWQUlRQVhsUUNBTTVFSkFEbkFBSUEvdkZFQURZQUFnQ21BQlFBWDFVQ0FQNTBoQUErRVFJQXZpQWtBSDkwQWdEZXhFUUEvL2dDQUpZQUZBQXZJZ0lBVlFDRUFHWUFBZ0RlaUNRQTl3QUNBUDRSUkFCT1JBSUFyZ0FVQUkrSUFnQitNWVFBWGxFQ0FNWUFKQURQeUFJQTdpQkVBQjRSQWdDZUFCUUFid0FDQUZVQWhBQmVWQUlBemtRa0FOL1JBZ0QrOFVRQU5nQUNBS1lBRkFCL0lnSUEvblNFQUQ0UkFnQytJQ1FBdnlJQ0FON0VSQUR2SWdJQWxnQVVBRDh5QXdEZTFQMzAvL3dVQUQ0UlZRQ1BpQU1BdmpLRkFPY0FKUUJlVWY2cWYzSURBTTVFL2ZqdlJCUUFmbVJGQUsraUF3Q21BRjFWMzVuOThUWUEvdlZ2WWdNQTN0SDk5UC9tRkFCK2NWVUF2N0VEQUs2SWhRRGYxU1VBVGtUKzhuOW1Bd0RHQVAzNDcrSVVBRjVVUlFDZkVRTUFsZ0JkVmMvSS9mRWVFZTdJWndBREFON1UvZlQvOHhRQVBoRlZBTDhSQXdDK01vVUEzOWdsQUY1Ui9xb3ZJZ01BemtUOStQY0FGQUIrWkVVQW41Z0RBS1lBWFZYWEFQM3hOZ0QrOVc5RUF3RGUwZjMwLzdrVUFINXhWUUMzQUFNQXJvaUZBTi9jSlFCT1JQN3lkd0FEQU1ZQS9manY1QlFBWGxSRkFIOXpBd0NXQUYxVnY3ajk4UjRSN3NnL01nSUFwUUNFQUg1QUFnRGVFQ1FBM3hFQ0FQNXlSQUJXQUFJQXJxZ1VBTCt5QWdDV0FJUUFaZ0FDQU1ZQUpBRG5BQUlBN3NoRUFDNGlBZ0NPaUJRQWR3QUNBS1VBaEFCdUFBSUF6b2drQVBjQUFnRCtrVVFBTmdBQ0FLNmlGQUN2cWdJQS9yaUVBRjRBQWdDK0FDUUF6OFFDQU81RVJBRC85QUlBUGlJVUFCOFJBZ0NsQUlRQWZrQUNBTjRRSkFEL21RSUEvbkpFQUZZQUFnQ3VxQlFBdHdBQ0FKWUFoQUJtQUFJQXhnQWtBTmNBQWdEdXlFUUFMaUlDQUk2SUZBQlBSQUlBcFFDRUFHNEFBZ0RPaUNRQTcrSUNBUDZSUkFBMkFBSUFycUlVQUg5RUFnRCt1SVFBWGdBQ0FMNEFKQUNmQUFJQTdrUkVBUDkyQWdBK0loUUFQekVEQU1ZQWhRRC8yZjN5Zm1UKzhiK1pBd0N1b2lVQTcyYjk5RllBN3VKL2N3TUF2cGhGQVBjQS9maG1BUDUybjRnREFJNklGUURmMWFVQUxpTGVtRTlFQXdDK3NvVUEvL3o5OG00aWxnQzNBQU1BcnFvbEFOL1IvZlEyQU43VWIyUURBSzZvUlFEdjZ2MzRYa1R1Nkg5eEF3QStNaFVBejhTbEFQLzZ6b2cvTVFNQXhnQ0ZBUDkzL2ZKK1pQN3h2N01EQUs2aUpRRG5BUDMwVmdEdTRuY0FBd0MrbUVVQTcrVDkrR1lBL25aL1pnTUFqb2dWQU5jQXBRQXVJdDZZUHpNREFMNnloUUQvZGYzeWJpS1dBSitSQXdDdXFpVUEzNW45OURZQTN0UmZVUU1BcnFoRkFPL3MvZmhlUk83b2YzSURBRDR5RlFDL3NhVUEvL1BPaUI4UkF3RGVWUDN5SGhFVUFINWsvdmpQekFNQXZwRkZBTzhpSlFBdUl2N3pqNGdEQU1ZQWhRRDNBQlFBWGhIKy9LK29Bd0NtQURVQTM4ajk4VDR4L21adlpBTUF6c2o5OHYvMUZBQm1BUDcwdjdvREFLNGlSUURuQUNVQVBqTCs2bjl6QXdDK3NvVUEzMVVVQUZZQWZuR2ZFUU1BbGdBMUFNL0UvZkUrTSs3b1QwUURBTjVVL2ZJZUVSUUFmbVQrK0wrWkF3QytrVVVBNytJbEFDNGkvdk4vWmdNQXhnQ0ZBTy9rRkFCZUVmNzhuNWdEQUtZQU5RRFhBUDN4UGpIK1ptOGlBd0RPeVAzeS83a1VBR1lBL3ZTM0FBTUFyaUpGQU4vUkpRQStNdjdxZHdBREFMNnloUUR2N0JRQVZnQitjWDl5QXdDV0FEVUF2N2o5OFQ0ejd1aGZWUHp4M3RIOSt0Y0EvUGdXQVAzL2YzVDg5SDV4L2ZPL3Mvenk3K3J1NkU5RS9QR3VJZ1VBdjdqOCtQY0EvdngzQVB6MFhoSDk5WDkxL1BMZjJPN2lQelA4OGI2eS9mclBpUHo0Ly92OS8zOXovUFJ1QVAzenR3RDg4dTltL3ZrL01menhuZ0FGQUwrNi9Qai8vZjcyWndEODlDWUEvZldQaVB6eTM5emUxQzhpL1BIZTBmMzZ6OFQ4K0JZQS9mOS9jdnowZm5IOTg3K1ovUEx2N083b1J3RDg4YTRpQlFDbkFQejQvL2YrL0ZjQS9QUmVFZjMxbHdEODh0L1Y3dUkzQVB6eHZyTDkrc2NBL1BqLy92My9mMmI4OUc0QS9mT3ZxUHp5NXdEKytUOHkvUEdlQUFVQXY3SDgrTy9rL3ZaZlZQejBKZ0Q5OVljQS9QTGZtZDdVSHhFVEFHVUFRd0RlQUlNQWpZZ2pBRTVFRXdDbEFFTUFyb2lEQURVQUl3RFhBQk1BeFFCREFKNEFnd0JWQUNNQUxpSVRBSlVBUXdCK0FJTUEvaEFqQUhjQUV3QmxBRU1Bem9pREFJMklJd0FlRVJNQXBRQkRBRjRBZ3dBMUFDTUE1d0FUQU1VQVF3QytBSU1BVlFBakFQOFJFd0NWQUVNQVBnQ0RBTzVBSXdDdm9oTUFaUUJEQU40QWd3Q05pQ01BVGtRVEFLVUFRd0N1aUlNQU5RQWpBTzlFRXdERkFFTUFuZ0NEQUZVQUl3QXVJaE1BbFFCREFINEFnd0QrRUNNQXR3QVRBR1VBUXdET2lJTUFqWWdqQUI0UkV3Q2xBRU1BWGdDREFEVUFJd0RQeEJNQXhRQkRBTDRBZ3dCVkFDTUE5d0FUQUpVQVF3QStBSU1BN2tBakFHOEFBUUNFQUFFQVZnQUJBQlFBQVFEWEFBRUFKQUFCQUpZQUFRQkZBQUVBZHdBQkFJUUFBUURHQUFFQUZBQUJBSStJQVFBa0FBRUE5d0FCQURVQUFRQXZJZ0VBaEFBQkFQNUFBUUFVQUFFQXR3QUJBQ1FBQVFDL0FBRUFSUUFCQUdjQUFRQ0VBQUVBcGdBQkFCUUFBUUJQUkFFQUpBQUJBT2NBQVFBMUFBRUFQeEVCQUlRQUFRQldBQUVBRkFBQkFNOEFBUUFrQUFFQWxnQUJBRVVBQVFCdkFBRUFoQUFCQU1ZQUFRQVVBQUVBbndBQkFDUUFBUUR2QUFFQU5RQUJBRDh5QVFDRUFBRUEva0FCQUJRQUFRQ3ZBQUVBSkFBQkFQOUVBUUJGQUFFQVh3QUJBSVFBQVFDbUFBRUFGQUFCQUg4QUFRQWtBQUVBM3dBQkFEVUFBUUFmRVFFQUpBQUJBRllBQVFDRkFBRUF2d0FCQUJRQUFRRDNBQUVBeGdBQkFIY0FBUUFrQUFFQS8vZ0JBRVVBQVFCL0FBRUFGQUFCQU44QUFRQ21BQUVBUHpFQkFDUUFBUUF1SWdFQWhRQUJBTGNBQVFBVUFBRUE3MFFCQUs2aUFRQm5BQUVBSkFBQkFQOVJBUUJGQUFFQWx3QUJBQlFBQVFEUEFBRUFOZ0FCQUQ4aUFRQWtBQUVBVmdBQkFJVUFBUUMvc2dFQUZBQUJBTzlBQVFER0FBRUFid0FCQUNRQUFRRC9jZ0VBUlFBQkFKOEFBUUFVQUFFQTF3QUJBS1lBQVFCUFJBRUFKQUFCQUM0aUFRQ0ZBQUVBcjZnQkFCUUFBUURuQUFFQXJxSUJBRjhBQVFBa0FBRUEvMFFCQUVVQUFRQ1BpQUVBRkFBQkFLK3FBUUEyQUFFQUh4RUNBUDc0SkFCV0FBSUF0Z0NGQVA5bUFnRE9BQlFBSGhFQ0FKWUFOUUN2cUFJQTlnQWtBRDR4QWdDbUFFVUF2N01DQUw2eUZBRC85UUlBWmdCK1VWOVVBZ0QrOGlRQUxpSUNBSzRpaFFEdlJBSUF4Z0FVQVAvMEFnQjJBRFVBZjBRQ0FONUFKQUErTWdJQW5nQkZBTmNBQWdDK2lCUUEvL29DQUY0Ui92RlBSQUlBL3Zna0FGWUFBZ0MyQUlVQTc4Z0NBTTRBRkFBZUVRSUFsZ0ExQUkrSUFnRDJBQ1FBUGpFQ0FLWUFSUURmUkFJQXZySVVBUCtvQWdCbUFINVJid0FDQVA3eUpBQXVJZ0lBcmlLRkFPY0FBZ0RHQUJRQTcrSUNBSFlBTlFCL2NnSUEza0FrQUQ0eUFnQ2VBRVVBdjdFQ0FMNklGQUQvY3dJQVhoSCs4VDh6QVFDRUFBRUE3aUFCQU1VQUFRRFB4QUVBUkFBQkFQOHlBUUFWQUFFQWo0Z0JBSVFBQVFCbUFBRUFKUUFCQUs4QUFRQkVBQUVBN3lJQkFLWUFBUUJmQUFFQWhBQUJBRTVFQVFERkFBRUF6OHdCQUVRQUFRRDNBQUVBRlFBQkFHOEFBUUNFQUFFQVZnQUJBQ1VBQVFDZkFBRUFSQUFCQU44QUFRRCtNQUVBTHlJQkFJUUFBUUR1SUFFQXhRQUJBTS9JQVFCRUFBRUEveEVCQUJVQUFRQjNBQUVBaEFBQkFHWUFBUUFsQUFFQWZ3QUJBRVFBQVFEbkFBRUFwZ0FCQURjQUFRQ0VBQUVBVGtRQkFNVUFBUUMzQUFFQVJBQUJBTDhBQVFBVkFBRUFQd0FCQUlRQUFRQldBQUVBSlFBQkFKY0FBUUJFQUFFQTF3QUJBUDR3QVFBZkVRSUE3cWhFQUk2SUFnRFdBTVVBLy9NQ0FQNzhKUUErQUFJQXRnQlZBTi9ZQWdEKytFUUFaZ0FDQUg0Z2hRRC9tUUlBNWdEMUFEWUFBZ0NtQUJVQW53QUNBUDd5UkFCMkFBSUF6a1RGQVA5MkFnRCs4U1VBVGtRQ0FLNEFWUURQeUFJQS92UkVBRjVFQWdDK0VJVUE3K1FDQU41VTlRQWVFUUlBbGdBVkFDOGlBZ0R1cUVRQWpvZ0NBTllBeFFELytnSUEvdndsQUQ0QUFnQzJBRlVBdnhFQ0FQNzRSQUJtQUFJQWZpQ0ZBTzhpQWdEbUFQVUFOZ0FDQUtZQUZRQi9JZ0lBL3ZKRUFIWUFBZ0RPUk1VQS85VUNBUDd4SlFCT1JBSUFyZ0JWQUc4QUFnRCs5RVFBWGtRQ0FMNFFoUURmRVFJQTNsVDFBQjRSQWdDV0FCVUFYMUVEQVBZQUZBQWVFVVFBam9pbEFOL1VBd0N1b2xVQS8zWWtBRDRpdGdDdnFnTUE1Z0FVQVAvMVJBQm1BSVVBejh3REFKNEF4UUR2UkNRQU5nRCsrSDh4QXdEdTZCUUEvL0ZFQUhZQXBRRFB4QU1BZmlKVkFOL1JKQUJPUlA3MFgxRURBTllBRkFEdjRrUUFYa1NGQUw4aUF3Q1dBTVVBMzhna0FDNGkvdkp2SWdNQTlnQVVBQjRSUkFDT2lLVUF2N0VEQUs2aVZRRC9NeVFBUGlLMkFLK29Bd0RtQUJRQS83bEVBR1lBaFFDL3FBTUFuZ0RGQU8va0pBQTJBUDc0YjJRREFPN29GQUQvL0VRQWRnQ2xBTS9JQXdCK0lsVUE3K29rQUU1RS92Ui9kQU1BMWdBVUFQLzZSQUJlUklVQXY3SURBSllBeFFEZlJDUUFMaUwrOGo4eDh3RCsrdjN4TmdBRUFMNHlkUURmRWZNQTNsVDk4dS9rMVFCK2NmNzhmM1B6QVA3ei9mZ2VFUVFBbGdCVkFMK3g4d0RPQUxVQTM5ajk5R1lBL3JsZlZQTUEvbmI5OFNZQUJBQ21BSFVBbndEekFLNEEvZkwvOTlVQVJnRCs5WDkwOHdEbUFQMzRGZ0FFQUlZQVZRQ1BpUE1BeGdDMUFPL2kvZlJlRWU2b1B4SHpBUDc2L2ZFMkFBUUF2akoxQU4vUjh3RGVWUDN5Ly92VkFINXgvdngvUlBNQS92UDkrQjRSQkFDV0FGVUFmM0x6QU00QXRRRHZJdjMwWmdEK3VVOUU4d0QrZHYzeEpnQUVBS1lBZFFDL0VmTUFyZ0Q5OHYvLzFRQkdBUDcxUHpMekFPWUEvZmdXQUFRQWhnQlZBRzhBOHdER0FMVUF2N2o5OUY0UjdxZ3ZJZ0JCckowQkM2UWVBUUFBQUFFQUFBQUJBQUFBQWdBQUFBSUFBQUFDQUFBQUF3QUFBQU1BQUFBRUFBQUFCUUFBQUxjaFFpRm5JVUloRVJFUkVUTXpNek4zZDNkM0FBQUFBQUFBQUFBQlZnQUFBQUFBQUJCUEFBQWdUd0FBQVZZQUFBRUFBQUFnVHdBQUVFOEFBQUUwQUFBQUFBQUFNRThBQUxCUEFBQUJOQUFBQVFBQUFFQlBBQURBVHdBQUFSZ0FBQUFBQUFCUVR3QUFFRkFBQUFFWUFBQUJBQUFBWUU4QUFDQlFBQURCQ2dBQUFBQUFBSEJQQUFCd1VBQUF3UW9BQUFFQUFBQ0FUd0FBZ0ZBQUFDRUZBQUFBQUFBQWtFOEFBSkJTQUFBaEJRQUFBUUFBQUtCUEFBQ2dVZ0FBSVFJQUFBQUFBQUN3VXdBQUVGTUFBQ0VDQUFBQkFBQUF3Rk1BQUNCVEFBQUJWZ0FBQUFBQUFOQlBBQURBVHdBQUFWWUFBQUVBQUFEZ1R3QUFzRThBQUFGVUFBQUFBQUFBOEU4QUFMQlFBQUFCVkFBQUFRQUFBQUJRQUFEQVVBQUFBVWdBQUFBQUFBQVFVQUFBc0ZBQUFBRklBQUFCQUFBQUlGQUFBTUJRQUFBQk9BQUFBQUFBQURCUUFBQ3dVQUFBQVRnQUFBRUFBQUJBVUFBQXdGQUFBQUV3QUFBQUFBQUFVRkFBQUJCUkFBQUJNQUFBQVFBQUFHQlFBQUFnVVFBQUFTUUFBQUFBQUFCd1VBQUFNRkVBQUFFa0FBQUJBQUFBZ0ZBQUFFQlJBQUFCSEFBQUFBQUFBSkJRQUFCd1VRQUFBUndBQUFFQUFBQ2dVQUFBZ0ZFQUFBRVdBQUFBQUFBQWtGSUFBSkJSQUFBQkZnQUFBUUFBQUtCU0FBQ2dVUUFBQVZZQUFBQUFBQURRVUFBQXdGQUFBQUZXQUFBQkFBQUE0RkFBQUxCUUFBQUJWQUFBQUFBQUFQQlFBQUN3VUFBQUFWUUFBQUVBQUFBQVVRQUF3RkFBQUFGUkFBQUFBQUFBRUZFQUFOQlFBQUFCVVFBQUFRQUFBQ0JSQUFEZ1VBQUFBVWdBQUFBQUFBQXdVUUFBOEZBQUFBRklBQUFCQUFBQVFGRUFBQUJSQUFBQk9BQUFBQUFBQUZCUkFBQVFVUUFBQVRnQUFBRUFBQUJnVVFBQUlGRUFBQUUwQUFBQUFBQUFjRkVBQURCUkFBQUJOQUFBQVFBQUFJQlJBQUJBVVFBQUFUQUFBQUFBQUFDUVVRQUFVRkVBQUFFd0FBQUJBQUFBb0ZFQUFHQlJBQUFCS0FBQUFBQUFBTEJSQUFCUVVRQUFBU2dBQUFFQUFBREFVUUFBWUZFQUFBRWtBQUFBQUFBQTBGRUFBSEJSQUFBQkpBQUFBUUFBQU9CUkFBQ0FVUUFBQVNJQUFBQUFBQUR3VVFBQWtGRUFBQUVpQUFBQkFBQUFBRklBQUtCUkFBQUJIQUFBQUFBQUFCQlNBQUN3VVFBQUFSd0FBQUVBQUFBZ1VnQUF3RkVBQUFFWUFBQUFBQUFBTUZJQUFOQlJBQUFCR0FBQUFRQUFBRUJTQUFEZ1VRQUFBUllBQUFBQUFBQlFVZ0FBOEZFQUFBRVdBQUFCQUFBQVlGSUFBQUJTQUFBQkZBQUFBQUFBQUhCU0FBQVFVZ0FBQVJRQUFBRUFBQUNBVWdBQUlGSUFBQUVTQUFBQUFBQUFrRklBQURCU0FBQUJFZ0FBQVFBQUFLQlNBQUJBVWdBQUFSRUFBQUFBQUFDd1VnQUFVRklBQUFFUkFBQUJBQUFBd0ZJQUFHQlNBQURCQ2dBQUFBQUFBTkJTQUFCd1VnQUF3UW9BQUFFQUFBRGdVZ0FBZ0ZJQUFNRUpBQUFBQUFBQThGSUFBSkJTQUFEQkNRQUFBUUFBQUFCVEFBQ2dVZ0FBb1FnQUFBQUFBQUFRVXdBQXNGSUFBS0VJQUFBQkFBQUFJRk1BQU1CU0FBQWhCUUFBQUFBQUFEQlRBQURRVWdBQUlRVUFBQUVBQUFCQVV3QUE0RklBQUVFRUFBQUFBQUFBVUZNQUFQQlNBQUJCQkFBQUFRQUFBR0JUQUFBQVV3QUFvUUlBQUFBQUFBQndVd0FBRUZNQUFLRUNBQUFCQUFBQWdGTUFBQ0JUQUFBaEFnQUFBQUFBQUpCVEFBQXdVd0FBSVFJQUFBRUFBQUNnVXdBQVFGTUFBRUVCQUFBQUFBQUFzRk1BQUZCVEFBQkJBUUFBQVFBQUFNQlRBQUJnVXdBQUVRRUFBQUFBQUFEUVV3QUFjRk1BQUJFQkFBQUJBQUFBNEZNQUFJQlRBQUNGQUFBQUFBQUFBUEJUQUFDUVV3QUFoUUFBQUFFQUFBQUFWQUFBb0ZNQUFFa0FBQUFBQUFBQUVGUUFBTEJUQUFCSkFBQUFBUUFBQUNCVUFBREFVd0FBSlFBQUFBQUFBQUF3VkFBQTBGTUFBQ1VBQUFBQkFBQUFRRlFBQU9CVEFBQVZBQUFBQUFBQUFGQlVBQUR3VXdBQUZRQUFBQUVBQUFCZ1ZBQUFBRlFBQUFrQUFBQUFBQUFBY0ZRQUFCQlVBQUFKQUFBQUFRQUFBSUJVQUFBZ1ZBQUFCUUFBQUFBQUFBQ1FWQUFBTUZRQUFBVUFBQUFCQUFBQW9GUUFBRUJVQUFBQkFBQUFBQUFBQUpCVUFBQlFWQUFBQVFBQUFBRUFBQUNnVkFBQVlGUUFBQUZXQUFBQUFBQUFzRlFBQUxCVUFBQUJWZ0FBQVFBQUFNQlVBQURBVkFBQUFBRURBd0VDQXdNRkJnY0hCZ1lIQndBQkF3TUJBZ01EQlFZSEJ3WUdCd2NGQmdjSEJnWUhCd2dJQ0FnSUNBZ0lCUVlIQndZR0J3Y0lDQWdJQ0FnSUNBRUNBd01DQWdNREJnWUhCd1lHQndjQkFnTURBZ0lEQXdZR0J3Y0dCZ2NIQmdZSEJ3WUdCd2NJQ0FnSUNBZ0lDQVlHQndjR0JnY0hDQWdJQ0FnSUNBZ0RBd1FFQXdNRUJBY0hCd2NIQndjSEF3TUVCQU1EQkFRSEJ3Y0hCd2NIQndjSEJ3Y0hCd2NIQ0FnSUNBZ0lDQWdIQndjSEJ3Y0hCd2dJQ0FnSUNBZ0lBd01FQkFNREJBUUhCd2NIQndjSEJ3TURCQVFEQXdRRUJ3Y0hCd2NIQndjSEJ3Y0hCd2NIQndnSUNBZ0lDQWdJQndjSEJ3Y0hCd2NJQ0FnSUNBZ0lDQUVDQXdNQ0FnTURCZ1lIQndZR0J3Y0JBZ01EQWdJREF3WUdCd2NHQmdjSEJnWUhCd1lHQndjSUNBZ0lDQWdJQ0FZR0J3Y0dCZ2NIQ0FnSUNBZ0lDQWdDQWdNREFnSURBd1lHQndjR0JnY0hBZ0lEQXdJQ0F3TUdCZ2NIQmdZSEJ3WUdCd2NHQmdjSENBZ0lDQWdJQ0FnR0JnY0hCZ1lIQndnSUNBZ0lDQWdJQXdNRUJBTURCQVFIQndjSEJ3Y0hCd01EQkFRREF3UUVCd2NIQndjSEJ3Y0hCd2NIQndjSEJ3Z0lDQWdJQ0FnSUJ3Y0hCd2NIQndjSUNBZ0lDQWdJQ0FNREJBUURBd1FFQndjSEJ3Y0hCd2NEQXdRRUF3TUVCQWNIQndjSEJ3Y0hCd2NIQndjSEJ3Y0lDQWdJQ0FnSUNBY0hCd2NIQndjSENBZ0lDQWdJQ0FnQUFRVUdBUUlHQmdNREJ3Y0RBd2NIQUFFRkJnRUNCZ1lEQXdjSEF3TUhCd01EQndjREF3Y0hCQVFIQndRRUJ3Y0RBd2NIQXdNSEJ3UUVCd2NFQkFjSEFRSUdCZ0lDQmdZREF3Y0hBd01IQndFQ0JnWUNBZ1lHQXdNSEJ3TURCd2NEQXdjSEF3TUhCd1FFQndjRUJBY0hBd01IQndNREJ3Y0VCQWNIQkFRSEJ3VUdDQWdHQmdnSUJ3Y0lDQWNIQ0FnRkJnZ0lCZ1lJQ0FjSENBZ0hCd2dJQndjSUNBY0hDQWdIQndnSUJ3Y0lDQWNIQ0FnSEJ3Z0lCd2NJQ0FjSENBZ0dCZ2dJQmdZSUNBY0hDQWdIQndnSUJnWUlDQVlHQ0FnSEJ3Z0lCd2NJQ0FjSENBZ0hCd2dJQndjSUNBY0hDQWdIQndnSUJ3Y0lDQWNIQ0FnSEJ3Z0lBUUlHQmdJQ0JnWURBd2NIQXdNSEJ3RUNCZ1lDQWdZR0F3TUhCd01EQndjREF3Y0hBd01IQndRRUJ3Y0VCQWNIQXdNSEJ3TURCd2NFQkFjSEJBUUhCd0lDQmdZQ0FnWUdBd01IQndNREJ3Y0NBZ1lHQWdJR0JnTURCd2NEQXdjSEF3TUhCd01EQndjRUJBY0hCQVFIQndNREJ3Y0RBd2NIQkFRSEJ3UUVCd2NHQmdnSUJnWUlDQWNIQ0FnSEJ3Z0lCZ1lJQ0FZR0NBZ0hCd2dJQndjSUNBY0hDQWdIQndnSUJ3Y0lDQWNIQ0FnSEJ3Z0lCd2NJQ0FjSENBZ0hCd2dJQmdZSUNBWUdDQWdIQndnSUJ3Y0lDQVlHQ0FnR0JnZ0lCd2NJQ0FjSENBZ0hCd2dJQndjSUNBY0hDQWdIQndnSUJ3Y0lDQWNIQ0FnSEJ3Z0lCd2NJQ0FBQkF3TUJBZ01EQlFZSEJ3WUdCd2NBQVFNREFRSURBd1VHQndjR0JnY0hCUVlIQndZR0J3Y0lDQWdJQ0FnSUNBVUdCd2NHQmdjSENBZ0lDQWdJQ0FnQkFnTURBZ0lEQXdZR0J3Y0dCZ2NIQVFJREF3SUNBd01HQmdjSEJnWUhCd1lHQndjR0JnY0hDQWdJQ0FnSUNBZ0dCZ2NIQmdZSEJ3Z0lDQWdJQ0FnSUF3TUVCQU1EQkFRSEJ3Y0hCd2NIQndNREJBUURBd1FFQndjSEJ3Y0hCd2NIQndjSEJ3Y0hCd2dJQ0FnSUNBZ0lCd2NIQndjSEJ3Y0lDQWdJQ0FnSUNBTURCQVFEQXdRRUJ3Y0hCd2NIQndjREF3UUVBd01FQkFjSEJ3Y0hCd2NIQndjSEJ3Y0hCd2NJQ0FnSUNBZ0lDQWNIQndjSEJ3Y0hDQWdJQ0FnSUNBZ0JBZ01EQWdJREF3WUdCd2NHQmdjSEFRSURBd0lDQXdNR0JnY0hCZ1lIQndZR0J3Y0dCZ2NIQ0FnSUNBZ0lDQWdHQmdjSEJnWUhCd2dJQ0FnSUNBZ0lBZ0lEQXdJQ0F3TUdCZ2NIQmdZSEJ3SUNBd01DQWdNREJnWUhCd1lHQndjR0JnY0hCZ1lIQndnSUNBZ0lDQWdJQmdZSEJ3WUdCd2NJQ0FnSUNBZ0lDQU1EQkFRREF3UUVCd2NIQndjSEJ3Y0RBd1FFQXdNRUJBY0hCd2NIQndjSEJ3Y0hCd2NIQndjSUNBZ0lDQWdJQ0FjSEJ3Y0hCd2NIQ0FnSUNBZ0lDQWdEQXdRRUF3TUVCQWNIQndjSEJ3Y0hBd01FQkFNREJBUUhCd2NIQndjSEJ3Y0hCd2NIQndjSENBZ0lDQWdJQ0FnSEJ3Y0hCd2NIQndnSUNBZ0lDQWdJQUFNQkJBTUdCQWNCQkFJRkJBY0ZCd0FEQVFRREJnUUhBUVFDQlFRSEJRY0JCQUlGQkFjRkJ3SUZBZ1VGQndVSEFRUUNCUVFIQlFjQ0JRSUZCUWNGQndNR0JBY0dDQWNJQkFjRkJ3Y0lCd2dEQmdRSEJnZ0hDQVFIQlFjSENBY0lCQWNGQndjSUJ3Z0ZCd1VIQndnSENBUUhCUWNIQ0FjSUJRY0ZCd2NJQndnQkJBSUZCQWNGQndJRkFnVUZCd1VIQVFRQ0JRUUhCUWNDQlFJRkJRY0ZCd0lGQWdVRkJ3VUhBZ1VDQlFVSEJRY0NCUUlGQlFjRkJ3SUZBZ1VGQndVSEJBY0ZCd2NJQndnRkJ3VUhCd2dIQ0FRSEJRY0hDQWNJQlFjRkJ3Y0lCd2dGQndVSEJ3Z0hDQVVIQlFjSENBY0lCUWNGQndjSUJ3Z0ZCd1VIQndnSENBTUdCQWNHQ0FjSUJBY0ZCd2NJQndnREJnUUhCZ2dIQ0FRSEJRY0hDQWNJQkFjRkJ3Y0lCd2dGQndVSEJ3Z0hDQVFIQlFjSENBY0lCUWNGQndjSUJ3Z0dDQWNJQ0FnSUNBY0lCd2dJQ0FnSUJnZ0hDQWdJQ0FnSENBY0lDQWdJQ0FjSUJ3Z0lDQWdJQndnSENBZ0lDQWdIQ0FjSUNBZ0lDQWNJQndnSUNBZ0lCQWNGQndjSUJ3Z0ZCd1VIQndnSENBUUhCUWNIQ0FjSUJRY0ZCd2NJQndnRkJ3VUhCd2dIQ0FVSEJRY0hDQWNJQlFjRkJ3Y0lCd2dGQndVSEJ3Z0hDQWNJQndnSUNBZ0lCd2dIQ0FnSUNBZ0hDQWNJQ0FnSUNBY0lCd2dJQ0FnSUJ3Z0hDQWdJQ0FnSENBY0lDQWdJQ0FjSUJ3Z0lDQWdJQndnSENBZ0lDQWdKQ1FvS0NRa0tDZ3dNRFFzTURBMExDUWtLQ2drSkNnb01EQXNOREF3TERRd01EUTBNREFzTERBa05DZ2tNQ2dzTURBc0xEQXdORFF3SkN3b0pEQW9OQ1FrS0Nna0pDZ29NREEwTERBd05Dd2tKQ2dvSkNRb0tEQXdMRFF3TUN3ME1EQTBOREF3TEN3d0pEUW9KREFvTERBd0xDd3dNRFEwTUNRc0tDUXdLRFFvS0Nnb0tDZ29LRFFzTkN3MExEUXNLQ2drSkNnb0pDUTBMREF3TkN3d01EUTBORFFzTEN3c05DZzBLQ2dzS0N3ME5EQXdMQ3d3TURRb01DUW9MQ1F3S0Nna0pDZ29KQ1FzTkRBd0xEUXdNQ2dvS0Nnb0tDZ29MRFFzTkN3MExEUXNMREF3TkRRd01Dd29NQ1FvTkNRd0xDd3NMRFEwTkRRc0tDd29LRFFvTkFFSFp1d0VMTndFQUFRQUJBQUVBQUFFQkFBQUJBUUFCQUFFQUFRQUJBQUFBQUFFQkFRRUFBQUFBQUFFQUFRQUFBQUFCQVFFQkFBQUFBUUFCQVFFQVFabThBUXMzQVFBQkFBRUFBUUFBQVFFQUFBRUJBQUVBQVFBQkFBRUFBQUFBQVFFQkFRQUFBQUFBQVFBQkFBQUFBQUVCQVFFQUFBQUJBQUVCQVFCQjJid0JDd2NCQUFFQUFRQUJBRUhwdkFFTGxRSUJBQUVBQVFBQkFBQUFBQUVCQVFFQUFBQUFBQUVBQVFBQUFBQUJBUUVCQUFBQUFBQUJBQUVCQVFBQUFRRUFBQUFCQUFFQUFRQUJBUUVCQVFFQkFRRUFBUUFCQUFFQUFRQUFBQUFCQVFFQkFBRUFBQUVCQUFFQUFBQUFBUUVCQVFBQkFBRUJBUUVCQWdBQUFBUUFBQUFFQUFBQUNBQUFBSkQvQUFBTUFBQUFHQUFBQUZML0FBQVVBQUFBR1FBQUFGUC9BQUFVQUFBQUdnQUFBRjcvQUFBVUFBQUFHd0FBQUZ6L0FBQVVBQUFBSEFBQUFGMy9BQUFVQUFBQUhRQUFBRi8vQUFBVUFBQUFIZ0FBQUZIL0FBQUNBQUFBSHdBQUFGWC9BQUFFQUFBQUlBQUFBRmYvQUFBRUFBQUFJUUFBQUZqL0FBQVFBQUFBSWdBQUFHRC9BQUFFQUFBQUl3QUFBR0gvQUFBUUFBQUFKQUFBQUpIL0FFR0l2d0VMWldQL0FBQUVBQUFBSlFBQUFHVC9BQUFVQUFBQUpnQUFBSFQvQUFBVUFBQUFKd0FBQUhqL0FBQUVBQUFBS0FBQUFGRC9BQUFFQUFBQUtRQUFBRm4vQUFBRUFBQUFLZ0FBQUhYL0FBQVVBQUFBS3dBQUFIZi9BQUFVQUFBQUxBQUFBQUFBQUFBVUFFR0F3QUVMTlMwQUFBQXVBQUFBTHdBQUFEQUFBQUF4QUFBQU1nQUFBRE1BQUFBMEFBQUFJQ0JRYWpZQUFBQndlWFJtTndBQUFHZ3ljR280QUVIQXdBRUxNbkprYUdrNUFBQUFjbXh2WXpvQUFBQmpZM0JpT3dBQUFISnNZM0E4QUFBQWNHRnRZejBBQUFCbVpXUmpQZ0FBQVBoaUFFR0F3UUVMUVJrQUN3QVpHUmtBQUFBQUJRQUFBQUFBQUFrQUFBQUFDd0FBQUFBQUFBQUFHUUFLQ2hrWkdRTUtCd0FCQUFrTEdBQUFDUVlMQUFBTEFBWVpBQUFBR1JrWkFFSFJ3UUVMSVE0QUFBQUFBQUFBQUJrQUN3MFpHUmtBRFFBQUFnQUpEZ0FBQUFrQURnQUFEZ0JCaThJQkN3RU1BRUdYd2dFTEZSTUFBQUFBRXdBQUFBQUpEQUFBQUFBQURBQUFEQUJCeGNJQkN3RVFBRUhSd2dFTEZROEFBQUFFRHdBQUFBQUpFQUFBQUFBQUVBQUFFQUJCLzhJQkN3RVNBRUdMd3dFTEhoRUFBQUFBRVFBQUFBQUpFZ0FBQUFBQUVnQUFFZ0FBR2dBQUFCb2FHZ0JCd3NNQkN3NGFBQUFBR2hvYUFBQUFBQUFBQ1FCQjg4TUJDd0VVQUVIL3d3RUxGUmNBQUFBQUZ3QUFBQUFKRkFBQUFBQUFGQUFBRkFCQnJjUUJDd0VXQUVHNXhBRUxKeFVBQUFBQUZRQUFBQUFKRmdBQUFBQUFGZ0FBRmdBQU1ERXlNelExTmpjNE9VRkNRMFJGUmdCQjRNUUJDd21RYkFFQUFBQUFBQVVBUWZURUFRc0JhUUJCak1VQkN3cHFBQUFBYXdBQUFIaG9BRUdreFFFTEFRSUFRYlRGQVFzSS8vLy8vLy8vLy84QVFmakZBUXNCQlFCQmhNWUJDd0ZzQUVHY3hnRUxEbW9BQUFCdEFBQUFpR2dBQUFBRUFFRzB4Z0VMQVFFQVFjVEdBUXNGLy8vLy93bz0iKTtyZXR1cm4gcmVjZWl2ZUluc3RhbmNlKGluc3RhbnRpYXRlU3luYyh1LGUpWzBdKX0oKTtHLnEsYS5fbWFsbG9jPUcucixhLl9mcmVlPUcucyxhLl9qcDJfZGVjb2RlPUcudTt3PWZ1bmN0aW9uIHJ1bkNhbGxlcigpe0R8fHJ1bigpO0R8fCh3PXJ1bkNhbGxlcil9O2Z1bmN0aW9uIHJ1bigpe2lmKCEobT4wKSl7IWZ1bmN0aW9uIHByZVJ1bigpe2lmKGEucHJlUnVuKXsiZnVuY3Rpb24iPT10eXBlb2YgYS5wcmVSdW4mJihhLnByZVJ1bj1bYS5wcmVSdW5dKTtmb3IoO2EucHJlUnVuLmxlbmd0aDspZT1hLnByZVJ1bi5zaGlmdCgpLGQudW5zaGlmdChlKX12YXIgZTtjYWxsUnVudGltZUNhbGxiYWNrcyhkKX0oKTtpZighKG0+MCkpaWYoYS5zZXRTdGF0dXMpe2Euc2V0U3RhdHVzKCJSdW5uaW5nLi4uIik7c2V0VGltZW91dCgoZnVuY3Rpb24oKXtzZXRUaW1lb3V0KChmdW5jdGlvbigpe2Euc2V0U3RhdHVzKCIiKX0pLDEpO2RvUnVuKCl9KSwxKX1lbHNlIGRvUnVuKCl9ZnVuY3Rpb24gZG9SdW4oKXtpZighRCl7RD0hMDthLmNhbGxlZFJ1bj0hMDshZnVuY3Rpb24gaW5pdFJ1bnRpbWUoKXtjYWxsUnVudGltZUNhbGxiYWNrcyhmKX0oKTt0KGEpO2Eub25SdW50aW1lSW5pdGlhbGl6ZWQmJmEub25SdW50aW1lSW5pdGlhbGl6ZWQoKTshZnVuY3Rpb24gcG9zdFJ1bigpe2lmKGEucG9zdFJ1bil7ImZ1bmN0aW9uIj09dHlwZW9mIGEucG9zdFJ1biYmKGEucG9zdFJ1bj1bYS5wb3N0UnVuXSk7Zm9yKDthLnBvc3RSdW4ubGVuZ3RoOyllPWEucG9zdFJ1bi5zaGlmdCgpLHAudW5zaGlmdChlKX12YXIgZTtjYWxsUnVudGltZUNhbGxiYWNrcyhwKX0oKX19fWlmKGEucHJlSW5pdCl7ImZ1bmN0aW9uIj09dHlwZW9mIGEucHJlSW5pdCYmKGEucHJlSW5pdD1bYS5wcmVJbml0XSk7Zm9yKDthLnByZUluaXQubGVuZ3RoPjA7KWEucHJlSW5pdC5wb3AoKSgpfXJ1bigpO3JldHVybiBhfSk7Y29uc3QgQmk9bGk7Y2xhc3MgSnB4RXJyb3IgZXh0ZW5kcyBjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJKcHhFcnJvciIpfX1jbGFzcyBKcHhJbWFnZXtzdGF0aWMjeT1udWxsO3N0YXRpYyBkZWNvZGUoZSx0KXt0fHw9e307dGhpcy4jeXx8PUJpKHt3YXJufSk7Y29uc3QgaT10aGlzLiN5LmRlY29kZShlLHQpO2lmKCJzdHJpbmciPT10eXBlb2YgaSl0aHJvdyBuZXcgSnB4RXJyb3IoaSk7cmV0dXJuIGl9c3RhdGljIGNsZWFudXAoKXt0aGlzLiN5PW51bGx9c3RhdGljIHBhcnNlSW1hZ2VQcm9wZXJ0aWVzKGUpe2xldCB0PWUuZ2V0Qnl0ZSgpO2Zvcig7dD49MDspe2NvbnN0IGk9dDt0PWUuZ2V0Qnl0ZSgpO2lmKDY1MzYxPT09KGk8PDh8dCkpe2Uuc2tpcCg0KTtjb25zdCB0PWUuZ2V0SW50MzIoKT4+PjAsaT1lLmdldEludDMyKCk+Pj4wLGE9ZS5nZXRJbnQzMigpPj4+MCxyPWUuZ2V0SW50MzIoKT4+PjA7ZS5za2lwKDE2KTtyZXR1cm57d2lkdGg6dC1hLGhlaWdodDppLXIsYml0c1BlckNvbXBvbmVudDo4LGNvbXBvbmVudHNDb3VudDplLmdldFVpbnQxNigpfX19dGhyb3cgbmV3IEpweEVycm9yKCJObyBzaXplIG1hcmtlciBmb3VuZCBpbiBKUFggc3RyZWFtIil9fWNsYXNzIEpweFN0cmVhbSBleHRlbmRzIERlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQsaSl7c3VwZXIodCk7dGhpcy5zdHJlYW09ZTt0aGlzLmRpY3Q9ZS5kaWN0O3RoaXMubWF5YmVMZW5ndGg9dDt0aGlzLnBhcmFtcz1pfWdldCBieXRlcygpe3JldHVybiBzaGFkb3codGhpcywiYnl0ZXMiLHRoaXMuc3RyZWFtLmdldEJ5dGVzKHRoaXMubWF5YmVMZW5ndGgpKX1lbnN1cmVCdWZmZXIoZSl7fXJlYWRCbG9jayhlKXt0aGlzLmRlY29kZUltYWdlKG51bGwsZSl9ZGVjb2RlSW1hZ2UoZSx0KXtpZih0aGlzLmVvZilyZXR1cm4gdGhpcy5idWZmZXI7ZXx8PXRoaXMuYnl0ZXM7dGhpcy5idWZmZXI9SnB4SW1hZ2UuZGVjb2RlKGUsdCk7dGhpcy5idWZmZXJMZW5ndGg9dGhpcy5idWZmZXIubGVuZ3RoO3RoaXMuZW9mPSEwO3JldHVybiB0aGlzLmJ1ZmZlcn1nZXQgY2FuQXN5bmNEZWNvZGVJbWFnZUZyb21CdWZmZXIoKXtyZXR1cm4gdGhpcy5zdHJlYW0uaXNBc3luY319Y2xhc3MgTFpXU3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCxpKXtzdXBlcih0KTt0aGlzLnN0cj1lO3RoaXMuZGljdD1lLmRpY3Q7dGhpcy5jYWNoZWREYXRhPTA7dGhpcy5iaXRzQ2FjaGVkPTA7Y29uc3QgYT00MDk2LHI9e2Vhcmx5Q2hhbmdlOmksY29kZUxlbmd0aDo5LG5leHRDb2RlOjI1OCxkaWN0aW9uYXJ5VmFsdWVzOm5ldyBVaW50OEFycmF5KGEpLGRpY3Rpb25hcnlMZW5ndGhzOm5ldyBVaW50MTZBcnJheShhKSxkaWN0aW9uYXJ5UHJldkNvZGVzOm5ldyBVaW50MTZBcnJheShhKSxjdXJyZW50U2VxdWVuY2U6bmV3IFVpbnQ4QXJyYXkoYSksY3VycmVudFNlcXVlbmNlTGVuZ3RoOjB9O2ZvcihsZXQgZT0wO2U8MjU2OysrZSl7ci5kaWN0aW9uYXJ5VmFsdWVzW2VdPWU7ci5kaWN0aW9uYXJ5TGVuZ3Roc1tlXT0xfXRoaXMubHp3U3RhdGU9cn1yZWFkQml0cyhlKXtsZXQgdD10aGlzLmJpdHNDYWNoZWQsaT10aGlzLmNhY2hlZERhdGE7Zm9yKDt0PGU7KXtjb25zdCBlPXRoaXMuc3RyLmdldEJ5dGUoKTtpZigtMT09PWUpe3RoaXMuZW9mPSEwO3JldHVybiBudWxsfWk9aTw8OHxlO3QrPTh9dGhpcy5iaXRzQ2FjaGVkPXQtPWU7dGhpcy5jYWNoZWREYXRhPWk7dGhpcy5sYXN0Q29kZT1udWxsO3JldHVybiBpPj4+dCYoMTw8ZSktMX1yZWFkQmxvY2soKXtsZXQgZSx0LGksYT0xMDI0O2NvbnN0IHI9dGhpcy5sendTdGF0ZTtpZighcilyZXR1cm47Y29uc3Qgcz1yLmVhcmx5Q2hhbmdlO2xldCBuPXIubmV4dENvZGU7Y29uc3Qgbz1yLmRpY3Rpb25hcnlWYWx1ZXMsZz1yLmRpY3Rpb25hcnlMZW5ndGhzLGM9ci5kaWN0aW9uYXJ5UHJldkNvZGVzO2xldCBDPXIuY29kZUxlbmd0aCxoPXIucHJldkNvZGU7Y29uc3QgbD1yLmN1cnJlbnRTZXF1ZW5jZTtsZXQgUT1yLmN1cnJlbnRTZXF1ZW5jZUxlbmd0aCxFPTAsdT10aGlzLmJ1ZmZlckxlbmd0aCxkPXRoaXMuZW5zdXJlQnVmZmVyKHRoaXMuYnVmZmVyTGVuZ3RoK2EpO2ZvcihlPTA7ZTw1MTI7ZSsrKXtjb25zdCBlPXRoaXMucmVhZEJpdHMoQykscj1RPjA7aWYoZTwyNTYpe2xbMF09ZTtRPTF9ZWxzZXtpZighKGU+PTI1OCkpe2lmKDI1Nj09PWUpe0M9OTtuPTI1ODtRPTA7Y29udGludWV9dGhpcy5lb2Y9ITA7ZGVsZXRlIHRoaXMubHp3U3RhdGU7YnJlYWt9aWYoZTxuKXtRPWdbZV07Zm9yKHQ9US0xLGk9ZTt0Pj0wO3QtLSl7bFt0XT1vW2ldO2k9Y1tpXX19ZWxzZSBsW1ErK109bFswXX1pZihyKXtjW25dPWg7Z1tuXT1nW2hdKzE7b1tuXT1sWzBdO24rKztDPW4rcyZuK3MtMT9DOjB8TWF0aC5taW4oTWF0aC5sb2cobitzKS8uNjkzMTQ3MTgwNTU5OTQ1MysxLDEyKX1oPWU7RSs9UTtpZihhPEUpe2Rve2ErPTUxMn13aGlsZShhPEUpO2Q9dGhpcy5lbnN1cmVCdWZmZXIodGhpcy5idWZmZXJMZW5ndGgrYSl9Zm9yKHQ9MDt0PFE7dCsrKWRbdSsrXT1sW3RdfXIubmV4dENvZGU9bjtyLmNvZGVMZW5ndGg9QztyLnByZXZDb2RlPWg7ci5jdXJyZW50U2VxdWVuY2VMZW5ndGg9UTt0aGlzLmJ1ZmZlckxlbmd0aD11fX1jbGFzcyBQcmVkaWN0b3JTdHJlYW0gZXh0ZW5kcyBEZWNvZGVTdHJlYW17Y29uc3RydWN0b3IoZSx0LGkpe3N1cGVyKHQpO2lmKCEoaSBpbnN0YW5jZW9mIERpY3QpKXJldHVybiBlO2NvbnN0IGE9dGhpcy5wcmVkaWN0b3I9aS5nZXQoIlByZWRpY3RvciIpfHwxO2lmKGE8PTEpcmV0dXJuIGU7aWYoMiE9PWEmJihhPDEwfHxhPjE1KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYFVuc3VwcG9ydGVkIHByZWRpY3RvcjogJHthfWApO3RoaXMucmVhZEJsb2NrPTI9PT1hP3RoaXMucmVhZEJsb2NrVGlmZjp0aGlzLnJlYWRCbG9ja1BuZzt0aGlzLnN0cj1lO3RoaXMuZGljdD1lLmRpY3Q7Y29uc3Qgcj10aGlzLmNvbG9ycz1pLmdldCgiQ29sb3JzIil8fDEscz10aGlzLmJpdHM9aS5nZXQoIkJQQyIsIkJpdHNQZXJDb21wb25lbnQiKXx8OCxuPXRoaXMuY29sdW1ucz1pLmdldCgiQ29sdW1ucyIpfHwxO3RoaXMucGl4Qnl0ZXM9cipzKzc+PjM7dGhpcy5yb3dCeXRlcz1uKnIqcys3Pj4zO3JldHVybiB0aGlzfXJlYWRCbG9ja1RpZmYoKXtjb25zdCBlPXRoaXMucm93Qnl0ZXMsdD10aGlzLmJ1ZmZlckxlbmd0aCxpPXRoaXMuZW5zdXJlQnVmZmVyKHQrZSksYT10aGlzLmJpdHMscj10aGlzLmNvbG9ycyxzPXRoaXMuc3RyLmdldEJ5dGVzKGUpO3RoaXMuZW9mPSFzLmxlbmd0aDtpZih0aGlzLmVvZilyZXR1cm47bGV0IG4sbz0wLGc9MCxjPTAsQz0wLGg9dDtpZigxPT09YSYmMT09PXIpZm9yKG49MDtuPGU7KytuKXtsZXQgZT1zW25dXm87ZV49ZT4+MTtlXj1lPj4yO2VePWU+PjQ7bz0oMSZlKTw8NztpW2grK109ZX1lbHNlIGlmKDg9PT1hKXtmb3Iobj0wO248cjsrK24paVtoKytdPXNbbl07Zm9yKDtuPGU7KytuKXtpW2hdPWlbaC1yXStzW25dO2grK319ZWxzZSBpZigxNj09PWEpe2NvbnN0IHQ9MipyO2ZvcihuPTA7bjx0OysrbilpW2grK109c1tuXTtmb3IoO248ZTtuKz0yKXtjb25zdCBlPSgoMjU1JnNbbl0pPDw4KSsoMjU1JnNbbisxXSkrKCgyNTUmaVtoLXRdKTw8OCkrKDI1NSZpW2gtdCsxXSk7aVtoKytdPWU+PjgmMjU1O2lbaCsrXT0yNTUmZX19ZWxzZXtjb25zdCBlPW5ldyBVaW50OEFycmF5KHIrMSksaD0oMTw8YSktMTtsZXQgbD0wLFE9dDtjb25zdCBFPXRoaXMuY29sdW1ucztmb3Iobj0wO248RTsrK24pZm9yKGxldCB0PTA7dDxyOysrdCl7aWYoYzxhKXtvPW88PDh8MjU1JnNbbCsrXTtjKz04fWVbdF09ZVt0XSsobz4+Yy1hKSZoO2MtPWE7Zz1nPDxhfGVbdF07Qys9YTtpZihDPj04KXtpW1ErK109Zz4+Qy04JjI1NTtDLT04fX1DPjAmJihpW1ErK109KGc8PDgtQykrKG8mKDE8PDgtQyktMSkpfXRoaXMuYnVmZmVyTGVuZ3RoKz1lfXJlYWRCbG9ja1BuZygpe2NvbnN0IGU9dGhpcy5yb3dCeXRlcyx0PXRoaXMucGl4Qnl0ZXMsaT10aGlzLnN0ci5nZXRCeXRlKCksYT10aGlzLnN0ci5nZXRCeXRlcyhlKTt0aGlzLmVvZj0hYS5sZW5ndGg7aWYodGhpcy5lb2YpcmV0dXJuO2NvbnN0IHI9dGhpcy5idWZmZXJMZW5ndGgscz10aGlzLmVuc3VyZUJ1ZmZlcihyK2UpO2xldCBuPXMuc3ViYXJyYXkoci1lLHIpOzA9PT1uLmxlbmd0aCYmKG49bmV3IFVpbnQ4QXJyYXkoZSkpO2xldCBvLGcsYyxDPXI7c3dpdGNoKGkpe2Nhc2UgMDpmb3Iobz0wO288ZTsrK28pc1tDKytdPWFbb107YnJlYWs7Y2FzZSAxOmZvcihvPTA7bzx0OysrbylzW0MrK109YVtvXTtmb3IoO288ZTsrK28pe3NbQ109c1tDLXRdK2Fbb10mMjU1O0MrK31icmVhaztjYXNlIDI6Zm9yKG89MDtvPGU7KytvKXNbQysrXT1uW29dK2Fbb10mMjU1O2JyZWFrO2Nhc2UgMzpmb3Iobz0wO288dDsrK28pc1tDKytdPShuW29dPj4xKSthW29dO2Zvcig7bzxlOysrbyl7c1tDXT0obltvXStzW0MtdF0+PjEpK2Fbb10mMjU1O0MrK31icmVhaztjYXNlIDQ6Zm9yKG89MDtvPHQ7KytvKXtnPW5bb107Yz1hW29dO3NbQysrXT1nK2N9Zm9yKDtvPGU7KytvKXtnPW5bb107Y29uc3QgZT1uW28tdF0saT1zW0MtdF0scj1pK2ctZTtsZXQgaD1yLWk7aDwwJiYoaD0taCk7bGV0IGw9ci1nO2w8MCYmKGw9LWwpO2xldCBRPXItZTtRPDAmJihRPS1RKTtjPWFbb107c1tDKytdPWg8PWwmJmg8PVE/aStjOmw8PVE/ZytjOmUrY31icmVhaztkZWZhdWx0OnRocm93IG5ldyBGb3JtYXRFcnJvcihgVW5zdXBwb3J0ZWQgcHJlZGljdG9yOiAke2l9YCl9dGhpcy5idWZmZXJMZW5ndGgrPWV9fWNsYXNzIFJ1bkxlbmd0aFN0cmVhbSBleHRlbmRzIERlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKHQpO3RoaXMuc3RyPWU7dGhpcy5kaWN0PWUuZGljdH1yZWFkQmxvY2soKXtjb25zdCBlPXRoaXMuc3RyLmdldEJ5dGVzKDIpO2lmKCFlfHxlLmxlbmd0aDwyfHwxMjg9PT1lWzBdKXt0aGlzLmVvZj0hMDtyZXR1cm59bGV0IHQsaT10aGlzLmJ1ZmZlckxlbmd0aCxhPWVbMF07aWYoYTwxMjgpe3Q9dGhpcy5lbnN1cmVCdWZmZXIoaSthKzEpO3RbaSsrXT1lWzFdO2lmKGE+MCl7Y29uc3QgZT10aGlzLnN0ci5nZXRCeXRlcyhhKTt0LnNldChlLGkpO2krPWF9fWVsc2V7YT0yNTctYTtjb25zdCByPWVbMV07dD10aGlzLmVuc3VyZUJ1ZmZlcihpK2ErMSk7Zm9yKGxldCBlPTA7ZTxhO2UrKyl0W2krK109cn10aGlzLmJ1ZmZlckxlbmd0aD1pfX1jbGFzcyBQYXJzZXJ7Y29uc3RydWN0b3Ioe2xleGVyOmUseHJlZjp0LGFsbG93U3RyZWFtczppPSExLHJlY292ZXJ5TW9kZTphPSExfSl7dGhpcy5sZXhlcj1lO3RoaXMueHJlZj10O3RoaXMuYWxsb3dTdHJlYW1zPWk7dGhpcy5yZWNvdmVyeU1vZGU9YTt0aGlzLmltYWdlQ2FjaGU9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLl9pbWFnZUlkPTA7dGhpcy5yZWZpbGwoKX1yZWZpbGwoKXt0aGlzLmJ1ZjE9dGhpcy5sZXhlci5nZXRPYmooKTt0aGlzLmJ1ZjI9dGhpcy5sZXhlci5nZXRPYmooKX1zaGlmdCgpe2lmKHRoaXMuYnVmMiBpbnN0YW5jZW9mIENtZCYmIklEIj09PXRoaXMuYnVmMi5jbWQpe3RoaXMuYnVmMT10aGlzLmJ1ZjI7dGhpcy5idWYyPW51bGx9ZWxzZXt0aGlzLmJ1ZjE9dGhpcy5idWYyO3RoaXMuYnVmMj10aGlzLmxleGVyLmdldE9iaigpfX10cnlTaGlmdCgpe3RyeXt0aGlzLnNoaWZ0KCk7cmV0dXJuITB9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7cmV0dXJuITF9fWdldE9iaihlPW51bGwpe2NvbnN0IHQ9dGhpcy5idWYxO3RoaXMuc2hpZnQoKTtpZih0IGluc3RhbmNlb2YgQ21kKXN3aXRjaCh0LmNtZCl7Y2FzZSJCSSI6cmV0dXJuIHRoaXMubWFrZUlubGluZUltYWdlKGUpO2Nhc2UiWyI6Y29uc3QgaT1bXTtmb3IoOyFpc0NtZCh0aGlzLmJ1ZjEsIl0iKSYmdGhpcy5idWYxIT09RHQ7KWkucHVzaCh0aGlzLmdldE9iaihlKSk7aWYodGhpcy5idWYxPT09RHQpe2lmKHRoaXMucmVjb3ZlcnlNb2RlKXJldHVybiBpO3Rocm93IG5ldyBQYXJzZXJFT0ZFeGNlcHRpb24oIkVuZCBvZiBmaWxlIGluc2lkZSBhcnJheS4iKX10aGlzLnNoaWZ0KCk7cmV0dXJuIGk7Y2FzZSI8PCI6Y29uc3QgYT1uZXcgRGljdCh0aGlzLnhyZWYpO2Zvcig7IWlzQ21kKHRoaXMuYnVmMSwiPj4iKSYmdGhpcy5idWYxIT09RHQ7KXtpZighKHRoaXMuYnVmMSBpbnN0YW5jZW9mIE5hbWUpKXtpbmZvKCJNYWxmb3JtZWQgZGljdGlvbmFyeToga2V5IG11c3QgYmUgYSBuYW1lIG9iamVjdCIpO3RoaXMuc2hpZnQoKTtjb250aW51ZX1jb25zdCB0PXRoaXMuYnVmMS5uYW1lO3RoaXMuc2hpZnQoKTtpZih0aGlzLmJ1ZjE9PT1EdClicmVhazthLnNldCh0LHRoaXMuZ2V0T2JqKGUpKX1pZih0aGlzLmJ1ZjE9PT1EdCl7aWYodGhpcy5yZWNvdmVyeU1vZGUpcmV0dXJuIGE7dGhyb3cgbmV3IFBhcnNlckVPRkV4Y2VwdGlvbigiRW5kIG9mIGZpbGUgaW5zaWRlIGRpY3Rpb25hcnkuIil9aWYoaXNDbWQodGhpcy5idWYyLCJzdHJlYW0iKSlyZXR1cm4gdGhpcy5hbGxvd1N0cmVhbXM/dGhpcy5tYWtlU3RyZWFtKGEsZSk6YTt0aGlzLnNoaWZ0KCk7cmV0dXJuIGE7ZGVmYXVsdDpyZXR1cm4gdH1pZihOdW1iZXIuaXNJbnRlZ2VyKHQpKXtpZihOdW1iZXIuaXNJbnRlZ2VyKHRoaXMuYnVmMSkmJmlzQ21kKHRoaXMuYnVmMiwiUiIpKXtjb25zdCBlPVJlZi5nZXQodCx0aGlzLmJ1ZjEpO3RoaXMuc2hpZnQoKTt0aGlzLnNoaWZ0KCk7cmV0dXJuIGV9cmV0dXJuIHR9cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0JiZlP2UuZGVjcnlwdFN0cmluZyh0KTp0fWZpbmREZWZhdWx0SW5saW5lU3RyZWFtRW5kKGUpe2NvbnN0e2tub3duQ29tbWFuZHM6dH09dGhpcy5sZXhlcixpPWUucG9zO2xldCBhLHIscz0wO2Zvcig7LTEhPT0oYT1lLmdldEJ5dGUoKSk7KWlmKDA9PT1zKXM9Njk9PT1hPzE6MDtlbHNlIGlmKDE9PT1zKXM9NzM9PT1hPzI6MDtlbHNlIGlmKDMyPT09YXx8MTA9PT1hfHwxMz09PWEpe3I9ZS5wb3M7Y29uc3QgaT1lLnBlZWtCeXRlcygxNSksbj1pLmxlbmd0aDtpZigwPT09bilicmVhaztmb3IobGV0IGU9MDtlPG47ZSsrKXthPWlbZV07aWYoKDAhPT1hfHwwPT09aVtlKzFdKSYmKDEwIT09YSYmMTMhPT1hJiYoYTwzMnx8YT4xMjcpKSl7cz0wO2JyZWFrfX1pZigyIT09cyljb250aW51ZTtpZighdCl7d2FybigiZmluZERlZmF1bHRJbmxpbmVTdHJlYW1FbmQgLSBgbGV4ZXIua25vd25Db21tYW5kc2AgaXMgdW5kZWZpbmVkLiIpO2NvbnRpbnVlfWNvbnN0IG89bmV3IExleGVyKG5ldyBTdHJlYW0oaS5zbGljZSgpKSx0KTtvLl9oZXhTdHJpbmdXYXJuPSgpPT57fTtsZXQgZz0wO2Zvcig7Oyl7Y29uc3QgZT1vLmdldE9iaigpO2lmKGU9PT1EdCl7cz0wO2JyZWFrfWlmKGUgaW5zdGFuY2VvZiBDbWQpe2NvbnN0IGk9dFtlLmNtZF07aWYoIWkpe3M9MDticmVha31pZihpLnZhcmlhYmxlQXJncz9nPD1pLm51bUFyZ3M6Zz09PWkubnVtQXJncylicmVhaztnPTB9ZWxzZSBnKyt9aWYoMj09PXMpYnJlYWt9ZWxzZSBzPTA7aWYoLTE9PT1hKXt3YXJuKCJmaW5kRGVmYXVsdElubGluZVN0cmVhbUVuZDogUmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBzdHJlYW0gd2l0aG91dCBmaW5kaW5nIGEgdmFsaWQgRUkgbWFya2VyIik7aWYocil7d2FybignLi4uIHRyeWluZyB0byByZWNvdmVyIGJ5IHVzaW5nIHRoZSBsYXN0ICJFSSIgb2NjdXJyZW5jZS4nKTtlLnNraXAoLShlLnBvcy1yKSl9fWxldCBuPTQ7ZS5za2lwKC1uKTthPWUucGVla0J5dGUoKTtlLnNraXAobik7aXNXaGl0ZVNwYWNlKGEpfHxuLS07cmV0dXJuIGUucG9zLW4taX1maW5kRENURGVjb2RlSW5saW5lU3RyZWFtRW5kKGUpe2NvbnN0IHQ9ZS5wb3M7bGV0IGksYSxyPSExO2Zvcig7LTEhPT0oaT1lLmdldEJ5dGUoKSk7KWlmKDI1NT09PWkpe3N3aXRjaChlLmdldEJ5dGUoKSl7Y2FzZSAwOmJyZWFrO2Nhc2UgMjU1OmUuc2tpcCgtMSk7YnJlYWs7Y2FzZSAyMTc6cj0hMDticmVhaztjYXNlIDE5MjpjYXNlIDE5MzpjYXNlIDE5NDpjYXNlIDE5NTpjYXNlIDE5NzpjYXNlIDE5ODpjYXNlIDE5OTpjYXNlIDIwMTpjYXNlIDIwMjpjYXNlIDIwMzpjYXNlIDIwNTpjYXNlIDIwNjpjYXNlIDIwNzpjYXNlIDE5NjpjYXNlIDIwNDpjYXNlIDIxODpjYXNlIDIxOTpjYXNlIDIyMDpjYXNlIDIyMTpjYXNlIDIyMjpjYXNlIDIyMzpjYXNlIDIyNDpjYXNlIDIyNTpjYXNlIDIyNjpjYXNlIDIyNzpjYXNlIDIyODpjYXNlIDIyOTpjYXNlIDIzMDpjYXNlIDIzMTpjYXNlIDIzMjpjYXNlIDIzMzpjYXNlIDIzNDpjYXNlIDIzNTpjYXNlIDIzNjpjYXNlIDIzNzpjYXNlIDIzODpjYXNlIDIzOTpjYXNlIDI1NDphPWUuZ2V0VWludDE2KCk7YT4yP2Uuc2tpcChhLTIpOmUuc2tpcCgtMil9aWYocilicmVha31jb25zdCBzPWUucG9zLXQ7aWYoLTE9PT1pKXt3YXJuKCJJbmxpbmUgRENURGVjb2RlIGltYWdlIHN0cmVhbTogRU9JIG1hcmtlciBub3QgZm91bmQsIHNlYXJjaGluZyBmb3IgL0VJLyBpbnN0ZWFkLiIpO2Uuc2tpcCgtcyk7cmV0dXJuIHRoaXMuZmluZERlZmF1bHRJbmxpbmVTdHJlYW1FbmQoZSl9dGhpcy5pbmxpbmVTdHJlYW1Ta2lwRUkoZSk7cmV0dXJuIHN9ZmluZEFTQ0lJODVEZWNvZGVJbmxpbmVTdHJlYW1FbmQoZSl7Y29uc3QgdD1lLnBvcztsZXQgaTtmb3IoOy0xIT09KGk9ZS5nZXRCeXRlKCkpOylpZigxMjY9PT1pKXtjb25zdCB0PWUucG9zO2k9ZS5wZWVrQnl0ZSgpO2Zvcig7aXNXaGl0ZVNwYWNlKGkpOyl7ZS5za2lwKCk7aT1lLnBlZWtCeXRlKCl9aWYoNjI9PT1pKXtlLnNraXAoKTticmVha31pZihlLnBvcz50KXtjb25zdCB0PWUucGVla0J5dGVzKDIpO2lmKDY5PT09dFswXSYmNzM9PT10WzFdKWJyZWFrfX1jb25zdCBhPWUucG9zLXQ7aWYoLTE9PT1pKXt3YXJuKCJJbmxpbmUgQVNDSUk4NURlY29kZSBpbWFnZSBzdHJlYW06IEVPRCBtYXJrZXIgbm90IGZvdW5kLCBzZWFyY2hpbmcgZm9yIC9FSS8gaW5zdGVhZC4iKTtlLnNraXAoLWEpO3JldHVybiB0aGlzLmZpbmREZWZhdWx0SW5saW5lU3RyZWFtRW5kKGUpfXRoaXMuaW5saW5lU3RyZWFtU2tpcEVJKGUpO3JldHVybiBhfWZpbmRBU0NJSUhleERlY29kZUlubGluZVN0cmVhbUVuZChlKXtjb25zdCB0PWUucG9zO2xldCBpO2Zvcig7LTEhPT0oaT1lLmdldEJ5dGUoKSkmJjYyIT09aTspO2NvbnN0IGE9ZS5wb3MtdDtpZigtMT09PWkpe3dhcm4oIklubGluZSBBU0NJSUhleERlY29kZSBpbWFnZSBzdHJlYW06IEVPRCBtYXJrZXIgbm90IGZvdW5kLCBzZWFyY2hpbmcgZm9yIC9FSS8gaW5zdGVhZC4iKTtlLnNraXAoLWEpO3JldHVybiB0aGlzLmZpbmREZWZhdWx0SW5saW5lU3RyZWFtRW5kKGUpfXRoaXMuaW5saW5lU3RyZWFtU2tpcEVJKGUpO3JldHVybiBhfWlubGluZVN0cmVhbVNraXBFSShlKXtsZXQgdCxpPTA7Zm9yKDstMSE9PSh0PWUuZ2V0Qnl0ZSgpKTspaWYoMD09PWkpaT02OT09PXQ/MTowO2Vsc2UgaWYoMT09PWkpaT03Mz09PXQ/MjowO2Vsc2UgaWYoMj09PWkpYnJlYWt9bWFrZUlubGluZUltYWdlKGUpe2NvbnN0IHQ9dGhpcy5sZXhlcixpPXQuc3RyZWFtLGE9T2JqZWN0LmNyZWF0ZShudWxsKTtsZXQgcjtmb3IoOyFpc0NtZCh0aGlzLmJ1ZjEsIklEIikmJnRoaXMuYnVmMSE9PUR0Oyl7aWYoISh0aGlzLmJ1ZjEgaW5zdGFuY2VvZiBOYW1lKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkRpY3Rpb25hcnkga2V5IG11c3QgYmUgYSBuYW1lIG9iamVjdCIpO2NvbnN0IHQ9dGhpcy5idWYxLm5hbWU7dGhpcy5zaGlmdCgpO2lmKHRoaXMuYnVmMT09PUR0KWJyZWFrO2FbdF09dGhpcy5nZXRPYmooZSl9LTEhPT10LmJlZ2luSW5saW5lSW1hZ2VQb3MmJihyPWkucG9zLXQuYmVnaW5JbmxpbmVJbWFnZVBvcyk7Y29uc3Qgcz10aGlzLnhyZWYuZmV0Y2hJZlJlZihhLkZ8fGEuRmlsdGVyKTtsZXQgbjtpZihzIGluc3RhbmNlb2YgTmFtZSluPXMubmFtZTtlbHNlIGlmKEFycmF5LmlzQXJyYXkocykpe2NvbnN0IGU9dGhpcy54cmVmLmZldGNoSWZSZWYoc1swXSk7ZSBpbnN0YW5jZW9mIE5hbWUmJihuPWUubmFtZSl9Y29uc3Qgbz1pLnBvcztsZXQgZyxjO3N3aXRjaChuKXtjYXNlIkRDVCI6Y2FzZSJEQ1REZWNvZGUiOmc9dGhpcy5maW5kRENURGVjb2RlSW5saW5lU3RyZWFtRW5kKGkpO2JyZWFrO2Nhc2UiQTg1IjpjYXNlIkFTQ0lJODVEZWNvZGUiOmc9dGhpcy5maW5kQVNDSUk4NURlY29kZUlubGluZVN0cmVhbUVuZChpKTticmVhaztjYXNlIkFIeCI6Y2FzZSJBU0NJSUhleERlY29kZSI6Zz10aGlzLmZpbmRBU0NJSUhleERlY29kZUlubGluZVN0cmVhbUVuZChpKTticmVhaztkZWZhdWx0Omc9dGhpcy5maW5kRGVmYXVsdElubGluZVN0cmVhbUVuZChpKX1pZihnPDFlMyYmcj4wKXtjb25zdCBlPWkucG9zO2kucG9zPXQuYmVnaW5JbmxpbmVJbWFnZVBvcztjPWZ1bmN0aW9uIGdldElubGluZUltYWdlQ2FjaGVLZXkoZSl7Y29uc3QgdD1bXSxpPWUubGVuZ3RoO2xldCBhPTA7Zm9yKDthPGktMTspdC5wdXNoKGVbYSsrXTw8OHxlW2ErK10pO2E8aSYmdC5wdXNoKGVbYV0pO3JldHVybiBpKyJfIitTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsdCl9KGkuZ2V0Qnl0ZXMocitnKSk7aS5wb3M9ZTtjb25zdCBhPXRoaXMuaW1hZ2VDYWNoZVtjXTtpZih2b2lkIDAhPT1hKXt0aGlzLmJ1ZjI9Q21kLmdldCgiRUkiKTt0aGlzLnNoaWZ0KCk7YS5yZXNldCgpO3JldHVybiBhfX1jb25zdCBDPW5ldyBEaWN0KHRoaXMueHJlZik7Zm9yKGNvbnN0IGUgaW4gYSlDLnNldChlLGFbZV0pO2xldCBoPWkubWFrZVN1YlN0cmVhbShvLGcsQyk7ZSYmKGg9ZS5jcmVhdGVTdHJlYW0oaCxnKSk7aD10aGlzLmZpbHRlcihoLEMsZyk7aC5kaWN0PUM7aWYodm9pZCAwIT09Yyl7aC5jYWNoZUtleT0iaW5saW5lX2ltZ18iKyArK3RoaXMuX2ltYWdlSWQ7dGhpcy5pbWFnZUNhY2hlW2NdPWh9dGhpcy5idWYyPUNtZC5nZXQoIkVJIik7dGhpcy5zaGlmdCgpO3JldHVybiBofSN3KGUpe2NvbnN0e3N0cmVhbTp0fT10aGlzLmxleGVyO3QucG9zPWU7Y29uc3QgaT1uZXcgVWludDhBcnJheShbMTAxLDExMCwxMDBdKSxhPWkubGVuZ3RoLHI9W25ldyBVaW50OEFycmF5KFsxMTUsMTE2LDExNCwxMDEsOTcsMTA5XSksbmV3IFVpbnQ4QXJyYXkoWzExNSwxMTYsMTAxLDk3LDEwOV0pLG5ldyBVaW50OEFycmF5KFsxMTUsMTE2LDExNCwxMDEsOTddKV0scz05LWE7Zm9yKDt0LnBvczx0LmVuZDspe2NvbnN0IG49dC5wZWVrQnl0ZXMoMjA0OCksbz1uLmxlbmd0aC05O2lmKG88PTApYnJlYWs7bGV0IGc9MDtmb3IoO2c8bzspe2xldCBvPTA7Zm9yKDtvPGEmJm5bZytvXT09PWlbb107KW8rKztpZihvPj1hKXtsZXQgYT0hMTtmb3IoY29uc3QgZSBvZiByKXtjb25zdCB0PWUubGVuZ3RoO2xldCByPTA7Zm9yKDtyPHQmJm5bZytvK3JdPT09ZVtyXTspcisrO2lmKHI+PXMpe2E9ITA7YnJlYWt9aWYocj49dCl7aWYoaXNXaGl0ZVNwYWNlKG5bZytvK3JdKSl7aW5mbyhgRm91bmQgIiR7Ynl0ZXNUb1N0cmluZyhbLi4uaSwuLi5lXSl9IiB3aGVuIHNlYXJjaGluZyBmb3IgZW5kc3RyZWFtIGNvbW1hbmQuYCk7YT0hMH1icmVha319aWYoYSl7dC5wb3MrPWc7cmV0dXJuIHQucG9zLWV9fWcrK310LnBvcys9b31yZXR1cm4tMX1tYWtlU3RyZWFtKGUsdCl7Y29uc3QgaT10aGlzLmxleGVyO2xldCBhPWkuc3RyZWFtO2kuc2tpcFRvTmV4dExpbmUoKTtjb25zdCByPWEucG9zLTE7bGV0IHM9ZS5nZXQoIkxlbmd0aCIpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKHMpKXtpbmZvKGBCYWQgbGVuZ3RoICIke3MmJnMudG9TdHJpbmcoKX0iIGluIHN0cmVhbS5gKTtzPTB9YS5wb3M9citzO2kubmV4dENoYXIoKTtpZih0aGlzLnRyeVNoaWZ0KCkmJmlzQ21kKHRoaXMuYnVmMiwiZW5kc3RyZWFtIikpdGhpcy5zaGlmdCgpO2Vsc2V7cz10aGlzLiN3KHIpO2lmKHM8MCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIk1pc3NpbmcgZW5kc3RyZWFtIGNvbW1hbmQuIik7aS5uZXh0Q2hhcigpO3RoaXMuc2hpZnQoKTt0aGlzLnNoaWZ0KCl9dGhpcy5zaGlmdCgpO2E9YS5tYWtlU3ViU3RyZWFtKHIscyxlKTt0JiYoYT10LmNyZWF0ZVN0cmVhbShhLHMpKTthPXRoaXMuZmlsdGVyKGEsZSxzKTthLmRpY3Q9ZTtyZXR1cm4gYX1maWx0ZXIoZSx0LGkpe2xldCBhPXQuZ2V0KCJGIiwiRmlsdGVyIikscj10LmdldCgiRFAiLCJEZWNvZGVQYXJtcyIpO2lmKGEgaW5zdGFuY2VvZiBOYW1lKXtBcnJheS5pc0FycmF5KHIpJiZ3YXJuKCIvRGVjb2RlUGFybXMgc2hvdWxkIG5vdCBiZSBhbiBBcnJheSwgd2hlbiAvRmlsdGVyIGlzIGEgTmFtZS4iKTtyZXR1cm4gdGhpcy5tYWtlRmlsdGVyKGUsYS5uYW1lLGkscil9bGV0IHM9aTtpZihBcnJheS5pc0FycmF5KGEpKXtjb25zdCB0PWEsaT1yO2ZvcihsZXQgbj0wLG89dC5sZW5ndGg7bjxvOysrbil7YT10aGlzLnhyZWYuZmV0Y2hJZlJlZih0W25dKTtpZighKGEgaW5zdGFuY2VvZiBOYW1lKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEJhZCBmaWx0ZXIgbmFtZSAiJHthfSJgKTtyPW51bGw7QXJyYXkuaXNBcnJheShpKSYmbiBpbiBpJiYocj10aGlzLnhyZWYuZmV0Y2hJZlJlZihpW25dKSk7ZT10aGlzLm1ha2VGaWx0ZXIoZSxhLm5hbWUscyxyKTtzPW51bGx9fXJldHVybiBlfW1ha2VGaWx0ZXIoZSx0LGksYSl7aWYoMD09PWkpe3dhcm4oYEVtcHR5ICIke3R9IiBzdHJlYW0uYCk7cmV0dXJuIG5ldyBOdWxsU3RyZWFtfXRyeXtzd2l0Y2godCl7Y2FzZSJGbCI6Y2FzZSJGbGF0ZURlY29kZSI6cmV0dXJuIGE/bmV3IFByZWRpY3RvclN0cmVhbShuZXcgRmxhdGVTdHJlYW0oZSxpKSxpLGEpOm5ldyBGbGF0ZVN0cmVhbShlLGkpO2Nhc2UiTFpXIjpjYXNlIkxaV0RlY29kZSI6bGV0IHQ9MTtpZihhKXthLmhhcygiRWFybHlDaGFuZ2UiKSYmKHQ9YS5nZXQoIkVhcmx5Q2hhbmdlIikpO3JldHVybiBuZXcgUHJlZGljdG9yU3RyZWFtKG5ldyBMWldTdHJlYW0oZSxpLHQpLGksYSl9cmV0dXJuIG5ldyBMWldTdHJlYW0oZSxpLHQpO2Nhc2UiRENUIjpjYXNlIkRDVERlY29kZSI6cmV0dXJuIG5ldyBKcGVnU3RyZWFtKGUsaSxhKTtjYXNlIkpQWCI6Y2FzZSJKUFhEZWNvZGUiOnJldHVybiBuZXcgSnB4U3RyZWFtKGUsaSxhKTtjYXNlIkE4NSI6Y2FzZSJBU0NJSTg1RGVjb2RlIjpyZXR1cm4gbmV3IEFzY2lpODVTdHJlYW0oZSxpKTtjYXNlIkFIeCI6Y2FzZSJBU0NJSUhleERlY29kZSI6cmV0dXJuIG5ldyBBc2NpaUhleFN0cmVhbShlLGkpO2Nhc2UiQ0NGIjpjYXNlIkNDSVRURmF4RGVjb2RlIjpyZXR1cm4gbmV3IENDSVRURmF4U3RyZWFtKGUsaSxhKTtjYXNlIlJMIjpjYXNlIlJ1bkxlbmd0aERlY29kZSI6cmV0dXJuIG5ldyBSdW5MZW5ndGhTdHJlYW0oZSxpKTtjYXNlIkpCSUcyRGVjb2RlIjpyZXR1cm4gbmV3IEpiaWcyU3RyZWFtKGUsaSxhKX13YXJuKGBGaWx0ZXIgIiR7dH0iIGlzIG5vdCBzdXBwb3J0ZWQuYCk7cmV0dXJuIGV9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7d2FybihgSW52YWxpZCBzdHJlYW06ICIke2V9ImApO3JldHVybiBuZXcgTnVsbFN0cmVhbX19fWNvbnN0IFFpPVsxLDAsMCwwLDAsMCwwLDAsMCwxLDEsMCwxLDEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwwLDIsMCwwLDIsMiwwLDAsMCwwLDAsMiwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwyLDAsMiwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDIsMCwyLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwyLDAsMiwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwXTtmdW5jdGlvbiB0b0hleERpZ2l0KGUpe3JldHVybiBlPj00OCYmZTw9NTc/MTUmZTplPj02NSYmZTw9NzB8fGU+PTk3JiZlPD0xMDI/OSsoMTUmZSk6LTF9Y2xhc3MgTGV4ZXJ7Y29uc3RydWN0b3IoZSx0PW51bGwpe3RoaXMuc3RyZWFtPWU7dGhpcy5uZXh0Q2hhcigpO3RoaXMuc3RyQnVmPVtdO3RoaXMua25vd25Db21tYW5kcz10O3RoaXMuX2hleFN0cmluZ051bVdhcm49MDt0aGlzLmJlZ2luSW5saW5lSW1hZ2VQb3M9LTF9bmV4dENoYXIoKXtyZXR1cm4gdGhpcy5jdXJyZW50Q2hhcj10aGlzLnN0cmVhbS5nZXRCeXRlKCl9cGVla0NoYXIoKXtyZXR1cm4gdGhpcy5zdHJlYW0ucGVla0J5dGUoKX1nZXROdW1iZXIoKXtsZXQgZT10aGlzLmN1cnJlbnRDaGFyLHQ9ITEsaT0wLGE9MTtpZig0NT09PWUpe2E9LTE7ZT10aGlzLm5leHRDaGFyKCk7NDU9PT1lJiYoZT10aGlzLm5leHRDaGFyKCkpfWVsc2UgNDM9PT1lJiYoZT10aGlzLm5leHRDaGFyKCkpO2lmKDEwPT09ZXx8MTM9PT1lKWRve2U9dGhpcy5uZXh0Q2hhcigpfXdoaWxlKDEwPT09ZXx8MTM9PT1lKTtpZig0Nj09PWUpe2k9MTA7ZT10aGlzLm5leHRDaGFyKCl9aWYoZTw0OHx8ZT41Nyl7Y29uc3QgdD1gSW52YWxpZCBudW1iZXI6ICR7U3RyaW5nLmZyb21DaGFyQ29kZShlKX0gKGNoYXJDb2RlICR7ZX0pYDtpZihpc1doaXRlU3BhY2UoZSl8fC0xPT09ZSl7aW5mbyhgTGV4ZXIuZ2V0TnVtYmVyIC0gIiR7dH0iLmApO3JldHVybiAwfXRocm93IG5ldyBGb3JtYXRFcnJvcih0KX1sZXQgcj1lLTQ4LHM9MCxuPTE7Zm9yKDsoZT10aGlzLm5leHRDaGFyKCkpPj0wOylpZihlPj00OCYmZTw9NTcpe2NvbnN0IGE9ZS00ODtpZih0KXM9MTAqcythO2Vsc2V7MCE9PWkmJihpKj0xMCk7cj0xMCpyK2F9fWVsc2UgaWYoNDY9PT1lKXtpZigwIT09aSlicmVhaztpPTF9ZWxzZSBpZig0NT09PWUpd2FybigiQmFkbHkgZm9ybWF0dGVkIG51bWJlcjogbWludXMgc2lnbiBpbiB0aGUgbWlkZGxlIik7ZWxzZXtpZig2OSE9PWUmJjEwMSE9PWUpYnJlYWs7ZT10aGlzLnBlZWtDaGFyKCk7aWYoNDM9PT1lfHw0NT09PWUpe249NDU9PT1lPy0xOjE7dGhpcy5uZXh0Q2hhcigpfWVsc2UgaWYoZTw0OHx8ZT41NylicmVhazt0PSEwfTAhPT1pJiYoci89aSk7dCYmKHIqPTEwKioobipzKSk7cmV0dXJuIGEqcn1nZXRTdHJpbmcoKXtsZXQgZT0xLHQ9ITE7Y29uc3QgaT10aGlzLnN0ckJ1ZjtpLmxlbmd0aD0wO2xldCBhPXRoaXMubmV4dENoYXIoKTtmb3IoOzspe2xldCByPSExO3N3aXRjaCgwfGEpe2Nhc2UtMTp3YXJuKCJVbnRlcm1pbmF0ZWQgc3RyaW5nIik7dD0hMDticmVhaztjYXNlIDQwOisrZTtpLnB1c2goIigiKTticmVhaztjYXNlIDQxOmlmKDA9PS0tZSl7dGhpcy5uZXh0Q2hhcigpO3Q9ITB9ZWxzZSBpLnB1c2goIikiKTticmVhaztjYXNlIDkyOmE9dGhpcy5uZXh0Q2hhcigpO3N3aXRjaChhKXtjYXNlLTE6d2FybigiVW50ZXJtaW5hdGVkIHN0cmluZyIpO3Q9ITA7YnJlYWs7Y2FzZSAxMTA6aS5wdXNoKCJcbiIpO2JyZWFrO2Nhc2UgMTE0OmkucHVzaCgiXHIiKTticmVhaztjYXNlIDExNjppLnB1c2goIlx0Iik7YnJlYWs7Y2FzZSA5ODppLnB1c2goIlxiIik7YnJlYWs7Y2FzZSAxMDI6aS5wdXNoKCJcZiIpO2JyZWFrO2Nhc2UgOTI6Y2FzZSA0MDpjYXNlIDQxOmkucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGEpKTticmVhaztjYXNlIDQ4OmNhc2UgNDk6Y2FzZSA1MDpjYXNlIDUxOmNhc2UgNTI6Y2FzZSA1MzpjYXNlIDU0OmNhc2UgNTU6bGV0IGU9MTUmYTthPXRoaXMubmV4dENoYXIoKTtyPSEwO2lmKGE+PTQ4JiZhPD01NSl7ZT0oZTw8MykrKDE1JmEpO2E9dGhpcy5uZXh0Q2hhcigpO2lmKGE+PTQ4JiZhPD01NSl7cj0hMTtlPShlPDwzKSsoMTUmYSl9fWkucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGUpKTticmVhaztjYXNlIDEzOjEwPT09dGhpcy5wZWVrQ2hhcigpJiZ0aGlzLm5leHRDaGFyKCk7YnJlYWs7Y2FzZSAxMDpicmVhaztkZWZhdWx0OmkucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGEpKX1icmVhaztkZWZhdWx0OmkucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGEpKX1pZih0KWJyZWFrO3J8fChhPXRoaXMubmV4dENoYXIoKSl9cmV0dXJuIGkuam9pbigiIil9Z2V0TmFtZSgpe2xldCBlLHQ7Y29uc3QgaT10aGlzLnN0ckJ1ZjtpLmxlbmd0aD0wO2Zvcig7KGU9dGhpcy5uZXh0Q2hhcigpKT49MCYmIVFpW2VdOylpZigzNT09PWUpe2U9dGhpcy5uZXh0Q2hhcigpO2lmKFFpW2VdKXt3YXJuKCJMZXhlcl9nZXROYW1lOiBOVU1CRVIgU0lHTiAoIykgc2hvdWxkIGJlIGZvbGxvd2VkIGJ5IGEgaGV4YWRlY2ltYWwgbnVtYmVyLiIpO2kucHVzaCgiIyIpO2JyZWFrfWNvbnN0IGE9dG9IZXhEaWdpdChlKTtpZigtMSE9PWEpe3Q9ZTtlPXRoaXMubmV4dENoYXIoKTtjb25zdCByPXRvSGV4RGlnaXQoZSk7aWYoLTE9PT1yKXt3YXJuKGBMZXhlcl9nZXROYW1lOiBJbGxlZ2FsIGRpZ2l0ICgke1N0cmluZy5mcm9tQ2hhckNvZGUoZSl9KSBpbiBoZXhhZGVjaW1hbCBudW1iZXIuYCk7aS5wdXNoKCIjIixTdHJpbmcuZnJvbUNoYXJDb2RlKHQpKTtpZihRaVtlXSlicmVhaztpLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShlKSk7Y29udGludWV9aS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoYTw8NHxyKSl9ZWxzZSBpLnB1c2goIiMiLFN0cmluZy5mcm9tQ2hhckNvZGUoZSkpfWVsc2UgaS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoZSkpO2kubGVuZ3RoPjEyNyYmd2FybihgTmFtZSB0b2tlbiBpcyBsb25nZXIgdGhhbiBhbGxvd2VkIGJ5IHRoZSBzcGVjOiAke2kubGVuZ3RofWApO3JldHVybiBOYW1lLmdldChpLmpvaW4oIiIpKX1faGV4U3RyaW5nV2FybihlKXs1IT10aGlzLl9oZXhTdHJpbmdOdW1XYXJuKys/dGhpcy5faGV4U3RyaW5nTnVtV2Fybj41fHx3YXJuKGBnZXRIZXhTdHJpbmcgLSBpZ25vcmluZyBpbnZhbGlkIGNoYXJhY3RlcjogJHtlfWApOndhcm4oImdldEhleFN0cmluZyAtIGlnbm9yaW5nIGFkZGl0aW9uYWwgaW52YWxpZCBjaGFyYWN0ZXJzLiIpfWdldEhleFN0cmluZygpe2NvbnN0IGU9dGhpcy5zdHJCdWY7ZS5sZW5ndGg9MDtsZXQgdD10aGlzLmN1cnJlbnRDaGFyLGk9LTEsYT0tMTt0aGlzLl9oZXhTdHJpbmdOdW1XYXJuPTA7Zm9yKDs7KXtpZih0PDApe3dhcm4oIlVudGVybWluYXRlZCBoZXggc3RyaW5nIik7YnJlYWt9aWYoNjI9PT10KXt0aGlzLm5leHRDaGFyKCk7YnJlYWt9aWYoMSE9PVFpW3RdKXthPXRvSGV4RGlnaXQodCk7aWYoLTE9PT1hKXRoaXMuX2hleFN0cmluZ1dhcm4odCk7ZWxzZSBpZigtMT09PWkpaT1hO2Vsc2V7ZS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoaTw8NHxhKSk7aT0tMX10PXRoaXMubmV4dENoYXIoKX1lbHNlIHQ9dGhpcy5uZXh0Q2hhcigpfS0xIT09aSYmZS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoaTw8NCkpO3JldHVybiBlLmpvaW4oIiIpfWdldE9iaigpe2xldCBlPSExLHQ9dGhpcy5jdXJyZW50Q2hhcjtmb3IoOzspe2lmKHQ8MClyZXR1cm4gRHQ7aWYoZSkxMCE9PXQmJjEzIT09dHx8KGU9ITEpO2Vsc2UgaWYoMzc9PT10KWU9ITA7ZWxzZSBpZigxIT09UWlbdF0pYnJlYWs7dD10aGlzLm5leHRDaGFyKCl9c3dpdGNoKDB8dCl7Y2FzZSA0ODpjYXNlIDQ5OmNhc2UgNTA6Y2FzZSA1MTpjYXNlIDUyOmNhc2UgNTM6Y2FzZSA1NDpjYXNlIDU1OmNhc2UgNTY6Y2FzZSA1NzpjYXNlIDQzOmNhc2UgNDU6Y2FzZSA0NjpyZXR1cm4gdGhpcy5nZXROdW1iZXIoKTtjYXNlIDQwOnJldHVybiB0aGlzLmdldFN0cmluZygpO2Nhc2UgNDc6cmV0dXJuIHRoaXMuZ2V0TmFtZSgpO2Nhc2UgOTE6dGhpcy5uZXh0Q2hhcigpO3JldHVybiBDbWQuZ2V0KCJbIik7Y2FzZSA5Mzp0aGlzLm5leHRDaGFyKCk7cmV0dXJuIENtZC5nZXQoIl0iKTtjYXNlIDYwOnQ9dGhpcy5uZXh0Q2hhcigpO2lmKDYwPT09dCl7dGhpcy5uZXh0Q2hhcigpO3JldHVybiBDbWQuZ2V0KCI8PCIpfXJldHVybiB0aGlzLmdldEhleFN0cmluZygpO2Nhc2UgNjI6dD10aGlzLm5leHRDaGFyKCk7aWYoNjI9PT10KXt0aGlzLm5leHRDaGFyKCk7cmV0dXJuIENtZC5nZXQoIj4+Iil9cmV0dXJuIENtZC5nZXQoIj4iKTtjYXNlIDEyMzp0aGlzLm5leHRDaGFyKCk7cmV0dXJuIENtZC5nZXQoInsiKTtjYXNlIDEyNTp0aGlzLm5leHRDaGFyKCk7cmV0dXJuIENtZC5nZXQoIn0iKTtjYXNlIDQxOnRoaXMubmV4dENoYXIoKTt0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYElsbGVnYWwgY2hhcmFjdGVyOiAke3R9YCl9bGV0IGk9U3RyaW5nLmZyb21DaGFyQ29kZSh0KTtpZih0PDMyfHx0PjEyNyl7Y29uc3QgZT10aGlzLnBlZWtDaGFyKCk7aWYoZT49MzImJmU8PTEyNyl7dGhpcy5uZXh0Q2hhcigpO3JldHVybiBDbWQuZ2V0KGkpfX1jb25zdCBhPXRoaXMua25vd25Db21tYW5kcztsZXQgcj12b2lkIDAhPT1hPy5baV07Zm9yKDsodD10aGlzLm5leHRDaGFyKCkpPj0wJiYhUWlbdF07KXtjb25zdCBlPWkrU3RyaW5nLmZyb21DaGFyQ29kZSh0KTtpZihyJiZ2b2lkIDA9PT1hW2VdKWJyZWFrO2lmKDEyOD09PWkubGVuZ3RoKXRocm93IG5ldyBGb3JtYXRFcnJvcihgQ29tbWFuZCB0b2tlbiB0b28gbG9uZzogJHtpLmxlbmd0aH1gKTtpPWU7cj12b2lkIDAhPT1hPy5baV19aWYoInRydWUiPT09aSlyZXR1cm4hMDtpZigiZmFsc2UiPT09aSlyZXR1cm4hMTtpZigibnVsbCI9PT1pKXJldHVybiBudWxsOyJCSSI9PT1pJiYodGhpcy5iZWdpbklubGluZUltYWdlUG9zPXRoaXMuc3RyZWFtLnBvcyk7cmV0dXJuIENtZC5nZXQoaSl9c2tpcFRvTmV4dExpbmUoKXtsZXQgZT10aGlzLmN1cnJlbnRDaGFyO2Zvcig7ZT49MDspe2lmKDEzPT09ZSl7ZT10aGlzLm5leHRDaGFyKCk7MTA9PT1lJiZ0aGlzLm5leHRDaGFyKCk7YnJlYWt9aWYoMTA9PT1lKXt0aGlzLm5leHRDaGFyKCk7YnJlYWt9ZT10aGlzLm5leHRDaGFyKCl9fX1jbGFzcyBMaW5lYXJpemF0aW9ue3N0YXRpYyBjcmVhdGUoZSl7ZnVuY3Rpb24gZ2V0SW50KGUsdCxpPSExKXtjb25zdCBhPWUuZ2V0KHQpO2lmKE51bWJlci5pc0ludGVnZXIoYSkmJihpP2E+PTA6YT4wKSlyZXR1cm4gYTt0aHJvdyBuZXcgRXJyb3IoYFRoZSAiJHt0fSIgcGFyYW1ldGVyIGluIHRoZSBsaW5lYXJpemF0aW9uIGRpY3Rpb25hcnkgaXMgaW52YWxpZC5gKX1jb25zdCB0PW5ldyBQYXJzZXIoe2xleGVyOm5ldyBMZXhlcihlKSx4cmVmOm51bGx9KSxpPXQuZ2V0T2JqKCksYT10LmdldE9iaigpLHI9dC5nZXRPYmooKSxzPXQuZ2V0T2JqKCk7bGV0IG4sbztpZighKE51bWJlci5pc0ludGVnZXIoaSkmJk51bWJlci5pc0ludGVnZXIoYSkmJmlzQ21kKHIsIm9iaiIpJiZzIGluc3RhbmNlb2YgRGljdCYmIm51bWJlciI9PXR5cGVvZihuPXMuZ2V0KCJMaW5lYXJpemVkIikpJiZuPjApKXJldHVybiBudWxsO2lmKChvPWdldEludChzLCJMIikpIT09ZS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCdUaGUgIkwiIHBhcmFtZXRlciBpbiB0aGUgbGluZWFyaXphdGlvbiBkaWN0aW9uYXJ5IGRvZXMgbm90IGVxdWFsIHRoZSBzdHJlYW0gbGVuZ3RoLicpO3JldHVybntsZW5ndGg6byxoaW50czpmdW5jdGlvbiBnZXRIaW50cyhlKXtjb25zdCB0PWUuZ2V0KCJIIik7bGV0IGk7aWYoQXJyYXkuaXNBcnJheSh0KSYmKDI9PT0oaT10Lmxlbmd0aCl8fDQ9PT1pKSl7Zm9yKGxldCBlPTA7ZTxpO2UrKyl7Y29uc3QgaT10W2VdO2lmKCEoTnVtYmVyLmlzSW50ZWdlcihpKSYmaT4wKSl0aHJvdyBuZXcgRXJyb3IoYEhpbnQgKCR7ZX0pIGluIHRoZSBsaW5lYXJpemF0aW9uIGRpY3Rpb25hcnkgaXMgaW52YWxpZC5gKX1yZXR1cm4gdH10aHJvdyBuZXcgRXJyb3IoIkhpbnQgYXJyYXkgaW4gdGhlIGxpbmVhcml6YXRpb24gZGljdGlvbmFyeSBpcyBpbnZhbGlkLiIpfShzKSxvYmplY3ROdW1iZXJGaXJzdDpnZXRJbnQocywiTyIpLGVuZEZpcnN0OmdldEludChzLCJFIiksbnVtUGFnZXM6Z2V0SW50KHMsIk4iKSxtYWluWFJlZkVudHJpZXNPZmZzZXQ6Z2V0SW50KHMsIlQiKSxwYWdlRmlyc3Q6cy5oYXMoIlAiKT9nZXRJbnQocywiUCIsITApOjB9fX1jb25zdCBFaT1bIkFkb2JlLUdCMS1VQ1MyIiwiQWRvYmUtQ05TMS1VQ1MyIiwiQWRvYmUtSmFwYW4xLVVDUzIiLCJBZG9iZS1Lb3JlYTEtVUNTMiIsIjc4LUVVQy1IIiwiNzgtRVVDLVYiLCI3OC1IIiwiNzgtUktTSi1IIiwiNzgtUktTSi1WIiwiNzgtViIsIjc4bXMtUktTSi1IIiwiNzhtcy1SS1NKLVYiLCI4M3B2LVJLU0otSCIsIjkwbXMtUktTSi1IIiwiOTBtcy1SS1NKLVYiLCI5MG1zcC1SS1NKLUgiLCI5MG1zcC1SS1NKLVYiLCI5MHB2LVJLU0otSCIsIjkwcHYtUktTSi1WIiwiQWRkLUgiLCJBZGQtUktTSi1IIiwiQWRkLVJLU0otViIsIkFkZC1WIiwiQWRvYmUtQ05TMS0wIiwiQWRvYmUtQ05TMS0xIiwiQWRvYmUtQ05TMS0yIiwiQWRvYmUtQ05TMS0zIiwiQWRvYmUtQ05TMS00IiwiQWRvYmUtQ05TMS01IiwiQWRvYmUtQ05TMS02IiwiQWRvYmUtR0IxLTAiLCJBZG9iZS1HQjEtMSIsIkFkb2JlLUdCMS0yIiwiQWRvYmUtR0IxLTMiLCJBZG9iZS1HQjEtNCIsIkFkb2JlLUdCMS01IiwiQWRvYmUtSmFwYW4xLTAiLCJBZG9iZS1KYXBhbjEtMSIsIkFkb2JlLUphcGFuMS0yIiwiQWRvYmUtSmFwYW4xLTMiLCJBZG9iZS1KYXBhbjEtNCIsIkFkb2JlLUphcGFuMS01IiwiQWRvYmUtSmFwYW4xLTYiLCJBZG9iZS1Lb3JlYTEtMCIsIkFkb2JlLUtvcmVhMS0xIiwiQWRvYmUtS29yZWExLTIiLCJCNS1IIiwiQjUtViIsIkI1cGMtSCIsIkI1cGMtViIsIkNOUy1FVUMtSCIsIkNOUy1FVUMtViIsIkNOUzEtSCIsIkNOUzEtViIsIkNOUzItSCIsIkNOUzItViIsIkVUSEstQjUtSCIsIkVUSEstQjUtViIsIkVUZW4tQjUtSCIsIkVUZW4tQjUtViIsIkVUZW5tcy1CNS1IIiwiRVRlbm1zLUI1LVYiLCJFVUMtSCIsIkVVQy1WIiwiRXh0LUgiLCJFeHQtUktTSi1IIiwiRXh0LVJLU0otViIsIkV4dC1WIiwiR0ItRVVDLUgiLCJHQi1FVUMtViIsIkdCLUgiLCJHQi1WIiwiR0JLLUVVQy1IIiwiR0JLLUVVQy1WIiwiR0JLMkstSCIsIkdCSzJLLVYiLCJHQktwLUVVQy1IIiwiR0JLcC1FVUMtViIsIkdCVC1FVUMtSCIsIkdCVC1FVUMtViIsIkdCVC1IIiwiR0JULVYiLCJHQlRwYy1FVUMtSCIsIkdCVHBjLUVVQy1WIiwiR0JwYy1FVUMtSCIsIkdCcGMtRVVDLVYiLCJIIiwiSEtkbGEtQjUtSCIsIkhLZGxhLUI1LVYiLCJIS2RsYi1CNS1IIiwiSEtkbGItQjUtViIsIkhLZ2Njcy1CNS1IIiwiSEtnY2NzLUI1LVYiLCJIS20zMTQtQjUtSCIsIkhLbTMxNC1CNS1WIiwiSEttNDcxLUI1LUgiLCJIS200NzEtQjUtViIsIkhLc2NzLUI1LUgiLCJIS3Njcy1CNS1WIiwiSGFua2FrdSIsIkhpcmFnYW5hIiwiS1NDLUVVQy1IIiwiS1NDLUVVQy1WIiwiS1NDLUgiLCJLU0MtSm9oYWItSCIsIktTQy1Kb2hhYi1WIiwiS1NDLVYiLCJLU0Ntcy1VSEMtSCIsIktTQ21zLVVIQy1IVy1IIiwiS1NDbXMtVUhDLUhXLVYiLCJLU0Ntcy1VSEMtViIsIktTQ3BjLUVVQy1IIiwiS1NDcGMtRVVDLVYiLCJLYXRha2FuYSIsIk5XUC1IIiwiTldQLVYiLCJSS1NKLUgiLCJSS1NKLVYiLCJSb21hbiIsIlVuaUNOUy1VQ1MyLUgiLCJVbmlDTlMtVUNTMi1WIiwiVW5pQ05TLVVURjE2LUgiLCJVbmlDTlMtVVRGMTYtViIsIlVuaUNOUy1VVEYzMi1IIiwiVW5pQ05TLVVURjMyLVYiLCJVbmlDTlMtVVRGOC1IIiwiVW5pQ05TLVVURjgtViIsIlVuaUdCLVVDUzItSCIsIlVuaUdCLVVDUzItViIsIlVuaUdCLVVURjE2LUgiLCJVbmlHQi1VVEYxNi1WIiwiVW5pR0ItVVRGMzItSCIsIlVuaUdCLVVURjMyLVYiLCJVbmlHQi1VVEY4LUgiLCJVbmlHQi1VVEY4LVYiLCJVbmlKSVMtVUNTMi1IIiwiVW5pSklTLVVDUzItSFctSCIsIlVuaUpJUy1VQ1MyLUhXLVYiLCJVbmlKSVMtVUNTMi1WIiwiVW5pSklTLVVURjE2LUgiLCJVbmlKSVMtVVRGMTYtViIsIlVuaUpJUy1VVEYzMi1IIiwiVW5pSklTLVVURjMyLVYiLCJVbmlKSVMtVVRGOC1IIiwiVW5pSklTLVVURjgtViIsIlVuaUpJUzIwMDQtVVRGMTYtSCIsIlVuaUpJUzIwMDQtVVRGMTYtViIsIlVuaUpJUzIwMDQtVVRGMzItSCIsIlVuaUpJUzIwMDQtVVRGMzItViIsIlVuaUpJUzIwMDQtVVRGOC1IIiwiVW5pSklTMjAwNC1VVEY4LVYiLCJVbmlKSVNQcm8tVUNTMi1IVy1WIiwiVW5pSklTUHJvLVVDUzItViIsIlVuaUpJU1Byby1VVEY4LVYiLCJVbmlKSVNYMDIxMy1VVEYzMi1IIiwiVW5pSklTWDAyMTMtVVRGMzItViIsIlVuaUpJU1gwMjEzMjAwNC1VVEYzMi1IIiwiVW5pSklTWDAyMTMyMDA0LVVURjMyLVYiLCJVbmlLUy1VQ1MyLUgiLCJVbmlLUy1VQ1MyLVYiLCJVbmlLUy1VVEYxNi1IIiwiVW5pS1MtVVRGMTYtViIsIlVuaUtTLVVURjMyLUgiLCJVbmlLUy1VVEYzMi1WIiwiVW5pS1MtVVRGOC1IIiwiVW5pS1MtVVRGOC1WIiwiViIsIldQLVN5bWJvbCJdLHVpPTIqKjI0LTE7Y2xhc3MgQ01hcHtjb25zdHJ1Y3RvcihlPSExKXt0aGlzLmNvZGVzcGFjZVJhbmdlcz1bW10sW10sW10sW11dO3RoaXMubnVtQ29kZXNwYWNlUmFuZ2VzPTA7dGhpcy5fbWFwPVtdO3RoaXMubmFtZT0iIjt0aGlzLnZlcnRpY2FsPSExO3RoaXMudXNlQ01hcD1udWxsO3RoaXMuYnVpbHRJbkNNYXA9ZX1hZGRDb2Rlc3BhY2VSYW5nZShlLHQsaSl7dGhpcy5jb2Rlc3BhY2VSYW5nZXNbZS0xXS5wdXNoKHQsaSk7dGhpcy5udW1Db2Rlc3BhY2VSYW5nZXMrK31tYXBDaWRSYW5nZShlLHQsaSl7aWYodC1lPnVpKXRocm93IG5ldyBFcnJvcigibWFwQ2lkUmFuZ2UgLSBpZ25vcmluZyBkYXRhIGFib3ZlIE1BWF9NQVBfUkFOR0UuIik7Zm9yKDtlPD10Oyl0aGlzLl9tYXBbZSsrXT1pKyt9bWFwQmZSYW5nZShlLHQsaSl7aWYodC1lPnVpKXRocm93IG5ldyBFcnJvcigibWFwQmZSYW5nZSAtIGlnbm9yaW5nIGRhdGEgYWJvdmUgTUFYX01BUF9SQU5HRS4iKTtjb25zdCBhPWkubGVuZ3RoLTE7Zm9yKDtlPD10Oyl7dGhpcy5fbWFwW2UrK109aTtjb25zdCB0PWkuY2hhckNvZGVBdChhKSsxO3Q+MjU1P2k9aS5zdWJzdHJpbmcoMCxhLTEpK1N0cmluZy5mcm9tQ2hhckNvZGUoaS5jaGFyQ29kZUF0KGEtMSkrMSkrIlwwIjppPWkuc3Vic3RyaW5nKDAsYSkrU3RyaW5nLmZyb21DaGFyQ29kZSh0KX19bWFwQmZSYW5nZVRvQXJyYXkoZSx0LGkpe2lmKHQtZT51aSl0aHJvdyBuZXcgRXJyb3IoIm1hcEJmUmFuZ2VUb0FycmF5IC0gaWdub3JpbmcgZGF0YSBhYm92ZSBNQVhfTUFQX1JBTkdFLiIpO2NvbnN0IGE9aS5sZW5ndGg7bGV0IHI9MDtmb3IoO2U8PXQmJnI8YTspe3RoaXMuX21hcFtlXT1pW3IrK107KytlfX1tYXBPbmUoZSx0KXt0aGlzLl9tYXBbZV09dH1sb29rdXAoZSl7cmV0dXJuIHRoaXMuX21hcFtlXX1jb250YWlucyhlKXtyZXR1cm4gdm9pZCAwIT09dGhpcy5fbWFwW2VdfWZvckVhY2goZSl7Y29uc3QgdD10aGlzLl9tYXAsaT10Lmxlbmd0aDtpZihpPD02NTUzNilmb3IobGV0IGE9MDthPGk7YSsrKXZvaWQgMCE9PXRbYV0mJmUoYSx0W2FdKTtlbHNlIGZvcihjb25zdCBpIGluIHQpZShpLHRbaV0pfWNoYXJDb2RlT2YoZSl7Y29uc3QgdD10aGlzLl9tYXA7aWYodC5sZW5ndGg8PTY1NTM2KXJldHVybiB0LmluZGV4T2YoZSk7Zm9yKGNvbnN0IGkgaW4gdClpZih0W2ldPT09ZSlyZXR1cm4gMHxpO3JldHVybi0xfWdldE1hcCgpe3JldHVybiB0aGlzLl9tYXB9cmVhZENoYXJDb2RlKGUsdCxpKXtsZXQgYT0wO2NvbnN0IHI9dGhpcy5jb2Rlc3BhY2VSYW5nZXM7Zm9yKGxldCBzPTAsbj1yLmxlbmd0aDtzPG47cysrKXthPShhPDw4fGUuY2hhckNvZGVBdCh0K3MpKT4+PjA7Y29uc3Qgbj1yW3NdO2ZvcihsZXQgZT0wLHQ9bi5sZW5ndGg7ZTx0Oyl7Y29uc3QgdD1uW2UrK10scj1uW2UrK107aWYoYT49dCYmYTw9cil7aS5jaGFyY29kZT1hO2kubGVuZ3RoPXMrMTtyZXR1cm59fX1pLmNoYXJjb2RlPTA7aS5sZW5ndGg9MX1nZXRDaGFyQ29kZUxlbmd0aChlKXtjb25zdCB0PXRoaXMuY29kZXNwYWNlUmFuZ2VzO2ZvcihsZXQgaT0wLGE9dC5sZW5ndGg7aTxhO2krKyl7Y29uc3QgYT10W2ldO2ZvcihsZXQgdD0wLHI9YS5sZW5ndGg7dDxyOyl7Y29uc3Qgcj1hW3QrK10scz1hW3QrK107aWYoZT49ciYmZTw9cylyZXR1cm4gaSsxfX1yZXR1cm4gMX1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXMuX21hcC5sZW5ndGh9Z2V0IGlzSWRlbnRpdHlDTWFwKCl7aWYoIklkZW50aXR5LUgiIT09dGhpcy5uYW1lJiYiSWRlbnRpdHktViIhPT10aGlzLm5hbWUpcmV0dXJuITE7aWYoNjU1MzYhPT10aGlzLl9tYXAubGVuZ3RoKXJldHVybiExO2ZvcihsZXQgZT0wO2U8NjU1MzY7ZSsrKWlmKHRoaXMuX21hcFtlXSE9PWUpcmV0dXJuITE7cmV0dXJuITB9fWNsYXNzIElkZW50aXR5Q01hcCBleHRlbmRzIENNYXB7Y29uc3RydWN0b3IoZSx0KXtzdXBlcigpO3RoaXMudmVydGljYWw9ZTt0aGlzLmFkZENvZGVzcGFjZVJhbmdlKHQsMCw2NTUzNSl9bWFwQ2lkUmFuZ2UoZSx0LGkpe3VucmVhY2hhYmxlKCJzaG91bGQgbm90IGNhbGwgbWFwQ2lkUmFuZ2UiKX1tYXBCZlJhbmdlKGUsdCxpKXt1bnJlYWNoYWJsZSgic2hvdWxkIG5vdCBjYWxsIG1hcEJmUmFuZ2UiKX1tYXBCZlJhbmdlVG9BcnJheShlLHQsaSl7dW5yZWFjaGFibGUoInNob3VsZCBub3QgY2FsbCBtYXBCZlJhbmdlVG9BcnJheSIpfW1hcE9uZShlLHQpe3VucmVhY2hhYmxlKCJzaG91bGQgbm90IGNhbGwgbWFwQ2lkT25lIil9bG9va3VwKGUpe3JldHVybiBOdW1iZXIuaXNJbnRlZ2VyKGUpJiZlPD02NTUzNT9lOnZvaWQgMH1jb250YWlucyhlKXtyZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihlKSYmZTw9NjU1MzV9Zm9yRWFjaChlKXtmb3IobGV0IHQ9MDt0PD02NTUzNTt0KyspZSh0LHQpfWNoYXJDb2RlT2YoZSl7cmV0dXJuIE51bWJlci5pc0ludGVnZXIoZSkmJmU8PTY1NTM1P2U6LTF9Z2V0TWFwKCl7Y29uc3QgZT1uZXcgQXJyYXkoNjU1MzYpO2ZvcihsZXQgdD0wO3Q8PTY1NTM1O3QrKyllW3RdPXQ7cmV0dXJuIGV9Z2V0IGxlbmd0aCgpe3JldHVybiA2NTUzNn1nZXQgaXNJZGVudGl0eUNNYXAoKXt1bnJlYWNoYWJsZSgic2hvdWxkIG5vdCBhY2Nlc3MgLmlzSWRlbnRpdHlDTWFwIil9fWZ1bmN0aW9uIHN0clRvSW50KGUpe2xldCB0PTA7Zm9yKGxldCBpPTA7aTxlLmxlbmd0aDtpKyspdD10PDw4fGUuY2hhckNvZGVBdChpKTtyZXR1cm4gdD4+PjB9ZnVuY3Rpb24gZXhwZWN0U3RyaW5nKGUpe2lmKCJzdHJpbmciIT10eXBlb2YgZSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIk1hbGZvcm1lZCBDTWFwOiBleHBlY3RlZCBzdHJpbmcuIil9ZnVuY3Rpb24gZXhwZWN0SW50KGUpe2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGUpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiTWFsZm9ybWVkIENNYXA6IGV4cGVjdGVkIGludC4iKX1mdW5jdGlvbiBwYXJzZUJmQ2hhcihlLHQpe2Zvcig7Oyl7bGV0IGk9dC5nZXRPYmooKTtpZihpPT09RHQpYnJlYWs7aWYoaXNDbWQoaSwiZW5kYmZjaGFyIikpcmV0dXJuO2V4cGVjdFN0cmluZyhpKTtjb25zdCBhPXN0clRvSW50KGkpO2k9dC5nZXRPYmooKTtleHBlY3RTdHJpbmcoaSk7Y29uc3Qgcj1pO2UubWFwT25lKGEscil9fWZ1bmN0aW9uIHBhcnNlQmZSYW5nZShlLHQpe2Zvcig7Oyl7bGV0IGk9dC5nZXRPYmooKTtpZihpPT09RHQpYnJlYWs7aWYoaXNDbWQoaSwiZW5kYmZyYW5nZSIpKXJldHVybjtleHBlY3RTdHJpbmcoaSk7Y29uc3QgYT1zdHJUb0ludChpKTtpPXQuZ2V0T2JqKCk7ZXhwZWN0U3RyaW5nKGkpO2NvbnN0IHI9c3RyVG9JbnQoaSk7aT10LmdldE9iaigpO2lmKE51bWJlci5pc0ludGVnZXIoaSl8fCJzdHJpbmciPT10eXBlb2YgaSl7Y29uc3QgdD1OdW1iZXIuaXNJbnRlZ2VyKGkpP1N0cmluZy5mcm9tQ2hhckNvZGUoaSk6aTtlLm1hcEJmUmFuZ2UoYSxyLHQpfWVsc2V7aWYoIWlzQ21kKGksIlsiKSlicmVhazt7aT10LmdldE9iaigpO2NvbnN0IHM9W107Zm9yKDshaXNDbWQoaSwiXSIpJiZpIT09RHQ7KXtzLnB1c2goaSk7aT10LmdldE9iaigpfWUubWFwQmZSYW5nZVRvQXJyYXkoYSxyLHMpfX19dGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIGJmIHJhbmdlLiIpfWZ1bmN0aW9uIHBhcnNlQ2lkQ2hhcihlLHQpe2Zvcig7Oyl7bGV0IGk9dC5nZXRPYmooKTtpZihpPT09RHQpYnJlYWs7aWYoaXNDbWQoaSwiZW5kY2lkY2hhciIpKXJldHVybjtleHBlY3RTdHJpbmcoaSk7Y29uc3QgYT1zdHJUb0ludChpKTtpPXQuZ2V0T2JqKCk7ZXhwZWN0SW50KGkpO2NvbnN0IHI9aTtlLm1hcE9uZShhLHIpfX1mdW5jdGlvbiBwYXJzZUNpZFJhbmdlKGUsdCl7Zm9yKDs7KXtsZXQgaT10LmdldE9iaigpO2lmKGk9PT1EdClicmVhaztpZihpc0NtZChpLCJlbmRjaWRyYW5nZSIpKXJldHVybjtleHBlY3RTdHJpbmcoaSk7Y29uc3QgYT1zdHJUb0ludChpKTtpPXQuZ2V0T2JqKCk7ZXhwZWN0U3RyaW5nKGkpO2NvbnN0IHI9c3RyVG9JbnQoaSk7aT10LmdldE9iaigpO2V4cGVjdEludChpKTtjb25zdCBzPWk7ZS5tYXBDaWRSYW5nZShhLHIscyl9fWZ1bmN0aW9uIHBhcnNlQ29kZXNwYWNlUmFuZ2UoZSx0KXtmb3IoOzspe2xldCBpPXQuZ2V0T2JqKCk7aWYoaT09PUR0KWJyZWFrO2lmKGlzQ21kKGksImVuZGNvZGVzcGFjZXJhbmdlIikpcmV0dXJuO2lmKCJzdHJpbmciIT10eXBlb2YgaSlicmVhaztjb25zdCBhPXN0clRvSW50KGkpO2k9dC5nZXRPYmooKTtpZigic3RyaW5nIiE9dHlwZW9mIGkpYnJlYWs7Y29uc3Qgcj1zdHJUb0ludChpKTtlLmFkZENvZGVzcGFjZVJhbmdlKGkubGVuZ3RoLGEscil9dGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIGNvZGVzcGFjZSByYW5nZS4iKX1mdW5jdGlvbiBwYXJzZVdNb2RlKGUsdCl7Y29uc3QgaT10LmdldE9iaigpO051bWJlci5pc0ludGVnZXIoaSkmJihlLnZlcnRpY2FsPSEhaSl9ZnVuY3Rpb24gcGFyc2VDTWFwTmFtZShlLHQpe2NvbnN0IGk9dC5nZXRPYmooKTtpIGluc3RhbmNlb2YgTmFtZSYmKGUubmFtZT1pLm5hbWUpfWFzeW5jIGZ1bmN0aW9uIHBhcnNlQ01hcChlLHQsaSxhKXtsZXQgcixzO0E6Zm9yKDs7KXRyeXtjb25zdCBpPXQuZ2V0T2JqKCk7aWYoaT09PUR0KWJyZWFrO2lmKGkgaW5zdGFuY2VvZiBOYW1lKXsiV01vZGUiPT09aS5uYW1lP3BhcnNlV01vZGUoZSx0KToiQ01hcE5hbWUiPT09aS5uYW1lJiZwYXJzZUNNYXBOYW1lKGUsdCk7cj1pfWVsc2UgaWYoaSBpbnN0YW5jZW9mIENtZClzd2l0Y2goaS5jbWQpe2Nhc2UiZW5kY21hcCI6YnJlYWsgQTtjYXNlInVzZWNtYXAiOnIgaW5zdGFuY2VvZiBOYW1lJiYocz1yLm5hbWUpO2JyZWFrO2Nhc2UiYmVnaW5jb2Rlc3BhY2VyYW5nZSI6cGFyc2VDb2Rlc3BhY2VSYW5nZShlLHQpO2JyZWFrO2Nhc2UiYmVnaW5iZmNoYXIiOnBhcnNlQmZDaGFyKGUsdCk7YnJlYWs7Y2FzZSJiZWdpbmNpZGNoYXIiOnBhcnNlQ2lkQ2hhcihlLHQpO2JyZWFrO2Nhc2UiYmVnaW5iZnJhbmdlIjpwYXJzZUJmUmFuZ2UoZSx0KTticmVhaztjYXNlImJlZ2luY2lkcmFuZ2UiOnBhcnNlQ2lkUmFuZ2UoZSx0KX19Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7d2FybigiSW52YWxpZCBjTWFwIGRhdGE6ICIrZSk7Y29udGludWV9IWEmJnMmJihhPXMpO3JldHVybiBhP2V4dGVuZENNYXAoZSxpLGEpOmV9YXN5bmMgZnVuY3Rpb24gZXh0ZW5kQ01hcChlLHQsaSl7ZS51c2VDTWFwPWF3YWl0IGNyZWF0ZUJ1aWx0SW5DTWFwKGksdCk7aWYoMD09PWUubnVtQ29kZXNwYWNlUmFuZ2VzKXtjb25zdCB0PWUudXNlQ01hcC5jb2Rlc3BhY2VSYW5nZXM7Zm9yKGxldCBpPTA7aTx0Lmxlbmd0aDtpKyspZS5jb2Rlc3BhY2VSYW5nZXNbaV09dFtpXS5zbGljZSgpO2UubnVtQ29kZXNwYWNlUmFuZ2VzPWUudXNlQ01hcC5udW1Db2Rlc3BhY2VSYW5nZXN9ZS51c2VDTWFwLmZvckVhY2goKGZ1bmN0aW9uKHQsaSl7ZS5jb250YWlucyh0KXx8ZS5tYXBPbmUodCxlLnVzZUNNYXAubG9va3VwKHQpKX0pKTtyZXR1cm4gZX1hc3luYyBmdW5jdGlvbiBjcmVhdGVCdWlsdEluQ01hcChlLHQpe2lmKCJJZGVudGl0eS1IIj09PWUpcmV0dXJuIG5ldyBJZGVudGl0eUNNYXAoITEsMik7aWYoIklkZW50aXR5LVYiPT09ZSlyZXR1cm4gbmV3IElkZW50aXR5Q01hcCghMCwyKTtpZighRWkuaW5jbHVkZXMoZSkpdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIENNYXAgbmFtZTogIitlKTtpZighdCl0aHJvdyBuZXcgRXJyb3IoIkJ1aWx0LWluIENNYXAgcGFyYW1ldGVycyBhcmUgbm90IHByb3ZpZGVkLiIpO2NvbnN0e2NNYXBEYXRhOmksY29tcHJlc3Npb25UeXBlOmF9PWF3YWl0IHQoZSkscj1uZXcgQ01hcCghMCk7aWYoYT09PWJBLkJJTkFSWSlyZXR1cm4obmV3IEJpbmFyeUNNYXBSZWFkZXIpLnByb2Nlc3MoaSxyLChlPT5leHRlbmRDTWFwKHIsdCxlKSkpO2lmKGE9PT1iQS5OT05FKXtjb25zdCBlPW5ldyBMZXhlcihuZXcgU3RyZWFtKGkpKTtyZXR1cm4gcGFyc2VDTWFwKHIsZSx0LG51bGwpfXRocm93IG5ldyBFcnJvcihgSW52YWxpZCBDTWFwICJjb21wcmVzc2lvblR5cGUiIHZhbHVlOiAke2F9YCl9Y2xhc3MgQ01hcEZhY3Rvcnl7c3RhdGljIGFzeW5jIGNyZWF0ZSh7ZW5jb2Rpbmc6ZSxmZXRjaEJ1aWx0SW5DTWFwOnQsdXNlQ01hcDppfSl7aWYoZSBpbnN0YW5jZW9mIE5hbWUpcmV0dXJuIGNyZWF0ZUJ1aWx0SW5DTWFwKGUubmFtZSx0KTtpZihlIGluc3RhbmNlb2YgQmFzZVN0cmVhbSl7Y29uc3QgYT1hd2FpdCBwYXJzZUNNYXAobmV3IENNYXAsbmV3IExleGVyKGUpLHQsaSk7cmV0dXJuIGEuaXNJZGVudGl0eUNNYXA/Y3JlYXRlQnVpbHRJbkNNYXAoYS5uYW1lLHQpOmF9dGhyb3cgbmV3IEVycm9yKCJFbmNvZGluZyByZXF1aXJlZC4iKX19X193ZWJwYWNrX3JlcXVpcmVfXygxNzk1KTtjb25zdCBkaT1bIi5ub3RkZWYiLCJzcGFjZSIsImV4Y2xhbSIsInF1b3RlZGJsIiwibnVtYmVyc2lnbiIsImRvbGxhciIsInBlcmNlbnQiLCJhbXBlcnNhbmQiLCJxdW90ZXJpZ2h0IiwicGFyZW5sZWZ0IiwicGFyZW5yaWdodCIsImFzdGVyaXNrIiwicGx1cyIsImNvbW1hIiwiaHlwaGVuIiwicGVyaW9kIiwic2xhc2giLCJ6ZXJvIiwib25lIiwidHdvIiwidGhyZWUiLCJmb3VyIiwiZml2ZSIsInNpeCIsInNldmVuIiwiZWlnaHQiLCJuaW5lIiwiY29sb24iLCJzZW1pY29sb24iLCJsZXNzIiwiZXF1YWwiLCJncmVhdGVyIiwicXVlc3Rpb24iLCJhdCIsIkEiLCJCIiwiQyIsIkQiLCJFIiwiRiIsIkciLCJIIiwiSSIsIkoiLCJLIiwiTCIsIk0iLCJOIiwiTyIsIlAiLCJRIiwiUiIsIlMiLCJUIiwiVSIsIlYiLCJXIiwiWCIsIlkiLCJaIiwiYnJhY2tldGxlZnQiLCJiYWNrc2xhc2giLCJicmFja2V0cmlnaHQiLCJhc2NpaWNpcmN1bSIsInVuZGVyc2NvcmUiLCJxdW90ZWxlZnQiLCJhIiwiYiIsImMiLCJkIiwiZSIsImYiLCJnIiwiaCIsImkiLCJqIiwiayIsImwiLCJtIiwibiIsIm8iLCJwIiwicSIsInIiLCJzIiwidCIsInUiLCJ2IiwidyIsIngiLCJ5IiwieiIsImJyYWNlbGVmdCIsImJhciIsImJyYWNlcmlnaHQiLCJhc2NpaXRpbGRlIiwiZXhjbGFtZG93biIsImNlbnQiLCJzdGVybGluZyIsImZyYWN0aW9uIiwieWVuIiwiZmxvcmluIiwic2VjdGlvbiIsImN1cnJlbmN5IiwicXVvdGVzaW5nbGUiLCJxdW90ZWRibGxlZnQiLCJndWlsbGVtb3RsZWZ0IiwiZ3VpbHNpbmdsbGVmdCIsImd1aWxzaW5nbHJpZ2h0IiwiZmkiLCJmbCIsImVuZGFzaCIsImRhZ2dlciIsImRhZ2dlcmRibCIsInBlcmlvZGNlbnRlcmVkIiwicGFyYWdyYXBoIiwiYnVsbGV0IiwicXVvdGVzaW5nbGJhc2UiLCJxdW90ZWRibGJhc2UiLCJxdW90ZWRibHJpZ2h0IiwiZ3VpbGxlbW90cmlnaHQiLCJlbGxpcHNpcyIsInBlcnRob3VzYW5kIiwicXVlc3Rpb25kb3duIiwiZ3JhdmUiLCJhY3V0ZSIsImNpcmN1bWZsZXgiLCJ0aWxkZSIsIm1hY3JvbiIsImJyZXZlIiwiZG90YWNjZW50IiwiZGllcmVzaXMiLCJyaW5nIiwiY2VkaWxsYSIsImh1bmdhcnVtbGF1dCIsIm9nb25layIsImNhcm9uIiwiZW1kYXNoIiwiQUUiLCJvcmRmZW1pbmluZSIsIkxzbGFzaCIsIk9zbGFzaCIsIk9FIiwib3JkbWFzY3VsaW5lIiwiYWUiLCJkb3RsZXNzaSIsImxzbGFzaCIsIm9zbGFzaCIsIm9lIiwiZ2VybWFuZGJscyIsIm9uZXN1cGVyaW9yIiwibG9naWNhbG5vdCIsIm11IiwidHJhZGVtYXJrIiwiRXRoIiwib25laGFsZiIsInBsdXNtaW51cyIsIlRob3JuIiwib25lcXVhcnRlciIsImRpdmlkZSIsImJyb2tlbmJhciIsImRlZ3JlZSIsInRob3JuIiwidGhyZWVxdWFydGVycyIsInR3b3N1cGVyaW9yIiwicmVnaXN0ZXJlZCIsIm1pbnVzIiwiZXRoIiwibXVsdGlwbHkiLCJ0aHJlZXN1cGVyaW9yIiwiY29weXJpZ2h0IiwiQWFjdXRlIiwiQWNpcmN1bWZsZXgiLCJBZGllcmVzaXMiLCJBZ3JhdmUiLCJBcmluZyIsIkF0aWxkZSIsIkNjZWRpbGxhIiwiRWFjdXRlIiwiRWNpcmN1bWZsZXgiLCJFZGllcmVzaXMiLCJFZ3JhdmUiLCJJYWN1dGUiLCJJY2lyY3VtZmxleCIsIklkaWVyZXNpcyIsIklncmF2ZSIsIk50aWxkZSIsIk9hY3V0ZSIsIk9jaXJjdW1mbGV4IiwiT2RpZXJlc2lzIiwiT2dyYXZlIiwiT3RpbGRlIiwiU2Nhcm9uIiwiVWFjdXRlIiwiVWNpcmN1bWZsZXgiLCJVZGllcmVzaXMiLCJVZ3JhdmUiLCJZYWN1dGUiLCJZZGllcmVzaXMiLCJaY2Fyb24iLCJhYWN1dGUiLCJhY2lyY3VtZmxleCIsImFkaWVyZXNpcyIsImFncmF2ZSIsImFyaW5nIiwiYXRpbGRlIiwiY2NlZGlsbGEiLCJlYWN1dGUiLCJlY2lyY3VtZmxleCIsImVkaWVyZXNpcyIsImVncmF2ZSIsImlhY3V0ZSIsImljaXJjdW1mbGV4IiwiaWRpZXJlc2lzIiwiaWdyYXZlIiwibnRpbGRlIiwib2FjdXRlIiwib2NpcmN1bWZsZXgiLCJvZGllcmVzaXMiLCJvZ3JhdmUiLCJvdGlsZGUiLCJzY2Fyb24iLCJ1YWN1dGUiLCJ1Y2lyY3VtZmxleCIsInVkaWVyZXNpcyIsInVncmF2ZSIsInlhY3V0ZSIsInlkaWVyZXNpcyIsInpjYXJvbiJdLGZpPVsiLm5vdGRlZiIsInNwYWNlIiwiZXhjbGFtc21hbGwiLCJIdW5nYXJ1bWxhdXRzbWFsbCIsImRvbGxhcm9sZHN0eWxlIiwiZG9sbGFyc3VwZXJpb3IiLCJhbXBlcnNhbmRzbWFsbCIsIkFjdXRlc21hbGwiLCJwYXJlbmxlZnRzdXBlcmlvciIsInBhcmVucmlnaHRzdXBlcmlvciIsInR3b2RvdGVubGVhZGVyIiwib25lZG90ZW5sZWFkZXIiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsImZyYWN0aW9uIiwiemVyb29sZHN0eWxlIiwib25lb2xkc3R5bGUiLCJ0d29vbGRzdHlsZSIsInRocmVlb2xkc3R5bGUiLCJmb3Vyb2xkc3R5bGUiLCJmaXZlb2xkc3R5bGUiLCJzaXhvbGRzdHlsZSIsInNldmVub2xkc3R5bGUiLCJlaWdodG9sZHN0eWxlIiwibmluZW9sZHN0eWxlIiwiY29sb24iLCJzZW1pY29sb24iLCJjb21tYXN1cGVyaW9yIiwidGhyZWVxdWFydGVyc2VtZGFzaCIsInBlcmlvZHN1cGVyaW9yIiwicXVlc3Rpb25zbWFsbCIsImFzdXBlcmlvciIsImJzdXBlcmlvciIsImNlbnRzdXBlcmlvciIsImRzdXBlcmlvciIsImVzdXBlcmlvciIsImlzdXBlcmlvciIsImxzdXBlcmlvciIsIm1zdXBlcmlvciIsIm5zdXBlcmlvciIsIm9zdXBlcmlvciIsInJzdXBlcmlvciIsInNzdXBlcmlvciIsInRzdXBlcmlvciIsImZmIiwiZmkiLCJmbCIsImZmaSIsImZmbCIsInBhcmVubGVmdGluZmVyaW9yIiwicGFyZW5yaWdodGluZmVyaW9yIiwiQ2lyY3VtZmxleHNtYWxsIiwiaHlwaGVuc3VwZXJpb3IiLCJHcmF2ZXNtYWxsIiwiQXNtYWxsIiwiQnNtYWxsIiwiQ3NtYWxsIiwiRHNtYWxsIiwiRXNtYWxsIiwiRnNtYWxsIiwiR3NtYWxsIiwiSHNtYWxsIiwiSXNtYWxsIiwiSnNtYWxsIiwiS3NtYWxsIiwiTHNtYWxsIiwiTXNtYWxsIiwiTnNtYWxsIiwiT3NtYWxsIiwiUHNtYWxsIiwiUXNtYWxsIiwiUnNtYWxsIiwiU3NtYWxsIiwiVHNtYWxsIiwiVXNtYWxsIiwiVnNtYWxsIiwiV3NtYWxsIiwiWHNtYWxsIiwiWXNtYWxsIiwiWnNtYWxsIiwiY29sb25tb25ldGFyeSIsIm9uZWZpdHRlZCIsInJ1cGlhaCIsIlRpbGRlc21hbGwiLCJleGNsYW1kb3duc21hbGwiLCJjZW50b2xkc3R5bGUiLCJMc2xhc2hzbWFsbCIsIlNjYXJvbnNtYWxsIiwiWmNhcm9uc21hbGwiLCJEaWVyZXNpc3NtYWxsIiwiQnJldmVzbWFsbCIsIkNhcm9uc21hbGwiLCJEb3RhY2NlbnRzbWFsbCIsIk1hY3JvbnNtYWxsIiwiZmlndXJlZGFzaCIsImh5cGhlbmluZmVyaW9yIiwiT2dvbmVrc21hbGwiLCJSaW5nc21hbGwiLCJDZWRpbGxhc21hbGwiLCJvbmVxdWFydGVyIiwib25laGFsZiIsInRocmVlcXVhcnRlcnMiLCJxdWVzdGlvbmRvd25zbWFsbCIsIm9uZWVpZ2h0aCIsInRocmVlZWlnaHRocyIsImZpdmVlaWdodGhzIiwic2V2ZW5laWdodGhzIiwib25ldGhpcmQiLCJ0d290aGlyZHMiLCJ6ZXJvc3VwZXJpb3IiLCJvbmVzdXBlcmlvciIsInR3b3N1cGVyaW9yIiwidGhyZWVzdXBlcmlvciIsImZvdXJzdXBlcmlvciIsImZpdmVzdXBlcmlvciIsInNpeHN1cGVyaW9yIiwic2V2ZW5zdXBlcmlvciIsImVpZ2h0c3VwZXJpb3IiLCJuaW5lc3VwZXJpb3IiLCJ6ZXJvaW5mZXJpb3IiLCJvbmVpbmZlcmlvciIsInR3b2luZmVyaW9yIiwidGhyZWVpbmZlcmlvciIsImZvdXJpbmZlcmlvciIsImZpdmVpbmZlcmlvciIsInNpeGluZmVyaW9yIiwic2V2ZW5pbmZlcmlvciIsImVpZ2h0aW5mZXJpb3IiLCJuaW5laW5mZXJpb3IiLCJjZW50aW5mZXJpb3IiLCJkb2xsYXJpbmZlcmlvciIsInBlcmlvZGluZmVyaW9yIiwiY29tbWFpbmZlcmlvciIsIkFncmF2ZXNtYWxsIiwiQWFjdXRlc21hbGwiLCJBY2lyY3VtZmxleHNtYWxsIiwiQXRpbGRlc21hbGwiLCJBZGllcmVzaXNzbWFsbCIsIkFyaW5nc21hbGwiLCJBRXNtYWxsIiwiQ2NlZGlsbGFzbWFsbCIsIkVncmF2ZXNtYWxsIiwiRWFjdXRlc21hbGwiLCJFY2lyY3VtZmxleHNtYWxsIiwiRWRpZXJlc2lzc21hbGwiLCJJZ3JhdmVzbWFsbCIsIklhY3V0ZXNtYWxsIiwiSWNpcmN1bWZsZXhzbWFsbCIsIklkaWVyZXNpc3NtYWxsIiwiRXRoc21hbGwiLCJOdGlsZGVzbWFsbCIsIk9ncmF2ZXNtYWxsIiwiT2FjdXRlc21hbGwiLCJPY2lyY3VtZmxleHNtYWxsIiwiT3RpbGRlc21hbGwiLCJPZGllcmVzaXNzbWFsbCIsIk9Fc21hbGwiLCJPc2xhc2hzbWFsbCIsIlVncmF2ZXNtYWxsIiwiVWFjdXRlc21hbGwiLCJVY2lyY3VtZmxleHNtYWxsIiwiVWRpZXJlc2lzc21hbGwiLCJZYWN1dGVzbWFsbCIsIlRob3Juc21hbGwiLCJZZGllcmVzaXNzbWFsbCJdLHBpPVsiLm5vdGRlZiIsInNwYWNlIiwiZG9sbGFyb2xkc3R5bGUiLCJkb2xsYXJzdXBlcmlvciIsInBhcmVubGVmdHN1cGVyaW9yIiwicGFyZW5yaWdodHN1cGVyaW9yIiwidHdvZG90ZW5sZWFkZXIiLCJvbmVkb3RlbmxlYWRlciIsImNvbW1hIiwiaHlwaGVuIiwicGVyaW9kIiwiZnJhY3Rpb24iLCJ6ZXJvb2xkc3R5bGUiLCJvbmVvbGRzdHlsZSIsInR3b29sZHN0eWxlIiwidGhyZWVvbGRzdHlsZSIsImZvdXJvbGRzdHlsZSIsImZpdmVvbGRzdHlsZSIsInNpeG9sZHN0eWxlIiwic2V2ZW5vbGRzdHlsZSIsImVpZ2h0b2xkc3R5bGUiLCJuaW5lb2xkc3R5bGUiLCJjb2xvbiIsInNlbWljb2xvbiIsImNvbW1hc3VwZXJpb3IiLCJ0aHJlZXF1YXJ0ZXJzZW1kYXNoIiwicGVyaW9kc3VwZXJpb3IiLCJhc3VwZXJpb3IiLCJic3VwZXJpb3IiLCJjZW50c3VwZXJpb3IiLCJkc3VwZXJpb3IiLCJlc3VwZXJpb3IiLCJpc3VwZXJpb3IiLCJsc3VwZXJpb3IiLCJtc3VwZXJpb3IiLCJuc3VwZXJpb3IiLCJvc3VwZXJpb3IiLCJyc3VwZXJpb3IiLCJzc3VwZXJpb3IiLCJ0c3VwZXJpb3IiLCJmZiIsImZpIiwiZmwiLCJmZmkiLCJmZmwiLCJwYXJlbmxlZnRpbmZlcmlvciIsInBhcmVucmlnaHRpbmZlcmlvciIsImh5cGhlbnN1cGVyaW9yIiwiY29sb25tb25ldGFyeSIsIm9uZWZpdHRlZCIsInJ1cGlhaCIsImNlbnRvbGRzdHlsZSIsImZpZ3VyZWRhc2giLCJoeXBoZW5pbmZlcmlvciIsIm9uZXF1YXJ0ZXIiLCJvbmVoYWxmIiwidGhyZWVxdWFydGVycyIsIm9uZWVpZ2h0aCIsInRocmVlZWlnaHRocyIsImZpdmVlaWdodGhzIiwic2V2ZW5laWdodGhzIiwib25ldGhpcmQiLCJ0d290aGlyZHMiLCJ6ZXJvc3VwZXJpb3IiLCJvbmVzdXBlcmlvciIsInR3b3N1cGVyaW9yIiwidGhyZWVzdXBlcmlvciIsImZvdXJzdXBlcmlvciIsImZpdmVzdXBlcmlvciIsInNpeHN1cGVyaW9yIiwic2V2ZW5zdXBlcmlvciIsImVpZ2h0c3VwZXJpb3IiLCJuaW5lc3VwZXJpb3IiLCJ6ZXJvaW5mZXJpb3IiLCJvbmVpbmZlcmlvciIsInR3b2luZmVyaW9yIiwidGhyZWVpbmZlcmlvciIsImZvdXJpbmZlcmlvciIsImZpdmVpbmZlcmlvciIsInNpeGluZmVyaW9yIiwic2V2ZW5pbmZlcmlvciIsImVpZ2h0aW5mZXJpb3IiLCJuaW5laW5mZXJpb3IiLCJjZW50aW5mZXJpb3IiLCJkb2xsYXJpbmZlcmlvciIsInBlcmlvZGluZmVyaW9yIiwiY29tbWFpbmZlcmlvciJdLG1pPVsiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwic3BhY2UiLCJleGNsYW1zbWFsbCIsIkh1bmdhcnVtbGF1dHNtYWxsIiwiIiwiZG9sbGFyb2xkc3R5bGUiLCJkb2xsYXJzdXBlcmlvciIsImFtcGVyc2FuZHNtYWxsIiwiQWN1dGVzbWFsbCIsInBhcmVubGVmdHN1cGVyaW9yIiwicGFyZW5yaWdodHN1cGVyaW9yIiwidHdvZG90ZW5sZWFkZXIiLCJvbmVkb3RlbmxlYWRlciIsImNvbW1hIiwiaHlwaGVuIiwicGVyaW9kIiwiZnJhY3Rpb24iLCJ6ZXJvb2xkc3R5bGUiLCJvbmVvbGRzdHlsZSIsInR3b29sZHN0eWxlIiwidGhyZWVvbGRzdHlsZSIsImZvdXJvbGRzdHlsZSIsImZpdmVvbGRzdHlsZSIsInNpeG9sZHN0eWxlIiwic2V2ZW5vbGRzdHlsZSIsImVpZ2h0b2xkc3R5bGUiLCJuaW5lb2xkc3R5bGUiLCJjb2xvbiIsInNlbWljb2xvbiIsImNvbW1hc3VwZXJpb3IiLCJ0aHJlZXF1YXJ0ZXJzZW1kYXNoIiwicGVyaW9kc3VwZXJpb3IiLCJxdWVzdGlvbnNtYWxsIiwiIiwiYXN1cGVyaW9yIiwiYnN1cGVyaW9yIiwiY2VudHN1cGVyaW9yIiwiZHN1cGVyaW9yIiwiZXN1cGVyaW9yIiwiIiwiIiwiIiwiaXN1cGVyaW9yIiwiIiwiIiwibHN1cGVyaW9yIiwibXN1cGVyaW9yIiwibnN1cGVyaW9yIiwib3N1cGVyaW9yIiwiIiwiIiwicnN1cGVyaW9yIiwic3N1cGVyaW9yIiwidHN1cGVyaW9yIiwiIiwiZmYiLCJmaSIsImZsIiwiZmZpIiwiZmZsIiwicGFyZW5sZWZ0aW5mZXJpb3IiLCIiLCJwYXJlbnJpZ2h0aW5mZXJpb3IiLCJDaXJjdW1mbGV4c21hbGwiLCJoeXBoZW5zdXBlcmlvciIsIkdyYXZlc21hbGwiLCJBc21hbGwiLCJCc21hbGwiLCJDc21hbGwiLCJEc21hbGwiLCJFc21hbGwiLCJGc21hbGwiLCJHc21hbGwiLCJIc21hbGwiLCJJc21hbGwiLCJKc21hbGwiLCJLc21hbGwiLCJMc21hbGwiLCJNc21hbGwiLCJOc21hbGwiLCJPc21hbGwiLCJQc21hbGwiLCJRc21hbGwiLCJSc21hbGwiLCJTc21hbGwiLCJUc21hbGwiLCJVc21hbGwiLCJWc21hbGwiLCJXc21hbGwiLCJYc21hbGwiLCJZc21hbGwiLCJac21hbGwiLCJjb2xvbm1vbmV0YXJ5Iiwib25lZml0dGVkIiwicnVwaWFoIiwiVGlsZGVzbWFsbCIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsImV4Y2xhbWRvd25zbWFsbCIsImNlbnRvbGRzdHlsZSIsIkxzbGFzaHNtYWxsIiwiIiwiIiwiU2Nhcm9uc21hbGwiLCJaY2Fyb25zbWFsbCIsIkRpZXJlc2lzc21hbGwiLCJCcmV2ZXNtYWxsIiwiQ2Fyb25zbWFsbCIsIiIsIkRvdGFjY2VudHNtYWxsIiwiIiwiIiwiTWFjcm9uc21hbGwiLCIiLCIiLCJmaWd1cmVkYXNoIiwiaHlwaGVuaW5mZXJpb3IiLCIiLCIiLCJPZ29uZWtzbWFsbCIsIlJpbmdzbWFsbCIsIkNlZGlsbGFzbWFsbCIsIiIsIiIsIiIsIm9uZXF1YXJ0ZXIiLCJvbmVoYWxmIiwidGhyZWVxdWFydGVycyIsInF1ZXN0aW9uZG93bnNtYWxsIiwib25lZWlnaHRoIiwidGhyZWVlaWdodGhzIiwiZml2ZWVpZ2h0aHMiLCJzZXZlbmVpZ2h0aHMiLCJvbmV0aGlyZCIsInR3b3RoaXJkcyIsIiIsIiIsInplcm9zdXBlcmlvciIsIm9uZXN1cGVyaW9yIiwidHdvc3VwZXJpb3IiLCJ0aHJlZXN1cGVyaW9yIiwiZm91cnN1cGVyaW9yIiwiZml2ZXN1cGVyaW9yIiwic2l4c3VwZXJpb3IiLCJzZXZlbnN1cGVyaW9yIiwiZWlnaHRzdXBlcmlvciIsIm5pbmVzdXBlcmlvciIsInplcm9pbmZlcmlvciIsIm9uZWluZmVyaW9yIiwidHdvaW5mZXJpb3IiLCJ0aHJlZWluZmVyaW9yIiwiZm91cmluZmVyaW9yIiwiZml2ZWluZmVyaW9yIiwic2l4aW5mZXJpb3IiLCJzZXZlbmluZmVyaW9yIiwiZWlnaHRpbmZlcmlvciIsIm5pbmVpbmZlcmlvciIsImNlbnRpbmZlcmlvciIsImRvbGxhcmluZmVyaW9yIiwicGVyaW9kaW5mZXJpb3IiLCJjb21tYWluZmVyaW9yIiwiQWdyYXZlc21hbGwiLCJBYWN1dGVzbWFsbCIsIkFjaXJjdW1mbGV4c21hbGwiLCJBdGlsZGVzbWFsbCIsIkFkaWVyZXNpc3NtYWxsIiwiQXJpbmdzbWFsbCIsIkFFc21hbGwiLCJDY2VkaWxsYXNtYWxsIiwiRWdyYXZlc21hbGwiLCJFYWN1dGVzbWFsbCIsIkVjaXJjdW1mbGV4c21hbGwiLCJFZGllcmVzaXNzbWFsbCIsIklncmF2ZXNtYWxsIiwiSWFjdXRlc21hbGwiLCJJY2lyY3VtZmxleHNtYWxsIiwiSWRpZXJlc2lzc21hbGwiLCJFdGhzbWFsbCIsIk50aWxkZXNtYWxsIiwiT2dyYXZlc21hbGwiLCJPYWN1dGVzbWFsbCIsIk9jaXJjdW1mbGV4c21hbGwiLCJPdGlsZGVzbWFsbCIsIk9kaWVyZXNpc3NtYWxsIiwiT0VzbWFsbCIsIk9zbGFzaHNtYWxsIiwiVWdyYXZlc21hbGwiLCJVYWN1dGVzbWFsbCIsIlVjaXJjdW1mbGV4c21hbGwiLCJVZGllcmVzaXNzbWFsbCIsIllhY3V0ZXNtYWxsIiwiVGhvcm5zbWFsbCIsIllkaWVyZXNpc3NtYWxsIl0seWk9WyIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJzcGFjZSIsImV4Y2xhbXNtYWxsIiwiSHVuZ2FydW1sYXV0c21hbGwiLCJjZW50b2xkc3R5bGUiLCJkb2xsYXJvbGRzdHlsZSIsImRvbGxhcnN1cGVyaW9yIiwiYW1wZXJzYW5kc21hbGwiLCJBY3V0ZXNtYWxsIiwicGFyZW5sZWZ0c3VwZXJpb3IiLCJwYXJlbnJpZ2h0c3VwZXJpb3IiLCJ0d29kb3RlbmxlYWRlciIsIm9uZWRvdGVubGVhZGVyIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJmcmFjdGlvbiIsInplcm9vbGRzdHlsZSIsIm9uZW9sZHN0eWxlIiwidHdvb2xkc3R5bGUiLCJ0aHJlZW9sZHN0eWxlIiwiZm91cm9sZHN0eWxlIiwiZml2ZW9sZHN0eWxlIiwic2l4b2xkc3R5bGUiLCJzZXZlbm9sZHN0eWxlIiwiZWlnaHRvbGRzdHlsZSIsIm5pbmVvbGRzdHlsZSIsImNvbG9uIiwic2VtaWNvbG9uIiwiIiwidGhyZWVxdWFydGVyc2VtZGFzaCIsIiIsInF1ZXN0aW9uc21hbGwiLCIiLCIiLCIiLCIiLCJFdGhzbWFsbCIsIiIsIiIsIm9uZXF1YXJ0ZXIiLCJvbmVoYWxmIiwidGhyZWVxdWFydGVycyIsIm9uZWVpZ2h0aCIsInRocmVlZWlnaHRocyIsImZpdmVlaWdodGhzIiwic2V2ZW5laWdodGhzIiwib25ldGhpcmQiLCJ0d290aGlyZHMiLCIiLCIiLCIiLCIiLCIiLCIiLCJmZiIsImZpIiwiZmwiLCJmZmkiLCJmZmwiLCJwYXJlbmxlZnRpbmZlcmlvciIsIiIsInBhcmVucmlnaHRpbmZlcmlvciIsIkNpcmN1bWZsZXhzbWFsbCIsImh5cGhlbmluZmVyaW9yIiwiR3JhdmVzbWFsbCIsIkFzbWFsbCIsIkJzbWFsbCIsIkNzbWFsbCIsIkRzbWFsbCIsIkVzbWFsbCIsIkZzbWFsbCIsIkdzbWFsbCIsIkhzbWFsbCIsIklzbWFsbCIsIkpzbWFsbCIsIktzbWFsbCIsIkxzbWFsbCIsIk1zbWFsbCIsIk5zbWFsbCIsIk9zbWFsbCIsIlBzbWFsbCIsIlFzbWFsbCIsIlJzbWFsbCIsIlNzbWFsbCIsIlRzbWFsbCIsIlVzbWFsbCIsIlZzbWFsbCIsIldzbWFsbCIsIlhzbWFsbCIsIllzbWFsbCIsIlpzbWFsbCIsImNvbG9ubW9uZXRhcnkiLCJvbmVmaXR0ZWQiLCJydXBpYWgiLCJUaWxkZXNtYWxsIiwiIiwiIiwiYXN1cGVyaW9yIiwiY2VudHN1cGVyaW9yIiwiIiwiIiwiIiwiIiwiQWFjdXRlc21hbGwiLCJBZ3JhdmVzbWFsbCIsIkFjaXJjdW1mbGV4c21hbGwiLCJBZGllcmVzaXNzbWFsbCIsIkF0aWxkZXNtYWxsIiwiQXJpbmdzbWFsbCIsIkNjZWRpbGxhc21hbGwiLCJFYWN1dGVzbWFsbCIsIkVncmF2ZXNtYWxsIiwiRWNpcmN1bWZsZXhzbWFsbCIsIkVkaWVyZXNpc3NtYWxsIiwiSWFjdXRlc21hbGwiLCJJZ3JhdmVzbWFsbCIsIkljaXJjdW1mbGV4c21hbGwiLCJJZGllcmVzaXNzbWFsbCIsIk50aWxkZXNtYWxsIiwiT2FjdXRlc21hbGwiLCJPZ3JhdmVzbWFsbCIsIk9jaXJjdW1mbGV4c21hbGwiLCJPZGllcmVzaXNzbWFsbCIsIk90aWxkZXNtYWxsIiwiVWFjdXRlc21hbGwiLCJVZ3JhdmVzbWFsbCIsIlVjaXJjdW1mbGV4c21hbGwiLCJVZGllcmVzaXNzbWFsbCIsIiIsImVpZ2h0c3VwZXJpb3IiLCJmb3VyaW5mZXJpb3IiLCJ0aHJlZWluZmVyaW9yIiwic2l4aW5mZXJpb3IiLCJlaWdodGluZmVyaW9yIiwic2V2ZW5pbmZlcmlvciIsIlNjYXJvbnNtYWxsIiwiIiwiY2VudGluZmVyaW9yIiwidHdvaW5mZXJpb3IiLCIiLCJEaWVyZXNpc3NtYWxsIiwiIiwiQ2Fyb25zbWFsbCIsIm9zdXBlcmlvciIsImZpdmVpbmZlcmlvciIsIiIsImNvbW1haW5mZXJpb3IiLCJwZXJpb2RpbmZlcmlvciIsIllhY3V0ZXNtYWxsIiwiIiwiZG9sbGFyaW5mZXJpb3IiLCIiLCIiLCJUaG9ybnNtYWxsIiwiIiwibmluZWluZmVyaW9yIiwiemVyb2luZmVyaW9yIiwiWmNhcm9uc21hbGwiLCJBRXNtYWxsIiwiT3NsYXNoc21hbGwiLCJxdWVzdGlvbmRvd25zbWFsbCIsIm9uZWluZmVyaW9yIiwiTHNsYXNoc21hbGwiLCIiLCIiLCIiLCIiLCIiLCIiLCJDZWRpbGxhc21hbGwiLCIiLCIiLCIiLCIiLCIiLCJPRXNtYWxsIiwiZmlndXJlZGFzaCIsImh5cGhlbnN1cGVyaW9yIiwiIiwiIiwiIiwiIiwiZXhjbGFtZG93bnNtYWxsIiwiIiwiWWRpZXJlc2lzc21hbGwiLCIiLCJvbmVzdXBlcmlvciIsInR3b3N1cGVyaW9yIiwidGhyZWVzdXBlcmlvciIsImZvdXJzdXBlcmlvciIsImZpdmVzdXBlcmlvciIsInNpeHN1cGVyaW9yIiwic2V2ZW5zdXBlcmlvciIsIm5pbmVzdXBlcmlvciIsInplcm9zdXBlcmlvciIsIiIsImVzdXBlcmlvciIsInJzdXBlcmlvciIsInRzdXBlcmlvciIsIiIsIiIsImlzdXBlcmlvciIsInNzdXBlcmlvciIsImRzdXBlcmlvciIsIiIsIiIsIiIsIiIsIiIsImxzdXBlcmlvciIsIk9nb25la3NtYWxsIiwiQnJldmVzbWFsbCIsIk1hY3JvbnNtYWxsIiwiYnN1cGVyaW9yIiwibnN1cGVyaW9yIiwibXN1cGVyaW9yIiwiY29tbWFzdXBlcmlvciIsInBlcmlvZHN1cGVyaW9yIiwiRG90YWNjZW50c21hbGwiLCJSaW5nc21hbGwiLCIiLCIiLCIiLCIiXSx3aT1bIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsInNwYWNlIiwiZXhjbGFtIiwicXVvdGVkYmwiLCJudW1iZXJzaWduIiwiZG9sbGFyIiwicGVyY2VudCIsImFtcGVyc2FuZCIsInF1b3Rlc2luZ2xlIiwicGFyZW5sZWZ0IiwicGFyZW5yaWdodCIsImFzdGVyaXNrIiwicGx1cyIsImNvbW1hIiwiaHlwaGVuIiwicGVyaW9kIiwic2xhc2giLCJ6ZXJvIiwib25lIiwidHdvIiwidGhyZWUiLCJmb3VyIiwiZml2ZSIsInNpeCIsInNldmVuIiwiZWlnaHQiLCJuaW5lIiwiY29sb24iLCJzZW1pY29sb24iLCJsZXNzIiwiZXF1YWwiLCJncmVhdGVyIiwicXVlc3Rpb24iLCJhdCIsIkEiLCJCIiwiQyIsIkQiLCJFIiwiRiIsIkciLCJIIiwiSSIsIkoiLCJLIiwiTCIsIk0iLCJOIiwiTyIsIlAiLCJRIiwiUiIsIlMiLCJUIiwiVSIsIlYiLCJXIiwiWCIsIlkiLCJaIiwiYnJhY2tldGxlZnQiLCJiYWNrc2xhc2giLCJicmFja2V0cmlnaHQiLCJhc2NpaWNpcmN1bSIsInVuZGVyc2NvcmUiLCJncmF2ZSIsImEiLCJiIiwiYyIsImQiLCJlIiwiZiIsImciLCJoIiwiaSIsImoiLCJrIiwibCIsIm0iLCJuIiwibyIsInAiLCJxIiwiciIsInMiLCJ0IiwidSIsInYiLCJ3IiwieCIsInkiLCJ6IiwiYnJhY2VsZWZ0IiwiYmFyIiwiYnJhY2VyaWdodCIsImFzY2lpdGlsZGUiLCIiLCJBZGllcmVzaXMiLCJBcmluZyIsIkNjZWRpbGxhIiwiRWFjdXRlIiwiTnRpbGRlIiwiT2RpZXJlc2lzIiwiVWRpZXJlc2lzIiwiYWFjdXRlIiwiYWdyYXZlIiwiYWNpcmN1bWZsZXgiLCJhZGllcmVzaXMiLCJhdGlsZGUiLCJhcmluZyIsImNjZWRpbGxhIiwiZWFjdXRlIiwiZWdyYXZlIiwiZWNpcmN1bWZsZXgiLCJlZGllcmVzaXMiLCJpYWN1dGUiLCJpZ3JhdmUiLCJpY2lyY3VtZmxleCIsImlkaWVyZXNpcyIsIm50aWxkZSIsIm9hY3V0ZSIsIm9ncmF2ZSIsIm9jaXJjdW1mbGV4Iiwib2RpZXJlc2lzIiwib3RpbGRlIiwidWFjdXRlIiwidWdyYXZlIiwidWNpcmN1bWZsZXgiLCJ1ZGllcmVzaXMiLCJkYWdnZXIiLCJkZWdyZWUiLCJjZW50Iiwic3RlcmxpbmciLCJzZWN0aW9uIiwiYnVsbGV0IiwicGFyYWdyYXBoIiwiZ2VybWFuZGJscyIsInJlZ2lzdGVyZWQiLCJjb3B5cmlnaHQiLCJ0cmFkZW1hcmsiLCJhY3V0ZSIsImRpZXJlc2lzIiwibm90ZXF1YWwiLCJBRSIsIk9zbGFzaCIsImluZmluaXR5IiwicGx1c21pbnVzIiwibGVzc2VxdWFsIiwiZ3JlYXRlcmVxdWFsIiwieWVuIiwibXUiLCJwYXJ0aWFsZGlmZiIsInN1bW1hdGlvbiIsInByb2R1Y3QiLCJwaSIsImludGVncmFsIiwib3JkZmVtaW5pbmUiLCJvcmRtYXNjdWxpbmUiLCJPbWVnYSIsImFlIiwib3NsYXNoIiwicXVlc3Rpb25kb3duIiwiZXhjbGFtZG93biIsImxvZ2ljYWxub3QiLCJyYWRpY2FsIiwiZmxvcmluIiwiYXBwcm94ZXF1YWwiLCJEZWx0YSIsImd1aWxsZW1vdGxlZnQiLCJndWlsbGVtb3RyaWdodCIsImVsbGlwc2lzIiwic3BhY2UiLCJBZ3JhdmUiLCJBdGlsZGUiLCJPdGlsZGUiLCJPRSIsIm9lIiwiZW5kYXNoIiwiZW1kYXNoIiwicXVvdGVkYmxsZWZ0IiwicXVvdGVkYmxyaWdodCIsInF1b3RlbGVmdCIsInF1b3RlcmlnaHQiLCJkaXZpZGUiLCJsb3plbmdlIiwieWRpZXJlc2lzIiwiWWRpZXJlc2lzIiwiZnJhY3Rpb24iLCJjdXJyZW5jeSIsImd1aWxzaW5nbGxlZnQiLCJndWlsc2luZ2xyaWdodCIsImZpIiwiZmwiLCJkYWdnZXJkYmwiLCJwZXJpb2RjZW50ZXJlZCIsInF1b3Rlc2luZ2xiYXNlIiwicXVvdGVkYmxiYXNlIiwicGVydGhvdXNhbmQiLCJBY2lyY3VtZmxleCIsIkVjaXJjdW1mbGV4IiwiQWFjdXRlIiwiRWRpZXJlc2lzIiwiRWdyYXZlIiwiSWFjdXRlIiwiSWNpcmN1bWZsZXgiLCJJZGllcmVzaXMiLCJJZ3JhdmUiLCJPYWN1dGUiLCJPY2lyY3VtZmxleCIsImFwcGxlIiwiT2dyYXZlIiwiVWFjdXRlIiwiVWNpcmN1bWZsZXgiLCJVZ3JhdmUiLCJkb3RsZXNzaSIsImNpcmN1bWZsZXgiLCJ0aWxkZSIsIm1hY3JvbiIsImJyZXZlIiwiZG90YWNjZW50IiwicmluZyIsImNlZGlsbGEiLCJodW5nYXJ1bWxhdXQiLCJvZ29uZWsiLCJjYXJvbiJdLGJpPVsiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwic3BhY2UiLCJleGNsYW0iLCJxdW90ZWRibCIsIm51bWJlcnNpZ24iLCJkb2xsYXIiLCJwZXJjZW50IiwiYW1wZXJzYW5kIiwicXVvdGVyaWdodCIsInBhcmVubGVmdCIsInBhcmVucmlnaHQiLCJhc3RlcmlzayIsInBsdXMiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsInNsYXNoIiwiemVybyIsIm9uZSIsInR3byIsInRocmVlIiwiZm91ciIsImZpdmUiLCJzaXgiLCJzZXZlbiIsImVpZ2h0IiwibmluZSIsImNvbG9uIiwic2VtaWNvbG9uIiwibGVzcyIsImVxdWFsIiwiZ3JlYXRlciIsInF1ZXN0aW9uIiwiYXQiLCJBIiwiQiIsIkMiLCJEIiwiRSIsIkYiLCJHIiwiSCIsIkkiLCJKIiwiSyIsIkwiLCJNIiwiTiIsIk8iLCJQIiwiUSIsIlIiLCJTIiwiVCIsIlUiLCJWIiwiVyIsIlgiLCJZIiwiWiIsImJyYWNrZXRsZWZ0IiwiYmFja3NsYXNoIiwiYnJhY2tldHJpZ2h0IiwiYXNjaWljaXJjdW0iLCJ1bmRlcnNjb3JlIiwicXVvdGVsZWZ0IiwiYSIsImIiLCJjIiwiZCIsImUiLCJmIiwiZyIsImgiLCJpIiwiaiIsImsiLCJsIiwibSIsIm4iLCJvIiwicCIsInEiLCJyIiwicyIsInQiLCJ1IiwidiIsInciLCJ4IiwieSIsInoiLCJicmFjZWxlZnQiLCJiYXIiLCJicmFjZXJpZ2h0IiwiYXNjaWl0aWxkZSIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsImV4Y2xhbWRvd24iLCJjZW50Iiwic3RlcmxpbmciLCJmcmFjdGlvbiIsInllbiIsImZsb3JpbiIsInNlY3Rpb24iLCJjdXJyZW5jeSIsInF1b3Rlc2luZ2xlIiwicXVvdGVkYmxsZWZ0IiwiZ3VpbGxlbW90bGVmdCIsImd1aWxzaW5nbGxlZnQiLCJndWlsc2luZ2xyaWdodCIsImZpIiwiZmwiLCIiLCJlbmRhc2giLCJkYWdnZXIiLCJkYWdnZXJkYmwiLCJwZXJpb2RjZW50ZXJlZCIsIiIsInBhcmFncmFwaCIsImJ1bGxldCIsInF1b3Rlc2luZ2xiYXNlIiwicXVvdGVkYmxiYXNlIiwicXVvdGVkYmxyaWdodCIsImd1aWxsZW1vdHJpZ2h0IiwiZWxsaXBzaXMiLCJwZXJ0aG91c2FuZCIsIiIsInF1ZXN0aW9uZG93biIsIiIsImdyYXZlIiwiYWN1dGUiLCJjaXJjdW1mbGV4IiwidGlsZGUiLCJtYWNyb24iLCJicmV2ZSIsImRvdGFjY2VudCIsImRpZXJlc2lzIiwiIiwicmluZyIsImNlZGlsbGEiLCIiLCJodW5nYXJ1bWxhdXQiLCJvZ29uZWsiLCJjYXJvbiIsImVtZGFzaCIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIkFFIiwiIiwib3JkZmVtaW5pbmUiLCIiLCIiLCIiLCIiLCJMc2xhc2giLCJPc2xhc2giLCJPRSIsIm9yZG1hc2N1bGluZSIsIiIsIiIsIiIsIiIsIiIsImFlIiwiIiwiIiwiIiwiZG90bGVzc2kiLCIiLCIiLCJsc2xhc2giLCJvc2xhc2giLCJvZSIsImdlcm1hbmRibHMiLCIiLCIiLCIiLCIiXSxEaT1bIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsInNwYWNlIiwiZXhjbGFtIiwicXVvdGVkYmwiLCJudW1iZXJzaWduIiwiZG9sbGFyIiwicGVyY2VudCIsImFtcGVyc2FuZCIsInF1b3Rlc2luZ2xlIiwicGFyZW5sZWZ0IiwicGFyZW5yaWdodCIsImFzdGVyaXNrIiwicGx1cyIsImNvbW1hIiwiaHlwaGVuIiwicGVyaW9kIiwic2xhc2giLCJ6ZXJvIiwib25lIiwidHdvIiwidGhyZWUiLCJmb3VyIiwiZml2ZSIsInNpeCIsInNldmVuIiwiZWlnaHQiLCJuaW5lIiwiY29sb24iLCJzZW1pY29sb24iLCJsZXNzIiwiZXF1YWwiLCJncmVhdGVyIiwicXVlc3Rpb24iLCJhdCIsIkEiLCJCIiwiQyIsIkQiLCJFIiwiRiIsIkciLCJIIiwiSSIsIkoiLCJLIiwiTCIsIk0iLCJOIiwiTyIsIlAiLCJRIiwiUiIsIlMiLCJUIiwiVSIsIlYiLCJXIiwiWCIsIlkiLCJaIiwiYnJhY2tldGxlZnQiLCJiYWNrc2xhc2giLCJicmFja2V0cmlnaHQiLCJhc2NpaWNpcmN1bSIsInVuZGVyc2NvcmUiLCJncmF2ZSIsImEiLCJiIiwiYyIsImQiLCJlIiwiZiIsImciLCJoIiwiaSIsImoiLCJrIiwibCIsIm0iLCJuIiwibyIsInAiLCJxIiwiciIsInMiLCJ0IiwidSIsInYiLCJ3IiwieCIsInkiLCJ6IiwiYnJhY2VsZWZ0IiwiYmFyIiwiYnJhY2VyaWdodCIsImFzY2lpdGlsZGUiLCJidWxsZXQiLCJFdXJvIiwiYnVsbGV0IiwicXVvdGVzaW5nbGJhc2UiLCJmbG9yaW4iLCJxdW90ZWRibGJhc2UiLCJlbGxpcHNpcyIsImRhZ2dlciIsImRhZ2dlcmRibCIsImNpcmN1bWZsZXgiLCJwZXJ0aG91c2FuZCIsIlNjYXJvbiIsImd1aWxzaW5nbGxlZnQiLCJPRSIsImJ1bGxldCIsIlpjYXJvbiIsImJ1bGxldCIsImJ1bGxldCIsInF1b3RlbGVmdCIsInF1b3RlcmlnaHQiLCJxdW90ZWRibGxlZnQiLCJxdW90ZWRibHJpZ2h0IiwiYnVsbGV0IiwiZW5kYXNoIiwiZW1kYXNoIiwidGlsZGUiLCJ0cmFkZW1hcmsiLCJzY2Fyb24iLCJndWlsc2luZ2xyaWdodCIsIm9lIiwiYnVsbGV0IiwiemNhcm9uIiwiWWRpZXJlc2lzIiwic3BhY2UiLCJleGNsYW1kb3duIiwiY2VudCIsInN0ZXJsaW5nIiwiY3VycmVuY3kiLCJ5ZW4iLCJicm9rZW5iYXIiLCJzZWN0aW9uIiwiZGllcmVzaXMiLCJjb3B5cmlnaHQiLCJvcmRmZW1pbmluZSIsImd1aWxsZW1vdGxlZnQiLCJsb2dpY2Fsbm90IiwiaHlwaGVuIiwicmVnaXN0ZXJlZCIsIm1hY3JvbiIsImRlZ3JlZSIsInBsdXNtaW51cyIsInR3b3N1cGVyaW9yIiwidGhyZWVzdXBlcmlvciIsImFjdXRlIiwibXUiLCJwYXJhZ3JhcGgiLCJwZXJpb2RjZW50ZXJlZCIsImNlZGlsbGEiLCJvbmVzdXBlcmlvciIsIm9yZG1hc2N1bGluZSIsImd1aWxsZW1vdHJpZ2h0Iiwib25lcXVhcnRlciIsIm9uZWhhbGYiLCJ0aHJlZXF1YXJ0ZXJzIiwicXVlc3Rpb25kb3duIiwiQWdyYXZlIiwiQWFjdXRlIiwiQWNpcmN1bWZsZXgiLCJBdGlsZGUiLCJBZGllcmVzaXMiLCJBcmluZyIsIkFFIiwiQ2NlZGlsbGEiLCJFZ3JhdmUiLCJFYWN1dGUiLCJFY2lyY3VtZmxleCIsIkVkaWVyZXNpcyIsIklncmF2ZSIsIklhY3V0ZSIsIkljaXJjdW1mbGV4IiwiSWRpZXJlc2lzIiwiRXRoIiwiTnRpbGRlIiwiT2dyYXZlIiwiT2FjdXRlIiwiT2NpcmN1bWZsZXgiLCJPdGlsZGUiLCJPZGllcmVzaXMiLCJtdWx0aXBseSIsIk9zbGFzaCIsIlVncmF2ZSIsIlVhY3V0ZSIsIlVjaXJjdW1mbGV4IiwiVWRpZXJlc2lzIiwiWWFjdXRlIiwiVGhvcm4iLCJnZXJtYW5kYmxzIiwiYWdyYXZlIiwiYWFjdXRlIiwiYWNpcmN1bWZsZXgiLCJhdGlsZGUiLCJhZGllcmVzaXMiLCJhcmluZyIsImFlIiwiY2NlZGlsbGEiLCJlZ3JhdmUiLCJlYWN1dGUiLCJlY2lyY3VtZmxleCIsImVkaWVyZXNpcyIsImlncmF2ZSIsImlhY3V0ZSIsImljaXJjdW1mbGV4IiwiaWRpZXJlc2lzIiwiZXRoIiwibnRpbGRlIiwib2dyYXZlIiwib2FjdXRlIiwib2NpcmN1bWZsZXgiLCJvdGlsZGUiLCJvZGllcmVzaXMiLCJkaXZpZGUiLCJvc2xhc2giLCJ1Z3JhdmUiLCJ1YWN1dGUiLCJ1Y2lyY3VtZmxleCIsInVkaWVyZXNpcyIsInlhY3V0ZSIsInRob3JuIiwieWRpZXJlc2lzIl0sRmk9WyIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJzcGFjZSIsImV4Y2xhbSIsInVuaXZlcnNhbCIsIm51bWJlcnNpZ24iLCJleGlzdGVudGlhbCIsInBlcmNlbnQiLCJhbXBlcnNhbmQiLCJzdWNodGhhdCIsInBhcmVubGVmdCIsInBhcmVucmlnaHQiLCJhc3Rlcmlza21hdGgiLCJwbHVzIiwiY29tbWEiLCJtaW51cyIsInBlcmlvZCIsInNsYXNoIiwiemVybyIsIm9uZSIsInR3byIsInRocmVlIiwiZm91ciIsImZpdmUiLCJzaXgiLCJzZXZlbiIsImVpZ2h0IiwibmluZSIsImNvbG9uIiwic2VtaWNvbG9uIiwibGVzcyIsImVxdWFsIiwiZ3JlYXRlciIsInF1ZXN0aW9uIiwiY29uZ3J1ZW50IiwiQWxwaGEiLCJCZXRhIiwiQ2hpIiwiRGVsdGEiLCJFcHNpbG9uIiwiUGhpIiwiR2FtbWEiLCJFdGEiLCJJb3RhIiwidGhldGExIiwiS2FwcGEiLCJMYW1iZGEiLCJNdSIsIk51IiwiT21pY3JvbiIsIlBpIiwiVGhldGEiLCJSaG8iLCJTaWdtYSIsIlRhdSIsIlVwc2lsb24iLCJzaWdtYTEiLCJPbWVnYSIsIlhpIiwiUHNpIiwiWmV0YSIsImJyYWNrZXRsZWZ0IiwidGhlcmVmb3JlIiwiYnJhY2tldHJpZ2h0IiwicGVycGVuZGljdWxhciIsInVuZGVyc2NvcmUiLCJyYWRpY2FsZXgiLCJhbHBoYSIsImJldGEiLCJjaGkiLCJkZWx0YSIsImVwc2lsb24iLCJwaGkiLCJnYW1tYSIsImV0YSIsImlvdGEiLCJwaGkxIiwia2FwcGEiLCJsYW1iZGEiLCJtdSIsIm51Iiwib21pY3JvbiIsInBpIiwidGhldGEiLCJyaG8iLCJzaWdtYSIsInRhdSIsInVwc2lsb24iLCJvbWVnYTEiLCJvbWVnYSIsInhpIiwicHNpIiwiemV0YSIsImJyYWNlbGVmdCIsImJhciIsImJyYWNlcmlnaHQiLCJzaW1pbGFyIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiRXVybyIsIlVwc2lsb24xIiwibWludXRlIiwibGVzc2VxdWFsIiwiZnJhY3Rpb24iLCJpbmZpbml0eSIsImZsb3JpbiIsImNsdWIiLCJkaWFtb25kIiwiaGVhcnQiLCJzcGFkZSIsImFycm93Ym90aCIsImFycm93bGVmdCIsImFycm93dXAiLCJhcnJvd3JpZ2h0IiwiYXJyb3dkb3duIiwiZGVncmVlIiwicGx1c21pbnVzIiwic2Vjb25kIiwiZ3JlYXRlcmVxdWFsIiwibXVsdGlwbHkiLCJwcm9wb3J0aW9uYWwiLCJwYXJ0aWFsZGlmZiIsImJ1bGxldCIsImRpdmlkZSIsIm5vdGVxdWFsIiwiZXF1aXZhbGVuY2UiLCJhcHByb3hlcXVhbCIsImVsbGlwc2lzIiwiYXJyb3d2ZXJ0ZXgiLCJhcnJvd2hvcml6ZXgiLCJjYXJyaWFnZXJldHVybiIsImFsZXBoIiwiSWZyYWt0dXIiLCJSZnJha3R1ciIsIndlaWVyc3RyYXNzIiwiY2lyY2xlbXVsdGlwbHkiLCJjaXJjbGVwbHVzIiwiZW1wdHlzZXQiLCJpbnRlcnNlY3Rpb24iLCJ1bmlvbiIsInByb3BlcnN1cGVyc2V0IiwicmVmbGV4c3VwZXJzZXQiLCJub3RzdWJzZXQiLCJwcm9wZXJzdWJzZXQiLCJyZWZsZXhzdWJzZXQiLCJlbGVtZW50Iiwibm90ZWxlbWVudCIsImFuZ2xlIiwiZ3JhZGllbnQiLCJyZWdpc3RlcnNlcmlmIiwiY29weXJpZ2h0c2VyaWYiLCJ0cmFkZW1hcmtzZXJpZiIsInByb2R1Y3QiLCJyYWRpY2FsIiwiZG90bWF0aCIsImxvZ2ljYWxub3QiLCJsb2dpY2FsYW5kIiwibG9naWNhbG9yIiwiYXJyb3dkYmxib3RoIiwiYXJyb3dkYmxsZWZ0IiwiYXJyb3dkYmx1cCIsImFycm93ZGJscmlnaHQiLCJhcnJvd2RibGRvd24iLCJsb3plbmdlIiwiYW5nbGVsZWZ0IiwicmVnaXN0ZXJzYW5zIiwiY29weXJpZ2h0c2FucyIsInRyYWRlbWFya3NhbnMiLCJzdW1tYXRpb24iLCJwYXJlbmxlZnR0cCIsInBhcmVubGVmdGV4IiwicGFyZW5sZWZ0YnQiLCJicmFja2V0bGVmdHRwIiwiYnJhY2tldGxlZnRleCIsImJyYWNrZXRsZWZ0YnQiLCJicmFjZWxlZnR0cCIsImJyYWNlbGVmdG1pZCIsImJyYWNlbGVmdGJ0IiwiYnJhY2VleCIsIiIsImFuZ2xlcmlnaHQiLCJpbnRlZ3JhbCIsImludGVncmFsdHAiLCJpbnRlZ3JhbGV4IiwiaW50ZWdyYWxidCIsInBhcmVucmlnaHR0cCIsInBhcmVucmlnaHRleCIsInBhcmVucmlnaHRidCIsImJyYWNrZXRyaWdodHRwIiwiYnJhY2tldHJpZ2h0ZXgiLCJicmFja2V0cmlnaHRidCIsImJyYWNlcmlnaHR0cCIsImJyYWNlcmlnaHRtaWQiLCJicmFjZXJpZ2h0YnQiLCIiXSxTaT1bIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsInNwYWNlIiwiYTEiLCJhMiIsImEyMDIiLCJhMyIsImE0IiwiYTUiLCJhMTE5IiwiYTExOCIsImExMTciLCJhMTEiLCJhMTIiLCJhMTMiLCJhMTQiLCJhMTUiLCJhMTYiLCJhMTA1IiwiYTE3IiwiYTE4IiwiYTE5IiwiYTIwIiwiYTIxIiwiYTIyIiwiYTIzIiwiYTI0IiwiYTI1IiwiYTI2IiwiYTI3IiwiYTI4IiwiYTYiLCJhNyIsImE4IiwiYTkiLCJhMTAiLCJhMjkiLCJhMzAiLCJhMzEiLCJhMzIiLCJhMzMiLCJhMzQiLCJhMzUiLCJhMzYiLCJhMzciLCJhMzgiLCJhMzkiLCJhNDAiLCJhNDEiLCJhNDIiLCJhNDMiLCJhNDQiLCJhNDUiLCJhNDYiLCJhNDciLCJhNDgiLCJhNDkiLCJhNTAiLCJhNTEiLCJhNTIiLCJhNTMiLCJhNTQiLCJhNTUiLCJhNTYiLCJhNTciLCJhNTgiLCJhNTkiLCJhNjAiLCJhNjEiLCJhNjIiLCJhNjMiLCJhNjQiLCJhNjUiLCJhNjYiLCJhNjciLCJhNjgiLCJhNjkiLCJhNzAiLCJhNzEiLCJhNzIiLCJhNzMiLCJhNzQiLCJhMjAzIiwiYTc1IiwiYTIwNCIsImE3NiIsImE3NyIsImE3OCIsImE3OSIsImE4MSIsImE4MiIsImE4MyIsImE4NCIsImE5NyIsImE5OCIsImE5OSIsImExMDAiLCIiLCJhODkiLCJhOTAiLCJhOTMiLCJhOTQiLCJhOTEiLCJhOTIiLCJhMjA1IiwiYTg1IiwiYTIwNiIsImE4NiIsImE4NyIsImE4OCIsImE5NSIsImE5NiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsImExMDEiLCJhMTAyIiwiYTEwMyIsImExMDQiLCJhMTA2IiwiYTEwNyIsImExMDgiLCJhMTEyIiwiYTExMSIsImExMTAiLCJhMTA5IiwiYTEyMCIsImExMjEiLCJhMTIyIiwiYTEyMyIsImExMjQiLCJhMTI1IiwiYTEyNiIsImExMjciLCJhMTI4IiwiYTEyOSIsImExMzAiLCJhMTMxIiwiYTEzMiIsImExMzMiLCJhMTM0IiwiYTEzNSIsImExMzYiLCJhMTM3IiwiYTEzOCIsImExMzkiLCJhMTQwIiwiYTE0MSIsImExNDIiLCJhMTQzIiwiYTE0NCIsImExNDUiLCJhMTQ2IiwiYTE0NyIsImExNDgiLCJhMTQ5IiwiYTE1MCIsImExNTEiLCJhMTUyIiwiYTE1MyIsImExNTQiLCJhMTU1IiwiYTE1NiIsImExNTciLCJhMTU4IiwiYTE1OSIsImExNjAiLCJhMTYxIiwiYTE2MyIsImExNjQiLCJhMTk2IiwiYTE2NSIsImExOTIiLCJhMTY2IiwiYTE2NyIsImExNjgiLCJhMTY5IiwiYTE3MCIsImExNzEiLCJhMTcyIiwiYTE3MyIsImExNjIiLCJhMTc0IiwiYTE3NSIsImExNzYiLCJhMTc3IiwiYTE3OCIsImExNzkiLCJhMTkzIiwiYTE4MCIsImExOTkiLCJhMTgxIiwiYTIwMCIsImExODIiLCIiLCJhMjAxIiwiYTE4MyIsImExODQiLCJhMTk3IiwiYTE4NSIsImExOTQiLCJhMTk4IiwiYTE4NiIsImExOTUiLCJhMTg3IiwiYTE4OCIsImExODkiLCJhMTkwIiwiYTE5MSIsIiJdO2Z1bmN0aW9uIGdldEVuY29kaW5nKGUpe3N3aXRjaChlKXtjYXNlIldpbkFuc2lFbmNvZGluZyI6cmV0dXJuIERpO2Nhc2UiU3RhbmRhcmRFbmNvZGluZyI6cmV0dXJuIGJpO2Nhc2UiTWFjUm9tYW5FbmNvZGluZyI6cmV0dXJuIHdpO2Nhc2UiU3ltYm9sU2V0RW5jb2RpbmciOnJldHVybiBGaTtjYXNlIlphcGZEaW5nYmF0c0VuY29kaW5nIjpyZXR1cm4gU2k7Y2FzZSJFeHBlcnRFbmNvZGluZyI6cmV0dXJuIG1pO2Nhc2UiTWFjRXhwZXJ0RW5jb2RpbmciOnJldHVybiB5aTtkZWZhdWx0OnJldHVybiBudWxsfX1jb25zdCBraT1bIi5ub3RkZWYiLCJzcGFjZSIsImV4Y2xhbSIsInF1b3RlZGJsIiwibnVtYmVyc2lnbiIsImRvbGxhciIsInBlcmNlbnQiLCJhbXBlcnNhbmQiLCJxdW90ZXJpZ2h0IiwicGFyZW5sZWZ0IiwicGFyZW5yaWdodCIsImFzdGVyaXNrIiwicGx1cyIsImNvbW1hIiwiaHlwaGVuIiwicGVyaW9kIiwic2xhc2giLCJ6ZXJvIiwib25lIiwidHdvIiwidGhyZWUiLCJmb3VyIiwiZml2ZSIsInNpeCIsInNldmVuIiwiZWlnaHQiLCJuaW5lIiwiY29sb24iLCJzZW1pY29sb24iLCJsZXNzIiwiZXF1YWwiLCJncmVhdGVyIiwicXVlc3Rpb24iLCJhdCIsIkEiLCJCIiwiQyIsIkQiLCJFIiwiRiIsIkciLCJIIiwiSSIsIkoiLCJLIiwiTCIsIk0iLCJOIiwiTyIsIlAiLCJRIiwiUiIsIlMiLCJUIiwiVSIsIlYiLCJXIiwiWCIsIlkiLCJaIiwiYnJhY2tldGxlZnQiLCJiYWNrc2xhc2giLCJicmFja2V0cmlnaHQiLCJhc2NpaWNpcmN1bSIsInVuZGVyc2NvcmUiLCJxdW90ZWxlZnQiLCJhIiwiYiIsImMiLCJkIiwiZSIsImYiLCJnIiwiaCIsImkiLCJqIiwiayIsImwiLCJtIiwibiIsIm8iLCJwIiwicSIsInIiLCJzIiwidCIsInUiLCJ2IiwidyIsIngiLCJ5IiwieiIsImJyYWNlbGVmdCIsImJhciIsImJyYWNlcmlnaHQiLCJhc2NpaXRpbGRlIiwiZXhjbGFtZG93biIsImNlbnQiLCJzdGVybGluZyIsImZyYWN0aW9uIiwieWVuIiwiZmxvcmluIiwic2VjdGlvbiIsImN1cnJlbmN5IiwicXVvdGVzaW5nbGUiLCJxdW90ZWRibGxlZnQiLCJndWlsbGVtb3RsZWZ0IiwiZ3VpbHNpbmdsbGVmdCIsImd1aWxzaW5nbHJpZ2h0IiwiZmkiLCJmbCIsImVuZGFzaCIsImRhZ2dlciIsImRhZ2dlcmRibCIsInBlcmlvZGNlbnRlcmVkIiwicGFyYWdyYXBoIiwiYnVsbGV0IiwicXVvdGVzaW5nbGJhc2UiLCJxdW90ZWRibGJhc2UiLCJxdW90ZWRibHJpZ2h0IiwiZ3VpbGxlbW90cmlnaHQiLCJlbGxpcHNpcyIsInBlcnRob3VzYW5kIiwicXVlc3Rpb25kb3duIiwiZ3JhdmUiLCJhY3V0ZSIsImNpcmN1bWZsZXgiLCJ0aWxkZSIsIm1hY3JvbiIsImJyZXZlIiwiZG90YWNjZW50IiwiZGllcmVzaXMiLCJyaW5nIiwiY2VkaWxsYSIsImh1bmdhcnVtbGF1dCIsIm9nb25layIsImNhcm9uIiwiZW1kYXNoIiwiQUUiLCJvcmRmZW1pbmluZSIsIkxzbGFzaCIsIk9zbGFzaCIsIk9FIiwib3JkbWFzY3VsaW5lIiwiYWUiLCJkb3RsZXNzaSIsImxzbGFzaCIsIm9zbGFzaCIsIm9lIiwiZ2VybWFuZGJscyIsIm9uZXN1cGVyaW9yIiwibG9naWNhbG5vdCIsIm11IiwidHJhZGVtYXJrIiwiRXRoIiwib25laGFsZiIsInBsdXNtaW51cyIsIlRob3JuIiwib25lcXVhcnRlciIsImRpdmlkZSIsImJyb2tlbmJhciIsImRlZ3JlZSIsInRob3JuIiwidGhyZWVxdWFydGVycyIsInR3b3N1cGVyaW9yIiwicmVnaXN0ZXJlZCIsIm1pbnVzIiwiZXRoIiwibXVsdGlwbHkiLCJ0aHJlZXN1cGVyaW9yIiwiY29weXJpZ2h0IiwiQWFjdXRlIiwiQWNpcmN1bWZsZXgiLCJBZGllcmVzaXMiLCJBZ3JhdmUiLCJBcmluZyIsIkF0aWxkZSIsIkNjZWRpbGxhIiwiRWFjdXRlIiwiRWNpcmN1bWZsZXgiLCJFZGllcmVzaXMiLCJFZ3JhdmUiLCJJYWN1dGUiLCJJY2lyY3VtZmxleCIsIklkaWVyZXNpcyIsIklncmF2ZSIsIk50aWxkZSIsIk9hY3V0ZSIsIk9jaXJjdW1mbGV4IiwiT2RpZXJlc2lzIiwiT2dyYXZlIiwiT3RpbGRlIiwiU2Nhcm9uIiwiVWFjdXRlIiwiVWNpcmN1bWZsZXgiLCJVZGllcmVzaXMiLCJVZ3JhdmUiLCJZYWN1dGUiLCJZZGllcmVzaXMiLCJaY2Fyb24iLCJhYWN1dGUiLCJhY2lyY3VtZmxleCIsImFkaWVyZXNpcyIsImFncmF2ZSIsImFyaW5nIiwiYXRpbGRlIiwiY2NlZGlsbGEiLCJlYWN1dGUiLCJlY2lyY3VtZmxleCIsImVkaWVyZXNpcyIsImVncmF2ZSIsImlhY3V0ZSIsImljaXJjdW1mbGV4IiwiaWRpZXJlc2lzIiwiaWdyYXZlIiwibnRpbGRlIiwib2FjdXRlIiwib2NpcmN1bWZsZXgiLCJvZGllcmVzaXMiLCJvZ3JhdmUiLCJvdGlsZGUiLCJzY2Fyb24iLCJ1YWN1dGUiLCJ1Y2lyY3VtZmxleCIsInVkaWVyZXNpcyIsInVncmF2ZSIsInlhY3V0ZSIsInlkaWVyZXNpcyIsInpjYXJvbiIsImV4Y2xhbXNtYWxsIiwiSHVuZ2FydW1sYXV0c21hbGwiLCJkb2xsYXJvbGRzdHlsZSIsImRvbGxhcnN1cGVyaW9yIiwiYW1wZXJzYW5kc21hbGwiLCJBY3V0ZXNtYWxsIiwicGFyZW5sZWZ0c3VwZXJpb3IiLCJwYXJlbnJpZ2h0c3VwZXJpb3IiLCJ0d29kb3RlbmxlYWRlciIsIm9uZWRvdGVubGVhZGVyIiwiemVyb29sZHN0eWxlIiwib25lb2xkc3R5bGUiLCJ0d29vbGRzdHlsZSIsInRocmVlb2xkc3R5bGUiLCJmb3Vyb2xkc3R5bGUiLCJmaXZlb2xkc3R5bGUiLCJzaXhvbGRzdHlsZSIsInNldmVub2xkc3R5bGUiLCJlaWdodG9sZHN0eWxlIiwibmluZW9sZHN0eWxlIiwiY29tbWFzdXBlcmlvciIsInRocmVlcXVhcnRlcnNlbWRhc2giLCJwZXJpb2RzdXBlcmlvciIsInF1ZXN0aW9uc21hbGwiLCJhc3VwZXJpb3IiLCJic3VwZXJpb3IiLCJjZW50c3VwZXJpb3IiLCJkc3VwZXJpb3IiLCJlc3VwZXJpb3IiLCJpc3VwZXJpb3IiLCJsc3VwZXJpb3IiLCJtc3VwZXJpb3IiLCJuc3VwZXJpb3IiLCJvc3VwZXJpb3IiLCJyc3VwZXJpb3IiLCJzc3VwZXJpb3IiLCJ0c3VwZXJpb3IiLCJmZiIsImZmaSIsImZmbCIsInBhcmVubGVmdGluZmVyaW9yIiwicGFyZW5yaWdodGluZmVyaW9yIiwiQ2lyY3VtZmxleHNtYWxsIiwiaHlwaGVuc3VwZXJpb3IiLCJHcmF2ZXNtYWxsIiwiQXNtYWxsIiwiQnNtYWxsIiwiQ3NtYWxsIiwiRHNtYWxsIiwiRXNtYWxsIiwiRnNtYWxsIiwiR3NtYWxsIiwiSHNtYWxsIiwiSXNtYWxsIiwiSnNtYWxsIiwiS3NtYWxsIiwiTHNtYWxsIiwiTXNtYWxsIiwiTnNtYWxsIiwiT3NtYWxsIiwiUHNtYWxsIiwiUXNtYWxsIiwiUnNtYWxsIiwiU3NtYWxsIiwiVHNtYWxsIiwiVXNtYWxsIiwiVnNtYWxsIiwiV3NtYWxsIiwiWHNtYWxsIiwiWXNtYWxsIiwiWnNtYWxsIiwiY29sb25tb25ldGFyeSIsIm9uZWZpdHRlZCIsInJ1cGlhaCIsIlRpbGRlc21hbGwiLCJleGNsYW1kb3duc21hbGwiLCJjZW50b2xkc3R5bGUiLCJMc2xhc2hzbWFsbCIsIlNjYXJvbnNtYWxsIiwiWmNhcm9uc21hbGwiLCJEaWVyZXNpc3NtYWxsIiwiQnJldmVzbWFsbCIsIkNhcm9uc21hbGwiLCJEb3RhY2NlbnRzbWFsbCIsIk1hY3JvbnNtYWxsIiwiZmlndXJlZGFzaCIsImh5cGhlbmluZmVyaW9yIiwiT2dvbmVrc21hbGwiLCJSaW5nc21hbGwiLCJDZWRpbGxhc21hbGwiLCJxdWVzdGlvbmRvd25zbWFsbCIsIm9uZWVpZ2h0aCIsInRocmVlZWlnaHRocyIsImZpdmVlaWdodGhzIiwic2V2ZW5laWdodGhzIiwib25ldGhpcmQiLCJ0d290aGlyZHMiLCJ6ZXJvc3VwZXJpb3IiLCJmb3Vyc3VwZXJpb3IiLCJmaXZlc3VwZXJpb3IiLCJzaXhzdXBlcmlvciIsInNldmVuc3VwZXJpb3IiLCJlaWdodHN1cGVyaW9yIiwibmluZXN1cGVyaW9yIiwiemVyb2luZmVyaW9yIiwib25laW5mZXJpb3IiLCJ0d29pbmZlcmlvciIsInRocmVlaW5mZXJpb3IiLCJmb3VyaW5mZXJpb3IiLCJmaXZlaW5mZXJpb3IiLCJzaXhpbmZlcmlvciIsInNldmVuaW5mZXJpb3IiLCJlaWdodGluZmVyaW9yIiwibmluZWluZmVyaW9yIiwiY2VudGluZmVyaW9yIiwiZG9sbGFyaW5mZXJpb3IiLCJwZXJpb2RpbmZlcmlvciIsImNvbW1haW5mZXJpb3IiLCJBZ3JhdmVzbWFsbCIsIkFhY3V0ZXNtYWxsIiwiQWNpcmN1bWZsZXhzbWFsbCIsIkF0aWxkZXNtYWxsIiwiQWRpZXJlc2lzc21hbGwiLCJBcmluZ3NtYWxsIiwiQUVzbWFsbCIsIkNjZWRpbGxhc21hbGwiLCJFZ3JhdmVzbWFsbCIsIkVhY3V0ZXNtYWxsIiwiRWNpcmN1bWZsZXhzbWFsbCIsIkVkaWVyZXNpc3NtYWxsIiwiSWdyYXZlc21hbGwiLCJJYWN1dGVzbWFsbCIsIkljaXJjdW1mbGV4c21hbGwiLCJJZGllcmVzaXNzbWFsbCIsIkV0aHNtYWxsIiwiTnRpbGRlc21hbGwiLCJPZ3JhdmVzbWFsbCIsIk9hY3V0ZXNtYWxsIiwiT2NpcmN1bWZsZXhzbWFsbCIsIk90aWxkZXNtYWxsIiwiT2RpZXJlc2lzc21hbGwiLCJPRXNtYWxsIiwiT3NsYXNoc21hbGwiLCJVZ3JhdmVzbWFsbCIsIlVhY3V0ZXNtYWxsIiwiVWNpcmN1bWZsZXhzbWFsbCIsIlVkaWVyZXNpc3NtYWxsIiwiWWFjdXRlc21hbGwiLCJUaG9ybnNtYWxsIiwiWWRpZXJlc2lzc21hbGwiLCIwMDEuMDAwIiwiMDAxLjAwMSIsIjAwMS4wMDIiLCIwMDEuMDAzIiwiQmxhY2siLCJCb2xkIiwiQm9vayIsIkxpZ2h0IiwiTWVkaXVtIiwiUmVndWxhciIsIlJvbWFuIiwiU2VtaWJvbGQiXSxSaT0zOTEsTmk9W251bGwse2lkOiJoc3RlbSIsbWluOjIsc3RhY2tDbGVhcmluZzohMCxzdGVtOiEwfSxudWxsLHtpZDoidnN0ZW0iLG1pbjoyLHN0YWNrQ2xlYXJpbmc6ITAsc3RlbTohMH0se2lkOiJ2bW92ZXRvIixtaW46MSxzdGFja0NsZWFyaW5nOiEwfSx7aWQ6InJsaW5ldG8iLG1pbjoyLHJlc2V0U3RhY2s6ITB9LHtpZDoiaGxpbmV0byIsbWluOjEscmVzZXRTdGFjazohMH0se2lkOiJ2bGluZXRvIixtaW46MSxyZXNldFN0YWNrOiEwfSx7aWQ6InJyY3VydmV0byIsbWluOjYscmVzZXRTdGFjazohMH0sbnVsbCx7aWQ6ImNhbGxzdWJyIixtaW46MSx1bmRlZlN0YWNrOiEwfSx7aWQ6InJldHVybiIsbWluOjAsdW5kZWZTdGFjazohMH0sbnVsbCxudWxsLHtpZDoiZW5kY2hhciIsbWluOjAsc3RhY2tDbGVhcmluZzohMH0sbnVsbCxudWxsLG51bGwse2lkOiJoc3RlbWhtIixtaW46MixzdGFja0NsZWFyaW5nOiEwLHN0ZW06ITB9LHtpZDoiaGludG1hc2siLG1pbjowLHN0YWNrQ2xlYXJpbmc6ITB9LHtpZDoiY250cm1hc2siLG1pbjowLHN0YWNrQ2xlYXJpbmc6ITB9LHtpZDoicm1vdmV0byIsbWluOjIsc3RhY2tDbGVhcmluZzohMH0se2lkOiJobW92ZXRvIixtaW46MSxzdGFja0NsZWFyaW5nOiEwfSx7aWQ6InZzdGVtaG0iLG1pbjoyLHN0YWNrQ2xlYXJpbmc6ITAsc3RlbTohMH0se2lkOiJyY3VydmVsaW5lIixtaW46OCxyZXNldFN0YWNrOiEwfSx7aWQ6InJsaW5lY3VydmUiLG1pbjo4LHJlc2V0U3RhY2s6ITB9LHtpZDoidnZjdXJ2ZXRvIixtaW46NCxyZXNldFN0YWNrOiEwfSx7aWQ6ImhoY3VydmV0byIsbWluOjQscmVzZXRTdGFjazohMH0sbnVsbCx7aWQ6ImNhbGxnc3ViciIsbWluOjEsdW5kZWZTdGFjazohMH0se2lkOiJ2aGN1cnZldG8iLG1pbjo0LHJlc2V0U3RhY2s6ITB9LHtpZDoiaHZjdXJ2ZXRvIixtaW46NCxyZXNldFN0YWNrOiEwfV0sR2k9W251bGwsbnVsbCxudWxsLHtpZDoiYW5kIixtaW46MixzdGFja0RlbHRhOi0xfSx7aWQ6Im9yIixtaW46MixzdGFja0RlbHRhOi0xfSx7aWQ6Im5vdCIsbWluOjEsc3RhY2tEZWx0YTowfSxudWxsLG51bGwsbnVsbCx7aWQ6ImFicyIsbWluOjEsc3RhY2tEZWx0YTowfSx7aWQ6ImFkZCIsbWluOjIsc3RhY2tEZWx0YTotMSxzdGFja0ZuKGUsdCl7ZVt0LTJdPWVbdC0yXStlW3QtMV19fSx7aWQ6InN1YiIsbWluOjIsc3RhY2tEZWx0YTotMSxzdGFja0ZuKGUsdCl7ZVt0LTJdPWVbdC0yXS1lW3QtMV19fSx7aWQ6ImRpdiIsbWluOjIsc3RhY2tEZWx0YTotMSxzdGFja0ZuKGUsdCl7ZVt0LTJdPWVbdC0yXS9lW3QtMV19fSxudWxsLHtpZDoibmVnIixtaW46MSxzdGFja0RlbHRhOjAsc3RhY2tGbihlLHQpe2VbdC0xXT0tZVt0LTFdfX0se2lkOiJlcSIsbWluOjIsc3RhY2tEZWx0YTotMX0sbnVsbCxudWxsLHtpZDoiZHJvcCIsbWluOjEsc3RhY2tEZWx0YTotMX0sbnVsbCx7aWQ6InB1dCIsbWluOjIsc3RhY2tEZWx0YTotMn0se2lkOiJnZXQiLG1pbjoxLHN0YWNrRGVsdGE6MH0se2lkOiJpZmVsc2UiLG1pbjo0LHN0YWNrRGVsdGE6LTN9LHtpZDoicmFuZG9tIixtaW46MCxzdGFja0RlbHRhOjF9LHtpZDoibXVsIixtaW46MixzdGFja0RlbHRhOi0xLHN0YWNrRm4oZSx0KXtlW3QtMl09ZVt0LTJdKmVbdC0xXX19LG51bGwse2lkOiJzcXJ0IixtaW46MSxzdGFja0RlbHRhOjB9LHtpZDoiZHVwIixtaW46MSxzdGFja0RlbHRhOjF9LHtpZDoiZXhjaCIsbWluOjIsc3RhY2tEZWx0YTowfSx7aWQ6ImluZGV4IixtaW46MixzdGFja0RlbHRhOjB9LHtpZDoicm9sbCIsbWluOjMsc3RhY2tEZWx0YTotMn0sbnVsbCxudWxsLG51bGwse2lkOiJoZmxleCIsbWluOjcscmVzZXRTdGFjazohMH0se2lkOiJmbGV4IixtaW46MTMscmVzZXRTdGFjazohMH0se2lkOiJoZmxleDEiLG1pbjo5LHJlc2V0U3RhY2s6ITB9LHtpZDoiZmxleDEiLG1pbjoxMSxyZXNldFN0YWNrOiEwfV07Y2xhc3MgQ0ZGUGFyc2Vye2NvbnN0cnVjdG9yKGUsdCxpKXt0aGlzLmJ5dGVzPWUuZ2V0Qnl0ZXMoKTt0aGlzLnByb3BlcnRpZXM9dDt0aGlzLnNlYWNBbmFseXNpc0VuYWJsZWQ9ISFpfXBhcnNlKCl7Y29uc3QgZT10aGlzLnByb3BlcnRpZXMsdD1uZXcgQ0ZGO3RoaXMuY2ZmPXQ7Y29uc3QgaT10aGlzLnBhcnNlSGVhZGVyKCksYT10aGlzLnBhcnNlSW5kZXgoaS5lbmRQb3MpLHI9dGhpcy5wYXJzZUluZGV4KGEuZW5kUG9zKSxzPXRoaXMucGFyc2VJbmRleChyLmVuZFBvcyksbj10aGlzLnBhcnNlSW5kZXgocy5lbmRQb3MpLG89dGhpcy5wYXJzZURpY3Qoci5vYmouZ2V0KDApKSxnPXRoaXMuY3JlYXRlRGljdChDRkZUb3BEaWN0LG8sdC5zdHJpbmdzKTt0LmhlYWRlcj1pLm9iajt0Lm5hbWVzPXRoaXMucGFyc2VOYW1lSW5kZXgoYS5vYmopO3Quc3RyaW5ncz10aGlzLnBhcnNlU3RyaW5nSW5kZXgocy5vYmopO3QudG9wRGljdD1nO3QuZ2xvYmFsU3VickluZGV4PW4ub2JqO3RoaXMucGFyc2VQcml2YXRlRGljdCh0LnRvcERpY3QpO3QuaXNDSURGb250PWcuaGFzTmFtZSgiUk9TIik7Y29uc3QgYz1nLmdldEJ5TmFtZSgiQ2hhclN0cmluZ3MiKSxDPXRoaXMucGFyc2VJbmRleChjKS5vYmosaD1nLmdldEJ5TmFtZSgiRm9udE1hdHJpeCIpO2gmJihlLmZvbnRNYXRyaXg9aCk7Y29uc3QgbD1nLmdldEJ5TmFtZSgiRm9udEJCb3giKTtpZihsKXtlLmFzY2VudD1NYXRoLm1heChsWzNdLGxbMV0pO2UuZGVzY2VudD1NYXRoLm1pbihsWzFdLGxbM10pO2UuYXNjZW50U2NhbGVkPSEwfWxldCBRLEU7aWYodC5pc0NJREZvbnQpe2NvbnN0IGU9dGhpcy5wYXJzZUluZGV4KGcuZ2V0QnlOYW1lKCJGREFycmF5IikpLm9iajtmb3IobGV0IGk9MCxhPWUuY291bnQ7aTxhOysraSl7Y29uc3QgYT1lLmdldChpKSxyPXRoaXMuY3JlYXRlRGljdChDRkZUb3BEaWN0LHRoaXMucGFyc2VEaWN0KGEpLHQuc3RyaW5ncyk7dGhpcy5wYXJzZVByaXZhdGVEaWN0KHIpO3QuZmRBcnJheS5wdXNoKHIpfUU9bnVsbDtRPXRoaXMucGFyc2VDaGFyc2V0cyhnLmdldEJ5TmFtZSgiY2hhcnNldCIpLEMuY291bnQsdC5zdHJpbmdzLCEwKTt0LmZkU2VsZWN0PXRoaXMucGFyc2VGRFNlbGVjdChnLmdldEJ5TmFtZSgiRkRTZWxlY3QiKSxDLmNvdW50KX1lbHNle1E9dGhpcy5wYXJzZUNoYXJzZXRzKGcuZ2V0QnlOYW1lKCJjaGFyc2V0IiksQy5jb3VudCx0LnN0cmluZ3MsITEpO0U9dGhpcy5wYXJzZUVuY29kaW5nKGcuZ2V0QnlOYW1lKCJFbmNvZGluZyIpLGUsdC5zdHJpbmdzLFEuY2hhcnNldCl9dC5jaGFyc2V0PVE7dC5lbmNvZGluZz1FO2NvbnN0IHU9dGhpcy5wYXJzZUNoYXJTdHJpbmdzKHtjaGFyU3RyaW5nczpDLGxvY2FsU3VickluZGV4OmcucHJpdmF0ZURpY3Quc3VicnNJbmRleCxnbG9iYWxTdWJySW5kZXg6bi5vYmosZmRTZWxlY3Q6dC5mZFNlbGVjdCxmZEFycmF5OnQuZmRBcnJheSxwcml2YXRlRGljdDpnLnByaXZhdGVEaWN0fSk7dC5jaGFyU3RyaW5ncz11LmNoYXJTdHJpbmdzO3Quc2VhY3M9dS5zZWFjczt0LndpZHRocz11LndpZHRocztyZXR1cm4gdH1wYXJzZUhlYWRlcigpe2xldCBlPXRoaXMuYnl0ZXM7Y29uc3QgdD1lLmxlbmd0aDtsZXQgaT0wO2Zvcig7aTx0JiYxIT09ZVtpXTspKytpO2lmKGk+PXQpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIENGRiBoZWFkZXIiKTtpZigwIT09aSl7aW5mbygiY2ZmIGRhdGEgaXMgc2hpZnRlZCIpO2U9ZS5zdWJhcnJheShpKTt0aGlzLmJ5dGVzPWV9Y29uc3QgYT1lWzBdLHI9ZVsxXSxzPWVbMl0sbj1lWzNdO3JldHVybntvYmo6bmV3IENGRkhlYWRlcihhLHIscyxuKSxlbmRQb3M6c319cGFyc2VEaWN0KGUpe2xldCB0PTA7ZnVuY3Rpb24gcGFyc2VPcGVyYW5kKCl7bGV0IGk9ZVt0KytdO2lmKDMwPT09aSlyZXR1cm4gZnVuY3Rpb24gcGFyc2VGbG9hdE9wZXJhbmQoKXtsZXQgaT0iIjtjb25zdCBhPTE1LHI9WyIwIiwiMSIsIjIiLCIzIiwiNCIsIjUiLCI2IiwiNyIsIjgiLCI5IiwiLiIsIkUiLCJFLSIsbnVsbCwiLSJdLHM9ZS5sZW5ndGg7Zm9yKDt0PHM7KXtjb25zdCBzPWVbdCsrXSxuPXM+PjQsbz0xNSZzO2lmKG49PT1hKWJyZWFrO2krPXJbbl07aWYobz09PWEpYnJlYWs7aSs9cltvXX1yZXR1cm4gcGFyc2VGbG9hdChpKX0oKTtpZigyOD09PWkpe2k9ZVt0KytdO2k9KGk8PDI0fGVbdCsrXTw8MTYpPj4xNjtyZXR1cm4gaX1pZigyOT09PWkpe2k9ZVt0KytdO2k9aTw8OHxlW3QrK107aT1pPDw4fGVbdCsrXTtpPWk8PDh8ZVt0KytdO3JldHVybiBpfWlmKGk+PTMyJiZpPD0yNDYpcmV0dXJuIGktMTM5O2lmKGk+PTI0NyYmaTw9MjUwKXJldHVybiAyNTYqKGktMjQ3KStlW3QrK10rMTA4O2lmKGk+PTI1MSYmaTw9MjU0KXJldHVybi0yNTYqKGktMjUxKS1lW3QrK10tMTA4O3dhcm4oJ0NGRlBhcnNlcl9wYXJzZURpY3Q6ICInK2krJyIgaXMgYSByZXNlcnZlZCBjb21tYW5kLicpO3JldHVybiBOYU59bGV0IGk9W107Y29uc3QgYT1bXTt0PTA7Y29uc3Qgcj1lLmxlbmd0aDtmb3IoO3Q8cjspe2xldCByPWVbdF07aWYocjw9MjEpezEyPT09ciYmKHI9cjw8OHxlWysrdF0pO2EucHVzaChbcixpXSk7aT1bXTsrK3R9ZWxzZSBpLnB1c2gocGFyc2VPcGVyYW5kKCkpfXJldHVybiBhfXBhcnNlSW5kZXgoZSl7Y29uc3QgdD1uZXcgQ0ZGSW5kZXgsaT10aGlzLmJ5dGVzLGE9aVtlKytdPDw4fGlbZSsrXSxyPVtdO2xldCBzLG4sbz1lO2lmKDAhPT1hKXtjb25zdCB0PWlbZSsrXSxnPWUrKGErMSkqdC0xO2ZvcihzPTAsbj1hKzE7czxuOysrcyl7bGV0IGE9MDtmb3IobGV0IHI9MDtyPHQ7KytyKXthPDw9ODthKz1pW2UrK119ci5wdXNoKGcrYSl9bz1yW2FdfWZvcihzPTAsbj1yLmxlbmd0aC0xO3M8bjsrK3Mpe2NvbnN0IGU9cltzXSxhPXJbcysxXTt0LmFkZChpLnN1YmFycmF5KGUsYSkpfXJldHVybntvYmo6dCxlbmRQb3M6b319cGFyc2VOYW1lSW5kZXgoZSl7Y29uc3QgdD1bXTtmb3IobGV0IGk9MCxhPWUuY291bnQ7aTxhOysraSl7Y29uc3QgYT1lLmdldChpKTt0LnB1c2goYnl0ZXNUb1N0cmluZyhhKSl9cmV0dXJuIHR9cGFyc2VTdHJpbmdJbmRleChlKXtjb25zdCB0PW5ldyBDRkZTdHJpbmdzO2ZvcihsZXQgaT0wLGE9ZS5jb3VudDtpPGE7KytpKXtjb25zdCBhPWUuZ2V0KGkpO3QuYWRkKGJ5dGVzVG9TdHJpbmcoYSkpfXJldHVybiB0fWNyZWF0ZURpY3QoZSx0LGkpe2NvbnN0IGE9bmV3IGUoaSk7Zm9yKGNvbnN0W2UsaV1vZiB0KWEuc2V0QnlLZXkoZSxpKTtyZXR1cm4gYX1wYXJzZUNoYXJTdHJpbmcoZSx0LGksYSl7aWYoIXR8fGUuY2FsbERlcHRoPjEwKXJldHVybiExO2xldCByPWUuc3RhY2tTaXplO2NvbnN0IHM9ZS5zdGFjaztsZXQgbj10Lmxlbmd0aDtmb3IobGV0IG89MDtvPG47KXtjb25zdCBnPXRbbysrXTtsZXQgYz1udWxsO2lmKDEyPT09Zyl7Y29uc3QgZT10W28rK107aWYoMD09PWUpe3Rbby0yXT0xMzk7dFtvLTFdPTIyO3I9MH1lbHNlIGM9R2lbZV19ZWxzZSBpZigyOD09PWcpe3Nbcl09KHRbb108PDI0fHRbbysxXTw8MTYpPj4xNjtvKz0yO3IrK31lbHNlIGlmKDE0PT09Zyl7aWYocj49NCl7ci09NDtpZih0aGlzLnNlYWNBbmFseXNpc0VuYWJsZWQpe2Uuc2VhYz1zLnNsaWNlKHIscis0KTtyZXR1cm4hMX19Yz1OaVtnXX1lbHNlIGlmKGc+PTMyJiZnPD0yNDYpe3Nbcl09Zy0xMzk7cisrfWVsc2UgaWYoZz49MjQ3JiZnPD0yNTQpe3Nbcl09ZzwyNTE/KGctMjQ3PDw4KSt0W29dKzEwODotKGctMjUxPDw4KS10W29dLTEwODtvKys7cisrfWVsc2UgaWYoMjU1PT09Zyl7c1tyXT0odFtvXTw8MjR8dFtvKzFdPDwxNnx0W28rMl08PDh8dFtvKzNdKS82NTUzNjtvKz00O3IrK31lbHNlIGlmKDE5PT09Z3x8MjA9PT1nKXtlLmhpbnRzKz1yPj4xO2lmKDA9PT1lLmhpbnRzKXt0LmNvcHlXaXRoaW4oby0xLG8sLTEpO28tPTE7bi09MTtjb250aW51ZX1vKz1lLmhpbnRzKzc+PjM7ciU9MjtjPU5pW2ddfWVsc2V7aWYoMTA9PT1nfHwyOT09PWcpe2NvbnN0IHQ9MTA9PT1nP2k6YTtpZighdCl7Yz1OaVtnXTt3YXJuKCJNaXNzaW5nIHN1YnJzSW5kZXggZm9yICIrYy5pZCk7cmV0dXJuITF9bGV0IG49MzI3Njg7dC5jb3VudDwxMjQwP249MTA3OnQuY291bnQ8MzM5MDAmJihuPTExMzEpO2NvbnN0IG89c1stLXJdK247aWYobzwwfHxvPj10LmNvdW50fHxpc05hTihvKSl7Yz1OaVtnXTt3YXJuKCJPdXQgb2YgYm91bmRzIHN1YnJJbmRleCBmb3IgIitjLmlkKTtyZXR1cm4hMX1lLnN0YWNrU2l6ZT1yO2UuY2FsbERlcHRoKys7aWYoIXRoaXMucGFyc2VDaGFyU3RyaW5nKGUsdC5nZXQobyksaSxhKSlyZXR1cm4hMTtlLmNhbGxEZXB0aC0tO3I9ZS5zdGFja1NpemU7Y29udGludWV9aWYoMTE9PT1nKXtlLnN0YWNrU2l6ZT1yO3JldHVybiEwfWlmKDA9PT1nJiZvPT09dC5sZW5ndGgpe3Rbby0xXT0xNDtjPU5pWzE0XX1lbHNle2lmKDk9PT1nKXt0LmNvcHlXaXRoaW4oby0xLG8sLTEpO28tPTE7bi09MTtjb250aW51ZX1jPU5pW2ddfX1pZihjKXtpZihjLnN0ZW0pe2UuaGludHMrPXI+PjE7aWYoMz09PWd8fDIzPT09ZyllLmhhc1ZTdGVtcz0hMDtlbHNlIGlmKGUuaGFzVlN0ZW1zJiYoMT09PWd8fDE4PT09Zykpe3dhcm4oIkNGRiBzdGVtIGhpbnRzIGFyZSBpbiB3cm9uZyBvcmRlciIpO3Rbby0xXT0xPT09Zz8zOjIzfX1pZigibWluImluIGMmJiFlLnVuZGVmU3RhY2smJnI8Yy5taW4pe3dhcm4oIk5vdCBlbm91Z2ggcGFyYW1ldGVycyBmb3IgIitjLmlkKyI7IGFjdHVhbDogIityKyIsIGV4cGVjdGVkOiAiK2MubWluKTtpZigwPT09cil7dFtvLTFdPTE0O3JldHVybiEwfXJldHVybiExfWlmKGUuZmlyc3RTdGFja0NsZWFyaW5nJiZjLnN0YWNrQ2xlYXJpbmcpe2UuZmlyc3RTdGFja0NsZWFyaW5nPSExO3ItPWMubWluO3I+PTImJmMuc3RlbT9yJT0yOnI+MSYmd2FybigiRm91bmQgdG9vIG1hbnkgcGFyYW1ldGVycyBmb3Igc3RhY2stY2xlYXJpbmcgY29tbWFuZCIpO3I+MCYmKGUud2lkdGg9c1tyLTFdKX1pZigic3RhY2tEZWx0YSJpbiBjKXsic3RhY2tGbiJpbiBjJiZjLnN0YWNrRm4ocyxyKTtyKz1jLnN0YWNrRGVsdGF9ZWxzZSBpZihjLnN0YWNrQ2xlYXJpbmcpcj0wO2Vsc2UgaWYoYy5yZXNldFN0YWNrKXtyPTA7ZS51bmRlZlN0YWNrPSExfWVsc2UgaWYoYy51bmRlZlN0YWNrKXtyPTA7ZS51bmRlZlN0YWNrPSEwO2UuZmlyc3RTdGFja0NsZWFyaW5nPSExfX19bjx0Lmxlbmd0aCYmdC5maWxsKDE0LG4pO2Uuc3RhY2tTaXplPXI7cmV0dXJuITB9cGFyc2VDaGFyU3RyaW5ncyh7Y2hhclN0cmluZ3M6ZSxsb2NhbFN1YnJJbmRleDp0LGdsb2JhbFN1YnJJbmRleDppLGZkU2VsZWN0OmEsZmRBcnJheTpyLHByaXZhdGVEaWN0OnN9KXtjb25zdCBuPVtdLG89W10sZz1lLmNvdW50O2ZvcihsZXQgYz0wO2M8ZztjKyspe2NvbnN0IGc9ZS5nZXQoYyksQz17Y2FsbERlcHRoOjAsc3RhY2tTaXplOjAsc3RhY2s6W10sdW5kZWZTdGFjazohMCxoaW50czowLGZpcnN0U3RhY2tDbGVhcmluZzohMCxzZWFjOm51bGwsd2lkdGg6bnVsbCxoYXNWU3RlbXM6ITF9O2xldCBoPSEwLGw9bnVsbCxRPXM7aWYoYSYmci5sZW5ndGgpe2NvbnN0IGU9YS5nZXRGREluZGV4KGMpO2lmKC0xPT09ZSl7d2FybigiR2x5cGggaW5kZXggaXMgbm90IGluIGZkIHNlbGVjdC4iKTtoPSExfWlmKGU+PXIubGVuZ3RoKXt3YXJuKCJJbnZhbGlkIGZkIGluZGV4IGZvciBnbHlwaCBpbmRleC4iKTtoPSExfWlmKGgpe1E9cltlXS5wcml2YXRlRGljdDtsPVEuc3VicnNJbmRleH19ZWxzZSB0JiYobD10KTtoJiYoaD10aGlzLnBhcnNlQ2hhclN0cmluZyhDLGcsbCxpKSk7aWYobnVsbCE9PUMud2lkdGgpe2NvbnN0IGU9US5nZXRCeU5hbWUoIm5vbWluYWxXaWR0aFgiKTtvW2NdPWUrQy53aWR0aH1lbHNle2NvbnN0IGU9US5nZXRCeU5hbWUoImRlZmF1bHRXaWR0aFgiKTtvW2NdPWV9bnVsbCE9PUMuc2VhYyYmKG5bY109Qy5zZWFjKTtofHxlLnNldChjLG5ldyBVaW50OEFycmF5KFsxNF0pKX1yZXR1cm57Y2hhclN0cmluZ3M6ZSxzZWFjczpuLHdpZHRoczpvfX1lbXB0eVByaXZhdGVEaWN0aW9uYXJ5KGUpe2NvbnN0IHQ9dGhpcy5jcmVhdGVEaWN0KENGRlByaXZhdGVEaWN0LFtdLGUuc3RyaW5ncyk7ZS5zZXRCeUtleSgxOCxbMCwwXSk7ZS5wcml2YXRlRGljdD10fXBhcnNlUHJpdmF0ZURpY3QoZSl7aWYoIWUuaGFzTmFtZSgiUHJpdmF0ZSIpKXt0aGlzLmVtcHR5UHJpdmF0ZURpY3Rpb25hcnkoZSk7cmV0dXJufWNvbnN0IHQ9ZS5nZXRCeU5hbWUoIlByaXZhdGUiKTtpZighQXJyYXkuaXNBcnJheSh0KXx8MiE9PXQubGVuZ3RoKXtlLnJlbW92ZUJ5TmFtZSgiUHJpdmF0ZSIpO3JldHVybn1jb25zdCBpPXRbMF0sYT10WzFdO2lmKDA9PT1pfHxhPj10aGlzLmJ5dGVzLmxlbmd0aCl7dGhpcy5lbXB0eVByaXZhdGVEaWN0aW9uYXJ5KGUpO3JldHVybn1jb25zdCByPWEraSxzPXRoaXMuYnl0ZXMuc3ViYXJyYXkoYSxyKSxuPXRoaXMucGFyc2VEaWN0KHMpLG89dGhpcy5jcmVhdGVEaWN0KENGRlByaXZhdGVEaWN0LG4sZS5zdHJpbmdzKTtlLnByaXZhdGVEaWN0PW87MD09PW8uZ2V0QnlOYW1lKCJFeHBhbnNpb25GYWN0b3IiKSYmby5zZXRCeU5hbWUoIkV4cGFuc2lvbkZhY3RvciIsLjA2KTtpZighby5nZXRCeU5hbWUoIlN1YnJzIikpcmV0dXJuO2NvbnN0IGc9by5nZXRCeU5hbWUoIlN1YnJzIiksYz1hK2c7aWYoMD09PWd8fGM+PXRoaXMuYnl0ZXMubGVuZ3RoKXt0aGlzLmVtcHR5UHJpdmF0ZURpY3Rpb25hcnkoZSk7cmV0dXJufWNvbnN0IEM9dGhpcy5wYXJzZUluZGV4KGMpO28uc3VicnNJbmRleD1DLm9ian1wYXJzZUNoYXJzZXRzKGUsdCxpLGEpe2lmKDA9PT1lKXJldHVybiBuZXcgQ0ZGQ2hhcnNldCghMCxIaS5JU09fQURPQkUsZGkpO2lmKDE9PT1lKXJldHVybiBuZXcgQ0ZGQ2hhcnNldCghMCxIaS5FWFBFUlQsZmkpO2lmKDI9PT1lKXJldHVybiBuZXcgQ0ZGQ2hhcnNldCghMCxIaS5FWFBFUlRfU1VCU0VULHBpKTtjb25zdCByPXRoaXMuYnl0ZXMscz1lLG49cltlKytdLG89W2E/MDoiLm5vdGRlZiJdO2xldCBnLGMsQzt0LT0xO3N3aXRjaChuKXtjYXNlIDA6Zm9yKEM9MDtDPHQ7QysrKXtnPXJbZSsrXTw8OHxyW2UrK107by5wdXNoKGE/ZzppLmdldChnKSl9YnJlYWs7Y2FzZSAxOmZvcig7by5sZW5ndGg8PXQ7KXtnPXJbZSsrXTw8OHxyW2UrK107Yz1yW2UrK107Zm9yKEM9MDtDPD1jO0MrKylvLnB1c2goYT9nKys6aS5nZXQoZysrKSl9YnJlYWs7Y2FzZSAyOmZvcig7by5sZW5ndGg8PXQ7KXtnPXJbZSsrXTw8OHxyW2UrK107Yz1yW2UrK108PDh8cltlKytdO2ZvcihDPTA7Qzw9YztDKyspby5wdXNoKGE/ZysrOmkuZ2V0KGcrKykpfWJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEZvcm1hdEVycm9yKCJVbmtub3duIGNoYXJzZXQgZm9ybWF0Iil9Y29uc3QgaD1lLGw9ci5zdWJhcnJheShzLGgpO3JldHVybiBuZXcgQ0ZGQ2hhcnNldCghMSxuLG8sbCl9cGFyc2VFbmNvZGluZyhlLHQsaSxhKXtjb25zdCByPU9iamVjdC5jcmVhdGUobnVsbCkscz10aGlzLmJ5dGVzO2xldCBuLG8sZyxjPSExLEM9bnVsbDtpZigwPT09ZXx8MT09PWUpe2M9ITA7bj1lO2NvbnN0IHQ9ZT9taTpiaTtmb3Iobz0wLGc9YS5sZW5ndGg7bzxnO28rKyl7Y29uc3QgZT10LmluZGV4T2YoYVtvXSk7LTEhPT1lJiYocltlXT1vKX19ZWxzZXtjb25zdCB0PWU7bj1zW2UrK107c3dpdGNoKDEyNyZuKXtjYXNlIDA6Y29uc3QgdD1zW2UrK107Zm9yKG89MTtvPD10O28rKylyW3NbZSsrXV09bzticmVhaztjYXNlIDE6Y29uc3QgaT1zW2UrK107bGV0IGE9MTtmb3Iobz0wO288aTtvKyspe2NvbnN0IHQ9c1tlKytdLGk9c1tlKytdO2ZvcihsZXQgZT10O2U8PXQraTtlKyspcltlXT1hKyt9YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYFVua25vd24gZW5jb2RpbmcgZm9ybWF0OiAke259IGluIENGRmApfWNvbnN0IGc9ZTtpZigxMjgmbil7c1t0XSY9MTI3OyFmdW5jdGlvbiByZWFkU3VwcGxlbWVudCgpe2NvbnN0IHQ9c1tlKytdO2ZvcihvPTA7bzx0O28rKyl7Y29uc3QgdD1zW2UrK10sbj0oc1tlKytdPDw4KSsoMjU1JnNbZSsrXSk7clt0XT1hLmluZGV4T2YoaS5nZXQobikpfX0oKX1DPXMuc3ViYXJyYXkodCxnKX1uJj0xMjc7cmV0dXJuIG5ldyBDRkZFbmNvZGluZyhjLG4scixDKX1wYXJzZUZEU2VsZWN0KGUsdCl7Y29uc3QgaT10aGlzLmJ5dGVzLGE9aVtlKytdLHI9W107bGV0IHM7c3dpdGNoKGEpe2Nhc2UgMDpmb3Iocz0wO3M8dDsrK3Mpe2NvbnN0IHQ9aVtlKytdO3IucHVzaCh0KX1icmVhaztjYXNlIDM6Y29uc3Qgbj1pW2UrK108PDh8aVtlKytdO2ZvcihzPTA7czxuOysrcyl7bGV0IHQ9aVtlKytdPDw4fGlbZSsrXTtpZigwPT09cyYmMCE9PXQpe3dhcm4oInBhcnNlRkRTZWxlY3Q6IFRoZSBmaXJzdCByYW5nZSBtdXN0IGhhdmUgYSBmaXJzdCBHSUQgb2YgMCAtLSB0cnlpbmcgdG8gcmVjb3Zlci4iKTt0PTB9Y29uc3QgYT1pW2UrK10sbj1pW2VdPDw4fGlbZSsxXTtmb3IobGV0IGU9dDtlPG47KytlKXIucHVzaChhKX1lKz0yO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEZvcm1hdEVycm9yKGBwYXJzZUZEU2VsZWN0OiBVbmtub3duIGZvcm1hdCAiJHthfSIuYCl9aWYoci5sZW5ndGghPT10KXRocm93IG5ldyBGb3JtYXRFcnJvcigicGFyc2VGRFNlbGVjdDogSW52YWxpZCBmb250IGRhdGEuIik7cmV0dXJuIG5ldyBDRkZGRFNlbGVjdChhLHIpfX1jbGFzcyBDRkZ7Y29uc3RydWN0b3IoKXt0aGlzLmhlYWRlcj1udWxsO3RoaXMubmFtZXM9W107dGhpcy50b3BEaWN0PW51bGw7dGhpcy5zdHJpbmdzPW5ldyBDRkZTdHJpbmdzO3RoaXMuZ2xvYmFsU3VickluZGV4PW51bGw7dGhpcy5lbmNvZGluZz1udWxsO3RoaXMuY2hhcnNldD1udWxsO3RoaXMuY2hhclN0cmluZ3M9bnVsbDt0aGlzLmZkQXJyYXk9W107dGhpcy5mZFNlbGVjdD1udWxsO3RoaXMuaXNDSURGb250PSExfWR1cGxpY2F0ZUZpcnN0R2x5cGgoKXtpZih0aGlzLmNoYXJTdHJpbmdzLmNvdW50Pj02NTUzNSl7d2FybigiTm90IGVub3VnaCBzcGFjZSBpbiBjaGFyc3RyaW5ncyB0byBkdXBsaWNhdGUgZmlyc3QgZ2x5cGguIik7cmV0dXJufWNvbnN0IGU9dGhpcy5jaGFyU3RyaW5ncy5nZXQoMCk7dGhpcy5jaGFyU3RyaW5ncy5hZGQoZSk7dGhpcy5pc0NJREZvbnQmJnRoaXMuZmRTZWxlY3QuZmRTZWxlY3QucHVzaCh0aGlzLmZkU2VsZWN0LmZkU2VsZWN0WzBdKX1oYXNHbHlwaElkKGUpe2lmKGU8MHx8ZT49dGhpcy5jaGFyU3RyaW5ncy5jb3VudClyZXR1cm4hMTtyZXR1cm4gdGhpcy5jaGFyU3RyaW5ncy5nZXQoZSkubGVuZ3RoPjB9fWNsYXNzIENGRkhlYWRlcntjb25zdHJ1Y3RvcihlLHQsaSxhKXt0aGlzLm1ham9yPWU7dGhpcy5taW5vcj10O3RoaXMuaGRyU2l6ZT1pO3RoaXMub2ZmU2l6ZT1hfX1jbGFzcyBDRkZTdHJpbmdze2NvbnN0cnVjdG9yKCl7dGhpcy5zdHJpbmdzPVtdfWdldChlKXtyZXR1cm4gZT49MCYmZTw9MzkwP2tpW2VdOmUtUmk8PXRoaXMuc3RyaW5ncy5sZW5ndGg/dGhpcy5zdHJpbmdzW2UtUmldOmtpWzBdfWdldFNJRChlKXtsZXQgdD1raS5pbmRleE9mKGUpO2lmKC0xIT09dClyZXR1cm4gdDt0PXRoaXMuc3RyaW5ncy5pbmRleE9mKGUpO3JldHVybi0xIT09dD90K1JpOi0xfWFkZChlKXt0aGlzLnN0cmluZ3MucHVzaChlKX1nZXQgY291bnQoKXtyZXR1cm4gdGhpcy5zdHJpbmdzLmxlbmd0aH19Y2xhc3MgQ0ZGSW5kZXh7Y29uc3RydWN0b3IoKXt0aGlzLm9iamVjdHM9W107dGhpcy5sZW5ndGg9MH1hZGQoZSl7dGhpcy5sZW5ndGgrPWUubGVuZ3RoO3RoaXMub2JqZWN0cy5wdXNoKGUpfXNldChlLHQpe3RoaXMubGVuZ3RoKz10Lmxlbmd0aC10aGlzLm9iamVjdHNbZV0ubGVuZ3RoO3RoaXMub2JqZWN0c1tlXT10fWdldChlKXtyZXR1cm4gdGhpcy5vYmplY3RzW2VdfWdldCBjb3VudCgpe3JldHVybiB0aGlzLm9iamVjdHMubGVuZ3RofX1jbGFzcyBDRkZEaWN0e2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5rZXlUb05hbWVNYXA9ZS5rZXlUb05hbWVNYXA7dGhpcy5uYW1lVG9LZXlNYXA9ZS5uYW1lVG9LZXlNYXA7dGhpcy5kZWZhdWx0cz1lLmRlZmF1bHRzO3RoaXMudHlwZXM9ZS50eXBlczt0aGlzLm9wY29kZXM9ZS5vcGNvZGVzO3RoaXMub3JkZXI9ZS5vcmRlcjt0aGlzLnN0cmluZ3M9dDt0aGlzLnZhbHVlcz1PYmplY3QuY3JlYXRlKG51bGwpfXNldEJ5S2V5KGUsdCl7aWYoIShlIGluIHRoaXMua2V5VG9OYW1lTWFwKSlyZXR1cm4hMTtpZigwPT09dC5sZW5ndGgpcmV0dXJuITA7Zm9yKGNvbnN0IGkgb2YgdClpZihpc05hTihpKSl7d2FybihgSW52YWxpZCBDRkZEaWN0IHZhbHVlOiAiJHt0fSIgZm9yIGtleSAiJHtlfSIuYCk7cmV0dXJuITB9Y29uc3QgaT10aGlzLnR5cGVzW2VdOyJudW0iIT09aSYmInNpZCIhPT1pJiYib2Zmc2V0IiE9PWl8fCh0PXRbMF0pO3RoaXMudmFsdWVzW2VdPXQ7cmV0dXJuITB9c2V0QnlOYW1lKGUsdCl7aWYoIShlIGluIHRoaXMubmFtZVRvS2V5TWFwKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEludmFsaWQgZGljdGlvbmFyeSBuYW1lICIke2V9ImApO3RoaXMudmFsdWVzW3RoaXMubmFtZVRvS2V5TWFwW2VdXT10fWhhc05hbWUoZSl7cmV0dXJuIHRoaXMubmFtZVRvS2V5TWFwW2VdaW4gdGhpcy52YWx1ZXN9Z2V0QnlOYW1lKGUpe2lmKCEoZSBpbiB0aGlzLm5hbWVUb0tleU1hcCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkIGRpY3Rpb25hcnkgbmFtZSAke2V9ImApO2NvbnN0IHQ9dGhpcy5uYW1lVG9LZXlNYXBbZV07cmV0dXJuIHQgaW4gdGhpcy52YWx1ZXM/dGhpcy52YWx1ZXNbdF06dGhpcy5kZWZhdWx0c1t0XX1yZW1vdmVCeU5hbWUoZSl7ZGVsZXRlIHRoaXMudmFsdWVzW3RoaXMubmFtZVRvS2V5TWFwW2VdXX1zdGF0aWMgY3JlYXRlVGFibGVzKGUpe2NvbnN0IHQ9e2tleVRvTmFtZU1hcDp7fSxuYW1lVG9LZXlNYXA6e30sZGVmYXVsdHM6e30sdHlwZXM6e30sb3Bjb2Rlczp7fSxvcmRlcjpbXX07Zm9yKGNvbnN0IGkgb2YgZSl7Y29uc3QgZT1BcnJheS5pc0FycmF5KGlbMF0pPyhpWzBdWzBdPDw4KStpWzBdWzFdOmlbMF07dC5rZXlUb05hbWVNYXBbZV09aVsxXTt0Lm5hbWVUb0tleU1hcFtpWzFdXT1lO3QudHlwZXNbZV09aVsyXTt0LmRlZmF1bHRzW2VdPWlbM107dC5vcGNvZGVzW2VdPUFycmF5LmlzQXJyYXkoaVswXSk/aVswXTpbaVswXV07dC5vcmRlci5wdXNoKGUpfXJldHVybiB0fX1jb25zdCB4aT1bW1sxMiwzMF0sIlJPUyIsWyJzaWQiLCJzaWQiLCJudW0iXSxudWxsXSxbWzEyLDIwXSwiU3ludGhldGljQmFzZSIsIm51bSIsbnVsbF0sWzAsInZlcnNpb24iLCJzaWQiLG51bGxdLFsxLCJOb3RpY2UiLCJzaWQiLG51bGxdLFtbMTIsMF0sIkNvcHlyaWdodCIsInNpZCIsbnVsbF0sWzIsIkZ1bGxOYW1lIiwic2lkIixudWxsXSxbMywiRmFtaWx5TmFtZSIsInNpZCIsbnVsbF0sWzQsIldlaWdodCIsInNpZCIsbnVsbF0sW1sxMiwxXSwiaXNGaXhlZFBpdGNoIiwibnVtIiwwXSxbWzEyLDJdLCJJdGFsaWNBbmdsZSIsIm51bSIsMF0sW1sxMiwzXSwiVW5kZXJsaW5lUG9zaXRpb24iLCJudW0iLC0xMDBdLFtbMTIsNF0sIlVuZGVybGluZVRoaWNrbmVzcyIsIm51bSIsNTBdLFtbMTIsNV0sIlBhaW50VHlwZSIsIm51bSIsMF0sW1sxMiw2XSwiQ2hhcnN0cmluZ1R5cGUiLCJudW0iLDJdLFtbMTIsN10sIkZvbnRNYXRyaXgiLFsibnVtIiwibnVtIiwibnVtIiwibnVtIiwibnVtIiwibnVtIl0sWy4wMDEsMCwwLC4wMDEsMCwwXV0sWzEzLCJVbmlxdWVJRCIsIm51bSIsbnVsbF0sWzUsIkZvbnRCQm94IixbIm51bSIsIm51bSIsIm51bSIsIm51bSJdLFswLDAsMCwwXV0sW1sxMiw4XSwiU3Ryb2tlV2lkdGgiLCJudW0iLDBdLFsxNCwiWFVJRCIsImFycmF5IixudWxsXSxbMTUsImNoYXJzZXQiLCJvZmZzZXQiLDBdLFsxNiwiRW5jb2RpbmciLCJvZmZzZXQiLDBdLFsxNywiQ2hhclN0cmluZ3MiLCJvZmZzZXQiLDBdLFsxOCwiUHJpdmF0ZSIsWyJvZmZzZXQiLCJvZmZzZXQiXSxudWxsXSxbWzEyLDIxXSwiUG9zdFNjcmlwdCIsInNpZCIsbnVsbF0sW1sxMiwyMl0sIkJhc2VGb250TmFtZSIsInNpZCIsbnVsbF0sW1sxMiwyM10sIkJhc2VGb250QmxlbmQiLCJkZWx0YSIsbnVsbF0sW1sxMiwzMV0sIkNJREZvbnRWZXJzaW9uIiwibnVtIiwwXSxbWzEyLDMyXSwiQ0lERm9udFJldmlzaW9uIiwibnVtIiwwXSxbWzEyLDMzXSwiQ0lERm9udFR5cGUiLCJudW0iLDBdLFtbMTIsMzRdLCJDSURDb3VudCIsIm51bSIsODcyMF0sW1sxMiwzNV0sIlVJREJhc2UiLCJudW0iLG51bGxdLFtbMTIsMzddLCJGRFNlbGVjdCIsIm9mZnNldCIsbnVsbF0sW1sxMiwzNl0sIkZEQXJyYXkiLCJvZmZzZXQiLG51bGxdLFtbMTIsMzhdLCJGb250TmFtZSIsInNpZCIsbnVsbF1dO2NsYXNzIENGRlRvcERpY3QgZXh0ZW5kcyBDRkZEaWN0e3N0YXRpYyBnZXQgdGFibGVzKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJ0YWJsZXMiLHRoaXMuY3JlYXRlVGFibGVzKHhpKSl9Y29uc3RydWN0b3IoZSl7c3VwZXIoQ0ZGVG9wRGljdC50YWJsZXMsZSk7dGhpcy5wcml2YXRlRGljdD1udWxsfX1jb25zdCBNaT1bWzYsIkJsdWVWYWx1ZXMiLCJkZWx0YSIsbnVsbF0sWzcsIk90aGVyQmx1ZXMiLCJkZWx0YSIsbnVsbF0sWzgsIkZhbWlseUJsdWVzIiwiZGVsdGEiLG51bGxdLFs5LCJGYW1pbHlPdGhlckJsdWVzIiwiZGVsdGEiLG51bGxdLFtbMTIsOV0sIkJsdWVTY2FsZSIsIm51bSIsLjAzOTYyNV0sW1sxMiwxMF0sIkJsdWVTaGlmdCIsIm51bSIsN10sW1sxMiwxMV0sIkJsdWVGdXp6IiwibnVtIiwxXSxbMTAsIlN0ZEhXIiwibnVtIixudWxsXSxbMTEsIlN0ZFZXIiwibnVtIixudWxsXSxbWzEyLDEyXSwiU3RlbVNuYXBIIiwiZGVsdGEiLG51bGxdLFtbMTIsMTNdLCJTdGVtU25hcFYiLCJkZWx0YSIsbnVsbF0sW1sxMiwxNF0sIkZvcmNlQm9sZCIsIm51bSIsMF0sW1sxMiwxN10sIkxhbmd1YWdlR3JvdXAiLCJudW0iLDBdLFtbMTIsMThdLCJFeHBhbnNpb25GYWN0b3IiLCJudW0iLC4wNl0sW1sxMiwxOV0sImluaXRpYWxSYW5kb21TZWVkIiwibnVtIiwwXSxbMjAsImRlZmF1bHRXaWR0aFgiLCJudW0iLDBdLFsyMSwibm9taW5hbFdpZHRoWCIsIm51bSIsMF0sWzE5LCJTdWJycyIsIm9mZnNldCIsbnVsbF1dO2NsYXNzIENGRlByaXZhdGVEaWN0IGV4dGVuZHMgQ0ZGRGljdHtzdGF0aWMgZ2V0IHRhYmxlcygpe3JldHVybiBzaGFkb3codGhpcywidGFibGVzIix0aGlzLmNyZWF0ZVRhYmxlcyhNaSkpfWNvbnN0cnVjdG9yKGUpe3N1cGVyKENGRlByaXZhdGVEaWN0LnRhYmxlcyxlKTt0aGlzLnN1YnJzSW5kZXg9bnVsbH19Y29uc3QgSGk9e0lTT19BRE9CRTowLEVYUEVSVDoxLEVYUEVSVF9TVUJTRVQ6Mn07Y2xhc3MgQ0ZGQ2hhcnNldHtjb25zdHJ1Y3RvcihlLHQsaSxhKXt0aGlzLnByZWRlZmluZWQ9ZTt0aGlzLmZvcm1hdD10O3RoaXMuY2hhcnNldD1pO3RoaXMucmF3PWF9fWNsYXNzIENGRkVuY29kaW5ne2NvbnN0cnVjdG9yKGUsdCxpLGEpe3RoaXMucHJlZGVmaW5lZD1lO3RoaXMuZm9ybWF0PXQ7dGhpcy5lbmNvZGluZz1pO3RoaXMucmF3PWF9fWNsYXNzIENGRkZEU2VsZWN0e2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5mb3JtYXQ9ZTt0aGlzLmZkU2VsZWN0PXR9Z2V0RkRJbmRleChlKXtyZXR1cm4gZTwwfHxlPj10aGlzLmZkU2VsZWN0Lmxlbmd0aD8tMTp0aGlzLmZkU2VsZWN0W2VdfX1jbGFzcyBDRkZPZmZzZXRUcmFja2Vye2NvbnN0cnVjdG9yKCl7dGhpcy5vZmZzZXRzPU9iamVjdC5jcmVhdGUobnVsbCl9aXNUcmFja2luZyhlKXtyZXR1cm4gZSBpbiB0aGlzLm9mZnNldHN9dHJhY2soZSx0KXtpZihlIGluIHRoaXMub2Zmc2V0cyl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEFscmVhZHkgdHJhY2tpbmcgbG9jYXRpb24gb2YgJHtlfWApO3RoaXMub2Zmc2V0c1tlXT10fW9mZnNldChlKXtmb3IoY29uc3QgdCBpbiB0aGlzLm9mZnNldHMpdGhpcy5vZmZzZXRzW3RdKz1lfXNldEVudHJ5TG9jYXRpb24oZSx0LGkpe2lmKCEoZSBpbiB0aGlzLm9mZnNldHMpKXRocm93IG5ldyBGb3JtYXRFcnJvcihgTm90IHRyYWNraW5nIGxvY2F0aW9uIG9mICR7ZX1gKTtjb25zdCBhPWkuZGF0YSxyPXRoaXMub2Zmc2V0c1tlXTtmb3IobGV0IGU9MCxpPXQubGVuZ3RoO2U8aTsrK2Upe2NvbnN0IGk9NSplK3Iscz1pKzEsbj1pKzIsbz1pKzMsZz1pKzQ7aWYoMjkhPT1hW2ldfHwwIT09YVtzXXx8MCE9PWFbbl18fDAhPT1hW29dfHwwIT09YVtnXSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIndyaXRpbmcgdG8gYW4gb2Zmc2V0IHRoYXQgaXMgbm90IGVtcHR5Iik7Y29uc3QgYz10W2VdO2FbaV09Mjk7YVtzXT1jPj4yNCYyNTU7YVtuXT1jPj4xNiYyNTU7YVtvXT1jPj44JjI1NTthW2ddPTI1NSZjfX19Y2xhc3MgQ0ZGQ29tcGlsZXJ7Y29uc3RydWN0b3IoZSl7dGhpcy5jZmY9ZX1jb21waWxlKCl7Y29uc3QgZT10aGlzLmNmZix0PXtkYXRhOltdLGxlbmd0aDowLGFkZChlKXt0cnl7dGhpcy5kYXRhLnB1c2goLi4uZSl9Y2F0Y2h7dGhpcy5kYXRhPXRoaXMuZGF0YS5jb25jYXQoZSl9dGhpcy5sZW5ndGg9dGhpcy5kYXRhLmxlbmd0aH19LGk9dGhpcy5jb21waWxlSGVhZGVyKGUuaGVhZGVyKTt0LmFkZChpKTtjb25zdCBhPXRoaXMuY29tcGlsZU5hbWVJbmRleChlLm5hbWVzKTt0LmFkZChhKTtpZihlLmlzQ0lERm9udCYmZS50b3BEaWN0Lmhhc05hbWUoIkZvbnRNYXRyaXgiKSl7Y29uc3QgdD1lLnRvcERpY3QuZ2V0QnlOYW1lKCJGb250TWF0cml4Iik7ZS50b3BEaWN0LnJlbW92ZUJ5TmFtZSgiRm9udE1hdHJpeCIpO2Zvcihjb25zdCBpIG9mIGUuZmRBcnJheSl7bGV0IGU9dC5zbGljZSgwKTtpLmhhc05hbWUoIkZvbnRNYXRyaXgiKSYmKGU9VXRpbC50cmFuc2Zvcm0oZSxpLmdldEJ5TmFtZSgiRm9udE1hdHJpeCIpKSk7aS5zZXRCeU5hbWUoIkZvbnRNYXRyaXgiLGUpfX1jb25zdCByPWUudG9wRGljdC5nZXRCeU5hbWUoIlhVSUQiKTtyPy5sZW5ndGg+MTYmJmUudG9wRGljdC5yZW1vdmVCeU5hbWUoIlhVSUQiKTtlLnRvcERpY3Quc2V0QnlOYW1lKCJjaGFyc2V0IiwwKTtsZXQgcz10aGlzLmNvbXBpbGVUb3BEaWN0cyhbZS50b3BEaWN0XSx0Lmxlbmd0aCxlLmlzQ0lERm9udCk7dC5hZGQocy5vdXRwdXQpO2NvbnN0IG49cy50cmFja2Vyc1swXSxvPXRoaXMuY29tcGlsZVN0cmluZ0luZGV4KGUuc3RyaW5ncy5zdHJpbmdzKTt0LmFkZChvKTtjb25zdCBnPXRoaXMuY29tcGlsZUluZGV4KGUuZ2xvYmFsU3VickluZGV4KTt0LmFkZChnKTtpZihlLmVuY29kaW5nJiZlLnRvcERpY3QuaGFzTmFtZSgiRW5jb2RpbmciKSlpZihlLmVuY29kaW5nLnByZWRlZmluZWQpbi5zZXRFbnRyeUxvY2F0aW9uKCJFbmNvZGluZyIsW2UuZW5jb2RpbmcuZm9ybWF0XSx0KTtlbHNle2NvbnN0IGk9dGhpcy5jb21waWxlRW5jb2RpbmcoZS5lbmNvZGluZyk7bi5zZXRFbnRyeUxvY2F0aW9uKCJFbmNvZGluZyIsW3QubGVuZ3RoXSx0KTt0LmFkZChpKX1jb25zdCBjPXRoaXMuY29tcGlsZUNoYXJzZXQoZS5jaGFyc2V0LGUuY2hhclN0cmluZ3MuY291bnQsZS5zdHJpbmdzLGUuaXNDSURGb250KTtuLnNldEVudHJ5TG9jYXRpb24oImNoYXJzZXQiLFt0Lmxlbmd0aF0sdCk7dC5hZGQoYyk7Y29uc3QgQz10aGlzLmNvbXBpbGVDaGFyU3RyaW5ncyhlLmNoYXJTdHJpbmdzKTtuLnNldEVudHJ5TG9jYXRpb24oIkNoYXJTdHJpbmdzIixbdC5sZW5ndGhdLHQpO3QuYWRkKEMpO2lmKGUuaXNDSURGb250KXtuLnNldEVudHJ5TG9jYXRpb24oIkZEU2VsZWN0IixbdC5sZW5ndGhdLHQpO2NvbnN0IGk9dGhpcy5jb21waWxlRkRTZWxlY3QoZS5mZFNlbGVjdCk7dC5hZGQoaSk7cz10aGlzLmNvbXBpbGVUb3BEaWN0cyhlLmZkQXJyYXksdC5sZW5ndGgsITApO24uc2V0RW50cnlMb2NhdGlvbigiRkRBcnJheSIsW3QubGVuZ3RoXSx0KTt0LmFkZChzLm91dHB1dCk7Y29uc3QgYT1zLnRyYWNrZXJzO3RoaXMuY29tcGlsZVByaXZhdGVEaWN0cyhlLmZkQXJyYXksYSx0KX10aGlzLmNvbXBpbGVQcml2YXRlRGljdHMoW2UudG9wRGljdF0sW25dLHQpO3QuYWRkKFswXSk7cmV0dXJuIHQuZGF0YX1lbmNvZGVOdW1iZXIoZSl7cmV0dXJuIE51bWJlci5pc0ludGVnZXIoZSk/dGhpcy5lbmNvZGVJbnRlZ2VyKGUpOnRoaXMuZW5jb2RlRmxvYXQoZSl9c3RhdGljIGdldCBFbmNvZGVGbG9hdFJlZ0V4cCgpe3JldHVybiBzaGFkb3codGhpcywiRW5jb2RlRmxvYXRSZWdFeHAiLC9cLihcZCo/KSg/Ojl7NSwyMH18MHs1LDIwfSlcZHswLDJ9KD86ZSguKyl8JCkvKX1lbmNvZGVGbG9hdChlKXtsZXQgdD1lLnRvU3RyaW5nKCk7Y29uc3QgaT1DRkZDb21waWxlci5FbmNvZGVGbG9hdFJlZ0V4cC5leGVjKHQpO2lmKGkpe2NvbnN0IGE9cGFyc2VGbG9hdCgiMWUiKygoaVsyXT8raVsyXTowKStpWzFdLmxlbmd0aCkpO3Q9KE1hdGgucm91bmQoZSphKS9hKS50b1N0cmluZygpfWxldCBhLHIscz0iIjtmb3IoYT0wLHI9dC5sZW5ndGg7YTxyOysrYSl7Y29uc3QgZT10W2FdO3MrPSJlIj09PWU/Ii0iPT09dFsrK2FdPyJjIjoiYiI6Ii4iPT09ZT8iYSI6Ii0iPT09ZT8iZSI6ZX1zKz0xJnMubGVuZ3RoPyJmIjoiZmYiO2NvbnN0IG49WzMwXTtmb3IoYT0wLHI9cy5sZW5ndGg7YTxyO2ErPTIpbi5wdXNoKHBhcnNlSW50KHMuc3Vic3RyaW5nKGEsYSsyKSwxNikpO3JldHVybiBufWVuY29kZUludGVnZXIoZSl7bGV0IHQ7dD1lPj0tMTA3JiZlPD0xMDc/W2UrMTM5XTplPj0xMDgmJmU8PTExMzE/WzI0NysoKGUtPTEwOCk+PjgpLDI1NSZlXTplPj0tMTEzMSYmZTw9LTEwOD9bMjUxKygoZT0tZS0xMDgpPj44KSwyNTUmZV06ZT49LTMyNzY4JiZlPD0zMjc2Nz9bMjgsZT4+OCYyNTUsMjU1JmVdOlsyOSxlPj4yNCYyNTUsZT4+MTYmMjU1LGU+PjgmMjU1LDI1NSZlXTtyZXR1cm4gdH1jb21waWxlSGVhZGVyKGUpe3JldHVybltlLm1ham9yLGUubWlub3IsNCxlLm9mZlNpemVdfWNvbXBpbGVOYW1lSW5kZXgoZSl7Y29uc3QgdD1uZXcgQ0ZGSW5kZXg7Zm9yKGNvbnN0IGkgb2YgZSl7Y29uc3QgZT1NYXRoLm1pbihpLmxlbmd0aCwxMjcpO2xldCBhPW5ldyBBcnJheShlKTtmb3IobGV0IHQ9MDt0PGU7dCsrKXtsZXQgZT1pW3RdOyhlPCIhInx8ZT4ifiJ8fCJbIj09PWV8fCJdIj09PWV8fCIoIj09PWV8fCIpIj09PWV8fCJ7Ij09PWV8fCJ9Ij09PWV8fCI8Ij09PWV8fCI+Ij09PWV8fCIvIj09PWV8fCIlIj09PWUpJiYoZT0iXyIpO2FbdF09ZX1hPWEuam9pbigiIik7IiI9PT1hJiYoYT0iQmFkX0ZvbnRfTmFtZSIpO3QuYWRkKHN0cmluZ1RvQnl0ZXMoYSkpfXJldHVybiB0aGlzLmNvbXBpbGVJbmRleCh0KX1jb21waWxlVG9wRGljdHMoZSx0LGkpe2NvbnN0IGE9W107bGV0IHI9bmV3IENGRkluZGV4O2Zvcihjb25zdCBzIG9mIGUpe2lmKGkpe3MucmVtb3ZlQnlOYW1lKCJDSURGb250VmVyc2lvbiIpO3MucmVtb3ZlQnlOYW1lKCJDSURGb250UmV2aXNpb24iKTtzLnJlbW92ZUJ5TmFtZSgiQ0lERm9udFR5cGUiKTtzLnJlbW92ZUJ5TmFtZSgiQ0lEQ291bnQiKTtzLnJlbW92ZUJ5TmFtZSgiVUlEQmFzZSIpfWNvbnN0IGU9bmV3IENGRk9mZnNldFRyYWNrZXIsbj10aGlzLmNvbXBpbGVEaWN0KHMsZSk7YS5wdXNoKGUpO3IuYWRkKG4pO2Uub2Zmc2V0KHQpfXI9dGhpcy5jb21waWxlSW5kZXgocixhKTtyZXR1cm57dHJhY2tlcnM6YSxvdXRwdXQ6cn19Y29tcGlsZVByaXZhdGVEaWN0cyhlLHQsaSl7Zm9yKGxldCBhPTAscj1lLmxlbmd0aDthPHI7KythKXtjb25zdCByPWVbYV0scz1yLnByaXZhdGVEaWN0O2lmKCFzfHwhci5oYXNOYW1lKCJQcml2YXRlIikpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJUaGVyZSBtdXN0IGJlIGEgcHJpdmF0ZSBkaWN0aW9uYXJ5LiIpO2NvbnN0IG49bmV3IENGRk9mZnNldFRyYWNrZXIsbz10aGlzLmNvbXBpbGVEaWN0KHMsbik7bGV0IGc9aS5sZW5ndGg7bi5vZmZzZXQoZyk7by5sZW5ndGh8fChnPTApO3RbYV0uc2V0RW50cnlMb2NhdGlvbigiUHJpdmF0ZSIsW28ubGVuZ3RoLGddLGkpO2kuYWRkKG8pO2lmKHMuc3VicnNJbmRleCYmcy5oYXNOYW1lKCJTdWJycyIpKXtjb25zdCBlPXRoaXMuY29tcGlsZUluZGV4KHMuc3VicnNJbmRleCk7bi5zZXRFbnRyeUxvY2F0aW9uKCJTdWJycyIsW28ubGVuZ3RoXSxpKTtpLmFkZChlKX19fWNvbXBpbGVEaWN0KGUsdCl7Y29uc3QgaT1bXTtmb3IoY29uc3QgYSBvZiBlLm9yZGVyKXtpZighKGEgaW4gZS52YWx1ZXMpKWNvbnRpbnVlO2xldCByPWUudmFsdWVzW2FdLHM9ZS50eXBlc1thXTtBcnJheS5pc0FycmF5KHMpfHwocz1bc10pO0FycmF5LmlzQXJyYXkocil8fChyPVtyXSk7aWYoMCE9PXIubGVuZ3RoKXtmb3IobGV0IG49MCxvPXMubGVuZ3RoO248bzsrK24pe2NvbnN0IG89c1tuXSxnPXJbbl07c3dpdGNoKG8pe2Nhc2UibnVtIjpjYXNlInNpZCI6aS5wdXNoKC4uLnRoaXMuZW5jb2RlTnVtYmVyKGcpKTticmVhaztjYXNlIm9mZnNldCI6Y29uc3Qgcz1lLmtleVRvTmFtZU1hcFthXTt0LmlzVHJhY2tpbmcocyl8fHQudHJhY2socyxpLmxlbmd0aCk7aS5wdXNoKDI5LDAsMCwwLDApO2JyZWFrO2Nhc2UiYXJyYXkiOmNhc2UiZGVsdGEiOmkucHVzaCguLi50aGlzLmVuY29kZU51bWJlcihnKSk7Zm9yKGxldCBlPTEsdD1yLmxlbmd0aDtlPHQ7KytlKWkucHVzaCguLi50aGlzLmVuY29kZU51bWJlcihyW2VdKSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYFVua25vd24gZGF0YSB0eXBlIG9mICR7b31gKX19aS5wdXNoKC4uLmUub3Bjb2Rlc1thXSl9fXJldHVybiBpfWNvbXBpbGVTdHJpbmdJbmRleChlKXtjb25zdCB0PW5ldyBDRkZJbmRleDtmb3IoY29uc3QgaSBvZiBlKXQuYWRkKHN0cmluZ1RvQnl0ZXMoaSkpO3JldHVybiB0aGlzLmNvbXBpbGVJbmRleCh0KX1jb21waWxlQ2hhclN0cmluZ3MoZSl7Y29uc3QgdD1uZXcgQ0ZGSW5kZXg7Zm9yKGxldCBpPTA7aTxlLmNvdW50O2krKyl7Y29uc3QgYT1lLmdldChpKTswIT09YS5sZW5ndGg/dC5hZGQoYSk6dC5hZGQobmV3IFVpbnQ4QXJyYXkoWzEzOSwxNF0pKX1yZXR1cm4gdGhpcy5jb21waWxlSW5kZXgodCl9Y29tcGlsZUNoYXJzZXQoZSx0LGksYSl7bGV0IHI7Y29uc3Qgcz10LTE7aWYoYSlyPW5ldyBVaW50OEFycmF5KFsyLDAsMCxzPj44JjI1NSwyNTUmc10pO2Vsc2V7cj1uZXcgVWludDhBcnJheSgxKzIqcyk7clswXT0wO2xldCB0PTA7Y29uc3QgYT1lLmNoYXJzZXQubGVuZ3RoO2xldCBuPSExO2ZvcihsZXQgcz0xO3M8ci5sZW5ndGg7cys9Mil7bGV0IG89MDtpZih0PGEpe2NvbnN0IGE9ZS5jaGFyc2V0W3QrK107bz1pLmdldFNJRChhKTtpZigtMT09PW8pe289MDtpZighbil7bj0hMDt3YXJuKGBDb3VsZG4ndCBmaW5kICR7YX0gaW4gQ0ZGIHN0cmluZ3NgKX19fXJbc109bz4+OCYyNTU7cltzKzFdPTI1NSZvfX1yZXR1cm4gdGhpcy5jb21waWxlVHlwZWRBcnJheShyKX1jb21waWxlRW5jb2RpbmcoZSl7cmV0dXJuIHRoaXMuY29tcGlsZVR5cGVkQXJyYXkoZS5yYXcpfWNvbXBpbGVGRFNlbGVjdChlKXtjb25zdCB0PWUuZm9ybWF0O2xldCBpLGE7c3dpdGNoKHQpe2Nhc2UgMDppPW5ldyBVaW50OEFycmF5KDErZS5mZFNlbGVjdC5sZW5ndGgpO2lbMF09dDtmb3IoYT0wO2E8ZS5mZFNlbGVjdC5sZW5ndGg7YSsrKWlbYSsxXT1lLmZkU2VsZWN0W2FdO2JyZWFrO2Nhc2UgMzpjb25zdCByPTA7bGV0IHM9ZS5mZFNlbGVjdFswXTtjb25zdCBuPVt0LDAsMCxyPj44JjI1NSwyNTUmcixzXTtmb3IoYT0xO2E8ZS5mZFNlbGVjdC5sZW5ndGg7YSsrKXtjb25zdCB0PWUuZmRTZWxlY3RbYV07aWYodCE9PXMpe24ucHVzaChhPj44JjI1NSwyNTUmYSx0KTtzPXR9fWNvbnN0IG89KG4ubGVuZ3RoLTMpLzM7blsxXT1vPj44JjI1NTtuWzJdPTI1NSZvO24ucHVzaChhPj44JjI1NSwyNTUmYSk7aT1uZXcgVWludDhBcnJheShuKX1yZXR1cm4gdGhpcy5jb21waWxlVHlwZWRBcnJheShpKX1jb21waWxlVHlwZWRBcnJheShlKXtyZXR1cm4gQXJyYXkuZnJvbShlKX1jb21waWxlSW5kZXgoZSx0PVtdKXtjb25zdCBpPWUub2JqZWN0cyxhPWkubGVuZ3RoO2lmKDA9PT1hKXJldHVyblswLDBdO2NvbnN0IHI9W2E+PjgmMjU1LDI1NSZhXTtsZXQgcyxuLG89MTtmb3Iocz0wO3M8YTsrK3Mpbys9aVtzXS5sZW5ndGg7bj1vPDI1Nj8xOm88NjU1MzY/MjpvPDE2Nzc3MjE2PzM6NDtyLnB1c2gobik7bGV0IGc9MTtmb3Iocz0wO3M8YSsxO3MrKyl7MT09PW4/ci5wdXNoKDI1NSZnKToyPT09bj9yLnB1c2goZz4+OCYyNTUsMjU1JmcpOjM9PT1uP3IucHVzaChnPj4xNiYyNTUsZz4+OCYyNTUsMjU1JmcpOnIucHVzaChnPj4+MjQmMjU1LGc+PjE2JjI1NSxnPj44JjI1NSwyNTUmZyk7aVtzXSYmKGcrPWlbc10ubGVuZ3RoKX1mb3Iocz0wO3M8YTtzKyspe3Rbc10mJnRbc10ub2Zmc2V0KHIubGVuZ3RoKTtyLnB1c2goLi4uaVtzXSl9cmV0dXJuIHJ9fWNvbnN0IEppPWdldExvb2t1cFRhYmxlRmFjdG9yeSgoZnVuY3Rpb24oZSl7ZS5BPTY1O2UuQUU9MTk4O2UuQUVhY3V0ZT01MDg7ZS5BRW1hY3Jvbj00ODI7ZS5BRXNtYWxsPTYzNDYyO2UuQWFjdXRlPTE5MztlLkFhY3V0ZXNtYWxsPTYzNDU3O2UuQWJyZXZlPTI1ODtlLkFicmV2ZWFjdXRlPTc4NTQ7ZS5BYnJldmVjeXJpbGxpYz0xMjMyO2UuQWJyZXZlZG90YmVsb3c9Nzg2MjtlLkFicmV2ZWdyYXZlPTc4NTY7ZS5BYnJldmVob29rYWJvdmU9Nzg1ODtlLkFicmV2ZXRpbGRlPTc4NjA7ZS5BY2Fyb249NDYxO2UuQWNpcmNsZT05Mzk4O2UuQWNpcmN1bWZsZXg9MTk0O2UuQWNpcmN1bWZsZXhhY3V0ZT03ODQ0O2UuQWNpcmN1bWZsZXhkb3RiZWxvdz03ODUyO2UuQWNpcmN1bWZsZXhncmF2ZT03ODQ2O2UuQWNpcmN1bWZsZXhob29rYWJvdmU9Nzg0ODtlLkFjaXJjdW1mbGV4c21hbGw9NjM0NTg7ZS5BY2lyY3VtZmxleHRpbGRlPTc4NTA7ZS5BY3V0ZT02MzE3NztlLkFjdXRlc21hbGw9NjM0MTI7ZS5BY3lyaWxsaWM9MTA0MDtlLkFkYmxncmF2ZT01MTI7ZS5BZGllcmVzaXM9MTk2O2UuQWRpZXJlc2lzY3lyaWxsaWM9MTIzNDtlLkFkaWVyZXNpc21hY3Jvbj00Nzg7ZS5BZGllcmVzaXNzbWFsbD02MzQ2MDtlLkFkb3RiZWxvdz03ODQwO2UuQWRvdG1hY3Jvbj00ODA7ZS5BZ3JhdmU9MTkyO2UuQWdyYXZlc21hbGw9NjM0NTY7ZS5BaG9va2Fib3ZlPTc4NDI7ZS5BaWVjeXJpbGxpYz0xMjM2O2UuQWludmVydGVkYnJldmU9NTE0O2UuQWxwaGE9OTEzO2UuQWxwaGF0b25vcz05MDI7ZS5BbWFjcm9uPTI1NjtlLkFtb25vc3BhY2U9NjUzMTM7ZS5Bb2dvbmVrPTI2MDtlLkFyaW5nPTE5NztlLkFyaW5nYWN1dGU9NTA2O2UuQXJpbmdiZWxvdz03NjgwO2UuQXJpbmdzbWFsbD02MzQ2MTtlLkFzbWFsbD02MzMyOTtlLkF0aWxkZT0xOTU7ZS5BdGlsZGVzbWFsbD02MzQ1OTtlLkF5YmFybWVuaWFuPTEzMjk7ZS5CPTY2O2UuQmNpcmNsZT05Mzk5O2UuQmRvdGFjY2VudD03NjgyO2UuQmRvdGJlbG93PTc2ODQ7ZS5CZWN5cmlsbGljPTEwNDE7ZS5CZW5hcm1lbmlhbj0xMzMwO2UuQmV0YT05MTQ7ZS5CaG9vaz0zODU7ZS5CbGluZWJlbG93PTc2ODY7ZS5CbW9ub3NwYWNlPTY1MzE0O2UuQnJldmVzbWFsbD02MzIyMDtlLkJzbWFsbD02MzMzMDtlLkJ0b3BiYXI9Mzg2O2UuQz02NztlLkNhYXJtZW5pYW49MTM0MjtlLkNhY3V0ZT0yNjI7ZS5DYXJvbj02MzE3ODtlLkNhcm9uc21hbGw9NjMyMjE7ZS5DY2Fyb249MjY4O2UuQ2NlZGlsbGE9MTk5O2UuQ2NlZGlsbGFhY3V0ZT03Njg4O2UuQ2NlZGlsbGFzbWFsbD02MzQ2MztlLkNjaXJjbGU9OTQwMDtlLkNjaXJjdW1mbGV4PTI2NDtlLkNkb3Q9MjY2O2UuQ2RvdGFjY2VudD0yNjY7ZS5DZWRpbGxhc21hbGw9NjM0MTY7ZS5DaGFhcm1lbmlhbj0xMzUzO2UuQ2hlYWJraGFzaWFuY3lyaWxsaWM9MTIxMjtlLkNoZWN5cmlsbGljPTEwNjM7ZS5DaGVkZXNjZW5kZXJhYmtoYXNpYW5jeXJpbGxpYz0xMjE0O2UuQ2hlZGVzY2VuZGVyY3lyaWxsaWM9MTIwNjtlLkNoZWRpZXJlc2lzY3lyaWxsaWM9MTI2ODtlLkNoZWhhcm1lbmlhbj0xMzQ3O2UuQ2hla2hha2Fzc2lhbmN5cmlsbGljPTEyMjc7ZS5DaGV2ZXJ0aWNhbHN0cm9rZWN5cmlsbGljPTEyMDg7ZS5DaGk9OTM1O2UuQ2hvb2s9MzkxO2UuQ2lyY3VtZmxleHNtYWxsPTYzMjIyO2UuQ21vbm9zcGFjZT02NTMxNTtlLkNvYXJtZW5pYW49MTM2MTtlLkNzbWFsbD02MzMzMTtlLkQ9Njg7ZS5EWj00OTc7ZS5EWmNhcm9uPTQ1MjtlLkRhYXJtZW5pYW49MTMzMjtlLkRhZnJpY2FuPTM5MztlLkRjYXJvbj0yNzA7ZS5EY2VkaWxsYT03Njk2O2UuRGNpcmNsZT05NDAxO2UuRGNpcmN1bWZsZXhiZWxvdz03Njk4O2UuRGNyb2F0PTI3MjtlLkRkb3RhY2NlbnQ9NzY5MDtlLkRkb3RiZWxvdz03NjkyO2UuRGVjeXJpbGxpYz0xMDQ0O2UuRGVpY29wdGljPTEwMDY7ZS5EZWx0YT04NzEwO2UuRGVsdGFncmVlaz05MTY7ZS5EaG9vaz0zOTQ7ZS5EaWVyZXNpcz02MzE3OTtlLkRpZXJlc2lzQWN1dGU9NjMxODA7ZS5EaWVyZXNpc0dyYXZlPTYzMTgxO2UuRGllcmVzaXNzbWFsbD02MzQwMDtlLkRpZ2FtbWFncmVlaz05ODg7ZS5EamVjeXJpbGxpYz0xMDI2O2UuRGxpbmViZWxvdz03Njk0O2UuRG1vbm9zcGFjZT02NTMxNjtlLkRvdGFjY2VudHNtYWxsPTYzMjIzO2UuRHNsYXNoPTI3MjtlLkRzbWFsbD02MzMzMjtlLkR0b3BiYXI9Mzk1O2UuRHo9NDk4O2UuRHpjYXJvbj00NTM7ZS5EemVhYmtoYXNpYW5jeXJpbGxpYz0xMjQ4O2UuRHplY3lyaWxsaWM9MTAyOTtlLkR6aGVjeXJpbGxpYz0xMDM5O2UuRT02OTtlLkVhY3V0ZT0yMDE7ZS5FYWN1dGVzbWFsbD02MzQ2NTtlLkVicmV2ZT0yNzY7ZS5FY2Fyb249MjgyO2UuRWNlZGlsbGFicmV2ZT03NzA4O2UuRWNoYXJtZW5pYW49MTMzMztlLkVjaXJjbGU9OTQwMjtlLkVjaXJjdW1mbGV4PTIwMjtlLkVjaXJjdW1mbGV4YWN1dGU9Nzg3MDtlLkVjaXJjdW1mbGV4YmVsb3c9NzcwNDtlLkVjaXJjdW1mbGV4ZG90YmVsb3c9Nzg3ODtlLkVjaXJjdW1mbGV4Z3JhdmU9Nzg3MjtlLkVjaXJjdW1mbGV4aG9va2Fib3ZlPTc4NzQ7ZS5FY2lyY3VtZmxleHNtYWxsPTYzNDY2O2UuRWNpcmN1bWZsZXh0aWxkZT03ODc2O2UuRWN5cmlsbGljPTEwMjg7ZS5FZGJsZ3JhdmU9NTE2O2UuRWRpZXJlc2lzPTIwMztlLkVkaWVyZXNpc3NtYWxsPTYzNDY3O2UuRWRvdD0yNzg7ZS5FZG90YWNjZW50PTI3ODtlLkVkb3RiZWxvdz03ODY0O2UuRWZjeXJpbGxpYz0xMDYwO2UuRWdyYXZlPTIwMDtlLkVncmF2ZXNtYWxsPTYzNDY0O2UuRWhhcm1lbmlhbj0xMzM1O2UuRWhvb2thYm92ZT03ODY2O2UuRWlnaHRyb21hbj04NTUxO2UuRWludmVydGVkYnJldmU9NTE4O2UuRWlvdGlmaWVkY3lyaWxsaWM9MTEyNDtlLkVsY3lyaWxsaWM9MTA1MTtlLkVsZXZlbnJvbWFuPTg1NTQ7ZS5FbWFjcm9uPTI3NDtlLkVtYWNyb25hY3V0ZT03NzAyO2UuRW1hY3JvbmdyYXZlPTc3MDA7ZS5FbWN5cmlsbGljPTEwNTI7ZS5FbW9ub3NwYWNlPTY1MzE3O2UuRW5jeXJpbGxpYz0xMDUzO2UuRW5kZXNjZW5kZXJjeXJpbGxpYz0xMTg2O2UuRW5nPTMzMDtlLkVuZ2hlY3lyaWxsaWM9MTE4ODtlLkVuaG9va2N5cmlsbGljPTEyMjM7ZS5Fb2dvbmVrPTI4MDtlLkVvcGVuPTQwMDtlLkVwc2lsb249OTE3O2UuRXBzaWxvbnRvbm9zPTkwNDtlLkVyY3lyaWxsaWM9MTA1NjtlLkVyZXZlcnNlZD0zOTg7ZS5FcmV2ZXJzZWRjeXJpbGxpYz0xMDY5O2UuRXNjeXJpbGxpYz0xMDU3O2UuRXNkZXNjZW5kZXJjeXJpbGxpYz0xMTk0O2UuRXNoPTQyNTtlLkVzbWFsbD02MzMzMztlLkV0YT05MTk7ZS5FdGFybWVuaWFuPTEzMzY7ZS5FdGF0b25vcz05MDU7ZS5FdGg9MjA4O2UuRXRoc21hbGw9NjM0NzI7ZS5FdGlsZGU9Nzg2ODtlLkV0aWxkZWJlbG93PTc3MDY7ZS5FdXJvPTgzNjQ7ZS5Femg9NDM5O2UuRXpoY2Fyb249NDk0O2UuRXpocmV2ZXJzZWQ9NDQwO2UuRj03MDtlLkZjaXJjbGU9OTQwMztlLkZkb3RhY2NlbnQ9NzcxMDtlLkZlaGFybWVuaWFuPTEzNjY7ZS5GZWljb3B0aWM9OTk2O2UuRmhvb2s9NDAxO2UuRml0YWN5cmlsbGljPTExMzg7ZS5GaXZlcm9tYW49ODU0ODtlLkZtb25vc3BhY2U9NjUzMTg7ZS5Gb3Vycm9tYW49ODU0NztlLkZzbWFsbD02MzMzNDtlLkc9NzE7ZS5HQnNxdWFyZT0xMzE5MTtlLkdhY3V0ZT01MDA7ZS5HYW1tYT05MTU7ZS5HYW1tYWFmcmljYW49NDA0O2UuR2FuZ2lhY29wdGljPTEwMDI7ZS5HYnJldmU9Mjg2O2UuR2Nhcm9uPTQ4NjtlLkdjZWRpbGxhPTI5MDtlLkdjaXJjbGU9OTQwNDtlLkdjaXJjdW1mbGV4PTI4NDtlLkdjb21tYWFjY2VudD0yOTA7ZS5HZG90PTI4ODtlLkdkb3RhY2NlbnQ9Mjg4O2UuR2VjeXJpbGxpYz0xMDQzO2UuR2hhZGFybWVuaWFuPTEzNDY7ZS5HaGVtaWRkbGVob29rY3lyaWxsaWM9MTE3MjtlLkdoZXN0cm9rZWN5cmlsbGljPTExNzA7ZS5HaGV1cHR1cm5jeXJpbGxpYz0xMTY4O2UuR2hvb2s9NDAzO2UuR2ltYXJtZW5pYW49MTMzMTtlLkdqZWN5cmlsbGljPTEwMjc7ZS5HbWFjcm9uPTc3MTI7ZS5HbW9ub3NwYWNlPTY1MzE5O2UuR3JhdmU9NjMxODI7ZS5HcmF2ZXNtYWxsPTYzMzI4O2UuR3NtYWxsPTYzMzM1O2UuR3NtYWxsaG9vaz02Njc7ZS5Hc3Ryb2tlPTQ4NDtlLkg9NzI7ZS5IMTg1MzM9OTY3OTtlLkgxODU0Mz05NjQyO2UuSDE4NTUxPTk2NDM7ZS5IMjIwNzM9OTYzMztlLkhQc3F1YXJlPTEzMjU5O2UuSGFhYmtoYXNpYW5jeXJpbGxpYz0xMTkyO2UuSGFkZXNjZW5kZXJjeXJpbGxpYz0xMjAyO2UuSGFyZHNpZ25jeXJpbGxpYz0xMDY2O2UuSGJhcj0yOTQ7ZS5IYnJldmViZWxvdz03NzIyO2UuSGNlZGlsbGE9NzcyMDtlLkhjaXJjbGU9OTQwNTtlLkhjaXJjdW1mbGV4PTI5MjtlLkhkaWVyZXNpcz03NzE4O2UuSGRvdGFjY2VudD03NzE0O2UuSGRvdGJlbG93PTc3MTY7ZS5IbW9ub3NwYWNlPTY1MzIwO2UuSG9hcm1lbmlhbj0xMzQ0O2UuSG9yaWNvcHRpYz0xZTM7ZS5Ic21hbGw9NjMzMzY7ZS5IdW5nYXJ1bWxhdXQ9NjMxODM7ZS5IdW5nYXJ1bWxhdXRzbWFsbD02MzIyNDtlLkh6c3F1YXJlPTEzMjAwO2UuST03MztlLklBY3lyaWxsaWM9MTA3MTtlLklKPTMwNjtlLklVY3lyaWxsaWM9MTA3MDtlLklhY3V0ZT0yMDU7ZS5JYWN1dGVzbWFsbD02MzQ2OTtlLklicmV2ZT0zMDA7ZS5JY2Fyb249NDYzO2UuSWNpcmNsZT05NDA2O2UuSWNpcmN1bWZsZXg9MjA2O2UuSWNpcmN1bWZsZXhzbWFsbD02MzQ3MDtlLkljeXJpbGxpYz0xMDMwO2UuSWRibGdyYXZlPTUyMDtlLklkaWVyZXNpcz0yMDc7ZS5JZGllcmVzaXNhY3V0ZT03NzI2O2UuSWRpZXJlc2lzY3lyaWxsaWM9MTI1MjtlLklkaWVyZXNpc3NtYWxsPTYzNDcxO2UuSWRvdD0zMDQ7ZS5JZG90YWNjZW50PTMwNDtlLklkb3RiZWxvdz03ODgyO2UuSWVicmV2ZWN5cmlsbGljPTEyMzg7ZS5JZWN5cmlsbGljPTEwNDU7ZS5JZnJha3R1cj04NDY1O2UuSWdyYXZlPTIwNDtlLklncmF2ZXNtYWxsPTYzNDY4O2UuSWhvb2thYm92ZT03ODgwO2UuSWljeXJpbGxpYz0xMDQ4O2UuSWludmVydGVkYnJldmU9NTIyO2UuSWlzaG9ydGN5cmlsbGljPTEwNDk7ZS5JbWFjcm9uPTI5ODtlLkltYWNyb25jeXJpbGxpYz0xMjUwO2UuSW1vbm9zcGFjZT02NTMyMTtlLkluaWFybWVuaWFuPTEzMzk7ZS5Jb2N5cmlsbGljPTEwMjU7ZS5Jb2dvbmVrPTMwMjtlLklvdGE9OTIxO2UuSW90YWFmcmljYW49NDA2O2UuSW90YWRpZXJlc2lzPTkzODtlLklvdGF0b25vcz05MDY7ZS5Jc21hbGw9NjMzMzc7ZS5Jc3Ryb2tlPTQwNztlLkl0aWxkZT0yOTY7ZS5JdGlsZGViZWxvdz03NzI0O2UuSXpoaXRzYWN5cmlsbGljPTExNDA7ZS5JemhpdHNhZGJsZ3JhdmVjeXJpbGxpYz0xMTQyO2UuSj03NDtlLkphYXJtZW5pYW49MTM0NTtlLkpjaXJjbGU9OTQwNztlLkpjaXJjdW1mbGV4PTMwODtlLkplY3lyaWxsaWM9MTAzMjtlLkpoZWhhcm1lbmlhbj0xMzU1O2UuSm1vbm9zcGFjZT02NTMyMjtlLkpzbWFsbD02MzMzODtlLks9NzU7ZS5LQnNxdWFyZT0xMzE4OTtlLktLc3F1YXJlPTEzMjYxO2UuS2FiYXNoa2lyY3lyaWxsaWM9MTE4NDtlLkthY3V0ZT03NzI4O2UuS2FjeXJpbGxpYz0xMDUwO2UuS2FkZXNjZW5kZXJjeXJpbGxpYz0xMTc4O2UuS2Fob29rY3lyaWxsaWM9MTIxOTtlLkthcHBhPTkyMjtlLkthc3Ryb2tlY3lyaWxsaWM9MTE4MjtlLkthdmVydGljYWxzdHJva2VjeXJpbGxpYz0xMTgwO2UuS2Nhcm9uPTQ4ODtlLktjZWRpbGxhPTMxMDtlLktjaXJjbGU9OTQwODtlLktjb21tYWFjY2VudD0zMTA7ZS5LZG90YmVsb3c9NzczMDtlLktlaGFybWVuaWFuPTEzNjQ7ZS5LZW5hcm1lbmlhbj0xMzQzO2UuS2hhY3lyaWxsaWM9MTA2MTtlLktoZWljb3B0aWM9OTk4O2UuS2hvb2s9NDA4O2UuS2plY3lyaWxsaWM9MTAzNjtlLktsaW5lYmVsb3c9NzczMjtlLkttb25vc3BhY2U9NjUzMjM7ZS5Lb3BwYWN5cmlsbGljPTExNTI7ZS5Lb3BwYWdyZWVrPTk5MDtlLktzaWN5cmlsbGljPTExMzQ7ZS5Lc21hbGw9NjMzMzk7ZS5MPTc2O2UuTEo9NDU1O2UuTEw9NjMxNjc7ZS5MYWN1dGU9MzEzO2UuTGFtYmRhPTkyMztlLkxjYXJvbj0zMTc7ZS5MY2VkaWxsYT0zMTU7ZS5MY2lyY2xlPTk0MDk7ZS5MY2lyY3VtZmxleGJlbG93PTc3NDA7ZS5MY29tbWFhY2NlbnQ9MzE1O2UuTGRvdD0zMTk7ZS5MZG90YWNjZW50PTMxOTtlLkxkb3RiZWxvdz03NzM0O2UuTGRvdGJlbG93bWFjcm9uPTc3MzY7ZS5MaXduYXJtZW5pYW49MTM0MDtlLkxqPTQ1NjtlLkxqZWN5cmlsbGljPTEwMzM7ZS5MbGluZWJlbG93PTc3Mzg7ZS5MbW9ub3NwYWNlPTY1MzI0O2UuTHNsYXNoPTMyMTtlLkxzbGFzaHNtYWxsPTYzMjI1O2UuTHNtYWxsPTYzMzQwO2UuTT03NztlLk1Cc3F1YXJlPTEzMTkwO2UuTWFjcm9uPTYzMTg0O2UuTWFjcm9uc21hbGw9NjM0MDc7ZS5NYWN1dGU9Nzc0MjtlLk1jaXJjbGU9OTQxMDtlLk1kb3RhY2NlbnQ9Nzc0NDtlLk1kb3RiZWxvdz03NzQ2O2UuTWVuYXJtZW5pYW49MTM0ODtlLk1tb25vc3BhY2U9NjUzMjU7ZS5Nc21hbGw9NjMzNDE7ZS5NdHVybmVkPTQxMjtlLk11PTkyNDtlLk49Nzg7ZS5OSj00NTg7ZS5OYWN1dGU9MzIzO2UuTmNhcm9uPTMyNztlLk5jZWRpbGxhPTMyNTtlLk5jaXJjbGU9OTQxMTtlLk5jaXJjdW1mbGV4YmVsb3c9Nzc1NDtlLk5jb21tYWFjY2VudD0zMjU7ZS5OZG90YWNjZW50PTc3NDg7ZS5OZG90YmVsb3c9Nzc1MDtlLk5ob29rbGVmdD00MTM7ZS5OaW5lcm9tYW49ODU1MjtlLk5qPTQ1OTtlLk5qZWN5cmlsbGljPTEwMzQ7ZS5ObGluZWJlbG93PTc3NTI7ZS5ObW9ub3NwYWNlPTY1MzI2O2UuTm93YXJtZW5pYW49MTM1MDtlLk5zbWFsbD02MzM0MjtlLk50aWxkZT0yMDk7ZS5OdGlsZGVzbWFsbD02MzQ3MztlLk51PTkyNTtlLk89Nzk7ZS5PRT0zMzg7ZS5PRXNtYWxsPTYzMjI2O2UuT2FjdXRlPTIxMTtlLk9hY3V0ZXNtYWxsPTYzNDc1O2UuT2JhcnJlZGN5cmlsbGljPTEyNTY7ZS5PYmFycmVkZGllcmVzaXNjeXJpbGxpYz0xMjU4O2UuT2JyZXZlPTMzNDtlLk9jYXJvbj00NjU7ZS5PY2VudGVyZWR0aWxkZT00MTU7ZS5PY2lyY2xlPTk0MTI7ZS5PY2lyY3VtZmxleD0yMTI7ZS5PY2lyY3VtZmxleGFjdXRlPTc4ODg7ZS5PY2lyY3VtZmxleGRvdGJlbG93PTc4OTY7ZS5PY2lyY3VtZmxleGdyYXZlPTc4OTA7ZS5PY2lyY3VtZmxleGhvb2thYm92ZT03ODkyO2UuT2NpcmN1bWZsZXhzbWFsbD02MzQ3NjtlLk9jaXJjdW1mbGV4dGlsZGU9Nzg5NDtlLk9jeXJpbGxpYz0xMDU0O2UuT2RibGFjdXRlPTMzNjtlLk9kYmxncmF2ZT01MjQ7ZS5PZGllcmVzaXM9MjE0O2UuT2RpZXJlc2lzY3lyaWxsaWM9MTI1NDtlLk9kaWVyZXNpc3NtYWxsPTYzNDc4O2UuT2RvdGJlbG93PTc4ODQ7ZS5PZ29uZWtzbWFsbD02MzIyNztlLk9ncmF2ZT0yMTA7ZS5PZ3JhdmVzbWFsbD02MzQ3NDtlLk9oYXJtZW5pYW49MTM2NTtlLk9obT04NDg2O2UuT2hvb2thYm92ZT03ODg2O2UuT2hvcm49NDE2O2UuT2hvcm5hY3V0ZT03ODk4O2UuT2hvcm5kb3RiZWxvdz03OTA2O2UuT2hvcm5ncmF2ZT03OTAwO2UuT2hvcm5ob29rYWJvdmU9NzkwMjtlLk9ob3JudGlsZGU9NzkwNDtlLk9odW5nYXJ1bWxhdXQ9MzM2O2UuT2k9NDE4O2UuT2ludmVydGVkYnJldmU9NTI2O2UuT21hY3Jvbj0zMzI7ZS5PbWFjcm9uYWN1dGU9Nzc2MjtlLk9tYWNyb25ncmF2ZT03NzYwO2UuT21lZ2E9ODQ4NjtlLk9tZWdhY3lyaWxsaWM9MTEyMDtlLk9tZWdhZ3JlZWs9OTM3O2UuT21lZ2Fyb3VuZGN5cmlsbGljPTExNDY7ZS5PbWVnYXRpdGxvY3lyaWxsaWM9MTE0ODtlLk9tZWdhdG9ub3M9OTExO2UuT21pY3Jvbj05Mjc7ZS5PbWljcm9udG9ub3M9OTA4O2UuT21vbm9zcGFjZT02NTMyNztlLk9uZXJvbWFuPTg1NDQ7ZS5Pb2dvbmVrPTQ5MDtlLk9vZ29uZWttYWNyb249NDkyO2UuT29wZW49MzkwO2UuT3NsYXNoPTIxNjtlLk9zbGFzaGFjdXRlPTUxMDtlLk9zbGFzaHNtYWxsPTYzNDgwO2UuT3NtYWxsPTYzMzQzO2UuT3N0cm9rZWFjdXRlPTUxMDtlLk90Y3lyaWxsaWM9MTE1MDtlLk90aWxkZT0yMTM7ZS5PdGlsZGVhY3V0ZT03NzU2O2UuT3RpbGRlZGllcmVzaXM9Nzc1ODtlLk90aWxkZXNtYWxsPTYzNDc3O2UuUD04MDtlLlBhY3V0ZT03NzY0O2UuUGNpcmNsZT05NDEzO2UuUGRvdGFjY2VudD03NzY2O2UuUGVjeXJpbGxpYz0xMDU1O2UuUGVoYXJtZW5pYW49MTM1NDtlLlBlbWlkZGxlaG9va2N5cmlsbGljPTExOTA7ZS5QaGk9OTM0O2UuUGhvb2s9NDIwO2UuUGk9OTI4O2UuUGl3cmFybWVuaWFuPTEzNjM7ZS5QbW9ub3NwYWNlPTY1MzI4O2UuUHNpPTkzNjtlLlBzaWN5cmlsbGljPTExMzY7ZS5Qc21hbGw9NjMzNDQ7ZS5RPTgxO2UuUWNpcmNsZT05NDE0O2UuUW1vbm9zcGFjZT02NTMyOTtlLlFzbWFsbD02MzM0NTtlLlI9ODI7ZS5SYWFybWVuaWFuPTEzNTY7ZS5SYWN1dGU9MzQwO2UuUmNhcm9uPTM0NDtlLlJjZWRpbGxhPTM0MjtlLlJjaXJjbGU9OTQxNTtlLlJjb21tYWFjY2VudD0zNDI7ZS5SZGJsZ3JhdmU9NTI4O2UuUmRvdGFjY2VudD03NzY4O2UuUmRvdGJlbG93PTc3NzA7ZS5SZG90YmVsb3dtYWNyb249Nzc3MjtlLlJlaGFybWVuaWFuPTEzNjA7ZS5SZnJha3R1cj04NDc2O2UuUmhvPTkyOTtlLlJpbmdzbWFsbD02MzIyODtlLlJpbnZlcnRlZGJyZXZlPTUzMDtlLlJsaW5lYmVsb3c9Nzc3NDtlLlJtb25vc3BhY2U9NjUzMzA7ZS5Sc21hbGw9NjMzNDY7ZS5Sc21hbGxpbnZlcnRlZD02NDE7ZS5Sc21hbGxpbnZlcnRlZHN1cGVyaW9yPTY5NDtlLlM9ODM7ZS5TRjAxMDAwMD05NDg0O2UuU0YwMjAwMDA9OTQ5MjtlLlNGMDMwMDAwPTk0ODg7ZS5TRjA0MDAwMD05NDk2O2UuU0YwNTAwMDA9OTUzMjtlLlNGMDYwMDAwPTk1MTY7ZS5TRjA3MDAwMD05NTI0O2UuU0YwODAwMDA9OTUwMDtlLlNGMDkwMDAwPTk1MDg7ZS5TRjEwMDAwMD05NDcyO2UuU0YxMTAwMDA9OTQ3NDtlLlNGMTkwMDAwPTk1Njk7ZS5TRjIwMDAwMD05NTcwO2UuU0YyMTAwMDA9OTU1ODtlLlNGMjIwMDAwPTk1NTc7ZS5TRjIzMDAwMD05NTcxO2UuU0YyNDAwMDA9OTU1MztlLlNGMjUwMDAwPTk1NTk7ZS5TRjI2MDAwMD05NTY1O2UuU0YyNzAwMDA9OTU2NDtlLlNGMjgwMDAwPTk1NjM7ZS5TRjM2MDAwMD05NTY2O2UuU0YzNzAwMDA9OTU2NztlLlNGMzgwMDAwPTk1NjI7ZS5TRjM5MDAwMD05NTU2O2UuU0Y0MDAwMDA9OTU3NztlLlNGNDEwMDAwPTk1NzQ7ZS5TRjQyMDAwMD05NTY4O2UuU0Y0MzAwMDA9OTU1MjtlLlNGNDQwMDAwPTk1ODA7ZS5TRjQ1MDAwMD05NTc1O2UuU0Y0NjAwMDA9OTU3NjtlLlNGNDcwMDAwPTk1NzI7ZS5TRjQ4MDAwMD05NTczO2UuU0Y0OTAwMDA9OTU2MTtlLlNGNTAwMDAwPTk1NjA7ZS5TRjUxMDAwMD05NTU0O2UuU0Y1MjAwMDA9OTU1NTtlLlNGNTMwMDAwPTk1Nzk7ZS5TRjU0MDAwMD05NTc4O2UuU2FjdXRlPTM0NjtlLlNhY3V0ZWRvdGFjY2VudD03NzgwO2UuU2FtcGlncmVlaz05OTI7ZS5TY2Fyb249MzUyO2UuU2Nhcm9uZG90YWNjZW50PTc3ODI7ZS5TY2Fyb25zbWFsbD02MzIyOTtlLlNjZWRpbGxhPTM1MDtlLlNjaHdhPTM5OTtlLlNjaHdhY3lyaWxsaWM9MTI0MDtlLlNjaHdhZGllcmVzaXNjeXJpbGxpYz0xMjQyO2UuU2NpcmNsZT05NDE2O2UuU2NpcmN1bWZsZXg9MzQ4O2UuU2NvbW1hYWNjZW50PTUzNjtlLlNkb3RhY2NlbnQ9Nzc3NjtlLlNkb3RiZWxvdz03Nzc4O2UuU2RvdGJlbG93ZG90YWNjZW50PTc3ODQ7ZS5TZWhhcm1lbmlhbj0xMzU3O2UuU2V2ZW5yb21hbj04NTUwO2UuU2hhYXJtZW5pYW49MTM1MTtlLlNoYWN5cmlsbGljPTEwNjQ7ZS5TaGNoYWN5cmlsbGljPTEwNjU7ZS5TaGVpY29wdGljPTk5NDtlLlNoaGFjeXJpbGxpYz0xMjEwO2UuU2hpbWFjb3B0aWM9MTAwNDtlLlNpZ21hPTkzMTtlLlNpeHJvbWFuPTg1NDk7ZS5TbW9ub3NwYWNlPTY1MzMxO2UuU29mdHNpZ25jeXJpbGxpYz0xMDY4O2UuU3NtYWxsPTYzMzQ3O2UuU3RpZ21hZ3JlZWs9OTg2O2UuVD04NDtlLlRhdT05MzI7ZS5UYmFyPTM1ODtlLlRjYXJvbj0zNTY7ZS5UY2VkaWxsYT0zNTQ7ZS5UY2lyY2xlPTk0MTc7ZS5UY2lyY3VtZmxleGJlbG93PTc3OTI7ZS5UY29tbWFhY2NlbnQ9MzU0O2UuVGRvdGFjY2VudD03Nzg2O2UuVGRvdGJlbG93PTc3ODg7ZS5UZWN5cmlsbGljPTEwNTg7ZS5UZWRlc2NlbmRlcmN5cmlsbGljPTExOTY7ZS5UZW5yb21hbj04NTUzO2UuVGV0c2VjeXJpbGxpYz0xMjA0O2UuVGhldGE9OTIwO2UuVGhvb2s9NDI4O2UuVGhvcm49MjIyO2UuVGhvcm5zbWFsbD02MzQ4NjtlLlRocmVlcm9tYW49ODU0NjtlLlRpbGRlc21hbGw9NjMyMzA7ZS5UaXduYXJtZW5pYW49MTM1OTtlLlRsaW5lYmVsb3c9Nzc5MDtlLlRtb25vc3BhY2U9NjUzMzI7ZS5Ub2FybWVuaWFuPTEzMzc7ZS5Ub25lZml2ZT00NDQ7ZS5Ub25lc2l4PTM4ODtlLlRvbmV0d289NDIzO2UuVHJldHJvZmxleGhvb2s9NDMwO2UuVHNlY3lyaWxsaWM9MTA2MjtlLlRzaGVjeXJpbGxpYz0xMDM1O2UuVHNtYWxsPTYzMzQ4O2UuVHdlbHZlcm9tYW49ODU1NTtlLlR3b3JvbWFuPTg1NDU7ZS5VPTg1O2UuVWFjdXRlPTIxODtlLlVhY3V0ZXNtYWxsPTYzNDgyO2UuVWJyZXZlPTM2NDtlLlVjYXJvbj00Njc7ZS5VY2lyY2xlPTk0MTg7ZS5VY2lyY3VtZmxleD0yMTk7ZS5VY2lyY3VtZmxleGJlbG93PTc3OTg7ZS5VY2lyY3VtZmxleHNtYWxsPTYzNDgzO2UuVWN5cmlsbGljPTEwNTk7ZS5VZGJsYWN1dGU9MzY4O2UuVWRibGdyYXZlPTUzMjtlLlVkaWVyZXNpcz0yMjA7ZS5VZGllcmVzaXNhY3V0ZT00NzE7ZS5VZGllcmVzaXNiZWxvdz03Nzk0O2UuVWRpZXJlc2lzY2Fyb249NDczO2UuVWRpZXJlc2lzY3lyaWxsaWM9MTI2NDtlLlVkaWVyZXNpc2dyYXZlPTQ3NTtlLlVkaWVyZXNpc21hY3Jvbj00Njk7ZS5VZGllcmVzaXNzbWFsbD02MzQ4NDtlLlVkb3RiZWxvdz03OTA4O2UuVWdyYXZlPTIxNztlLlVncmF2ZXNtYWxsPTYzNDgxO2UuVWhvb2thYm92ZT03OTEwO2UuVWhvcm49NDMxO2UuVWhvcm5hY3V0ZT03OTEyO2UuVWhvcm5kb3RiZWxvdz03OTIwO2UuVWhvcm5ncmF2ZT03OTE0O2UuVWhvcm5ob29rYWJvdmU9NzkxNjtlLlVob3JudGlsZGU9NzkxODtlLlVodW5nYXJ1bWxhdXQ9MzY4O2UuVWh1bmdhcnVtbGF1dGN5cmlsbGljPTEyNjY7ZS5VaW52ZXJ0ZWRicmV2ZT01MzQ7ZS5Va2N5cmlsbGljPTExNDQ7ZS5VbWFjcm9uPTM2MjtlLlVtYWNyb25jeXJpbGxpYz0xMjYyO2UuVW1hY3JvbmRpZXJlc2lzPTc4MDI7ZS5VbW9ub3NwYWNlPTY1MzMzO2UuVW9nb25laz0zNzA7ZS5VcHNpbG9uPTkzMztlLlVwc2lsb24xPTk3ODtlLlVwc2lsb25hY3V0ZWhvb2tzeW1ib2xncmVlaz05Nzk7ZS5VcHNpbG9uYWZyaWNhbj00MzM7ZS5VcHNpbG9uZGllcmVzaXM9OTM5O2UuVXBzaWxvbmRpZXJlc2lzaG9va3N5bWJvbGdyZWVrPTk4MDtlLlVwc2lsb25ob29rc3ltYm9sPTk3ODtlLlVwc2lsb250b25vcz05MTA7ZS5VcmluZz0zNjY7ZS5Vc2hvcnRjeXJpbGxpYz0xMDM4O2UuVXNtYWxsPTYzMzQ5O2UuVXN0cmFpZ2h0Y3lyaWxsaWM9MTE5ODtlLlVzdHJhaWdodHN0cm9rZWN5cmlsbGljPTEyMDA7ZS5VdGlsZGU9MzYwO2UuVXRpbGRlYWN1dGU9NzgwMDtlLlV0aWxkZWJlbG93PTc3OTY7ZS5WPTg2O2UuVmNpcmNsZT05NDE5O2UuVmRvdGJlbG93PTc4MDY7ZS5WZWN5cmlsbGljPTEwNDI7ZS5WZXdhcm1lbmlhbj0xMzU4O2UuVmhvb2s9NDM0O2UuVm1vbm9zcGFjZT02NTMzNDtlLlZvYXJtZW5pYW49MTM1MjtlLlZzbWFsbD02MzM1MDtlLlZ0aWxkZT03ODA0O2UuVz04NztlLldhY3V0ZT03ODEwO2UuV2NpcmNsZT05NDIwO2UuV2NpcmN1bWZsZXg9MzcyO2UuV2RpZXJlc2lzPTc4MTI7ZS5XZG90YWNjZW50PTc4MTQ7ZS5XZG90YmVsb3c9NzgxNjtlLldncmF2ZT03ODA4O2UuV21vbm9zcGFjZT02NTMzNTtlLldzbWFsbD02MzM1MTtlLlg9ODg7ZS5YY2lyY2xlPTk0MjE7ZS5YZGllcmVzaXM9NzgyMDtlLlhkb3RhY2NlbnQ9NzgxODtlLlhlaGFybWVuaWFuPTEzNDE7ZS5YaT05MjY7ZS5YbW9ub3NwYWNlPTY1MzM2O2UuWHNtYWxsPTYzMzUyO2UuWT04OTtlLllhY3V0ZT0yMjE7ZS5ZYWN1dGVzbWFsbD02MzQ4NTtlLllhdGN5cmlsbGljPTExMjI7ZS5ZY2lyY2xlPTk0MjI7ZS5ZY2lyY3VtZmxleD0zNzQ7ZS5ZZGllcmVzaXM9Mzc2O2UuWWRpZXJlc2lzc21hbGw9NjM0ODc7ZS5ZZG90YWNjZW50PTc4MjI7ZS5ZZG90YmVsb3c9NzkyNDtlLlllcmljeXJpbGxpYz0xMDY3O2UuWWVydWRpZXJlc2lzY3lyaWxsaWM9MTI3MjtlLllncmF2ZT03OTIyO2UuWWhvb2s9NDM1O2UuWWhvb2thYm92ZT03OTI2O2UuWWlhcm1lbmlhbj0xMzQ5O2UuWWljeXJpbGxpYz0xMDMxO2UuWWl3bmFybWVuaWFuPTEzNjI7ZS5ZbW9ub3NwYWNlPTY1MzM3O2UuWXNtYWxsPTYzMzUzO2UuWXRpbGRlPTc5Mjg7ZS5ZdXNiaWdjeXJpbGxpYz0xMTMwO2UuWXVzYmlnaW90aWZpZWRjeXJpbGxpYz0xMTMyO2UuWXVzbGl0dGxlY3lyaWxsaWM9MTEyNjtlLll1c2xpdHRsZWlvdGlmaWVkY3lyaWxsaWM9MTEyODtlLlo9OTA7ZS5aYWFybWVuaWFuPTEzMzQ7ZS5aYWN1dGU9Mzc3O2UuWmNhcm9uPTM4MTtlLlpjYXJvbnNtYWxsPTYzMjMxO2UuWmNpcmNsZT05NDIzO2UuWmNpcmN1bWZsZXg9NzgyNDtlLlpkb3Q9Mzc5O2UuWmRvdGFjY2VudD0zNzk7ZS5aZG90YmVsb3c9NzgyNjtlLlplY3lyaWxsaWM9MTA0NztlLlplZGVzY2VuZGVyY3lyaWxsaWM9MTE3NjtlLlplZGllcmVzaXNjeXJpbGxpYz0xMjQ2O2UuWmV0YT05MTg7ZS5aaGVhcm1lbmlhbj0xMzM4O2UuWmhlYnJldmVjeXJpbGxpYz0xMjE3O2UuWmhlY3lyaWxsaWM9MTA0NjtlLlpoZWRlc2NlbmRlcmN5cmlsbGljPTExNzQ7ZS5aaGVkaWVyZXNpc2N5cmlsbGljPTEyNDQ7ZS5abGluZWJlbG93PTc4Mjg7ZS5abW9ub3NwYWNlPTY1MzM4O2UuWnNtYWxsPTYzMzU0O2UuWnN0cm9rZT00Mzc7ZS5hPTk3O2UuYWFiZW5nYWxpPTI0Mzg7ZS5hYWN1dGU9MjI1O2UuYWFkZXZhPTIzMTA7ZS5hYWd1amFyYXRpPTI2OTQ7ZS5hYWd1cm11a2hpPTI1NjY7ZS5hYW1hdHJhZ3VybXVraGk9MjYyMjtlLmFhcnVzcXVhcmU9MTMwNTk7ZS5hYXZvd2Vsc2lnbmJlbmdhbGk9MjQ5NDtlLmFhdm93ZWxzaWduZGV2YT0yMzY2O2UuYWF2b3dlbHNpZ25ndWphcmF0aT0yNzUwO2UuYWJicmV2aWF0aW9ubWFya2FybWVuaWFuPTEzNzU7ZS5hYmJyZXZpYXRpb25zaWduZGV2YT0yNDE2O2UuYWJlbmdhbGk9MjQzNztlLmFib3BvbW9mbz0xMjU3MDtlLmFicmV2ZT0yNTk7ZS5hYnJldmVhY3V0ZT03ODU1O2UuYWJyZXZlY3lyaWxsaWM9MTIzMztlLmFicmV2ZWRvdGJlbG93PTc4NjM7ZS5hYnJldmVncmF2ZT03ODU3O2UuYWJyZXZlaG9va2Fib3ZlPTc4NTk7ZS5hYnJldmV0aWxkZT03ODYxO2UuYWNhcm9uPTQ2MjtlLmFjaXJjbGU9OTQyNDtlLmFjaXJjdW1mbGV4PTIyNjtlLmFjaXJjdW1mbGV4YWN1dGU9Nzg0NTtlLmFjaXJjdW1mbGV4ZG90YmVsb3c9Nzg1MztlLmFjaXJjdW1mbGV4Z3JhdmU9Nzg0NztlLmFjaXJjdW1mbGV4aG9va2Fib3ZlPTc4NDk7ZS5hY2lyY3VtZmxleHRpbGRlPTc4NTE7ZS5hY3V0ZT0xODA7ZS5hY3V0ZWJlbG93Y21iPTc5MTtlLmFjdXRlY21iPTc2OTtlLmFjdXRlY29tYj03Njk7ZS5hY3V0ZWRldmE9MjM4ODtlLmFjdXRlbG93bW9kPTcxOTtlLmFjdXRldG9uZWNtYj04MzM7ZS5hY3lyaWxsaWM9MTA3MjtlLmFkYmxncmF2ZT01MTM7ZS5hZGRha2d1cm11a2hpPTI2NzM7ZS5hZGV2YT0yMzA5O2UuYWRpZXJlc2lzPTIyODtlLmFkaWVyZXNpc2N5cmlsbGljPTEyMzU7ZS5hZGllcmVzaXNtYWNyb249NDc5O2UuYWRvdGJlbG93PTc4NDE7ZS5hZG90bWFjcm9uPTQ4MTtlLmFlPTIzMDtlLmFlYWN1dGU9NTA5O2UuYWVrb3JlYW49MTI2MjQ7ZS5hZW1hY3Jvbj00ODM7ZS5hZmlpMDAyMDg9ODIxMztlLmFmaWkwODk0MT04MzU2O2UuYWZpaTEwMDE3PTEwNDA7ZS5hZmlpMTAwMTg9MTA0MTtlLmFmaWkxMDAxOT0xMDQyO2UuYWZpaTEwMDIwPTEwNDM7ZS5hZmlpMTAwMjE9MTA0NDtlLmFmaWkxMDAyMj0xMDQ1O2UuYWZpaTEwMDIzPTEwMjU7ZS5hZmlpMTAwMjQ9MTA0NjtlLmFmaWkxMDAyNT0xMDQ3O2UuYWZpaTEwMDI2PTEwNDg7ZS5hZmlpMTAwMjc9MTA0OTtlLmFmaWkxMDAyOD0xMDUwO2UuYWZpaTEwMDI5PTEwNTE7ZS5hZmlpMTAwMzA9MTA1MjtlLmFmaWkxMDAzMT0xMDUzO2UuYWZpaTEwMDMyPTEwNTQ7ZS5hZmlpMTAwMzM9MTA1NTtlLmFmaWkxMDAzND0xMDU2O2UuYWZpaTEwMDM1PTEwNTc7ZS5hZmlpMTAwMzY9MTA1ODtlLmFmaWkxMDAzNz0xMDU5O2UuYWZpaTEwMDM4PTEwNjA7ZS5hZmlpMTAwMzk9MTA2MTtlLmFmaWkxMDA0MD0xMDYyO2UuYWZpaTEwMDQxPTEwNjM7ZS5hZmlpMTAwNDI9MTA2NDtlLmFmaWkxMDA0Mz0xMDY1O2UuYWZpaTEwMDQ0PTEwNjY7ZS5hZmlpMTAwNDU9MTA2NztlLmFmaWkxMDA0Nj0xMDY4O2UuYWZpaTEwMDQ3PTEwNjk7ZS5hZmlpMTAwNDg9MTA3MDtlLmFmaWkxMDA0OT0xMDcxO2UuYWZpaTEwMDUwPTExNjg7ZS5hZmlpMTAwNTE9MTAyNjtlLmFmaWkxMDA1Mj0xMDI3O2UuYWZpaTEwMDUzPTEwMjg7ZS5hZmlpMTAwNTQ9MTAyOTtlLmFmaWkxMDA1NT0xMDMwO2UuYWZpaTEwMDU2PTEwMzE7ZS5hZmlpMTAwNTc9MTAzMjtlLmFmaWkxMDA1OD0xMDMzO2UuYWZpaTEwMDU5PTEwMzQ7ZS5hZmlpMTAwNjA9MTAzNTtlLmFmaWkxMDA2MT0xMDM2O2UuYWZpaTEwMDYyPTEwMzg7ZS5hZmlpMTAwNjM9NjMxNzI7ZS5hZmlpMTAwNjQ9NjMxNzM7ZS5hZmlpMTAwNjU9MTA3MjtlLmFmaWkxMDA2Nj0xMDczO2UuYWZpaTEwMDY3PTEwNzQ7ZS5hZmlpMTAwNjg9MTA3NTtlLmFmaWkxMDA2OT0xMDc2O2UuYWZpaTEwMDcwPTEwNzc7ZS5hZmlpMTAwNzE9MTEwNTtlLmFmaWkxMDA3Mj0xMDc4O2UuYWZpaTEwMDczPTEwNzk7ZS5hZmlpMTAwNzQ9MTA4MDtlLmFmaWkxMDA3NT0xMDgxO2UuYWZpaTEwMDc2PTEwODI7ZS5hZmlpMTAwNzc9MTA4MztlLmFmaWkxMDA3OD0xMDg0O2UuYWZpaTEwMDc5PTEwODU7ZS5hZmlpMTAwODA9MTA4NjtlLmFmaWkxMDA4MT0xMDg3O2UuYWZpaTEwMDgyPTEwODg7ZS5hZmlpMTAwODM9MTA4OTtlLmFmaWkxMDA4ND0xMDkwO2UuYWZpaTEwMDg1PTEwOTE7ZS5hZmlpMTAwODY9MTA5MjtlLmFmaWkxMDA4Nz0xMDkzO2UuYWZpaTEwMDg4PTEwOTQ7ZS5hZmlpMTAwODk9MTA5NTtlLmFmaWkxMDA5MD0xMDk2O2UuYWZpaTEwMDkxPTEwOTc7ZS5hZmlpMTAwOTI9MTA5ODtlLmFmaWkxMDA5Mz0xMDk5O2UuYWZpaTEwMDk0PTExMDA7ZS5hZmlpMTAwOTU9MTEwMTtlLmFmaWkxMDA5Nj0xMTAyO2UuYWZpaTEwMDk3PTExMDM7ZS5hZmlpMTAwOTg9MTE2OTtlLmFmaWkxMDA5OT0xMTA2O2UuYWZpaTEwMTAwPTExMDc7ZS5hZmlpMTAxMDE9MTEwODtlLmFmaWkxMDEwMj0xMTA5O2UuYWZpaTEwMTAzPTExMTA7ZS5hZmlpMTAxMDQ9MTExMTtlLmFmaWkxMDEwNT0xMTEyO2UuYWZpaTEwMTA2PTExMTM7ZS5hZmlpMTAxMDc9MTExNDtlLmFmaWkxMDEwOD0xMTE1O2UuYWZpaTEwMTA5PTExMTY7ZS5hZmlpMTAxMTA9MTExODtlLmFmaWkxMDE0NT0xMDM5O2UuYWZpaTEwMTQ2PTExMjI7ZS5hZmlpMTAxNDc9MTEzODtlLmFmaWkxMDE0OD0xMTQwO2UuYWZpaTEwMTkyPTYzMTc0O2UuYWZpaTEwMTkzPTExMTk7ZS5hZmlpMTAxOTQ9MTEyMztlLmFmaWkxMDE5NT0xMTM5O2UuYWZpaTEwMTk2PTExNDE7ZS5hZmlpMTA4MzE9NjMxNzU7ZS5hZmlpMTA4MzI9NjMxNzY7ZS5hZmlpMTA4NDY9MTI0MTtlLmFmaWkyOTk9ODIwNjtlLmFmaWkzMDA9ODIwNztlLmFmaWkzMDE9ODIwNTtlLmFmaWk1NzM4MT0xNjQyO2UuYWZpaTU3Mzg4PTE1NDg7ZS5hZmlpNTczOTI9MTYzMjtlLmFmaWk1NzM5Mz0xNjMzO2UuYWZpaTU3Mzk0PTE2MzQ7ZS5hZmlpNTczOTU9MTYzNTtlLmFmaWk1NzM5Nj0xNjM2O2UuYWZpaTU3Mzk3PTE2Mzc7ZS5hZmlpNTczOTg9MTYzODtlLmFmaWk1NzM5OT0xNjM5O2UuYWZpaTU3NDAwPTE2NDA7ZS5hZmlpNTc0MDE9MTY0MTtlLmFmaWk1NzQwMz0xNTYzO2UuYWZpaTU3NDA3PTE1Njc7ZS5hZmlpNTc0MDk9MTU2OTtlLmFmaWk1NzQxMD0xNTcwO2UuYWZpaTU3NDExPTE1NzE7ZS5hZmlpNTc0MTI9MTU3MjtlLmFmaWk1NzQxMz0xNTczO2UuYWZpaTU3NDE0PTE1NzQ7ZS5hZmlpNTc0MTU9MTU3NTtlLmFmaWk1NzQxNj0xNTc2O2UuYWZpaTU3NDE3PTE1Nzc7ZS5hZmlpNTc0MTg9MTU3ODtlLmFmaWk1NzQxOT0xNTc5O2UuYWZpaTU3NDIwPTE1ODA7ZS5hZmlpNTc0MjE9MTU4MTtlLmFmaWk1NzQyMj0xNTgyO2UuYWZpaTU3NDIzPTE1ODM7ZS5hZmlpNTc0MjQ9MTU4NDtlLmFmaWk1NzQyNT0xNTg1O2UuYWZpaTU3NDI2PTE1ODY7ZS5hZmlpNTc0Mjc9MTU4NztlLmFmaWk1NzQyOD0xNTg4O2UuYWZpaTU3NDI5PTE1ODk7ZS5hZmlpNTc0MzA9MTU5MDtlLmFmaWk1NzQzMT0xNTkxO2UuYWZpaTU3NDMyPTE1OTI7ZS5hZmlpNTc0MzM9MTU5MztlLmFmaWk1NzQzND0xNTk0O2UuYWZpaTU3NDQwPTE2MDA7ZS5hZmlpNTc0NDE9MTYwMTtlLmFmaWk1NzQ0Mj0xNjAyO2UuYWZpaTU3NDQzPTE2MDM7ZS5hZmlpNTc0NDQ9MTYwNDtlLmFmaWk1NzQ0NT0xNjA1O2UuYWZpaTU3NDQ2PTE2MDY7ZS5hZmlpNTc0NDg9MTYwODtlLmFmaWk1NzQ0OT0xNjA5O2UuYWZpaTU3NDUwPTE2MTA7ZS5hZmlpNTc0NTE9MTYxMTtlLmFmaWk1NzQ1Mj0xNjEyO2UuYWZpaTU3NDUzPTE2MTM7ZS5hZmlpNTc0NTQ9MTYxNDtlLmFmaWk1NzQ1NT0xNjE1O2UuYWZpaTU3NDU2PTE2MTY7ZS5hZmlpNTc0NTc9MTYxNztlLmFmaWk1NzQ1OD0xNjE4O2UuYWZpaTU3NDcwPTE2MDc7ZS5hZmlpNTc1MDU9MTcwMDtlLmFmaWk1NzUwNj0xNjYyO2UuYWZpaTU3NTA3PTE2NzA7ZS5hZmlpNTc1MDg9MTY4ODtlLmFmaWk1NzUwOT0xNzExO2UuYWZpaTU3NTExPTE2NTc7ZS5hZmlpNTc1MTI9MTY3MjtlLmFmaWk1NzUxMz0xNjgxO2UuYWZpaTU3NTE0PTE3MjI7ZS5hZmlpNTc1MTk9MTc0NjtlLmFmaWk1NzUzND0xNzQ5O2UuYWZpaTU3NjM2PTgzNjI7ZS5hZmlpNTc2NDU9MTQ3MDtlLmFmaWk1NzY1OD0xNDc1O2UuYWZpaTU3NjY0PTE0ODg7ZS5hZmlpNTc2NjU9MTQ4OTtlLmFmaWk1NzY2Nj0xNDkwO2UuYWZpaTU3NjY3PTE0OTE7ZS5hZmlpNTc2Njg9MTQ5MjtlLmFmaWk1NzY2OT0xNDkzO2UuYWZpaTU3NjcwPTE0OTQ7ZS5hZmlpNTc2NzE9MTQ5NTtlLmFmaWk1NzY3Mj0xNDk2O2UuYWZpaTU3NjczPTE0OTc7ZS5hZmlpNTc2NzQ9MTQ5ODtlLmFmaWk1NzY3NT0xNDk5O2UuYWZpaTU3Njc2PTE1MDA7ZS5hZmlpNTc2Nzc9MTUwMTtlLmFmaWk1NzY3OD0xNTAyO2UuYWZpaTU3Njc5PTE1MDM7ZS5hZmlpNTc2ODA9MTUwNDtlLmFmaWk1NzY4MT0xNTA1O2UuYWZpaTU3NjgyPTE1MDY7ZS5hZmlpNTc2ODM9MTUwNztlLmFmaWk1NzY4ND0xNTA4O2UuYWZpaTU3Njg1PTE1MDk7ZS5hZmlpNTc2ODY9MTUxMDtlLmFmaWk1NzY4Nz0xNTExO2UuYWZpaTU3Njg4PTE1MTI7ZS5hZmlpNTc2ODk9MTUxMztlLmFmaWk1NzY5MD0xNTE0O2UuYWZpaTU3Njk0PTY0Mjk4O2UuYWZpaTU3Njk1PTY0Mjk5O2UuYWZpaTU3NzAwPTY0MzMxO2UuYWZpaTU3NzA1PTY0Mjg3O2UuYWZpaTU3NzE2PTE1MjA7ZS5hZmlpNTc3MTc9MTUyMTtlLmFmaWk1NzcxOD0xNTIyO2UuYWZpaTU3NzIzPTY0MzA5O2UuYWZpaTU3NzkzPTE0NjA7ZS5hZmlpNTc3OTQ9MTQ2MTtlLmFmaWk1Nzc5NT0xNDYyO2UuYWZpaTU3Nzk2PTE0Njc7ZS5hZmlpNTc3OTc9MTQ2NDtlLmFmaWk1Nzc5OD0xNDYzO2UuYWZpaTU3Nzk5PTE0NTY7ZS5hZmlpNTc4MDA9MTQ1ODtlLmFmaWk1NzgwMT0xNDU3O2UuYWZpaTU3ODAyPTE0NTk7ZS5hZmlpNTc4MDM9MTQ3NDtlLmFmaWk1NzgwND0xNDczO2UuYWZpaTU3ODA2PTE0NjU7ZS5hZmlpNTc4MDc9MTQ2ODtlLmFmaWk1NzgzOT0xNDY5O2UuYWZpaTU3ODQxPTE0NzE7ZS5hZmlpNTc4NDI9MTQ3MjtlLmFmaWk1NzkyOT03MDA7ZS5hZmlpNjEyNDg9ODQ1MztlLmFmaWk2MTI4OT04NDY3O2UuYWZpaTYxMzUyPTg0NzA7ZS5hZmlpNjE1NzM9ODIzNjtlLmFmaWk2MTU3ND04MjM3O2UuYWZpaTYxNTc1PTgyMzg7ZS5hZmlpNjE2NjQ9ODIwNDtlLmFmaWk2MzE2Nz0xNjQ1O2UuYWZpaTY0OTM3PTcwMTtlLmFncmF2ZT0yMjQ7ZS5hZ3VqYXJhdGk9MjY5MztlLmFndXJtdWtoaT0yNTY1O2UuYWhpcmFnYW5hPTEyMzU0O2UuYWhvb2thYm92ZT03ODQzO2UuYWliZW5nYWxpPTI0NDg7ZS5haWJvcG9tb2ZvPTEyNTc0O2UuYWlkZXZhPTIzMjA7ZS5haWVjeXJpbGxpYz0xMjM3O2UuYWlndWphcmF0aT0yNzA0O2UuYWlndXJtdWtoaT0yNTc2O2UuYWltYXRyYWd1cm11a2hpPTI2MzI7ZS5haW5hcmFiaWM9MTU5MztlLmFpbmZpbmFsYXJhYmljPTY1MjI2O2UuYWluaW5pdGlhbGFyYWJpYz02NTIyNztlLmFpbm1lZGlhbGFyYWJpYz02NTIyODtlLmFpbnZlcnRlZGJyZXZlPTUxNTtlLmFpdm93ZWxzaWduYmVuZ2FsaT0yNTA0O2UuYWl2b3dlbHNpZ25kZXZhPTIzNzY7ZS5haXZvd2Vsc2lnbmd1amFyYXRpPTI3NjA7ZS5ha2F0YWthbmE9MTI0NTA7ZS5ha2F0YWthbmFoYWxmd2lkdGg9NjUzOTM7ZS5ha29yZWFuPTEyNjIzO2UuYWxlZj0xNDg4O2UuYWxlZmFyYWJpYz0xNTc1O2UuYWxlZmRhZ2VzaGhlYnJldz02NDMwNDtlLmFsZWZmaW5hbGFyYWJpYz02NTE2NjtlLmFsZWZoYW16YWFib3ZlYXJhYmljPTE1NzE7ZS5hbGVmaGFtemFhYm92ZWZpbmFsYXJhYmljPTY1MTU2O2UuYWxlZmhhbXphYmVsb3dhcmFiaWM9MTU3MztlLmFsZWZoYW16YWJlbG93ZmluYWxhcmFiaWM9NjUxNjA7ZS5hbGVmaGVicmV3PTE0ODg7ZS5hbGVmbGFtZWRoZWJyZXc9NjQzMzU7ZS5hbGVmbWFkZGFhYm92ZWFyYWJpYz0xNTcwO2UuYWxlZm1hZGRhYWJvdmVmaW5hbGFyYWJpYz02NTE1NDtlLmFsZWZtYWtzdXJhYXJhYmljPTE2MDk7ZS5hbGVmbWFrc3VyYWZpbmFsYXJhYmljPTY1MjY0O2UuYWxlZm1ha3N1cmFpbml0aWFsYXJhYmljPTY1MjY3O2UuYWxlZm1ha3N1cmFtZWRpYWxhcmFiaWM9NjUyNjg7ZS5hbGVmcGF0YWhoZWJyZXc9NjQzMDI7ZS5hbGVmcWFtYXRzaGVicmV3PTY0MzAzO2UuYWxlcGg9ODUwMTtlLmFsbGVxdWFsPTg3ODA7ZS5hbHBoYT05NDU7ZS5hbHBoYXRvbm9zPTk0MDtlLmFtYWNyb249MjU3O2UuYW1vbm9zcGFjZT02NTM0NTtlLmFtcGVyc2FuZD0zODtlLmFtcGVyc2FuZG1vbm9zcGFjZT02NTI4NjtlLmFtcGVyc2FuZHNtYWxsPTYzMjcwO2UuYW1zcXVhcmU9MTMyNTA7ZS5hbmJvcG9tb2ZvPTEyNTc4O2UuYW5nYm9wb21vZm89MTI1ODA7ZS5hbmdicmFja2V0bGVmdD0xMjI5NjtlLmFuZ2JyYWNrZXRyaWdodD0xMjI5NztlLmFuZ2toYW5raHV0aGFpPTM2NzQ7ZS5hbmdsZT04NzM2O2UuYW5nbGVicmFja2V0bGVmdD0xMjI5NjtlLmFuZ2xlYnJhY2tldGxlZnR2ZXJ0aWNhbD02NTA4NztlLmFuZ2xlYnJhY2tldHJpZ2h0PTEyMjk3O2UuYW5nbGVicmFja2V0cmlnaHR2ZXJ0aWNhbD02NTA4ODtlLmFuZ2xlbGVmdD05MDAxO2UuYW5nbGVyaWdodD05MDAyO2UuYW5nc3Ryb209ODQ5MTtlLmFub3RlbGVpYT05MDM7ZS5hbnVkYXR0YWRldmE9MjM4NjtlLmFudXN2YXJhYmVuZ2FsaT0yNDM0O2UuYW51c3ZhcmFkZXZhPTIzMDY7ZS5hbnVzdmFyYWd1amFyYXRpPTI2OTA7ZS5hb2dvbmVrPTI2MTtlLmFwYWF0b3NxdWFyZT0xMzA1NjtlLmFwYXJlbj05MzcyO2UuYXBvc3Ryb3BoZWFybWVuaWFuPTEzNzA7ZS5hcG9zdHJvcGhlbW9kPTcwMDtlLmFwcGxlPTYzNzQzO2UuYXBwcm9hY2hlcz04Nzg0O2UuYXBwcm94ZXF1YWw9ODc3NjtlLmFwcHJveGVxdWFsb3JpbWFnZT04Nzg2O2UuYXBwcm94aW1hdGVseWVxdWFsPTg3NzM7ZS5hcmFlYWVrb3JlYW49MTI2ODY7ZS5hcmFlYWtvcmVhbj0xMjY4NTtlLmFyYz04OTc4O2UuYXJpZ2h0aGFsZnJpbmc9NzgzNDtlLmFyaW5nPTIyOTtlLmFyaW5nYWN1dGU9NTA3O2UuYXJpbmdiZWxvdz03NjgxO2UuYXJyb3dib3RoPTg1OTY7ZS5hcnJvd2Rhc2hkb3duPTg2NzU7ZS5hcnJvd2Rhc2hsZWZ0PTg2NzI7ZS5hcnJvd2Rhc2hyaWdodD04Njc0O2UuYXJyb3dkYXNodXA9ODY3MztlLmFycm93ZGJsYm90aD04NjYwO2UuYXJyb3dkYmxkb3duPTg2NTk7ZS5hcnJvd2RibGxlZnQ9ODY1NjtlLmFycm93ZGJscmlnaHQ9ODY1ODtlLmFycm93ZGJsdXA9ODY1NztlLmFycm93ZG93bj04NTk1O2UuYXJyb3dkb3dubGVmdD04NjAxO2UuYXJyb3dkb3ducmlnaHQ9ODYwMDtlLmFycm93ZG93bndoaXRlPTg2ODE7ZS5hcnJvd2hlYWRkb3dubW9kPTcwOTtlLmFycm93aGVhZGxlZnRtb2Q9NzA2O2UuYXJyb3doZWFkcmlnaHRtb2Q9NzA3O2UuYXJyb3doZWFkdXBtb2Q9NzA4O2UuYXJyb3dob3JpemV4PTYzNzE5O2UuYXJyb3dsZWZ0PTg1OTI7ZS5hcnJvd2xlZnRkYmw9ODY1NjtlLmFycm93bGVmdGRibHN0cm9rZT04NjUzO2UuYXJyb3dsZWZ0b3ZlcnJpZ2h0PTg2NDY7ZS5hcnJvd2xlZnR3aGl0ZT04Njc4O2UuYXJyb3dyaWdodD04NTk0O2UuYXJyb3dyaWdodGRibHN0cm9rZT04NjU1O2UuYXJyb3dyaWdodGhlYXZ5PTEwMTQyO2UuYXJyb3dyaWdodG92ZXJsZWZ0PTg2NDQ7ZS5hcnJvd3JpZ2h0d2hpdGU9ODY4MDtlLmFycm93dGFibGVmdD04Njc2O2UuYXJyb3d0YWJyaWdodD04Njc3O2UuYXJyb3d1cD04NTkzO2UuYXJyb3d1cGRuPTg1OTc7ZS5hcnJvd3VwZG5ic2U9ODYxNjtlLmFycm93dXBkb3duYmFzZT04NjE2O2UuYXJyb3d1cGxlZnQ9ODU5ODtlLmFycm93dXBsZWZ0b2Zkb3duPTg2NDU7ZS5hcnJvd3VwcmlnaHQ9ODU5OTtlLmFycm93dXB3aGl0ZT04Njc5O2UuYXJyb3d2ZXJ0ZXg9NjM3MTg7ZS5hc2NpaWNpcmN1bT05NDtlLmFzY2lpY2lyY3VtbW9ub3NwYWNlPTY1MzQyO2UuYXNjaWl0aWxkZT0xMjY7ZS5hc2NpaXRpbGRlbW9ub3NwYWNlPTY1Mzc0O2UuYXNjcmlwdD01OTM7ZS5hc2NyaXB0dHVybmVkPTU5NDtlLmFzbWFsbGhpcmFnYW5hPTEyMzUzO2UuYXNtYWxsa2F0YWthbmE9MTI0NDk7ZS5hc21hbGxrYXRha2FuYWhhbGZ3aWR0aD02NTM4MztlLmFzdGVyaXNrPTQyO2UuYXN0ZXJpc2thbHRvbmVhcmFiaWM9MTY0NTtlLmFzdGVyaXNrYXJhYmljPTE2NDU7ZS5hc3Rlcmlza21hdGg9ODcyNztlLmFzdGVyaXNrbW9ub3NwYWNlPTY1MjkwO2UuYXN0ZXJpc2tzbWFsbD02NTEyMTtlLmFzdGVyaXNtPTgyNTg7ZS5hc3VwZXJpb3I9NjMyMDk7ZS5hc3ltcHRvdGljYWxseWVxdWFsPTg3NzE7ZS5hdD02NDtlLmF0aWxkZT0yMjc7ZS5hdG1vbm9zcGFjZT02NTMxMjtlLmF0c21hbGw9NjUxMzE7ZS5hdHVybmVkPTU5MjtlLmF1YmVuZ2FsaT0yNDUyO2UuYXVib3BvbW9mbz0xMjU3NjtlLmF1ZGV2YT0yMzI0O2UuYXVndWphcmF0aT0yNzA4O2UuYXVndXJtdWtoaT0yNTgwO2UuYXVsZW5ndGhtYXJrYmVuZ2FsaT0yNTE5O2UuYXVtYXRyYWd1cm11a2hpPTI2MzY7ZS5hdXZvd2Vsc2lnbmJlbmdhbGk9MjUwODtlLmF1dm93ZWxzaWduZGV2YT0yMzgwO2UuYXV2b3dlbHNpZ25ndWphcmF0aT0yNzY0O2UuYXZhZ3JhaGFkZXZhPTIzNjU7ZS5heWJhcm1lbmlhbj0xMzc3O2UuYXlpbj0xNTA2O2UuYXlpbmFsdG9uZWhlYnJldz02NDI4ODtlLmF5aW5oZWJyZXc9MTUwNjtlLmI9OTg7ZS5iYWJlbmdhbGk9MjQ3NjtlLmJhY2tzbGFzaD05MjtlLmJhY2tzbGFzaG1vbm9zcGFjZT02NTM0MDtlLmJhZGV2YT0yMzQ4O2UuYmFndWphcmF0aT0yNzMyO2UuYmFndXJtdWtoaT0yNjA0O2UuYmFoaXJhZ2FuYT0xMjQwMDtlLmJhaHR0aGFpPTM2NDc7ZS5iYWthdGFrYW5hPTEyNDk2O2UuYmFyPTEyNDtlLmJhcm1vbm9zcGFjZT02NTM3MjtlLmJib3BvbW9mbz0xMjU0OTtlLmJjaXJjbGU9OTQyNTtlLmJkb3RhY2NlbnQ9NzY4MztlLmJkb3RiZWxvdz03Njg1O2UuYmVhbWVkc2l4dGVlbnRobm90ZXM9OTgzNjtlLmJlY2F1c2U9ODc1NztlLmJlY3lyaWxsaWM9MTA3MztlLmJlaGFyYWJpYz0xNTc2O2UuYmVoZmluYWxhcmFiaWM9NjUxNjg7ZS5iZWhpbml0aWFsYXJhYmljPTY1MTY5O2UuYmVoaXJhZ2FuYT0xMjQwOTtlLmJlaG1lZGlhbGFyYWJpYz02NTE3MDtlLmJlaG1lZW1pbml0aWFsYXJhYmljPTY0NjcxO2UuYmVobWVlbWlzb2xhdGVkYXJhYmljPTY0NTIwO2UuYmVobm9vbmZpbmFsYXJhYmljPTY0NjIxO2UuYmVrYXRha2FuYT0xMjUwNTtlLmJlbmFybWVuaWFuPTEzNzg7ZS5iZXQ9MTQ4OTtlLmJldGE9OTQ2O2UuYmV0YXN5bWJvbGdyZWVrPTk3NjtlLmJldGRhZ2VzaD02NDMwNTtlLmJldGRhZ2VzaGhlYnJldz02NDMwNTtlLmJldGhlYnJldz0xNDg5O2UuYmV0cmFmZWhlYnJldz02NDMzMjtlLmJoYWJlbmdhbGk9MjQ3NztlLmJoYWRldmE9MjM0OTtlLmJoYWd1amFyYXRpPTI3MzM7ZS5iaGFndXJtdWtoaT0yNjA1O2UuYmhvb2s9NTk1O2UuYmloaXJhZ2FuYT0xMjQwMztlLmJpa2F0YWthbmE9MTI0OTk7ZS5iaWxhYmlhbGNsaWNrPTY2NDtlLmJpbmRpZ3VybXVraGk9MjU2MjtlLmJpcnVzcXVhcmU9MTMxMDU7ZS5ibGFja2NpcmNsZT05Njc5O2UuYmxhY2tkaWFtb25kPTk2NzA7ZS5ibGFja2Rvd25wb2ludGluZ3RyaWFuZ2xlPTk2NjA7ZS5ibGFja2xlZnRwb2ludGluZ3BvaW50ZXI9OTY2ODtlLmJsYWNrbGVmdHBvaW50aW5ndHJpYW5nbGU9OTY2NDtlLmJsYWNrbGVudGljdWxhcmJyYWNrZXRsZWZ0PTEyMzA0O2UuYmxhY2tsZW50aWN1bGFyYnJhY2tldGxlZnR2ZXJ0aWNhbD02NTA4MztlLmJsYWNrbGVudGljdWxhcmJyYWNrZXRyaWdodD0xMjMwNTtlLmJsYWNrbGVudGljdWxhcmJyYWNrZXRyaWdodHZlcnRpY2FsPTY1MDg0O2UuYmxhY2tsb3dlcmxlZnR0cmlhbmdsZT05Njk5O2UuYmxhY2tsb3dlcnJpZ2h0dHJpYW5nbGU9OTY5ODtlLmJsYWNrcmVjdGFuZ2xlPTk2NDQ7ZS5ibGFja3JpZ2h0cG9pbnRpbmdwb2ludGVyPTk2NTg7ZS5ibGFja3JpZ2h0cG9pbnRpbmd0cmlhbmdsZT05NjU0O2UuYmxhY2tzbWFsbHNxdWFyZT05NjQyO2UuYmxhY2tzbWlsaW5nZmFjZT05Nzg3O2UuYmxhY2tzcXVhcmU9OTYzMjtlLmJsYWNrc3Rhcj05NzMzO2UuYmxhY2t1cHBlcmxlZnR0cmlhbmdsZT05NzAwO2UuYmxhY2t1cHBlcnJpZ2h0dHJpYW5nbGU9OTcwMTtlLmJsYWNrdXBwb2ludGluZ3NtYWxsdHJpYW5nbGU9OTY1MjtlLmJsYWNrdXBwb2ludGluZ3RyaWFuZ2xlPTk2NTA7ZS5ibGFuaz05MjUxO2UuYmxpbmViZWxvdz03Njg3O2UuYmxvY2s9OTYwODtlLmJtb25vc3BhY2U9NjUzNDY7ZS5ib2JhaW1haXRoYWk9MzYxMDtlLmJvaGlyYWdhbmE9MTI0MTI7ZS5ib2thdGFrYW5hPTEyNTA4O2UuYnBhcmVuPTkzNzM7ZS5icXNxdWFyZT0xMzI1MTtlLmJyYWNlZXg9NjM3MzI7ZS5icmFjZWxlZnQ9MTIzO2UuYnJhY2VsZWZ0YnQ9NjM3MzE7ZS5icmFjZWxlZnRtaWQ9NjM3MzA7ZS5icmFjZWxlZnRtb25vc3BhY2U9NjUzNzE7ZS5icmFjZWxlZnRzbWFsbD02NTExNTtlLmJyYWNlbGVmdHRwPTYzNzI5O2UuYnJhY2VsZWZ0dmVydGljYWw9NjUwNzk7ZS5icmFjZXJpZ2h0PTEyNTtlLmJyYWNlcmlnaHRidD02Mzc0MjtlLmJyYWNlcmlnaHRtaWQ9NjM3NDE7ZS5icmFjZXJpZ2h0bW9ub3NwYWNlPTY1MzczO2UuYnJhY2VyaWdodHNtYWxsPTY1MTE2O2UuYnJhY2VyaWdodHRwPTYzNzQwO2UuYnJhY2VyaWdodHZlcnRpY2FsPTY1MDgwO2UuYnJhY2tldGxlZnQ9OTE7ZS5icmFja2V0bGVmdGJ0PTYzNzI4O2UuYnJhY2tldGxlZnRleD02MzcyNztlLmJyYWNrZXRsZWZ0bW9ub3NwYWNlPTY1MzM5O2UuYnJhY2tldGxlZnR0cD02MzcyNjtlLmJyYWNrZXRyaWdodD05MztlLmJyYWNrZXRyaWdodGJ0PTYzNzM5O2UuYnJhY2tldHJpZ2h0ZXg9NjM3Mzg7ZS5icmFja2V0cmlnaHRtb25vc3BhY2U9NjUzNDE7ZS5icmFja2V0cmlnaHR0cD02MzczNztlLmJyZXZlPTcyODtlLmJyZXZlYmVsb3djbWI9ODE0O2UuYnJldmVjbWI9Nzc0O2UuYnJldmVpbnZlcnRlZGJlbG93Y21iPTgxNTtlLmJyZXZlaW52ZXJ0ZWRjbWI9Nzg1O2UuYnJldmVpbnZlcnRlZGRvdWJsZWNtYj04NjU7ZS5icmlkZ2ViZWxvd2NtYj04MTA7ZS5icmlkZ2VpbnZlcnRlZGJlbG93Y21iPTgyNjtlLmJyb2tlbmJhcj0xNjY7ZS5ic3Ryb2tlPTM4NDtlLmJzdXBlcmlvcj02MzIxMDtlLmJ0b3BiYXI9Mzg3O2UuYnVoaXJhZ2FuYT0xMjQwNjtlLmJ1a2F0YWthbmE9MTI1MDI7ZS5idWxsZXQ9ODIyNjtlLmJ1bGxldGludmVyc2U9OTY4ODtlLmJ1bGxldG9wZXJhdG9yPTg3Mjk7ZS5idWxsc2V5ZT05Njc4O2UuYz05OTtlLmNhYXJtZW5pYW49MTM5MDtlLmNhYmVuZ2FsaT0yNDU4O2UuY2FjdXRlPTI2MztlLmNhZGV2YT0yMzMwO2UuY2FndWphcmF0aT0yNzE0O2UuY2FndXJtdWtoaT0yNTg2O2UuY2Fsc3F1YXJlPTEzMTkyO2UuY2FuZHJhYmluZHViZW5nYWxpPTI0MzM7ZS5jYW5kcmFiaW5kdWNtYj03ODQ7ZS5jYW5kcmFiaW5kdWRldmE9MjMwNTtlLmNhbmRyYWJpbmR1Z3VqYXJhdGk9MjY4OTtlLmNhcHNsb2NrPTg2ODI7ZS5jYXJlb2Y9ODQ1MztlLmNhcm9uPTcxMTtlLmNhcm9uYmVsb3djbWI9ODEyO2UuY2Fyb25jbWI9NzgwO2UuY2FycmlhZ2VyZXR1cm49ODYyOTtlLmNib3BvbW9mbz0xMjU2ODtlLmNjYXJvbj0yNjk7ZS5jY2VkaWxsYT0yMzE7ZS5jY2VkaWxsYWFjdXRlPTc2ODk7ZS5jY2lyY2xlPTk0MjY7ZS5jY2lyY3VtZmxleD0yNjU7ZS5jY3VybD01OTc7ZS5jZG90PTI2NztlLmNkb3RhY2NlbnQ9MjY3O2UuY2RzcXVhcmU9MTMyNTM7ZS5jZWRpbGxhPTE4NDtlLmNlZGlsbGFjbWI9ODA3O2UuY2VudD0xNjI7ZS5jZW50aWdyYWRlPTg0NTE7ZS5jZW50aW5mZXJpb3I9NjMxOTk7ZS5jZW50bW9ub3NwYWNlPTY1NTA0O2UuY2VudG9sZHN0eWxlPTYzMzk0O2UuY2VudHN1cGVyaW9yPTYzMjAwO2UuY2hhYXJtZW5pYW49MTQwMTtlLmNoYWJlbmdhbGk9MjQ1OTtlLmNoYWRldmE9MjMzMTtlLmNoYWd1amFyYXRpPTI3MTU7ZS5jaGFndXJtdWtoaT0yNTg3O2UuY2hib3BvbW9mbz0xMjU2NDtlLmNoZWFia2hhc2lhbmN5cmlsbGljPTEyMTM7ZS5jaGVja21hcms9MTAwMDM7ZS5jaGVjeXJpbGxpYz0xMDk1O2UuY2hlZGVzY2VuZGVyYWJraGFzaWFuY3lyaWxsaWM9MTIxNTtlLmNoZWRlc2NlbmRlcmN5cmlsbGljPTEyMDc7ZS5jaGVkaWVyZXNpc2N5cmlsbGljPTEyNjk7ZS5jaGVoYXJtZW5pYW49MTM5NTtlLmNoZWtoYWthc3NpYW5jeXJpbGxpYz0xMjI4O2UuY2hldmVydGljYWxzdHJva2VjeXJpbGxpYz0xMjA5O2UuY2hpPTk2NztlLmNoaWV1Y2hhY2lyY2xla29yZWFuPTEyOTE5O2UuY2hpZXVjaGFwYXJlbmtvcmVhbj0xMjgyMztlLmNoaWV1Y2hjaXJjbGVrb3JlYW49MTI5MDU7ZS5jaGlldWNoa29yZWFuPTEyNjE4O2UuY2hpZXVjaHBhcmVua29yZWFuPTEyODA5O2UuY2hvY2hhbmd0aGFpPTM1OTQ7ZS5jaG9jaGFudGhhaT0zNTkyO2UuY2hvY2hpbmd0aGFpPTM1OTM7ZS5jaG9jaG9ldGhhaT0zNTk2O2UuY2hvb2s9MzkyO2UuY2lldWNhY2lyY2xla29yZWFuPTEyOTE4O2UuY2lldWNhcGFyZW5rb3JlYW49MTI4MjI7ZS5jaWV1Y2NpcmNsZWtvcmVhbj0xMjkwNDtlLmNpZXVja29yZWFuPTEyNjE2O2UuY2lldWNwYXJlbmtvcmVhbj0xMjgwODtlLmNpZXVjdXBhcmVua29yZWFuPTEyODI4O2UuY2lyY2xlPTk2NzU7ZS5jaXJjbGVjb3B5cnQ9MTY5O2UuY2lyY2xlbXVsdGlwbHk9ODg1NTtlLmNpcmNsZW90PTg4NTc7ZS5jaXJjbGVwbHVzPTg4NTM7ZS5jaXJjbGVwb3N0YWxtYXJrPTEyMzQyO2UuY2lyY2xld2l0aGxlZnRoYWxmYmxhY2s9OTY4MDtlLmNpcmNsZXdpdGhyaWdodGhhbGZibGFjaz05NjgxO2UuY2lyY3VtZmxleD03MTA7ZS5jaXJjdW1mbGV4YmVsb3djbWI9ODEzO2UuY2lyY3VtZmxleGNtYj03NzA7ZS5jbGVhcj04OTk5O2UuY2xpY2thbHZlb2xhcj00NTA7ZS5jbGlja2RlbnRhbD00NDg7ZS5jbGlja2xhdGVyYWw9NDQ5O2UuY2xpY2tyZXRyb2ZsZXg9NDUxO2UuY2x1Yj05ODI3O2UuY2x1YnN1aXRibGFjaz05ODI3O2UuY2x1YnN1aXR3aGl0ZT05ODMxO2UuY21jdWJlZHNxdWFyZT0xMzIyMDtlLmNtb25vc3BhY2U9NjUzNDc7ZS5jbXNxdWFyZWRzcXVhcmU9MTMyMTY7ZS5jb2FybWVuaWFuPTE0MDk7ZS5jb2xvbj01ODtlLmNvbG9ubW9uZXRhcnk9ODM1MztlLmNvbG9ubW9ub3NwYWNlPTY1MzA2O2UuY29sb25zaWduPTgzNTM7ZS5jb2xvbnNtYWxsPTY1MTA5O2UuY29sb250cmlhbmd1bGFyaGFsZm1vZD03MjE7ZS5jb2xvbnRyaWFuZ3VsYXJtb2Q9NzIwO2UuY29tbWE9NDQ7ZS5jb21tYWFib3ZlY21iPTc4NztlLmNvbW1hYWJvdmVyaWdodGNtYj03ODk7ZS5jb21tYWFjY2VudD02MzE3MTtlLmNvbW1hYXJhYmljPTE1NDg7ZS5jb21tYWFybWVuaWFuPTEzNzM7ZS5jb21tYWluZmVyaW9yPTYzMjAxO2UuY29tbWFtb25vc3BhY2U9NjUyOTI7ZS5jb21tYXJldmVyc2VkYWJvdmVjbWI9Nzg4O2UuY29tbWFyZXZlcnNlZG1vZD03MDE7ZS5jb21tYXNtYWxsPTY1MTA0O2UuY29tbWFzdXBlcmlvcj02MzIwMjtlLmNvbW1hdHVybmVkYWJvdmVjbWI9Nzg2O2UuY29tbWF0dXJuZWRtb2Q9Njk5O2UuY29tcGFzcz05Nzg4O2UuY29uZ3J1ZW50PTg3NzM7ZS5jb250b3VyaW50ZWdyYWw9ODc1MDtlLmNvbnRyb2w9ODk2MztlLmNvbnRyb2xBQ0s9NjtlLmNvbnRyb2xCRUw9NztlLmNvbnRyb2xCUz04O2UuY29udHJvbENBTj0yNDtlLmNvbnRyb2xDUj0xMztlLmNvbnRyb2xEQzE9MTc7ZS5jb250cm9sREMyPTE4O2UuY29udHJvbERDMz0xOTtlLmNvbnRyb2xEQzQ9MjA7ZS5jb250cm9sREVMPTEyNztlLmNvbnRyb2xETEU9MTY7ZS5jb250cm9sRU09MjU7ZS5jb250cm9sRU5RPTU7ZS5jb250cm9sRU9UPTQ7ZS5jb250cm9sRVNDPTI3O2UuY29udHJvbEVUQj0yMztlLmNvbnRyb2xFVFg9MztlLmNvbnRyb2xGRj0xMjtlLmNvbnRyb2xGUz0yODtlLmNvbnRyb2xHUz0yOTtlLmNvbnRyb2xIVD05O2UuY29udHJvbExGPTEwO2UuY29udHJvbE5BSz0yMTtlLmNvbnRyb2xOVUxMPTA7ZS5jb250cm9sUlM9MzA7ZS5jb250cm9sU0k9MTU7ZS5jb250cm9sU089MTQ7ZS5jb250cm9sU09UPTI7ZS5jb250cm9sU1RYPTE7ZS5jb250cm9sU1VCPTI2O2UuY29udHJvbFNZTj0yMjtlLmNvbnRyb2xVUz0zMTtlLmNvbnRyb2xWVD0xMTtlLmNvcHlyaWdodD0xNjk7ZS5jb3B5cmlnaHRzYW5zPTYzNzIxO2UuY29weXJpZ2h0c2VyaWY9NjMxOTM7ZS5jb3JuZXJicmFja2V0bGVmdD0xMjMwMDtlLmNvcm5lcmJyYWNrZXRsZWZ0aGFsZndpZHRoPTY1Mzc4O2UuY29ybmVyYnJhY2tldGxlZnR2ZXJ0aWNhbD02NTA4OTtlLmNvcm5lcmJyYWNrZXRyaWdodD0xMjMwMTtlLmNvcm5lcmJyYWNrZXRyaWdodGhhbGZ3aWR0aD02NTM3OTtlLmNvcm5lcmJyYWNrZXRyaWdodHZlcnRpY2FsPTY1MDkwO2UuY29ycG9yYXRpb25zcXVhcmU9MTMxODM7ZS5jb3NxdWFyZT0xMzI1NTtlLmNvdmVya2dzcXVhcmU9MTMyNTQ7ZS5jcGFyZW49OTM3NDtlLmNydXplaXJvPTgzNTQ7ZS5jc3RyZXRjaGVkPTY2MztlLmN1cmx5YW5kPTg5MTE7ZS5jdXJseW9yPTg5MTA7ZS5jdXJyZW5jeT0xNjQ7ZS5jeXJCcmV2ZT02MzE4NTtlLmN5ckZsZXg9NjMxODY7ZS5jeXJicmV2ZT02MzE4ODtlLmN5cmZsZXg9NjMxODk7ZS5kPTEwMDtlLmRhYXJtZW5pYW49MTM4MDtlLmRhYmVuZ2FsaT0yNDcwO2UuZGFkYXJhYmljPTE1OTA7ZS5kYWRldmE9MjM0MjtlLmRhZGZpbmFsYXJhYmljPTY1MjE0O2UuZGFkaW5pdGlhbGFyYWJpYz02NTIxNTtlLmRhZG1lZGlhbGFyYWJpYz02NTIxNjtlLmRhZ2VzaD0xNDY4O2UuZGFnZXNoaGVicmV3PTE0Njg7ZS5kYWdnZXI9ODIyNDtlLmRhZ2dlcmRibD04MjI1O2UuZGFndWphcmF0aT0yNzI2O2UuZGFndXJtdWtoaT0yNTk4O2UuZGFoaXJhZ2FuYT0xMjM4NDtlLmRha2F0YWthbmE9MTI0ODA7ZS5kYWxhcmFiaWM9MTU4MztlLmRhbGV0PTE0OTE7ZS5kYWxldGRhZ2VzaD02NDMwNztlLmRhbGV0ZGFnZXNoaGVicmV3PTY0MzA3O2UuZGFsZXRoZWJyZXc9MTQ5MTtlLmRhbGZpbmFsYXJhYmljPTY1MTk0O2UuZGFtbWFhcmFiaWM9MTYxNTtlLmRhbW1hbG93YXJhYmljPTE2MTU7ZS5kYW1tYXRhbmFsdG9uZWFyYWJpYz0xNjEyO2UuZGFtbWF0YW5hcmFiaWM9MTYxMjtlLmRhbmRhPTI0MDQ7ZS5kYXJnYWhlYnJldz0xNDQ3O2UuZGFyZ2FsZWZ0aGVicmV3PTE0NDc7ZS5kYXNpYXBuZXVtYXRhY3lyaWxsaWNjbWI9MTE1NztlLmRibEdyYXZlPTYzMTg3O2UuZGJsYW5nbGVicmFja2V0bGVmdD0xMjI5ODtlLmRibGFuZ2xlYnJhY2tldGxlZnR2ZXJ0aWNhbD02NTA4NTtlLmRibGFuZ2xlYnJhY2tldHJpZ2h0PTEyMjk5O2UuZGJsYW5nbGVicmFja2V0cmlnaHR2ZXJ0aWNhbD02NTA4NjtlLmRibGFyY2hpbnZlcnRlZGJlbG93Y21iPTgxMTtlLmRibGFycm93bGVmdD04NjYwO2UuZGJsYXJyb3dyaWdodD04NjU4O2UuZGJsZGFuZGE9MjQwNTtlLmRibGdyYXZlPTYzMTkwO2UuZGJsZ3JhdmVjbWI9NzgzO2UuZGJsaW50ZWdyYWw9ODc0ODtlLmRibGxvd2xpbmU9ODIxNTtlLmRibGxvd2xpbmVjbWI9ODE5O2UuZGJsb3ZlcmxpbmVjbWI9ODMxO2UuZGJscHJpbWVtb2Q9Njk4O2UuZGJsdmVydGljYWxiYXI9ODIxNDtlLmRibHZlcnRpY2FsbGluZWFib3ZlY21iPTc4MjtlLmRib3BvbW9mbz0xMjU1MztlLmRic3F1YXJlPTEzMjU2O2UuZGNhcm9uPTI3MTtlLmRjZWRpbGxhPTc2OTc7ZS5kY2lyY2xlPTk0Mjc7ZS5kY2lyY3VtZmxleGJlbG93PTc2OTk7ZS5kY3JvYXQ9MjczO2UuZGRhYmVuZ2FsaT0yNDY1O2UuZGRhZGV2YT0yMzM3O2UuZGRhZ3VqYXJhdGk9MjcyMTtlLmRkYWd1cm11a2hpPTI1OTM7ZS5kZGFsYXJhYmljPTE2NzI7ZS5kZGFsZmluYWxhcmFiaWM9NjQzOTM7ZS5kZGRoYWRldmE9MjM5NjtlLmRkaGFiZW5nYWxpPTI0NjY7ZS5kZGhhZGV2YT0yMzM4O2UuZGRoYWd1amFyYXRpPTI3MjI7ZS5kZGhhZ3VybXVraGk9MjU5NDtlLmRkb3RhY2NlbnQ9NzY5MTtlLmRkb3RiZWxvdz03NjkzO2UuZGVjaW1hbHNlcGFyYXRvcmFyYWJpYz0xNjQzO2UuZGVjaW1hbHNlcGFyYXRvcnBlcnNpYW49MTY0MztlLmRlY3lyaWxsaWM9MTA3NjtlLmRlZ3JlZT0xNzY7ZS5kZWhpaGVicmV3PTE0NTM7ZS5kZWhpcmFnYW5hPTEyMzkxO2UuZGVpY29wdGljPTEwMDc7ZS5kZWthdGFrYW5hPTEyNDg3O2UuZGVsZXRlbGVmdD05MDAzO2UuZGVsZXRlcmlnaHQ9ODk5ODtlLmRlbHRhPTk0ODtlLmRlbHRhdHVybmVkPTM5NztlLmRlbm9taW5hdG9ybWludXNvbmVudW1lcmF0b3JiZW5nYWxpPTI1NTI7ZS5kZXpoPTY3NjtlLmRoYWJlbmdhbGk9MjQ3MTtlLmRoYWRldmE9MjM0MztlLmRoYWd1amFyYXRpPTI3Mjc7ZS5kaGFndXJtdWtoaT0yNTk5O2UuZGhvb2s9NTk5O2UuZGlhbHl0aWthdG9ub3M9OTAxO2UuZGlhbHl0aWthdG9ub3NjbWI9ODM2O2UuZGlhbW9uZD05ODMwO2UuZGlhbW9uZHN1aXR3aGl0ZT05ODI2O2UuZGllcmVzaXM9MTY4O2UuZGllcmVzaXNhY3V0ZT02MzE5MTtlLmRpZXJlc2lzYmVsb3djbWI9ODA0O2UuZGllcmVzaXNjbWI9Nzc2O2UuZGllcmVzaXNncmF2ZT02MzE5MjtlLmRpZXJlc2lzdG9ub3M9OTAxO2UuZGloaXJhZ2FuYT0xMjM4NjtlLmRpa2F0YWthbmE9MTI0ODI7ZS5kaXR0b21hcms9MTIyOTE7ZS5kaXZpZGU9MjQ3O2UuZGl2aWRlcz04NzM5O2UuZGl2aXNpb25zbGFzaD04NzI1O2UuZGplY3lyaWxsaWM9MTEwNjtlLmRrc2hhZGU9OTYxOTtlLmRsaW5lYmVsb3c9NzY5NTtlLmRsc3F1YXJlPTEzMjA3O2UuZG1hY3Jvbj0yNzM7ZS5kbW9ub3NwYWNlPTY1MzQ4O2UuZG5ibG9jaz05NjA0O2UuZG9jaGFkYXRoYWk9MzU5ODtlLmRvZGVrdGhhaT0zNjA0O2UuZG9oaXJhZ2FuYT0xMjM5MztlLmRva2F0YWthbmE9MTI0ODk7ZS5kb2xsYXI9MzY7ZS5kb2xsYXJpbmZlcmlvcj02MzIwMztlLmRvbGxhcm1vbm9zcGFjZT02NTI4NDtlLmRvbGxhcm9sZHN0eWxlPTYzMjY4O2UuZG9sbGFyc21hbGw9NjUxMjk7ZS5kb2xsYXJzdXBlcmlvcj02MzIwNDtlLmRvbmc9ODM2MztlLmRvcnVzcXVhcmU9MTMwOTQ7ZS5kb3RhY2NlbnQ9NzI5O2UuZG90YWNjZW50Y21iPTc3NTtlLmRvdGJlbG93Y21iPTgwMztlLmRvdGJlbG93Y29tYj04MDM7ZS5kb3RrYXRha2FuYT0xMjUzOTtlLmRvdGxlc3NpPTMwNTtlLmRvdGxlc3NqPTYzMTY2O2UuZG90bGVzc2pzdHJva2Vob29rPTY0NDtlLmRvdG1hdGg9ODkwMTtlLmRvdHRlZGNpcmNsZT05Njc2O2UuZG91YmxleW9kcGF0YWg9NjQyODc7ZS5kb3VibGV5b2RwYXRhaGhlYnJldz02NDI4NztlLmRvd250YWNrYmVsb3djbWI9Nzk4O2UuZG93bnRhY2ttb2Q9NzI1O2UuZHBhcmVuPTkzNzU7ZS5kc3VwZXJpb3I9NjMyMTE7ZS5kdGFpbD01OTg7ZS5kdG9wYmFyPTM5NjtlLmR1aGlyYWdhbmE9MTIzODk7ZS5kdWthdGFrYW5hPTEyNDg1O2UuZHo9NDk5O2UuZHphbHRvbmU9Njc1O2UuZHpjYXJvbj00NTQ7ZS5kemN1cmw9Njc3O2UuZHplYWJraGFzaWFuY3lyaWxsaWM9MTI0OTtlLmR6ZWN5cmlsbGljPTExMDk7ZS5kemhlY3lyaWxsaWM9MTExOTtlLmU9MTAxO2UuZWFjdXRlPTIzMztlLmVhcnRoPTk3OTM7ZS5lYmVuZ2FsaT0yNDQ3O2UuZWJvcG9tb2ZvPTEyNTcyO2UuZWJyZXZlPTI3NztlLmVjYW5kcmFkZXZhPTIzMTc7ZS5lY2FuZHJhZ3VqYXJhdGk9MjcwMTtlLmVjYW5kcmF2b3dlbHNpZ25kZXZhPTIzNzM7ZS5lY2FuZHJhdm93ZWxzaWduZ3VqYXJhdGk9Mjc1NztlLmVjYXJvbj0yODM7ZS5lY2VkaWxsYWJyZXZlPTc3MDk7ZS5lY2hhcm1lbmlhbj0xMzgxO2UuZWNoeWl3bmFybWVuaWFuPTE0MTU7ZS5lY2lyY2xlPTk0Mjg7ZS5lY2lyY3VtZmxleD0yMzQ7ZS5lY2lyY3VtZmxleGFjdXRlPTc4NzE7ZS5lY2lyY3VtZmxleGJlbG93PTc3MDU7ZS5lY2lyY3VtZmxleGRvdGJlbG93PTc4Nzk7ZS5lY2lyY3VtZmxleGdyYXZlPTc4NzM7ZS5lY2lyY3VtZmxleGhvb2thYm92ZT03ODc1O2UuZWNpcmN1bWZsZXh0aWxkZT03ODc3O2UuZWN5cmlsbGljPTExMDg7ZS5lZGJsZ3JhdmU9NTE3O2UuZWRldmE9MjMxOTtlLmVkaWVyZXNpcz0yMzU7ZS5lZG90PTI3OTtlLmVkb3RhY2NlbnQ9Mjc5O2UuZWRvdGJlbG93PTc4NjU7ZS5lZWd1cm11a2hpPTI1NzU7ZS5lZW1hdHJhZ3VybXVraGk9MjYzMTtlLmVmY3lyaWxsaWM9MTA5MjtlLmVncmF2ZT0yMzI7ZS5lZ3VqYXJhdGk9MjcwMztlLmVoYXJtZW5pYW49MTM4MztlLmVoYm9wb21vZm89MTI1NzM7ZS5laGlyYWdhbmE9MTIzNjA7ZS5laG9va2Fib3ZlPTc4Njc7ZS5laWJvcG9tb2ZvPTEyNTc1O2UuZWlnaHQ9NTY7ZS5laWdodGFyYWJpYz0xNjQwO2UuZWlnaHRiZW5nYWxpPTI1NDI7ZS5laWdodGNpcmNsZT05MzE5O2UuZWlnaHRjaXJjbGVpbnZlcnNlc2Fuc3NlcmlmPTEwMTI5O2UuZWlnaHRkZXZhPTI0MTQ7ZS5laWdodGVlbmNpcmNsZT05MzI5O2UuZWlnaHRlZW5wYXJlbj05MzQ5O2UuZWlnaHRlZW5wZXJpb2Q9OTM2OTtlLmVpZ2h0Z3VqYXJhdGk9Mjc5ODtlLmVpZ2h0Z3VybXVraGk9MjY3MDtlLmVpZ2h0aGFja2FyYWJpYz0xNjQwO2UuZWlnaHRoYW5nemhvdT0xMjMyODtlLmVpZ2h0aG5vdGViZWFtZWQ9OTgzNTtlLmVpZ2h0aWRlb2dyYXBoaWNwYXJlbj0xMjgzOTtlLmVpZ2h0aW5mZXJpb3I9ODMyODtlLmVpZ2h0bW9ub3NwYWNlPTY1MzA0O2UuZWlnaHRvbGRzdHlsZT02MzI4ODtlLmVpZ2h0cGFyZW49OTMzOTtlLmVpZ2h0cGVyaW9kPTkzNTk7ZS5laWdodHBlcnNpYW49MTc4NDtlLmVpZ2h0cm9tYW49ODU2NztlLmVpZ2h0c3VwZXJpb3I9ODMxMjtlLmVpZ2h0dGhhaT0zNjcyO2UuZWludmVydGVkYnJldmU9NTE5O2UuZWlvdGlmaWVkY3lyaWxsaWM9MTEyNTtlLmVrYXRha2FuYT0xMjQ1NjtlLmVrYXRha2FuYWhhbGZ3aWR0aD02NTM5NjtlLmVrb25rYXJndXJtdWtoaT0yNjc2O2UuZWtvcmVhbj0xMjYyODtlLmVsY3lyaWxsaWM9MTA4MztlLmVsZW1lbnQ9ODcxMjtlLmVsZXZlbmNpcmNsZT05MzIyO2UuZWxldmVucGFyZW49OTM0MjtlLmVsZXZlbnBlcmlvZD05MzYyO2UuZWxldmVucm9tYW49ODU3MDtlLmVsbGlwc2lzPTgyMzA7ZS5lbGxpcHNpc3ZlcnRpY2FsPTg5NDI7ZS5lbWFjcm9uPTI3NTtlLmVtYWNyb25hY3V0ZT03NzAzO2UuZW1hY3JvbmdyYXZlPTc3MDE7ZS5lbWN5cmlsbGljPTEwODQ7ZS5lbWRhc2g9ODIxMjtlLmVtZGFzaHZlcnRpY2FsPTY1MDczO2UuZW1vbm9zcGFjZT02NTM0OTtlLmVtcGhhc2lzbWFya2FybWVuaWFuPTEzNzE7ZS5lbXB0eXNldD04NzA5O2UuZW5ib3BvbW9mbz0xMjU3OTtlLmVuY3lyaWxsaWM9MTA4NTtlLmVuZGFzaD04MjExO2UuZW5kYXNodmVydGljYWw9NjUwNzQ7ZS5lbmRlc2NlbmRlcmN5cmlsbGljPTExODc7ZS5lbmc9MzMxO2UuZW5nYm9wb21vZm89MTI1ODE7ZS5lbmdoZWN5cmlsbGljPTExODk7ZS5lbmhvb2tjeXJpbGxpYz0xMjI0O2UuZW5zcGFjZT04MTk0O2UuZW9nb25laz0yODE7ZS5lb2tvcmVhbj0xMjYyNztlLmVvcGVuPTYwMztlLmVvcGVuY2xvc2VkPTY2NjtlLmVvcGVucmV2ZXJzZWQ9NjA0O2UuZW9wZW5yZXZlcnNlZGNsb3NlZD02MDY7ZS5lb3BlbnJldmVyc2VkaG9vaz02MDU7ZS5lcGFyZW49OTM3NjtlLmVwc2lsb249OTQ5O2UuZXBzaWxvbnRvbm9zPTk0MTtlLmVxdWFsPTYxO2UuZXF1YWxtb25vc3BhY2U9NjUzMDk7ZS5lcXVhbHNtYWxsPTY1MTI2O2UuZXF1YWxzdXBlcmlvcj04MzE2O2UuZXF1aXZhbGVuY2U9ODgwMTtlLmVyYm9wb21vZm89MTI1ODI7ZS5lcmN5cmlsbGljPTEwODg7ZS5lcmV2ZXJzZWQ9NjAwO2UuZXJldmVyc2VkY3lyaWxsaWM9MTEwMTtlLmVzY3lyaWxsaWM9MTA4OTtlLmVzZGVzY2VuZGVyY3lyaWxsaWM9MTE5NTtlLmVzaD02NDM7ZS5lc2hjdXJsPTY0NjtlLmVzaG9ydGRldmE9MjMxODtlLmVzaG9ydHZvd2Vsc2lnbmRldmE9MjM3NDtlLmVzaHJldmVyc2VkbG9vcD00MjY7ZS5lc2hzcXVhdHJldmVyc2VkPTY0NTtlLmVzbWFsbGhpcmFnYW5hPTEyMzU5O2UuZXNtYWxsa2F0YWthbmE9MTI0NTU7ZS5lc21hbGxrYXRha2FuYWhhbGZ3aWR0aD02NTM4NjtlLmVzdGltYXRlZD04NDk0O2UuZXN1cGVyaW9yPTYzMjEyO2UuZXRhPTk1MTtlLmV0YXJtZW5pYW49MTM4NDtlLmV0YXRvbm9zPTk0MjtlLmV0aD0yNDA7ZS5ldGlsZGU9Nzg2OTtlLmV0aWxkZWJlbG93PTc3MDc7ZS5ldG5haHRhZm91a2hoZWJyZXc9MTQyNTtlLmV0bmFodGFmb3VraGxlZnRoZWJyZXc9MTQyNTtlLmV0bmFodGFoZWJyZXc9MTQyNTtlLmV0bmFodGFsZWZ0aGVicmV3PTE0MjU7ZS5ldHVybmVkPTQ3NztlLmV1a29yZWFuPTEyNjQxO2UuZXVybz04MzY0O2UuZXZvd2Vsc2lnbmJlbmdhbGk9MjUwMztlLmV2b3dlbHNpZ25kZXZhPTIzNzU7ZS5ldm93ZWxzaWduZ3VqYXJhdGk9Mjc1OTtlLmV4Y2xhbT0zMztlLmV4Y2xhbWFybWVuaWFuPTEzNzI7ZS5leGNsYW1kYmw9ODI1MjtlLmV4Y2xhbWRvd249MTYxO2UuZXhjbGFtZG93bnNtYWxsPTYzMzkzO2UuZXhjbGFtbW9ub3NwYWNlPTY1MjgxO2UuZXhjbGFtc21hbGw9NjMyNjU7ZS5leGlzdGVudGlhbD04NzA3O2UuZXpoPTY1ODtlLmV6aGNhcm9uPTQ5NTtlLmV6aGN1cmw9NjU5O2UuZXpocmV2ZXJzZWQ9NDQxO2UuZXpodGFpbD00NDI7ZS5mPTEwMjtlLmZhZGV2YT0yMzk4O2UuZmFndXJtdWtoaT0yNjU0O2UuZmFocmVuaGVpdD04NDU3O2UuZmF0aGFhcmFiaWM9MTYxNDtlLmZhdGhhbG93YXJhYmljPTE2MTQ7ZS5mYXRoYXRhbmFyYWJpYz0xNjExO2UuZmJvcG9tb2ZvPTEyNTUyO2UuZmNpcmNsZT05NDI5O2UuZmRvdGFjY2VudD03NzExO2UuZmVoYXJhYmljPTE2MDE7ZS5mZWhhcm1lbmlhbj0xNDE0O2UuZmVoZmluYWxhcmFiaWM9NjUyMzQ7ZS5mZWhpbml0aWFsYXJhYmljPTY1MjM1O2UuZmVobWVkaWFsYXJhYmljPTY1MjM2O2UuZmVpY29wdGljPTk5NztlLmZlbWFsZT05NzkyO2UuZmY9NjQyNTY7ZS5mX2Y9NjQyNTY7ZS5mZmk9NjQyNTk7ZS5mX2ZfaT02NDI1OTtlLmZmbD02NDI2MDtlLmZfZl9sPTY0MjYwO2UuZmk9NjQyNTc7ZS5mX2k9NjQyNTc7ZS5maWZ0ZWVuY2lyY2xlPTkzMjY7ZS5maWZ0ZWVucGFyZW49OTM0NjtlLmZpZnRlZW5wZXJpb2Q9OTM2NjtlLmZpZ3VyZWRhc2g9ODIxMDtlLmZpbGxlZGJveD05NjMyO2UuZmlsbGVkcmVjdD05NjQ0O2UuZmluYWxrYWY9MTQ5ODtlLmZpbmFsa2FmZGFnZXNoPTY0MzE0O2UuZmluYWxrYWZkYWdlc2hoZWJyZXc9NjQzMTQ7ZS5maW5hbGthZmhlYnJldz0xNDk4O2UuZmluYWxtZW09MTUwMTtlLmZpbmFsbWVtaGVicmV3PTE1MDE7ZS5maW5hbG51bj0xNTAzO2UuZmluYWxudW5oZWJyZXc9MTUwMztlLmZpbmFscGU9MTUwNztlLmZpbmFscGVoZWJyZXc9MTUwNztlLmZpbmFsdHNhZGk9MTUwOTtlLmZpbmFsdHNhZGloZWJyZXc9MTUwOTtlLmZpcnN0dG9uZWNoaW5lc2U9NzEzO2UuZmlzaGV5ZT05NjczO2UuZml0YWN5cmlsbGljPTExMzk7ZS5maXZlPTUzO2UuZml2ZWFyYWJpYz0xNjM3O2UuZml2ZWJlbmdhbGk9MjUzOTtlLmZpdmVjaXJjbGU9OTMxNjtlLmZpdmVjaXJjbGVpbnZlcnNlc2Fuc3NlcmlmPTEwMTI2O2UuZml2ZWRldmE9MjQxMTtlLmZpdmVlaWdodGhzPTg1NDE7ZS5maXZlZ3VqYXJhdGk9Mjc5NTtlLmZpdmVndXJtdWtoaT0yNjY3O2UuZml2ZWhhY2thcmFiaWM9MTYzNztlLmZpdmVoYW5nemhvdT0xMjMyNTtlLmZpdmVpZGVvZ3JhcGhpY3BhcmVuPTEyODM2O2UuZml2ZWluZmVyaW9yPTgzMjU7ZS5maXZlbW9ub3NwYWNlPTY1MzAxO2UuZml2ZW9sZHN0eWxlPTYzMjg1O2UuZml2ZXBhcmVuPTkzMzY7ZS5maXZlcGVyaW9kPTkzNTY7ZS5maXZlcGVyc2lhbj0xNzgxO2UuZml2ZXJvbWFuPTg1NjQ7ZS5maXZlc3VwZXJpb3I9ODMwOTtlLmZpdmV0aGFpPTM2Njk7ZS5mbD02NDI1ODtlLmZfbD02NDI1ODtlLmZsb3Jpbj00MDI7ZS5mbW9ub3NwYWNlPTY1MzUwO2UuZm1zcXVhcmU9MTMyMDk7ZS5mb2ZhbnRoYWk9MzYxNTtlLmZvZmF0aGFpPTM2MTM7ZS5mb25nbWFudGhhaT0zNjYzO2UuZm9yYWxsPTg3MDQ7ZS5mb3VyPTUyO2UuZm91cmFyYWJpYz0xNjM2O2UuZm91cmJlbmdhbGk9MjUzODtlLmZvdXJjaXJjbGU9OTMxNTtlLmZvdXJjaXJjbGVpbnZlcnNlc2Fuc3NlcmlmPTEwMTI1O2UuZm91cmRldmE9MjQxMDtlLmZvdXJndWphcmF0aT0yNzk0O2UuZm91cmd1cm11a2hpPTI2NjY7ZS5mb3VyaGFja2FyYWJpYz0xNjM2O2UuZm91cmhhbmd6aG91PTEyMzI0O2UuZm91cmlkZW9ncmFwaGljcGFyZW49MTI4MzU7ZS5mb3VyaW5mZXJpb3I9ODMyNDtlLmZvdXJtb25vc3BhY2U9NjUzMDA7ZS5mb3VybnVtZXJhdG9yYmVuZ2FsaT0yNTUxO2UuZm91cm9sZHN0eWxlPTYzMjg0O2UuZm91cnBhcmVuPTkzMzU7ZS5mb3VycGVyaW9kPTkzNTU7ZS5mb3VycGVyc2lhbj0xNzgwO2UuZm91cnJvbWFuPTg1NjM7ZS5mb3Vyc3VwZXJpb3I9ODMwODtlLmZvdXJ0ZWVuY2lyY2xlPTkzMjU7ZS5mb3VydGVlbnBhcmVuPTkzNDU7ZS5mb3VydGVlbnBlcmlvZD05MzY1O2UuZm91cnRoYWk9MzY2ODtlLmZvdXJ0aHRvbmVjaGluZXNlPTcxNTtlLmZwYXJlbj05Mzc3O2UuZnJhY3Rpb249ODI2MDtlLmZyYW5jPTgzNTU7ZS5nPTEwMztlLmdhYmVuZ2FsaT0yNDU1O2UuZ2FjdXRlPTUwMTtlLmdhZGV2YT0yMzI3O2UuZ2FmYXJhYmljPTE3MTE7ZS5nYWZmaW5hbGFyYWJpYz02NDQwMztlLmdhZmluaXRpYWxhcmFiaWM9NjQ0MDQ7ZS5nYWZtZWRpYWxhcmFiaWM9NjQ0MDU7ZS5nYWd1amFyYXRpPTI3MTE7ZS5nYWd1cm11a2hpPTI1ODM7ZS5nYWhpcmFnYW5hPTEyMzY0O2UuZ2FrYXRha2FuYT0xMjQ2MDtlLmdhbW1hPTk0NztlLmdhbW1hbGF0aW5zbWFsbD02MTE7ZS5nYW1tYXN1cGVyaW9yPTczNjtlLmdhbmdpYWNvcHRpYz0xMDAzO2UuZ2JvcG9tb2ZvPTEyNTU3O2UuZ2JyZXZlPTI4NztlLmdjYXJvbj00ODc7ZS5nY2VkaWxsYT0yOTE7ZS5nY2lyY2xlPTk0MzA7ZS5nY2lyY3VtZmxleD0yODU7ZS5nY29tbWFhY2NlbnQ9MjkxO2UuZ2RvdD0yODk7ZS5nZG90YWNjZW50PTI4OTtlLmdlY3lyaWxsaWM9MTA3NTtlLmdlaGlyYWdhbmE9MTIzNzA7ZS5nZWthdGFrYW5hPTEyNDY2O2UuZ2VvbWV0cmljYWxseWVxdWFsPTg3ODU7ZS5nZXJlc2hhY2NlbnRoZWJyZXc9MTQzNjtlLmdlcmVzaGhlYnJldz0xNTIzO2UuZ2VyZXNobXVxZGFtaGVicmV3PTE0Mzc7ZS5nZXJtYW5kYmxzPTIyMztlLmdlcnNoYXlpbWFjY2VudGhlYnJldz0xNDM4O2UuZ2Vyc2hheWltaGVicmV3PTE1MjQ7ZS5nZXRhbWFyaz0xMjMwNztlLmdoYWJlbmdhbGk9MjQ1NjtlLmdoYWRhcm1lbmlhbj0xMzk0O2UuZ2hhZGV2YT0yMzI4O2UuZ2hhZ3VqYXJhdGk9MjcxMjtlLmdoYWd1cm11a2hpPTI1ODQ7ZS5naGFpbmFyYWJpYz0xNTk0O2UuZ2hhaW5maW5hbGFyYWJpYz02NTIzMDtlLmdoYWluaW5pdGlhbGFyYWJpYz02NTIzMTtlLmdoYWlubWVkaWFsYXJhYmljPTY1MjMyO2UuZ2hlbWlkZGxlaG9va2N5cmlsbGljPTExNzM7ZS5naGVzdHJva2VjeXJpbGxpYz0xMTcxO2UuZ2hldXB0dXJuY3lyaWxsaWM9MTE2OTtlLmdoaGFkZXZhPTIzOTQ7ZS5naGhhZ3VybXVraGk9MjY1MDtlLmdob29rPTYwODtlLmdoenNxdWFyZT0xMzIwMztlLmdpaGlyYWdhbmE9MTIzNjY7ZS5naWthdGFrYW5hPTEyNDYyO2UuZ2ltYXJtZW5pYW49MTM3OTtlLmdpbWVsPTE0OTA7ZS5naW1lbGRhZ2VzaD02NDMwNjtlLmdpbWVsZGFnZXNoaGVicmV3PTY0MzA2O2UuZ2ltZWxoZWJyZXc9MTQ5MDtlLmdqZWN5cmlsbGljPTExMDc7ZS5nbG90dGFsaW52ZXJ0ZWRzdHJva2U9NDQ2O2UuZ2xvdHRhbHN0b3A9NjYwO2UuZ2xvdHRhbHN0b3BpbnZlcnRlZD02NjI7ZS5nbG90dGFsc3RvcG1vZD03MDQ7ZS5nbG90dGFsc3RvcHJldmVyc2VkPTY2MTtlLmdsb3R0YWxzdG9wcmV2ZXJzZWRtb2Q9NzA1O2UuZ2xvdHRhbHN0b3ByZXZlcnNlZHN1cGVyaW9yPTc0MDtlLmdsb3R0YWxzdG9wc3Ryb2tlPTY3MztlLmdsb3R0YWxzdG9wc3Ryb2tlcmV2ZXJzZWQ9Njc0O2UuZ21hY3Jvbj03NzEzO2UuZ21vbm9zcGFjZT02NTM1MTtlLmdvaGlyYWdhbmE9MTIzNzI7ZS5nb2thdGFrYW5hPTEyNDY4O2UuZ3BhcmVuPTkzNzg7ZS5ncGFzcXVhcmU9MTMyMjg7ZS5ncmFkaWVudD04NzExO2UuZ3JhdmU9OTY7ZS5ncmF2ZWJlbG93Y21iPTc5MDtlLmdyYXZlY21iPTc2ODtlLmdyYXZlY29tYj03Njg7ZS5ncmF2ZWRldmE9MjM4NztlLmdyYXZlbG93bW9kPTcxODtlLmdyYXZlbW9ub3NwYWNlPTY1MzQ0O2UuZ3JhdmV0b25lY21iPTgzMjtlLmdyZWF0ZXI9NjI7ZS5ncmVhdGVyZXF1YWw9ODgwNTtlLmdyZWF0ZXJlcXVhbG9ybGVzcz04OTIzO2UuZ3JlYXRlcm1vbm9zcGFjZT02NTMxMDtlLmdyZWF0ZXJvcmVxdWl2YWxlbnQ9ODgxOTtlLmdyZWF0ZXJvcmxlc3M9ODgyMztlLmdyZWF0ZXJvdmVyZXF1YWw9ODgwNztlLmdyZWF0ZXJzbWFsbD02NTEyNTtlLmdzY3JpcHQ9NjA5O2UuZ3N0cm9rZT00ODU7ZS5ndWhpcmFnYW5hPTEyMzY4O2UuZ3VpbGxlbW90bGVmdD0xNzE7ZS5ndWlsbGVtb3RyaWdodD0xODc7ZS5ndWlsc2luZ2xsZWZ0PTgyNDk7ZS5ndWlsc2luZ2xyaWdodD04MjUwO2UuZ3VrYXRha2FuYT0xMjQ2NDtlLmd1cmFtdXNxdWFyZT0xMzA4MDtlLmd5c3F1YXJlPTEzMjU3O2UuaD0xMDQ7ZS5oYWFia2hhc2lhbmN5cmlsbGljPTExOTM7ZS5oYWFsdG9uZWFyYWJpYz0xNzI5O2UuaGFiZW5nYWxpPTI0ODk7ZS5oYWRlc2NlbmRlcmN5cmlsbGljPTEyMDM7ZS5oYWRldmE9MjM2MTtlLmhhZ3VqYXJhdGk9Mjc0NTtlLmhhZ3VybXVraGk9MjYxNztlLmhhaGFyYWJpYz0xNTgxO2UuaGFoZmluYWxhcmFiaWM9NjUxODY7ZS5oYWhpbml0aWFsYXJhYmljPTY1MTg3O2UuaGFoaXJhZ2FuYT0xMjM5OTtlLmhhaG1lZGlhbGFyYWJpYz02NTE4ODtlLmhhaXR1c3F1YXJlPTEzMDk4O2UuaGFrYXRha2FuYT0xMjQ5NTtlLmhha2F0YWthbmFoYWxmd2lkdGg9NjU0MTg7ZS5oYWxhbnRndXJtdWtoaT0yNjM3O2UuaGFtemFhcmFiaWM9MTU2OTtlLmhhbXphbG93YXJhYmljPTE1Njk7ZS5oYW5ndWxmaWxsZXI9MTI2NDQ7ZS5oYXJkc2lnbmN5cmlsbGljPTEwOTg7ZS5oYXJwb29ubGVmdGJhcmJ1cD04NjM2O2UuaGFycG9vbnJpZ2h0YmFyYnVwPTg2NDA7ZS5oYXNxdWFyZT0xMzI1ODtlLmhhdGFmcGF0YWg9MTQ1ODtlLmhhdGFmcGF0YWgxNj0xNDU4O2UuaGF0YWZwYXRhaDIzPTE0NTg7ZS5oYXRhZnBhdGFoMmY9MTQ1ODtlLmhhdGFmcGF0YWhoZWJyZXc9MTQ1ODtlLmhhdGFmcGF0YWhuYXJyb3doZWJyZXc9MTQ1ODtlLmhhdGFmcGF0YWhxdWFydGVyaGVicmV3PTE0NTg7ZS5oYXRhZnBhdGFod2lkZWhlYnJldz0xNDU4O2UuaGF0YWZxYW1hdHM9MTQ1OTtlLmhhdGFmcWFtYXRzMWI9MTQ1OTtlLmhhdGFmcWFtYXRzMjg9MTQ1OTtlLmhhdGFmcWFtYXRzMzQ9MTQ1OTtlLmhhdGFmcWFtYXRzaGVicmV3PTE0NTk7ZS5oYXRhZnFhbWF0c25hcnJvd2hlYnJldz0xNDU5O2UuaGF0YWZxYW1hdHNxdWFydGVyaGVicmV3PTE0NTk7ZS5oYXRhZnFhbWF0c3dpZGVoZWJyZXc9MTQ1OTtlLmhhdGFmc2Vnb2w9MTQ1NztlLmhhdGFmc2Vnb2wxNz0xNDU3O2UuaGF0YWZzZWdvbDI0PTE0NTc7ZS5oYXRhZnNlZ29sMzA9MTQ1NztlLmhhdGFmc2Vnb2xoZWJyZXc9MTQ1NztlLmhhdGFmc2Vnb2xuYXJyb3doZWJyZXc9MTQ1NztlLmhhdGFmc2Vnb2xxdWFydGVyaGVicmV3PTE0NTc7ZS5oYXRhZnNlZ29sd2lkZWhlYnJldz0xNDU3O2UuaGJhcj0yOTU7ZS5oYm9wb21vZm89MTI1NTk7ZS5oYnJldmViZWxvdz03NzIzO2UuaGNlZGlsbGE9NzcyMTtlLmhjaXJjbGU9OTQzMTtlLmhjaXJjdW1mbGV4PTI5MztlLmhkaWVyZXNpcz03NzE5O2UuaGRvdGFjY2VudD03NzE1O2UuaGRvdGJlbG93PTc3MTc7ZS5oZT0xNDkyO2UuaGVhcnQ9OTgyOTtlLmhlYXJ0c3VpdGJsYWNrPTk4Mjk7ZS5oZWFydHN1aXR3aGl0ZT05ODI1O2UuaGVkYWdlc2g9NjQzMDg7ZS5oZWRhZ2VzaGhlYnJldz02NDMwODtlLmhlaGFsdG9uZWFyYWJpYz0xNzI5O2UuaGVoYXJhYmljPTE2MDc7ZS5oZWhlYnJldz0xNDkyO2UuaGVoZmluYWxhbHRvbmVhcmFiaWM9NjQ0MjM7ZS5oZWhmaW5hbGFsdHR3b2FyYWJpYz02NTI1ODtlLmhlaGZpbmFsYXJhYmljPTY1MjU4O2UuaGVoaGFtemFhYm92ZWZpbmFsYXJhYmljPTY0NDIxO2UuaGVoaGFtemFhYm92ZWlzb2xhdGVkYXJhYmljPTY0NDIwO2UuaGVoaW5pdGlhbGFsdG9uZWFyYWJpYz02NDQyNDtlLmhlaGluaXRpYWxhcmFiaWM9NjUyNTk7ZS5oZWhpcmFnYW5hPTEyNDA4O2UuaGVobWVkaWFsYWx0b25lYXJhYmljPTY0NDI1O2UuaGVobWVkaWFsYXJhYmljPTY1MjYwO2UuaGVpc2VpZXJhc3F1YXJlPTEzMTc5O2UuaGVrYXRha2FuYT0xMjUwNDtlLmhla2F0YWthbmFoYWxmd2lkdGg9NjU0MjE7ZS5oZWt1dGFhcnVzcXVhcmU9MTMxMTA7ZS5oZW5naG9vaz02MTU7ZS5oZXJ1dHVzcXVhcmU9MTMxMTM7ZS5oZXQ9MTQ5NTtlLmhldGhlYnJldz0xNDk1O2UuaGhvb2s9NjE0O2UuaGhvb2tzdXBlcmlvcj02ODk7ZS5oaWV1aGFjaXJjbGVrb3JlYW49MTI5MjM7ZS5oaWV1aGFwYXJlbmtvcmVhbj0xMjgyNztlLmhpZXVoY2lyY2xla29yZWFuPTEyOTA5O2UuaGlldWhrb3JlYW49MTI2MjI7ZS5oaWV1aHBhcmVua29yZWFuPTEyODEzO2UuaGloaXJhZ2FuYT0xMjQwMjtlLmhpa2F0YWthbmE9MTI0OTg7ZS5oaWthdGFrYW5haGFsZndpZHRoPTY1NDE5O2UuaGlyaXE9MTQ2MDtlLmhpcmlxMTQ9MTQ2MDtlLmhpcmlxMjE9MTQ2MDtlLmhpcmlxMmQ9MTQ2MDtlLmhpcmlxaGVicmV3PTE0NjA7ZS5oaXJpcW5hcnJvd2hlYnJldz0xNDYwO2UuaGlyaXFxdWFydGVyaGVicmV3PTE0NjA7ZS5oaXJpcXdpZGVoZWJyZXc9MTQ2MDtlLmhsaW5lYmVsb3c9NzgzMDtlLmhtb25vc3BhY2U9NjUzNTI7ZS5ob2FybWVuaWFuPTEzOTI7ZS5ob2hpcHRoYWk9MzYyNztlLmhvaGlyYWdhbmE9MTI0MTE7ZS5ob2thdGFrYW5hPTEyNTA3O2UuaG9rYXRha2FuYWhhbGZ3aWR0aD02NTQyMjtlLmhvbGFtPTE0NjU7ZS5ob2xhbTE5PTE0NjU7ZS5ob2xhbTI2PTE0NjU7ZS5ob2xhbTMyPTE0NjU7ZS5ob2xhbWhlYnJldz0xNDY1O2UuaG9sYW1uYXJyb3doZWJyZXc9MTQ2NTtlLmhvbGFtcXVhcnRlcmhlYnJldz0xNDY1O2UuaG9sYW13aWRlaGVicmV3PTE0NjU7ZS5ob25va2h1a3RoYWk9MzYzMDtlLmhvb2thYm92ZWNvbWI9Nzc3O2UuaG9va2NtYj03Nzc7ZS5ob29rcGFsYXRhbGl6ZWRiZWxvd2NtYj04MDE7ZS5ob29rcmV0cm9mbGV4YmVsb3djbWI9ODAyO2UuaG9vbnNxdWFyZT0xMzEyMjtlLmhvcmljb3B0aWM9MTAwMTtlLmhvcml6b250YWxiYXI9ODIxMztlLmhvcm5jbWI9Nzk1O2UuaG90c3ByaW5ncz05ODMyO2UuaG91c2U9ODk2MjtlLmhwYXJlbj05Mzc5O2UuaHN1cGVyaW9yPTY4ODtlLmh0dXJuZWQ9NjEzO2UuaHVoaXJhZ2FuYT0xMjQwNTtlLmh1aWl0b3NxdWFyZT0xMzEwNztlLmh1a2F0YWthbmE9MTI1MDE7ZS5odWthdGFrYW5haGFsZndpZHRoPTY1NDIwO2UuaHVuZ2FydW1sYXV0PTczMztlLmh1bmdhcnVtbGF1dGNtYj03Nzk7ZS5odj00MDU7ZS5oeXBoZW49NDU7ZS5oeXBoZW5pbmZlcmlvcj02MzIwNTtlLmh5cGhlbm1vbm9zcGFjZT02NTI5MztlLmh5cGhlbnNtYWxsPTY1MTIzO2UuaHlwaGVuc3VwZXJpb3I9NjMyMDY7ZS5oeXBoZW50d289ODIwODtlLmk9MTA1O2UuaWFjdXRlPTIzNztlLmlhY3lyaWxsaWM9MTEwMztlLmliZW5nYWxpPTI0Mzk7ZS5pYm9wb21vZm89MTI1ODM7ZS5pYnJldmU9MzAxO2UuaWNhcm9uPTQ2NDtlLmljaXJjbGU9OTQzMjtlLmljaXJjdW1mbGV4PTIzODtlLmljeXJpbGxpYz0xMTEwO2UuaWRibGdyYXZlPTUyMTtlLmlkZW9ncmFwaGVhcnRoY2lyY2xlPTEyOTQzO2UuaWRlb2dyYXBoZmlyZWNpcmNsZT0xMjkzOTtlLmlkZW9ncmFwaGljYWxsaWFuY2VwYXJlbj0xMjg2MztlLmlkZW9ncmFwaGljY2FsbHBhcmVuPTEyODU4O2UuaWRlb2dyYXBoaWNjZW50cmVjaXJjbGU9MTI5NjU7ZS5pZGVvZ3JhcGhpY2Nsb3NlPTEyMjk0O2UuaWRlb2dyYXBoaWNjb21tYT0xMjI4OTtlLmlkZW9ncmFwaGljY29tbWFsZWZ0PTY1MzgwO2UuaWRlb2dyYXBoaWNjb25ncmF0dWxhdGlvbnBhcmVuPTEyODU1O2UuaWRlb2dyYXBoaWNjb3JyZWN0Y2lyY2xlPTEyOTYzO2UuaWRlb2dyYXBoaWNlYXJ0aHBhcmVuPTEyODQ3O2UuaWRlb2dyYXBoaWNlbnRlcnByaXNlcGFyZW49MTI4NjE7ZS5pZGVvZ3JhcGhpY2V4Y2VsbGVudGNpcmNsZT0xMjk1NztlLmlkZW9ncmFwaGljZmVzdGl2YWxwYXJlbj0xMjg2NDtlLmlkZW9ncmFwaGljZmluYW5jaWFsY2lyY2xlPTEyOTUwO2UuaWRlb2dyYXBoaWNmaW5hbmNpYWxwYXJlbj0xMjg1NDtlLmlkZW9ncmFwaGljZmlyZXBhcmVuPTEyODQzO2UuaWRlb2dyYXBoaWNoYXZlcGFyZW49MTI4NTA7ZS5pZGVvZ3JhcGhpY2hpZ2hjaXJjbGU9MTI5NjQ7ZS5pZGVvZ3JhcGhpY2l0ZXJhdGlvbm1hcms9MTIyOTM7ZS5pZGVvZ3JhcGhpY2xhYm9yY2lyY2xlPTEyOTUyO2UuaWRlb2dyYXBoaWNsYWJvcnBhcmVuPTEyODU2O2UuaWRlb2dyYXBoaWNsZWZ0Y2lyY2xlPTEyOTY3O2UuaWRlb2dyYXBoaWNsb3djaXJjbGU9MTI5NjY7ZS5pZGVvZ3JhcGhpY21lZGljaW5lY2lyY2xlPTEyOTY5O2UuaWRlb2dyYXBoaWNtZXRhbHBhcmVuPTEyODQ2O2UuaWRlb2dyYXBoaWNtb29ucGFyZW49MTI4NDI7ZS5pZGVvZ3JhcGhpY25hbWVwYXJlbj0xMjg1MjtlLmlkZW9ncmFwaGljcGVyaW9kPTEyMjkwO2UuaWRlb2dyYXBoaWNwcmludGNpcmNsZT0xMjk1ODtlLmlkZW9ncmFwaGljcmVhY2hwYXJlbj0xMjg2NztlLmlkZW9ncmFwaGljcmVwcmVzZW50cGFyZW49MTI4NTc7ZS5pZGVvZ3JhcGhpY3Jlc291cmNlcGFyZW49MTI4NjI7ZS5pZGVvZ3JhcGhpY3JpZ2h0Y2lyY2xlPTEyOTY4O2UuaWRlb2dyYXBoaWNzZWNyZXRjaXJjbGU9MTI5NTM7ZS5pZGVvZ3JhcGhpY3NlbGZwYXJlbj0xMjg2NjtlLmlkZW9ncmFwaGljc29jaWV0eXBhcmVuPTEyODUxO2UuaWRlb2dyYXBoaWNzcGFjZT0xMjI4ODtlLmlkZW9ncmFwaGljc3BlY2lhbHBhcmVuPTEyODUzO2UuaWRlb2dyYXBoaWNzdG9ja3BhcmVuPTEyODQ5O2UuaWRlb2dyYXBoaWNzdHVkeXBhcmVuPTEyODU5O2UuaWRlb2dyYXBoaWNzdW5wYXJlbj0xMjg0ODtlLmlkZW9ncmFwaGljc3VwZXJ2aXNlcGFyZW49MTI4NjA7ZS5pZGVvZ3JhcGhpY3dhdGVycGFyZW49MTI4NDQ7ZS5pZGVvZ3JhcGhpY3dvb2RwYXJlbj0xMjg0NTtlLmlkZW9ncmFwaGljemVybz0xMjI5NTtlLmlkZW9ncmFwaG1ldGFsY2lyY2xlPTEyOTQyO2UuaWRlb2dyYXBobW9vbmNpcmNsZT0xMjkzODtlLmlkZW9ncmFwaG5hbWVjaXJjbGU9MTI5NDg7ZS5pZGVvZ3JhcGhzdW5jaXJjbGU9MTI5NDQ7ZS5pZGVvZ3JhcGh3YXRlcmNpcmNsZT0xMjk0MDtlLmlkZW9ncmFwaHdvb2RjaXJjbGU9MTI5NDE7ZS5pZGV2YT0yMzExO2UuaWRpZXJlc2lzPTIzOTtlLmlkaWVyZXNpc2FjdXRlPTc3Mjc7ZS5pZGllcmVzaXNjeXJpbGxpYz0xMjUzO2UuaWRvdGJlbG93PTc4ODM7ZS5pZWJyZXZlY3lyaWxsaWM9MTIzOTtlLmllY3lyaWxsaWM9MTA3NztlLmlldW5nYWNpcmNsZWtvcmVhbj0xMjkxNztlLmlldW5nYXBhcmVua29yZWFuPTEyODIxO2UuaWV1bmdjaXJjbGVrb3JlYW49MTI5MDM7ZS5pZXVuZ2tvcmVhbj0xMjYxNTtlLmlldW5ncGFyZW5rb3JlYW49MTI4MDc7ZS5pZ3JhdmU9MjM2O2UuaWd1amFyYXRpPTI2OTU7ZS5pZ3VybXVraGk9MjU2NztlLmloaXJhZ2FuYT0xMjM1NjtlLmlob29rYWJvdmU9Nzg4MTtlLmlpYmVuZ2FsaT0yNDQwO2UuaWljeXJpbGxpYz0xMDgwO2UuaWlkZXZhPTIzMTI7ZS5paWd1amFyYXRpPTI2OTY7ZS5paWd1cm11a2hpPTI1Njg7ZS5paW1hdHJhZ3VybXVraGk9MjYyNDtlLmlpbnZlcnRlZGJyZXZlPTUyMztlLmlpc2hvcnRjeXJpbGxpYz0xMDgxO2UuaWl2b3dlbHNpZ25iZW5nYWxpPTI0OTY7ZS5paXZvd2Vsc2lnbmRldmE9MjM2ODtlLmlpdm93ZWxzaWduZ3VqYXJhdGk9Mjc1MjtlLmlqPTMwNztlLmlrYXRha2FuYT0xMjQ1MjtlLmlrYXRha2FuYWhhbGZ3aWR0aD02NTM5NDtlLmlrb3JlYW49MTI2NDM7ZS5pbGRlPTczMjtlLmlsdXloZWJyZXc9MTQ1MjtlLmltYWNyb249Mjk5O2UuaW1hY3JvbmN5cmlsbGljPTEyNTE7ZS5pbWFnZW9yYXBwcm94aW1hdGVseWVxdWFsPTg3ODc7ZS5pbWF0cmFndXJtdWtoaT0yNjIzO2UuaW1vbm9zcGFjZT02NTM1MztlLmluY3JlbWVudD04NzEwO2UuaW5maW5pdHk9ODczNDtlLmluaWFybWVuaWFuPTEzODc7ZS5pbnRlZ3JhbD04NzQ3O2UuaW50ZWdyYWxib3R0b209ODk5MztlLmludGVncmFsYnQ9ODk5MztlLmludGVncmFsZXg9NjM3MzM7ZS5pbnRlZ3JhbHRvcD04OTkyO2UuaW50ZWdyYWx0cD04OTkyO2UuaW50ZXJzZWN0aW9uPTg3NDU7ZS5pbnRpc3F1YXJlPTEzMDYxO2UuaW52YnVsbGV0PTk2ODg7ZS5pbnZjaXJjbGU9OTY4OTtlLmludnNtaWxlZmFjZT05Nzg3O2UuaW9jeXJpbGxpYz0xMTA1O2UuaW9nb25laz0zMDM7ZS5pb3RhPTk1MztlLmlvdGFkaWVyZXNpcz05NzA7ZS5pb3RhZGllcmVzaXN0b25vcz05MTI7ZS5pb3RhbGF0aW49NjE3O2UuaW90YXRvbm9zPTk0MztlLmlwYXJlbj05MzgwO2UuaXJpZ3VybXVraGk9MjY3NDtlLmlzbWFsbGhpcmFnYW5hPTEyMzU1O2UuaXNtYWxsa2F0YWthbmE9MTI0NTE7ZS5pc21hbGxrYXRha2FuYWhhbGZ3aWR0aD02NTM4NDtlLmlzc2hhcmJlbmdhbGk9MjU1NDtlLmlzdHJva2U9NjE2O2UuaXN1cGVyaW9yPTYzMjEzO2UuaXRlcmF0aW9uaGlyYWdhbmE9MTI0NDU7ZS5pdGVyYXRpb25rYXRha2FuYT0xMjU0MTtlLml0aWxkZT0yOTc7ZS5pdGlsZGViZWxvdz03NzI1O2UuaXVib3BvbW9mbz0xMjU4NTtlLml1Y3lyaWxsaWM9MTEwMjtlLml2b3dlbHNpZ25iZW5nYWxpPTI0OTU7ZS5pdm93ZWxzaWduZGV2YT0yMzY3O2UuaXZvd2Vsc2lnbmd1amFyYXRpPTI3NTE7ZS5pemhpdHNhY3lyaWxsaWM9MTE0MTtlLml6aGl0c2FkYmxncmF2ZWN5cmlsbGljPTExNDM7ZS5qPTEwNjtlLmphYXJtZW5pYW49MTM5MztlLmphYmVuZ2FsaT0yNDYwO2UuamFkZXZhPTIzMzI7ZS5qYWd1amFyYXRpPTI3MTY7ZS5qYWd1cm11a2hpPTI1ODg7ZS5qYm9wb21vZm89MTI1NjA7ZS5qY2Fyb249NDk2O2UuamNpcmNsZT05NDMzO2UuamNpcmN1bWZsZXg9MzA5O2UuamNyb3NzZWR0YWlsPTY2OTtlLmpkb3RsZXNzc3Ryb2tlPTYwNztlLmplY3lyaWxsaWM9MTExMjtlLmplZW1hcmFiaWM9MTU4MDtlLmplZW1maW5hbGFyYWJpYz02NTE4MjtlLmplZW1pbml0aWFsYXJhYmljPTY1MTgzO2UuamVlbW1lZGlhbGFyYWJpYz02NTE4NDtlLmplaGFyYWJpYz0xNjg4O2UuamVoZmluYWxhcmFiaWM9NjQzOTU7ZS5qaGFiZW5nYWxpPTI0NjE7ZS5qaGFkZXZhPTIzMzM7ZS5qaGFndWphcmF0aT0yNzE3O2UuamhhZ3VybXVraGk9MjU4OTtlLmpoZWhhcm1lbmlhbj0xNDAzO2UuamlzPTEyMjkyO2Uuam1vbm9zcGFjZT02NTM1NDtlLmpwYXJlbj05MzgxO2UuanN1cGVyaW9yPTY5MDtlLms9MTA3O2Uua2FiYXNoa2lyY3lyaWxsaWM9MTE4NTtlLmthYmVuZ2FsaT0yNDUzO2Uua2FjdXRlPTc3Mjk7ZS5rYWN5cmlsbGljPTEwODI7ZS5rYWRlc2NlbmRlcmN5cmlsbGljPTExNzk7ZS5rYWRldmE9MjMyNTtlLmthZj0xNDk5O2Uua2FmYXJhYmljPTE2MDM7ZS5rYWZkYWdlc2g9NjQzMTU7ZS5rYWZkYWdlc2hoZWJyZXc9NjQzMTU7ZS5rYWZmaW5hbGFyYWJpYz02NTI0MjtlLmthZmhlYnJldz0xNDk5O2Uua2FmaW5pdGlhbGFyYWJpYz02NTI0MztlLmthZm1lZGlhbGFyYWJpYz02NTI0NDtlLmthZnJhZmVoZWJyZXc9NjQzMzM7ZS5rYWd1amFyYXRpPTI3MDk7ZS5rYWd1cm11a2hpPTI1ODE7ZS5rYWhpcmFnYW5hPTEyMzYzO2Uua2Fob29rY3lyaWxsaWM9MTIyMDtlLmtha2F0YWthbmE9MTI0NTk7ZS5rYWthdGFrYW5haGFsZndpZHRoPTY1Mzk4O2Uua2FwcGE9OTU0O2Uua2FwcGFzeW1ib2xncmVlaz0xMDA4O2Uua2FweWVvdW5taWV1bWtvcmVhbj0xMjY1NztlLmthcHllb3VucGhpZXVwaGtvcmVhbj0xMjY3NjtlLmthcHllb3VucGlldXBrb3JlYW49MTI2NjQ7ZS5rYXB5ZW91bnNzYW5ncGlldXBrb3JlYW49MTI2NjU7ZS5rYXJvcmlpc3F1YXJlPTEzMDY5O2Uua2FzaGlkYWF1dG9hcmFiaWM9MTYwMDtlLmthc2hpZGFhdXRvbm9zaWRlYmVhcmluZ2FyYWJpYz0xNjAwO2Uua2FzbWFsbGthdGFrYW5hPTEyNTMzO2Uua2FzcXVhcmU9MTMxODg7ZS5rYXNyYWFyYWJpYz0xNjE2O2Uua2FzcmF0YW5hcmFiaWM9MTYxMztlLmthc3Ryb2tlY3lyaWxsaWM9MTE4MztlLmthdGFoaXJhcHJvbG9uZ21hcmtoYWxmd2lkdGg9NjUzOTI7ZS5rYXZlcnRpY2Fsc3Ryb2tlY3lyaWxsaWM9MTE4MTtlLmtib3BvbW9mbz0xMjU1ODtlLmtjYWxzcXVhcmU9MTMxOTM7ZS5rY2Fyb249NDg5O2Uua2NlZGlsbGE9MzExO2Uua2NpcmNsZT05NDM0O2Uua2NvbW1hYWNjZW50PTMxMTtlLmtkb3RiZWxvdz03NzMxO2Uua2VoYXJtZW5pYW49MTQxMjtlLmtlaGlyYWdhbmE9MTIzNjk7ZS5rZWthdGFrYW5hPTEyNDY1O2Uua2VrYXRha2FuYWhhbGZ3aWR0aD02NTQwMTtlLmtlbmFybWVuaWFuPTEzOTE7ZS5rZXNtYWxsa2F0YWthbmE9MTI1MzQ7ZS5rZ3JlZW5sYW5kaWM9MzEyO2Uua2hhYmVuZ2FsaT0yNDU0O2Uua2hhY3lyaWxsaWM9MTA5MztlLmtoYWRldmE9MjMyNjtlLmtoYWd1amFyYXRpPTI3MTA7ZS5raGFndXJtdWtoaT0yNTgyO2Uua2hhaGFyYWJpYz0xNTgyO2Uua2hhaGZpbmFsYXJhYmljPTY1MTkwO2Uua2hhaGluaXRpYWxhcmFiaWM9NjUxOTE7ZS5raGFobWVkaWFsYXJhYmljPTY1MTkyO2Uua2hlaWNvcHRpYz05OTk7ZS5raGhhZGV2YT0yMzkzO2Uua2hoYWd1cm11a2hpPTI2NDk7ZS5raGlldWtoYWNpcmNsZWtvcmVhbj0xMjkyMDtlLmtoaWV1a2hhcGFyZW5rb3JlYW49MTI4MjQ7ZS5raGlldWtoY2lyY2xla29yZWFuPTEyOTA2O2Uua2hpZXVraGtvcmVhbj0xMjYxOTtlLmtoaWV1a2hwYXJlbmtvcmVhbj0xMjgxMDtlLmtob2toYWl0aGFpPTM1ODY7ZS5raG9raG9udGhhaT0zNTg5O2Uua2hva2h1YXR0aGFpPTM1ODc7ZS5raG9raHdhaXRoYWk9MzU4ODtlLmtob211dHRoYWk9MzY3NTtlLmtob29rPTQwOTtlLmtob3Jha2hhbmd0aGFpPTM1OTA7ZS5raHpzcXVhcmU9MTMyMDE7ZS5raWhpcmFnYW5hPTEyMzY1O2Uua2lrYXRha2FuYT0xMjQ2MTtlLmtpa2F0YWthbmFoYWxmd2lkdGg9NjUzOTk7ZS5raXJvZ3VyYW11c3F1YXJlPTEzMDc3O2Uua2lyb21lZXRvcnVzcXVhcmU9MTMwNzg7ZS5raXJvc3F1YXJlPTEzMDc2O2Uua2l5ZW9rYWNpcmNsZWtvcmVhbj0xMjkxMDtlLmtpeWVva2FwYXJlbmtvcmVhbj0xMjgxNDtlLmtpeWVva2NpcmNsZWtvcmVhbj0xMjg5NjtlLmtpeWVva2tvcmVhbj0xMjU5MztlLmtpeWVva3BhcmVua29yZWFuPTEyODAwO2Uua2l5ZW9rc2lvc2tvcmVhbj0xMjU5NTtlLmtqZWN5cmlsbGljPTExMTY7ZS5rbGluZWJlbG93PTc3MzM7ZS5rbHNxdWFyZT0xMzIwODtlLmttY3ViZWRzcXVhcmU9MTMyMjI7ZS5rbW9ub3NwYWNlPTY1MzU1O2Uua21zcXVhcmVkc3F1YXJlPTEzMjE4O2Uua29oaXJhZ2FuYT0xMjM3MTtlLmtvaG1zcXVhcmU9MTMyNDg7ZS5rb2thaXRoYWk9MzU4NTtlLmtva2F0YWthbmE9MTI0Njc7ZS5rb2thdGFrYW5haGFsZndpZHRoPTY1NDAyO2Uua29vcG9zcXVhcmU9MTMwODY7ZS5rb3BwYWN5cmlsbGljPTExNTM7ZS5rb3JlYW5zdGFuZGFyZHN5bWJvbD0xMjkyNztlLmtvcm9uaXNjbWI9ODM1O2Uua3BhcmVuPTkzODI7ZS5rcGFzcXVhcmU9MTMyMjY7ZS5rc2ljeXJpbGxpYz0xMTM1O2Uua3RzcXVhcmU9MTMyNjM7ZS5rdHVybmVkPTY3MDtlLmt1aGlyYWdhbmE9MTIzNjc7ZS5rdWthdGFrYW5hPTEyNDYzO2Uua3VrYXRha2FuYWhhbGZ3aWR0aD02NTQwMDtlLmt2c3F1YXJlPTEzMjQwO2Uua3dzcXVhcmU9MTMyNDY7ZS5sPTEwODtlLmxhYmVuZ2FsaT0yNDgyO2UubGFjdXRlPTMxNDtlLmxhZGV2YT0yMzU0O2UubGFndWphcmF0aT0yNzM4O2UubGFndXJtdWtoaT0yNjEwO2UubGFra2hhbmd5YW90aGFpPTM2NTM7ZS5sYW1hbGVmZmluYWxhcmFiaWM9NjUyNzY7ZS5sYW1hbGVmaGFtemFhYm92ZWZpbmFsYXJhYmljPTY1MjcyO2UubGFtYWxlZmhhbXphYWJvdmVpc29sYXRlZGFyYWJpYz02NTI3MTtlLmxhbWFsZWZoYW16YWJlbG93ZmluYWxhcmFiaWM9NjUyNzQ7ZS5sYW1hbGVmaGFtemFiZWxvd2lzb2xhdGVkYXJhYmljPTY1MjczO2UubGFtYWxlZmlzb2xhdGVkYXJhYmljPTY1Mjc1O2UubGFtYWxlZm1hZGRhYWJvdmVmaW5hbGFyYWJpYz02NTI3MDtlLmxhbWFsZWZtYWRkYWFib3ZlaXNvbGF0ZWRhcmFiaWM9NjUyNjk7ZS5sYW1hcmFiaWM9MTYwNDtlLmxhbWJkYT05NTU7ZS5sYW1iZGFzdHJva2U9NDExO2UubGFtZWQ9MTUwMDtlLmxhbWVkZGFnZXNoPTY0MzE2O2UubGFtZWRkYWdlc2hoZWJyZXc9NjQzMTY7ZS5sYW1lZGhlYnJldz0xNTAwO2UubGFtZmluYWxhcmFiaWM9NjUyNDY7ZS5sYW1oYWhpbml0aWFsYXJhYmljPTY0NzE0O2UubGFtaW5pdGlhbGFyYWJpYz02NTI0NztlLmxhbWplZW1pbml0aWFsYXJhYmljPTY0NzEzO2UubGFta2hhaGluaXRpYWxhcmFiaWM9NjQ3MTU7ZS5sYW1sYW1oZWhpc29sYXRlZGFyYWJpYz02NTAxMDtlLmxhbW1lZGlhbGFyYWJpYz02NTI0ODtlLmxhbW1lZW1oYWhpbml0aWFsYXJhYmljPTY0OTA0O2UubGFtbWVlbWluaXRpYWxhcmFiaWM9NjQ3MTY7ZS5sYXJnZWNpcmNsZT05NzExO2UubGJhcj00MTA7ZS5sYmVsdD02MjA7ZS5sYm9wb21vZm89MTI1NTY7ZS5sY2Fyb249MzE4O2UubGNlZGlsbGE9MzE2O2UubGNpcmNsZT05NDM1O2UubGNpcmN1bWZsZXhiZWxvdz03NzQxO2UubGNvbW1hYWNjZW50PTMxNjtlLmxkb3Q9MzIwO2UubGRvdGFjY2VudD0zMjA7ZS5sZG90YmVsb3c9NzczNTtlLmxkb3RiZWxvd21hY3Jvbj03NzM3O2UubGVmdGFuZ2xlYWJvdmVjbWI9Nzk0O2UubGVmdHRhY2tiZWxvd2NtYj03OTI7ZS5sZXNzPTYwO2UubGVzc2VxdWFsPTg4MDQ7ZS5sZXNzZXF1YWxvcmdyZWF0ZXI9ODkyMjtlLmxlc3Ntb25vc3BhY2U9NjUzMDg7ZS5sZXNzb3JlcXVpdmFsZW50PTg4MTg7ZS5sZXNzb3JncmVhdGVyPTg4MjI7ZS5sZXNzb3ZlcmVxdWFsPTg4MDY7ZS5sZXNzc21hbGw9NjUxMjQ7ZS5sZXpoPTYyMjtlLmxmYmxvY2s9OTYxMjtlLmxob29rcmV0cm9mbGV4PTYyMTtlLmxpcmE9ODM1NjtlLmxpd25hcm1lbmlhbj0xMzg4O2UubGo9NDU3O2UubGplY3lyaWxsaWM9MTExMztlLmxsPTYzMTY4O2UubGxhZGV2YT0yMzU1O2UubGxhZ3VqYXJhdGk9MjczOTtlLmxsaW5lYmVsb3c9NzczOTtlLmxsbGFkZXZhPTIzNTY7ZS5sbHZvY2FsaWNiZW5nYWxpPTI1Mjk7ZS5sbHZvY2FsaWNkZXZhPTI0MDE7ZS5sbHZvY2FsaWN2b3dlbHNpZ25iZW5nYWxpPTI1MzE7ZS5sbHZvY2FsaWN2b3dlbHNpZ25kZXZhPTI0MDM7ZS5sbWlkZGxldGlsZGU9NjE5O2UubG1vbm9zcGFjZT02NTM1NjtlLmxtc3F1YXJlPTEzMjY0O2UubG9jaHVsYXRoYWk9MzYyODtlLmxvZ2ljYWxhbmQ9ODc0MztlLmxvZ2ljYWxub3Q9MTcyO2UubG9naWNhbG5vdHJldmVyc2VkPTg5NzY7ZS5sb2dpY2Fsb3I9ODc0NDtlLmxvbGluZ3RoYWk9MzYyMTtlLmxvbmdzPTM4MztlLmxvd2xpbmVjZW50ZXJsaW5lPTY1MTAyO2UubG93bGluZWNtYj04MTg7ZS5sb3dsaW5lZGFzaGVkPTY1MTAxO2UubG96ZW5nZT05Njc0O2UubHBhcmVuPTkzODM7ZS5sc2xhc2g9MzIyO2UubHNxdWFyZT04NDY3O2UubHN1cGVyaW9yPTYzMjE0O2UubHRzaGFkZT05NjE3O2UubHV0aGFpPTM2MjI7ZS5sdm9jYWxpY2JlbmdhbGk9MjQ0NDtlLmx2b2NhbGljZGV2YT0yMzE2O2UubHZvY2FsaWN2b3dlbHNpZ25iZW5nYWxpPTI1MzA7ZS5sdm9jYWxpY3Zvd2Vsc2lnbmRldmE9MjQwMjtlLmx4c3F1YXJlPTEzMjY3O2UubT0xMDk7ZS5tYWJlbmdhbGk9MjQ3ODtlLm1hY3Jvbj0xNzU7ZS5tYWNyb25iZWxvd2NtYj04MTc7ZS5tYWNyb25jbWI9NzcyO2UubWFjcm9ubG93bW9kPTcxNztlLm1hY3Jvbm1vbm9zcGFjZT02NTUwNztlLm1hY3V0ZT03NzQzO2UubWFkZXZhPTIzNTA7ZS5tYWd1amFyYXRpPTI3MzQ7ZS5tYWd1cm11a2hpPTI2MDY7ZS5tYWhhcGFraGhlYnJldz0xNDQ0O2UubWFoYXBha2hsZWZ0aGVicmV3PTE0NDQ7ZS5tYWhpcmFnYW5hPTEyNDE0O2UubWFpY2hhdHRhd2Fsb3dsZWZ0dGhhaT02MzYzNztlLm1haWNoYXR0YXdhbG93cmlnaHR0aGFpPTYzNjM2O2UubWFpY2hhdHRhd2F0aGFpPTM2NTk7ZS5tYWljaGF0dGF3YXVwcGVybGVmdHRoYWk9NjM2MzU7ZS5tYWlla2xvd2xlZnR0aGFpPTYzNjI4O2UubWFpZWtsb3dyaWdodHRoYWk9NjM2Mjc7ZS5tYWlla3RoYWk9MzY1NjtlLm1haWVrdXBwZXJsZWZ0dGhhaT02MzYyNjtlLm1haWhhbmFrYXRsZWZ0dGhhaT02MzYyMDtlLm1haWhhbmFrYXR0aGFpPTM2MzM7ZS5tYWl0YWlraHVsZWZ0dGhhaT02MzYyNTtlLm1haXRhaWtodXRoYWk9MzY1NTtlLm1haXRob2xvd2xlZnR0aGFpPTYzNjMxO2UubWFpdGhvbG93cmlnaHR0aGFpPTYzNjMwO2UubWFpdGhvdGhhaT0zNjU3O2UubWFpdGhvdXBwZXJsZWZ0dGhhaT02MzYyOTtlLm1haXRyaWxvd2xlZnR0aGFpPTYzNjM0O2UubWFpdHJpbG93cmlnaHR0aGFpPTYzNjMzO2UubWFpdHJpdGhhaT0zNjU4O2UubWFpdHJpdXBwZXJsZWZ0dGhhaT02MzYzMjtlLm1haXlhbW9rdGhhaT0zNjU0O2UubWFrYXRha2FuYT0xMjUxMDtlLm1ha2F0YWthbmFoYWxmd2lkdGg9NjU0MjM7ZS5tYWxlPTk3OTQ7ZS5tYW5zeW9uc3F1YXJlPTEzMTI3O2UubWFxYWZoZWJyZXc9MTQ3MDtlLm1hcnM9OTc5NDtlLm1hc29yYWNpcmNsZWhlYnJldz0xNDU1O2UubWFzcXVhcmU9MTMxODc7ZS5tYm9wb21vZm89MTI1NTE7ZS5tYnNxdWFyZT0xMzI2ODtlLm1jaXJjbGU9OTQzNjtlLm1jdWJlZHNxdWFyZT0xMzIyMTtlLm1kb3RhY2NlbnQ9Nzc0NTtlLm1kb3RiZWxvdz03NzQ3O2UubWVlbWFyYWJpYz0xNjA1O2UubWVlbWZpbmFsYXJhYmljPTY1MjUwO2UubWVlbWluaXRpYWxhcmFiaWM9NjUyNTE7ZS5tZWVtbWVkaWFsYXJhYmljPTY1MjUyO2UubWVlbW1lZW1pbml0aWFsYXJhYmljPTY0NzIxO2UubWVlbW1lZW1pc29sYXRlZGFyYWJpYz02NDU4NDtlLm1lZXRvcnVzcXVhcmU9MTMxMzM7ZS5tZWhpcmFnYW5hPTEyNDE3O2UubWVpemllcmFzcXVhcmU9MTMxODI7ZS5tZWthdGFrYW5hPTEyNTEzO2UubWVrYXRha2FuYWhhbGZ3aWR0aD02NTQyNjtlLm1lbT0xNTAyO2UubWVtZGFnZXNoPTY0MzE4O2UubWVtZGFnZXNoaGVicmV3PTY0MzE4O2UubWVtaGVicmV3PTE1MDI7ZS5tZW5hcm1lbmlhbj0xMzk2O2UubWVya2hhaGVicmV3PTE0NDU7ZS5tZXJraGFrZWZ1bGFoZWJyZXc9MTQ0NjtlLm1lcmtoYWtlZnVsYWxlZnRoZWJyZXc9MTQ0NjtlLm1lcmtoYWxlZnRoZWJyZXc9MTQ0NTtlLm1ob29rPTYyNTtlLm1oenNxdWFyZT0xMzIwMjtlLm1pZGRsZWRvdGthdGFrYW5haGFsZndpZHRoPTY1MzgxO2UubWlkZG90PTE4MztlLm1pZXVtYWNpcmNsZWtvcmVhbj0xMjkxNDtlLm1pZXVtYXBhcmVua29yZWFuPTEyODE4O2UubWlldW1jaXJjbGVrb3JlYW49MTI5MDA7ZS5taWV1bWtvcmVhbj0xMjYwOTtlLm1pZXVtcGFuc2lvc2tvcmVhbj0xMjY1NjtlLm1pZXVtcGFyZW5rb3JlYW49MTI4MDQ7ZS5taWV1bXBpZXVwa29yZWFuPTEyNjU0O2UubWlldW1zaW9za29yZWFuPTEyNjU1O2UubWloaXJhZ2FuYT0xMjQxNTtlLm1pa2F0YWthbmE9MTI1MTE7ZS5taWthdGFrYW5haGFsZndpZHRoPTY1NDI0O2UubWludXM9ODcyMjtlLm1pbnVzYmVsb3djbWI9ODAwO2UubWludXNjaXJjbGU9ODg1NDtlLm1pbnVzbW9kPTcyNztlLm1pbnVzcGx1cz04NzIzO2UubWludXRlPTgyNDI7ZS5taXJpYmFhcnVzcXVhcmU9MTMxMzA7ZS5taXJpc3F1YXJlPTEzMTI5O2UubWxvbmdsZWd0dXJuZWQ9NjI0O2UubWxzcXVhcmU9MTMyMDY7ZS5tbWN1YmVkc3F1YXJlPTEzMjE5O2UubW1vbm9zcGFjZT02NTM1NztlLm1tc3F1YXJlZHNxdWFyZT0xMzIxNTtlLm1vaGlyYWdhbmE9MTI0MTg7ZS5tb2htc3F1YXJlPTEzMjQ5O2UubW9rYXRha2FuYT0xMjUxNDtlLm1va2F0YWthbmFoYWxmd2lkdGg9NjU0Mjc7ZS5tb2xzcXVhcmU9MTMyNzA7ZS5tb21hdGhhaT0zNjE3O2UubW92ZXJzc3F1YXJlPTEzMjIzO2UubW92ZXJzc3F1YXJlZHNxdWFyZT0xMzIyNDtlLm1wYXJlbj05Mzg0O2UubXBhc3F1YXJlPTEzMjI3O2UubXNzcXVhcmU9MTMyMzU7ZS5tc3VwZXJpb3I9NjMyMTU7ZS5tdHVybmVkPTYyMztlLm11PTE4MTtlLm11MT0xODE7ZS5tdWFzcXVhcmU9MTMxODY7ZS5tdWNoZ3JlYXRlcj04ODExO2UubXVjaGxlc3M9ODgxMDtlLm11ZnNxdWFyZT0xMzE5NjtlLm11Z3JlZWs9OTU2O2UubXVnc3F1YXJlPTEzMTk3O2UubXVoaXJhZ2FuYT0xMjQxNjtlLm11a2F0YWthbmE9MTI1MTI7ZS5tdWthdGFrYW5haGFsZndpZHRoPTY1NDI1O2UubXVsc3F1YXJlPTEzMjA1O2UubXVsdGlwbHk9MjE1O2UubXVtc3F1YXJlPTEzMjExO2UubXVuYWhoZWJyZXc9MTQ0MztlLm11bmFobGVmdGhlYnJldz0xNDQzO2UubXVzaWNhbG5vdGU9OTgzNDtlLm11c2ljYWxub3RlZGJsPTk4MzU7ZS5tdXNpY2ZsYXRzaWduPTk4Mzc7ZS5tdXNpY3NoYXJwc2lnbj05ODM5O2UubXVzc3F1YXJlPTEzMjM0O2UubXV2c3F1YXJlPTEzMjM4O2UubXV3c3F1YXJlPTEzMjQ0O2UubXZtZWdhc3F1YXJlPTEzMjQxO2UubXZzcXVhcmU9MTMyMzk7ZS5td21lZ2FzcXVhcmU9MTMyNDc7ZS5td3NxdWFyZT0xMzI0NTtlLm49MTEwO2UubmFiZW5nYWxpPTI0NzI7ZS5uYWJsYT04NzExO2UubmFjdXRlPTMyNDtlLm5hZGV2YT0yMzQ0O2UubmFndWphcmF0aT0yNzI4O2UubmFndXJtdWtoaT0yNjAwO2UubmFoaXJhZ2FuYT0xMjM5NDtlLm5ha2F0YWthbmE9MTI0OTA7ZS5uYWthdGFrYW5haGFsZndpZHRoPTY1NDEzO2UubmFwb3N0cm9waGU9MzI5O2UubmFzcXVhcmU9MTMxODU7ZS5uYm9wb21vZm89MTI1NTU7ZS5uYnNwYWNlPTE2MDtlLm5jYXJvbj0zMjg7ZS5uY2VkaWxsYT0zMjY7ZS5uY2lyY2xlPTk0Mzc7ZS5uY2lyY3VtZmxleGJlbG93PTc3NTU7ZS5uY29tbWFhY2NlbnQ9MzI2O2UubmRvdGFjY2VudD03NzQ5O2UubmRvdGJlbG93PTc3NTE7ZS5uZWhpcmFnYW5hPTEyMzk3O2UubmVrYXRha2FuYT0xMjQ5MztlLm5la2F0YWthbmFoYWxmd2lkdGg9NjU0MTY7ZS5uZXdzaGVxZWxzaWduPTgzNjI7ZS5uZnNxdWFyZT0xMzE5NTtlLm5nYWJlbmdhbGk9MjQ1NztlLm5nYWRldmE9MjMyOTtlLm5nYWd1amFyYXRpPTI3MTM7ZS5uZ2FndXJtdWtoaT0yNTg1O2Uubmdvbmd1dGhhaT0zNTkxO2UubmhpcmFnYW5hPTEyNDM1O2Uubmhvb2tsZWZ0PTYyNjtlLm5ob29rcmV0cm9mbGV4PTYyNztlLm5pZXVuYWNpcmNsZWtvcmVhbj0xMjkxMTtlLm5pZXVuYXBhcmVua29yZWFuPTEyODE1O2UubmlldW5jaWV1Y2tvcmVhbj0xMjU5NztlLm5pZXVuY2lyY2xla29yZWFuPTEyODk3O2UubmlldW5oaWV1aGtvcmVhbj0xMjU5ODtlLm5pZXVua29yZWFuPTEyNTk2O2UubmlldW5wYW5zaW9za29yZWFuPTEyNjQ4O2UubmlldW5wYXJlbmtvcmVhbj0xMjgwMTtlLm5pZXVuc2lvc2tvcmVhbj0xMjY0NztlLm5pZXVudGlrZXV0a29yZWFuPTEyNjQ2O2UubmloaXJhZ2FuYT0xMjM5NTtlLm5pa2F0YWthbmE9MTI0OTE7ZS5uaWthdGFrYW5haGFsZndpZHRoPTY1NDE0O2UubmlraGFoaXRsZWZ0dGhhaT02MzY0MTtlLm5pa2hhaGl0dGhhaT0zNjYxO2UubmluZT01NztlLm5pbmVhcmFiaWM9MTY0MTtlLm5pbmViZW5nYWxpPTI1NDM7ZS5uaW5lY2lyY2xlPTkzMjA7ZS5uaW5lY2lyY2xlaW52ZXJzZXNhbnNzZXJpZj0xMDEzMDtlLm5pbmVkZXZhPTI0MTU7ZS5uaW5lZ3VqYXJhdGk9Mjc5OTtlLm5pbmVndXJtdWtoaT0yNjcxO2UubmluZWhhY2thcmFiaWM9MTY0MTtlLm5pbmVoYW5nemhvdT0xMjMyOTtlLm5pbmVpZGVvZ3JhcGhpY3BhcmVuPTEyODQwO2UubmluZWluZmVyaW9yPTgzMjk7ZS5uaW5lbW9ub3NwYWNlPTY1MzA1O2UubmluZW9sZHN0eWxlPTYzMjg5O2UubmluZXBhcmVuPTkzNDA7ZS5uaW5lcGVyaW9kPTkzNjA7ZS5uaW5lcGVyc2lhbj0xNzg1O2UubmluZXJvbWFuPTg1Njg7ZS5uaW5lc3VwZXJpb3I9ODMxMztlLm5pbmV0ZWVuY2lyY2xlPTkzMzA7ZS5uaW5ldGVlbnBhcmVuPTkzNTA7ZS5uaW5ldGVlbnBlcmlvZD05MzcwO2UubmluZXRoYWk9MzY3MztlLm5qPTQ2MDtlLm5qZWN5cmlsbGljPTExMTQ7ZS5ua2F0YWthbmE9MTI1MzE7ZS5ua2F0YWthbmFoYWxmd2lkdGg9NjU0Mzc7ZS5ubGVncmlnaHRsb25nPTQxNDtlLm5saW5lYmVsb3c9Nzc1MztlLm5tb25vc3BhY2U9NjUzNTg7ZS5ubXNxdWFyZT0xMzIxMDtlLm5uYWJlbmdhbGk9MjQ2NztlLm5uYWRldmE9MjMzOTtlLm5uYWd1amFyYXRpPTI3MjM7ZS5ubmFndXJtdWtoaT0yNTk1O2Uubm5uYWRldmE9MjM0NTtlLm5vaGlyYWdhbmE9MTIzOTg7ZS5ub2thdGFrYW5hPTEyNDk0O2Uubm9rYXRha2FuYWhhbGZ3aWR0aD02NTQxNztlLm5vbmJyZWFraW5nc3BhY2U9MTYwO2Uubm9uZW50aGFpPTM2MDM7ZS5ub251dGhhaT0zNjA5O2Uubm9vbmFyYWJpYz0xNjA2O2Uubm9vbmZpbmFsYXJhYmljPTY1MjU0O2Uubm9vbmdodW5uYWFyYWJpYz0xNzIyO2Uubm9vbmdodW5uYWZpbmFsYXJhYmljPTY0NDE1O2Uubm9vbmluaXRpYWxhcmFiaWM9NjUyNTU7ZS5ub29uamVlbWluaXRpYWxhcmFiaWM9NjQ3MjI7ZS5ub29uamVlbWlzb2xhdGVkYXJhYmljPTY0NTg3O2Uubm9vbm1lZGlhbGFyYWJpYz02NTI1NjtlLm5vb25tZWVtaW5pdGlhbGFyYWJpYz02NDcyNTtlLm5vb25tZWVtaXNvbGF0ZWRhcmFiaWM9NjQ1OTA7ZS5ub29ubm9vbmZpbmFsYXJhYmljPTY0NjUzO2Uubm90Y29udGFpbnM9ODcxNjtlLm5vdGVsZW1lbnQ9ODcxMztlLm5vdGVsZW1lbnRvZj04NzEzO2Uubm90ZXF1YWw9ODgwMDtlLm5vdGdyZWF0ZXI9ODgxNTtlLm5vdGdyZWF0ZXJub3JlcXVhbD04ODE3O2Uubm90Z3JlYXRlcm5vcmxlc3M9ODgyNTtlLm5vdGlkZW50aWNhbD04ODAyO2Uubm90bGVzcz04ODE0O2Uubm90bGVzc25vcmVxdWFsPTg4MTY7ZS5ub3RwYXJhbGxlbD04NzQyO2Uubm90cHJlY2VkZXM9ODgzMjtlLm5vdHN1YnNldD04ODM2O2Uubm90c3VjY2VlZHM9ODgzMztlLm5vdHN1cGVyc2V0PTg4Mzc7ZS5ub3dhcm1lbmlhbj0xMzk4O2UubnBhcmVuPTkzODU7ZS5uc3NxdWFyZT0xMzIzMztlLm5zdXBlcmlvcj04MzE5O2UubnRpbGRlPTI0MTtlLm51PTk1NztlLm51aGlyYWdhbmE9MTIzOTY7ZS5udWthdGFrYW5hPTEyNDkyO2UubnVrYXRha2FuYWhhbGZ3aWR0aD02NTQxNTtlLm51a3RhYmVuZ2FsaT0yNDkyO2UubnVrdGFkZXZhPTIzNjQ7ZS5udWt0YWd1amFyYXRpPTI3NDg7ZS5udWt0YWd1cm11a2hpPTI2MjA7ZS5udW1iZXJzaWduPTM1O2UubnVtYmVyc2lnbm1vbm9zcGFjZT02NTI4MztlLm51bWJlcnNpZ25zbWFsbD02NTExOTtlLm51bWVyYWxzaWduZ3JlZWs9ODg0O2UubnVtZXJhbHNpZ25sb3dlcmdyZWVrPTg4NTtlLm51bWVybz04NDcwO2UubnVuPTE1MDQ7ZS5udW5kYWdlc2g9NjQzMjA7ZS5udW5kYWdlc2hoZWJyZXc9NjQzMjA7ZS5udW5oZWJyZXc9MTUwNDtlLm52c3F1YXJlPTEzMjM3O2UubndzcXVhcmU9MTMyNDM7ZS5ueWFiZW5nYWxpPTI0NjI7ZS5ueWFkZXZhPTIzMzQ7ZS5ueWFndWphcmF0aT0yNzE4O2UubnlhZ3VybXVraGk9MjU5MDtlLm89MTExO2Uub2FjdXRlPTI0MztlLm9hbmd0aGFpPTM2Mjk7ZS5vYmFycmVkPTYyOTtlLm9iYXJyZWRjeXJpbGxpYz0xMjU3O2Uub2JhcnJlZGRpZXJlc2lzY3lyaWxsaWM9MTI1OTtlLm9iZW5nYWxpPTI0NTE7ZS5vYm9wb21vZm89MTI1NzE7ZS5vYnJldmU9MzM1O2Uub2NhbmRyYWRldmE9MjMyMTtlLm9jYW5kcmFndWphcmF0aT0yNzA1O2Uub2NhbmRyYXZvd2Vsc2lnbmRldmE9MjM3NztlLm9jYW5kcmF2b3dlbHNpZ25ndWphcmF0aT0yNzYxO2Uub2Nhcm9uPTQ2NjtlLm9jaXJjbGU9OTQzODtlLm9jaXJjdW1mbGV4PTI0NDtlLm9jaXJjdW1mbGV4YWN1dGU9Nzg4OTtlLm9jaXJjdW1mbGV4ZG90YmVsb3c9Nzg5NztlLm9jaXJjdW1mbGV4Z3JhdmU9Nzg5MTtlLm9jaXJjdW1mbGV4aG9va2Fib3ZlPTc4OTM7ZS5vY2lyY3VtZmxleHRpbGRlPTc4OTU7ZS5vY3lyaWxsaWM9MTA4NjtlLm9kYmxhY3V0ZT0zMzc7ZS5vZGJsZ3JhdmU9NTI1O2Uub2RldmE9MjMyMztlLm9kaWVyZXNpcz0yNDY7ZS5vZGllcmVzaXNjeXJpbGxpYz0xMjU1O2Uub2RvdGJlbG93PTc4ODU7ZS5vZT0zMzk7ZS5vZWtvcmVhbj0xMjYzNDtlLm9nb25laz03MzE7ZS5vZ29uZWtjbWI9ODA4O2Uub2dyYXZlPTI0MjtlLm9ndWphcmF0aT0yNzA3O2Uub2hhcm1lbmlhbj0xNDEzO2Uub2hpcmFnYW5hPTEyMzYyO2Uub2hvb2thYm92ZT03ODg3O2Uub2hvcm49NDE3O2Uub2hvcm5hY3V0ZT03ODk5O2Uub2hvcm5kb3RiZWxvdz03OTA3O2Uub2hvcm5ncmF2ZT03OTAxO2Uub2hvcm5ob29rYWJvdmU9NzkwMztlLm9ob3JudGlsZGU9NzkwNTtlLm9odW5nYXJ1bWxhdXQ9MzM3O2Uub2k9NDE5O2Uub2ludmVydGVkYnJldmU9NTI3O2Uub2thdGFrYW5hPTEyNDU4O2Uub2thdGFrYW5haGFsZndpZHRoPTY1Mzk3O2Uub2tvcmVhbj0xMjYzMTtlLm9sZWhlYnJldz0xNDUxO2Uub21hY3Jvbj0zMzM7ZS5vbWFjcm9uYWN1dGU9Nzc2MztlLm9tYWNyb25ncmF2ZT03NzYxO2Uub21kZXZhPTIzODQ7ZS5vbWVnYT05Njk7ZS5vbWVnYTE9OTgyO2Uub21lZ2FjeXJpbGxpYz0xMTIxO2Uub21lZ2FsYXRpbmNsb3NlZD02MzE7ZS5vbWVnYXJvdW5kY3lyaWxsaWM9MTE0NztlLm9tZWdhdGl0bG9jeXJpbGxpYz0xMTQ5O2Uub21lZ2F0b25vcz05NzQ7ZS5vbWd1amFyYXRpPTI3Njg7ZS5vbWljcm9uPTk1OTtlLm9taWNyb250b25vcz05NzI7ZS5vbW9ub3NwYWNlPTY1MzU5O2Uub25lPTQ5O2Uub25lYXJhYmljPTE2MzM7ZS5vbmViZW5nYWxpPTI1MzU7ZS5vbmVjaXJjbGU9OTMxMjtlLm9uZWNpcmNsZWludmVyc2VzYW5zc2VyaWY9MTAxMjI7ZS5vbmVkZXZhPTI0MDc7ZS5vbmVkb3RlbmxlYWRlcj04MjI4O2Uub25lZWlnaHRoPTg1Mzk7ZS5vbmVmaXR0ZWQ9NjMxOTY7ZS5vbmVndWphcmF0aT0yNzkxO2Uub25lZ3VybXVraGk9MjY2MztlLm9uZWhhY2thcmFiaWM9MTYzMztlLm9uZWhhbGY9MTg5O2Uub25laGFuZ3pob3U9MTIzMjE7ZS5vbmVpZGVvZ3JhcGhpY3BhcmVuPTEyODMyO2Uub25laW5mZXJpb3I9ODMyMTtlLm9uZW1vbm9zcGFjZT02NTI5NztlLm9uZW51bWVyYXRvcmJlbmdhbGk9MjU0ODtlLm9uZW9sZHN0eWxlPTYzMjgxO2Uub25lcGFyZW49OTMzMjtlLm9uZXBlcmlvZD05MzUyO2Uub25lcGVyc2lhbj0xNzc3O2Uub25lcXVhcnRlcj0xODg7ZS5vbmVyb21hbj04NTYwO2Uub25lc3VwZXJpb3I9MTg1O2Uub25ldGhhaT0zNjY1O2Uub25ldGhpcmQ9ODUzMTtlLm9vZ29uZWs9NDkxO2Uub29nb25la21hY3Jvbj00OTM7ZS5vb2d1cm11a2hpPTI1Nzk7ZS5vb21hdHJhZ3VybXVraGk9MjYzNTtlLm9vcGVuPTU5NjtlLm9wYXJlbj05Mzg2O2Uub3BlbmJ1bGxldD05NzAyO2Uub3B0aW9uPTg5OTc7ZS5vcmRmZW1pbmluZT0xNzA7ZS5vcmRtYXNjdWxpbmU9MTg2O2Uub3J0aG9nb25hbD04NzM1O2Uub3Nob3J0ZGV2YT0yMzIyO2Uub3Nob3J0dm93ZWxzaWduZGV2YT0yMzc4O2Uub3NsYXNoPTI0ODtlLm9zbGFzaGFjdXRlPTUxMTtlLm9zbWFsbGhpcmFnYW5hPTEyMzYxO2Uub3NtYWxsa2F0YWthbmE9MTI0NTc7ZS5vc21hbGxrYXRha2FuYWhhbGZ3aWR0aD02NTM4NztlLm9zdHJva2VhY3V0ZT01MTE7ZS5vc3VwZXJpb3I9NjMyMTY7ZS5vdGN5cmlsbGljPTExNTE7ZS5vdGlsZGU9MjQ1O2Uub3RpbGRlYWN1dGU9Nzc1NztlLm90aWxkZWRpZXJlc2lzPTc3NTk7ZS5vdWJvcG9tb2ZvPTEyNTc3O2Uub3ZlcmxpbmU9ODI1NDtlLm92ZXJsaW5lY2VudGVybGluZT02NTA5ODtlLm92ZXJsaW5lY21iPTc3MztlLm92ZXJsaW5lZGFzaGVkPTY1MDk3O2Uub3ZlcmxpbmVkYmx3YXZ5PTY1MTAwO2Uub3ZlcmxpbmV3YXZ5PTY1MDk5O2Uub3ZlcnNjb3JlPTE3NTtlLm92b3dlbHNpZ25iZW5nYWxpPTI1MDc7ZS5vdm93ZWxzaWduZGV2YT0yMzc5O2Uub3Zvd2Vsc2lnbmd1amFyYXRpPTI3NjM7ZS5wPTExMjtlLnBhYW1wc3NxdWFyZT0xMzE4NDtlLnBhYXNlbnRvc3F1YXJlPTEzMDk5O2UucGFiZW5nYWxpPTI0NzQ7ZS5wYWN1dGU9Nzc2NTtlLnBhZGV2YT0yMzQ2O2UucGFnZWRvd249ODY3MTtlLnBhZ2V1cD04NjcwO2UucGFndWphcmF0aT0yNzMwO2UucGFndXJtdWtoaT0yNjAyO2UucGFoaXJhZ2FuYT0xMjQwMTtlLnBhaXlhbm5vaXRoYWk9MzYzMTtlLnBha2F0YWthbmE9MTI0OTc7ZS5wYWxhdGFsaXphdGlvbmN5cmlsbGljY21iPTExNTY7ZS5wYWxvY2hrYWN5cmlsbGljPTEyMTY7ZS5wYW5zaW9za29yZWFuPTEyNjcxO2UucGFyYWdyYXBoPTE4MjtlLnBhcmFsbGVsPTg3NDE7ZS5wYXJlbmxlZnQ9NDA7ZS5wYXJlbmxlZnRhbHRvbmVhcmFiaWM9NjQ4MzA7ZS5wYXJlbmxlZnRidD02MzcyNTtlLnBhcmVubGVmdGV4PTYzNzI0O2UucGFyZW5sZWZ0aW5mZXJpb3I9ODMzMztlLnBhcmVubGVmdG1vbm9zcGFjZT02NTI4ODtlLnBhcmVubGVmdHNtYWxsPTY1MTEzO2UucGFyZW5sZWZ0c3VwZXJpb3I9ODMxNztlLnBhcmVubGVmdHRwPTYzNzIzO2UucGFyZW5sZWZ0dmVydGljYWw9NjUwNzc7ZS5wYXJlbnJpZ2h0PTQxO2UucGFyZW5yaWdodGFsdG9uZWFyYWJpYz02NDgzMTtlLnBhcmVucmlnaHRidD02MzczNjtlLnBhcmVucmlnaHRleD02MzczNTtlLnBhcmVucmlnaHRpbmZlcmlvcj04MzM0O2UucGFyZW5yaWdodG1vbm9zcGFjZT02NTI4OTtlLnBhcmVucmlnaHRzbWFsbD02NTExNDtlLnBhcmVucmlnaHRzdXBlcmlvcj04MzE4O2UucGFyZW5yaWdodHRwPTYzNzM0O2UucGFyZW5yaWdodHZlcnRpY2FsPTY1MDc4O2UucGFydGlhbGRpZmY9ODcwNjtlLnBhc2VxaGVicmV3PTE0NzI7ZS5wYXNodGFoZWJyZXc9MTQzMztlLnBhc3F1YXJlPTEzMjI1O2UucGF0YWg9MTQ2MztlLnBhdGFoMTE9MTQ2MztlLnBhdGFoMWQ9MTQ2MztlLnBhdGFoMmE9MTQ2MztlLnBhdGFoaGVicmV3PTE0NjM7ZS5wYXRhaG5hcnJvd2hlYnJldz0xNDYzO2UucGF0YWhxdWFydGVyaGVicmV3PTE0NjM7ZS5wYXRhaHdpZGVoZWJyZXc9MTQ2MztlLnBhemVyaGVicmV3PTE0NDE7ZS5wYm9wb21vZm89MTI1NTA7ZS5wY2lyY2xlPTk0Mzk7ZS5wZG90YWNjZW50PTc3Njc7ZS5wZT0xNTA4O2UucGVjeXJpbGxpYz0xMDg3O2UucGVkYWdlc2g9NjQzMjQ7ZS5wZWRhZ2VzaGhlYnJldz02NDMyNDtlLnBlZXppc3F1YXJlPTEzMTE1O2UucGVmaW5hbGRhZ2VzaGhlYnJldz02NDMyMztlLnBlaGFyYWJpYz0xNjYyO2UucGVoYXJtZW5pYW49MTQwMjtlLnBlaGVicmV3PTE1MDg7ZS5wZWhmaW5hbGFyYWJpYz02NDM0MztlLnBlaGluaXRpYWxhcmFiaWM9NjQzNDQ7ZS5wZWhpcmFnYW5hPTEyNDEwO2UucGVobWVkaWFsYXJhYmljPTY0MzQ1O2UucGVrYXRha2FuYT0xMjUwNjtlLnBlbWlkZGxlaG9va2N5cmlsbGljPTExOTE7ZS5wZXJhZmVoZWJyZXc9NjQzMzQ7ZS5wZXJjZW50PTM3O2UucGVyY2VudGFyYWJpYz0xNjQyO2UucGVyY2VudG1vbm9zcGFjZT02NTI4NTtlLnBlcmNlbnRzbWFsbD02NTEzMDtlLnBlcmlvZD00NjtlLnBlcmlvZGFybWVuaWFuPTE0MTc7ZS5wZXJpb2RjZW50ZXJlZD0xODM7ZS5wZXJpb2RoYWxmd2lkdGg9NjUzNzc7ZS5wZXJpb2RpbmZlcmlvcj02MzIwNztlLnBlcmlvZG1vbm9zcGFjZT02NTI5NDtlLnBlcmlvZHNtYWxsPTY1MTA2O2UucGVyaW9kc3VwZXJpb3I9NjMyMDg7ZS5wZXJpc3BvbWVuaWdyZWVrY21iPTgzNDtlLnBlcnBlbmRpY3VsYXI9ODg2OTtlLnBlcnRob3VzYW5kPTgyNDA7ZS5wZXNldGE9ODM1OTtlLnBmc3F1YXJlPTEzMTk0O2UucGhhYmVuZ2FsaT0yNDc1O2UucGhhZGV2YT0yMzQ3O2UucGhhZ3VqYXJhdGk9MjczMTtlLnBoYWd1cm11a2hpPTI2MDM7ZS5waGk9OTY2O2UucGhpMT05ODE7ZS5waGlldXBoYWNpcmNsZWtvcmVhbj0xMjkyMjtlLnBoaWV1cGhhcGFyZW5rb3JlYW49MTI4MjY7ZS5waGlldXBoY2lyY2xla29yZWFuPTEyOTA4O2UucGhpZXVwaGtvcmVhbj0xMjYyMTtlLnBoaWV1cGhwYXJlbmtvcmVhbj0xMjgxMjtlLnBoaWxhdGluPTYzMjtlLnBoaW50aHV0aGFpPTM2NDI7ZS5waGlzeW1ib2xncmVlaz05ODE7ZS5waG9vaz00MjE7ZS5waG9waGFudGhhaT0zNjE0O2UucGhvcGh1bmd0aGFpPTM2MTI7ZS5waG9zYW1waGFvdGhhaT0zNjE2O2UucGk9OTYwO2UucGlldXBhY2lyY2xla29yZWFuPTEyOTE1O2UucGlldXBhcGFyZW5rb3JlYW49MTI4MTk7ZS5waWV1cGNpZXVja29yZWFuPTEyNjYyO2UucGlldXBjaXJjbGVrb3JlYW49MTI5MDE7ZS5waWV1cGtpeWVva2tvcmVhbj0xMjY1ODtlLnBpZXVwa29yZWFuPTEyNjEwO2UucGlldXBwYXJlbmtvcmVhbj0xMjgwNTtlLnBpZXVwc2lvc2tpeWVva2tvcmVhbj0xMjY2MDtlLnBpZXVwc2lvc2tvcmVhbj0xMjYxMjtlLnBpZXVwc2lvc3Rpa2V1dGtvcmVhbj0xMjY2MTtlLnBpZXVwdGhpZXV0aGtvcmVhbj0xMjY2MztlLnBpZXVwdGlrZXV0a29yZWFuPTEyNjU5O2UucGloaXJhZ2FuYT0xMjQwNDtlLnBpa2F0YWthbmE9MTI1MDA7ZS5waXN5bWJvbGdyZWVrPTk4MjtlLnBpd3Jhcm1lbmlhbj0xNDExO2UucGxhbmNrb3ZlcjJwaT04NDYzO2UucGxhbmNrb3ZlcjJwaTE9ODQ2MztlLnBsdXM9NDM7ZS5wbHVzYmVsb3djbWI9Nzk5O2UucGx1c2NpcmNsZT04ODUzO2UucGx1c21pbnVzPTE3NztlLnBsdXNtb2Q9NzI2O2UucGx1c21vbm9zcGFjZT02NTI5MTtlLnBsdXNzbWFsbD02NTEyMjtlLnBsdXNzdXBlcmlvcj04MzE0O2UucG1vbm9zcGFjZT02NTM2MDtlLnBtc3F1YXJlPTEzMjcyO2UucG9oaXJhZ2FuYT0xMjQxMztlLnBvaW50aW5naW5kZXhkb3dud2hpdGU9OTc1OTtlLnBvaW50aW5naW5kZXhsZWZ0d2hpdGU9OTc1NjtlLnBvaW50aW5naW5kZXhyaWdodHdoaXRlPTk3NTg7ZS5wb2ludGluZ2luZGV4dXB3aGl0ZT05NzU3O2UucG9rYXRha2FuYT0xMjUwOTtlLnBvcGxhdGhhaT0zNjExO2UucG9zdGFsbWFyaz0xMjMwNjtlLnBvc3RhbG1hcmtmYWNlPTEyMzIwO2UucHBhcmVuPTkzODc7ZS5wcmVjZWRlcz04ODI2O2UucHJlc2NyaXB0aW9uPTg0Nzg7ZS5wcmltZW1vZD02OTc7ZS5wcmltZXJldmVyc2VkPTgyNDU7ZS5wcm9kdWN0PTg3MTk7ZS5wcm9qZWN0aXZlPTg5NjU7ZS5wcm9sb25nZWRrYW5hPTEyNTQwO2UucHJvcGVsbG9yPTg5ODQ7ZS5wcm9wZXJzdWJzZXQ9ODgzNDtlLnByb3BlcnN1cGVyc2V0PTg4MzU7ZS5wcm9wb3J0aW9uPTg3NTk7ZS5wcm9wb3J0aW9uYWw9ODczMztlLnBzaT05Njg7ZS5wc2ljeXJpbGxpYz0xMTM3O2UucHNpbGlwbmV1bWF0YWN5cmlsbGljY21iPTExNTg7ZS5wc3NxdWFyZT0xMzIzMjtlLnB1aGlyYWdhbmE9MTI0MDc7ZS5wdWthdGFrYW5hPTEyNTAzO2UucHZzcXVhcmU9MTMyMzY7ZS5wd3NxdWFyZT0xMzI0MjtlLnE9MTEzO2UucWFkZXZhPTIzOTI7ZS5xYWRtYWhlYnJldz0xNDQ4O2UucWFmYXJhYmljPTE2MDI7ZS5xYWZmaW5hbGFyYWJpYz02NTIzODtlLnFhZmluaXRpYWxhcmFiaWM9NjUyMzk7ZS5xYWZtZWRpYWxhcmFiaWM9NjUyNDA7ZS5xYW1hdHM9MTQ2NDtlLnFhbWF0czEwPTE0NjQ7ZS5xYW1hdHMxYT0xNDY0O2UucWFtYXRzMWM9MTQ2NDtlLnFhbWF0czI3PTE0NjQ7ZS5xYW1hdHMyOT0xNDY0O2UucWFtYXRzMzM9MTQ2NDtlLnFhbWF0c2RlPTE0NjQ7ZS5xYW1hdHNoZWJyZXc9MTQ2NDtlLnFhbWF0c25hcnJvd2hlYnJldz0xNDY0O2UucWFtYXRzcWF0YW5oZWJyZXc9MTQ2NDtlLnFhbWF0c3FhdGFubmFycm93aGVicmV3PTE0NjQ7ZS5xYW1hdHNxYXRhbnF1YXJ0ZXJoZWJyZXc9MTQ2NDtlLnFhbWF0c3FhdGFud2lkZWhlYnJldz0xNDY0O2UucWFtYXRzcXVhcnRlcmhlYnJldz0xNDY0O2UucWFtYXRzd2lkZWhlYnJldz0xNDY0O2UucWFybmV5cGFyYWhlYnJldz0xNDM5O2UucWJvcG9tb2ZvPTEyNTYxO2UucWNpcmNsZT05NDQwO2UucWhvb2s9NjcyO2UucW1vbm9zcGFjZT02NTM2MTtlLnFvZj0xNTExO2UucW9mZGFnZXNoPTY0MzI3O2UucW9mZGFnZXNoaGVicmV3PTY0MzI3O2UucW9maGVicmV3PTE1MTE7ZS5xcGFyZW49OTM4ODtlLnF1YXJ0ZXJub3RlPTk4MzM7ZS5xdWJ1dHM9MTQ2NztlLnF1YnV0czE4PTE0Njc7ZS5xdWJ1dHMyNT0xNDY3O2UucXVidXRzMzE9MTQ2NztlLnF1YnV0c2hlYnJldz0xNDY3O2UucXVidXRzbmFycm93aGVicmV3PTE0Njc7ZS5xdWJ1dHNxdWFydGVyaGVicmV3PTE0Njc7ZS5xdWJ1dHN3aWRlaGVicmV3PTE0Njc7ZS5xdWVzdGlvbj02MztlLnF1ZXN0aW9uYXJhYmljPTE1Njc7ZS5xdWVzdGlvbmFybWVuaWFuPTEzNzQ7ZS5xdWVzdGlvbmRvd249MTkxO2UucXVlc3Rpb25kb3duc21hbGw9NjM0MjM7ZS5xdWVzdGlvbmdyZWVrPTg5NDtlLnF1ZXN0aW9ubW9ub3NwYWNlPTY1MzExO2UucXVlc3Rpb25zbWFsbD02MzI5NTtlLnF1b3RlZGJsPTM0O2UucXVvdGVkYmxiYXNlPTgyMjI7ZS5xdW90ZWRibGxlZnQ9ODIyMDtlLnF1b3RlZGJsbW9ub3NwYWNlPTY1MjgyO2UucXVvdGVkYmxwcmltZT0xMjMxODtlLnF1b3RlZGJscHJpbWVyZXZlcnNlZD0xMjMxNztlLnF1b3RlZGJscmlnaHQ9ODIyMTtlLnF1b3RlbGVmdD04MjE2O2UucXVvdGVsZWZ0cmV2ZXJzZWQ9ODIxOTtlLnF1b3RlcmV2ZXJzZWQ9ODIxOTtlLnF1b3RlcmlnaHQ9ODIxNztlLnF1b3RlcmlnaHRuPTMyOTtlLnF1b3Rlc2luZ2xiYXNlPTgyMTg7ZS5xdW90ZXNpbmdsZT0zOTtlLnF1b3Rlc2luZ2xlbW9ub3NwYWNlPTY1Mjg3O2Uucj0xMTQ7ZS5yYWFybWVuaWFuPTE0MDQ7ZS5yYWJlbmdhbGk9MjQ4MDtlLnJhY3V0ZT0zNDE7ZS5yYWRldmE9MjM1MjtlLnJhZGljYWw9ODczMDtlLnJhZGljYWxleD02MzcxNztlLnJhZG92ZXJzc3F1YXJlPTEzMjMwO2UucmFkb3ZlcnNzcXVhcmVkc3F1YXJlPTEzMjMxO2UucmFkc3F1YXJlPTEzMjI5O2UucmFmZT0xNDcxO2UucmFmZWhlYnJldz0xNDcxO2UucmFndWphcmF0aT0yNzM2O2UucmFndXJtdWtoaT0yNjA4O2UucmFoaXJhZ2FuYT0xMjQyNTtlLnJha2F0YWthbmE9MTI1MjE7ZS5yYWthdGFrYW5haGFsZndpZHRoPTY1NDMxO2UucmFsb3dlcmRpYWdvbmFsYmVuZ2FsaT0yNTQ1O2UucmFtaWRkbGVkaWFnb25hbGJlbmdhbGk9MjU0NDtlLnJhbXNob3JuPTYxMjtlLnJhdGlvPTg3NTg7ZS5yYm9wb21vZm89MTI1NjY7ZS5yY2Fyb249MzQ1O2UucmNlZGlsbGE9MzQzO2UucmNpcmNsZT05NDQxO2UucmNvbW1hYWNjZW50PTM0MztlLnJkYmxncmF2ZT01Mjk7ZS5yZG90YWNjZW50PTc3Njk7ZS5yZG90YmVsb3c9Nzc3MTtlLnJkb3RiZWxvd21hY3Jvbj03NzczO2UucmVmZXJlbmNlbWFyaz04MjUxO2UucmVmbGV4c3Vic2V0PTg4Mzg7ZS5yZWZsZXhzdXBlcnNldD04ODM5O2UucmVnaXN0ZXJlZD0xNzQ7ZS5yZWdpc3RlcnNhbnM9NjM3MjA7ZS5yZWdpc3RlcnNlcmlmPTYzMTk0O2UucmVoYXJhYmljPTE1ODU7ZS5yZWhhcm1lbmlhbj0xNDA4O2UucmVoZmluYWxhcmFiaWM9NjUxOTg7ZS5yZWhpcmFnYW5hPTEyNDI4O2UucmVrYXRha2FuYT0xMjUyNDtlLnJla2F0YWthbmFoYWxmd2lkdGg9NjU0MzQ7ZS5yZXNoPTE1MTI7ZS5yZXNoZGFnZXNoaGVicmV3PTY0MzI4O2UucmVzaGhlYnJldz0xNTEyO2UucmV2ZXJzZWR0aWxkZT04NzY1O2UucmV2aWFoZWJyZXc9MTQzMTtlLnJldmlhbXVncmFzaGhlYnJldz0xNDMxO2UucmV2bG9naWNhbG5vdD04OTc2O2UucmZpc2hob29rPTYzODtlLnJmaXNoaG9va3JldmVyc2VkPTYzOTtlLnJoYWJlbmdhbGk9MjUyNTtlLnJoYWRldmE9MjM5NztlLnJobz05NjE7ZS5yaG9vaz02Mzc7ZS5yaG9va3R1cm5lZD02MzU7ZS5yaG9va3R1cm5lZHN1cGVyaW9yPTY5MztlLnJob3N5bWJvbGdyZWVrPTEwMDk7ZS5yaG90aWNob29rbW9kPTczNDtlLnJpZXVsYWNpcmNsZWtvcmVhbj0xMjkxMztlLnJpZXVsYXBhcmVua29yZWFuPTEyODE3O2UucmlldWxjaXJjbGVrb3JlYW49MTI4OTk7ZS5yaWV1bGhpZXVoa29yZWFuPTEyNjA4O2UucmlldWxraXllb2trb3JlYW49MTI2MDI7ZS5yaWV1bGtpeWVva3Npb3Nrb3JlYW49MTI2NDk7ZS5yaWV1bGtvcmVhbj0xMjYwMTtlLnJpZXVsbWlldW1rb3JlYW49MTI2MDM7ZS5yaWV1bHBhbnNpb3Nrb3JlYW49MTI2NTI7ZS5yaWV1bHBhcmVua29yZWFuPTEyODAzO2UucmlldWxwaGlldXBoa29yZWFuPTEyNjA3O2UucmlldWxwaWV1cGtvcmVhbj0xMjYwNDtlLnJpZXVscGlldXBzaW9za29yZWFuPTEyNjUxO2UucmlldWxzaW9za29yZWFuPTEyNjA1O2UucmlldWx0aGlldXRoa29yZWFuPTEyNjA2O2UucmlldWx0aWtldXRrb3JlYW49MTI2NTA7ZS5yaWV1bHllb3JpbmhpZXVoa29yZWFuPTEyNjUzO2UucmlnaHRhbmdsZT04NzM1O2UucmlnaHR0YWNrYmVsb3djbWI9NzkzO2UucmlnaHR0cmlhbmdsZT04ODk1O2UucmloaXJhZ2FuYT0xMjQyNjtlLnJpa2F0YWthbmE9MTI1MjI7ZS5yaWthdGFrYW5haGFsZndpZHRoPTY1NDMyO2UucmluZz03MzA7ZS5yaW5nYmVsb3djbWI9ODA1O2UucmluZ2NtYj03Nzg7ZS5yaW5naGFsZmxlZnQ9NzAzO2UucmluZ2hhbGZsZWZ0YXJtZW5pYW49MTM2OTtlLnJpbmdoYWxmbGVmdGJlbG93Y21iPTc5NjtlLnJpbmdoYWxmbGVmdGNlbnRlcmVkPTcyMztlLnJpbmdoYWxmcmlnaHQ9NzAyO2UucmluZ2hhbGZyaWdodGJlbG93Y21iPTgyNTtlLnJpbmdoYWxmcmlnaHRjZW50ZXJlZD03MjI7ZS5yaW52ZXJ0ZWRicmV2ZT01MzE7ZS5yaXR0b3J1c3F1YXJlPTEzMTM3O2UucmxpbmViZWxvdz03Nzc1O2UucmxvbmdsZWc9NjM2O2UucmxvbmdsZWd0dXJuZWQ9NjM0O2Uucm1vbm9zcGFjZT02NTM2MjtlLnJvaGlyYWdhbmE9MTI0Mjk7ZS5yb2thdGFrYW5hPTEyNTI1O2Uucm9rYXRha2FuYWhhbGZ3aWR0aD02NTQzNTtlLnJvcnVhdGhhaT0zNjE5O2UucnBhcmVuPTkzODk7ZS5ycmFiZW5nYWxpPTI1MjQ7ZS5ycmFkZXZhPTIzNTM7ZS5ycmFndXJtdWtoaT0yNjUyO2UucnJlaGFyYWJpYz0xNjgxO2UucnJlaGZpbmFsYXJhYmljPTY0Mzk3O2UucnJ2b2NhbGljYmVuZ2FsaT0yNTI4O2UucnJ2b2NhbGljZGV2YT0yNDAwO2UucnJ2b2NhbGljZ3VqYXJhdGk9Mjc4NDtlLnJydm9jYWxpY3Zvd2Vsc2lnbmJlbmdhbGk9MjUwMDtlLnJydm9jYWxpY3Zvd2Vsc2lnbmRldmE9MjM3MjtlLnJydm9jYWxpY3Zvd2Vsc2lnbmd1amFyYXRpPTI3NTY7ZS5yc3VwZXJpb3I9NjMyMTc7ZS5ydGJsb2NrPTk2MTY7ZS5ydHVybmVkPTYzMztlLnJ0dXJuZWRzdXBlcmlvcj02OTI7ZS5ydWhpcmFnYW5hPTEyNDI3O2UucnVrYXRha2FuYT0xMjUyMztlLnJ1a2F0YWthbmFoYWxmd2lkdGg9NjU0MzM7ZS5ydXBlZW1hcmtiZW5nYWxpPTI1NDY7ZS5ydXBlZXNpZ25iZW5nYWxpPTI1NDc7ZS5ydXBpYWg9NjMxOTc7ZS5ydXRoYWk9MzYyMDtlLnJ2b2NhbGljYmVuZ2FsaT0yNDQzO2UucnZvY2FsaWNkZXZhPTIzMTU7ZS5ydm9jYWxpY2d1amFyYXRpPTI2OTk7ZS5ydm9jYWxpY3Zvd2Vsc2lnbmJlbmdhbGk9MjQ5OTtlLnJ2b2NhbGljdm93ZWxzaWduZGV2YT0yMzcxO2UucnZvY2FsaWN2b3dlbHNpZ25ndWphcmF0aT0yNzU1O2Uucz0xMTU7ZS5zYWJlbmdhbGk9MjQ4ODtlLnNhY3V0ZT0zNDc7ZS5zYWN1dGVkb3RhY2NlbnQ9Nzc4MTtlLnNhZGFyYWJpYz0xNTg5O2Uuc2FkZXZhPTIzNjA7ZS5zYWRmaW5hbGFyYWJpYz02NTIxMDtlLnNhZGluaXRpYWxhcmFiaWM9NjUyMTE7ZS5zYWRtZWRpYWxhcmFiaWM9NjUyMTI7ZS5zYWd1amFyYXRpPTI3NDQ7ZS5zYWd1cm11a2hpPTI2MTY7ZS5zYWhpcmFnYW5hPTEyMzczO2Uuc2FrYXRha2FuYT0xMjQ2OTtlLnNha2F0YWthbmFoYWxmd2lkdGg9NjU0MDM7ZS5zYWxsYWxsYWhvdWFsYXloZXdhc2FsbGFtYXJhYmljPTY1MDE4O2Uuc2FtZWtoPTE1MDU7ZS5zYW1la2hkYWdlc2g9NjQzMjE7ZS5zYW1la2hkYWdlc2hoZWJyZXc9NjQzMjE7ZS5zYW1la2hoZWJyZXc9MTUwNTtlLnNhcmFhYXRoYWk9MzYzNDtlLnNhcmFhZXRoYWk9MzY0OTtlLnNhcmFhaW1haW1hbGFpdGhhaT0zNjUyO2Uuc2FyYWFpbWFpbXVhbnRoYWk9MzY1MTtlLnNhcmFhbXRoYWk9MzYzNTtlLnNhcmFhdGhhaT0zNjMyO2Uuc2FyYWV0aGFpPTM2NDg7ZS5zYXJhaWlsZWZ0dGhhaT02MzYyMjtlLnNhcmFpaXRoYWk9MzYzNztlLnNhcmFpbGVmdHRoYWk9NjM2MjE7ZS5zYXJhaXRoYWk9MzYzNjtlLnNhcmFvdGhhaT0zNjUwO2Uuc2FyYXVlZWxlZnR0aGFpPTYzNjI0O2Uuc2FyYXVlZXRoYWk9MzYzOTtlLnNhcmF1ZWxlZnR0aGFpPTYzNjIzO2Uuc2FyYXVldGhhaT0zNjM4O2Uuc2FyYXV0aGFpPTM2NDA7ZS5zYXJhdXV0aGFpPTM2NDE7ZS5zYm9wb21vZm89MTI1Njk7ZS5zY2Fyb249MzUzO2Uuc2Nhcm9uZG90YWNjZW50PTc3ODM7ZS5zY2VkaWxsYT0zNTE7ZS5zY2h3YT02MDE7ZS5zY2h3YWN5cmlsbGljPTEyNDE7ZS5zY2h3YWRpZXJlc2lzY3lyaWxsaWM9MTI0MztlLnNjaHdhaG9vaz02MDI7ZS5zY2lyY2xlPTk0NDI7ZS5zY2lyY3VtZmxleD0zNDk7ZS5zY29tbWFhY2NlbnQ9NTM3O2Uuc2RvdGFjY2VudD03Nzc3O2Uuc2RvdGJlbG93PTc3Nzk7ZS5zZG90YmVsb3dkb3RhY2NlbnQ9Nzc4NTtlLnNlYWd1bGxiZWxvd2NtYj04Mjg7ZS5zZWNvbmQ9ODI0MztlLnNlY29uZHRvbmVjaGluZXNlPTcxNDtlLnNlY3Rpb249MTY3O2Uuc2VlbmFyYWJpYz0xNTg3O2Uuc2VlbmZpbmFsYXJhYmljPTY1MjAyO2Uuc2VlbmluaXRpYWxhcmFiaWM9NjUyMDM7ZS5zZWVubWVkaWFsYXJhYmljPTY1MjA0O2Uuc2Vnb2w9MTQ2MjtlLnNlZ29sMTM9MTQ2MjtlLnNlZ29sMWY9MTQ2MjtlLnNlZ29sMmM9MTQ2MjtlLnNlZ29saGVicmV3PTE0NjI7ZS5zZWdvbG5hcnJvd2hlYnJldz0xNDYyO2Uuc2Vnb2xxdWFydGVyaGVicmV3PTE0NjI7ZS5zZWdvbHRhaGVicmV3PTE0MjY7ZS5zZWdvbHdpZGVoZWJyZXc9MTQ2MjtlLnNlaGFybWVuaWFuPTE0MDU7ZS5zZWhpcmFnYW5hPTEyMzc5O2Uuc2VrYXRha2FuYT0xMjQ3NTtlLnNla2F0YWthbmFoYWxmd2lkdGg9NjU0MDY7ZS5zZW1pY29sb249NTk7ZS5zZW1pY29sb25hcmFiaWM9MTU2MztlLnNlbWljb2xvbm1vbm9zcGFjZT02NTMwNztlLnNlbWljb2xvbnNtYWxsPTY1MTA4O2Uuc2VtaXZvaWNlZG1hcmtrYW5hPTEyNDQ0O2Uuc2VtaXZvaWNlZG1hcmtrYW5haGFsZndpZHRoPTY1NDM5O2Uuc2VudGlzcXVhcmU9MTMwOTA7ZS5zZW50b3NxdWFyZT0xMzA5MTtlLnNldmVuPTU1O2Uuc2V2ZW5hcmFiaWM9MTYzOTtlLnNldmVuYmVuZ2FsaT0yNTQxO2Uuc2V2ZW5jaXJjbGU9OTMxODtlLnNldmVuY2lyY2xlaW52ZXJzZXNhbnNzZXJpZj0xMDEyODtlLnNldmVuZGV2YT0yNDEzO2Uuc2V2ZW5laWdodGhzPTg1NDI7ZS5zZXZlbmd1amFyYXRpPTI3OTc7ZS5zZXZlbmd1cm11a2hpPTI2Njk7ZS5zZXZlbmhhY2thcmFiaWM9MTYzOTtlLnNldmVuaGFuZ3pob3U9MTIzMjc7ZS5zZXZlbmlkZW9ncmFwaGljcGFyZW49MTI4Mzg7ZS5zZXZlbmluZmVyaW9yPTgzMjc7ZS5zZXZlbm1vbm9zcGFjZT02NTMwMztlLnNldmVub2xkc3R5bGU9NjMyODc7ZS5zZXZlbnBhcmVuPTkzMzg7ZS5zZXZlbnBlcmlvZD05MzU4O2Uuc2V2ZW5wZXJzaWFuPTE3ODM7ZS5zZXZlbnJvbWFuPTg1NjY7ZS5zZXZlbnN1cGVyaW9yPTgzMTE7ZS5zZXZlbnRlZW5jaXJjbGU9OTMyODtlLnNldmVudGVlbnBhcmVuPTkzNDg7ZS5zZXZlbnRlZW5wZXJpb2Q9OTM2ODtlLnNldmVudGhhaT0zNjcxO2Uuc2Z0aHlwaGVuPTE3MztlLnNoYWFybWVuaWFuPTEzOTk7ZS5zaGFiZW5nYWxpPTI0ODY7ZS5zaGFjeXJpbGxpYz0xMDk2O2Uuc2hhZGRhYXJhYmljPTE2MTc7ZS5zaGFkZGFkYW1tYWFyYWJpYz02NDYwOTtlLnNoYWRkYWRhbW1hdGFuYXJhYmljPTY0NjA2O2Uuc2hhZGRhZmF0aGFhcmFiaWM9NjQ2MDg7ZS5zaGFkZGFrYXNyYWFyYWJpYz02NDYxMDtlLnNoYWRkYWthc3JhdGFuYXJhYmljPTY0NjA3O2Uuc2hhZGU9OTYxODtlLnNoYWRlZGFyaz05NjE5O2Uuc2hhZGVsaWdodD05NjE3O2Uuc2hhZGVtZWRpdW09OTYxODtlLnNoYWRldmE9MjM1ODtlLnNoYWd1amFyYXRpPTI3NDI7ZS5zaGFndXJtdWtoaT0yNjE0O2Uuc2hhbHNoZWxldGhlYnJldz0xNDI3O2Uuc2hib3BvbW9mbz0xMjU2NTtlLnNoY2hhY3lyaWxsaWM9MTA5NztlLnNoZWVuYXJhYmljPTE1ODg7ZS5zaGVlbmZpbmFsYXJhYmljPTY1MjA2O2Uuc2hlZW5pbml0aWFsYXJhYmljPTY1MjA3O2Uuc2hlZW5tZWRpYWxhcmFiaWM9NjUyMDg7ZS5zaGVpY29wdGljPTk5NTtlLnNoZXFlbD04MzYyO2Uuc2hlcWVsaGVicmV3PTgzNjI7ZS5zaGV2YT0xNDU2O2Uuc2hldmExMTU9MTQ1NjtlLnNoZXZhMTU9MTQ1NjtlLnNoZXZhMjI9MTQ1NjtlLnNoZXZhMmU9MTQ1NjtlLnNoZXZhaGVicmV3PTE0NTY7ZS5zaGV2YW5hcnJvd2hlYnJldz0xNDU2O2Uuc2hldmFxdWFydGVyaGVicmV3PTE0NTY7ZS5zaGV2YXdpZGVoZWJyZXc9MTQ1NjtlLnNoaGFjeXJpbGxpYz0xMjExO2Uuc2hpbWFjb3B0aWM9MTAwNTtlLnNoaW49MTUxMztlLnNoaW5kYWdlc2g9NjQzMjk7ZS5zaGluZGFnZXNoaGVicmV3PTY0MzI5O2Uuc2hpbmRhZ2VzaHNoaW5kb3Q9NjQzMDA7ZS5zaGluZGFnZXNoc2hpbmRvdGhlYnJldz02NDMwMDtlLnNoaW5kYWdlc2hzaW5kb3Q9NjQzMDE7ZS5zaGluZGFnZXNoc2luZG90aGVicmV3PTY0MzAxO2Uuc2hpbmRvdGhlYnJldz0xNDczO2Uuc2hpbmhlYnJldz0xNTEzO2Uuc2hpbnNoaW5kb3Q9NjQyOTg7ZS5zaGluc2hpbmRvdGhlYnJldz02NDI5ODtlLnNoaW5zaW5kb3Q9NjQyOTk7ZS5zaGluc2luZG90aGVicmV3PTY0Mjk5O2Uuc2hvb2s9NjQyO2Uuc2lnbWE9OTYzO2Uuc2lnbWExPTk2MjtlLnNpZ21hZmluYWw9OTYyO2Uuc2lnbWFsdW5hdGVzeW1ib2xncmVlaz0xMDEwO2Uuc2loaXJhZ2FuYT0xMjM3NTtlLnNpa2F0YWthbmE9MTI0NzE7ZS5zaWthdGFrYW5haGFsZndpZHRoPTY1NDA0O2Uuc2lsdXFoZWJyZXc9MTQ2OTtlLnNpbHVxbGVmdGhlYnJldz0xNDY5O2Uuc2ltaWxhcj04NzY0O2Uuc2luZG90aGVicmV3PTE0NzQ7ZS5zaW9zYWNpcmNsZWtvcmVhbj0xMjkxNjtlLnNpb3NhcGFyZW5rb3JlYW49MTI4MjA7ZS5zaW9zY2lldWNrb3JlYW49MTI2NzA7ZS5zaW9zY2lyY2xla29yZWFuPTEyOTAyO2Uuc2lvc2tpeWVva2tvcmVhbj0xMjY2NjtlLnNpb3Nrb3JlYW49MTI2MTM7ZS5zaW9zbmlldW5rb3JlYW49MTI2Njc7ZS5zaW9zcGFyZW5rb3JlYW49MTI4MDY7ZS5zaW9zcGlldXBrb3JlYW49MTI2Njk7ZS5zaW9zdGlrZXV0a29yZWFuPTEyNjY4O2Uuc2l4PTU0O2Uuc2l4YXJhYmljPTE2Mzg7ZS5zaXhiZW5nYWxpPTI1NDA7ZS5zaXhjaXJjbGU9OTMxNztlLnNpeGNpcmNsZWludmVyc2VzYW5zc2VyaWY9MTAxMjc7ZS5zaXhkZXZhPTI0MTI7ZS5zaXhndWphcmF0aT0yNzk2O2Uuc2l4Z3VybXVraGk9MjY2ODtlLnNpeGhhY2thcmFiaWM9MTYzODtlLnNpeGhhbmd6aG91PTEyMzI2O2Uuc2l4aWRlb2dyYXBoaWNwYXJlbj0xMjgzNztlLnNpeGluZmVyaW9yPTgzMjY7ZS5zaXhtb25vc3BhY2U9NjUzMDI7ZS5zaXhvbGRzdHlsZT02MzI4NjtlLnNpeHBhcmVuPTkzMzc7ZS5zaXhwZXJpb2Q9OTM1NztlLnNpeHBlcnNpYW49MTc4MjtlLnNpeHJvbWFuPTg1NjU7ZS5zaXhzdXBlcmlvcj04MzEwO2Uuc2l4dGVlbmNpcmNsZT05MzI3O2Uuc2l4dGVlbmN1cnJlbmN5ZGVub21pbmF0b3JiZW5nYWxpPTI1NTM7ZS5zaXh0ZWVucGFyZW49OTM0NztlLnNpeHRlZW5wZXJpb2Q9OTM2NztlLnNpeHRoYWk9MzY3MDtlLnNsYXNoPTQ3O2Uuc2xhc2htb25vc3BhY2U9NjUyOTU7ZS5zbG9uZz0zODM7ZS5zbG9uZ2RvdGFjY2VudD03ODM1O2Uuc21pbGVmYWNlPTk3ODY7ZS5zbW9ub3NwYWNlPTY1MzYzO2Uuc29mcGFzdXFoZWJyZXc9MTQ3NTtlLnNvZnRoeXBoZW49MTczO2Uuc29mdHNpZ25jeXJpbGxpYz0xMTAwO2Uuc29oaXJhZ2FuYT0xMjM4MTtlLnNva2F0YWthbmE9MTI0Nzc7ZS5zb2thdGFrYW5haGFsZndpZHRoPTY1NDA3O2Uuc29saWR1c2xvbmdvdmVybGF5Y21iPTgyNDtlLnNvbGlkdXNzaG9ydG92ZXJsYXljbWI9ODIzO2Uuc29ydXNpdGhhaT0zNjI1O2Uuc29zYWxhdGhhaT0zNjI0O2Uuc29zb3RoYWk9MzU5NTtlLnNvc3VhdGhhaT0zNjI2O2Uuc3BhY2U9MzI7ZS5zcGFjZWhhY2thcmFiaWM9MzI7ZS5zcGFkZT05ODI0O2Uuc3BhZGVzdWl0YmxhY2s9OTgyNDtlLnNwYWRlc3VpdHdoaXRlPTk4Mjg7ZS5zcGFyZW49OTM5MDtlLnNxdWFyZWJlbG93Y21iPTgyNztlLnNxdWFyZWNjPTEzMjUyO2Uuc3F1YXJlY209MTMyMTM7ZS5zcXVhcmVkaWFnb25hbGNyb3NzaGF0Y2hmaWxsPTk2NDE7ZS5zcXVhcmVob3Jpem9udGFsZmlsbD05NjM2O2Uuc3F1YXJla2c9MTMxOTk7ZS5zcXVhcmVrbT0xMzIxNDtlLnNxdWFyZWttY2FwaXRhbD0xMzI2MjtlLnNxdWFyZWxuPTEzMjY1O2Uuc3F1YXJlbG9nPTEzMjY2O2Uuc3F1YXJlbWc9MTMxOTg7ZS5zcXVhcmVtaWw9MTMyNjk7ZS5zcXVhcmVtbT0xMzIxMjtlLnNxdWFyZW1zcXVhcmVkPTEzMjE3O2Uuc3F1YXJlb3J0aG9nb25hbGNyb3NzaGF0Y2hmaWxsPTk2Mzg7ZS5zcXVhcmV1cHBlcmxlZnR0b2xvd2VycmlnaHRmaWxsPTk2Mzk7ZS5zcXVhcmV1cHBlcnJpZ2h0dG9sb3dlcmxlZnRmaWxsPTk2NDA7ZS5zcXVhcmV2ZXJ0aWNhbGZpbGw9OTYzNztlLnNxdWFyZXdoaXRld2l0aHNtYWxsYmxhY2s9OTYzNTtlLnNyc3F1YXJlPTEzMjc1O2Uuc3NhYmVuZ2FsaT0yNDg3O2Uuc3NhZGV2YT0yMzU5O2Uuc3NhZ3VqYXJhdGk9Mjc0MztlLnNzYW5nY2lldWNrb3JlYW49MTI2MTc7ZS5zc2FuZ2hpZXVoa29yZWFuPTEyNjc3O2Uuc3NhbmdpZXVuZ2tvcmVhbj0xMjY3MjtlLnNzYW5na2l5ZW9ra29yZWFuPTEyNTk0O2Uuc3NhbmduaWV1bmtvcmVhbj0xMjY0NTtlLnNzYW5ncGlldXBrb3JlYW49MTI2MTE7ZS5zc2FuZ3Npb3Nrb3JlYW49MTI2MTQ7ZS5zc2FuZ3Rpa2V1dGtvcmVhbj0xMjYwMDtlLnNzdXBlcmlvcj02MzIxODtlLnN0ZXJsaW5nPTE2MztlLnN0ZXJsaW5nbW9ub3NwYWNlPTY1NTA1O2Uuc3Ryb2tlbG9uZ292ZXJsYXljbWI9ODIyO2Uuc3Ryb2tlc2hvcnRvdmVybGF5Y21iPTgyMTtlLnN1YnNldD04ODM0O2Uuc3Vic2V0bm90ZXF1YWw9ODg0MjtlLnN1YnNldG9yZXF1YWw9ODgzODtlLnN1Y2NlZWRzPTg4Mjc7ZS5zdWNodGhhdD04NzE1O2Uuc3VoaXJhZ2FuYT0xMjM3NztlLnN1a2F0YWthbmE9MTI0NzM7ZS5zdWthdGFrYW5haGFsZndpZHRoPTY1NDA1O2Uuc3VrdW5hcmFiaWM9MTYxODtlLnN1bW1hdGlvbj04NzIxO2Uuc3VuPTk3ODg7ZS5zdXBlcnNldD04ODM1O2Uuc3VwZXJzZXRub3RlcXVhbD04ODQzO2Uuc3VwZXJzZXRvcmVxdWFsPTg4Mzk7ZS5zdnNxdWFyZT0xMzI3NjtlLnN5b3V3YWVyYXNxdWFyZT0xMzE4MDtlLnQ9MTE2O2UudGFiZW5nYWxpPTI0Njg7ZS50YWNrZG93bj04ODY4O2UudGFja2xlZnQ9ODg2NztlLnRhZGV2YT0yMzQwO2UudGFndWphcmF0aT0yNzI0O2UudGFndXJtdWtoaT0yNTk2O2UudGFoYXJhYmljPTE1OTE7ZS50YWhmaW5hbGFyYWJpYz02NTIxODtlLnRhaGluaXRpYWxhcmFiaWM9NjUyMTk7ZS50YWhpcmFnYW5hPTEyMzgzO2UudGFobWVkaWFsYXJhYmljPTY1MjIwO2UudGFpc3lvdWVyYXNxdWFyZT0xMzE4MTtlLnRha2F0YWthbmE9MTI0Nzk7ZS50YWthdGFrYW5haGFsZndpZHRoPTY1NDA4O2UudGF0d2VlbGFyYWJpYz0xNjAwO2UudGF1PTk2NDtlLnRhdj0xNTE0O2UudGF2ZGFnZXM9NjQzMzA7ZS50YXZkYWdlc2g9NjQzMzA7ZS50YXZkYWdlc2hoZWJyZXc9NjQzMzA7ZS50YXZoZWJyZXc9MTUxNDtlLnRiYXI9MzU5O2UudGJvcG9tb2ZvPTEyNTU0O2UudGNhcm9uPTM1NztlLnRjY3VybD02ODA7ZS50Y2VkaWxsYT0zNTU7ZS50Y2hlaGFyYWJpYz0xNjcwO2UudGNoZWhmaW5hbGFyYWJpYz02NDM3OTtlLnRjaGVoaW5pdGlhbGFyYWJpYz02NDM4MDtlLnRjaGVobWVkaWFsYXJhYmljPTY0MzgxO2UudGNpcmNsZT05NDQzO2UudGNpcmN1bWZsZXhiZWxvdz03NzkzO2UudGNvbW1hYWNjZW50PTM1NTtlLnRkaWVyZXNpcz03ODMxO2UudGRvdGFjY2VudD03Nzg3O2UudGRvdGJlbG93PTc3ODk7ZS50ZWN5cmlsbGljPTEwOTA7ZS50ZWRlc2NlbmRlcmN5cmlsbGljPTExOTc7ZS50ZWhhcmFiaWM9MTU3ODtlLnRlaGZpbmFsYXJhYmljPTY1MTc0O2UudGVoaGFoaW5pdGlhbGFyYWJpYz02NDY3NDtlLnRlaGhhaGlzb2xhdGVkYXJhYmljPTY0NTI0O2UudGVoaW5pdGlhbGFyYWJpYz02NTE3NTtlLnRlaGlyYWdhbmE9MTIzOTA7ZS50ZWhqZWVtaW5pdGlhbGFyYWJpYz02NDY3MztlLnRlaGplZW1pc29sYXRlZGFyYWJpYz02NDUyMztlLnRlaG1hcmJ1dGFhcmFiaWM9MTU3NztlLnRlaG1hcmJ1dGFmaW5hbGFyYWJpYz02NTE3MjtlLnRlaG1lZGlhbGFyYWJpYz02NTE3NjtlLnRlaG1lZW1pbml0aWFsYXJhYmljPTY0Njc2O2UudGVobWVlbWlzb2xhdGVkYXJhYmljPTY0NTI2O2UudGVobm9vbmZpbmFsYXJhYmljPTY0NjI3O2UudGVrYXRha2FuYT0xMjQ4NjtlLnRla2F0YWthbmFoYWxmd2lkdGg9NjU0MTE7ZS50ZWxlcGhvbmU9ODQ4MTtlLnRlbGVwaG9uZWJsYWNrPTk3NDI7ZS50ZWxpc2hhZ2Vkb2xhaGVicmV3PTE0NDA7ZS50ZWxpc2hhcWV0YW5haGVicmV3PTE0NDk7ZS50ZW5jaXJjbGU9OTMyMTtlLnRlbmlkZW9ncmFwaGljcGFyZW49MTI4NDE7ZS50ZW5wYXJlbj05MzQxO2UudGVucGVyaW9kPTkzNjE7ZS50ZW5yb21hbj04NTY5O2UudGVzaD02Nzk7ZS50ZXQ9MTQ5NjtlLnRldGRhZ2VzaD02NDMxMjtlLnRldGRhZ2VzaGhlYnJldz02NDMxMjtlLnRldGhlYnJldz0xNDk2O2UudGV0c2VjeXJpbGxpYz0xMjA1O2UudGV2aXJoZWJyZXc9MTQzNTtlLnRldmlybGVmdGhlYnJldz0xNDM1O2UudGhhYmVuZ2FsaT0yNDY5O2UudGhhZGV2YT0yMzQxO2UudGhhZ3VqYXJhdGk9MjcyNTtlLnRoYWd1cm11a2hpPTI1OTc7ZS50aGFsYXJhYmljPTE1ODQ7ZS50aGFsZmluYWxhcmFiaWM9NjUxOTY7ZS50aGFudGhha2hhdGxvd2xlZnR0aGFpPTYzNjQwO2UudGhhbnRoYWtoYXRsb3dyaWdodHRoYWk9NjM2Mzk7ZS50aGFudGhha2hhdHRoYWk9MzY2MDtlLnRoYW50aGFraGF0dXBwZXJsZWZ0dGhhaT02MzYzODtlLnRoZWhhcmFiaWM9MTU3OTtlLnRoZWhmaW5hbGFyYWJpYz02NTE3ODtlLnRoZWhpbml0aWFsYXJhYmljPTY1MTc5O2UudGhlaG1lZGlhbGFyYWJpYz02NTE4MDtlLnRoZXJlZXhpc3RzPTg3MDc7ZS50aGVyZWZvcmU9ODc1NjtlLnRoZXRhPTk1MjtlLnRoZXRhMT05Nzc7ZS50aGV0YXN5bWJvbGdyZWVrPTk3NztlLnRoaWV1dGhhY2lyY2xla29yZWFuPTEyOTIxO2UudGhpZXV0aGFwYXJlbmtvcmVhbj0xMjgyNTtlLnRoaWV1dGhjaXJjbGVrb3JlYW49MTI5MDc7ZS50aGlldXRoa29yZWFuPTEyNjIwO2UudGhpZXV0aHBhcmVua29yZWFuPTEyODExO2UudGhpcnRlZW5jaXJjbGU9OTMyNDtlLnRoaXJ0ZWVucGFyZW49OTM0NDtlLnRoaXJ0ZWVucGVyaW9kPTkzNjQ7ZS50aG9uYW5nbW9udGhvdGhhaT0zNjAxO2UudGhvb2s9NDI5O2UudGhvcGh1dGhhb3RoYWk9MzYwMjtlLnRob3JuPTI1NDtlLnRob3RoYWhhbnRoYWk9MzYwNztlLnRob3RoYW50aGFpPTM2MDA7ZS50aG90aG9uZ3RoYWk9MzYwODtlLnRob3RodW5ndGhhaT0zNjA2O2UudGhvdXNhbmRjeXJpbGxpYz0xMTU0O2UudGhvdXNhbmRzc2VwYXJhdG9yYXJhYmljPTE2NDQ7ZS50aG91c2FuZHNzZXBhcmF0b3JwZXJzaWFuPTE2NDQ7ZS50aHJlZT01MTtlLnRocmVlYXJhYmljPTE2MzU7ZS50aHJlZWJlbmdhbGk9MjUzNztlLnRocmVlY2lyY2xlPTkzMTQ7ZS50aHJlZWNpcmNsZWludmVyc2VzYW5zc2VyaWY9MTAxMjQ7ZS50aHJlZWRldmE9MjQwOTtlLnRocmVlZWlnaHRocz04NTQwO2UudGhyZWVndWphcmF0aT0yNzkzO2UudGhyZWVndXJtdWtoaT0yNjY1O2UudGhyZWVoYWNrYXJhYmljPTE2MzU7ZS50aHJlZWhhbmd6aG91PTEyMzIzO2UudGhyZWVpZGVvZ3JhcGhpY3BhcmVuPTEyODM0O2UudGhyZWVpbmZlcmlvcj04MzIzO2UudGhyZWVtb25vc3BhY2U9NjUyOTk7ZS50aHJlZW51bWVyYXRvcmJlbmdhbGk9MjU1MDtlLnRocmVlb2xkc3R5bGU9NjMyODM7ZS50aHJlZXBhcmVuPTkzMzQ7ZS50aHJlZXBlcmlvZD05MzU0O2UudGhyZWVwZXJzaWFuPTE3Nzk7ZS50aHJlZXF1YXJ0ZXJzPTE5MDtlLnRocmVlcXVhcnRlcnNlbWRhc2g9NjMxOTg7ZS50aHJlZXJvbWFuPTg1NjI7ZS50aHJlZXN1cGVyaW9yPTE3OTtlLnRocmVldGhhaT0zNjY3O2UudGh6c3F1YXJlPTEzMjA0O2UudGloaXJhZ2FuYT0xMjM4NTtlLnRpa2F0YWthbmE9MTI0ODE7ZS50aWthdGFrYW5haGFsZndpZHRoPTY1NDA5O2UudGlrZXV0YWNpcmNsZWtvcmVhbj0xMjkxMjtlLnRpa2V1dGFwYXJlbmtvcmVhbj0xMjgxNjtlLnRpa2V1dGNpcmNsZWtvcmVhbj0xMjg5ODtlLnRpa2V1dGtvcmVhbj0xMjU5OTtlLnRpa2V1dHBhcmVua29yZWFuPTEyODAyO2UudGlsZGU9NzMyO2UudGlsZGViZWxvd2NtYj04MTY7ZS50aWxkZWNtYj03NzE7ZS50aWxkZWNvbWI9NzcxO2UudGlsZGVkb3VibGVjbWI9ODY0O2UudGlsZGVvcGVyYXRvcj04NzY0O2UudGlsZGVvdmVybGF5Y21iPTgyMDtlLnRpbGRldmVydGljYWxjbWI9ODMwO2UudGltZXNjaXJjbGU9ODg1NTtlLnRpcGVoYWhlYnJldz0xNDMwO2UudGlwZWhhbGVmdGhlYnJldz0xNDMwO2UudGlwcGlndXJtdWtoaT0yNjcyO2UudGl0bG9jeXJpbGxpY2NtYj0xMTU1O2UudGl3bmFybWVuaWFuPTE0MDc7ZS50bGluZWJlbG93PTc3OTE7ZS50bW9ub3NwYWNlPTY1MzY0O2UudG9hcm1lbmlhbj0xMzg1O2UudG9oaXJhZ2FuYT0xMjM5MjtlLnRva2F0YWthbmE9MTI0ODg7ZS50b2thdGFrYW5haGFsZndpZHRoPTY1NDEyO2UudG9uZWJhcmV4dHJhaGlnaG1vZD03NDE7ZS50b25lYmFyZXh0cmFsb3dtb2Q9NzQ1O2UudG9uZWJhcmhpZ2htb2Q9NzQyO2UudG9uZWJhcmxvd21vZD03NDQ7ZS50b25lYmFybWlkbW9kPTc0MztlLnRvbmVmaXZlPTQ0NTtlLnRvbmVzaXg9Mzg5O2UudG9uZXR3bz00MjQ7ZS50b25vcz05MDA7ZS50b25zcXVhcmU9MTMwOTU7ZS50b3BhdGFrdGhhaT0zNTk5O2UudG9ydG9pc2VzaGVsbGJyYWNrZXRsZWZ0PTEyMzA4O2UudG9ydG9pc2VzaGVsbGJyYWNrZXRsZWZ0c21hbGw9NjUxMTc7ZS50b3J0b2lzZXNoZWxsYnJhY2tldGxlZnR2ZXJ0aWNhbD02NTA4MTtlLnRvcnRvaXNlc2hlbGxicmFja2V0cmlnaHQ9MTIzMDk7ZS50b3J0b2lzZXNoZWxsYnJhY2tldHJpZ2h0c21hbGw9NjUxMTg7ZS50b3J0b2lzZXNoZWxsYnJhY2tldHJpZ2h0dmVydGljYWw9NjUwODI7ZS50b3Rhb3RoYWk9MzYwNTtlLnRwYWxhdGFsaG9vaz00Mjc7ZS50cGFyZW49OTM5MTtlLnRyYWRlbWFyaz04NDgyO2UudHJhZGVtYXJrc2Fucz02MzcyMjtlLnRyYWRlbWFya3NlcmlmPTYzMTk1O2UudHJldHJvZmxleGhvb2s9NjQ4O2UudHJpYWdkbj05NjYwO2UudHJpYWdsZj05NjY4O2UudHJpYWdydD05NjU4O2UudHJpYWd1cD05NjUwO2UudHM9Njc4O2UudHNhZGk9MTUxMDtlLnRzYWRpZGFnZXNoPTY0MzI2O2UudHNhZGlkYWdlc2hoZWJyZXc9NjQzMjY7ZS50c2FkaWhlYnJldz0xNTEwO2UudHNlY3lyaWxsaWM9MTA5NDtlLnRzZXJlPTE0NjE7ZS50c2VyZTEyPTE0NjE7ZS50c2VyZTFlPTE0NjE7ZS50c2VyZTJiPTE0NjE7ZS50c2VyZWhlYnJldz0xNDYxO2UudHNlcmVuYXJyb3doZWJyZXc9MTQ2MTtlLnRzZXJlcXVhcnRlcmhlYnJldz0xNDYxO2UudHNlcmV3aWRlaGVicmV3PTE0NjE7ZS50c2hlY3lyaWxsaWM9MTExNTtlLnRzdXBlcmlvcj02MzIxOTtlLnR0YWJlbmdhbGk9MjQ2MztlLnR0YWRldmE9MjMzNTtlLnR0YWd1amFyYXRpPTI3MTk7ZS50dGFndXJtdWtoaT0yNTkxO2UudHRlaGFyYWJpYz0xNjU3O2UudHRlaGZpbmFsYXJhYmljPTY0MzU5O2UudHRlaGluaXRpYWxhcmFiaWM9NjQzNjA7ZS50dGVobWVkaWFsYXJhYmljPTY0MzYxO2UudHRoYWJlbmdhbGk9MjQ2NDtlLnR0aGFkZXZhPTIzMzY7ZS50dGhhZ3VqYXJhdGk9MjcyMDtlLnR0aGFndXJtdWtoaT0yNTkyO2UudHR1cm5lZD02NDc7ZS50dWhpcmFnYW5hPTEyMzg4O2UudHVrYXRha2FuYT0xMjQ4NDtlLnR1a2F0YWthbmFoYWxmd2lkdGg9NjU0MTA7ZS50dXNtYWxsaGlyYWdhbmE9MTIzODc7ZS50dXNtYWxsa2F0YWthbmE9MTI0ODM7ZS50dXNtYWxsa2F0YWthbmFoYWxmd2lkdGg9NjUzOTE7ZS50d2VsdmVjaXJjbGU9OTMyMztlLnR3ZWx2ZXBhcmVuPTkzNDM7ZS50d2VsdmVwZXJpb2Q9OTM2MztlLnR3ZWx2ZXJvbWFuPTg1NzE7ZS50d2VudHljaXJjbGU9OTMzMTtlLnR3ZW50eWhhbmd6aG91PTIxMzE2O2UudHdlbnR5cGFyZW49OTM1MTtlLnR3ZW50eXBlcmlvZD05MzcxO2UudHdvPTUwO2UudHdvYXJhYmljPTE2MzQ7ZS50d29iZW5nYWxpPTI1MzY7ZS50d29jaXJjbGU9OTMxMztlLnR3b2NpcmNsZWludmVyc2VzYW5zc2VyaWY9MTAxMjM7ZS50d29kZXZhPTI0MDg7ZS50d29kb3RlbmxlYWRlcj04MjI5O2UudHdvZG90bGVhZGVyPTgyMjk7ZS50d29kb3RsZWFkZXJ2ZXJ0aWNhbD02NTA3MjtlLnR3b2d1amFyYXRpPTI3OTI7ZS50d29ndXJtdWtoaT0yNjY0O2UudHdvaGFja2FyYWJpYz0xNjM0O2UudHdvaGFuZ3pob3U9MTIzMjI7ZS50d29pZGVvZ3JhcGhpY3BhcmVuPTEyODMzO2UudHdvaW5mZXJpb3I9ODMyMjtlLnR3b21vbm9zcGFjZT02NTI5ODtlLnR3b251bWVyYXRvcmJlbmdhbGk9MjU0OTtlLnR3b29sZHN0eWxlPTYzMjgyO2UudHdvcGFyZW49OTMzMztlLnR3b3BlcmlvZD05MzUzO2UudHdvcGVyc2lhbj0xNzc4O2UudHdvcm9tYW49ODU2MTtlLnR3b3N0cm9rZT00NDM7ZS50d29zdXBlcmlvcj0xNzg7ZS50d290aGFpPTM2NjY7ZS50d290aGlyZHM9ODUzMjtlLnU9MTE3O2UudWFjdXRlPTI1MDtlLnViYXI9NjQ5O2UudWJlbmdhbGk9MjQ0MTtlLnVib3BvbW9mbz0xMjU4NDtlLnVicmV2ZT0zNjU7ZS51Y2Fyb249NDY4O2UudWNpcmNsZT05NDQ0O2UudWNpcmN1bWZsZXg9MjUxO2UudWNpcmN1bWZsZXhiZWxvdz03Nzk5O2UudWN5cmlsbGljPTEwOTE7ZS51ZGF0dGFkZXZhPTIzODU7ZS51ZGJsYWN1dGU9MzY5O2UudWRibGdyYXZlPTUzMztlLnVkZXZhPTIzMTM7ZS51ZGllcmVzaXM9MjUyO2UudWRpZXJlc2lzYWN1dGU9NDcyO2UudWRpZXJlc2lzYmVsb3c9Nzc5NTtlLnVkaWVyZXNpc2Nhcm9uPTQ3NDtlLnVkaWVyZXNpc2N5cmlsbGljPTEyNjU7ZS51ZGllcmVzaXNncmF2ZT00NzY7ZS51ZGllcmVzaXNtYWNyb249NDcwO2UudWRvdGJlbG93PTc5MDk7ZS51Z3JhdmU9MjQ5O2UudWd1amFyYXRpPTI2OTc7ZS51Z3VybXVraGk9MjU2OTtlLnVoaXJhZ2FuYT0xMjM1ODtlLnVob29rYWJvdmU9NzkxMTtlLnVob3JuPTQzMjtlLnVob3JuYWN1dGU9NzkxMztlLnVob3JuZG90YmVsb3c9NzkyMTtlLnVob3JuZ3JhdmU9NzkxNTtlLnVob3JuaG9va2Fib3ZlPTc5MTc7ZS51aG9ybnRpbGRlPTc5MTk7ZS51aHVuZ2FydW1sYXV0PTM2OTtlLnVodW5nYXJ1bWxhdXRjeXJpbGxpYz0xMjY3O2UudWludmVydGVkYnJldmU9NTM1O2UudWthdGFrYW5hPTEyNDU0O2UudWthdGFrYW5haGFsZndpZHRoPTY1Mzk1O2UudWtjeXJpbGxpYz0xMTQ1O2UudWtvcmVhbj0xMjYzNjtlLnVtYWNyb249MzYzO2UudW1hY3JvbmN5cmlsbGljPTEyNjM7ZS51bWFjcm9uZGllcmVzaXM9NzgwMztlLnVtYXRyYWd1cm11a2hpPTI2MjU7ZS51bW9ub3NwYWNlPTY1MzY1O2UudW5kZXJzY29yZT05NTtlLnVuZGVyc2NvcmVkYmw9ODIxNTtlLnVuZGVyc2NvcmVtb25vc3BhY2U9NjUzNDM7ZS51bmRlcnNjb3JldmVydGljYWw9NjUwNzU7ZS51bmRlcnNjb3Jld2F2eT02NTEwMztlLnVuaW9uPTg3NDY7ZS51bml2ZXJzYWw9ODcwNDtlLnVvZ29uZWs9MzcxO2UudXBhcmVuPTkzOTI7ZS51cGJsb2NrPTk2MDA7ZS51cHBlcmRvdGhlYnJldz0xNDc2O2UudXBzaWxvbj05NjU7ZS51cHNpbG9uZGllcmVzaXM9OTcxO2UudXBzaWxvbmRpZXJlc2lzdG9ub3M9OTQ0O2UudXBzaWxvbmxhdGluPTY1MDtlLnVwc2lsb250b25vcz05NzM7ZS51cHRhY2tiZWxvd2NtYj03OTc7ZS51cHRhY2ttb2Q9NzI0O2UudXJhZ3VybXVraGk9MjY3NTtlLnVyaW5nPTM2NztlLnVzaG9ydGN5cmlsbGljPTExMTg7ZS51c21hbGxoaXJhZ2FuYT0xMjM1NztlLnVzbWFsbGthdGFrYW5hPTEyNDUzO2UudXNtYWxsa2F0YWthbmFoYWxmd2lkdGg9NjUzODU7ZS51c3RyYWlnaHRjeXJpbGxpYz0xMTk5O2UudXN0cmFpZ2h0c3Ryb2tlY3lyaWxsaWM9MTIwMTtlLnV0aWxkZT0zNjE7ZS51dGlsZGVhY3V0ZT03ODAxO2UudXRpbGRlYmVsb3c9Nzc5NztlLnV1YmVuZ2FsaT0yNDQyO2UudXVkZXZhPTIzMTQ7ZS51dWd1amFyYXRpPTI2OTg7ZS51dWd1cm11a2hpPTI1NzA7ZS51dW1hdHJhZ3VybXVraGk9MjYyNjtlLnV1dm93ZWxzaWduYmVuZ2FsaT0yNDk4O2UudXV2b3dlbHNpZ25kZXZhPTIzNzA7ZS51dXZvd2Vsc2lnbmd1amFyYXRpPTI3NTQ7ZS51dm93ZWxzaWduYmVuZ2FsaT0yNDk3O2UudXZvd2Vsc2lnbmRldmE9MjM2OTtlLnV2b3dlbHNpZ25ndWphcmF0aT0yNzUzO2Uudj0xMTg7ZS52YWRldmE9MjM1NztlLnZhZ3VqYXJhdGk9Mjc0MTtlLnZhZ3VybXVraGk9MjYxMztlLnZha2F0YWthbmE9MTI1MzU7ZS52YXY9MTQ5MztlLnZhdmRhZ2VzaD02NDMwOTtlLnZhdmRhZ2VzaDY1PTY0MzA5O2UudmF2ZGFnZXNoaGVicmV3PTY0MzA5O2UudmF2aGVicmV3PTE0OTM7ZS52YXZob2xhbT02NDMzMTtlLnZhdmhvbGFtaGVicmV3PTY0MzMxO2UudmF2dmF2aGVicmV3PTE1MjA7ZS52YXZ5b2RoZWJyZXc9MTUyMTtlLnZjaXJjbGU9OTQ0NTtlLnZkb3RiZWxvdz03ODA3O2UudmVjeXJpbGxpYz0xMDc0O2UudmVoYXJhYmljPTE3MDA7ZS52ZWhmaW5hbGFyYWJpYz02NDM2MztlLnZlaGluaXRpYWxhcmFiaWM9NjQzNjQ7ZS52ZWhtZWRpYWxhcmFiaWM9NjQzNjU7ZS52ZWthdGFrYW5hPTEyNTM3O2UudmVudXM9OTc5MjtlLnZlcnRpY2FsYmFyPTEyNDtlLnZlcnRpY2FsbGluZWFib3ZlY21iPTc4MTtlLnZlcnRpY2FsbGluZWJlbG93Y21iPTgwOTtlLnZlcnRpY2FsbGluZWxvd21vZD03MTY7ZS52ZXJ0aWNhbGxpbmVtb2Q9NzEyO2UudmV3YXJtZW5pYW49MTQwNjtlLnZob29rPTY1MTtlLnZpa2F0YWthbmE9MTI1MzY7ZS52aXJhbWFiZW5nYWxpPTI1MDk7ZS52aXJhbWFkZXZhPTIzODE7ZS52aXJhbWFndWphcmF0aT0yNzY1O2UudmlzYXJnYWJlbmdhbGk9MjQzNTtlLnZpc2FyZ2FkZXZhPTIzMDc7ZS52aXNhcmdhZ3VqYXJhdGk9MjY5MTtlLnZtb25vc3BhY2U9NjUzNjY7ZS52b2FybWVuaWFuPTE0MDA7ZS52b2ljZWRpdGVyYXRpb25oaXJhZ2FuYT0xMjQ0NjtlLnZvaWNlZGl0ZXJhdGlvbmthdGFrYW5hPTEyNTQyO2Uudm9pY2VkbWFya2thbmE9MTI0NDM7ZS52b2ljZWRtYXJra2FuYWhhbGZ3aWR0aD02NTQzODtlLnZva2F0YWthbmE9MTI1Mzg7ZS52cGFyZW49OTM5MztlLnZ0aWxkZT03ODA1O2UudnR1cm5lZD02NTI7ZS52dWhpcmFnYW5hPTEyNDM2O2UudnVrYXRha2FuYT0xMjUzMjtlLnc9MTE5O2Uud2FjdXRlPTc4MTE7ZS53YWVrb3JlYW49MTI2MzM7ZS53YWhpcmFnYW5hPTEyNDMxO2Uud2FrYXRha2FuYT0xMjUyNztlLndha2F0YWthbmFoYWxmd2lkdGg9NjU0MzY7ZS53YWtvcmVhbj0xMjYzMjtlLndhc21hbGxoaXJhZ2FuYT0xMjQzMDtlLndhc21hbGxrYXRha2FuYT0xMjUyNjtlLndhdHRvc3F1YXJlPTEzMTQzO2Uud2F2ZWRhc2g9MTIzMTY7ZS53YXZ5dW5kZXJzY29yZXZlcnRpY2FsPTY1MDc2O2Uud2F3YXJhYmljPTE2MDg7ZS53YXdmaW5hbGFyYWJpYz02NTI2MjtlLndhd2hhbXphYWJvdmVhcmFiaWM9MTU3MjtlLndhd2hhbXphYWJvdmVmaW5hbGFyYWJpYz02NTE1ODtlLndic3F1YXJlPTEzMjc3O2Uud2NpcmNsZT05NDQ2O2Uud2NpcmN1bWZsZXg9MzczO2Uud2RpZXJlc2lzPTc4MTM7ZS53ZG90YWNjZW50PTc4MTU7ZS53ZG90YmVsb3c9NzgxNztlLndlaGlyYWdhbmE9MTI0MzM7ZS53ZWllcnN0cmFzcz04NDcyO2Uud2VrYXRha2FuYT0xMjUyOTtlLndla29yZWFuPTEyNjM4O2Uud2Vva29yZWFuPTEyNjM3O2Uud2dyYXZlPTc4MDk7ZS53aGl0ZWJ1bGxldD05NzAyO2Uud2hpdGVjaXJjbGU9OTY3NTtlLndoaXRlY2lyY2xlaW52ZXJzZT05Njg5O2Uud2hpdGVjb3JuZXJicmFja2V0bGVmdD0xMjMwMjtlLndoaXRlY29ybmVyYnJhY2tldGxlZnR2ZXJ0aWNhbD02NTA5MTtlLndoaXRlY29ybmVyYnJhY2tldHJpZ2h0PTEyMzAzO2Uud2hpdGVjb3JuZXJicmFja2V0cmlnaHR2ZXJ0aWNhbD02NTA5MjtlLndoaXRlZGlhbW9uZD05NjcxO2Uud2hpdGVkaWFtb25kY29udGFpbmluZ2JsYWNrc21hbGxkaWFtb25kPTk2NzI7ZS53aGl0ZWRvd25wb2ludGluZ3NtYWxsdHJpYW5nbGU9OTY2MztlLndoaXRlZG93bnBvaW50aW5ndHJpYW5nbGU9OTY2MTtlLndoaXRlbGVmdHBvaW50aW5nc21hbGx0cmlhbmdsZT05NjY3O2Uud2hpdGVsZWZ0cG9pbnRpbmd0cmlhbmdsZT05NjY1O2Uud2hpdGVsZW50aWN1bGFyYnJhY2tldGxlZnQ9MTIzMTA7ZS53aGl0ZWxlbnRpY3VsYXJicmFja2V0cmlnaHQ9MTIzMTE7ZS53aGl0ZXJpZ2h0cG9pbnRpbmdzbWFsbHRyaWFuZ2xlPTk2NTc7ZS53aGl0ZXJpZ2h0cG9pbnRpbmd0cmlhbmdsZT05NjU1O2Uud2hpdGVzbWFsbHNxdWFyZT05NjQzO2Uud2hpdGVzbWlsaW5nZmFjZT05Nzg2O2Uud2hpdGVzcXVhcmU9OTYzMztlLndoaXRlc3Rhcj05NzM0O2Uud2hpdGV0ZWxlcGhvbmU9OTc0MztlLndoaXRldG9ydG9pc2VzaGVsbGJyYWNrZXRsZWZ0PTEyMzEyO2Uud2hpdGV0b3J0b2lzZXNoZWxsYnJhY2tldHJpZ2h0PTEyMzEzO2Uud2hpdGV1cHBvaW50aW5nc21hbGx0cmlhbmdsZT05NjUzO2Uud2hpdGV1cHBvaW50aW5ndHJpYW5nbGU9OTY1MTtlLndpaGlyYWdhbmE9MTI0MzI7ZS53aWthdGFrYW5hPTEyNTI4O2Uud2lrb3JlYW49MTI2Mzk7ZS53bW9ub3NwYWNlPTY1MzY3O2Uud29oaXJhZ2FuYT0xMjQzNDtlLndva2F0YWthbmE9MTI1MzA7ZS53b2thdGFrYW5haGFsZndpZHRoPTY1MzgyO2Uud29uPTgzNjE7ZS53b25tb25vc3BhY2U9NjU1MTA7ZS53b3dhZW50aGFpPTM2MjM7ZS53cGFyZW49OTM5NDtlLndyaW5nPTc4MzI7ZS53c3VwZXJpb3I9Njk1O2Uud3R1cm5lZD02NTM7ZS53eW5uPTQ0NztlLng9MTIwO2UueGFib3ZlY21iPTgyOTtlLnhib3BvbW9mbz0xMjU2MjtlLnhjaXJjbGU9OTQ0NztlLnhkaWVyZXNpcz03ODIxO2UueGRvdGFjY2VudD03ODE5O2UueGVoYXJtZW5pYW49MTM4OTtlLnhpPTk1ODtlLnhtb25vc3BhY2U9NjUzNjg7ZS54cGFyZW49OTM5NTtlLnhzdXBlcmlvcj03Mzk7ZS55PTEyMTtlLnlhYWRvc3F1YXJlPTEzMTM0O2UueWFiZW5nYWxpPTI0Nzk7ZS55YWN1dGU9MjUzO2UueWFkZXZhPTIzNTE7ZS55YWVrb3JlYW49MTI2MjY7ZS55YWd1amFyYXRpPTI3MzU7ZS55YWd1cm11a2hpPTI2MDc7ZS55YWhpcmFnYW5hPTEyNDIwO2UueWFrYXRha2FuYT0xMjUxNjtlLnlha2F0YWthbmFoYWxmd2lkdGg9NjU0Mjg7ZS55YWtvcmVhbj0xMjYyNTtlLnlhbWFra2FudGhhaT0zNjYyO2UueWFzbWFsbGhpcmFnYW5hPTEyNDE5O2UueWFzbWFsbGthdGFrYW5hPTEyNTE1O2UueWFzbWFsbGthdGFrYW5haGFsZndpZHRoPTY1Mzg4O2UueWF0Y3lyaWxsaWM9MTEyMztlLnljaXJjbGU9OTQ0ODtlLnljaXJjdW1mbGV4PTM3NTtlLnlkaWVyZXNpcz0yNTU7ZS55ZG90YWNjZW50PTc4MjM7ZS55ZG90YmVsb3c9NzkyNTtlLnllaGFyYWJpYz0xNjEwO2UueWVoYmFycmVlYXJhYmljPTE3NDY7ZS55ZWhiYXJyZWVmaW5hbGFyYWJpYz02NDQzMTtlLnllaGZpbmFsYXJhYmljPTY1MjY2O2UueWVoaGFtemFhYm92ZWFyYWJpYz0xNTc0O2UueWVoaGFtemFhYm92ZWZpbmFsYXJhYmljPTY1MTYyO2UueWVoaGFtemFhYm92ZWluaXRpYWxhcmFiaWM9NjUxNjM7ZS55ZWhoYW16YWFib3ZlbWVkaWFsYXJhYmljPTY1MTY0O2UueWVoaW5pdGlhbGFyYWJpYz02NTI2NztlLnllaG1lZGlhbGFyYWJpYz02NTI2ODtlLnllaG1lZW1pbml0aWFsYXJhYmljPTY0NzMzO2UueWVobWVlbWlzb2xhdGVkYXJhYmljPTY0NjAwO2UueWVobm9vbmZpbmFsYXJhYmljPTY0NjYwO2UueWVodGhyZWVkb3RzYmVsb3dhcmFiaWM9MTc0NTtlLnlla29yZWFuPTEyNjMwO2UueWVuPTE2NTtlLnllbm1vbm9zcGFjZT02NTUwOTtlLnllb2tvcmVhbj0xMjYyOTtlLnllb3JpbmhpZXVoa29yZWFuPTEyNjc4O2UueWVyYWhiZW55b21vaGVicmV3PTE0NTA7ZS55ZXJhaGJlbnlvbW9sZWZ0aGVicmV3PTE0NTA7ZS55ZXJpY3lyaWxsaWM9MTA5OTtlLnllcnVkaWVyZXNpc2N5cmlsbGljPTEyNzM7ZS55ZXNpZXVuZ2tvcmVhbj0xMjY3MztlLnllc2lldW5ncGFuc2lvc2tvcmVhbj0xMjY3NTtlLnllc2lldW5nc2lvc2tvcmVhbj0xMjY3NDtlLnlldGl2aGVicmV3PTE0MzQ7ZS55Z3JhdmU9NzkyMztlLnlob29rPTQzNjtlLnlob29rYWJvdmU9NzkyNztlLnlpYXJtZW5pYW49MTM5NztlLnlpY3lyaWxsaWM9MTExMTtlLnlpa29yZWFuPTEyNjQyO2UueWlueWFuZz05Nzc1O2UueWl3bmFybWVuaWFuPTE0MTA7ZS55bW9ub3NwYWNlPTY1MzY5O2UueW9kPTE0OTc7ZS55b2RkYWdlc2g9NjQzMTM7ZS55b2RkYWdlc2hoZWJyZXc9NjQzMTM7ZS55b2RoZWJyZXc9MTQ5NztlLnlvZHlvZGhlYnJldz0xNTIyO2UueW9keW9kcGF0YWhoZWJyZXc9NjQyODc7ZS55b2hpcmFnYW5hPTEyNDI0O2UueW9pa29yZWFuPTEyNjgxO2UueW9rYXRha2FuYT0xMjUyMDtlLnlva2F0YWthbmFoYWxmd2lkdGg9NjU0MzA7ZS55b2tvcmVhbj0xMjYzNTtlLnlvc21hbGxoaXJhZ2FuYT0xMjQyMztlLnlvc21hbGxrYXRha2FuYT0xMjUxOTtlLnlvc21hbGxrYXRha2FuYWhhbGZ3aWR0aD02NTM5MDtlLnlvdGdyZWVrPTEwMTE7ZS55b3lhZWtvcmVhbj0xMjY4MDtlLnlveWFrb3JlYW49MTI2Nzk7ZS55b3lha3RoYWk9MzYxODtlLnlveWluZ3RoYWk9MzU5NztlLnlwYXJlbj05Mzk2O2UueXBvZ2VncmFtbWVuaT04OTA7ZS55cG9nZWdyYW1tZW5pZ3JlZWtjbWI9ODM3O2UueXI9NDIyO2UueXJpbmc9NzgzMztlLnlzdXBlcmlvcj02OTY7ZS55dGlsZGU9NzkyOTtlLnl0dXJuZWQ9NjU0O2UueXVoaXJhZ2FuYT0xMjQyMjtlLnl1aWtvcmVhbj0xMjY4NDtlLnl1a2F0YWthbmE9MTI1MTg7ZS55dWthdGFrYW5haGFsZndpZHRoPTY1NDI5O2UueXVrb3JlYW49MTI2NDA7ZS55dXNiaWdjeXJpbGxpYz0xMTMxO2UueXVzYmlnaW90aWZpZWRjeXJpbGxpYz0xMTMzO2UueXVzbGl0dGxlY3lyaWxsaWM9MTEyNztlLnl1c2xpdHRsZWlvdGlmaWVkY3lyaWxsaWM9MTEyOTtlLnl1c21hbGxoaXJhZ2FuYT0xMjQyMTtlLnl1c21hbGxrYXRha2FuYT0xMjUxNztlLnl1c21hbGxrYXRha2FuYWhhbGZ3aWR0aD02NTM4OTtlLnl1eWVrb3JlYW49MTI2ODM7ZS55dXllb2tvcmVhbj0xMjY4MjtlLnl5YWJlbmdhbGk9MjUyNztlLnl5YWRldmE9MjM5OTtlLno9MTIyO2UuemFhcm1lbmlhbj0xMzgyO2UuemFjdXRlPTM3ODtlLnphZGV2YT0yMzk1O2UuemFndXJtdWtoaT0yNjUxO2UuemFoYXJhYmljPTE1OTI7ZS56YWhmaW5hbGFyYWJpYz02NTIyMjtlLnphaGluaXRpYWxhcmFiaWM9NjUyMjM7ZS56YWhpcmFnYW5hPTEyMzc0O2UuemFobWVkaWFsYXJhYmljPTY1MjI0O2UuemFpbmFyYWJpYz0xNTg2O2UuemFpbmZpbmFsYXJhYmljPTY1MjAwO2UuemFrYXRha2FuYT0xMjQ3MDtlLnphcWVmZ2Fkb2xoZWJyZXc9MTQyOTtlLnphcWVmcWF0YW5oZWJyZXc9MTQyODtlLnphcnFhaGVicmV3PTE0MzI7ZS56YXlpbj0xNDk0O2UuemF5aW5kYWdlc2g9NjQzMTA7ZS56YXlpbmRhZ2VzaGhlYnJldz02NDMxMDtlLnpheWluaGVicmV3PTE0OTQ7ZS56Ym9wb21vZm89MTI1Njc7ZS56Y2Fyb249MzgyO2UuemNpcmNsZT05NDQ5O2UuemNpcmN1bWZsZXg9NzgyNTtlLnpjdXJsPTY1NztlLnpkb3Q9MzgwO2UuemRvdGFjY2VudD0zODA7ZS56ZG90YmVsb3c9NzgyNztlLnplY3lyaWxsaWM9MTA3OTtlLnplZGVzY2VuZGVyY3lyaWxsaWM9MTE3NztlLnplZGllcmVzaXNjeXJpbGxpYz0xMjQ3O2UuemVoaXJhZ2FuYT0xMjM4MDtlLnpla2F0YWthbmE9MTI0NzY7ZS56ZXJvPTQ4O2UuemVyb2FyYWJpYz0xNjMyO2UuemVyb2JlbmdhbGk9MjUzNDtlLnplcm9kZXZhPTI0MDY7ZS56ZXJvZ3VqYXJhdGk9Mjc5MDtlLnplcm9ndXJtdWtoaT0yNjYyO2UuemVyb2hhY2thcmFiaWM9MTYzMjtlLnplcm9pbmZlcmlvcj04MzIwO2UuemVyb21vbm9zcGFjZT02NTI5NjtlLnplcm9vbGRzdHlsZT02MzI4MDtlLnplcm9wZXJzaWFuPTE3NzY7ZS56ZXJvc3VwZXJpb3I9ODMwNDtlLnplcm90aGFpPTM2NjQ7ZS56ZXJvd2lkdGhqb2luZXI9NjUyNzk7ZS56ZXJvd2lkdGhub25qb2luZXI9ODIwNDtlLnplcm93aWR0aHNwYWNlPTgyMDM7ZS56ZXRhPTk1MDtlLnpoYm9wb21vZm89MTI1NjM7ZS56aGVhcm1lbmlhbj0xMzg2O2UuemhlYnJldmVjeXJpbGxpYz0xMjE4O2UuemhlY3lyaWxsaWM9MTA3ODtlLnpoZWRlc2NlbmRlcmN5cmlsbGljPTExNzU7ZS56aGVkaWVyZXNpc2N5cmlsbGljPTEyNDU7ZS56aWhpcmFnYW5hPTEyMzc2O2UuemlrYXRha2FuYT0xMjQ3MjtlLnppbm9yaGVicmV3PTE0NTQ7ZS56bGluZWJlbG93PTc4Mjk7ZS56bW9ub3NwYWNlPTY1MzcwO2Uuem9oaXJhZ2FuYT0xMjM4MjtlLnpva2F0YWthbmE9MTI0Nzg7ZS56cGFyZW49OTM5NztlLnpyZXRyb2ZsZXhob29rPTY1NjtlLnpzdHJva2U9NDM4O2UuenVoaXJhZ2FuYT0xMjM3ODtlLnp1a2F0YWthbmE9MTI0NzQ7ZVsiLm5vdGRlZiJdPTA7ZS5hbmdicmFja2V0bGVmdGJpZz05MDAxO2UuYW5nYnJhY2tldGxlZnRCaWc9OTAwMTtlLmFuZ2JyYWNrZXRsZWZ0YmlnZz05MDAxO2UuYW5nYnJhY2tldGxlZnRCaWdnPTkwMDE7ZS5hbmdicmFja2V0cmlnaHRCaWc9OTAwMjtlLmFuZ2JyYWNrZXRyaWdodGJpZz05MDAyO2UuYW5nYnJhY2tldHJpZ2h0QmlnZz05MDAyO2UuYW5nYnJhY2tldHJpZ2h0YmlnZz05MDAyO2UuYXJyb3dob29rbGVmdD04NjE4O2UuYXJyb3dob29rcmlnaHQ9ODYxNztlLmFycm93bGVmdHRvcGhhbGY9ODYzNjtlLmFycm93bGVmdGJvdGhhbGY9ODYzNztlLmFycm93bm9ydGhlYXN0PTg1OTk7ZS5hcnJvd25vcnRod2VzdD04NTk4O2UuYXJyb3dyaWdodHRvcGhhbGY9ODY0MDtlLmFycm93cmlnaHRib3RoYWxmPTg2NDE7ZS5hcnJvd3NvdXRoZWFzdD04NjAwO2UuYXJyb3dzb3V0aHdlc3Q9ODYwMTtlLmJhY2tzbGFzaGJpZz04NzI2O2UuYmFja3NsYXNoQmlnPTg3MjY7ZS5iYWNrc2xhc2hCaWdnPTg3MjY7ZS5iYWNrc2xhc2hiaWdnPTg3MjY7ZS5iYXJkYmw9ODIxNDtlLmJyYWNlaHRpcGRvd25sZWZ0PTY1MDc5O2UuYnJhY2VodGlwZG93bnJpZ2h0PTY1MDc5O2UuYnJhY2VodGlwdXBsZWZ0PTY1MDgwO2UuYnJhY2VodGlwdXByaWdodD02NTA4MDtlLmJyYWNlbGVmdEJpZz0xMjM7ZS5icmFjZWxlZnRiaWc9MTIzO2UuYnJhY2VsZWZ0YmlnZz0xMjM7ZS5icmFjZWxlZnRCaWdnPTEyMztlLmJyYWNlcmlnaHRCaWc9MTI1O2UuYnJhY2VyaWdodGJpZz0xMjU7ZS5icmFjZXJpZ2h0YmlnZz0xMjU7ZS5icmFjZXJpZ2h0QmlnZz0xMjU7ZS5icmFja2V0bGVmdGJpZz05MTtlLmJyYWNrZXRsZWZ0QmlnPTkxO2UuYnJhY2tldGxlZnRiaWdnPTkxO2UuYnJhY2tldGxlZnRCaWdnPTkxO2UuYnJhY2tldHJpZ2h0QmlnPTkzO2UuYnJhY2tldHJpZ2h0YmlnPTkzO2UuYnJhY2tldHJpZ2h0YmlnZz05MztlLmJyYWNrZXRyaWdodEJpZ2c9OTM7ZS5jZWlsaW5nbGVmdGJpZz04OTY4O2UuY2VpbGluZ2xlZnRCaWc9ODk2ODtlLmNlaWxpbmdsZWZ0QmlnZz04OTY4O2UuY2VpbGluZ2xlZnRiaWdnPTg5Njg7ZS5jZWlsaW5ncmlnaHRiaWc9ODk2OTtlLmNlaWxpbmdyaWdodEJpZz04OTY5O2UuY2VpbGluZ3JpZ2h0YmlnZz04OTY5O2UuY2VpbGluZ3JpZ2h0QmlnZz04OTY5O2UuY2lyY2xlZG90ZGlzcGxheT04ODU3O2UuY2lyY2xlZG90dGV4dD04ODU3O2UuY2lyY2xlbXVsdGlwbHlkaXNwbGF5PTg4NTU7ZS5jaXJjbGVtdWx0aXBseXRleHQ9ODg1NTtlLmNpcmNsZXBsdXNkaXNwbGF5PTg4NTM7ZS5jaXJjbGVwbHVzdGV4dD04ODUzO2UuY29udGludGVncmFsZGlzcGxheT04NzUwO2UuY29udGludGVncmFsdGV4dD04NzUwO2UuY29wcm9kdWN0ZGlzcGxheT04NzIwO2UuY29wcm9kdWN0dGV4dD04NzIwO2UuZmxvb3JsZWZ0QmlnPTg5NzA7ZS5mbG9vcmxlZnRiaWc9ODk3MDtlLmZsb29ybGVmdGJpZ2c9ODk3MDtlLmZsb29ybGVmdEJpZ2c9ODk3MDtlLmZsb29ycmlnaHRiaWc9ODk3MTtlLmZsb29ycmlnaHRCaWc9ODk3MTtlLmZsb29ycmlnaHRCaWdnPTg5NzE7ZS5mbG9vcnJpZ2h0YmlnZz04OTcxO2UuaGF0d2lkZT03NzA7ZS5oYXR3aWRlcj03NzA7ZS5oYXR3aWRlc3Q9NzcwO2UuaW50ZXJjYWw9NzQ4ODtlLmludGVncmFsZGlzcGxheT04NzQ3O2UuaW50ZWdyYWx0ZXh0PTg3NDc7ZS5pbnRlcnNlY3Rpb25kaXNwbGF5PTg4OTg7ZS5pbnRlcnNlY3Rpb250ZXh0PTg4OTg7ZS5sb2dpY2FsYW5kZGlzcGxheT04NzQzO2UubG9naWNhbGFuZHRleHQ9ODc0MztlLmxvZ2ljYWxvcmRpc3BsYXk9ODc0NDtlLmxvZ2ljYWxvcnRleHQ9ODc0NDtlLnBhcmVubGVmdEJpZz00MDtlLnBhcmVubGVmdGJpZz00MDtlLnBhcmVubGVmdEJpZ2c9NDA7ZS5wYXJlbmxlZnRiaWdnPTQwO2UucGFyZW5yaWdodEJpZz00MTtlLnBhcmVucmlnaHRiaWc9NDE7ZS5wYXJlbnJpZ2h0QmlnZz00MTtlLnBhcmVucmlnaHRiaWdnPTQxO2UucHJpbWU9ODI0MjtlLnByb2R1Y3RkaXNwbGF5PTg3MTk7ZS5wcm9kdWN0dGV4dD04NzE5O2UucmFkaWNhbGJpZz04NzMwO2UucmFkaWNhbEJpZz04NzMwO2UucmFkaWNhbEJpZ2c9ODczMDtlLnJhZGljYWxiaWdnPTg3MzA7ZS5yYWRpY2FsYnQ9ODczMDtlLnJhZGljYWx0cD04NzMwO2UucmFkaWNhbHZlcnRleD04NzMwO2Uuc2xhc2hiaWc9NDc7ZS5zbGFzaEJpZz00NztlLnNsYXNoQmlnZz00NztlLnNsYXNoYmlnZz00NztlLnN1bW1hdGlvbmRpc3BsYXk9ODcyMTtlLnN1bW1hdGlvbnRleHQ9ODcyMTtlLnRpbGRld2lkZT03MzI7ZS50aWxkZXdpZGVyPTczMjtlLnRpbGRld2lkZXN0PTczMjtlLnVuaW9uZGlzcGxheT04ODk5O2UudW5pb25tdWx0aWRpc3BsYXk9ODg0NjtlLnVuaW9ubXVsdGl0ZXh0PTg4NDY7ZS51bmlvbnNxZGlzcGxheT04ODUyO2UudW5pb25zcXRleHQ9ODg1MjtlLnVuaW9udGV4dD04ODk5O2UudmV4dGVuZGRvdWJsZT04NzQxO2UudmV4dGVuZHNpbmdsZT04NzM5fSkpLHZpPWdldExvb2t1cFRhYmxlRmFjdG9yeSgoZnVuY3Rpb24oZSl7ZS5zcGFjZT0zMjtlLmExPTk5ODU7ZS5hMj05OTg2O2UuYTIwMj05OTg3O2UuYTM9OTk4ODtlLmE0PTk3NDI7ZS5hNT05OTkwO2UuYTExOT05OTkxO2UuYTExOD05OTkyO2UuYTExNz05OTkzO2UuYTExPTk3NTU7ZS5hMTI9OTc1ODtlLmExMz05OTk2O2UuYTE0PTk5OTc7ZS5hMTU9OTk5ODtlLmExNj05OTk5O2UuYTEwNT0xZTQ7ZS5hMTc9MTAwMDE7ZS5hMTg9MTAwMDI7ZS5hMTk9MTAwMDM7ZS5hMjA9MTAwMDQ7ZS5hMjE9MTAwMDU7ZS5hMjI9MTAwMDY7ZS5hMjM9MTAwMDc7ZS5hMjQ9MTAwMDg7ZS5hMjU9MTAwMDk7ZS5hMjY9MTAwMTA7ZS5hMjc9MTAwMTE7ZS5hMjg9MTAwMTI7ZS5hNj0xMDAxMztlLmE3PTEwMDE0O2UuYTg9MTAwMTU7ZS5hOT0xMDAxNjtlLmExMD0xMDAxNztlLmEyOT0xMDAxODtlLmEzMD0xMDAxOTtlLmEzMT0xMDAyMDtlLmEzMj0xMDAyMTtlLmEzMz0xMDAyMjtlLmEzND0xMDAyMztlLmEzNT05NzMzO2UuYTM2PTEwMDI1O2UuYTM3PTEwMDI2O2UuYTM4PTEwMDI3O2UuYTM5PTEwMDI4O2UuYTQwPTEwMDI5O2UuYTQxPTEwMDMwO2UuYTQyPTEwMDMxO2UuYTQzPTEwMDMyO2UuYTQ0PTEwMDMzO2UuYTQ1PTEwMDM0O2UuYTQ2PTEwMDM1O2UuYTQ3PTEwMDM2O2UuYTQ4PTEwMDM3O2UuYTQ5PTEwMDM4O2UuYTUwPTEwMDM5O2UuYTUxPTEwMDQwO2UuYTUyPTEwMDQxO2UuYTUzPTEwMDQyO2UuYTU0PTEwMDQzO2UuYTU1PTEwMDQ0O2UuYTU2PTEwMDQ1O2UuYTU3PTEwMDQ2O2UuYTU4PTEwMDQ3O2UuYTU5PTEwMDQ4O2UuYTYwPTEwMDQ5O2UuYTYxPTEwMDUwO2UuYTYyPTEwMDUxO2UuYTYzPTEwMDUyO2UuYTY0PTEwMDUzO2UuYTY1PTEwMDU0O2UuYTY2PTEwMDU1O2UuYTY3PTEwMDU2O2UuYTY4PTEwMDU3O2UuYTY5PTEwMDU4O2UuYTcwPTEwMDU5O2UuYTcxPTk2Nzk7ZS5hNzI9MTAwNjE7ZS5hNzM9OTYzMjtlLmE3ND0xMDA2MztlLmEyMDM9MTAwNjQ7ZS5hNzU9MTAwNjU7ZS5hMjA0PTEwMDY2O2UuYTc2PTk2NTA7ZS5hNzc9OTY2MDtlLmE3OD05NjcwO2UuYTc5PTEwMDcwO2UuYTgxPTk2ODc7ZS5hODI9MTAwNzI7ZS5hODM9MTAwNzM7ZS5hODQ9MTAwNzQ7ZS5hOTc9MTAwNzU7ZS5hOTg9MTAwNzY7ZS5hOTk9MTAwNzc7ZS5hMTAwPTEwMDc4O2UuYTEwMT0xMDA4MTtlLmExMDI9MTAwODI7ZS5hMTAzPTEwMDgzO2UuYTEwND0xMDA4NDtlLmExMDY9MTAwODU7ZS5hMTA3PTEwMDg2O2UuYTEwOD0xMDA4NztlLmExMTI9OTgyNztlLmExMTE9OTgzMDtlLmExMTA9OTgyOTtlLmExMDk9OTgyNDtlLmExMjA9OTMxMjtlLmExMjE9OTMxMztlLmExMjI9OTMxNDtlLmExMjM9OTMxNTtlLmExMjQ9OTMxNjtlLmExMjU9OTMxNztlLmExMjY9OTMxODtlLmExMjc9OTMxOTtlLmExMjg9OTMyMDtlLmExMjk9OTMyMTtlLmExMzA9MTAxMDI7ZS5hMTMxPTEwMTAzO2UuYTEzMj0xMDEwNDtlLmExMzM9MTAxMDU7ZS5hMTM0PTEwMTA2O2UuYTEzNT0xMDEwNztlLmExMzY9MTAxMDg7ZS5hMTM3PTEwMTA5O2UuYTEzOD0xMDExMDtlLmExMzk9MTAxMTE7ZS5hMTQwPTEwMTEyO2UuYTE0MT0xMDExMztlLmExNDI9MTAxMTQ7ZS5hMTQzPTEwMTE1O2UuYTE0ND0xMDExNjtlLmExNDU9MTAxMTc7ZS5hMTQ2PTEwMTE4O2UuYTE0Nz0xMDExOTtlLmExNDg9MTAxMjA7ZS5hMTQ5PTEwMTIxO2UuYTE1MD0xMDEyMjtlLmExNTE9MTAxMjM7ZS5hMTUyPTEwMTI0O2UuYTE1Mz0xMDEyNTtlLmExNTQ9MTAxMjY7ZS5hMTU1PTEwMTI3O2UuYTE1Nj0xMDEyODtlLmExNTc9MTAxMjk7ZS5hMTU4PTEwMTMwO2UuYTE1OT0xMDEzMTtlLmExNjA9MTAxMzI7ZS5hMTYxPTg1OTQ7ZS5hMTYzPTg1OTY7ZS5hMTY0PTg1OTc7ZS5hMTk2PTEwMTM2O2UuYTE2NT0xMDEzNztlLmExOTI9MTAxMzg7ZS5hMTY2PTEwMTM5O2UuYTE2Nz0xMDE0MDtlLmExNjg9MTAxNDE7ZS5hMTY5PTEwMTQyO2UuYTE3MD0xMDE0MztlLmExNzE9MTAxNDQ7ZS5hMTcyPTEwMTQ1O2UuYTE3Mz0xMDE0NjtlLmExNjI9MTAxNDc7ZS5hMTc0PTEwMTQ4O2UuYTE3NT0xMDE0OTtlLmExNzY9MTAxNTA7ZS5hMTc3PTEwMTUxO2UuYTE3OD0xMDE1MjtlLmExNzk9MTAxNTM7ZS5hMTkzPTEwMTU0O2UuYTE4MD0xMDE1NTtlLmExOTk9MTAxNTY7ZS5hMTgxPTEwMTU3O2UuYTIwMD0xMDE1ODtlLmExODI9MTAxNTk7ZS5hMjAxPTEwMTYxO2UuYTE4Mz0xMDE2MjtlLmExODQ9MTAxNjM7ZS5hMTk3PTEwMTY0O2UuYTE4NT0xMDE2NTtlLmExOTQ9MTAxNjY7ZS5hMTk4PTEwMTY3O2UuYTE4Nj0xMDE2ODtlLmExOTU9MTAxNjk7ZS5hMTg3PTEwMTcwO2UuYTE4OD0xMDE3MTtlLmExODk9MTAxNzI7ZS5hMTkwPTEwMTczO2UuYTE5MT0xMDE3NDtlLmE4OT0xMDA4ODtlLmE5MD0xMDA4OTtlLmE5Mz0xMDA5MDtlLmE5ND0xMDA5MTtlLmE5MT0xMDA5MjtlLmE5Mj0xMDA5MztlLmEyMDU9MTAwOTQ7ZS5hODU9MTAwOTU7ZS5hMjA2PTEwMDk2O2UuYTg2PTEwMDk3O2UuYTg3PTEwMDk4O2UuYTg4PTEwMDk5O2UuYTk1PTEwMTAwO2UuYTk2PTEwMTAxO2VbIi5ub3RkZWYiXT0wfSkpLFlpPWdldExvb2t1cFRhYmxlRmFjdG9yeSgoZnVuY3Rpb24oZSl7ZVs2MzcyMV09MTY5O2VbNjMxOTNdPTE2OTtlWzYzNzIwXT0xNzQ7ZVs2MzE5NF09MTc0O2VbNjM3MjJdPTg0ODI7ZVs2MzE5NV09ODQ4MjtlWzYzNzI5XT05MTI3O2VbNjM3MzBdPTkxMjg7ZVs2MzczMV09OTEyOTtlWzYzNzQwXT05MTMxO2VbNjM3NDFdPTkxMzI7ZVs2Mzc0Ml09OTEzMztlWzYzNzI2XT05MTIxO2VbNjM3MjddPTkxMjI7ZVs2MzcyOF09OTEyMztlWzYzNzM3XT05MTI0O2VbNjM3MzhdPTkxMjU7ZVs2MzczOV09OTEyNjtlWzYzNzIzXT05MTE1O2VbNjM3MjRdPTkxMTY7ZVs2MzcyNV09OTExNztlWzYzNzM0XT05MTE4O2VbNjM3MzVdPTkxMTk7ZVs2MzczNl09OTEyMH0pKTtmdW5jdGlvbiBnZXRVbmljb2RlRm9yR2x5cGgoZSx0KXtsZXQgaT10W2VdO2lmKHZvaWQgMCE9PWkpcmV0dXJuIGk7aWYoIWUpcmV0dXJuLTE7aWYoInUiPT09ZVswXSl7Y29uc3QgdD1lLmxlbmd0aDtsZXQgYTtpZig3PT09dCYmIm4iPT09ZVsxXSYmImkiPT09ZVsyXSlhPWUuc3Vic3RyaW5nKDMpO2Vsc2V7aWYoISh0Pj01JiZ0PD03KSlyZXR1cm4tMTthPWUuc3Vic3RyaW5nKDEpfWlmKGE9PT1hLnRvVXBwZXJDYXNlKCkpe2k9cGFyc2VJbnQoYSwxNik7aWYoaT49MClyZXR1cm4gaX19cmV0dXJuLTF9Y29uc3QgVGk9W1swLDEyN10sWzEyOCwyNTVdLFsyNTYsMzgzXSxbMzg0LDU5MV0sWzU5Miw2ODcsNzQyNCw3NTUxLDc1NTIsNzYxNV0sWzY4OCw3NjcsNDI3NTIsNDI3ODNdLFs3NjgsODc5LDc2MTYsNzY3OV0sWzg4MCwxMDIzXSxbMTEzOTIsMTE1MTldLFsxMDI0LDEyNzksMTI4MCwxMzI3LDExNzQ0LDExNzc1LDQyNTYwLDQyNjU1XSxbMTMyOCwxNDIzXSxbMTQyNCwxNTM1XSxbNDIyNDAsNDI1NTldLFsxNTM2LDE3OTEsMTg3MiwxOTE5XSxbMTk4NCwyMDQ3XSxbMjMwNCwyNDMxXSxbMjQzMiwyNTU5XSxbMjU2MCwyNjg3XSxbMjY4OCwyODE1XSxbMjgxNiwyOTQzXSxbMjk0NCwzMDcxXSxbMzA3MiwzMTk5XSxbMzIwMCwzMzI3XSxbMzMyOCwzNDU1XSxbMzU4NCwzNzExXSxbMzcxMiwzODM5XSxbNDI1Niw0MzUxLDExNTIwLDExNTY3XSxbNjkxMiw3MDM5XSxbNDM1Miw0NjA3XSxbNzY4MCw3OTM1LDExMzYwLDExMzkxLDQyNzg0LDQzMDA3XSxbNzkzNiw4MTkxXSxbODE5Miw4MzAzLDExNzc2LDExOTAzXSxbODMwNCw4MzUxXSxbODM1Miw4Mzk5XSxbODQwMCw4NDQ3XSxbODQ0OCw4NTI3XSxbODUyOCw4NTkxXSxbODU5Miw4NzAzLDEwMjI0LDEwMjM5LDEwNDk2LDEwNjIzLDExMDA4LDExMjYzXSxbODcwNCw4OTU5LDEwNzUyLDExMDA3LDEwMTc2LDEwMjIzLDEwNjI0LDEwNzUxXSxbODk2MCw5MjE1XSxbOTIxNiw5Mjc5XSxbOTI4MCw5MzExXSxbOTMxMiw5NDcxXSxbOTQ3Miw5NTk5XSxbOTYwMCw5NjMxXSxbOTYzMiw5NzI3XSxbOTcyOCw5OTgzXSxbOTk4NCwxMDE3NV0sWzEyMjg4LDEyMzUxXSxbMTIzNTIsMTI0NDddLFsxMjQ0OCwxMjU0MywxMjc4NCwxMjc5OV0sWzEyNTQ0LDEyNTkxLDEyNzA0LDEyNzM1XSxbMTI1OTIsMTI2ODddLFs0MzA3Miw0MzEzNV0sWzEyODAwLDEzMDU1XSxbMTMwNTYsMTMzMTFdLFs0NDAzMiw1NTIxNV0sWzU1Mjk2LDU3MzQzXSxbNjc4NDAsNjc4NzFdLFsxOTk2OCw0MDk1OSwxMTkwNCwxMjAzMSwxMjAzMiwxMjI1NSwxMjI3MiwxMjI4NywxMzMxMiwxOTkwMywxMzEwNzIsMTczNzkxLDEyNjg4LDEyNzAzXSxbNTczNDQsNjM3NDNdLFsxMjczNiwxMjc4Myw2Mzc0NCw2NDI1NSwxOTQ1NjAsMTk1MTAzXSxbNjQyNTYsNjQzMzVdLFs2NDMzNiw2NTAyM10sWzY1MDU2LDY1MDcxXSxbNjUwNDAsNjUwNTVdLFs2NTEwNCw2NTEzNV0sWzY1MTM2LDY1Mjc5XSxbNjUyODAsNjU1MTldLFs2NTUyMCw2NTUzNV0sWzM4NDAsNDA5NV0sWzE3OTIsMTg3MV0sWzE5MjAsMTk4M10sWzM0NTYsMzU4M10sWzQwOTYsNDI1NV0sWzQ2MDgsNDk5MSw0OTkyLDUwMjMsMTE2NDgsMTE3NDNdLFs1MDI0LDUxMTldLFs1MTIwLDU3NTldLFs1NzYwLDU3OTFdLFs1NzkyLDU4ODddLFs2MDE2LDYxNDNdLFs2MTQ0LDYzMTldLFsxMDI0MCwxMDQ5NV0sWzQwOTYwLDQyMTI3XSxbNTg4OCw1OTE5LDU5MjAsNTk1MSw1OTUyLDU5ODMsNTk4NCw2MDE1XSxbNjYzMDQsNjYzNTFdLFs2NjM1Miw2NjM4M10sWzY2NTYwLDY2NjM5XSxbMTE4Nzg0LDExOTAzOSwxMTkwNDAsMTE5Mjk1LDExOTI5NiwxMTkzNzVdLFsxMTk4MDgsMTIwODMxXSxbMTA0NDQ4MCwxMDQ4NTczXSxbNjUwMjQsNjUwMzksOTE3NzYwLDkxNzk5OV0sWzkxNzUwNCw5MTc2MzFdLFs2NDAwLDY0NzldLFs2NDgwLDY1MjddLFs2NTI4LDY2MjNdLFs2NjU2LDY2ODddLFsxMTI2NCwxMTM1OV0sWzExNTY4LDExNjQ3XSxbMTk5MDQsMTk5NjddLFs0MzAwOCw0MzA1NV0sWzY1NTM2LDY1NjYzLDY1NjY0LDY1NzkxLDY1NzkyLDY1ODU1XSxbNjU4NTYsNjU5MzVdLFs2NjQzMiw2NjQ2M10sWzY2NDY0LDY2NTI3XSxbNjY2NDAsNjY2ODddLFs2NjY4OCw2NjczNV0sWzY3NTg0LDY3NjQ3XSxbNjgwOTYsNjgxOTFdLFsxMTk1NTIsMTE5NjQ3XSxbNzM3MjgsNzQ3NTEsNzQ3NTIsNzQ4NzldLFsxMTk2NDgsMTE5Njc5XSxbNzA0MCw3MTAzXSxbNzE2OCw3MjQ3XSxbNzI0OCw3Mjk1XSxbNDMxMzYsNDMyMzFdLFs0MzI2NCw0MzMxMV0sWzQzMzEyLDQzMzU5XSxbNDM1MjAsNDM2MTVdLFs2NTkzNiw2NTk5OV0sWzY2ZTMsNjYwNDddLFs2NjIwOCw2NjI3MSw2NjE3Niw2NjIwNyw2Nzg3Miw2NzkwM10sWzEyNzAyNCwxMjcxMzUsMTI2OTc2LDEyNzAyM11dO2Z1bmN0aW9uIGdldFVuaWNvZGVSYW5nZUZvcihlLHQ9LTEpe2lmKC0xIT09dCl7Y29uc3QgaT1UaVt0XTtmb3IobGV0IGE9MCxyPWkubGVuZ3RoO2E8cjthKz0yKWlmKGU+PWlbYV0mJmU8PWlbYSsxXSlyZXR1cm4gdH1mb3IobGV0IHQ9MCxpPVRpLmxlbmd0aDt0PGk7dCsrKXtjb25zdCBpPVRpW3RdO2ZvcihsZXQgYT0wLHI9aS5sZW5ndGg7YTxyO2ErPTIpaWYoZT49aVthXSYmZTw9aVthKzFdKXJldHVybiB0fXJldHVybi0xfWNvbnN0IEtpPW5ldyBSZWdFeHAoIl4oXFxzKXwoXFxwe01ufSl8KFxccHtDZn0pJCIsInUiKSxxaT1uZXcgTWFwO2NvbnN0IE9pPSEwLFBpPTEsV2k9MixqaT00LFhpPTMyLFppPVsiLm5vdGRlZiIsIi5udWxsIiwibm9ubWFya2luZ3JldHVybiIsInNwYWNlIiwiZXhjbGFtIiwicXVvdGVkYmwiLCJudW1iZXJzaWduIiwiZG9sbGFyIiwicGVyY2VudCIsImFtcGVyc2FuZCIsInF1b3Rlc2luZ2xlIiwicGFyZW5sZWZ0IiwicGFyZW5yaWdodCIsImFzdGVyaXNrIiwicGx1cyIsImNvbW1hIiwiaHlwaGVuIiwicGVyaW9kIiwic2xhc2giLCJ6ZXJvIiwib25lIiwidHdvIiwidGhyZWUiLCJmb3VyIiwiZml2ZSIsInNpeCIsInNldmVuIiwiZWlnaHQiLCJuaW5lIiwiY29sb24iLCJzZW1pY29sb24iLCJsZXNzIiwiZXF1YWwiLCJncmVhdGVyIiwicXVlc3Rpb24iLCJhdCIsIkEiLCJCIiwiQyIsIkQiLCJFIiwiRiIsIkciLCJIIiwiSSIsIkoiLCJLIiwiTCIsIk0iLCJOIiwiTyIsIlAiLCJRIiwiUiIsIlMiLCJUIiwiVSIsIlYiLCJXIiwiWCIsIlkiLCJaIiwiYnJhY2tldGxlZnQiLCJiYWNrc2xhc2giLCJicmFja2V0cmlnaHQiLCJhc2NpaWNpcmN1bSIsInVuZGVyc2NvcmUiLCJncmF2ZSIsImEiLCJiIiwiYyIsImQiLCJlIiwiZiIsImciLCJoIiwiaSIsImoiLCJrIiwibCIsIm0iLCJuIiwibyIsInAiLCJxIiwiciIsInMiLCJ0IiwidSIsInYiLCJ3IiwieCIsInkiLCJ6IiwiYnJhY2VsZWZ0IiwiYmFyIiwiYnJhY2VyaWdodCIsImFzY2lpdGlsZGUiLCJBZGllcmVzaXMiLCJBcmluZyIsIkNjZWRpbGxhIiwiRWFjdXRlIiwiTnRpbGRlIiwiT2RpZXJlc2lzIiwiVWRpZXJlc2lzIiwiYWFjdXRlIiwiYWdyYXZlIiwiYWNpcmN1bWZsZXgiLCJhZGllcmVzaXMiLCJhdGlsZGUiLCJhcmluZyIsImNjZWRpbGxhIiwiZWFjdXRlIiwiZWdyYXZlIiwiZWNpcmN1bWZsZXgiLCJlZGllcmVzaXMiLCJpYWN1dGUiLCJpZ3JhdmUiLCJpY2lyY3VtZmxleCIsImlkaWVyZXNpcyIsIm50aWxkZSIsIm9hY3V0ZSIsIm9ncmF2ZSIsIm9jaXJjdW1mbGV4Iiwib2RpZXJlc2lzIiwib3RpbGRlIiwidWFjdXRlIiwidWdyYXZlIiwidWNpcmN1bWZsZXgiLCJ1ZGllcmVzaXMiLCJkYWdnZXIiLCJkZWdyZWUiLCJjZW50Iiwic3RlcmxpbmciLCJzZWN0aW9uIiwiYnVsbGV0IiwicGFyYWdyYXBoIiwiZ2VybWFuZGJscyIsInJlZ2lzdGVyZWQiLCJjb3B5cmlnaHQiLCJ0cmFkZW1hcmsiLCJhY3V0ZSIsImRpZXJlc2lzIiwibm90ZXF1YWwiLCJBRSIsIk9zbGFzaCIsImluZmluaXR5IiwicGx1c21pbnVzIiwibGVzc2VxdWFsIiwiZ3JlYXRlcmVxdWFsIiwieWVuIiwibXUiLCJwYXJ0aWFsZGlmZiIsInN1bW1hdGlvbiIsInByb2R1Y3QiLCJwaSIsImludGVncmFsIiwib3JkZmVtaW5pbmUiLCJvcmRtYXNjdWxpbmUiLCJPbWVnYSIsImFlIiwib3NsYXNoIiwicXVlc3Rpb25kb3duIiwiZXhjbGFtZG93biIsImxvZ2ljYWxub3QiLCJyYWRpY2FsIiwiZmxvcmluIiwiYXBwcm94ZXF1YWwiLCJEZWx0YSIsImd1aWxsZW1vdGxlZnQiLCJndWlsbGVtb3RyaWdodCIsImVsbGlwc2lzIiwibm9uYnJlYWtpbmdzcGFjZSIsIkFncmF2ZSIsIkF0aWxkZSIsIk90aWxkZSIsIk9FIiwib2UiLCJlbmRhc2giLCJlbWRhc2giLCJxdW90ZWRibGxlZnQiLCJxdW90ZWRibHJpZ2h0IiwicXVvdGVsZWZ0IiwicXVvdGVyaWdodCIsImRpdmlkZSIsImxvemVuZ2UiLCJ5ZGllcmVzaXMiLCJZZGllcmVzaXMiLCJmcmFjdGlvbiIsImN1cnJlbmN5IiwiZ3VpbHNpbmdsbGVmdCIsImd1aWxzaW5nbHJpZ2h0IiwiZmkiLCJmbCIsImRhZ2dlcmRibCIsInBlcmlvZGNlbnRlcmVkIiwicXVvdGVzaW5nbGJhc2UiLCJxdW90ZWRibGJhc2UiLCJwZXJ0aG91c2FuZCIsIkFjaXJjdW1mbGV4IiwiRWNpcmN1bWZsZXgiLCJBYWN1dGUiLCJFZGllcmVzaXMiLCJFZ3JhdmUiLCJJYWN1dGUiLCJJY2lyY3VtZmxleCIsIklkaWVyZXNpcyIsIklncmF2ZSIsIk9hY3V0ZSIsIk9jaXJjdW1mbGV4IiwiYXBwbGUiLCJPZ3JhdmUiLCJVYWN1dGUiLCJVY2lyY3VtZmxleCIsIlVncmF2ZSIsImRvdGxlc3NpIiwiY2lyY3VtZmxleCIsInRpbGRlIiwibWFjcm9uIiwiYnJldmUiLCJkb3RhY2NlbnQiLCJyaW5nIiwiY2VkaWxsYSIsImh1bmdhcnVtbGF1dCIsIm9nb25layIsImNhcm9uIiwiTHNsYXNoIiwibHNsYXNoIiwiU2Nhcm9uIiwic2Nhcm9uIiwiWmNhcm9uIiwiemNhcm9uIiwiYnJva2VuYmFyIiwiRXRoIiwiZXRoIiwiWWFjdXRlIiwieWFjdXRlIiwiVGhvcm4iLCJ0aG9ybiIsIm1pbnVzIiwibXVsdGlwbHkiLCJvbmVzdXBlcmlvciIsInR3b3N1cGVyaW9yIiwidGhyZWVzdXBlcmlvciIsIm9uZWhhbGYiLCJvbmVxdWFydGVyIiwidGhyZWVxdWFydGVycyIsImZyYW5jIiwiR2JyZXZlIiwiZ2JyZXZlIiwiSWRvdGFjY2VudCIsIlNjZWRpbGxhIiwic2NlZGlsbGEiLCJDYWN1dGUiLCJjYWN1dGUiLCJDY2Fyb24iLCJjY2Fyb24iLCJkY3JvYXQiXTtmdW5jdGlvbiByZWNvdmVyR2x5cGhOYW1lKGUsdCl7aWYodm9pZCAwIT09dFtlXSlyZXR1cm4gZTtjb25zdCBpPWdldFVuaWNvZGVGb3JHbHlwaChlLHQpO2lmKC0xIT09aSlmb3IoY29uc3QgZSBpbiB0KWlmKHRbZV09PT1pKXJldHVybiBlO2luZm8oIlVuYWJsZSB0byByZWNvdmVyIGEgc3RhbmRhcmQgZ2x5cGggbmFtZSBmb3I6ICIrZSk7cmV0dXJuIGV9ZnVuY3Rpb24gdHlwZTFGb250R2x5cGhNYXBwaW5nKGUsdCxpKXtjb25zdCBhPU9iamVjdC5jcmVhdGUobnVsbCk7bGV0IHIscyxuO2NvbnN0IG89ISEoZS5mbGFncyZqaSk7aWYoZS5pc0ludGVybmFsRm9udCl7bj10O2ZvcihzPTA7czxuLmxlbmd0aDtzKyspe3I9aS5pbmRleE9mKG5bc10pO2Fbc109cj49MD9yOjB9fWVsc2UgaWYoZS5iYXNlRW5jb2RpbmdOYW1lKXtuPWdldEVuY29kaW5nKGUuYmFzZUVuY29kaW5nTmFtZSk7Zm9yKHM9MDtzPG4ubGVuZ3RoO3MrKyl7cj1pLmluZGV4T2YobltzXSk7YVtzXT1yPj0wP3I6MH19ZWxzZSBpZihvKWZvcihzIGluIHQpYVtzXT10W3NdO2Vsc2V7bj1iaTtmb3Iocz0wO3M8bi5sZW5ndGg7cysrKXtyPWkuaW5kZXhPZihuW3NdKTthW3NdPXI+PTA/cjowfX1jb25zdCBnPWUuZGlmZmVyZW5jZXM7bGV0IGM7aWYoZylmb3IocyBpbiBnKXtjb25zdCBlPWdbc107cj1pLmluZGV4T2YoZSk7aWYoLTE9PT1yKXtjfHwoYz1KaSgpKTtjb25zdCB0PXJlY292ZXJHbHlwaE5hbWUoZSxjKTt0IT09ZSYmKHI9aS5pbmRleE9mKHQpKX1hW3NdPXI+PTA/cjowfXJldHVybiBhfWZ1bmN0aW9uIG5vcm1hbGl6ZUZvbnROYW1lKGUpe3JldHVybiBlLnJlcGxhY2VBbGwoL1ssX10vZywiLSIpLnJlcGxhY2VBbGwoL1xzL2csIiIpfWNvbnN0IFZpPWdldExvb2t1cFRhYmxlRmFjdG9yeSgoZT0+e2VbODIxMV09NjUwNzQ7ZVs4MjEyXT02NTA3MztlWzgyMjldPTY1MDcyO2VbODIzMF09NjUwNDk7ZVsxMjI4OV09NjUwNDE7ZVsxMjI5MF09NjUwNDI7ZVsxMjI5Nl09NjUwODc7ZVsxMjI5N109NjUwODg7ZVsxMjI5OF09NjUwODU7ZVsxMjI5OV09NjUwODY7ZVsxMjMwMF09NjUwODk7ZVsxMjMwMV09NjUwOTA7ZVsxMjMwMl09NjUwOTE7ZVsxMjMwM109NjUwOTI7ZVsxMjMwNF09NjUwODM7ZVsxMjMwNV09NjUwODQ7ZVsxMjMwOF09NjUwODE7ZVsxMjMwOV09NjUwODI7ZVsxMjMxMF09NjUwNDc7ZVsxMjMxMV09NjUwNDg7ZVs2NTEwM109NjUwNzY7ZVs2NTI4MV09NjUwNDU7ZVs2NTI4OF09NjUwNzc7ZVs2NTI4OV09NjUwNzg7ZVs2NTI5Ml09NjUwNDA7ZVs2NTMwNl09NjUwNDM7ZVs2NTMwN109NjUwNDQ7ZVs2NTMxMV09NjUwNDY7ZVs2NTMzOV09NjUwOTU7ZVs2NTM0MV09NjUwOTY7ZVs2NTM0M109NjUwNzU7ZVs2NTM3MV09NjUwNzk7ZVs2NTM3M109NjUwODB9KSksX2k9Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlWyJUaW1lcy1Sb21hbiJdPSJUaW1lcy1Sb21hbiI7ZS5IZWx2ZXRpY2E9IkhlbHZldGljYSI7ZS5Db3VyaWVyPSJDb3VyaWVyIjtlLlN5bWJvbD0iU3ltYm9sIjtlWyJUaW1lcy1Cb2xkIl09IlRpbWVzLUJvbGQiO2VbIkhlbHZldGljYS1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJDb3VyaWVyLUJvbGQiXT0iQ291cmllci1Cb2xkIjtlLlphcGZEaW5nYmF0cz0iWmFwZkRpbmdiYXRzIjtlWyJUaW1lcy1JdGFsaWMiXT0iVGltZXMtSXRhbGljIjtlWyJIZWx2ZXRpY2EtT2JsaXF1ZSJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZVsiQ291cmllci1PYmxpcXVlIl09IkNvdXJpZXItT2JsaXF1ZSI7ZVsiVGltZXMtQm9sZEl0YWxpYyJdPSJUaW1lcy1Cb2xkSXRhbGljIjtlWyJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJDb3VyaWVyLUJvbGRPYmxpcXVlIl09IkNvdXJpZXItQm9sZE9ibGlxdWUiO2UuQXJpYWxOYXJyb3c9IkhlbHZldGljYSI7ZVsiQXJpYWxOYXJyb3ctQm9sZCJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiQXJpYWxOYXJyb3ctQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkFyaWFsTmFycm93LUl0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZS5BcmlhbEJsYWNrPSJIZWx2ZXRpY2EiO2VbIkFyaWFsQmxhY2stQm9sZCJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiQXJpYWxCbGFjay1Cb2xkSXRhbGljIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSI7ZVsiQXJpYWxCbGFjay1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2VbIkFyaWFsLUJsYWNrIl09IkhlbHZldGljYSI7ZVsiQXJpYWwtQmxhY2stQm9sZCJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiQXJpYWwtQmxhY2stQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkFyaWFsLUJsYWNrLUl0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZS5BcmlhbD0iSGVsdmV0aWNhIjtlWyJBcmlhbC1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJBcmlhbC1Cb2xkSXRhbGljIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSI7ZVsiQXJpYWwtSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIjtlLkFyaWFsTVQ9IkhlbHZldGljYSI7ZVsiQXJpYWwtQm9sZEl0YWxpY01UIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSI7ZVsiQXJpYWwtQm9sZE1UIl09IkhlbHZldGljYS1Cb2xkIjtlWyJBcmlhbC1JdGFsaWNNVCJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZVsiQXJpYWwtQm9sZEl0YWxpY01ULUJvbGRJdGFsaWMiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJBcmlhbC1Cb2xkTVQtQm9sZCJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiQXJpYWwtSXRhbGljTVQtSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIjtlLkFyaWFsVW5pY29kZU1TPSJIZWx2ZXRpY2EiO2VbIkFyaWFsVW5pY29kZU1TLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkFyaWFsVW5pY29kZU1TLUJvbGRJdGFsaWMiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJBcmlhbFVuaWNvZGVNUy1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2VbIkNvdXJpZXItQm9sZEl0YWxpYyJdPSJDb3VyaWVyLUJvbGRPYmxpcXVlIjtlWyJDb3VyaWVyLUl0YWxpYyJdPSJDb3VyaWVyLU9ibGlxdWUiO2UuQ291cmllck5ldz0iQ291cmllciI7ZVsiQ291cmllck5ldy1Cb2xkIl09IkNvdXJpZXItQm9sZCI7ZVsiQ291cmllck5ldy1Cb2xkSXRhbGljIl09IkNvdXJpZXItQm9sZE9ibGlxdWUiO2VbIkNvdXJpZXJOZXctSXRhbGljIl09IkNvdXJpZXItT2JsaXF1ZSI7ZVsiQ291cmllck5ld1BTLUJvbGRJdGFsaWNNVCJdPSJDb3VyaWVyLUJvbGRPYmxpcXVlIjtlWyJDb3VyaWVyTmV3UFMtQm9sZE1UIl09IkNvdXJpZXItQm9sZCI7ZVsiQ291cmllck5ld1BTLUl0YWxpY01UIl09IkNvdXJpZXItT2JsaXF1ZSI7ZS5Db3VyaWVyTmV3UFNNVD0iQ291cmllciI7ZVsiSGVsdmV0aWNhLUJvbGRJdGFsaWMiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJIZWx2ZXRpY2EtSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIjtlWyJTeW1ib2wtQm9sZCJdPSJTeW1ib2wiO2VbIlN5bWJvbC1Cb2xkSXRhbGljIl09IlN5bWJvbCI7ZVsiU3ltYm9sLUl0YWxpYyJdPSJTeW1ib2wiO2UuVGltZXNOZXdSb21hbj0iVGltZXMtUm9tYW4iO2VbIlRpbWVzTmV3Um9tYW4tQm9sZCJdPSJUaW1lcy1Cb2xkIjtlWyJUaW1lc05ld1JvbWFuLUJvbGRJdGFsaWMiXT0iVGltZXMtQm9sZEl0YWxpYyI7ZVsiVGltZXNOZXdSb21hbi1JdGFsaWMiXT0iVGltZXMtSXRhbGljIjtlLlRpbWVzTmV3Um9tYW5QUz0iVGltZXMtUm9tYW4iO2VbIlRpbWVzTmV3Um9tYW5QUy1Cb2xkIl09IlRpbWVzLUJvbGQiO2VbIlRpbWVzTmV3Um9tYW5QUy1Cb2xkSXRhbGljIl09IlRpbWVzLUJvbGRJdGFsaWMiO2VbIlRpbWVzTmV3Um9tYW5QUy1Cb2xkSXRhbGljTVQiXT0iVGltZXMtQm9sZEl0YWxpYyI7ZVsiVGltZXNOZXdSb21hblBTLUJvbGRNVCJdPSJUaW1lcy1Cb2xkIjtlWyJUaW1lc05ld1JvbWFuUFMtSXRhbGljIl09IlRpbWVzLUl0YWxpYyI7ZVsiVGltZXNOZXdSb21hblBTLUl0YWxpY01UIl09IlRpbWVzLUl0YWxpYyI7ZS5UaW1lc05ld1JvbWFuUFNNVD0iVGltZXMtUm9tYW4iO2VbIlRpbWVzTmV3Um9tYW5QU01ULUJvbGQiXT0iVGltZXMtQm9sZCI7ZVsiVGltZXNOZXdSb21hblBTTVQtQm9sZEl0YWxpYyJdPSJUaW1lcy1Cb2xkSXRhbGljIjtlWyJUaW1lc05ld1JvbWFuUFNNVC1JdGFsaWMiXT0iVGltZXMtSXRhbGljIn0pKSx6aT1nZXRMb29rdXBUYWJsZUZhY3RvcnkoKGZ1bmN0aW9uKGUpe2UuQ291cmllcj0iRm94aXRGaXhlZC5wZmIiO2VbIkNvdXJpZXItQm9sZCJdPSJGb3hpdEZpeGVkQm9sZC5wZmIiO2VbIkNvdXJpZXItQm9sZE9ibGlxdWUiXT0iRm94aXRGaXhlZEJvbGRJdGFsaWMucGZiIjtlWyJDb3VyaWVyLU9ibGlxdWUiXT0iRm94aXRGaXhlZEl0YWxpYy5wZmIiO2UuSGVsdmV0aWNhPSJMaWJlcmF0aW9uU2Fucy1SZWd1bGFyLnR0ZiI7ZVsiSGVsdmV0aWNhLUJvbGQiXT0iTGliZXJhdGlvblNhbnMtQm9sZC50dGYiO2VbIkhlbHZldGljYS1Cb2xkT2JsaXF1ZSJdPSJMaWJlcmF0aW9uU2Fucy1Cb2xkSXRhbGljLnR0ZiI7ZVsiSGVsdmV0aWNhLU9ibGlxdWUiXT0iTGliZXJhdGlvblNhbnMtSXRhbGljLnR0ZiI7ZVsiVGltZXMtUm9tYW4iXT0iRm94aXRTZXJpZi5wZmIiO2VbIlRpbWVzLUJvbGQiXT0iRm94aXRTZXJpZkJvbGQucGZiIjtlWyJUaW1lcy1Cb2xkSXRhbGljIl09IkZveGl0U2VyaWZCb2xkSXRhbGljLnBmYiI7ZVsiVGltZXMtSXRhbGljIl09IkZveGl0U2VyaWZJdGFsaWMucGZiIjtlLlN5bWJvbD0iRm94aXRTeW1ib2wucGZiIjtlLlphcGZEaW5nYmF0cz0iRm94aXREaW5nYmF0cy5wZmIiO2VbIkxpYmVyYXRpb25TYW5zLVJlZ3VsYXIiXT0iTGliZXJhdGlvblNhbnMtUmVndWxhci50dGYiO2VbIkxpYmVyYXRpb25TYW5zLUJvbGQiXT0iTGliZXJhdGlvblNhbnMtQm9sZC50dGYiO2VbIkxpYmVyYXRpb25TYW5zLUl0YWxpYyJdPSJMaWJlcmF0aW9uU2Fucy1JdGFsaWMudHRmIjtlWyJMaWJlcmF0aW9uU2Fucy1Cb2xkSXRhbGljIl09IkxpYmVyYXRpb25TYW5zLUJvbGRJdGFsaWMudHRmIn0pKSwkaT1nZXRMb29rdXBUYWJsZUZhY3RvcnkoKGZ1bmN0aW9uKGUpe2UuQ2FsaWJyaT0iSGVsdmV0aWNhIjtlWyJDYWxpYnJpLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkNhbGlicmktQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkNhbGlicmktSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIjtlLkNlbnR1cnlHb3RoaWM9IkhlbHZldGljYSI7ZVsiQ2VudHVyeUdvdGhpYy1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJDZW50dXJ5R290aGljLUJvbGRJdGFsaWMiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJDZW50dXJ5R290aGljLUl0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZS5Db21pY1NhbnNNUz0iQ29taWMgU2FucyBNUyI7ZVsiQ29taWNTYW5zTVMtQm9sZCJdPSJDb21pYyBTYW5zIE1TLUJvbGQiO2VbIkNvbWljU2Fuc01TLUJvbGRJdGFsaWMiXT0iQ29taWMgU2FucyBNUy1Cb2xkSXRhbGljIjtlWyJDb21pY1NhbnNNUy1JdGFsaWMiXT0iQ29taWMgU2FucyBNUy1JdGFsaWMiO2UuR2lsbFNhbnNNVD0iSGVsdmV0aWNhIjtlWyJHaWxsU2Fuc01ULUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkdpbGxTYW5zTVQtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkdpbGxTYW5zTVQtSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIjtlLkltcGFjdD0iSGVsdmV0aWNhIjtlWyJJdGNTeW1ib2wtQm9sZCJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiSXRjU3ltYm9sLUJvbGRJdGFsaWMiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJJdGNTeW1ib2wtQm9vayJdPSJIZWx2ZXRpY2EiO2VbIkl0Y1N5bWJvbC1Cb29rSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIjtlWyJJdGNTeW1ib2wtTWVkaXVtIl09IkhlbHZldGljYSI7ZVsiSXRjU3ltYm9sLU1lZGl1bUl0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZS5MdWNpZGFDb25zb2xlPSJDb3VyaWVyIjtlWyJMdWNpZGFDb25zb2xlLUJvbGQiXT0iQ291cmllci1Cb2xkIjtlWyJMdWNpZGFDb25zb2xlLUJvbGRJdGFsaWMiXT0iQ291cmllci1Cb2xkT2JsaXF1ZSI7ZVsiTHVjaWRhQ29uc29sZS1JdGFsaWMiXT0iQ291cmllci1PYmxpcXVlIjtlWyJMdWNpZGFTYW5zLURlbWkiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIk1TLUdvdGhpYyJdPSJNUyBHb3RoaWMiO2VbIk1TLUdvdGhpYy1Cb2xkIl09Ik1TIEdvdGhpYy1Cb2xkIjtlWyJNUy1Hb3RoaWMtQm9sZEl0YWxpYyJdPSJNUyBHb3RoaWMtQm9sZEl0YWxpYyI7ZVsiTVMtR290aGljLUl0YWxpYyJdPSJNUyBHb3RoaWMtSXRhbGljIjtlWyJNUy1NaW5jaG8iXT0iTVMgTWluY2hvIjtlWyJNUy1NaW5jaG8tQm9sZCJdPSJNUyBNaW5jaG8tQm9sZCI7ZVsiTVMtTWluY2hvLUJvbGRJdGFsaWMiXT0iTVMgTWluY2hvLUJvbGRJdGFsaWMiO2VbIk1TLU1pbmNoby1JdGFsaWMiXT0iTVMgTWluY2hvLUl0YWxpYyI7ZVsiTVMtUEdvdGhpYyJdPSJNUyBQR290aGljIjtlWyJNUy1QR290aGljLUJvbGQiXT0iTVMgUEdvdGhpYy1Cb2xkIjtlWyJNUy1QR290aGljLUJvbGRJdGFsaWMiXT0iTVMgUEdvdGhpYy1Cb2xkSXRhbGljIjtlWyJNUy1QR290aGljLUl0YWxpYyJdPSJNUyBQR290aGljLUl0YWxpYyI7ZVsiTVMtUE1pbmNobyJdPSJNUyBQTWluY2hvIjtlWyJNUy1QTWluY2hvLUJvbGQiXT0iTVMgUE1pbmNoby1Cb2xkIjtlWyJNUy1QTWluY2hvLUJvbGRJdGFsaWMiXT0iTVMgUE1pbmNoby1Cb2xkSXRhbGljIjtlWyJNUy1QTWluY2hvLUl0YWxpYyJdPSJNUyBQTWluY2hvLUl0YWxpYyI7ZS5OdXB0aWFsU2NyaXB0PSJUaW1lcy1JdGFsaWMiO2UuU2Vnb2VVSVN5bWJvbD0iSGVsdmV0aWNhIn0pKSxBYT1nZXRMb29rdXBUYWJsZUZhY3RvcnkoKGZ1bmN0aW9uKGUpe2VbIkFkb2JlIEplbnNvbiJdPSEwO2VbIkFkb2JlIFRleHQiXT0hMDtlLkFsYmVydHVzPSEwO2UuQWxkdXM9ITA7ZS5BbGV4YW5kcmlhPSEwO2UuQWxnZXJpYW49ITA7ZVsiQW1lcmljYW4gVHlwZXdyaXRlciJdPSEwO2UuQW50aXF1YT0hMDtlLkFwZXg9ITA7ZS5Bcm5vPSEwO2UuQXN0ZXI9ITA7ZS5BdXJvcmE9ITA7ZS5CYXNrZXJ2aWxsZT0hMDtlLkJlbGw9ITA7ZS5CZW1ibz0hMDtlWyJCZW1ibyBTY2hvb2xib29rIl09ITA7ZS5CZW5ndWlhdD0hMDtlWyJCZXJrZWxleSBPbGQgU3R5bGUiXT0hMDtlWyJCZXJuaGFyZCBNb2Rlcm4iXT0hMDtlWyJCZXJ0aG9sZCBDaXR5Il09ITA7ZS5Cb2Rvbmk9ITA7ZVsiQmF1ZXIgQm9kb25pIl09ITA7ZVsiQm9vayBBbnRpcXVhIl09ITA7ZS5Cb29rbWFuPSEwO2VbIkJvcmRlYXV4IFJvbWFuIl09ITA7ZVsiQ2FsaWZvcm5pYW4gRkIiXT0hMDtlLkNhbGlzdG89ITA7ZS5DYWx2ZXJ0PSEwO2UuQ2FwaXRhbHM9ITA7ZS5DYW1icmlhPSEwO2UuQ2FydGllcj0hMDtlLkNhc2xvbj0hMDtlLkNhdHVsbD0hMDtlLkNlbnRhdXI9ITA7ZVsiQ2VudHVyeSBPbGQgU3R5bGUiXT0hMDtlWyJDZW50dXJ5IFNjaG9vbGJvb2siXT0hMDtlLkNoYXBhcnJhbD0hMDtlWyJDaGFyaXMgU0lMIl09ITA7ZS5DaGVsdGVuaGFtPSEwO2VbIkNob2xsYSBTbGFiIl09ITA7ZS5DbGFyZW5kb249ITA7ZS5DbGVhcmZhY2U9ITA7ZS5Db2NoaW49ITA7ZS5Db2xvbm5hPSEwO2VbIkNvbXB1dGVyIE1vZGVybiJdPSEwO2VbIkNvbmNyZXRlIFJvbWFuIl09ITA7ZS5Db25zdGFudGlhPSEwO2VbIkNvb3BlciBCbGFjayJdPSEwO2UuQ29yb25hPSEwO2UuRWNvdHlwZT0hMDtlLkVneXB0aWVubmU9ITA7ZS5FbGVwaGFudD0hMDtlLkV4Y2Vsc2lvcj0hMDtlLkZhaXJmaWVsZD0hMDtlWyJGRiBTY2FsYSJdPSEwO2UuRm9sa2FyZD0hMDtlLkZvb3RsaWdodD0hMDtlLkZyZWVTZXJpZj0hMDtlWyJGcml6IFF1YWRyYXRhIl09ITA7ZS5HYXJhbW9uZD0hMDtlLkdlbnRpdW09ITA7ZS5HZW9yZ2lhPSEwO2UuR2xvdWNlc3Rlcj0hMDtlWyJHb3VkeSBPbGQgU3R5bGUiXT0hMDtlWyJHb3VkeSBTY2hvb2xib29rIl09ITA7ZVsiR291ZHkgUHJvIEZvbnQiXT0hMDtlLkdyYW5qb249ITA7ZVsiR3VhcmRpYW4gRWd5cHRpYW4iXT0hMDtlLkhlYXRoZXI9ITA7ZS5IZXJjdWxlcz0hMDtlWyJIaWdoIFRvd2VyIFRleHQiXT0hMDtlLkhpcm9zaGlnZT0hMDtlWyJIb2VmbGVyIFRleHQiXT0hMDtlWyJIdW1hbmEgU2VyaWYiXT0hMDtlLkltcHJpbnQ9ITA7ZVsiSW9uaWMgTm8uIDUiXT0hMDtlLkphbnNvbj0hMDtlLkpvYW5uYT0hMDtlLktvcmlubmE9ITA7ZS5MZXhpY29uPSEwO2UuTGliZXJhdGlvblNlcmlmPSEwO2VbIkxpYmVyYXRpb24gU2VyaWYiXT0hMDtlWyJMaW51eCBMaWJlcnRpbmUiXT0hMDtlLkxpdGVyYXR1cm5heWE9ITA7ZS5MdWNpZGE9ITA7ZVsiTHVjaWRhIEJyaWdodCJdPSEwO2UuTWVsaW9yPSEwO2UuTWVtcGhpcz0hMDtlLk1pbGxlcj0hMDtlLk1pbmlvbj0hMDtlLk1vZGVybj0hMDtlWyJNb25hIExpc2EiXT0hMDtlWyJNcnMgRWF2ZXMiXT0hMDtlWyJNUyBTZXJpZiJdPSEwO2VbIk11c2VvIFNsYWIiXT0hMDtlWyJOZXcgWW9yayJdPSEwO2VbIk5pbWJ1cyBSb21hbiJdPSEwO2VbIk5QUyBSYXdsaW5zb24gUm9hZHdheSJdPSEwO2UuTnVwdGlhbFNjcmlwdD0hMDtlLlBhbGF0aW5vPSEwO2UuUGVycGV0dWE9ITA7ZS5QbGFudGluPSEwO2VbIlBsYW50aW4gU2Nob29sYm9vayJdPSEwO2UuUGxheWJpbGw9ITA7ZVsiUG9vciBSaWNoYXJkIl09ITA7ZVsiUmF3bGluc29uIFJvYWR3YXkiXT0hMDtlLlJlbmF1bHQ9ITA7ZS5SZXF1aWVtPSEwO2UuUm9ja3dlbGw9ITA7ZS5Sb21hbj0hMDtlWyJSb3RpcyBTZXJpZiJdPSEwO2UuU2Fib249ITA7ZS5TY2FsYT0hMDtlLlNlYWd1bGw9ITA7ZS5TaXN0aW5hPSEwO2UuU291dmVuaXI9ITA7ZS5TVElYPSEwO2VbIlN0b25lIEluZm9ybWFsIl09ITA7ZVsiU3RvbmUgU2VyaWYiXT0hMDtlLlN5bGZhZW49ITA7ZS5UaW1lcz0hMDtlLlRyYWphbj0hMDtlWyJUcmluaXTDqSJdPSEwO2VbIlRydW1wIE1lZGlhZXZhbCJdPSEwO2UuVXRvcGlhPSEwO2VbIlZhbGUgVHlwZSJdPSEwO2VbIkJpdHN0cmVhbSBWZXJhIl09ITA7ZVsiVmVyYSBTZXJpZiJdPSEwO2UuVmVyc2FpbGxlcz0hMDtlLldhbnRlZD0hMDtlLldlaXNzPSEwO2VbIldpZGUgTGF0aW4iXT0hMDtlLldpbmRzb3I9ITA7ZS5YSVRTPSEwfSkpLGVhPWdldExvb2t1cFRhYmxlRmFjdG9yeSgoZnVuY3Rpb24oZSl7ZS5EaW5nYmF0cz0hMDtlLlN5bWJvbD0hMDtlLlphcGZEaW5nYmF0cz0hMDtlLldpbmdkaW5ncz0hMDtlWyJXaW5nZGluZ3MtQm9sZCJdPSEwO2VbIldpbmdkaW5ncy1SZWd1bGFyIl09ITB9KSksdGE9Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlWzJdPTEwO2VbM109MzI7ZVs0XT0zMztlWzVdPTM0O2VbNl09MzU7ZVs3XT0zNjtlWzhdPTM3O2VbOV09Mzg7ZVsxMF09Mzk7ZVsxMV09NDA7ZVsxMl09NDE7ZVsxM109NDI7ZVsxNF09NDM7ZVsxNV09NDQ7ZVsxNl09NDU7ZVsxN109NDY7ZVsxOF09NDc7ZVsxOV09NDg7ZVsyMF09NDk7ZVsyMV09NTA7ZVsyMl09NTE7ZVsyM109NTI7ZVsyNF09NTM7ZVsyNV09NTQ7ZVsyNl09NTU7ZVsyN109NTY7ZVsyOF09NTc7ZVsyOV09NTg7ZVszMF09ODk0O2VbMzFdPTYwO2VbMzJdPTYxO2VbMzNdPTYyO2VbMzRdPTYzO2VbMzVdPTY0O2VbMzZdPTY1O2VbMzddPTY2O2VbMzhdPTY3O2VbMzldPTY4O2VbNDBdPTY5O2VbNDFdPTcwO2VbNDJdPTcxO2VbNDNdPTcyO2VbNDRdPTczO2VbNDVdPTc0O2VbNDZdPTc1O2VbNDddPTc2O2VbNDhdPTc3O2VbNDldPTc4O2VbNTBdPTc5O2VbNTFdPTgwO2VbNTJdPTgxO2VbNTNdPTgyO2VbNTRdPTgzO2VbNTVdPTg0O2VbNTZdPTg1O2VbNTddPTg2O2VbNThdPTg3O2VbNTldPTg4O2VbNjBdPTg5O2VbNjFdPTkwO2VbNjJdPTkxO2VbNjNdPTkyO2VbNjRdPTkzO2VbNjVdPTk0O2VbNjZdPTk1O2VbNjddPTk2O2VbNjhdPTk3O2VbNjldPTk4O2VbNzBdPTk5O2VbNzFdPTEwMDtlWzcyXT0xMDE7ZVs3M109MTAyO2VbNzRdPTEwMztlWzc1XT0xMDQ7ZVs3Nl09MTA1O2VbNzddPTEwNjtlWzc4XT0xMDc7ZVs3OV09MTA4O2VbODBdPTEwOTtlWzgxXT0xMTA7ZVs4Ml09MTExO2VbODNdPTExMjtlWzg0XT0xMTM7ZVs4NV09MTE0O2VbODZdPTExNTtlWzg3XT0xMTY7ZVs4OF09MTE3O2VbODldPTExODtlWzkwXT0xMTk7ZVs5MV09MTIwO2VbOTJdPTEyMTtlWzkzXT0xMjI7ZVs5NF09MTIzO2VbOTVdPTEyNDtlWzk2XT0xMjU7ZVs5N109MTI2O2VbOThdPTE5NjtlWzk5XT0xOTc7ZVsxMDBdPTE5OTtlWzEwMV09MjAxO2VbMTAyXT0yMDk7ZVsxMDNdPTIxNDtlWzEwNF09MjIwO2VbMTA1XT0yMjU7ZVsxMDZdPTIyNDtlWzEwN109MjI2O2VbMTA4XT0yMjg7ZVsxMDldPTIyNztlWzExMF09MjI5O2VbMTExXT0yMzE7ZVsxMTJdPTIzMztlWzExM109MjMyO2VbMTE0XT0yMzQ7ZVsxMTVdPTIzNTtlWzExNl09MjM3O2VbMTE3XT0yMzY7ZVsxMThdPTIzODtlWzExOV09MjM5O2VbMTIwXT0yNDE7ZVsxMjFdPTI0MztlWzEyMl09MjQyO2VbMTIzXT0yNDQ7ZVsxMjRdPTI0NjtlWzEyNV09MjQ1O2VbMTI2XT0yNTA7ZVsxMjddPTI0OTtlWzEyOF09MjUxO2VbMTI5XT0yNTI7ZVsxMzBdPTgyMjQ7ZVsxMzFdPTE3NjtlWzEzMl09MTYyO2VbMTMzXT0xNjM7ZVsxMzRdPTE2NztlWzEzNV09ODIyNjtlWzEzNl09MTgyO2VbMTM3XT0yMjM7ZVsxMzhdPTE3NDtlWzEzOV09MTY5O2VbMTQwXT04NDgyO2VbMTQxXT0xODA7ZVsxNDJdPTE2ODtlWzE0M109ODgwMDtlWzE0NF09MTk4O2VbMTQ1XT0yMTY7ZVsxNDZdPTg3MzQ7ZVsxNDddPTE3NztlWzE0OF09ODgwNDtlWzE0OV09ODgwNTtlWzE1MF09MTY1O2VbMTUxXT0xODE7ZVsxNTJdPTg3MDY7ZVsxNTNdPTg3MjE7ZVsxNTRdPTg3MTk7ZVsxNTZdPTg3NDc7ZVsxNTddPTE3MDtlWzE1OF09MTg2O2VbMTU5XT04NDg2O2VbMTYwXT0yMzA7ZVsxNjFdPTI0ODtlWzE2Ml09MTkxO2VbMTYzXT0xNjE7ZVsxNjRdPTE3MjtlWzE2NV09ODczMDtlWzE2Nl09NDAyO2VbMTY3XT04Nzc2O2VbMTY4XT04NzEwO2VbMTY5XT0xNzE7ZVsxNzBdPTE4NztlWzE3MV09ODIzMDtlWzE3OV09ODIyMDtlWzE4MF09ODIyMTtlWzE4MV09ODIxNjtlWzE4Ml09ODIxNztlWzIwMF09MTkzO2VbMjAzXT0yMDU7ZVsyMDddPTIxMTtlWzIxMF09MjE4O2VbMjIzXT03MTE7ZVsyMjRdPTMyMTtlWzIyNV09MzIyO2VbMjI2XT0zNTI7ZVsyMjddPTM1MztlWzIyOF09MzgxO2VbMjI5XT0zODI7ZVsyMzNdPTIyMTtlWzIzNF09MjUzO2VbMjUyXT0yNjM7ZVsyNTNdPTI2ODtlWzI1NF09MjY5O2VbMjU4XT0yNTg7ZVsyNjBdPTI2MDtlWzI2MV09MjYxO2VbMjY1XT0yODA7ZVsyNjZdPTI4MTtlWzI2N109MjgyO2VbMjY4XT0yODM7ZVsyNjldPTMxMztlWzI3NV09MzIzO2VbMjc2XT0zMjQ7ZVsyNzhdPTMyODtlWzI4M109MzQ0O2VbMjg0XT0zNDU7ZVsyODVdPTM0NjtlWzI4Nl09MzQ3O2VbMjkyXT0zNjc7ZVsyOTVdPTM3NztlWzI5Nl09Mzc4O2VbMjk4XT0zODA7ZVszMDVdPTk2MztlWzMwNl09OTY0O2VbMzA3XT05NjY7ZVszMDhdPTgyMTU7ZVszMDldPTgyNTI7ZVszMTBdPTgzMTk7ZVszMTFdPTgzNTk7ZVszMTJdPTg1OTI7ZVszMTNdPTg1OTM7ZVszMzddPTk1NTI7ZVs0OTNdPTEwMzk7ZVs0OTRdPTEwNDA7ZVs2NzJdPTE0ODg7ZVs2NzNdPTE0ODk7ZVs2NzRdPTE0OTA7ZVs2NzVdPTE0OTE7ZVs2NzZdPTE0OTI7ZVs2NzddPTE0OTM7ZVs2NzhdPTE0OTQ7ZVs2NzldPTE0OTU7ZVs2ODBdPTE0OTY7ZVs2ODFdPTE0OTc7ZVs2ODJdPTE0OTg7ZVs2ODNdPTE0OTk7ZVs2ODRdPTE1MDA7ZVs2ODVdPTE1MDE7ZVs2ODZdPTE1MDI7ZVs2ODddPTE1MDM7ZVs2ODhdPTE1MDQ7ZVs2ODldPTE1MDU7ZVs2OTBdPTE1MDY7ZVs2OTFdPTE1MDc7ZVs2OTJdPTE1MDg7ZVs2OTNdPTE1MDk7ZVs2OTRdPTE1MTA7ZVs2OTVdPTE1MTE7ZVs2OTZdPTE1MTI7ZVs2OTddPTE1MTM7ZVs2OThdPTE1MTQ7ZVs3MDVdPTE1MjQ7ZVs3MDZdPTgzNjI7ZVs3MTBdPTY0Mjg4O2VbNzExXT02NDI5ODtlWzc1OV09MTYxNztlWzc2MV09MTc3NjtlWzc2M109MTc3ODtlWzc3NV09MTY1MjtlWzc3N109MTc2NDtlWzc3OF09MTc4MDtlWzc3OV09MTc4MTtlWzc4MF09MTc4MjtlWzc4Ml09NzcxO2VbNzgzXT02NDcyNjtlWzc4Nl09ODM2MztlWzc4OF09ODUzMjtlWzc5MF09NzY4O2VbNzkxXT03Njk7ZVs3OTJdPTc2ODtlWzc5NV09ODAzO2VbNzk3XT02NDMzNjtlWzc5OF09NjQzMzc7ZVs3OTldPTY0MzQyO2VbODAwXT02NDM0MztlWzgwMV09NjQzNDQ7ZVs4MDJdPTY0MzQ1O2VbODAzXT02NDM2MjtlWzgwNF09NjQzNjM7ZVs4MDVdPTY0MzY0O2VbMjQyNF09NzgyMTtlWzI0MjVdPTc4MjI7ZVsyNDI2XT03ODIzO2VbMjQyN109NzgyNDtlWzI0MjhdPTc4MjU7ZVsyNDI5XT03ODI2O2VbMjQzMF09NzgyNztlWzI0MzNdPTc2ODI7ZVsyNjc4XT04MDQ1O2VbMjY3OV09ODA0NjtlWzI4MzBdPTE1NTI7ZVsyODM4XT02ODY7ZVsyODQwXT03NTE7ZVsyODQyXT03NTM7ZVsyODQzXT03NTQ7ZVsyODQ0XT03NTU7ZVsyODQ2XT03NTc7ZVsyODU2XT03Njc7ZVsyODU3XT04NDg7ZVsyODU4XT04NDk7ZVsyODYyXT04NTM7ZVsyODYzXT04NTQ7ZVsyODY0XT04NTU7ZVsyODY1XT04NjE7ZVsyODY2XT04NjI7ZVsyOTA2XT03NDYwO2VbMjkwOF09NzQ2MjtlWzI5MDldPTc0NjM7ZVsyOTEwXT03NDY0O2VbMjkxMl09NzQ2NjtlWzI5MTNdPTc0Njc7ZVsyOTE0XT03NDY4O2VbMjkxNl09NzQ3MDtlWzI5MTddPTc0NzE7ZVsyOTE4XT03NDcyO2VbMjkyMF09NzQ3NDtlWzI5MjFdPTc0NzU7ZVsyOTIyXT03NDc2O2VbMjkyNF09NzQ3ODtlWzI5MjVdPTc0Nzk7ZVsyOTI2XT03NDgwO2VbMjkyOF09NzQ4MjtlWzI5MjldPTc0ODM7ZVsyOTMwXT03NDg0O2VbMjkzMl09NzQ4NjtlWzI5MzNdPTc0ODc7ZVsyOTM0XT03NDg4O2VbMjkzNl09NzQ5MDtlWzI5MzddPTc0OTE7ZVsyOTM4XT03NDkyO2VbMjk0MF09NzQ5NDtlWzI5NDFdPTc0OTU7ZVsyOTQyXT03NDk2O2VbMjk0NF09NzQ5ODtlWzI5NDZdPTc1MDA7ZVsyOTQ4XT03NTAyO2VbMjk1MF09NzUwNDtlWzI5NTFdPTc1MDU7ZVsyOTUyXT03NTA2O2VbMjk1NF09NzUwODtlWzI5NTVdPTc1MDk7ZVsyOTU2XT03NTEwO2VbMjk1OF09NzUxMjtlWzI5NTldPTc1MTM7ZVsyOTYwXT03NTE0O2VbMjk2Ml09NzUxNjtlWzI5NjNdPTc1MTc7ZVsyOTY0XT03NTE4O2VbMjk2Nl09NzUyMDtlWzI5NjddPTc1MjE7ZVsyOTY4XT03NTIyO2VbMjk3MF09NzUyNDtlWzI5NzFdPTc1MjU7ZVsyOTcyXT03NTI2O2VbMjk3NF09NzUyODtlWzI5NzVdPTc1Mjk7ZVsyOTc2XT03NTMwO2VbMjk3OF09MTUzNztlWzI5NzldPTE1Mzg7ZVsyOTgwXT0xNTM5O2VbMjk4Ml09MTU0OTtlWzI5ODNdPTE1NTE7ZVsyOTg0XT0xNTUyO2VbMjk4Nl09MTU1NDtlWzI5ODddPTE1NTU7ZVsyOTg4XT0xNTU2O2VbMjk5MF09MTYyMztlWzI5OTFdPTE2MjQ7ZVsyOTk1XT0xNzc1O2VbMjk5OV09MTc5MTtlWzMwMDJdPTY0MjkwO2VbMzAwM109NjQyOTE7ZVszMDA0XT02NDI5MjtlWzMwMDZdPTY0Mjk0O2VbMzAwN109NjQyOTU7ZVszMDA4XT02NDI5NjtlWzMwMTFdPTE5MDA7ZVszMDE0XT04MjIzO2VbMzAxNV09ODI0NDtlWzMwMTddPTc1MzI7ZVszMDE4XT03NTMzO2VbMzAxOV09NzUzNDtlWzMwNzVdPTc1OTA7ZVszMDc2XT03NTkxO2VbMzA3OV09NzU5NDtlWzMwODBdPTc1OTU7ZVszMDgzXT03NTk4O2VbMzA4NF09NzU5OTtlWzMwODddPTc2MDI7ZVszMDg4XT03NjAzO2VbMzA5MV09NzYwNjtlWzMwOTJdPTc2MDc7ZVszMDk1XT03NjEwO2VbMzA5Nl09NzYxMTtlWzMwOTldPTc2MTQ7ZVszMTAwXT03NjE1O2VbMzEwM109NzYxODtlWzMxMDRdPTc2MTk7ZVszMTA3XT04MzM3O2VbMzEwOF09ODMzODtlWzMxMTZdPTE4ODQ7ZVszMTE5XT0xODg1O2VbMzEyMF09MTg4NTtlWzMxMjNdPTE4ODY7ZVszMTI0XT0xODg2O2VbMzEyN109MTg4NztlWzMxMjhdPTE4ODc7ZVszMTMxXT0xODg4O2VbMzEzMl09MTg4ODtlWzMxMzVdPTE4ODk7ZVszMTM2XT0xODg5O2VbMzEzOV09MTg5MDtlWzMxNDBdPTE4OTA7ZVszMTQzXT0xODkxO2VbMzE0NF09MTg5MTtlWzMxNDddPTE4OTI7ZVszMTQ4XT0xODkyO2VbMzE1M109NTgwO2VbMzE1NF09NTgxO2VbMzE1N109NTg0O2VbMzE1OF09NTg1O2VbMzE2MV09NTg4O2VbMzE2Ml09NTg5O2VbMzE2NV09ODkxO2VbMzE2Nl09ODkyO2VbMzE2OV09MTI3NDtlWzMxNzBdPTEyNzU7ZVszMTczXT0xMjc4O2VbMzE3NF09MTI3OTtlWzMxODFdPTc2MjI7ZVszMTgyXT03NjIzO2VbMzI4Ml09MTE3OTk7ZVszMzE2XT01Nzg7ZVszMzc5XT00Mjc4NTtlWzMzOTNdPTExNTk7ZVszNDE2XT04Mzc3fSkpLGlhPWdldExvb2t1cFRhYmxlRmFjdG9yeSgoZnVuY3Rpb24oZSl7ZVsyMjddPTMyMjtlWzI2NF09MjYxO2VbMjkxXT0zNDZ9KSksYWE9Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlWzFdPTMyO2VbNF09NjU7ZVs1XT0xOTI7ZVs2XT0xOTM7ZVs5XT0xOTY7ZVsxN109NjY7ZVsxOF09Njc7ZVsyMV09MjY4O2VbMjRdPTY4O2VbMjhdPTY5O2VbMjldPTIwMDtlWzMwXT0yMDE7ZVszMl09MjgyO2VbMzhdPTcwO2VbMzldPTcxO2VbNDRdPTcyO2VbNDddPTczO2VbNDhdPTIwNDtlWzQ5XT0yMDU7ZVs1OF09NzQ7ZVs2MF09NzU7ZVs2Ml09NzY7ZVs2OF09Nzc7ZVs2OV09Nzg7ZVs3NV09Nzk7ZVs3Nl09MjEwO2VbODBdPTIxNDtlWzg3XT04MDtlWzg5XT04MTtlWzkwXT04MjtlWzkyXT0zNDQ7ZVs5NF09ODM7ZVs5N109MzUyO2VbMTAwXT04NDtlWzEwNF09ODU7ZVsxMDldPTIyMDtlWzExNV09ODY7ZVsxMTZdPTg3O2VbMTIxXT04ODtlWzEyMl09ODk7ZVsxMjRdPTIyMTtlWzEyN109OTA7ZVsxMjldPTM4MTtlWzI1OF09OTc7ZVsyNTldPTIyNDtlWzI2MF09MjI1O2VbMjYzXT0yMjg7ZVsyNjhdPTI2MTtlWzI3MV09OTg7ZVsyNzJdPTk5O2VbMjczXT0yNjM7ZVsyNzVdPTI2OTtlWzI4Ml09MTAwO2VbMjg2XT0xMDE7ZVsyODddPTIzMjtlWzI4OF09MjMzO2VbMjkwXT0yODM7ZVsyOTVdPTI4MTtlWzI5Nl09MTAyO2VbMzM2XT0xMDM7ZVszNDZdPTEwNDtlWzM0OV09MTA1O2VbMzUwXT0yMzY7ZVszNTFdPTIzNztlWzM2MV09MTA2O2VbMzY0XT0xMDc7ZVszNjddPTEwODtlWzM3MV09MzIyO2VbMzczXT0xMDk7ZVszNzRdPTExMDtlWzM4MV09MTExO2VbMzgyXT0yNDI7ZVszODNdPTI0MztlWzM4Nl09MjQ2O2VbMzkzXT0xMTI7ZVszOTVdPTExMztlWzM5Nl09MTE0O2VbMzk4XT0zNDU7ZVs0MDBdPTExNTtlWzQwMV09MzQ3O2VbNDAzXT0zNTM7ZVs0MTBdPTExNjtlWzQzN109MTE3O2VbNDQyXT0yNTI7ZVs0NDhdPTExODtlWzQ0OV09MTE5O2VbNDU0XT0xMjA7ZVs0NTVdPTEyMTtlWzQ1N109MjUzO2VbNDYwXT0xMjI7ZVs0NjJdPTM4MjtlWzQ2M109MzgwO2VbODUzXT00NDtlWzg1NV09NTg7ZVs4NTZdPTQ2O2VbODc2XT00NztlWzg3OF09NDU7ZVs4ODJdPTQ1O2VbODk0XT00MDtlWzg5NV09NDE7ZVs4OTZdPTkxO2VbODk3XT05MztlWzkyM109NjQ7ZVsxMDA0XT00ODtlWzEwMDVdPTQ5O2VbMTAwNl09NTA7ZVsxMDA3XT01MTtlWzEwMDhdPTUyO2VbMTAwOV09NTM7ZVsxMDEwXT01NDtlWzEwMTFdPTU1O2VbMTAxMl09NTY7ZVsxMDEzXT01NztlWzEwODFdPTM3O2VbMTA4NV09NDM7ZVsxMDg2XT00NX0pKTtmdW5jdGlvbiBnZXRTdGFuZGFyZEZvbnROYW1lKGUpe2NvbnN0IHQ9bm9ybWFsaXplRm9udE5hbWUoZSk7cmV0dXJuIF9pKClbdF19ZnVuY3Rpb24gaXNLbm93bkZvbnROYW1lKGUpe2NvbnN0IHQ9bm9ybWFsaXplRm9udE5hbWUoZSk7cmV0dXJuISEoX2koKVt0XXx8JGkoKVt0XXx8QWEoKVt0XXx8ZWEoKVt0XSl9Y2xhc3MgVG9Vbmljb2RlTWFwe2NvbnN0cnVjdG9yKGU9W10pe3RoaXMuX21hcD1lfWdldCBsZW5ndGgoKXtyZXR1cm4gdGhpcy5fbWFwLmxlbmd0aH1mb3JFYWNoKGUpe2Zvcihjb25zdCB0IGluIHRoaXMuX21hcCllKHQsdGhpcy5fbWFwW3RdLmNoYXJDb2RlQXQoMCkpfWhhcyhlKXtyZXR1cm4gdm9pZCAwIT09dGhpcy5fbWFwW2VdfWdldChlKXtyZXR1cm4gdGhpcy5fbWFwW2VdfWNoYXJDb2RlT2YoZSl7Y29uc3QgdD10aGlzLl9tYXA7aWYodC5sZW5ndGg8PTY1NTM2KXJldHVybiB0LmluZGV4T2YoZSk7Zm9yKGNvbnN0IGkgaW4gdClpZih0W2ldPT09ZSlyZXR1cm4gMHxpO3JldHVybi0xfWFtZW5kKGUpe2Zvcihjb25zdCB0IGluIGUpdGhpcy5fbWFwW3RdPWVbdF19fWNsYXNzIElkZW50aXR5VG9Vbmljb2RlTWFwe2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5maXJzdENoYXI9ZTt0aGlzLmxhc3RDaGFyPXR9Z2V0IGxlbmd0aCgpe3JldHVybiB0aGlzLmxhc3RDaGFyKzEtdGhpcy5maXJzdENoYXJ9Zm9yRWFjaChlKXtmb3IobGV0IHQ9dGhpcy5maXJzdENoYXIsaT10aGlzLmxhc3RDaGFyO3Q8PWk7dCsrKWUodCx0KX1oYXMoZSl7cmV0dXJuIHRoaXMuZmlyc3RDaGFyPD1lJiZlPD10aGlzLmxhc3RDaGFyfWdldChlKXtpZih0aGlzLmZpcnN0Q2hhcjw9ZSYmZTw9dGhpcy5sYXN0Q2hhcilyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShlKX1jaGFyQ29kZU9mKGUpe3JldHVybiBOdW1iZXIuaXNJbnRlZ2VyKGUpJiZlPj10aGlzLmZpcnN0Q2hhciYmZTw9dGhpcy5sYXN0Q2hhcj9lOi0xfWFtZW5kKGUpe3VucmVhY2hhYmxlKCJTaG91bGQgbm90IGNhbGwgYW1lbmQoKSIpfX1jbGFzcyBDRkZGb250e2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5wcm9wZXJ0aWVzPXQ7Y29uc3QgaT1uZXcgQ0ZGUGFyc2VyKGUsdCxPaSk7dGhpcy5jZmY9aS5wYXJzZSgpO3RoaXMuY2ZmLmR1cGxpY2F0ZUZpcnN0R2x5cGgoKTtjb25zdCBhPW5ldyBDRkZDb21waWxlcih0aGlzLmNmZik7dGhpcy5zZWFjcz10aGlzLmNmZi5zZWFjczt0cnl7dGhpcy5kYXRhPWEuY29tcGlsZSgpfWNhdGNoe3dhcm4oIkZhaWxlZCB0byBjb21waWxlIGZvbnQgIit0LmxvYWRlZE5hbWUpO3RoaXMuZGF0YT1lfXRoaXMuX2NyZWF0ZUJ1aWx0SW5FbmNvZGluZygpfWdldCBudW1HbHlwaHMoKXtyZXR1cm4gdGhpcy5jZmYuY2hhclN0cmluZ3MuY291bnR9Z2V0Q2hhcnNldCgpe3JldHVybiB0aGlzLmNmZi5jaGFyc2V0LmNoYXJzZXR9Z2V0R2x5cGhNYXBwaW5nKCl7Y29uc3QgZT10aGlzLmNmZix0PXRoaXMucHJvcGVydGllcyx7Y2lkVG9HaWRNYXA6aSxjTWFwOmF9PXQscj1lLmNoYXJzZXQuY2hhcnNldDtsZXQgcyxuO2lmKHQuY29tcG9zaXRlKXtsZXQgdCxvO2lmKGk/Lmxlbmd0aD4wKXt0PU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGxldCBlPTAsYT1pLmxlbmd0aDtlPGE7ZSsrKXtjb25zdCBhPWlbZV07dm9pZCAwIT09YSYmKHRbYV09ZSl9fXM9T2JqZWN0LmNyZWF0ZShudWxsKTtpZihlLmlzQ0lERm9udClmb3Iobj0wO248ci5sZW5ndGg7bisrKXtjb25zdCBlPXJbbl07bz1hLmNoYXJDb2RlT2YoZSk7dm9pZCAwIT09dD8uW29dJiYobz10W29dKTtzW29dPW59ZWxzZSBmb3Iobj0wO248ZS5jaGFyU3RyaW5ncy5jb3VudDtuKyspe289YS5jaGFyQ29kZU9mKG4pO3Nbb109bn1yZXR1cm4gc31sZXQgbz1lLmVuY29kaW5nP2UuZW5jb2RpbmcuZW5jb2Rpbmc6bnVsbDt0LmlzSW50ZXJuYWxGb250JiYobz10LmRlZmF1bHRFbmNvZGluZyk7cz10eXBlMUZvbnRHbHlwaE1hcHBpbmcodCxvLHIpO3JldHVybiBzfWhhc0dseXBoSWQoZSl7cmV0dXJuIHRoaXMuY2ZmLmhhc0dseXBoSWQoZSl9X2NyZWF0ZUJ1aWx0SW5FbmNvZGluZygpe2NvbnN0e2NoYXJzZXQ6ZSxlbmNvZGluZzp0fT10aGlzLmNmZjtpZighZXx8IXQpcmV0dXJuO2NvbnN0IGk9ZS5jaGFyc2V0LGE9dC5lbmNvZGluZyxyPVtdO2Zvcihjb25zdCBlIGluIGEpe2NvbnN0IHQ9YVtlXTtpZih0Pj0wKXtjb25zdCBhPWlbdF07YSYmKHJbZV09YSl9fXIubGVuZ3RoPjAmJih0aGlzLnByb3BlcnRpZXMuYnVpbHRJbkVuY29kaW5nPXIpfX1mdW5jdGlvbiBnZXRVaW50MzIoZSx0KXtyZXR1cm4oZVt0XTw8MjR8ZVt0KzFdPDwxNnxlW3QrMl08PDh8ZVt0KzNdKT4+PjB9ZnVuY3Rpb24gZ2V0VWludDE2KGUsdCl7cmV0dXJuIGVbdF08PDh8ZVt0KzFdfWZ1bmN0aW9uIGdldEludDE2KGUsdCl7cmV0dXJuKGVbdF08PDI0fGVbdCsxXTw8MTYpPj4xNn1mdW5jdGlvbiBnZXRJbnQ4KGUsdCl7cmV0dXJuIGVbdF08PDI0Pj4yNH1mdW5jdGlvbiBnZXRGbG9hdDIxNChlLHQpe3JldHVybiBnZXRJbnQxNihlLHQpLzE2Mzg0fWZ1bmN0aW9uIGdldFN1YnJvdXRpbmVCaWFzKGUpe2NvbnN0IHQ9ZS5sZW5ndGg7bGV0IGk9MzI3Njg7dDwxMjQwP2k9MTA3OnQ8MzM5MDAmJihpPTExMzEpO3JldHVybiBpfWZ1bmN0aW9uIHBhcnNlQ21hcChlLHQsaSl7Y29uc3QgYT0xPT09Z2V0VWludDE2KGUsdCsyKT9nZXRVaW50MzIoZSx0KzgpOmdldFVpbnQzMihlLHQrMTYpLHI9Z2V0VWludDE2KGUsdCthKTtsZXQgcyxuLG87aWYoND09PXIpe2dldFVpbnQxNihlLHQrYSsyKTtjb25zdCBpPWdldFVpbnQxNihlLHQrYSs2KT4+MTtuPXQrYSsxNDtzPVtdO2ZvcihvPTA7bzxpO28rKyxuKz0yKXNbb109e2VuZDpnZXRVaW50MTYoZSxuKX07bis9Mjtmb3Iobz0wO288aTtvKyssbis9MilzW29dLnN0YXJ0PWdldFVpbnQxNihlLG4pO2ZvcihvPTA7bzxpO28rKyxuKz0yKXNbb10uaWREZWx0YT1nZXRVaW50MTYoZSxuKTtmb3Iobz0wO288aTtvKyssbis9Mil7bGV0IHQ9Z2V0VWludDE2KGUsbik7aWYoMCE9PXQpe3Nbb10uaWRzPVtdO2ZvcihsZXQgaT0wLGE9c1tvXS5lbmQtc1tvXS5zdGFydCsxO2k8YTtpKyspe3Nbb10uaWRzW2ldPWdldFVpbnQxNihlLG4rdCk7dCs9Mn19fXJldHVybiBzfWlmKDEyPT09cil7Y29uc3QgaT1nZXRVaW50MzIoZSx0K2ErMTIpO249dCthKzE2O3M9W107Zm9yKG89MDtvPGk7bysrKXt0PWdldFVpbnQzMihlLG4pO3MucHVzaCh7c3RhcnQ6dCxlbmQ6Z2V0VWludDMyKGUsbis0KSxpZERlbHRhOmdldFVpbnQzMihlLG4rOCktdH0pO24rPTEyfXJldHVybiBzfXRocm93IG5ldyBGb3JtYXRFcnJvcihgdW5zdXBwb3J0ZWQgY21hcDogJHtyfWApfWZ1bmN0aW9uIHBhcnNlQ2ZmKGUsdCxpLGEpe2NvbnN0IHI9bmV3IENGRlBhcnNlcihuZXcgU3RyZWFtKGUsdCxpLXQpLHt9LGEpLnBhcnNlKCk7cmV0dXJue2dseXBoczpyLmNoYXJTdHJpbmdzLm9iamVjdHMsc3VicnM6ci50b3BEaWN0LnByaXZhdGVEaWN0Py5zdWJyc0luZGV4Py5vYmplY3RzLGdzdWJyczpyLmdsb2JhbFN1YnJJbmRleD8ub2JqZWN0cyxpc0NGRkNJREZvbnQ6ci5pc0NJREZvbnQsZmRTZWxlY3Q6ci5mZFNlbGVjdCxmZEFycmF5OnIuZmRBcnJheX19ZnVuY3Rpb24gbG9va3VwQ21hcChlLHQpe2NvbnN0IGk9dC5jb2RlUG9pbnRBdCgwKTtsZXQgYT0wLHI9MCxzPWUubGVuZ3RoLTE7Zm9yKDtyPHM7KXtjb25zdCB0PXIrcysxPj4xO2k8ZVt0XS5zdGFydD9zPXQtMTpyPXR9ZVtyXS5zdGFydDw9aSYmaTw9ZVtyXS5lbmQmJihhPWVbcl0uaWREZWx0YSsoZVtyXS5pZHM/ZVtyXS5pZHNbaS1lW3JdLnN0YXJ0XTppKSY2NTUzNSk7cmV0dXJue2NoYXJDb2RlOmksZ2x5cGhJZDphfX1mdW5jdGlvbiBjb21waWxlR2x5ZihlLHQsaSl7ZnVuY3Rpb24gbW92ZVRvKGUsaSl7dC5hZGQoRXQsW2UsaV0pfWZ1bmN0aW9uIGxpbmVUbyhlLGkpe3QuYWRkKHV0LFtlLGldKX1mdW5jdGlvbiBxdWFkcmF0aWNDdXJ2ZVRvKGUsaSxhLHIpe3QuYWRkKGR0LFtlLGksYSxyXSl9bGV0IGE9MDtjb25zdCByPWdldEludDE2KGUsYSk7bGV0IHMsbj0wLG89MDthKz0xMDtpZihyPDApZG97cz1nZXRVaW50MTYoZSxhKTtjb25zdCByPWdldFVpbnQxNihlLGErMik7YSs9NDtsZXQgZyxjO2lmKDEmcyl7aWYoMiZzKXtnPWdldEludDE2KGUsYSk7Yz1nZXRJbnQxNihlLGErMil9ZWxzZXtnPWdldFVpbnQxNihlLGEpO2M9Z2V0VWludDE2KGUsYSsyKX1hKz00fWVsc2UgaWYoMiZzKXtnPWdldEludDgoZSxhKyspO2M9Z2V0SW50OChlLGErKyl9ZWxzZXtnPWVbYSsrXTtjPWVbYSsrXX1pZigyJnMpe249ZztvPWN9ZWxzZXtuPTA7bz0wfWxldCBDPTEsaD0xLGw9MCxRPTA7aWYoOCZzKXtDPWg9Z2V0RmxvYXQyMTQoZSxhKTthKz0yfWVsc2UgaWYoNjQmcyl7Qz1nZXRGbG9hdDIxNChlLGEpO2g9Z2V0RmxvYXQyMTQoZSxhKzIpO2ErPTR9ZWxzZSBpZigxMjgmcyl7Qz1nZXRGbG9hdDIxNChlLGEpO2w9Z2V0RmxvYXQyMTQoZSxhKzIpO1E9Z2V0RmxvYXQyMTQoZSxhKzQpO2g9Z2V0RmxvYXQyMTQoZSxhKzYpO2ErPTh9Y29uc3QgRT1pLmdseXBoc1tyXTtpZihFKXt0LmFkZChwdCk7dC5hZGQoeXQsW0MsbCxRLGgsbixvXSk7Y29tcGlsZUdseWYoRSx0LGkpO3QuYWRkKGZ0KX19d2hpbGUoMzImcyk7ZWxzZXtjb25zdCB0PVtdO2xldCBpLGc7Zm9yKGk9MDtpPHI7aSsrKXt0LnB1c2goZ2V0VWludDE2KGUsYSkpO2ErPTJ9YSs9MitnZXRVaW50MTYoZSxhKTtjb25zdCBjPXQuYXQoLTEpKzEsQz1bXTtmb3IoO0MubGVuZ3RoPGM7KXtzPWVbYSsrXTtsZXQgdD0xOzgmcyYmKHQrPWVbYSsrXSk7Zm9yKDt0LS0gPjA7KUMucHVzaCh7ZmxhZ3M6c30pfWZvcihpPTA7aTxjO2krKyl7c3dpdGNoKDE4JkNbaV0uZmxhZ3Mpe2Nhc2UgMDpuKz1nZXRJbnQxNihlLGEpO2ErPTI7YnJlYWs7Y2FzZSAyOm4tPWVbYSsrXTticmVhaztjYXNlIDE4Om4rPWVbYSsrXX1DW2ldLng9bn1mb3IoaT0wO2k8YztpKyspe3N3aXRjaCgzNiZDW2ldLmZsYWdzKXtjYXNlIDA6bys9Z2V0SW50MTYoZSxhKTthKz0yO2JyZWFrO2Nhc2UgNDpvLT1lW2ErK107YnJlYWs7Y2FzZSAzNjpvKz1lW2ErK119Q1tpXS55PW99bGV0IGg9MDtmb3IoYT0wO2E8cjthKyspe2NvbnN0IGU9dFthXSxyPUMuc2xpY2UoaCxlKzEpO2lmKDEmclswXS5mbGFncylyLnB1c2goclswXSk7ZWxzZSBpZigxJnIuYXQoLTEpLmZsYWdzKXIudW5zaGlmdChyLmF0KC0xKSk7ZWxzZXtjb25zdCBlPXtmbGFnczoxLHg6KHJbMF0ueCtyLmF0KC0xKS54KS8yLHk6KHJbMF0ueStyLmF0KC0xKS55KS8yfTtyLnVuc2hpZnQoZSk7ci5wdXNoKGUpfW1vdmVUbyhyWzBdLngsclswXS55KTtmb3IoaT0xLGc9ci5sZW5ndGg7aTxnO2krKylpZigxJnJbaV0uZmxhZ3MpbGluZVRvKHJbaV0ueCxyW2ldLnkpO2Vsc2UgaWYoMSZyW2krMV0uZmxhZ3Mpe3F1YWRyYXRpY0N1cnZlVG8ocltpXS54LHJbaV0ueSxyW2krMV0ueCxyW2krMV0ueSk7aSsrfWVsc2UgcXVhZHJhdGljQ3VydmVUbyhyW2ldLngscltpXS55LChyW2ldLngrcltpKzFdLngpLzIsKHJbaV0ueStyW2krMV0ueSkvMik7aD1lKzF9fX1mdW5jdGlvbiBjb21waWxlQ2hhclN0cmluZyhlLHQsaSxhKXtmdW5jdGlvbiBtb3ZlVG8oZSxpKXt0LmFkZChFdCxbZSxpXSl9ZnVuY3Rpb24gbGluZVRvKGUsaSl7dC5hZGQodXQsW2UsaV0pfWZ1bmN0aW9uIGJlemllckN1cnZlVG8oZSxpLGEscixzLG4pe3QuYWRkKFF0LFtlLGksYSxyLHMsbl0pfWNvbnN0IHI9W107bGV0IHM9MCxuPTAsbz0wOyFmdW5jdGlvbiBwYXJzZShlKXtsZXQgZz0wO2Zvcig7ZzxlLmxlbmd0aDspe2xldCBjLEMsaCxsLFEsRSx1LGQsZixwPSExLG09ZVtnKytdO3N3aXRjaChtKXtjYXNlIDE6Y2FzZSAzOmNhc2UgMTg6Y2FzZSAyMzpvKz1yLmxlbmd0aD4+MTtwPSEwO2JyZWFrO2Nhc2UgNDpuKz1yLnBvcCgpO21vdmVUbyhzLG4pO3A9ITA7YnJlYWs7Y2FzZSA1OmZvcig7ci5sZW5ndGg+MDspe3MrPXIuc2hpZnQoKTtuKz1yLnNoaWZ0KCk7bGluZVRvKHMsbil9YnJlYWs7Y2FzZSA2OmZvcig7ci5sZW5ndGg+MDspe3MrPXIuc2hpZnQoKTtsaW5lVG8ocyxuKTtpZigwPT09ci5sZW5ndGgpYnJlYWs7bis9ci5zaGlmdCgpO2xpbmVUbyhzLG4pfWJyZWFrO2Nhc2UgNzpmb3IoO3IubGVuZ3RoPjA7KXtuKz1yLnNoaWZ0KCk7bGluZVRvKHMsbik7aWYoMD09PXIubGVuZ3RoKWJyZWFrO3MrPXIuc2hpZnQoKTtsaW5lVG8ocyxuKX1icmVhaztjYXNlIDg6Zm9yKDtyLmxlbmd0aD4wOyl7Yz1zK3Iuc2hpZnQoKTtoPW4rci5zaGlmdCgpO0M9YytyLnNoaWZ0KCk7bD1oK3Iuc2hpZnQoKTtzPUMrci5zaGlmdCgpO249bCtyLnNoaWZ0KCk7YmV6aWVyQ3VydmVUbyhjLGgsQyxsLHMsbil9YnJlYWs7Y2FzZSAxMDpkPXIucG9wKCk7Zj1udWxsO2lmKGkuaXNDRkZDSURGb250KXtjb25zdCBlPWkuZmRTZWxlY3QuZ2V0RkRJbmRleChhKTtpZihlPj0wJiZlPGkuZmRBcnJheS5sZW5ndGgpe2NvbnN0IHQ9aS5mZEFycmF5W2VdO2xldCBhO3QucHJpdmF0ZURpY3Q/LnN1YnJzSW5kZXgmJihhPXQucHJpdmF0ZURpY3Quc3VicnNJbmRleC5vYmplY3RzKTtpZihhKXtkKz1nZXRTdWJyb3V0aW5lQmlhcyhhKTtmPWFbZF19fWVsc2Ugd2FybigiSW52YWxpZCBmZCBpbmRleCBmb3IgZ2x5cGggaW5kZXguIil9ZWxzZSBmPWkuc3VicnNbZCtpLnN1YnJzQmlhc107ZiYmcGFyc2UoZik7YnJlYWs7Y2FzZSAxMTpyZXR1cm47Y2FzZSAxMjptPWVbZysrXTtzd2l0Y2gobSl7Y2FzZSAzNDpjPXMrci5zaGlmdCgpO0M9YytyLnNoaWZ0KCk7UT1uK3Iuc2hpZnQoKTtzPUMrci5zaGlmdCgpO2JlemllckN1cnZlVG8oYyxuLEMsUSxzLFEpO2M9cytyLnNoaWZ0KCk7Qz1jK3Iuc2hpZnQoKTtzPUMrci5zaGlmdCgpO2JlemllckN1cnZlVG8oYyxRLEMsbixzLG4pO2JyZWFrO2Nhc2UgMzU6Yz1zK3Iuc2hpZnQoKTtoPW4rci5zaGlmdCgpO0M9YytyLnNoaWZ0KCk7bD1oK3Iuc2hpZnQoKTtzPUMrci5zaGlmdCgpO249bCtyLnNoaWZ0KCk7YmV6aWVyQ3VydmVUbyhjLGgsQyxsLHMsbik7Yz1zK3Iuc2hpZnQoKTtoPW4rci5zaGlmdCgpO0M9YytyLnNoaWZ0KCk7bD1oK3Iuc2hpZnQoKTtzPUMrci5zaGlmdCgpO249bCtyLnNoaWZ0KCk7YmV6aWVyQ3VydmVUbyhjLGgsQyxsLHMsbik7ci5wb3AoKTticmVhaztjYXNlIDM2OmM9cytyLnNoaWZ0KCk7UT1uK3Iuc2hpZnQoKTtDPWMrci5zaGlmdCgpO0U9UStyLnNoaWZ0KCk7cz1DK3Iuc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKGMsUSxDLEUscyxFKTtjPXMrci5zaGlmdCgpO0M9YytyLnNoaWZ0KCk7dT1FK3Iuc2hpZnQoKTtzPUMrci5zaGlmdCgpO2JlemllckN1cnZlVG8oYyxFLEMsdSxzLG4pO2JyZWFrO2Nhc2UgMzc6Y29uc3QgZT1zLHQ9bjtjPXMrci5zaGlmdCgpO2g9bityLnNoaWZ0KCk7Qz1jK3Iuc2hpZnQoKTtsPWgrci5zaGlmdCgpO3M9QytyLnNoaWZ0KCk7bj1sK3Iuc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKGMsaCxDLGwscyxuKTtjPXMrci5zaGlmdCgpO2g9bityLnNoaWZ0KCk7Qz1jK3Iuc2hpZnQoKTtsPWgrci5zaGlmdCgpO3M9QztuPWw7TWF0aC5hYnMocy1lKT5NYXRoLmFicyhuLXQpP3MrPXIuc2hpZnQoKTpuKz1yLnNoaWZ0KCk7YmV6aWVyQ3VydmVUbyhjLGgsQyxsLHMsbik7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYHVua25vd24gb3BlcmF0b3I6IDEyICR7bX1gKX1icmVhaztjYXNlIDE0OmlmKHIubGVuZ3RoPj00KXtjb25zdCBlPXIucG9wKCksYT1yLnBvcCgpO249ci5wb3AoKTtzPXIucG9wKCk7dC5hZGQocHQpO3QuYWRkKHd0LFtzLG5dKTtsZXQgbz1sb29rdXBDbWFwKGkuY21hcCxTdHJpbmcuZnJvbUNoYXJDb2RlKGkuZ2x5cGhOYW1lTWFwW2JpW2VdXSkpO2NvbXBpbGVDaGFyU3RyaW5nKGkuZ2x5cGhzW28uZ2x5cGhJZF0sdCxpLG8uZ2x5cGhJZCk7dC5hZGQoZnQpO289bG9va3VwQ21hcChpLmNtYXAsU3RyaW5nLmZyb21DaGFyQ29kZShpLmdseXBoTmFtZU1hcFtiaVthXV0pKTtjb21waWxlQ2hhclN0cmluZyhpLmdseXBoc1tvLmdseXBoSWRdLHQsaSxvLmdseXBoSWQpfXJldHVybjtjYXNlIDE5OmNhc2UgMjA6bys9ci5sZW5ndGg+PjE7Zys9bys3Pj4zO3A9ITA7YnJlYWs7Y2FzZSAyMTpuKz1yLnBvcCgpO3MrPXIucG9wKCk7bW92ZVRvKHMsbik7cD0hMDticmVhaztjYXNlIDIyOnMrPXIucG9wKCk7bW92ZVRvKHMsbik7cD0hMDticmVhaztjYXNlIDI0OmZvcig7ci5sZW5ndGg+Mjspe2M9cytyLnNoaWZ0KCk7aD1uK3Iuc2hpZnQoKTtDPWMrci5zaGlmdCgpO2w9aCtyLnNoaWZ0KCk7cz1DK3Iuc2hpZnQoKTtuPWwrci5zaGlmdCgpO2JlemllckN1cnZlVG8oYyxoLEMsbCxzLG4pfXMrPXIuc2hpZnQoKTtuKz1yLnNoaWZ0KCk7bGluZVRvKHMsbik7YnJlYWs7Y2FzZSAyNTpmb3IoO3IubGVuZ3RoPjY7KXtzKz1yLnNoaWZ0KCk7bis9ci5zaGlmdCgpO2xpbmVUbyhzLG4pfWM9cytyLnNoaWZ0KCk7aD1uK3Iuc2hpZnQoKTtDPWMrci5zaGlmdCgpO2w9aCtyLnNoaWZ0KCk7cz1DK3Iuc2hpZnQoKTtuPWwrci5zaGlmdCgpO2JlemllckN1cnZlVG8oYyxoLEMsbCxzLG4pO2JyZWFrO2Nhc2UgMjY6ci5sZW5ndGglMiYmKHMrPXIuc2hpZnQoKSk7Zm9yKDtyLmxlbmd0aD4wOyl7Yz1zO2g9bityLnNoaWZ0KCk7Qz1jK3Iuc2hpZnQoKTtsPWgrci5zaGlmdCgpO3M9QztuPWwrci5zaGlmdCgpO2JlemllckN1cnZlVG8oYyxoLEMsbCxzLG4pfWJyZWFrO2Nhc2UgMjc6ci5sZW5ndGglMiYmKG4rPXIuc2hpZnQoKSk7Zm9yKDtyLmxlbmd0aD4wOyl7Yz1zK3Iuc2hpZnQoKTtoPW47Qz1jK3Iuc2hpZnQoKTtsPWgrci5zaGlmdCgpO3M9QytyLnNoaWZ0KCk7bj1sO2JlemllckN1cnZlVG8oYyxoLEMsbCxzLG4pfWJyZWFrO2Nhc2UgMjg6ci5wdXNoKChlW2ddPDwyNHxlW2crMV08PDE2KT4+MTYpO2crPTI7YnJlYWs7Y2FzZSAyOTpkPXIucG9wKCkraS5nc3VicnNCaWFzO2Y9aS5nc3VicnNbZF07ZiYmcGFyc2UoZik7YnJlYWs7Y2FzZSAzMDpmb3IoO3IubGVuZ3RoPjA7KXtjPXM7aD1uK3Iuc2hpZnQoKTtDPWMrci5zaGlmdCgpO2w9aCtyLnNoaWZ0KCk7cz1DK3Iuc2hpZnQoKTtuPWwrKDE9PT1yLmxlbmd0aD9yLnNoaWZ0KCk6MCk7YmV6aWVyQ3VydmVUbyhjLGgsQyxsLHMsbik7aWYoMD09PXIubGVuZ3RoKWJyZWFrO2M9cytyLnNoaWZ0KCk7aD1uO0M9YytyLnNoaWZ0KCk7bD1oK3Iuc2hpZnQoKTtuPWwrci5zaGlmdCgpO3M9QysoMT09PXIubGVuZ3RoP3Iuc2hpZnQoKTowKTtiZXppZXJDdXJ2ZVRvKGMsaCxDLGwscyxuKX1icmVhaztjYXNlIDMxOmZvcig7ci5sZW5ndGg+MDspe2M9cytyLnNoaWZ0KCk7aD1uO0M9YytyLnNoaWZ0KCk7bD1oK3Iuc2hpZnQoKTtuPWwrci5zaGlmdCgpO3M9QysoMT09PXIubGVuZ3RoP3Iuc2hpZnQoKTowKTtiZXppZXJDdXJ2ZVRvKGMsaCxDLGwscyxuKTtpZigwPT09ci5sZW5ndGgpYnJlYWs7Yz1zO2g9bityLnNoaWZ0KCk7Qz1jK3Iuc2hpZnQoKTtsPWgrci5zaGlmdCgpO3M9QytyLnNoaWZ0KCk7bj1sKygxPT09ci5sZW5ndGg/ci5zaGlmdCgpOjApO2JlemllckN1cnZlVG8oYyxoLEMsbCxzLG4pfWJyZWFrO2RlZmF1bHQ6aWYobTwzMil0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYHVua25vd24gb3BlcmF0b3I6ICR7bX1gKTtpZihtPDI0NylyLnB1c2gobS0xMzkpO2Vsc2UgaWYobTwyNTEpci5wdXNoKDI1NioobS0yNDcpK2VbZysrXSsxMDgpO2Vsc2UgaWYobTwyNTUpci5wdXNoKDI1NiotKG0tMjUxKS1lW2crK10tMTA4KTtlbHNle3IucHVzaCgoZVtnXTw8MjR8ZVtnKzFdPDwxNnxlW2crMl08PDh8ZVtnKzNdKS82NTUzNik7Zys9NH19cCYmKHIubGVuZ3RoPTApfX0oZSl9Y29uc3QgcmE9W107Y2xhc3MgQ29tbWFuZHN7Y21kcz1bXTthZGQoZSx0KXtpZih0KWlmKGlzTnVtYmVyQXJyYXkodCxudWxsKSl0aGlzLmNtZHMucHVzaChlLC4uLnQpO2Vsc2V7d2FybihgQ29tbWFuZHMuYWRkIC0gIiR7ZX0iIGhhcyBhdCBsZWFzdCBvbmUgbm9uLW51bWJlciBhcmc6ICIke3R9Ii5gKTtjb25zdCBpPXQubWFwKChlPT4ibnVtYmVyIj09dHlwZW9mIGU/ZTowKSk7dGhpcy5jbWRzLnB1c2goZSwuLi5pKX1lbHNlIHRoaXMuY21kcy5wdXNoKGUpfX1jbGFzcyBDb21waWxlZEZvbnR7Y29uc3RydWN0b3IoZSl7dGhpcy5mb250TWF0cml4PWU7dGhpcy5jb21waWxlZEdseXBocz1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXMuY29tcGlsZWRDaGFyQ29kZVRvR2x5cGhJZD1PYmplY3QuY3JlYXRlKG51bGwpfWdldFBhdGhKcyhlKXtjb25zdHtjaGFyQ29kZTp0LGdseXBoSWQ6aX09bG9va3VwQ21hcCh0aGlzLmNtYXAsZSk7bGV0IGEscj10aGlzLmNvbXBpbGVkR2x5cGhzW2ldO2lmKCFyKXt0cnl7cj10aGlzLmNvbXBpbGVHbHlwaCh0aGlzLmdseXBoc1tpXSxpKX1jYXRjaChlKXtyPXJhO2E9ZX10aGlzLmNvbXBpbGVkR2x5cGhzW2ldPXJ9dGhpcy5jb21waWxlZENoYXJDb2RlVG9HbHlwaElkW3RdPz89aTtpZihhKXRocm93IGE7cmV0dXJuIHJ9Y29tcGlsZUdseXBoKGUsdCl7aWYoIWV8fDA9PT1lLmxlbmd0aHx8MTQ9PT1lWzBdKXJldHVybiByYTtsZXQgaT10aGlzLmZvbnRNYXRyaXg7aWYodGhpcy5pc0NGRkNJREZvbnQpe2NvbnN0IGU9dGhpcy5mZFNlbGVjdC5nZXRGREluZGV4KHQpO2lmKGU+PTAmJmU8dGhpcy5mZEFycmF5Lmxlbmd0aCl7aT10aGlzLmZkQXJyYXlbZV0uZ2V0QnlOYW1lKCJGb250TWF0cml4Iil8fHJ9ZWxzZSB3YXJuKCJJbnZhbGlkIGZkIGluZGV4IGZvciBnbHlwaCBpbmRleC4iKX1jb25zdCBhPW5ldyBDb21tYW5kczthLmFkZChwdCk7YS5hZGQoeXQsaS5zbGljZSgpKTthLmFkZChtdCk7dGhpcy5jb21waWxlR2x5cGhJbXBsKGUsYSx0KTthLmFkZChmdCk7cmV0dXJuIGEuY21kc31jb21waWxlR2x5cGhJbXBsKCl7dW5yZWFjaGFibGUoIkNoaWxkcmVuIGNsYXNzZXMgc2hvdWxkIGltcGxlbWVudCB0aGlzLiIpfWhhc0J1aWx0UGF0aChlKXtjb25zdHtjaGFyQ29kZTp0LGdseXBoSWQ6aX09bG9va3VwQ21hcCh0aGlzLmNtYXAsZSk7cmV0dXJuIHZvaWQgMCE9PXRoaXMuY29tcGlsZWRHbHlwaHNbaV0mJnZvaWQgMCE9PXRoaXMuY29tcGlsZWRDaGFyQ29kZVRvR2x5cGhJZFt0XX19Y2xhc3MgVHJ1ZVR5cGVDb21waWxlZCBleHRlbmRzIENvbXBpbGVkRm9udHtjb25zdHJ1Y3RvcihlLHQsaSl7c3VwZXIoaXx8WzQ4OGUtNiwwLDAsNDg4ZS02LDAsMF0pO3RoaXMuZ2x5cGhzPWU7dGhpcy5jbWFwPXR9Y29tcGlsZUdseXBoSW1wbChlLHQpe2NvbXBpbGVHbHlmKGUsdCx0aGlzKX19Y2xhc3MgVHlwZTJDb21waWxlZCBleHRlbmRzIENvbXBpbGVkRm9udHtjb25zdHJ1Y3RvcihlLHQsaSxhKXtzdXBlcihpfHxbLjAwMSwwLDAsLjAwMSwwLDBdKTt0aGlzLmdseXBocz1lLmdseXBoczt0aGlzLmdzdWJycz1lLmdzdWJyc3x8W107dGhpcy5zdWJycz1lLnN1YnJzfHxbXTt0aGlzLmNtYXA9dDt0aGlzLmdseXBoTmFtZU1hcD1hfHxKaSgpO3RoaXMuZ3N1YnJzQmlhcz1nZXRTdWJyb3V0aW5lQmlhcyh0aGlzLmdzdWJycyk7dGhpcy5zdWJyc0JpYXM9Z2V0U3Vicm91dGluZUJpYXModGhpcy5zdWJycyk7dGhpcy5pc0NGRkNJREZvbnQ9ZS5pc0NGRkNJREZvbnQ7dGhpcy5mZFNlbGVjdD1lLmZkU2VsZWN0O3RoaXMuZmRBcnJheT1lLmZkQXJyYXl9Y29tcGlsZUdseXBoSW1wbChlLHQsaSl7Y29tcGlsZUNoYXJTdHJpbmcoZSx0LHRoaXMsaSl9fWNsYXNzIEZvbnRSZW5kZXJlckZhY3Rvcnl7c3RhdGljIGNyZWF0ZShlLHQpe2NvbnN0IGk9bmV3IFVpbnQ4QXJyYXkoZS5kYXRhKTtsZXQgYSxyLHMsbixvLGc7Y29uc3QgYz1nZXRVaW50MTYoaSw0KTtmb3IobGV0IGU9MCxDPTEyO2U8YztlKyssQys9MTYpe2NvbnN0IGU9Ynl0ZXNUb1N0cmluZyhpLnN1YmFycmF5KEMsQys0KSksYz1nZXRVaW50MzIoaSxDKzgpLGg9Z2V0VWludDMyKGksQysxMik7c3dpdGNoKGUpe2Nhc2UiY21hcCI6YT1wYXJzZUNtYXAoaSxjKTticmVhaztjYXNlImdseWYiOnI9aS5zdWJhcnJheShjLGMraCk7YnJlYWs7Y2FzZSJsb2NhIjpzPWkuc3ViYXJyYXkoYyxjK2gpO2JyZWFrO2Nhc2UiaGVhZCI6Zz1nZXRVaW50MTYoaSxjKzE4KTtvPWdldFVpbnQxNihpLGMrNTApO2JyZWFrO2Nhc2UiQ0ZGICI6bj1wYXJzZUNmZihpLGMsYytoLHQpfX1pZihyKXtjb25zdCB0PWc/WzEvZywwLDAsMS9nLDAsMF06ZS5mb250TWF0cml4O3JldHVybiBuZXcgVHJ1ZVR5cGVDb21waWxlZChmdW5jdGlvbiBwYXJzZUdseWZUYWJsZShlLHQsaSl7bGV0IGEscjtpZihpKXthPTQ7cj1nZXRVaW50MzJ9ZWxzZXthPTI7cj0oZSx0KT0+MipnZXRVaW50MTYoZSx0KX1jb25zdCBzPVtdO2xldCBuPXIodCwwKTtmb3IobGV0IGk9YTtpPHQubGVuZ3RoO2krPWEpe2NvbnN0IGE9cih0LGkpO3MucHVzaChlLnN1YmFycmF5KG4sYSkpO249YX1yZXR1cm4gc30ocixzLG8pLGEsdCl9cmV0dXJuIG5ldyBUeXBlMkNvbXBpbGVkKG4sYSxlLmZvbnRNYXRyaXgsZS5nbHlwaE5hbWVNYXApfX1jb25zdCBzYT1nZXRMb29rdXBUYWJsZUZhY3RvcnkoKGZ1bmN0aW9uKGUpe2UuQ291cmllcj02MDA7ZVsiQ291cmllci1Cb2xkIl09NjAwO2VbIkNvdXJpZXItQm9sZE9ibGlxdWUiXT02MDA7ZVsiQ291cmllci1PYmxpcXVlIl09NjAwO2UuSGVsdmV0aWNhPWdldExvb2t1cFRhYmxlRmFjdG9yeSgoZnVuY3Rpb24oZSl7ZS5zcGFjZT0yNzg7ZS5leGNsYW09Mjc4O2UucXVvdGVkYmw9MzU1O2UubnVtYmVyc2lnbj01NTY7ZS5kb2xsYXI9NTU2O2UucGVyY2VudD04ODk7ZS5hbXBlcnNhbmQ9NjY3O2UucXVvdGVyaWdodD0yMjI7ZS5wYXJlbmxlZnQ9MzMzO2UucGFyZW5yaWdodD0zMzM7ZS5hc3Rlcmlzaz0zODk7ZS5wbHVzPTU4NDtlLmNvbW1hPTI3ODtlLmh5cGhlbj0zMzM7ZS5wZXJpb2Q9Mjc4O2Uuc2xhc2g9Mjc4O2UuemVybz01NTY7ZS5vbmU9NTU2O2UudHdvPTU1NjtlLnRocmVlPTU1NjtlLmZvdXI9NTU2O2UuZml2ZT01NTY7ZS5zaXg9NTU2O2Uuc2V2ZW49NTU2O2UuZWlnaHQ9NTU2O2UubmluZT01NTY7ZS5jb2xvbj0yNzg7ZS5zZW1pY29sb249Mjc4O2UubGVzcz01ODQ7ZS5lcXVhbD01ODQ7ZS5ncmVhdGVyPTU4NDtlLnF1ZXN0aW9uPTU1NjtlLmF0PTEwMTU7ZS5BPTY2NztlLkI9NjY3O2UuQz03MjI7ZS5EPTcyMjtlLkU9NjY3O2UuRj02MTE7ZS5HPTc3ODtlLkg9NzIyO2UuST0yNzg7ZS5KPTUwMDtlLks9NjY3O2UuTD01NTY7ZS5NPTgzMztlLk49NzIyO2UuTz03Nzg7ZS5QPTY2NztlLlE9Nzc4O2UuUj03MjI7ZS5TPTY2NztlLlQ9NjExO2UuVT03MjI7ZS5WPTY2NztlLlc9OTQ0O2UuWD02Njc7ZS5ZPTY2NztlLlo9NjExO2UuYnJhY2tldGxlZnQ9Mjc4O2UuYmFja3NsYXNoPTI3ODtlLmJyYWNrZXRyaWdodD0yNzg7ZS5hc2NpaWNpcmN1bT00Njk7ZS51bmRlcnNjb3JlPTU1NjtlLnF1b3RlbGVmdD0yMjI7ZS5hPTU1NjtlLmI9NTU2O2UuYz01MDA7ZS5kPTU1NjtlLmU9NTU2O2UuZj0yNzg7ZS5nPTU1NjtlLmg9NTU2O2UuaT0yMjI7ZS5qPTIyMjtlLms9NTAwO2UubD0yMjI7ZS5tPTgzMztlLm49NTU2O2Uubz01NTY7ZS5wPTU1NjtlLnE9NTU2O2Uucj0zMzM7ZS5zPTUwMDtlLnQ9Mjc4O2UudT01NTY7ZS52PTUwMDtlLnc9NzIyO2UueD01MDA7ZS55PTUwMDtlLno9NTAwO2UuYnJhY2VsZWZ0PTMzNDtlLmJhcj0yNjA7ZS5icmFjZXJpZ2h0PTMzNDtlLmFzY2lpdGlsZGU9NTg0O2UuZXhjbGFtZG93bj0zMzM7ZS5jZW50PTU1NjtlLnN0ZXJsaW5nPTU1NjtlLmZyYWN0aW9uPTE2NztlLnllbj01NTY7ZS5mbG9yaW49NTU2O2Uuc2VjdGlvbj01NTY7ZS5jdXJyZW5jeT01NTY7ZS5xdW90ZXNpbmdsZT0xOTE7ZS5xdW90ZWRibGxlZnQ9MzMzO2UuZ3VpbGxlbW90bGVmdD01NTY7ZS5ndWlsc2luZ2xsZWZ0PTMzMztlLmd1aWxzaW5nbHJpZ2h0PTMzMztlLmZpPTUwMDtlLmZsPTUwMDtlLmVuZGFzaD01NTY7ZS5kYWdnZXI9NTU2O2UuZGFnZ2VyZGJsPTU1NjtlLnBlcmlvZGNlbnRlcmVkPTI3ODtlLnBhcmFncmFwaD01Mzc7ZS5idWxsZXQ9MzUwO2UucXVvdGVzaW5nbGJhc2U9MjIyO2UucXVvdGVkYmxiYXNlPTMzMztlLnF1b3RlZGJscmlnaHQ9MzMzO2UuZ3VpbGxlbW90cmlnaHQ9NTU2O2UuZWxsaXBzaXM9MWUzO2UucGVydGhvdXNhbmQ9MWUzO2UucXVlc3Rpb25kb3duPTYxMTtlLmdyYXZlPTMzMztlLmFjdXRlPTMzMztlLmNpcmN1bWZsZXg9MzMzO2UudGlsZGU9MzMzO2UubWFjcm9uPTMzMztlLmJyZXZlPTMzMztlLmRvdGFjY2VudD0zMzM7ZS5kaWVyZXNpcz0zMzM7ZS5yaW5nPTMzMztlLmNlZGlsbGE9MzMzO2UuaHVuZ2FydW1sYXV0PTMzMztlLm9nb25laz0zMzM7ZS5jYXJvbj0zMzM7ZS5lbWRhc2g9MWUzO2UuQUU9MWUzO2Uub3JkZmVtaW5pbmU9MzcwO2UuTHNsYXNoPTU1NjtlLk9zbGFzaD03Nzg7ZS5PRT0xZTM7ZS5vcmRtYXNjdWxpbmU9MzY1O2UuYWU9ODg5O2UuZG90bGVzc2k9Mjc4O2UubHNsYXNoPTIyMjtlLm9zbGFzaD02MTE7ZS5vZT05NDQ7ZS5nZXJtYW5kYmxzPTYxMTtlLklkaWVyZXNpcz0yNzg7ZS5lYWN1dGU9NTU2O2UuYWJyZXZlPTU1NjtlLnVodW5nYXJ1bWxhdXQ9NTU2O2UuZWNhcm9uPTU1NjtlLllkaWVyZXNpcz02Njc7ZS5kaXZpZGU9NTg0O2UuWWFjdXRlPTY2NztlLkFjaXJjdW1mbGV4PTY2NztlLmFhY3V0ZT01NTY7ZS5VY2lyY3VtZmxleD03MjI7ZS55YWN1dGU9NTAwO2Uuc2NvbW1hYWNjZW50PTUwMDtlLmVjaXJjdW1mbGV4PTU1NjtlLlVyaW5nPTcyMjtlLlVkaWVyZXNpcz03MjI7ZS5hb2dvbmVrPTU1NjtlLlVhY3V0ZT03MjI7ZS51b2dvbmVrPTU1NjtlLkVkaWVyZXNpcz02Njc7ZS5EY3JvYXQ9NzIyO2UuY29tbWFhY2NlbnQ9MjUwO2UuY29weXJpZ2h0PTczNztlLkVtYWNyb249NjY3O2UuY2Nhcm9uPTUwMDtlLmFyaW5nPTU1NjtlLk5jb21tYWFjY2VudD03MjI7ZS5sYWN1dGU9MjIyO2UuYWdyYXZlPTU1NjtlLlRjb21tYWFjY2VudD02MTE7ZS5DYWN1dGU9NzIyO2UuYXRpbGRlPTU1NjtlLkVkb3RhY2NlbnQ9NjY3O2Uuc2Nhcm9uPTUwMDtlLnNjZWRpbGxhPTUwMDtlLmlhY3V0ZT0yNzg7ZS5sb3plbmdlPTQ3MTtlLlJjYXJvbj03MjI7ZS5HY29tbWFhY2NlbnQ9Nzc4O2UudWNpcmN1bWZsZXg9NTU2O2UuYWNpcmN1bWZsZXg9NTU2O2UuQW1hY3Jvbj02Njc7ZS5yY2Fyb249MzMzO2UuY2NlZGlsbGE9NTAwO2UuWmRvdGFjY2VudD02MTE7ZS5UaG9ybj02Njc7ZS5PbWFjcm9uPTc3ODtlLlJhY3V0ZT03MjI7ZS5TYWN1dGU9NjY3O2UuZGNhcm9uPTY0MztlLlVtYWNyb249NzIyO2UudXJpbmc9NTU2O2UudGhyZWVzdXBlcmlvcj0zMzM7ZS5PZ3JhdmU9Nzc4O2UuQWdyYXZlPTY2NztlLkFicmV2ZT02Njc7ZS5tdWx0aXBseT01ODQ7ZS51YWN1dGU9NTU2O2UuVGNhcm9uPTYxMTtlLnBhcnRpYWxkaWZmPTQ3NjtlLnlkaWVyZXNpcz01MDA7ZS5OYWN1dGU9NzIyO2UuaWNpcmN1bWZsZXg9Mjc4O2UuRWNpcmN1bWZsZXg9NjY3O2UuYWRpZXJlc2lzPTU1NjtlLmVkaWVyZXNpcz01NTY7ZS5jYWN1dGU9NTAwO2UubmFjdXRlPTU1NjtlLnVtYWNyb249NTU2O2UuTmNhcm9uPTcyMjtlLklhY3V0ZT0yNzg7ZS5wbHVzbWludXM9NTg0O2UuYnJva2VuYmFyPTI2MDtlLnJlZ2lzdGVyZWQ9NzM3O2UuR2JyZXZlPTc3ODtlLklkb3RhY2NlbnQ9Mjc4O2Uuc3VtbWF0aW9uPTYwMDtlLkVncmF2ZT02Njc7ZS5yYWN1dGU9MzMzO2Uub21hY3Jvbj01NTY7ZS5aYWN1dGU9NjExO2UuWmNhcm9uPTYxMTtlLmdyZWF0ZXJlcXVhbD01NDk7ZS5FdGg9NzIyO2UuQ2NlZGlsbGE9NzIyO2UubGNvbW1hYWNjZW50PTIyMjtlLnRjYXJvbj0zMTc7ZS5lb2dvbmVrPTU1NjtlLlVvZ29uZWs9NzIyO2UuQWFjdXRlPTY2NztlLkFkaWVyZXNpcz02Njc7ZS5lZ3JhdmU9NTU2O2UuemFjdXRlPTUwMDtlLmlvZ29uZWs9MjIyO2UuT2FjdXRlPTc3ODtlLm9hY3V0ZT01NTY7ZS5hbWFjcm9uPTU1NjtlLnNhY3V0ZT01MDA7ZS5pZGllcmVzaXM9Mjc4O2UuT2NpcmN1bWZsZXg9Nzc4O2UuVWdyYXZlPTcyMjtlLkRlbHRhPTYxMjtlLnRob3JuPTU1NjtlLnR3b3N1cGVyaW9yPTMzMztlLk9kaWVyZXNpcz03Nzg7ZS5tdT01NTY7ZS5pZ3JhdmU9Mjc4O2Uub2h1bmdhcnVtbGF1dD01NTY7ZS5Fb2dvbmVrPTY2NztlLmRjcm9hdD01NTY7ZS50aHJlZXF1YXJ0ZXJzPTgzNDtlLlNjZWRpbGxhPTY2NztlLmxjYXJvbj0yOTk7ZS5LY29tbWFhY2NlbnQ9NjY3O2UuTGFjdXRlPTU1NjtlLnRyYWRlbWFyaz0xZTM7ZS5lZG90YWNjZW50PTU1NjtlLklncmF2ZT0yNzg7ZS5JbWFjcm9uPTI3ODtlLkxjYXJvbj01NTY7ZS5vbmVoYWxmPTgzNDtlLmxlc3NlcXVhbD01NDk7ZS5vY2lyY3VtZmxleD01NTY7ZS5udGlsZGU9NTU2O2UuVWh1bmdhcnVtbGF1dD03MjI7ZS5FYWN1dGU9NjY3O2UuZW1hY3Jvbj01NTY7ZS5nYnJldmU9NTU2O2Uub25lcXVhcnRlcj04MzQ7ZS5TY2Fyb249NjY3O2UuU2NvbW1hYWNjZW50PTY2NztlLk9odW5nYXJ1bWxhdXQ9Nzc4O2UuZGVncmVlPTQwMDtlLm9ncmF2ZT01NTY7ZS5DY2Fyb249NzIyO2UudWdyYXZlPTU1NjtlLnJhZGljYWw9NDUzO2UuRGNhcm9uPTcyMjtlLnJjb21tYWFjY2VudD0zMzM7ZS5OdGlsZGU9NzIyO2Uub3RpbGRlPTU1NjtlLlJjb21tYWFjY2VudD03MjI7ZS5MY29tbWFhY2NlbnQ9NTU2O2UuQXRpbGRlPTY2NztlLkFvZ29uZWs9NjY3O2UuQXJpbmc9NjY3O2UuT3RpbGRlPTc3ODtlLnpkb3RhY2NlbnQ9NTAwO2UuRWNhcm9uPTY2NztlLklvZ29uZWs9Mjc4O2Uua2NvbW1hYWNjZW50PTUwMDtlLm1pbnVzPTU4NDtlLkljaXJjdW1mbGV4PTI3ODtlLm5jYXJvbj01NTY7ZS50Y29tbWFhY2NlbnQ9Mjc4O2UubG9naWNhbG5vdD01ODQ7ZS5vZGllcmVzaXM9NTU2O2UudWRpZXJlc2lzPTU1NjtlLm5vdGVxdWFsPTU0OTtlLmdjb21tYWFjY2VudD01NTY7ZS5ldGg9NTU2O2UuemNhcm9uPTUwMDtlLm5jb21tYWFjY2VudD01NTY7ZS5vbmVzdXBlcmlvcj0zMzM7ZS5pbWFjcm9uPTI3ODtlLkV1cm89NTU2fSkpO2VbIkhlbHZldGljYS1Cb2xkIl09Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlLnNwYWNlPTI3ODtlLmV4Y2xhbT0zMzM7ZS5xdW90ZWRibD00NzQ7ZS5udW1iZXJzaWduPTU1NjtlLmRvbGxhcj01NTY7ZS5wZXJjZW50PTg4OTtlLmFtcGVyc2FuZD03MjI7ZS5xdW90ZXJpZ2h0PTI3ODtlLnBhcmVubGVmdD0zMzM7ZS5wYXJlbnJpZ2h0PTMzMztlLmFzdGVyaXNrPTM4OTtlLnBsdXM9NTg0O2UuY29tbWE9Mjc4O2UuaHlwaGVuPTMzMztlLnBlcmlvZD0yNzg7ZS5zbGFzaD0yNzg7ZS56ZXJvPTU1NjtlLm9uZT01NTY7ZS50d289NTU2O2UudGhyZWU9NTU2O2UuZm91cj01NTY7ZS5maXZlPTU1NjtlLnNpeD01NTY7ZS5zZXZlbj01NTY7ZS5laWdodD01NTY7ZS5uaW5lPTU1NjtlLmNvbG9uPTMzMztlLnNlbWljb2xvbj0zMzM7ZS5sZXNzPTU4NDtlLmVxdWFsPTU4NDtlLmdyZWF0ZXI9NTg0O2UucXVlc3Rpb249NjExO2UuYXQ9OTc1O2UuQT03MjI7ZS5CPTcyMjtlLkM9NzIyO2UuRD03MjI7ZS5FPTY2NztlLkY9NjExO2UuRz03Nzg7ZS5IPTcyMjtlLkk9Mjc4O2UuSj01NTY7ZS5LPTcyMjtlLkw9NjExO2UuTT04MzM7ZS5OPTcyMjtlLk89Nzc4O2UuUD02Njc7ZS5RPTc3ODtlLlI9NzIyO2UuUz02Njc7ZS5UPTYxMTtlLlU9NzIyO2UuVj02Njc7ZS5XPTk0NDtlLlg9NjY3O2UuWT02Njc7ZS5aPTYxMTtlLmJyYWNrZXRsZWZ0PTMzMztlLmJhY2tzbGFzaD0yNzg7ZS5icmFja2V0cmlnaHQ9MzMzO2UuYXNjaWljaXJjdW09NTg0O2UudW5kZXJzY29yZT01NTY7ZS5xdW90ZWxlZnQ9Mjc4O2UuYT01NTY7ZS5iPTYxMTtlLmM9NTU2O2UuZD02MTE7ZS5lPTU1NjtlLmY9MzMzO2UuZz02MTE7ZS5oPTYxMTtlLmk9Mjc4O2Uuaj0yNzg7ZS5rPTU1NjtlLmw9Mjc4O2UubT04ODk7ZS5uPTYxMTtlLm89NjExO2UucD02MTE7ZS5xPTYxMTtlLnI9Mzg5O2Uucz01NTY7ZS50PTMzMztlLnU9NjExO2Uudj01NTY7ZS53PTc3ODtlLng9NTU2O2UueT01NTY7ZS56PTUwMDtlLmJyYWNlbGVmdD0zODk7ZS5iYXI9MjgwO2UuYnJhY2VyaWdodD0zODk7ZS5hc2NpaXRpbGRlPTU4NDtlLmV4Y2xhbWRvd249MzMzO2UuY2VudD01NTY7ZS5zdGVybGluZz01NTY7ZS5mcmFjdGlvbj0xNjc7ZS55ZW49NTU2O2UuZmxvcmluPTU1NjtlLnNlY3Rpb249NTU2O2UuY3VycmVuY3k9NTU2O2UucXVvdGVzaW5nbGU9MjM4O2UucXVvdGVkYmxsZWZ0PTUwMDtlLmd1aWxsZW1vdGxlZnQ9NTU2O2UuZ3VpbHNpbmdsbGVmdD0zMzM7ZS5ndWlsc2luZ2xyaWdodD0zMzM7ZS5maT02MTE7ZS5mbD02MTE7ZS5lbmRhc2g9NTU2O2UuZGFnZ2VyPTU1NjtlLmRhZ2dlcmRibD01NTY7ZS5wZXJpb2RjZW50ZXJlZD0yNzg7ZS5wYXJhZ3JhcGg9NTU2O2UuYnVsbGV0PTM1MDtlLnF1b3Rlc2luZ2xiYXNlPTI3ODtlLnF1b3RlZGJsYmFzZT01MDA7ZS5xdW90ZWRibHJpZ2h0PTUwMDtlLmd1aWxsZW1vdHJpZ2h0PTU1NjtlLmVsbGlwc2lzPTFlMztlLnBlcnRob3VzYW5kPTFlMztlLnF1ZXN0aW9uZG93bj02MTE7ZS5ncmF2ZT0zMzM7ZS5hY3V0ZT0zMzM7ZS5jaXJjdW1mbGV4PTMzMztlLnRpbGRlPTMzMztlLm1hY3Jvbj0zMzM7ZS5icmV2ZT0zMzM7ZS5kb3RhY2NlbnQ9MzMzO2UuZGllcmVzaXM9MzMzO2UucmluZz0zMzM7ZS5jZWRpbGxhPTMzMztlLmh1bmdhcnVtbGF1dD0zMzM7ZS5vZ29uZWs9MzMzO2UuY2Fyb249MzMzO2UuZW1kYXNoPTFlMztlLkFFPTFlMztlLm9yZGZlbWluaW5lPTM3MDtlLkxzbGFzaD02MTE7ZS5Pc2xhc2g9Nzc4O2UuT0U9MWUzO2Uub3JkbWFzY3VsaW5lPTM2NTtlLmFlPTg4OTtlLmRvdGxlc3NpPTI3ODtlLmxzbGFzaD0yNzg7ZS5vc2xhc2g9NjExO2Uub2U9OTQ0O2UuZ2VybWFuZGJscz02MTE7ZS5JZGllcmVzaXM9Mjc4O2UuZWFjdXRlPTU1NjtlLmFicmV2ZT01NTY7ZS51aHVuZ2FydW1sYXV0PTYxMTtlLmVjYXJvbj01NTY7ZS5ZZGllcmVzaXM9NjY3O2UuZGl2aWRlPTU4NDtlLllhY3V0ZT02Njc7ZS5BY2lyY3VtZmxleD03MjI7ZS5hYWN1dGU9NTU2O2UuVWNpcmN1bWZsZXg9NzIyO2UueWFjdXRlPTU1NjtlLnNjb21tYWFjY2VudD01NTY7ZS5lY2lyY3VtZmxleD01NTY7ZS5VcmluZz03MjI7ZS5VZGllcmVzaXM9NzIyO2UuYW9nb25laz01NTY7ZS5VYWN1dGU9NzIyO2UudW9nb25laz02MTE7ZS5FZGllcmVzaXM9NjY3O2UuRGNyb2F0PTcyMjtlLmNvbW1hYWNjZW50PTI1MDtlLmNvcHlyaWdodD03Mzc7ZS5FbWFjcm9uPTY2NztlLmNjYXJvbj01NTY7ZS5hcmluZz01NTY7ZS5OY29tbWFhY2NlbnQ9NzIyO2UubGFjdXRlPTI3ODtlLmFncmF2ZT01NTY7ZS5UY29tbWFhY2NlbnQ9NjExO2UuQ2FjdXRlPTcyMjtlLmF0aWxkZT01NTY7ZS5FZG90YWNjZW50PTY2NztlLnNjYXJvbj01NTY7ZS5zY2VkaWxsYT01NTY7ZS5pYWN1dGU9Mjc4O2UubG96ZW5nZT00OTQ7ZS5SY2Fyb249NzIyO2UuR2NvbW1hYWNjZW50PTc3ODtlLnVjaXJjdW1mbGV4PTYxMTtlLmFjaXJjdW1mbGV4PTU1NjtlLkFtYWNyb249NzIyO2UucmNhcm9uPTM4OTtlLmNjZWRpbGxhPTU1NjtlLlpkb3RhY2NlbnQ9NjExO2UuVGhvcm49NjY3O2UuT21hY3Jvbj03Nzg7ZS5SYWN1dGU9NzIyO2UuU2FjdXRlPTY2NztlLmRjYXJvbj03NDM7ZS5VbWFjcm9uPTcyMjtlLnVyaW5nPTYxMTtlLnRocmVlc3VwZXJpb3I9MzMzO2UuT2dyYXZlPTc3ODtlLkFncmF2ZT03MjI7ZS5BYnJldmU9NzIyO2UubXVsdGlwbHk9NTg0O2UudWFjdXRlPTYxMTtlLlRjYXJvbj02MTE7ZS5wYXJ0aWFsZGlmZj00OTQ7ZS55ZGllcmVzaXM9NTU2O2UuTmFjdXRlPTcyMjtlLmljaXJjdW1mbGV4PTI3ODtlLkVjaXJjdW1mbGV4PTY2NztlLmFkaWVyZXNpcz01NTY7ZS5lZGllcmVzaXM9NTU2O2UuY2FjdXRlPTU1NjtlLm5hY3V0ZT02MTE7ZS51bWFjcm9uPTYxMTtlLk5jYXJvbj03MjI7ZS5JYWN1dGU9Mjc4O2UucGx1c21pbnVzPTU4NDtlLmJyb2tlbmJhcj0yODA7ZS5yZWdpc3RlcmVkPTczNztlLkdicmV2ZT03Nzg7ZS5JZG90YWNjZW50PTI3ODtlLnN1bW1hdGlvbj02MDA7ZS5FZ3JhdmU9NjY3O2UucmFjdXRlPTM4OTtlLm9tYWNyb249NjExO2UuWmFjdXRlPTYxMTtlLlpjYXJvbj02MTE7ZS5ncmVhdGVyZXF1YWw9NTQ5O2UuRXRoPTcyMjtlLkNjZWRpbGxhPTcyMjtlLmxjb21tYWFjY2VudD0yNzg7ZS50Y2Fyb249Mzg5O2UuZW9nb25laz01NTY7ZS5Vb2dvbmVrPTcyMjtlLkFhY3V0ZT03MjI7ZS5BZGllcmVzaXM9NzIyO2UuZWdyYXZlPTU1NjtlLnphY3V0ZT01MDA7ZS5pb2dvbmVrPTI3ODtlLk9hY3V0ZT03Nzg7ZS5vYWN1dGU9NjExO2UuYW1hY3Jvbj01NTY7ZS5zYWN1dGU9NTU2O2UuaWRpZXJlc2lzPTI3ODtlLk9jaXJjdW1mbGV4PTc3ODtlLlVncmF2ZT03MjI7ZS5EZWx0YT02MTI7ZS50aG9ybj02MTE7ZS50d29zdXBlcmlvcj0zMzM7ZS5PZGllcmVzaXM9Nzc4O2UubXU9NjExO2UuaWdyYXZlPTI3ODtlLm9odW5nYXJ1bWxhdXQ9NjExO2UuRW9nb25laz02Njc7ZS5kY3JvYXQ9NjExO2UudGhyZWVxdWFydGVycz04MzQ7ZS5TY2VkaWxsYT02Njc7ZS5sY2Fyb249NDAwO2UuS2NvbW1hYWNjZW50PTcyMjtlLkxhY3V0ZT02MTE7ZS50cmFkZW1hcms9MWUzO2UuZWRvdGFjY2VudD01NTY7ZS5JZ3JhdmU9Mjc4O2UuSW1hY3Jvbj0yNzg7ZS5MY2Fyb249NjExO2Uub25laGFsZj04MzQ7ZS5sZXNzZXF1YWw9NTQ5O2Uub2NpcmN1bWZsZXg9NjExO2UubnRpbGRlPTYxMTtlLlVodW5nYXJ1bWxhdXQ9NzIyO2UuRWFjdXRlPTY2NztlLmVtYWNyb249NTU2O2UuZ2JyZXZlPTYxMTtlLm9uZXF1YXJ0ZXI9ODM0O2UuU2Nhcm9uPTY2NztlLlNjb21tYWFjY2VudD02Njc7ZS5PaHVuZ2FydW1sYXV0PTc3ODtlLmRlZ3JlZT00MDA7ZS5vZ3JhdmU9NjExO2UuQ2Nhcm9uPTcyMjtlLnVncmF2ZT02MTE7ZS5yYWRpY2FsPTU0OTtlLkRjYXJvbj03MjI7ZS5yY29tbWFhY2NlbnQ9Mzg5O2UuTnRpbGRlPTcyMjtlLm90aWxkZT02MTE7ZS5SY29tbWFhY2NlbnQ9NzIyO2UuTGNvbW1hYWNjZW50PTYxMTtlLkF0aWxkZT03MjI7ZS5Bb2dvbmVrPTcyMjtlLkFyaW5nPTcyMjtlLk90aWxkZT03Nzg7ZS56ZG90YWNjZW50PTUwMDtlLkVjYXJvbj02Njc7ZS5Jb2dvbmVrPTI3ODtlLmtjb21tYWFjY2VudD01NTY7ZS5taW51cz01ODQ7ZS5JY2lyY3VtZmxleD0yNzg7ZS5uY2Fyb249NjExO2UudGNvbW1hYWNjZW50PTMzMztlLmxvZ2ljYWxub3Q9NTg0O2Uub2RpZXJlc2lzPTYxMTtlLnVkaWVyZXNpcz02MTE7ZS5ub3RlcXVhbD01NDk7ZS5nY29tbWFhY2NlbnQ9NjExO2UuZXRoPTYxMTtlLnpjYXJvbj01MDA7ZS5uY29tbWFhY2NlbnQ9NjExO2Uub25lc3VwZXJpb3I9MzMzO2UuaW1hY3Jvbj0yNzg7ZS5FdXJvPTU1Nn0pKTtlWyJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiXT1nZXRMb29rdXBUYWJsZUZhY3RvcnkoKGZ1bmN0aW9uKGUpe2Uuc3BhY2U9Mjc4O2UuZXhjbGFtPTMzMztlLnF1b3RlZGJsPTQ3NDtlLm51bWJlcnNpZ249NTU2O2UuZG9sbGFyPTU1NjtlLnBlcmNlbnQ9ODg5O2UuYW1wZXJzYW5kPTcyMjtlLnF1b3RlcmlnaHQ9Mjc4O2UucGFyZW5sZWZ0PTMzMztlLnBhcmVucmlnaHQ9MzMzO2UuYXN0ZXJpc2s9Mzg5O2UucGx1cz01ODQ7ZS5jb21tYT0yNzg7ZS5oeXBoZW49MzMzO2UucGVyaW9kPTI3ODtlLnNsYXNoPTI3ODtlLnplcm89NTU2O2Uub25lPTU1NjtlLnR3bz01NTY7ZS50aHJlZT01NTY7ZS5mb3VyPTU1NjtlLmZpdmU9NTU2O2Uuc2l4PTU1NjtlLnNldmVuPTU1NjtlLmVpZ2h0PTU1NjtlLm5pbmU9NTU2O2UuY29sb249MzMzO2Uuc2VtaWNvbG9uPTMzMztlLmxlc3M9NTg0O2UuZXF1YWw9NTg0O2UuZ3JlYXRlcj01ODQ7ZS5xdWVzdGlvbj02MTE7ZS5hdD05NzU7ZS5BPTcyMjtlLkI9NzIyO2UuQz03MjI7ZS5EPTcyMjtlLkU9NjY3O2UuRj02MTE7ZS5HPTc3ODtlLkg9NzIyO2UuST0yNzg7ZS5KPTU1NjtlLks9NzIyO2UuTD02MTE7ZS5NPTgzMztlLk49NzIyO2UuTz03Nzg7ZS5QPTY2NztlLlE9Nzc4O2UuUj03MjI7ZS5TPTY2NztlLlQ9NjExO2UuVT03MjI7ZS5WPTY2NztlLlc9OTQ0O2UuWD02Njc7ZS5ZPTY2NztlLlo9NjExO2UuYnJhY2tldGxlZnQ9MzMzO2UuYmFja3NsYXNoPTI3ODtlLmJyYWNrZXRyaWdodD0zMzM7ZS5hc2NpaWNpcmN1bT01ODQ7ZS51bmRlcnNjb3JlPTU1NjtlLnF1b3RlbGVmdD0yNzg7ZS5hPTU1NjtlLmI9NjExO2UuYz01NTY7ZS5kPTYxMTtlLmU9NTU2O2UuZj0zMzM7ZS5nPTYxMTtlLmg9NjExO2UuaT0yNzg7ZS5qPTI3ODtlLms9NTU2O2UubD0yNzg7ZS5tPTg4OTtlLm49NjExO2Uubz02MTE7ZS5wPTYxMTtlLnE9NjExO2Uucj0zODk7ZS5zPTU1NjtlLnQ9MzMzO2UudT02MTE7ZS52PTU1NjtlLnc9Nzc4O2UueD01NTY7ZS55PTU1NjtlLno9NTAwO2UuYnJhY2VsZWZ0PTM4OTtlLmJhcj0yODA7ZS5icmFjZXJpZ2h0PTM4OTtlLmFzY2lpdGlsZGU9NTg0O2UuZXhjbGFtZG93bj0zMzM7ZS5jZW50PTU1NjtlLnN0ZXJsaW5nPTU1NjtlLmZyYWN0aW9uPTE2NztlLnllbj01NTY7ZS5mbG9yaW49NTU2O2Uuc2VjdGlvbj01NTY7ZS5jdXJyZW5jeT01NTY7ZS5xdW90ZXNpbmdsZT0yMzg7ZS5xdW90ZWRibGxlZnQ9NTAwO2UuZ3VpbGxlbW90bGVmdD01NTY7ZS5ndWlsc2luZ2xsZWZ0PTMzMztlLmd1aWxzaW5nbHJpZ2h0PTMzMztlLmZpPTYxMTtlLmZsPTYxMTtlLmVuZGFzaD01NTY7ZS5kYWdnZXI9NTU2O2UuZGFnZ2VyZGJsPTU1NjtlLnBlcmlvZGNlbnRlcmVkPTI3ODtlLnBhcmFncmFwaD01NTY7ZS5idWxsZXQ9MzUwO2UucXVvdGVzaW5nbGJhc2U9Mjc4O2UucXVvdGVkYmxiYXNlPTUwMDtlLnF1b3RlZGJscmlnaHQ9NTAwO2UuZ3VpbGxlbW90cmlnaHQ9NTU2O2UuZWxsaXBzaXM9MWUzO2UucGVydGhvdXNhbmQ9MWUzO2UucXVlc3Rpb25kb3duPTYxMTtlLmdyYXZlPTMzMztlLmFjdXRlPTMzMztlLmNpcmN1bWZsZXg9MzMzO2UudGlsZGU9MzMzO2UubWFjcm9uPTMzMztlLmJyZXZlPTMzMztlLmRvdGFjY2VudD0zMzM7ZS5kaWVyZXNpcz0zMzM7ZS5yaW5nPTMzMztlLmNlZGlsbGE9MzMzO2UuaHVuZ2FydW1sYXV0PTMzMztlLm9nb25laz0zMzM7ZS5jYXJvbj0zMzM7ZS5lbWRhc2g9MWUzO2UuQUU9MWUzO2Uub3JkZmVtaW5pbmU9MzcwO2UuTHNsYXNoPTYxMTtlLk9zbGFzaD03Nzg7ZS5PRT0xZTM7ZS5vcmRtYXNjdWxpbmU9MzY1O2UuYWU9ODg5O2UuZG90bGVzc2k9Mjc4O2UubHNsYXNoPTI3ODtlLm9zbGFzaD02MTE7ZS5vZT05NDQ7ZS5nZXJtYW5kYmxzPTYxMTtlLklkaWVyZXNpcz0yNzg7ZS5lYWN1dGU9NTU2O2UuYWJyZXZlPTU1NjtlLnVodW5nYXJ1bWxhdXQ9NjExO2UuZWNhcm9uPTU1NjtlLllkaWVyZXNpcz02Njc7ZS5kaXZpZGU9NTg0O2UuWWFjdXRlPTY2NztlLkFjaXJjdW1mbGV4PTcyMjtlLmFhY3V0ZT01NTY7ZS5VY2lyY3VtZmxleD03MjI7ZS55YWN1dGU9NTU2O2Uuc2NvbW1hYWNjZW50PTU1NjtlLmVjaXJjdW1mbGV4PTU1NjtlLlVyaW5nPTcyMjtlLlVkaWVyZXNpcz03MjI7ZS5hb2dvbmVrPTU1NjtlLlVhY3V0ZT03MjI7ZS51b2dvbmVrPTYxMTtlLkVkaWVyZXNpcz02Njc7ZS5EY3JvYXQ9NzIyO2UuY29tbWFhY2NlbnQ9MjUwO2UuY29weXJpZ2h0PTczNztlLkVtYWNyb249NjY3O2UuY2Nhcm9uPTU1NjtlLmFyaW5nPTU1NjtlLk5jb21tYWFjY2VudD03MjI7ZS5sYWN1dGU9Mjc4O2UuYWdyYXZlPTU1NjtlLlRjb21tYWFjY2VudD02MTE7ZS5DYWN1dGU9NzIyO2UuYXRpbGRlPTU1NjtlLkVkb3RhY2NlbnQ9NjY3O2Uuc2Nhcm9uPTU1NjtlLnNjZWRpbGxhPTU1NjtlLmlhY3V0ZT0yNzg7ZS5sb3plbmdlPTQ5NDtlLlJjYXJvbj03MjI7ZS5HY29tbWFhY2NlbnQ9Nzc4O2UudWNpcmN1bWZsZXg9NjExO2UuYWNpcmN1bWZsZXg9NTU2O2UuQW1hY3Jvbj03MjI7ZS5yY2Fyb249Mzg5O2UuY2NlZGlsbGE9NTU2O2UuWmRvdGFjY2VudD02MTE7ZS5UaG9ybj02Njc7ZS5PbWFjcm9uPTc3ODtlLlJhY3V0ZT03MjI7ZS5TYWN1dGU9NjY3O2UuZGNhcm9uPTc0MztlLlVtYWNyb249NzIyO2UudXJpbmc9NjExO2UudGhyZWVzdXBlcmlvcj0zMzM7ZS5PZ3JhdmU9Nzc4O2UuQWdyYXZlPTcyMjtlLkFicmV2ZT03MjI7ZS5tdWx0aXBseT01ODQ7ZS51YWN1dGU9NjExO2UuVGNhcm9uPTYxMTtlLnBhcnRpYWxkaWZmPTQ5NDtlLnlkaWVyZXNpcz01NTY7ZS5OYWN1dGU9NzIyO2UuaWNpcmN1bWZsZXg9Mjc4O2UuRWNpcmN1bWZsZXg9NjY3O2UuYWRpZXJlc2lzPTU1NjtlLmVkaWVyZXNpcz01NTY7ZS5jYWN1dGU9NTU2O2UubmFjdXRlPTYxMTtlLnVtYWNyb249NjExO2UuTmNhcm9uPTcyMjtlLklhY3V0ZT0yNzg7ZS5wbHVzbWludXM9NTg0O2UuYnJva2VuYmFyPTI4MDtlLnJlZ2lzdGVyZWQ9NzM3O2UuR2JyZXZlPTc3ODtlLklkb3RhY2NlbnQ9Mjc4O2Uuc3VtbWF0aW9uPTYwMDtlLkVncmF2ZT02Njc7ZS5yYWN1dGU9Mzg5O2Uub21hY3Jvbj02MTE7ZS5aYWN1dGU9NjExO2UuWmNhcm9uPTYxMTtlLmdyZWF0ZXJlcXVhbD01NDk7ZS5FdGg9NzIyO2UuQ2NlZGlsbGE9NzIyO2UubGNvbW1hYWNjZW50PTI3ODtlLnRjYXJvbj0zODk7ZS5lb2dvbmVrPTU1NjtlLlVvZ29uZWs9NzIyO2UuQWFjdXRlPTcyMjtlLkFkaWVyZXNpcz03MjI7ZS5lZ3JhdmU9NTU2O2UuemFjdXRlPTUwMDtlLmlvZ29uZWs9Mjc4O2UuT2FjdXRlPTc3ODtlLm9hY3V0ZT02MTE7ZS5hbWFjcm9uPTU1NjtlLnNhY3V0ZT01NTY7ZS5pZGllcmVzaXM9Mjc4O2UuT2NpcmN1bWZsZXg9Nzc4O2UuVWdyYXZlPTcyMjtlLkRlbHRhPTYxMjtlLnRob3JuPTYxMTtlLnR3b3N1cGVyaW9yPTMzMztlLk9kaWVyZXNpcz03Nzg7ZS5tdT02MTE7ZS5pZ3JhdmU9Mjc4O2Uub2h1bmdhcnVtbGF1dD02MTE7ZS5Fb2dvbmVrPTY2NztlLmRjcm9hdD02MTE7ZS50aHJlZXF1YXJ0ZXJzPTgzNDtlLlNjZWRpbGxhPTY2NztlLmxjYXJvbj00MDA7ZS5LY29tbWFhY2NlbnQ9NzIyO2UuTGFjdXRlPTYxMTtlLnRyYWRlbWFyaz0xZTM7ZS5lZG90YWNjZW50PTU1NjtlLklncmF2ZT0yNzg7ZS5JbWFjcm9uPTI3ODtlLkxjYXJvbj02MTE7ZS5vbmVoYWxmPTgzNDtlLmxlc3NlcXVhbD01NDk7ZS5vY2lyY3VtZmxleD02MTE7ZS5udGlsZGU9NjExO2UuVWh1bmdhcnVtbGF1dD03MjI7ZS5FYWN1dGU9NjY3O2UuZW1hY3Jvbj01NTY7ZS5nYnJldmU9NjExO2Uub25lcXVhcnRlcj04MzQ7ZS5TY2Fyb249NjY3O2UuU2NvbW1hYWNjZW50PTY2NztlLk9odW5nYXJ1bWxhdXQ9Nzc4O2UuZGVncmVlPTQwMDtlLm9ncmF2ZT02MTE7ZS5DY2Fyb249NzIyO2UudWdyYXZlPTYxMTtlLnJhZGljYWw9NTQ5O2UuRGNhcm9uPTcyMjtlLnJjb21tYWFjY2VudD0zODk7ZS5OdGlsZGU9NzIyO2Uub3RpbGRlPTYxMTtlLlJjb21tYWFjY2VudD03MjI7ZS5MY29tbWFhY2NlbnQ9NjExO2UuQXRpbGRlPTcyMjtlLkFvZ29uZWs9NzIyO2UuQXJpbmc9NzIyO2UuT3RpbGRlPTc3ODtlLnpkb3RhY2NlbnQ9NTAwO2UuRWNhcm9uPTY2NztlLklvZ29uZWs9Mjc4O2Uua2NvbW1hYWNjZW50PTU1NjtlLm1pbnVzPTU4NDtlLkljaXJjdW1mbGV4PTI3ODtlLm5jYXJvbj02MTE7ZS50Y29tbWFhY2NlbnQ9MzMzO2UubG9naWNhbG5vdD01ODQ7ZS5vZGllcmVzaXM9NjExO2UudWRpZXJlc2lzPTYxMTtlLm5vdGVxdWFsPTU0OTtlLmdjb21tYWFjY2VudD02MTE7ZS5ldGg9NjExO2UuemNhcm9uPTUwMDtlLm5jb21tYWFjY2VudD02MTE7ZS5vbmVzdXBlcmlvcj0zMzM7ZS5pbWFjcm9uPTI3ODtlLkV1cm89NTU2fSkpO2VbIkhlbHZldGljYS1PYmxpcXVlIl09Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlLnNwYWNlPTI3ODtlLmV4Y2xhbT0yNzg7ZS5xdW90ZWRibD0zNTU7ZS5udW1iZXJzaWduPTU1NjtlLmRvbGxhcj01NTY7ZS5wZXJjZW50PTg4OTtlLmFtcGVyc2FuZD02Njc7ZS5xdW90ZXJpZ2h0PTIyMjtlLnBhcmVubGVmdD0zMzM7ZS5wYXJlbnJpZ2h0PTMzMztlLmFzdGVyaXNrPTM4OTtlLnBsdXM9NTg0O2UuY29tbWE9Mjc4O2UuaHlwaGVuPTMzMztlLnBlcmlvZD0yNzg7ZS5zbGFzaD0yNzg7ZS56ZXJvPTU1NjtlLm9uZT01NTY7ZS50d289NTU2O2UudGhyZWU9NTU2O2UuZm91cj01NTY7ZS5maXZlPTU1NjtlLnNpeD01NTY7ZS5zZXZlbj01NTY7ZS5laWdodD01NTY7ZS5uaW5lPTU1NjtlLmNvbG9uPTI3ODtlLnNlbWljb2xvbj0yNzg7ZS5sZXNzPTU4NDtlLmVxdWFsPTU4NDtlLmdyZWF0ZXI9NTg0O2UucXVlc3Rpb249NTU2O2UuYXQ9MTAxNTtlLkE9NjY3O2UuQj02Njc7ZS5DPTcyMjtlLkQ9NzIyO2UuRT02Njc7ZS5GPTYxMTtlLkc9Nzc4O2UuSD03MjI7ZS5JPTI3ODtlLko9NTAwO2UuSz02Njc7ZS5MPTU1NjtlLk09ODMzO2UuTj03MjI7ZS5PPTc3ODtlLlA9NjY3O2UuUT03Nzg7ZS5SPTcyMjtlLlM9NjY3O2UuVD02MTE7ZS5VPTcyMjtlLlY9NjY3O2UuVz05NDQ7ZS5YPTY2NztlLlk9NjY3O2UuWj02MTE7ZS5icmFja2V0bGVmdD0yNzg7ZS5iYWNrc2xhc2g9Mjc4O2UuYnJhY2tldHJpZ2h0PTI3ODtlLmFzY2lpY2lyY3VtPTQ2OTtlLnVuZGVyc2NvcmU9NTU2O2UucXVvdGVsZWZ0PTIyMjtlLmE9NTU2O2UuYj01NTY7ZS5jPTUwMDtlLmQ9NTU2O2UuZT01NTY7ZS5mPTI3ODtlLmc9NTU2O2UuaD01NTY7ZS5pPTIyMjtlLmo9MjIyO2Uuaz01MDA7ZS5sPTIyMjtlLm09ODMzO2Uubj01NTY7ZS5vPTU1NjtlLnA9NTU2O2UucT01NTY7ZS5yPTMzMztlLnM9NTAwO2UudD0yNzg7ZS51PTU1NjtlLnY9NTAwO2Uudz03MjI7ZS54PTUwMDtlLnk9NTAwO2Uuej01MDA7ZS5icmFjZWxlZnQ9MzM0O2UuYmFyPTI2MDtlLmJyYWNlcmlnaHQ9MzM0O2UuYXNjaWl0aWxkZT01ODQ7ZS5leGNsYW1kb3duPTMzMztlLmNlbnQ9NTU2O2Uuc3Rlcmxpbmc9NTU2O2UuZnJhY3Rpb249MTY3O2UueWVuPTU1NjtlLmZsb3Jpbj01NTY7ZS5zZWN0aW9uPTU1NjtlLmN1cnJlbmN5PTU1NjtlLnF1b3Rlc2luZ2xlPTE5MTtlLnF1b3RlZGJsbGVmdD0zMzM7ZS5ndWlsbGVtb3RsZWZ0PTU1NjtlLmd1aWxzaW5nbGxlZnQ9MzMzO2UuZ3VpbHNpbmdscmlnaHQ9MzMzO2UuZmk9NTAwO2UuZmw9NTAwO2UuZW5kYXNoPTU1NjtlLmRhZ2dlcj01NTY7ZS5kYWdnZXJkYmw9NTU2O2UucGVyaW9kY2VudGVyZWQ9Mjc4O2UucGFyYWdyYXBoPTUzNztlLmJ1bGxldD0zNTA7ZS5xdW90ZXNpbmdsYmFzZT0yMjI7ZS5xdW90ZWRibGJhc2U9MzMzO2UucXVvdGVkYmxyaWdodD0zMzM7ZS5ndWlsbGVtb3RyaWdodD01NTY7ZS5lbGxpcHNpcz0xZTM7ZS5wZXJ0aG91c2FuZD0xZTM7ZS5xdWVzdGlvbmRvd249NjExO2UuZ3JhdmU9MzMzO2UuYWN1dGU9MzMzO2UuY2lyY3VtZmxleD0zMzM7ZS50aWxkZT0zMzM7ZS5tYWNyb249MzMzO2UuYnJldmU9MzMzO2UuZG90YWNjZW50PTMzMztlLmRpZXJlc2lzPTMzMztlLnJpbmc9MzMzO2UuY2VkaWxsYT0zMzM7ZS5odW5nYXJ1bWxhdXQ9MzMzO2Uub2dvbmVrPTMzMztlLmNhcm9uPTMzMztlLmVtZGFzaD0xZTM7ZS5BRT0xZTM7ZS5vcmRmZW1pbmluZT0zNzA7ZS5Mc2xhc2g9NTU2O2UuT3NsYXNoPTc3ODtlLk9FPTFlMztlLm9yZG1hc2N1bGluZT0zNjU7ZS5hZT04ODk7ZS5kb3RsZXNzaT0yNzg7ZS5sc2xhc2g9MjIyO2Uub3NsYXNoPTYxMTtlLm9lPTk0NDtlLmdlcm1hbmRibHM9NjExO2UuSWRpZXJlc2lzPTI3ODtlLmVhY3V0ZT01NTY7ZS5hYnJldmU9NTU2O2UudWh1bmdhcnVtbGF1dD01NTY7ZS5lY2Fyb249NTU2O2UuWWRpZXJlc2lzPTY2NztlLmRpdmlkZT01ODQ7ZS5ZYWN1dGU9NjY3O2UuQWNpcmN1bWZsZXg9NjY3O2UuYWFjdXRlPTU1NjtlLlVjaXJjdW1mbGV4PTcyMjtlLnlhY3V0ZT01MDA7ZS5zY29tbWFhY2NlbnQ9NTAwO2UuZWNpcmN1bWZsZXg9NTU2O2UuVXJpbmc9NzIyO2UuVWRpZXJlc2lzPTcyMjtlLmFvZ29uZWs9NTU2O2UuVWFjdXRlPTcyMjtlLnVvZ29uZWs9NTU2O2UuRWRpZXJlc2lzPTY2NztlLkRjcm9hdD03MjI7ZS5jb21tYWFjY2VudD0yNTA7ZS5jb3B5cmlnaHQ9NzM3O2UuRW1hY3Jvbj02Njc7ZS5jY2Fyb249NTAwO2UuYXJpbmc9NTU2O2UuTmNvbW1hYWNjZW50PTcyMjtlLmxhY3V0ZT0yMjI7ZS5hZ3JhdmU9NTU2O2UuVGNvbW1hYWNjZW50PTYxMTtlLkNhY3V0ZT03MjI7ZS5hdGlsZGU9NTU2O2UuRWRvdGFjY2VudD02Njc7ZS5zY2Fyb249NTAwO2Uuc2NlZGlsbGE9NTAwO2UuaWFjdXRlPTI3ODtlLmxvemVuZ2U9NDcxO2UuUmNhcm9uPTcyMjtlLkdjb21tYWFjY2VudD03Nzg7ZS51Y2lyY3VtZmxleD01NTY7ZS5hY2lyY3VtZmxleD01NTY7ZS5BbWFjcm9uPTY2NztlLnJjYXJvbj0zMzM7ZS5jY2VkaWxsYT01MDA7ZS5aZG90YWNjZW50PTYxMTtlLlRob3JuPTY2NztlLk9tYWNyb249Nzc4O2UuUmFjdXRlPTcyMjtlLlNhY3V0ZT02Njc7ZS5kY2Fyb249NjQzO2UuVW1hY3Jvbj03MjI7ZS51cmluZz01NTY7ZS50aHJlZXN1cGVyaW9yPTMzMztlLk9ncmF2ZT03Nzg7ZS5BZ3JhdmU9NjY3O2UuQWJyZXZlPTY2NztlLm11bHRpcGx5PTU4NDtlLnVhY3V0ZT01NTY7ZS5UY2Fyb249NjExO2UucGFydGlhbGRpZmY9NDc2O2UueWRpZXJlc2lzPTUwMDtlLk5hY3V0ZT03MjI7ZS5pY2lyY3VtZmxleD0yNzg7ZS5FY2lyY3VtZmxleD02Njc7ZS5hZGllcmVzaXM9NTU2O2UuZWRpZXJlc2lzPTU1NjtlLmNhY3V0ZT01MDA7ZS5uYWN1dGU9NTU2O2UudW1hY3Jvbj01NTY7ZS5OY2Fyb249NzIyO2UuSWFjdXRlPTI3ODtlLnBsdXNtaW51cz01ODQ7ZS5icm9rZW5iYXI9MjYwO2UucmVnaXN0ZXJlZD03Mzc7ZS5HYnJldmU9Nzc4O2UuSWRvdGFjY2VudD0yNzg7ZS5zdW1tYXRpb249NjAwO2UuRWdyYXZlPTY2NztlLnJhY3V0ZT0zMzM7ZS5vbWFjcm9uPTU1NjtlLlphY3V0ZT02MTE7ZS5aY2Fyb249NjExO2UuZ3JlYXRlcmVxdWFsPTU0OTtlLkV0aD03MjI7ZS5DY2VkaWxsYT03MjI7ZS5sY29tbWFhY2NlbnQ9MjIyO2UudGNhcm9uPTMxNztlLmVvZ29uZWs9NTU2O2UuVW9nb25laz03MjI7ZS5BYWN1dGU9NjY3O2UuQWRpZXJlc2lzPTY2NztlLmVncmF2ZT01NTY7ZS56YWN1dGU9NTAwO2UuaW9nb25laz0yMjI7ZS5PYWN1dGU9Nzc4O2Uub2FjdXRlPTU1NjtlLmFtYWNyb249NTU2O2Uuc2FjdXRlPTUwMDtlLmlkaWVyZXNpcz0yNzg7ZS5PY2lyY3VtZmxleD03Nzg7ZS5VZ3JhdmU9NzIyO2UuRGVsdGE9NjEyO2UudGhvcm49NTU2O2UudHdvc3VwZXJpb3I9MzMzO2UuT2RpZXJlc2lzPTc3ODtlLm11PTU1NjtlLmlncmF2ZT0yNzg7ZS5vaHVuZ2FydW1sYXV0PTU1NjtlLkVvZ29uZWs9NjY3O2UuZGNyb2F0PTU1NjtlLnRocmVlcXVhcnRlcnM9ODM0O2UuU2NlZGlsbGE9NjY3O2UubGNhcm9uPTI5OTtlLktjb21tYWFjY2VudD02Njc7ZS5MYWN1dGU9NTU2O2UudHJhZGVtYXJrPTFlMztlLmVkb3RhY2NlbnQ9NTU2O2UuSWdyYXZlPTI3ODtlLkltYWNyb249Mjc4O2UuTGNhcm9uPTU1NjtlLm9uZWhhbGY9ODM0O2UubGVzc2VxdWFsPTU0OTtlLm9jaXJjdW1mbGV4PTU1NjtlLm50aWxkZT01NTY7ZS5VaHVuZ2FydW1sYXV0PTcyMjtlLkVhY3V0ZT02Njc7ZS5lbWFjcm9uPTU1NjtlLmdicmV2ZT01NTY7ZS5vbmVxdWFydGVyPTgzNDtlLlNjYXJvbj02Njc7ZS5TY29tbWFhY2NlbnQ9NjY3O2UuT2h1bmdhcnVtbGF1dD03Nzg7ZS5kZWdyZWU9NDAwO2Uub2dyYXZlPTU1NjtlLkNjYXJvbj03MjI7ZS51Z3JhdmU9NTU2O2UucmFkaWNhbD00NTM7ZS5EY2Fyb249NzIyO2UucmNvbW1hYWNjZW50PTMzMztlLk50aWxkZT03MjI7ZS5vdGlsZGU9NTU2O2UuUmNvbW1hYWNjZW50PTcyMjtlLkxjb21tYWFjY2VudD01NTY7ZS5BdGlsZGU9NjY3O2UuQW9nb25laz02Njc7ZS5BcmluZz02Njc7ZS5PdGlsZGU9Nzc4O2UuemRvdGFjY2VudD01MDA7ZS5FY2Fyb249NjY3O2UuSW9nb25laz0yNzg7ZS5rY29tbWFhY2NlbnQ9NTAwO2UubWludXM9NTg0O2UuSWNpcmN1bWZsZXg9Mjc4O2UubmNhcm9uPTU1NjtlLnRjb21tYWFjY2VudD0yNzg7ZS5sb2dpY2Fsbm90PTU4NDtlLm9kaWVyZXNpcz01NTY7ZS51ZGllcmVzaXM9NTU2O2Uubm90ZXF1YWw9NTQ5O2UuZ2NvbW1hYWNjZW50PTU1NjtlLmV0aD01NTY7ZS56Y2Fyb249NTAwO2UubmNvbW1hYWNjZW50PTU1NjtlLm9uZXN1cGVyaW9yPTMzMztlLmltYWNyb249Mjc4O2UuRXVybz01NTZ9KSk7ZS5TeW1ib2w9Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlLnNwYWNlPTI1MDtlLmV4Y2xhbT0zMzM7ZS51bml2ZXJzYWw9NzEzO2UubnVtYmVyc2lnbj01MDA7ZS5leGlzdGVudGlhbD01NDk7ZS5wZXJjZW50PTgzMztlLmFtcGVyc2FuZD03Nzg7ZS5zdWNodGhhdD00Mzk7ZS5wYXJlbmxlZnQ9MzMzO2UucGFyZW5yaWdodD0zMzM7ZS5hc3Rlcmlza21hdGg9NTAwO2UucGx1cz01NDk7ZS5jb21tYT0yNTA7ZS5taW51cz01NDk7ZS5wZXJpb2Q9MjUwO2Uuc2xhc2g9Mjc4O2UuemVybz01MDA7ZS5vbmU9NTAwO2UudHdvPTUwMDtlLnRocmVlPTUwMDtlLmZvdXI9NTAwO2UuZml2ZT01MDA7ZS5zaXg9NTAwO2Uuc2V2ZW49NTAwO2UuZWlnaHQ9NTAwO2UubmluZT01MDA7ZS5jb2xvbj0yNzg7ZS5zZW1pY29sb249Mjc4O2UubGVzcz01NDk7ZS5lcXVhbD01NDk7ZS5ncmVhdGVyPTU0OTtlLnF1ZXN0aW9uPTQ0NDtlLmNvbmdydWVudD01NDk7ZS5BbHBoYT03MjI7ZS5CZXRhPTY2NztlLkNoaT03MjI7ZS5EZWx0YT02MTI7ZS5FcHNpbG9uPTYxMTtlLlBoaT03NjM7ZS5HYW1tYT02MDM7ZS5FdGE9NzIyO2UuSW90YT0zMzM7ZS50aGV0YTE9NjMxO2UuS2FwcGE9NzIyO2UuTGFtYmRhPTY4NjtlLk11PTg4OTtlLk51PTcyMjtlLk9taWNyb249NzIyO2UuUGk9NzY4O2UuVGhldGE9NzQxO2UuUmhvPTU1NjtlLlNpZ21hPTU5MjtlLlRhdT02MTE7ZS5VcHNpbG9uPTY5MDtlLnNpZ21hMT00Mzk7ZS5PbWVnYT03Njg7ZS5YaT02NDU7ZS5Qc2k9Nzk1O2UuWmV0YT02MTE7ZS5icmFja2V0bGVmdD0zMzM7ZS50aGVyZWZvcmU9ODYzO2UuYnJhY2tldHJpZ2h0PTMzMztlLnBlcnBlbmRpY3VsYXI9NjU4O2UudW5kZXJzY29yZT01MDA7ZS5yYWRpY2FsZXg9NTAwO2UuYWxwaGE9NjMxO2UuYmV0YT01NDk7ZS5jaGk9NTQ5O2UuZGVsdGE9NDk0O2UuZXBzaWxvbj00Mzk7ZS5waGk9NTIxO2UuZ2FtbWE9NDExO2UuZXRhPTYwMztlLmlvdGE9MzI5O2UucGhpMT02MDM7ZS5rYXBwYT01NDk7ZS5sYW1iZGE9NTQ5O2UubXU9NTc2O2UubnU9NTIxO2Uub21pY3Jvbj01NDk7ZS5waT01NDk7ZS50aGV0YT01MjE7ZS5yaG89NTQ5O2Uuc2lnbWE9NjAzO2UudGF1PTQzOTtlLnVwc2lsb249NTc2O2Uub21lZ2ExPTcxMztlLm9tZWdhPTY4NjtlLnhpPTQ5MztlLnBzaT02ODY7ZS56ZXRhPTQ5NDtlLmJyYWNlbGVmdD00ODA7ZS5iYXI9MjAwO2UuYnJhY2VyaWdodD00ODA7ZS5zaW1pbGFyPTU0OTtlLkV1cm89NzUwO2UuVXBzaWxvbjE9NjIwO2UubWludXRlPTI0NztlLmxlc3NlcXVhbD01NDk7ZS5mcmFjdGlvbj0xNjc7ZS5pbmZpbml0eT03MTM7ZS5mbG9yaW49NTAwO2UuY2x1Yj03NTM7ZS5kaWFtb25kPTc1MztlLmhlYXJ0PTc1MztlLnNwYWRlPTc1MztlLmFycm93Ym90aD0xMDQyO2UuYXJyb3dsZWZ0PTk4NztlLmFycm93dXA9NjAzO2UuYXJyb3dyaWdodD05ODc7ZS5hcnJvd2Rvd249NjAzO2UuZGVncmVlPTQwMDtlLnBsdXNtaW51cz01NDk7ZS5zZWNvbmQ9NDExO2UuZ3JlYXRlcmVxdWFsPTU0OTtlLm11bHRpcGx5PTU0OTtlLnByb3BvcnRpb25hbD03MTM7ZS5wYXJ0aWFsZGlmZj00OTQ7ZS5idWxsZXQ9NDYwO2UuZGl2aWRlPTU0OTtlLm5vdGVxdWFsPTU0OTtlLmVxdWl2YWxlbmNlPTU0OTtlLmFwcHJveGVxdWFsPTU0OTtlLmVsbGlwc2lzPTFlMztlLmFycm93dmVydGV4PTYwMztlLmFycm93aG9yaXpleD0xZTM7ZS5jYXJyaWFnZXJldHVybj02NTg7ZS5hbGVwaD04MjM7ZS5JZnJha3R1cj02ODY7ZS5SZnJha3R1cj03OTU7ZS53ZWllcnN0cmFzcz05ODc7ZS5jaXJjbGVtdWx0aXBseT03Njg7ZS5jaXJjbGVwbHVzPTc2ODtlLmVtcHR5c2V0PTgyMztlLmludGVyc2VjdGlvbj03Njg7ZS51bmlvbj03Njg7ZS5wcm9wZXJzdXBlcnNldD03MTM7ZS5yZWZsZXhzdXBlcnNldD03MTM7ZS5ub3RzdWJzZXQ9NzEzO2UucHJvcGVyc3Vic2V0PTcxMztlLnJlZmxleHN1YnNldD03MTM7ZS5lbGVtZW50PTcxMztlLm5vdGVsZW1lbnQ9NzEzO2UuYW5nbGU9NzY4O2UuZ3JhZGllbnQ9NzEzO2UucmVnaXN0ZXJzZXJpZj03OTA7ZS5jb3B5cmlnaHRzZXJpZj03OTA7ZS50cmFkZW1hcmtzZXJpZj04OTA7ZS5wcm9kdWN0PTgyMztlLnJhZGljYWw9NTQ5O2UuZG90bWF0aD0yNTA7ZS5sb2dpY2Fsbm90PTcxMztlLmxvZ2ljYWxhbmQ9NjAzO2UubG9naWNhbG9yPTYwMztlLmFycm93ZGJsYm90aD0xMDQyO2UuYXJyb3dkYmxsZWZ0PTk4NztlLmFycm93ZGJsdXA9NjAzO2UuYXJyb3dkYmxyaWdodD05ODc7ZS5hcnJvd2RibGRvd249NjAzO2UubG96ZW5nZT00OTQ7ZS5hbmdsZWxlZnQ9MzI5O2UucmVnaXN0ZXJzYW5zPTc5MDtlLmNvcHlyaWdodHNhbnM9NzkwO2UudHJhZGVtYXJrc2Fucz03ODY7ZS5zdW1tYXRpb249NzEzO2UucGFyZW5sZWZ0dHA9Mzg0O2UucGFyZW5sZWZ0ZXg9Mzg0O2UucGFyZW5sZWZ0YnQ9Mzg0O2UuYnJhY2tldGxlZnR0cD0zODQ7ZS5icmFja2V0bGVmdGV4PTM4NDtlLmJyYWNrZXRsZWZ0YnQ9Mzg0O2UuYnJhY2VsZWZ0dHA9NDk0O2UuYnJhY2VsZWZ0bWlkPTQ5NDtlLmJyYWNlbGVmdGJ0PTQ5NDtlLmJyYWNlZXg9NDk0O2UuYW5nbGVyaWdodD0zMjk7ZS5pbnRlZ3JhbD0yNzQ7ZS5pbnRlZ3JhbHRwPTY4NjtlLmludGVncmFsZXg9Njg2O2UuaW50ZWdyYWxidD02ODY7ZS5wYXJlbnJpZ2h0dHA9Mzg0O2UucGFyZW5yaWdodGV4PTM4NDtlLnBhcmVucmlnaHRidD0zODQ7ZS5icmFja2V0cmlnaHR0cD0zODQ7ZS5icmFja2V0cmlnaHRleD0zODQ7ZS5icmFja2V0cmlnaHRidD0zODQ7ZS5icmFjZXJpZ2h0dHA9NDk0O2UuYnJhY2VyaWdodG1pZD00OTQ7ZS5icmFjZXJpZ2h0YnQ9NDk0O2UuYXBwbGU9NzkwfSkpO2VbIlRpbWVzLVJvbWFuIl09Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlLnNwYWNlPTI1MDtlLmV4Y2xhbT0zMzM7ZS5xdW90ZWRibD00MDg7ZS5udW1iZXJzaWduPTUwMDtlLmRvbGxhcj01MDA7ZS5wZXJjZW50PTgzMztlLmFtcGVyc2FuZD03Nzg7ZS5xdW90ZXJpZ2h0PTMzMztlLnBhcmVubGVmdD0zMzM7ZS5wYXJlbnJpZ2h0PTMzMztlLmFzdGVyaXNrPTUwMDtlLnBsdXM9NTY0O2UuY29tbWE9MjUwO2UuaHlwaGVuPTMzMztlLnBlcmlvZD0yNTA7ZS5zbGFzaD0yNzg7ZS56ZXJvPTUwMDtlLm9uZT01MDA7ZS50d289NTAwO2UudGhyZWU9NTAwO2UuZm91cj01MDA7ZS5maXZlPTUwMDtlLnNpeD01MDA7ZS5zZXZlbj01MDA7ZS5laWdodD01MDA7ZS5uaW5lPTUwMDtlLmNvbG9uPTI3ODtlLnNlbWljb2xvbj0yNzg7ZS5sZXNzPTU2NDtlLmVxdWFsPTU2NDtlLmdyZWF0ZXI9NTY0O2UucXVlc3Rpb249NDQ0O2UuYXQ9OTIxO2UuQT03MjI7ZS5CPTY2NztlLkM9NjY3O2UuRD03MjI7ZS5FPTYxMTtlLkY9NTU2O2UuRz03MjI7ZS5IPTcyMjtlLkk9MzMzO2UuSj0zODk7ZS5LPTcyMjtlLkw9NjExO2UuTT04ODk7ZS5OPTcyMjtlLk89NzIyO2UuUD01NTY7ZS5RPTcyMjtlLlI9NjY3O2UuUz01NTY7ZS5UPTYxMTtlLlU9NzIyO2UuVj03MjI7ZS5XPTk0NDtlLlg9NzIyO2UuWT03MjI7ZS5aPTYxMTtlLmJyYWNrZXRsZWZ0PTMzMztlLmJhY2tzbGFzaD0yNzg7ZS5icmFja2V0cmlnaHQ9MzMzO2UuYXNjaWljaXJjdW09NDY5O2UudW5kZXJzY29yZT01MDA7ZS5xdW90ZWxlZnQ9MzMzO2UuYT00NDQ7ZS5iPTUwMDtlLmM9NDQ0O2UuZD01MDA7ZS5lPTQ0NDtlLmY9MzMzO2UuZz01MDA7ZS5oPTUwMDtlLmk9Mjc4O2Uuaj0yNzg7ZS5rPTUwMDtlLmw9Mjc4O2UubT03Nzg7ZS5uPTUwMDtlLm89NTAwO2UucD01MDA7ZS5xPTUwMDtlLnI9MzMzO2Uucz0zODk7ZS50PTI3ODtlLnU9NTAwO2Uudj01MDA7ZS53PTcyMjtlLng9NTAwO2UueT01MDA7ZS56PTQ0NDtlLmJyYWNlbGVmdD00ODA7ZS5iYXI9MjAwO2UuYnJhY2VyaWdodD00ODA7ZS5hc2NpaXRpbGRlPTU0MTtlLmV4Y2xhbWRvd249MzMzO2UuY2VudD01MDA7ZS5zdGVybGluZz01MDA7ZS5mcmFjdGlvbj0xNjc7ZS55ZW49NTAwO2UuZmxvcmluPTUwMDtlLnNlY3Rpb249NTAwO2UuY3VycmVuY3k9NTAwO2UucXVvdGVzaW5nbGU9MTgwO2UucXVvdGVkYmxsZWZ0PTQ0NDtlLmd1aWxsZW1vdGxlZnQ9NTAwO2UuZ3VpbHNpbmdsbGVmdD0zMzM7ZS5ndWlsc2luZ2xyaWdodD0zMzM7ZS5maT01NTY7ZS5mbD01NTY7ZS5lbmRhc2g9NTAwO2UuZGFnZ2VyPTUwMDtlLmRhZ2dlcmRibD01MDA7ZS5wZXJpb2RjZW50ZXJlZD0yNTA7ZS5wYXJhZ3JhcGg9NDUzO2UuYnVsbGV0PTM1MDtlLnF1b3Rlc2luZ2xiYXNlPTMzMztlLnF1b3RlZGJsYmFzZT00NDQ7ZS5xdW90ZWRibHJpZ2h0PTQ0NDtlLmd1aWxsZW1vdHJpZ2h0PTUwMDtlLmVsbGlwc2lzPTFlMztlLnBlcnRob3VzYW5kPTFlMztlLnF1ZXN0aW9uZG93bj00NDQ7ZS5ncmF2ZT0zMzM7ZS5hY3V0ZT0zMzM7ZS5jaXJjdW1mbGV4PTMzMztlLnRpbGRlPTMzMztlLm1hY3Jvbj0zMzM7ZS5icmV2ZT0zMzM7ZS5kb3RhY2NlbnQ9MzMzO2UuZGllcmVzaXM9MzMzO2UucmluZz0zMzM7ZS5jZWRpbGxhPTMzMztlLmh1bmdhcnVtbGF1dD0zMzM7ZS5vZ29uZWs9MzMzO2UuY2Fyb249MzMzO2UuZW1kYXNoPTFlMztlLkFFPTg4OTtlLm9yZGZlbWluaW5lPTI3NjtlLkxzbGFzaD02MTE7ZS5Pc2xhc2g9NzIyO2UuT0U9ODg5O2Uub3JkbWFzY3VsaW5lPTMxMDtlLmFlPTY2NztlLmRvdGxlc3NpPTI3ODtlLmxzbGFzaD0yNzg7ZS5vc2xhc2g9NTAwO2Uub2U9NzIyO2UuZ2VybWFuZGJscz01MDA7ZS5JZGllcmVzaXM9MzMzO2UuZWFjdXRlPTQ0NDtlLmFicmV2ZT00NDQ7ZS51aHVuZ2FydW1sYXV0PTUwMDtlLmVjYXJvbj00NDQ7ZS5ZZGllcmVzaXM9NzIyO2UuZGl2aWRlPTU2NDtlLllhY3V0ZT03MjI7ZS5BY2lyY3VtZmxleD03MjI7ZS5hYWN1dGU9NDQ0O2UuVWNpcmN1bWZsZXg9NzIyO2UueWFjdXRlPTUwMDtlLnNjb21tYWFjY2VudD0zODk7ZS5lY2lyY3VtZmxleD00NDQ7ZS5VcmluZz03MjI7ZS5VZGllcmVzaXM9NzIyO2UuYW9nb25laz00NDQ7ZS5VYWN1dGU9NzIyO2UudW9nb25laz01MDA7ZS5FZGllcmVzaXM9NjExO2UuRGNyb2F0PTcyMjtlLmNvbW1hYWNjZW50PTI1MDtlLmNvcHlyaWdodD03NjA7ZS5FbWFjcm9uPTYxMTtlLmNjYXJvbj00NDQ7ZS5hcmluZz00NDQ7ZS5OY29tbWFhY2NlbnQ9NzIyO2UubGFjdXRlPTI3ODtlLmFncmF2ZT00NDQ7ZS5UY29tbWFhY2NlbnQ9NjExO2UuQ2FjdXRlPTY2NztlLmF0aWxkZT00NDQ7ZS5FZG90YWNjZW50PTYxMTtlLnNjYXJvbj0zODk7ZS5zY2VkaWxsYT0zODk7ZS5pYWN1dGU9Mjc4O2UubG96ZW5nZT00NzE7ZS5SY2Fyb249NjY3O2UuR2NvbW1hYWNjZW50PTcyMjtlLnVjaXJjdW1mbGV4PTUwMDtlLmFjaXJjdW1mbGV4PTQ0NDtlLkFtYWNyb249NzIyO2UucmNhcm9uPTMzMztlLmNjZWRpbGxhPTQ0NDtlLlpkb3RhY2NlbnQ9NjExO2UuVGhvcm49NTU2O2UuT21hY3Jvbj03MjI7ZS5SYWN1dGU9NjY3O2UuU2FjdXRlPTU1NjtlLmRjYXJvbj01ODg7ZS5VbWFjcm9uPTcyMjtlLnVyaW5nPTUwMDtlLnRocmVlc3VwZXJpb3I9MzAwO2UuT2dyYXZlPTcyMjtlLkFncmF2ZT03MjI7ZS5BYnJldmU9NzIyO2UubXVsdGlwbHk9NTY0O2UudWFjdXRlPTUwMDtlLlRjYXJvbj02MTE7ZS5wYXJ0aWFsZGlmZj00NzY7ZS55ZGllcmVzaXM9NTAwO2UuTmFjdXRlPTcyMjtlLmljaXJjdW1mbGV4PTI3ODtlLkVjaXJjdW1mbGV4PTYxMTtlLmFkaWVyZXNpcz00NDQ7ZS5lZGllcmVzaXM9NDQ0O2UuY2FjdXRlPTQ0NDtlLm5hY3V0ZT01MDA7ZS51bWFjcm9uPTUwMDtlLk5jYXJvbj03MjI7ZS5JYWN1dGU9MzMzO2UucGx1c21pbnVzPTU2NDtlLmJyb2tlbmJhcj0yMDA7ZS5yZWdpc3RlcmVkPTc2MDtlLkdicmV2ZT03MjI7ZS5JZG90YWNjZW50PTMzMztlLnN1bW1hdGlvbj02MDA7ZS5FZ3JhdmU9NjExO2UucmFjdXRlPTMzMztlLm9tYWNyb249NTAwO2UuWmFjdXRlPTYxMTtlLlpjYXJvbj02MTE7ZS5ncmVhdGVyZXF1YWw9NTQ5O2UuRXRoPTcyMjtlLkNjZWRpbGxhPTY2NztlLmxjb21tYWFjY2VudD0yNzg7ZS50Y2Fyb249MzI2O2UuZW9nb25laz00NDQ7ZS5Vb2dvbmVrPTcyMjtlLkFhY3V0ZT03MjI7ZS5BZGllcmVzaXM9NzIyO2UuZWdyYXZlPTQ0NDtlLnphY3V0ZT00NDQ7ZS5pb2dvbmVrPTI3ODtlLk9hY3V0ZT03MjI7ZS5vYWN1dGU9NTAwO2UuYW1hY3Jvbj00NDQ7ZS5zYWN1dGU9Mzg5O2UuaWRpZXJlc2lzPTI3ODtlLk9jaXJjdW1mbGV4PTcyMjtlLlVncmF2ZT03MjI7ZS5EZWx0YT02MTI7ZS50aG9ybj01MDA7ZS50d29zdXBlcmlvcj0zMDA7ZS5PZGllcmVzaXM9NzIyO2UubXU9NTAwO2UuaWdyYXZlPTI3ODtlLm9odW5nYXJ1bWxhdXQ9NTAwO2UuRW9nb25laz02MTE7ZS5kY3JvYXQ9NTAwO2UudGhyZWVxdWFydGVycz03NTA7ZS5TY2VkaWxsYT01NTY7ZS5sY2Fyb249MzQ0O2UuS2NvbW1hYWNjZW50PTcyMjtlLkxhY3V0ZT02MTE7ZS50cmFkZW1hcms9OTgwO2UuZWRvdGFjY2VudD00NDQ7ZS5JZ3JhdmU9MzMzO2UuSW1hY3Jvbj0zMzM7ZS5MY2Fyb249NjExO2Uub25laGFsZj03NTA7ZS5sZXNzZXF1YWw9NTQ5O2Uub2NpcmN1bWZsZXg9NTAwO2UubnRpbGRlPTUwMDtlLlVodW5nYXJ1bWxhdXQ9NzIyO2UuRWFjdXRlPTYxMTtlLmVtYWNyb249NDQ0O2UuZ2JyZXZlPTUwMDtlLm9uZXF1YXJ0ZXI9NzUwO2UuU2Nhcm9uPTU1NjtlLlNjb21tYWFjY2VudD01NTY7ZS5PaHVuZ2FydW1sYXV0PTcyMjtlLmRlZ3JlZT00MDA7ZS5vZ3JhdmU9NTAwO2UuQ2Nhcm9uPTY2NztlLnVncmF2ZT01MDA7ZS5yYWRpY2FsPTQ1MztlLkRjYXJvbj03MjI7ZS5yY29tbWFhY2NlbnQ9MzMzO2UuTnRpbGRlPTcyMjtlLm90aWxkZT01MDA7ZS5SY29tbWFhY2NlbnQ9NjY3O2UuTGNvbW1hYWNjZW50PTYxMTtlLkF0aWxkZT03MjI7ZS5Bb2dvbmVrPTcyMjtlLkFyaW5nPTcyMjtlLk90aWxkZT03MjI7ZS56ZG90YWNjZW50PTQ0NDtlLkVjYXJvbj02MTE7ZS5Jb2dvbmVrPTMzMztlLmtjb21tYWFjY2VudD01MDA7ZS5taW51cz01NjQ7ZS5JY2lyY3VtZmxleD0zMzM7ZS5uY2Fyb249NTAwO2UudGNvbW1hYWNjZW50PTI3ODtlLmxvZ2ljYWxub3Q9NTY0O2Uub2RpZXJlc2lzPTUwMDtlLnVkaWVyZXNpcz01MDA7ZS5ub3RlcXVhbD01NDk7ZS5nY29tbWFhY2NlbnQ9NTAwO2UuZXRoPTUwMDtlLnpjYXJvbj00NDQ7ZS5uY29tbWFhY2NlbnQ9NTAwO2Uub25lc3VwZXJpb3I9MzAwO2UuaW1hY3Jvbj0yNzg7ZS5FdXJvPTUwMH0pKTtlWyJUaW1lcy1Cb2xkIl09Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlLnNwYWNlPTI1MDtlLmV4Y2xhbT0zMzM7ZS5xdW90ZWRibD01NTU7ZS5udW1iZXJzaWduPTUwMDtlLmRvbGxhcj01MDA7ZS5wZXJjZW50PTFlMztlLmFtcGVyc2FuZD04MzM7ZS5xdW90ZXJpZ2h0PTMzMztlLnBhcmVubGVmdD0zMzM7ZS5wYXJlbnJpZ2h0PTMzMztlLmFzdGVyaXNrPTUwMDtlLnBsdXM9NTcwO2UuY29tbWE9MjUwO2UuaHlwaGVuPTMzMztlLnBlcmlvZD0yNTA7ZS5zbGFzaD0yNzg7ZS56ZXJvPTUwMDtlLm9uZT01MDA7ZS50d289NTAwO2UudGhyZWU9NTAwO2UuZm91cj01MDA7ZS5maXZlPTUwMDtlLnNpeD01MDA7ZS5zZXZlbj01MDA7ZS5laWdodD01MDA7ZS5uaW5lPTUwMDtlLmNvbG9uPTMzMztlLnNlbWljb2xvbj0zMzM7ZS5sZXNzPTU3MDtlLmVxdWFsPTU3MDtlLmdyZWF0ZXI9NTcwO2UucXVlc3Rpb249NTAwO2UuYXQ9OTMwO2UuQT03MjI7ZS5CPTY2NztlLkM9NzIyO2UuRD03MjI7ZS5FPTY2NztlLkY9NjExO2UuRz03Nzg7ZS5IPTc3ODtlLkk9Mzg5O2UuSj01MDA7ZS5LPTc3ODtlLkw9NjY3O2UuTT05NDQ7ZS5OPTcyMjtlLk89Nzc4O2UuUD02MTE7ZS5RPTc3ODtlLlI9NzIyO2UuUz01NTY7ZS5UPTY2NztlLlU9NzIyO2UuVj03MjI7ZS5XPTFlMztlLlg9NzIyO2UuWT03MjI7ZS5aPTY2NztlLmJyYWNrZXRsZWZ0PTMzMztlLmJhY2tzbGFzaD0yNzg7ZS5icmFja2V0cmlnaHQ9MzMzO2UuYXNjaWljaXJjdW09NTgxO2UudW5kZXJzY29yZT01MDA7ZS5xdW90ZWxlZnQ9MzMzO2UuYT01MDA7ZS5iPTU1NjtlLmM9NDQ0O2UuZD01NTY7ZS5lPTQ0NDtlLmY9MzMzO2UuZz01MDA7ZS5oPTU1NjtlLmk9Mjc4O2Uuaj0zMzM7ZS5rPTU1NjtlLmw9Mjc4O2UubT04MzM7ZS5uPTU1NjtlLm89NTAwO2UucD01NTY7ZS5xPTU1NjtlLnI9NDQ0O2Uucz0zODk7ZS50PTMzMztlLnU9NTU2O2Uudj01MDA7ZS53PTcyMjtlLng9NTAwO2UueT01MDA7ZS56PTQ0NDtlLmJyYWNlbGVmdD0zOTQ7ZS5iYXI9MjIwO2UuYnJhY2VyaWdodD0zOTQ7ZS5hc2NpaXRpbGRlPTUyMDtlLmV4Y2xhbWRvd249MzMzO2UuY2VudD01MDA7ZS5zdGVybGluZz01MDA7ZS5mcmFjdGlvbj0xNjc7ZS55ZW49NTAwO2UuZmxvcmluPTUwMDtlLnNlY3Rpb249NTAwO2UuY3VycmVuY3k9NTAwO2UucXVvdGVzaW5nbGU9Mjc4O2UucXVvdGVkYmxsZWZ0PTUwMDtlLmd1aWxsZW1vdGxlZnQ9NTAwO2UuZ3VpbHNpbmdsbGVmdD0zMzM7ZS5ndWlsc2luZ2xyaWdodD0zMzM7ZS5maT01NTY7ZS5mbD01NTY7ZS5lbmRhc2g9NTAwO2UuZGFnZ2VyPTUwMDtlLmRhZ2dlcmRibD01MDA7ZS5wZXJpb2RjZW50ZXJlZD0yNTA7ZS5wYXJhZ3JhcGg9NTQwO2UuYnVsbGV0PTM1MDtlLnF1b3Rlc2luZ2xiYXNlPTMzMztlLnF1b3RlZGJsYmFzZT01MDA7ZS5xdW90ZWRibHJpZ2h0PTUwMDtlLmd1aWxsZW1vdHJpZ2h0PTUwMDtlLmVsbGlwc2lzPTFlMztlLnBlcnRob3VzYW5kPTFlMztlLnF1ZXN0aW9uZG93bj01MDA7ZS5ncmF2ZT0zMzM7ZS5hY3V0ZT0zMzM7ZS5jaXJjdW1mbGV4PTMzMztlLnRpbGRlPTMzMztlLm1hY3Jvbj0zMzM7ZS5icmV2ZT0zMzM7ZS5kb3RhY2NlbnQ9MzMzO2UuZGllcmVzaXM9MzMzO2UucmluZz0zMzM7ZS5jZWRpbGxhPTMzMztlLmh1bmdhcnVtbGF1dD0zMzM7ZS5vZ29uZWs9MzMzO2UuY2Fyb249MzMzO2UuZW1kYXNoPTFlMztlLkFFPTFlMztlLm9yZGZlbWluaW5lPTMwMDtlLkxzbGFzaD02Njc7ZS5Pc2xhc2g9Nzc4O2UuT0U9MWUzO2Uub3JkbWFzY3VsaW5lPTMzMDtlLmFlPTcyMjtlLmRvdGxlc3NpPTI3ODtlLmxzbGFzaD0yNzg7ZS5vc2xhc2g9NTAwO2Uub2U9NzIyO2UuZ2VybWFuZGJscz01NTY7ZS5JZGllcmVzaXM9Mzg5O2UuZWFjdXRlPTQ0NDtlLmFicmV2ZT01MDA7ZS51aHVuZ2FydW1sYXV0PTU1NjtlLmVjYXJvbj00NDQ7ZS5ZZGllcmVzaXM9NzIyO2UuZGl2aWRlPTU3MDtlLllhY3V0ZT03MjI7ZS5BY2lyY3VtZmxleD03MjI7ZS5hYWN1dGU9NTAwO2UuVWNpcmN1bWZsZXg9NzIyO2UueWFjdXRlPTUwMDtlLnNjb21tYWFjY2VudD0zODk7ZS5lY2lyY3VtZmxleD00NDQ7ZS5VcmluZz03MjI7ZS5VZGllcmVzaXM9NzIyO2UuYW9nb25laz01MDA7ZS5VYWN1dGU9NzIyO2UudW9nb25laz01NTY7ZS5FZGllcmVzaXM9NjY3O2UuRGNyb2F0PTcyMjtlLmNvbW1hYWNjZW50PTI1MDtlLmNvcHlyaWdodD03NDc7ZS5FbWFjcm9uPTY2NztlLmNjYXJvbj00NDQ7ZS5hcmluZz01MDA7ZS5OY29tbWFhY2NlbnQ9NzIyO2UubGFjdXRlPTI3ODtlLmFncmF2ZT01MDA7ZS5UY29tbWFhY2NlbnQ9NjY3O2UuQ2FjdXRlPTcyMjtlLmF0aWxkZT01MDA7ZS5FZG90YWNjZW50PTY2NztlLnNjYXJvbj0zODk7ZS5zY2VkaWxsYT0zODk7ZS5pYWN1dGU9Mjc4O2UubG96ZW5nZT00OTQ7ZS5SY2Fyb249NzIyO2UuR2NvbW1hYWNjZW50PTc3ODtlLnVjaXJjdW1mbGV4PTU1NjtlLmFjaXJjdW1mbGV4PTUwMDtlLkFtYWNyb249NzIyO2UucmNhcm9uPTQ0NDtlLmNjZWRpbGxhPTQ0NDtlLlpkb3RhY2NlbnQ9NjY3O2UuVGhvcm49NjExO2UuT21hY3Jvbj03Nzg7ZS5SYWN1dGU9NzIyO2UuU2FjdXRlPTU1NjtlLmRjYXJvbj02NzI7ZS5VbWFjcm9uPTcyMjtlLnVyaW5nPTU1NjtlLnRocmVlc3VwZXJpb3I9MzAwO2UuT2dyYXZlPTc3ODtlLkFncmF2ZT03MjI7ZS5BYnJldmU9NzIyO2UubXVsdGlwbHk9NTcwO2UudWFjdXRlPTU1NjtlLlRjYXJvbj02Njc7ZS5wYXJ0aWFsZGlmZj00OTQ7ZS55ZGllcmVzaXM9NTAwO2UuTmFjdXRlPTcyMjtlLmljaXJjdW1mbGV4PTI3ODtlLkVjaXJjdW1mbGV4PTY2NztlLmFkaWVyZXNpcz01MDA7ZS5lZGllcmVzaXM9NDQ0O2UuY2FjdXRlPTQ0NDtlLm5hY3V0ZT01NTY7ZS51bWFjcm9uPTU1NjtlLk5jYXJvbj03MjI7ZS5JYWN1dGU9Mzg5O2UucGx1c21pbnVzPTU3MDtlLmJyb2tlbmJhcj0yMjA7ZS5yZWdpc3RlcmVkPTc0NztlLkdicmV2ZT03Nzg7ZS5JZG90YWNjZW50PTM4OTtlLnN1bW1hdGlvbj02MDA7ZS5FZ3JhdmU9NjY3O2UucmFjdXRlPTQ0NDtlLm9tYWNyb249NTAwO2UuWmFjdXRlPTY2NztlLlpjYXJvbj02Njc7ZS5ncmVhdGVyZXF1YWw9NTQ5O2UuRXRoPTcyMjtlLkNjZWRpbGxhPTcyMjtlLmxjb21tYWFjY2VudD0yNzg7ZS50Y2Fyb249NDE2O2UuZW9nb25laz00NDQ7ZS5Vb2dvbmVrPTcyMjtlLkFhY3V0ZT03MjI7ZS5BZGllcmVzaXM9NzIyO2UuZWdyYXZlPTQ0NDtlLnphY3V0ZT00NDQ7ZS5pb2dvbmVrPTI3ODtlLk9hY3V0ZT03Nzg7ZS5vYWN1dGU9NTAwO2UuYW1hY3Jvbj01MDA7ZS5zYWN1dGU9Mzg5O2UuaWRpZXJlc2lzPTI3ODtlLk9jaXJjdW1mbGV4PTc3ODtlLlVncmF2ZT03MjI7ZS5EZWx0YT02MTI7ZS50aG9ybj01NTY7ZS50d29zdXBlcmlvcj0zMDA7ZS5PZGllcmVzaXM9Nzc4O2UubXU9NTU2O2UuaWdyYXZlPTI3ODtlLm9odW5nYXJ1bWxhdXQ9NTAwO2UuRW9nb25laz02Njc7ZS5kY3JvYXQ9NTU2O2UudGhyZWVxdWFydGVycz03NTA7ZS5TY2VkaWxsYT01NTY7ZS5sY2Fyb249Mzk0O2UuS2NvbW1hYWNjZW50PTc3ODtlLkxhY3V0ZT02Njc7ZS50cmFkZW1hcms9MWUzO2UuZWRvdGFjY2VudD00NDQ7ZS5JZ3JhdmU9Mzg5O2UuSW1hY3Jvbj0zODk7ZS5MY2Fyb249NjY3O2Uub25laGFsZj03NTA7ZS5sZXNzZXF1YWw9NTQ5O2Uub2NpcmN1bWZsZXg9NTAwO2UubnRpbGRlPTU1NjtlLlVodW5nYXJ1bWxhdXQ9NzIyO2UuRWFjdXRlPTY2NztlLmVtYWNyb249NDQ0O2UuZ2JyZXZlPTUwMDtlLm9uZXF1YXJ0ZXI9NzUwO2UuU2Nhcm9uPTU1NjtlLlNjb21tYWFjY2VudD01NTY7ZS5PaHVuZ2FydW1sYXV0PTc3ODtlLmRlZ3JlZT00MDA7ZS5vZ3JhdmU9NTAwO2UuQ2Nhcm9uPTcyMjtlLnVncmF2ZT01NTY7ZS5yYWRpY2FsPTU0OTtlLkRjYXJvbj03MjI7ZS5yY29tbWFhY2NlbnQ9NDQ0O2UuTnRpbGRlPTcyMjtlLm90aWxkZT01MDA7ZS5SY29tbWFhY2NlbnQ9NzIyO2UuTGNvbW1hYWNjZW50PTY2NztlLkF0aWxkZT03MjI7ZS5Bb2dvbmVrPTcyMjtlLkFyaW5nPTcyMjtlLk90aWxkZT03Nzg7ZS56ZG90YWNjZW50PTQ0NDtlLkVjYXJvbj02Njc7ZS5Jb2dvbmVrPTM4OTtlLmtjb21tYWFjY2VudD01NTY7ZS5taW51cz01NzA7ZS5JY2lyY3VtZmxleD0zODk7ZS5uY2Fyb249NTU2O2UudGNvbW1hYWNjZW50PTMzMztlLmxvZ2ljYWxub3Q9NTcwO2Uub2RpZXJlc2lzPTUwMDtlLnVkaWVyZXNpcz01NTY7ZS5ub3RlcXVhbD01NDk7ZS5nY29tbWFhY2NlbnQ9NTAwO2UuZXRoPTUwMDtlLnpjYXJvbj00NDQ7ZS5uY29tbWFhY2NlbnQ9NTU2O2Uub25lc3VwZXJpb3I9MzAwO2UuaW1hY3Jvbj0yNzg7ZS5FdXJvPTUwMH0pKTtlWyJUaW1lcy1Cb2xkSXRhbGljIl09Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlLnNwYWNlPTI1MDtlLmV4Y2xhbT0zODk7ZS5xdW90ZWRibD01NTU7ZS5udW1iZXJzaWduPTUwMDtlLmRvbGxhcj01MDA7ZS5wZXJjZW50PTgzMztlLmFtcGVyc2FuZD03Nzg7ZS5xdW90ZXJpZ2h0PTMzMztlLnBhcmVubGVmdD0zMzM7ZS5wYXJlbnJpZ2h0PTMzMztlLmFzdGVyaXNrPTUwMDtlLnBsdXM9NTcwO2UuY29tbWE9MjUwO2UuaHlwaGVuPTMzMztlLnBlcmlvZD0yNTA7ZS5zbGFzaD0yNzg7ZS56ZXJvPTUwMDtlLm9uZT01MDA7ZS50d289NTAwO2UudGhyZWU9NTAwO2UuZm91cj01MDA7ZS5maXZlPTUwMDtlLnNpeD01MDA7ZS5zZXZlbj01MDA7ZS5laWdodD01MDA7ZS5uaW5lPTUwMDtlLmNvbG9uPTMzMztlLnNlbWljb2xvbj0zMzM7ZS5sZXNzPTU3MDtlLmVxdWFsPTU3MDtlLmdyZWF0ZXI9NTcwO2UucXVlc3Rpb249NTAwO2UuYXQ9ODMyO2UuQT02Njc7ZS5CPTY2NztlLkM9NjY3O2UuRD03MjI7ZS5FPTY2NztlLkY9NjY3O2UuRz03MjI7ZS5IPTc3ODtlLkk9Mzg5O2UuSj01MDA7ZS5LPTY2NztlLkw9NjExO2UuTT04ODk7ZS5OPTcyMjtlLk89NzIyO2UuUD02MTE7ZS5RPTcyMjtlLlI9NjY3O2UuUz01NTY7ZS5UPTYxMTtlLlU9NzIyO2UuVj02Njc7ZS5XPTg4OTtlLlg9NjY3O2UuWT02MTE7ZS5aPTYxMTtlLmJyYWNrZXRsZWZ0PTMzMztlLmJhY2tzbGFzaD0yNzg7ZS5icmFja2V0cmlnaHQ9MzMzO2UuYXNjaWljaXJjdW09NTcwO2UudW5kZXJzY29yZT01MDA7ZS5xdW90ZWxlZnQ9MzMzO2UuYT01MDA7ZS5iPTUwMDtlLmM9NDQ0O2UuZD01MDA7ZS5lPTQ0NDtlLmY9MzMzO2UuZz01MDA7ZS5oPTU1NjtlLmk9Mjc4O2Uuaj0yNzg7ZS5rPTUwMDtlLmw9Mjc4O2UubT03Nzg7ZS5uPTU1NjtlLm89NTAwO2UucD01MDA7ZS5xPTUwMDtlLnI9Mzg5O2Uucz0zODk7ZS50PTI3ODtlLnU9NTU2O2Uudj00NDQ7ZS53PTY2NztlLng9NTAwO2UueT00NDQ7ZS56PTM4OTtlLmJyYWNlbGVmdD0zNDg7ZS5iYXI9MjIwO2UuYnJhY2VyaWdodD0zNDg7ZS5hc2NpaXRpbGRlPTU3MDtlLmV4Y2xhbWRvd249Mzg5O2UuY2VudD01MDA7ZS5zdGVybGluZz01MDA7ZS5mcmFjdGlvbj0xNjc7ZS55ZW49NTAwO2UuZmxvcmluPTUwMDtlLnNlY3Rpb249NTAwO2UuY3VycmVuY3k9NTAwO2UucXVvdGVzaW5nbGU9Mjc4O2UucXVvdGVkYmxsZWZ0PTUwMDtlLmd1aWxsZW1vdGxlZnQ9NTAwO2UuZ3VpbHNpbmdsbGVmdD0zMzM7ZS5ndWlsc2luZ2xyaWdodD0zMzM7ZS5maT01NTY7ZS5mbD01NTY7ZS5lbmRhc2g9NTAwO2UuZGFnZ2VyPTUwMDtlLmRhZ2dlcmRibD01MDA7ZS5wZXJpb2RjZW50ZXJlZD0yNTA7ZS5wYXJhZ3JhcGg9NTAwO2UuYnVsbGV0PTM1MDtlLnF1b3Rlc2luZ2xiYXNlPTMzMztlLnF1b3RlZGJsYmFzZT01MDA7ZS5xdW90ZWRibHJpZ2h0PTUwMDtlLmd1aWxsZW1vdHJpZ2h0PTUwMDtlLmVsbGlwc2lzPTFlMztlLnBlcnRob3VzYW5kPTFlMztlLnF1ZXN0aW9uZG93bj01MDA7ZS5ncmF2ZT0zMzM7ZS5hY3V0ZT0zMzM7ZS5jaXJjdW1mbGV4PTMzMztlLnRpbGRlPTMzMztlLm1hY3Jvbj0zMzM7ZS5icmV2ZT0zMzM7ZS5kb3RhY2NlbnQ9MzMzO2UuZGllcmVzaXM9MzMzO2UucmluZz0zMzM7ZS5jZWRpbGxhPTMzMztlLmh1bmdhcnVtbGF1dD0zMzM7ZS5vZ29uZWs9MzMzO2UuY2Fyb249MzMzO2UuZW1kYXNoPTFlMztlLkFFPTk0NDtlLm9yZGZlbWluaW5lPTI2NjtlLkxzbGFzaD02MTE7ZS5Pc2xhc2g9NzIyO2UuT0U9OTQ0O2Uub3JkbWFzY3VsaW5lPTMwMDtlLmFlPTcyMjtlLmRvdGxlc3NpPTI3ODtlLmxzbGFzaD0yNzg7ZS5vc2xhc2g9NTAwO2Uub2U9NzIyO2UuZ2VybWFuZGJscz01MDA7ZS5JZGllcmVzaXM9Mzg5O2UuZWFjdXRlPTQ0NDtlLmFicmV2ZT01MDA7ZS51aHVuZ2FydW1sYXV0PTU1NjtlLmVjYXJvbj00NDQ7ZS5ZZGllcmVzaXM9NjExO2UuZGl2aWRlPTU3MDtlLllhY3V0ZT02MTE7ZS5BY2lyY3VtZmxleD02Njc7ZS5hYWN1dGU9NTAwO2UuVWNpcmN1bWZsZXg9NzIyO2UueWFjdXRlPTQ0NDtlLnNjb21tYWFjY2VudD0zODk7ZS5lY2lyY3VtZmxleD00NDQ7ZS5VcmluZz03MjI7ZS5VZGllcmVzaXM9NzIyO2UuYW9nb25laz01MDA7ZS5VYWN1dGU9NzIyO2UudW9nb25laz01NTY7ZS5FZGllcmVzaXM9NjY3O2UuRGNyb2F0PTcyMjtlLmNvbW1hYWNjZW50PTI1MDtlLmNvcHlyaWdodD03NDc7ZS5FbWFjcm9uPTY2NztlLmNjYXJvbj00NDQ7ZS5hcmluZz01MDA7ZS5OY29tbWFhY2NlbnQ9NzIyO2UubGFjdXRlPTI3ODtlLmFncmF2ZT01MDA7ZS5UY29tbWFhY2NlbnQ9NjExO2UuQ2FjdXRlPTY2NztlLmF0aWxkZT01MDA7ZS5FZG90YWNjZW50PTY2NztlLnNjYXJvbj0zODk7ZS5zY2VkaWxsYT0zODk7ZS5pYWN1dGU9Mjc4O2UubG96ZW5nZT00OTQ7ZS5SY2Fyb249NjY3O2UuR2NvbW1hYWNjZW50PTcyMjtlLnVjaXJjdW1mbGV4PTU1NjtlLmFjaXJjdW1mbGV4PTUwMDtlLkFtYWNyb249NjY3O2UucmNhcm9uPTM4OTtlLmNjZWRpbGxhPTQ0NDtlLlpkb3RhY2NlbnQ9NjExO2UuVGhvcm49NjExO2UuT21hY3Jvbj03MjI7ZS5SYWN1dGU9NjY3O2UuU2FjdXRlPTU1NjtlLmRjYXJvbj02MDg7ZS5VbWFjcm9uPTcyMjtlLnVyaW5nPTU1NjtlLnRocmVlc3VwZXJpb3I9MzAwO2UuT2dyYXZlPTcyMjtlLkFncmF2ZT02Njc7ZS5BYnJldmU9NjY3O2UubXVsdGlwbHk9NTcwO2UudWFjdXRlPTU1NjtlLlRjYXJvbj02MTE7ZS5wYXJ0aWFsZGlmZj00OTQ7ZS55ZGllcmVzaXM9NDQ0O2UuTmFjdXRlPTcyMjtlLmljaXJjdW1mbGV4PTI3ODtlLkVjaXJjdW1mbGV4PTY2NztlLmFkaWVyZXNpcz01MDA7ZS5lZGllcmVzaXM9NDQ0O2UuY2FjdXRlPTQ0NDtlLm5hY3V0ZT01NTY7ZS51bWFjcm9uPTU1NjtlLk5jYXJvbj03MjI7ZS5JYWN1dGU9Mzg5O2UucGx1c21pbnVzPTU3MDtlLmJyb2tlbmJhcj0yMjA7ZS5yZWdpc3RlcmVkPTc0NztlLkdicmV2ZT03MjI7ZS5JZG90YWNjZW50PTM4OTtlLnN1bW1hdGlvbj02MDA7ZS5FZ3JhdmU9NjY3O2UucmFjdXRlPTM4OTtlLm9tYWNyb249NTAwO2UuWmFjdXRlPTYxMTtlLlpjYXJvbj02MTE7ZS5ncmVhdGVyZXF1YWw9NTQ5O2UuRXRoPTcyMjtlLkNjZWRpbGxhPTY2NztlLmxjb21tYWFjY2VudD0yNzg7ZS50Y2Fyb249MzY2O2UuZW9nb25laz00NDQ7ZS5Vb2dvbmVrPTcyMjtlLkFhY3V0ZT02Njc7ZS5BZGllcmVzaXM9NjY3O2UuZWdyYXZlPTQ0NDtlLnphY3V0ZT0zODk7ZS5pb2dvbmVrPTI3ODtlLk9hY3V0ZT03MjI7ZS5vYWN1dGU9NTAwO2UuYW1hY3Jvbj01MDA7ZS5zYWN1dGU9Mzg5O2UuaWRpZXJlc2lzPTI3ODtlLk9jaXJjdW1mbGV4PTcyMjtlLlVncmF2ZT03MjI7ZS5EZWx0YT02MTI7ZS50aG9ybj01MDA7ZS50d29zdXBlcmlvcj0zMDA7ZS5PZGllcmVzaXM9NzIyO2UubXU9NTc2O2UuaWdyYXZlPTI3ODtlLm9odW5nYXJ1bWxhdXQ9NTAwO2UuRW9nb25laz02Njc7ZS5kY3JvYXQ9NTAwO2UudGhyZWVxdWFydGVycz03NTA7ZS5TY2VkaWxsYT01NTY7ZS5sY2Fyb249MzgyO2UuS2NvbW1hYWNjZW50PTY2NztlLkxhY3V0ZT02MTE7ZS50cmFkZW1hcms9MWUzO2UuZWRvdGFjY2VudD00NDQ7ZS5JZ3JhdmU9Mzg5O2UuSW1hY3Jvbj0zODk7ZS5MY2Fyb249NjExO2Uub25laGFsZj03NTA7ZS5sZXNzZXF1YWw9NTQ5O2Uub2NpcmN1bWZsZXg9NTAwO2UubnRpbGRlPTU1NjtlLlVodW5nYXJ1bWxhdXQ9NzIyO2UuRWFjdXRlPTY2NztlLmVtYWNyb249NDQ0O2UuZ2JyZXZlPTUwMDtlLm9uZXF1YXJ0ZXI9NzUwO2UuU2Nhcm9uPTU1NjtlLlNjb21tYWFjY2VudD01NTY7ZS5PaHVuZ2FydW1sYXV0PTcyMjtlLmRlZ3JlZT00MDA7ZS5vZ3JhdmU9NTAwO2UuQ2Nhcm9uPTY2NztlLnVncmF2ZT01NTY7ZS5yYWRpY2FsPTU0OTtlLkRjYXJvbj03MjI7ZS5yY29tbWFhY2NlbnQ9Mzg5O2UuTnRpbGRlPTcyMjtlLm90aWxkZT01MDA7ZS5SY29tbWFhY2NlbnQ9NjY3O2UuTGNvbW1hYWNjZW50PTYxMTtlLkF0aWxkZT02Njc7ZS5Bb2dvbmVrPTY2NztlLkFyaW5nPTY2NztlLk90aWxkZT03MjI7ZS56ZG90YWNjZW50PTM4OTtlLkVjYXJvbj02Njc7ZS5Jb2dvbmVrPTM4OTtlLmtjb21tYWFjY2VudD01MDA7ZS5taW51cz02MDY7ZS5JY2lyY3VtZmxleD0zODk7ZS5uY2Fyb249NTU2O2UudGNvbW1hYWNjZW50PTI3ODtlLmxvZ2ljYWxub3Q9NjA2O2Uub2RpZXJlc2lzPTUwMDtlLnVkaWVyZXNpcz01NTY7ZS5ub3RlcXVhbD01NDk7ZS5nY29tbWFhY2NlbnQ9NTAwO2UuZXRoPTUwMDtlLnpjYXJvbj0zODk7ZS5uY29tbWFhY2NlbnQ9NTU2O2Uub25lc3VwZXJpb3I9MzAwO2UuaW1hY3Jvbj0yNzg7ZS5FdXJvPTUwMH0pKTtlWyJUaW1lcy1JdGFsaWMiXT1nZXRMb29rdXBUYWJsZUZhY3RvcnkoKGZ1bmN0aW9uKGUpe2Uuc3BhY2U9MjUwO2UuZXhjbGFtPTMzMztlLnF1b3RlZGJsPTQyMDtlLm51bWJlcnNpZ249NTAwO2UuZG9sbGFyPTUwMDtlLnBlcmNlbnQ9ODMzO2UuYW1wZXJzYW5kPTc3ODtlLnF1b3RlcmlnaHQ9MzMzO2UucGFyZW5sZWZ0PTMzMztlLnBhcmVucmlnaHQ9MzMzO2UuYXN0ZXJpc2s9NTAwO2UucGx1cz02NzU7ZS5jb21tYT0yNTA7ZS5oeXBoZW49MzMzO2UucGVyaW9kPTI1MDtlLnNsYXNoPTI3ODtlLnplcm89NTAwO2Uub25lPTUwMDtlLnR3bz01MDA7ZS50aHJlZT01MDA7ZS5mb3VyPTUwMDtlLmZpdmU9NTAwO2Uuc2l4PTUwMDtlLnNldmVuPTUwMDtlLmVpZ2h0PTUwMDtlLm5pbmU9NTAwO2UuY29sb249MzMzO2Uuc2VtaWNvbG9uPTMzMztlLmxlc3M9Njc1O2UuZXF1YWw9Njc1O2UuZ3JlYXRlcj02NzU7ZS5xdWVzdGlvbj01MDA7ZS5hdD05MjA7ZS5BPTYxMTtlLkI9NjExO2UuQz02Njc7ZS5EPTcyMjtlLkU9NjExO2UuRj02MTE7ZS5HPTcyMjtlLkg9NzIyO2UuST0zMzM7ZS5KPTQ0NDtlLks9NjY3O2UuTD01NTY7ZS5NPTgzMztlLk49NjY3O2UuTz03MjI7ZS5QPTYxMTtlLlE9NzIyO2UuUj02MTE7ZS5TPTUwMDtlLlQ9NTU2O2UuVT03MjI7ZS5WPTYxMTtlLlc9ODMzO2UuWD02MTE7ZS5ZPTU1NjtlLlo9NTU2O2UuYnJhY2tldGxlZnQ9Mzg5O2UuYmFja3NsYXNoPTI3ODtlLmJyYWNrZXRyaWdodD0zODk7ZS5hc2NpaWNpcmN1bT00MjI7ZS51bmRlcnNjb3JlPTUwMDtlLnF1b3RlbGVmdD0zMzM7ZS5hPTUwMDtlLmI9NTAwO2UuYz00NDQ7ZS5kPTUwMDtlLmU9NDQ0O2UuZj0yNzg7ZS5nPTUwMDtlLmg9NTAwO2UuaT0yNzg7ZS5qPTI3ODtlLms9NDQ0O2UubD0yNzg7ZS5tPTcyMjtlLm49NTAwO2Uubz01MDA7ZS5wPTUwMDtlLnE9NTAwO2Uucj0zODk7ZS5zPTM4OTtlLnQ9Mjc4O2UudT01MDA7ZS52PTQ0NDtlLnc9NjY3O2UueD00NDQ7ZS55PTQ0NDtlLno9Mzg5O2UuYnJhY2VsZWZ0PTQwMDtlLmJhcj0yNzU7ZS5icmFjZXJpZ2h0PTQwMDtlLmFzY2lpdGlsZGU9NTQxO2UuZXhjbGFtZG93bj0zODk7ZS5jZW50PTUwMDtlLnN0ZXJsaW5nPTUwMDtlLmZyYWN0aW9uPTE2NztlLnllbj01MDA7ZS5mbG9yaW49NTAwO2Uuc2VjdGlvbj01MDA7ZS5jdXJyZW5jeT01MDA7ZS5xdW90ZXNpbmdsZT0yMTQ7ZS5xdW90ZWRibGxlZnQ9NTU2O2UuZ3VpbGxlbW90bGVmdD01MDA7ZS5ndWlsc2luZ2xsZWZ0PTMzMztlLmd1aWxzaW5nbHJpZ2h0PTMzMztlLmZpPTUwMDtlLmZsPTUwMDtlLmVuZGFzaD01MDA7ZS5kYWdnZXI9NTAwO2UuZGFnZ2VyZGJsPTUwMDtlLnBlcmlvZGNlbnRlcmVkPTI1MDtlLnBhcmFncmFwaD01MjM7ZS5idWxsZXQ9MzUwO2UucXVvdGVzaW5nbGJhc2U9MzMzO2UucXVvdGVkYmxiYXNlPTU1NjtlLnF1b3RlZGJscmlnaHQ9NTU2O2UuZ3VpbGxlbW90cmlnaHQ9NTAwO2UuZWxsaXBzaXM9ODg5O2UucGVydGhvdXNhbmQ9MWUzO2UucXVlc3Rpb25kb3duPTUwMDtlLmdyYXZlPTMzMztlLmFjdXRlPTMzMztlLmNpcmN1bWZsZXg9MzMzO2UudGlsZGU9MzMzO2UubWFjcm9uPTMzMztlLmJyZXZlPTMzMztlLmRvdGFjY2VudD0zMzM7ZS5kaWVyZXNpcz0zMzM7ZS5yaW5nPTMzMztlLmNlZGlsbGE9MzMzO2UuaHVuZ2FydW1sYXV0PTMzMztlLm9nb25laz0zMzM7ZS5jYXJvbj0zMzM7ZS5lbWRhc2g9ODg5O2UuQUU9ODg5O2Uub3JkZmVtaW5pbmU9Mjc2O2UuTHNsYXNoPTU1NjtlLk9zbGFzaD03MjI7ZS5PRT05NDQ7ZS5vcmRtYXNjdWxpbmU9MzEwO2UuYWU9NjY3O2UuZG90bGVzc2k9Mjc4O2UubHNsYXNoPTI3ODtlLm9zbGFzaD01MDA7ZS5vZT02Njc7ZS5nZXJtYW5kYmxzPTUwMDtlLklkaWVyZXNpcz0zMzM7ZS5lYWN1dGU9NDQ0O2UuYWJyZXZlPTUwMDtlLnVodW5nYXJ1bWxhdXQ9NTAwO2UuZWNhcm9uPTQ0NDtlLllkaWVyZXNpcz01NTY7ZS5kaXZpZGU9Njc1O2UuWWFjdXRlPTU1NjtlLkFjaXJjdW1mbGV4PTYxMTtlLmFhY3V0ZT01MDA7ZS5VY2lyY3VtZmxleD03MjI7ZS55YWN1dGU9NDQ0O2Uuc2NvbW1hYWNjZW50PTM4OTtlLmVjaXJjdW1mbGV4PTQ0NDtlLlVyaW5nPTcyMjtlLlVkaWVyZXNpcz03MjI7ZS5hb2dvbmVrPTUwMDtlLlVhY3V0ZT03MjI7ZS51b2dvbmVrPTUwMDtlLkVkaWVyZXNpcz02MTE7ZS5EY3JvYXQ9NzIyO2UuY29tbWFhY2NlbnQ9MjUwO2UuY29weXJpZ2h0PTc2MDtlLkVtYWNyb249NjExO2UuY2Nhcm9uPTQ0NDtlLmFyaW5nPTUwMDtlLk5jb21tYWFjY2VudD02Njc7ZS5sYWN1dGU9Mjc4O2UuYWdyYXZlPTUwMDtlLlRjb21tYWFjY2VudD01NTY7ZS5DYWN1dGU9NjY3O2UuYXRpbGRlPTUwMDtlLkVkb3RhY2NlbnQ9NjExO2Uuc2Nhcm9uPTM4OTtlLnNjZWRpbGxhPTM4OTtlLmlhY3V0ZT0yNzg7ZS5sb3plbmdlPTQ3MTtlLlJjYXJvbj02MTE7ZS5HY29tbWFhY2NlbnQ9NzIyO2UudWNpcmN1bWZsZXg9NTAwO2UuYWNpcmN1bWZsZXg9NTAwO2UuQW1hY3Jvbj02MTE7ZS5yY2Fyb249Mzg5O2UuY2NlZGlsbGE9NDQ0O2UuWmRvdGFjY2VudD01NTY7ZS5UaG9ybj02MTE7ZS5PbWFjcm9uPTcyMjtlLlJhY3V0ZT02MTE7ZS5TYWN1dGU9NTAwO2UuZGNhcm9uPTU0NDtlLlVtYWNyb249NzIyO2UudXJpbmc9NTAwO2UudGhyZWVzdXBlcmlvcj0zMDA7ZS5PZ3JhdmU9NzIyO2UuQWdyYXZlPTYxMTtlLkFicmV2ZT02MTE7ZS5tdWx0aXBseT02NzU7ZS51YWN1dGU9NTAwO2UuVGNhcm9uPTU1NjtlLnBhcnRpYWxkaWZmPTQ3NjtlLnlkaWVyZXNpcz00NDQ7ZS5OYWN1dGU9NjY3O2UuaWNpcmN1bWZsZXg9Mjc4O2UuRWNpcmN1bWZsZXg9NjExO2UuYWRpZXJlc2lzPTUwMDtlLmVkaWVyZXNpcz00NDQ7ZS5jYWN1dGU9NDQ0O2UubmFjdXRlPTUwMDtlLnVtYWNyb249NTAwO2UuTmNhcm9uPTY2NztlLklhY3V0ZT0zMzM7ZS5wbHVzbWludXM9Njc1O2UuYnJva2VuYmFyPTI3NTtlLnJlZ2lzdGVyZWQ9NzYwO2UuR2JyZXZlPTcyMjtlLklkb3RhY2NlbnQ9MzMzO2Uuc3VtbWF0aW9uPTYwMDtlLkVncmF2ZT02MTE7ZS5yYWN1dGU9Mzg5O2Uub21hY3Jvbj01MDA7ZS5aYWN1dGU9NTU2O2UuWmNhcm9uPTU1NjtlLmdyZWF0ZXJlcXVhbD01NDk7ZS5FdGg9NzIyO2UuQ2NlZGlsbGE9NjY3O2UubGNvbW1hYWNjZW50PTI3ODtlLnRjYXJvbj0zMDA7ZS5lb2dvbmVrPTQ0NDtlLlVvZ29uZWs9NzIyO2UuQWFjdXRlPTYxMTtlLkFkaWVyZXNpcz02MTE7ZS5lZ3JhdmU9NDQ0O2UuemFjdXRlPTM4OTtlLmlvZ29uZWs9Mjc4O2UuT2FjdXRlPTcyMjtlLm9hY3V0ZT01MDA7ZS5hbWFjcm9uPTUwMDtlLnNhY3V0ZT0zODk7ZS5pZGllcmVzaXM9Mjc4O2UuT2NpcmN1bWZsZXg9NzIyO2UuVWdyYXZlPTcyMjtlLkRlbHRhPTYxMjtlLnRob3JuPTUwMDtlLnR3b3N1cGVyaW9yPTMwMDtlLk9kaWVyZXNpcz03MjI7ZS5tdT01MDA7ZS5pZ3JhdmU9Mjc4O2Uub2h1bmdhcnVtbGF1dD01MDA7ZS5Fb2dvbmVrPTYxMTtlLmRjcm9hdD01MDA7ZS50aHJlZXF1YXJ0ZXJzPTc1MDtlLlNjZWRpbGxhPTUwMDtlLmxjYXJvbj0zMDA7ZS5LY29tbWFhY2NlbnQ9NjY3O2UuTGFjdXRlPTU1NjtlLnRyYWRlbWFyaz05ODA7ZS5lZG90YWNjZW50PTQ0NDtlLklncmF2ZT0zMzM7ZS5JbWFjcm9uPTMzMztlLkxjYXJvbj02MTE7ZS5vbmVoYWxmPTc1MDtlLmxlc3NlcXVhbD01NDk7ZS5vY2lyY3VtZmxleD01MDA7ZS5udGlsZGU9NTAwO2UuVWh1bmdhcnVtbGF1dD03MjI7ZS5FYWN1dGU9NjExO2UuZW1hY3Jvbj00NDQ7ZS5nYnJldmU9NTAwO2Uub25lcXVhcnRlcj03NTA7ZS5TY2Fyb249NTAwO2UuU2NvbW1hYWNjZW50PTUwMDtlLk9odW5nYXJ1bWxhdXQ9NzIyO2UuZGVncmVlPTQwMDtlLm9ncmF2ZT01MDA7ZS5DY2Fyb249NjY3O2UudWdyYXZlPTUwMDtlLnJhZGljYWw9NDUzO2UuRGNhcm9uPTcyMjtlLnJjb21tYWFjY2VudD0zODk7ZS5OdGlsZGU9NjY3O2Uub3RpbGRlPTUwMDtlLlJjb21tYWFjY2VudD02MTE7ZS5MY29tbWFhY2NlbnQ9NTU2O2UuQXRpbGRlPTYxMTtlLkFvZ29uZWs9NjExO2UuQXJpbmc9NjExO2UuT3RpbGRlPTcyMjtlLnpkb3RhY2NlbnQ9Mzg5O2UuRWNhcm9uPTYxMTtlLklvZ29uZWs9MzMzO2Uua2NvbW1hYWNjZW50PTQ0NDtlLm1pbnVzPTY3NTtlLkljaXJjdW1mbGV4PTMzMztlLm5jYXJvbj01MDA7ZS50Y29tbWFhY2NlbnQ9Mjc4O2UubG9naWNhbG5vdD02NzU7ZS5vZGllcmVzaXM9NTAwO2UudWRpZXJlc2lzPTUwMDtlLm5vdGVxdWFsPTU0OTtlLmdjb21tYWFjY2VudD01MDA7ZS5ldGg9NTAwO2UuemNhcm9uPTM4OTtlLm5jb21tYWFjY2VudD01MDA7ZS5vbmVzdXBlcmlvcj0zMDA7ZS5pbWFjcm9uPTI3ODtlLkV1cm89NTAwfSkpO2UuWmFwZkRpbmdiYXRzPWdldExvb2t1cFRhYmxlRmFjdG9yeSgoZnVuY3Rpb24oZSl7ZS5zcGFjZT0yNzg7ZS5hMT05NzQ7ZS5hMj05NjE7ZS5hMjAyPTk3NDtlLmEzPTk4MDtlLmE0PTcxOTtlLmE1PTc4OTtlLmExMTk9NzkwO2UuYTExOD03OTE7ZS5hMTE3PTY5MDtlLmExMT05NjA7ZS5hMTI9OTM5O2UuYTEzPTU0OTtlLmExND04NTU7ZS5hMTU9OTExO2UuYTE2PTkzMztlLmExMDU9OTExO2UuYTE3PTk0NTtlLmExOD05NzQ7ZS5hMTk9NzU1O2UuYTIwPTg0NjtlLmEyMT03NjI7ZS5hMjI9NzYxO2UuYTIzPTU3MTtlLmEyND02Nzc7ZS5hMjU9NzYzO2UuYTI2PTc2MDtlLmEyNz03NTk7ZS5hMjg9NzU0O2UuYTY9NDk0O2UuYTc9NTUyO2UuYTg9NTM3O2UuYTk9NTc3O2UuYTEwPTY5MjtlLmEyOT03ODY7ZS5hMzA9Nzg4O2UuYTMxPTc4ODtlLmEzMj03OTA7ZS5hMzM9NzkzO2UuYTM0PTc5NDtlLmEzNT04MTY7ZS5hMzY9ODIzO2UuYTM3PTc4OTtlLmEzOD04NDE7ZS5hMzk9ODIzO2UuYTQwPTgzMztlLmE0MT04MTY7ZS5hNDI9ODMxO2UuYTQzPTkyMztlLmE0ND03NDQ7ZS5hNDU9NzIzO2UuYTQ2PTc0OTtlLmE0Nz03OTA7ZS5hNDg9NzkyO2UuYTQ5PTY5NTtlLmE1MD03NzY7ZS5hNTE9NzY4O2UuYTUyPTc5MjtlLmE1Mz03NTk7ZS5hNTQ9NzA3O2UuYTU1PTcwODtlLmE1Nj02ODI7ZS5hNTc9NzAxO2UuYTU4PTgyNjtlLmE1OT04MTU7ZS5hNjA9Nzg5O2UuYTYxPTc4OTtlLmE2Mj03MDc7ZS5hNjM9Njg3O2UuYTY0PTY5NjtlLmE2NT02ODk7ZS5hNjY9Nzg2O2UuYTY3PTc4NztlLmE2OD03MTM7ZS5hNjk9NzkxO2UuYTcwPTc4NTtlLmE3MT03OTE7ZS5hNzI9ODczO2UuYTczPTc2MTtlLmE3ND03NjI7ZS5hMjAzPTc2MjtlLmE3NT03NTk7ZS5hMjA0PTc1OTtlLmE3Nj04OTI7ZS5hNzc9ODkyO2UuYTc4PTc4ODtlLmE3OT03ODQ7ZS5hODE9NDM4O2UuYTgyPTEzODtlLmE4Mz0yNzc7ZS5hODQ9NDE1O2UuYTk3PTM5MjtlLmE5OD0zOTI7ZS5hOTk9NjY4O2UuYTEwMD02Njg7ZS5hODk9MzkwO2UuYTkwPTM5MDtlLmE5Mz0zMTc7ZS5hOTQ9MzE3O2UuYTkxPTI3NjtlLmE5Mj0yNzY7ZS5hMjA1PTUwOTtlLmE4NT01MDk7ZS5hMjA2PTQxMDtlLmE4Nj00MTA7ZS5hODc9MjM0O2UuYTg4PTIzNDtlLmE5NT0zMzQ7ZS5hOTY9MzM0O2UuYTEwMT03MzI7ZS5hMTAyPTU0NDtlLmExMDM9NTQ0O2UuYTEwND05MTA7ZS5hMTA2PTY2NztlLmExMDc9NzYwO2UuYTEwOD03NjA7ZS5hMTEyPTc3NjtlLmExMTE9NTk1O2UuYTExMD02OTQ7ZS5hMTA5PTYyNjtlLmExMjA9Nzg4O2UuYTEyMT03ODg7ZS5hMTIyPTc4ODtlLmExMjM9Nzg4O2UuYTEyND03ODg7ZS5hMTI1PTc4ODtlLmExMjY9Nzg4O2UuYTEyNz03ODg7ZS5hMTI4PTc4ODtlLmExMjk9Nzg4O2UuYTEzMD03ODg7ZS5hMTMxPTc4ODtlLmExMzI9Nzg4O2UuYTEzMz03ODg7ZS5hMTM0PTc4ODtlLmExMzU9Nzg4O2UuYTEzNj03ODg7ZS5hMTM3PTc4ODtlLmExMzg9Nzg4O2UuYTEzOT03ODg7ZS5hMTQwPTc4ODtlLmExNDE9Nzg4O2UuYTE0Mj03ODg7ZS5hMTQzPTc4ODtlLmExNDQ9Nzg4O2UuYTE0NT03ODg7ZS5hMTQ2PTc4ODtlLmExNDc9Nzg4O2UuYTE0OD03ODg7ZS5hMTQ5PTc4ODtlLmExNTA9Nzg4O2UuYTE1MT03ODg7ZS5hMTUyPTc4ODtlLmExNTM9Nzg4O2UuYTE1ND03ODg7ZS5hMTU1PTc4ODtlLmExNTY9Nzg4O2UuYTE1Nz03ODg7ZS5hMTU4PTc4ODtlLmExNTk9Nzg4O2UuYTE2MD04OTQ7ZS5hMTYxPTgzODtlLmExNjM9MTAxNjtlLmExNjQ9NDU4O2UuYTE5Nj03NDg7ZS5hMTY1PTkyNDtlLmExOTI9NzQ4O2UuYTE2Nj05MTg7ZS5hMTY3PTkyNztlLmExNjg9OTI4O2UuYTE2OT05Mjg7ZS5hMTcwPTgzNDtlLmExNzE9ODczO2UuYTE3Mj04Mjg7ZS5hMTczPTkyNDtlLmExNjI9OTI0O2UuYTE3ND05MTc7ZS5hMTc1PTkzMDtlLmExNzY9OTMxO2UuYTE3Nz00NjM7ZS5hMTc4PTg4MztlLmExNzk9ODM2O2UuYTE5Mz04MzY7ZS5hMTgwPTg2NztlLmExOTk9ODY3O2UuYTE4MT02OTY7ZS5hMjAwPTY5NjtlLmExODI9ODc0O2UuYTIwMT04NzQ7ZS5hMTgzPTc2MDtlLmExODQ9OTQ2O2UuYTE5Nz03NzE7ZS5hMTg1PTg2NTtlLmExOTQ9NzcxO2UuYTE5OD04ODg7ZS5hMTg2PTk2NztlLmExOTU9ODg4O2UuYTE4Nz04MzE7ZS5hMTg4PTg3MztlLmExODk9OTI3O2UuYTE5MD05NzA7ZS5hMTkxPTkxOH0pKX0pKSxuYT1nZXRMb29rdXBUYWJsZUZhY3RvcnkoKGZ1bmN0aW9uKGUpe2UuQ291cmllcj17YXNjZW50OjYyOSxkZXNjZW50Oi0xNTcsY2FwSGVpZ2h0OjU2Mix4SGVpZ2h0Oi00MjZ9O2VbIkNvdXJpZXItQm9sZCJdPXthc2NlbnQ6NjI5LGRlc2NlbnQ6LTE1NyxjYXBIZWlnaHQ6NTYyLHhIZWlnaHQ6NDM5fTtlWyJDb3VyaWVyLU9ibGlxdWUiXT17YXNjZW50OjYyOSxkZXNjZW50Oi0xNTcsY2FwSGVpZ2h0OjU2Mix4SGVpZ2h0OjQyNn07ZVsiQ291cmllci1Cb2xkT2JsaXF1ZSJdPXthc2NlbnQ6NjI5LGRlc2NlbnQ6LTE1NyxjYXBIZWlnaHQ6NTYyLHhIZWlnaHQ6NDI2fTtlLkhlbHZldGljYT17YXNjZW50OjcxOCxkZXNjZW50Oi0yMDcsY2FwSGVpZ2h0OjcxOCx4SGVpZ2h0OjUyM307ZVsiSGVsdmV0aWNhLUJvbGQiXT17YXNjZW50OjcxOCxkZXNjZW50Oi0yMDcsY2FwSGVpZ2h0OjcxOCx4SGVpZ2h0OjUzMn07ZVsiSGVsdmV0aWNhLU9ibGlxdWUiXT17YXNjZW50OjcxOCxkZXNjZW50Oi0yMDcsY2FwSGVpZ2h0OjcxOCx4SGVpZ2h0OjUyM307ZVsiSGVsdmV0aWNhLUJvbGRPYmxpcXVlIl09e2FzY2VudDo3MTgsZGVzY2VudDotMjA3LGNhcEhlaWdodDo3MTgseEhlaWdodDo1MzJ9O2VbIlRpbWVzLVJvbWFuIl09e2FzY2VudDo2ODMsZGVzY2VudDotMjE3LGNhcEhlaWdodDo2NjIseEhlaWdodDo0NTB9O2VbIlRpbWVzLUJvbGQiXT17YXNjZW50OjY4MyxkZXNjZW50Oi0yMTcsY2FwSGVpZ2h0OjY3Nix4SGVpZ2h0OjQ2MX07ZVsiVGltZXMtSXRhbGljIl09e2FzY2VudDo2ODMsZGVzY2VudDotMjE3LGNhcEhlaWdodDo2NTMseEhlaWdodDo0NDF9O2VbIlRpbWVzLUJvbGRJdGFsaWMiXT17YXNjZW50OjY4MyxkZXNjZW50Oi0yMTcsY2FwSGVpZ2h0OjY2OSx4SGVpZ2h0OjQ2Mn07ZS5TeW1ib2w9e2FzY2VudDpNYXRoLk5hTixkZXNjZW50Ok1hdGguTmFOLGNhcEhlaWdodDpNYXRoLk5hTix4SGVpZ2h0Ok1hdGguTmFOfTtlLlphcGZEaW5nYmF0cz17YXNjZW50Ok1hdGguTmFOLGRlc2NlbnQ6TWF0aC5OYU4sY2FwSGVpZ2h0Ok1hdGguTmFOLHhIZWlnaHQ6TWF0aC5OYU59fSkpO2NsYXNzIEdseWZUYWJsZXtjb25zdHJ1Y3Rvcih7Z2x5ZlRhYmxlOmUsaXNHbHlwaExvY2F0aW9uc0xvbmc6dCxsb2NhVGFibGU6aSxudW1HbHlwaHM6YX0pe3RoaXMuZ2x5cGhzPVtdO2NvbnN0IHI9bmV3IERhdGFWaWV3KGkuYnVmZmVyLGkuYnl0ZU9mZnNldCxpLmJ5dGVMZW5ndGgpLHM9bmV3IERhdGFWaWV3KGUuYnVmZmVyLGUuYnl0ZU9mZnNldCxlLmJ5dGVMZW5ndGgpLG49dD80OjI7bGV0IG89dD9yLmdldFVpbnQzMigwKToyKnIuZ2V0VWludDE2KDApLGc9MDtmb3IobGV0IGU9MDtlPGE7ZSsrKXtnKz1uO2NvbnN0IGU9dD9yLmdldFVpbnQzMihnKToyKnIuZ2V0VWludDE2KGcpO2lmKGU9PT1vKXt0aGlzLmdseXBocy5wdXNoKG5ldyBHbHlwaCh7fSkpO2NvbnRpbnVlfWNvbnN0IGk9R2x5cGgucGFyc2UobyxzKTt0aGlzLmdseXBocy5wdXNoKGkpO289ZX19Z2V0U2l6ZSgpe3JldHVybiB0aGlzLmdseXBocy5yZWR1Y2UoKChlLHQpPT5lKyh0LmdldFNpemUoKSszJi00KSksMCl9d3JpdGUoKXtjb25zdCBlPXRoaXMuZ2V0U2l6ZSgpLHQ9bmV3IERhdGFWaWV3KG5ldyBBcnJheUJ1ZmZlcihlKSksaT1lPjEzMTA3MCxhPWk/NDoyLHI9bmV3IERhdGFWaWV3KG5ldyBBcnJheUJ1ZmZlcigodGhpcy5nbHlwaHMubGVuZ3RoKzEpKmEpKTtpP3Iuc2V0VWludDMyKDAsMCk6ci5zZXRVaW50MTYoMCwwKTtsZXQgcz0wLG49MDtmb3IoY29uc3QgZSBvZiB0aGlzLmdseXBocyl7cys9ZS53cml0ZShzLHQpO3M9cyszJi00O24rPWE7aT9yLnNldFVpbnQzMihuLHMpOnIuc2V0VWludDE2KG4scz4+MSl9cmV0dXJue2lzTG9jYXRpb25Mb25nOmksbG9jYTpuZXcgVWludDhBcnJheShyLmJ1ZmZlciksZ2x5ZjpuZXcgVWludDhBcnJheSh0LmJ1ZmZlcil9fXNjYWxlKGUpe2ZvcihsZXQgdD0wLGk9dGhpcy5nbHlwaHMubGVuZ3RoO3Q8aTt0KyspdGhpcy5nbHlwaHNbdF0uc2NhbGUoZVt0XSl9fWNsYXNzIEdseXBoe2NvbnN0cnVjdG9yKHtoZWFkZXI6ZT1udWxsLHNpbXBsZTp0PW51bGwsY29tcG9zaXRlczppPW51bGx9KXt0aGlzLmhlYWRlcj1lO3RoaXMuc2ltcGxlPXQ7dGhpcy5jb21wb3NpdGVzPWl9c3RhdGljIHBhcnNlKGUsdCl7Y29uc3RbaSxhXT1HbHlwaEhlYWRlci5wYXJzZShlLHQpO2UrPWk7aWYoYS5udW1iZXJPZkNvbnRvdXJzPDApe2NvbnN0IGk9W107Zm9yKDs7KXtjb25zdFthLHJdPUNvbXBvc2l0ZUdseXBoLnBhcnNlKGUsdCk7ZSs9YTtpLnB1c2gocik7aWYoISgzMiZyLmZsYWdzKSlicmVha31yZXR1cm4gbmV3IEdseXBoKHtoZWFkZXI6YSxjb21wb3NpdGVzOml9KX1jb25zdCByPVNpbXBsZUdseXBoLnBhcnNlKGUsdCxhLm51bWJlck9mQ29udG91cnMpO3JldHVybiBuZXcgR2x5cGgoe2hlYWRlcjphLHNpbXBsZTpyfSl9Z2V0U2l6ZSgpe2lmKCF0aGlzLmhlYWRlcilyZXR1cm4gMDtjb25zdCBlPXRoaXMuc2ltcGxlP3RoaXMuc2ltcGxlLmdldFNpemUoKTp0aGlzLmNvbXBvc2l0ZXMucmVkdWNlKCgoZSx0KT0+ZSt0LmdldFNpemUoKSksMCk7cmV0dXJuIHRoaXMuaGVhZGVyLmdldFNpemUoKStlfXdyaXRlKGUsdCl7aWYoIXRoaXMuaGVhZGVyKXJldHVybiAwO2NvbnN0IGk9ZTtlKz10aGlzLmhlYWRlci53cml0ZShlLHQpO2lmKHRoaXMuc2ltcGxlKWUrPXRoaXMuc2ltcGxlLndyaXRlKGUsdCk7ZWxzZSBmb3IoY29uc3QgaSBvZiB0aGlzLmNvbXBvc2l0ZXMpZSs9aS53cml0ZShlLHQpO3JldHVybiBlLWl9c2NhbGUoZSl7aWYoIXRoaXMuaGVhZGVyKXJldHVybjtjb25zdCB0PSh0aGlzLmhlYWRlci54TWluK3RoaXMuaGVhZGVyLnhNYXgpLzI7dGhpcy5oZWFkZXIuc2NhbGUodCxlKTtpZih0aGlzLnNpbXBsZSl0aGlzLnNpbXBsZS5zY2FsZSh0LGUpO2Vsc2UgZm9yKGNvbnN0IGkgb2YgdGhpcy5jb21wb3NpdGVzKWkuc2NhbGUodCxlKX19Y2xhc3MgR2x5cGhIZWFkZXJ7Y29uc3RydWN0b3Ioe251bWJlck9mQ29udG91cnM6ZSx4TWluOnQseU1pbjppLHhNYXg6YSx5TWF4OnJ9KXt0aGlzLm51bWJlck9mQ29udG91cnM9ZTt0aGlzLnhNaW49dDt0aGlzLnlNaW49aTt0aGlzLnhNYXg9YTt0aGlzLnlNYXg9cn1zdGF0aWMgcGFyc2UoZSx0KXtyZXR1cm5bMTAsbmV3IEdseXBoSGVhZGVyKHtudW1iZXJPZkNvbnRvdXJzOnQuZ2V0SW50MTYoZSkseE1pbjp0LmdldEludDE2KGUrMikseU1pbjp0LmdldEludDE2KGUrNCkseE1heDp0LmdldEludDE2KGUrNikseU1heDp0LmdldEludDE2KGUrOCl9KV19Z2V0U2l6ZSgpe3JldHVybiAxMH13cml0ZShlLHQpe3Quc2V0SW50MTYoZSx0aGlzLm51bWJlck9mQ29udG91cnMpO3Quc2V0SW50MTYoZSsyLHRoaXMueE1pbik7dC5zZXRJbnQxNihlKzQsdGhpcy55TWluKTt0LnNldEludDE2KGUrNix0aGlzLnhNYXgpO3Quc2V0SW50MTYoZSs4LHRoaXMueU1heCk7cmV0dXJuIDEwfXNjYWxlKGUsdCl7dGhpcy54TWluPU1hdGgucm91bmQoZSsodGhpcy54TWluLWUpKnQpO3RoaXMueE1heD1NYXRoLnJvdW5kKGUrKHRoaXMueE1heC1lKSp0KX19Y2xhc3MgQ29udG91cntjb25zdHJ1Y3Rvcih7ZmxhZ3M6ZSx4Q29vcmRpbmF0ZXM6dCx5Q29vcmRpbmF0ZXM6aX0pe3RoaXMueENvb3JkaW5hdGVzPXQ7dGhpcy55Q29vcmRpbmF0ZXM9aTt0aGlzLmZsYWdzPWV9fWNsYXNzIFNpbXBsZUdseXBoe2NvbnN0cnVjdG9yKHtjb250b3VyczplLGluc3RydWN0aW9uczp0fSl7dGhpcy5jb250b3Vycz1lO3RoaXMuaW5zdHJ1Y3Rpb25zPXR9c3RhdGljIHBhcnNlKGUsdCxpKXtjb25zdCBhPVtdO2ZvcihsZXQgcj0wO3I8aTtyKyspe2NvbnN0IGk9dC5nZXRVaW50MTYoZSk7ZSs9MjthLnB1c2goaSl9Y29uc3Qgcj1hW2ktMV0rMSxzPXQuZ2V0VWludDE2KGUpO2UrPTI7Y29uc3Qgbj1uZXcgVWludDhBcnJheSh0KS5zbGljZShlLGUrcyk7ZSs9cztjb25zdCBvPVtdO2ZvcihsZXQgaT0wO2k8cjtlKyssaSsrKXtsZXQgYT10LmdldFVpbnQ4KGUpO28ucHVzaChhKTtpZig4JmEpe2NvbnN0IHI9dC5nZXRVaW50OCgrK2UpO2FePTg7Zm9yKGxldCBlPTA7ZTxyO2UrKylvLnB1c2goYSk7aSs9cn19Y29uc3QgZz1bXTtsZXQgYz1bXSxDPVtdLGg9W107Y29uc3QgbD1bXTtsZXQgUT0wLEU9MDtmb3IobGV0IGk9MDtpPHI7aSsrKXtjb25zdCByPW9baV07aWYoMiZyKXtjb25zdCBpPXQuZ2V0VWludDgoZSsrKTtFKz0xNiZyP2k6LWk7Yy5wdXNoKEUpfWVsc2UgaWYoMTYmciljLnB1c2goRSk7ZWxzZXtFKz10LmdldEludDE2KGUpO2UrPTI7Yy5wdXNoKEUpfWlmKGFbUV09PT1pKXtRKys7Zy5wdXNoKGMpO2M9W119fUU9MDtRPTA7Zm9yKGxldCBpPTA7aTxyO2krKyl7Y29uc3Qgcj1vW2ldO2lmKDQmcil7Y29uc3QgaT10LmdldFVpbnQ4KGUrKyk7RSs9MzImcj9pOi1pO0MucHVzaChFKX1lbHNlIGlmKDMyJnIpQy5wdXNoKEUpO2Vsc2V7RSs9dC5nZXRJbnQxNihlKTtlKz0yO0MucHVzaChFKX1oLnB1c2goMSZyfDY0JnIpO2lmKGFbUV09PT1pKXtjPWdbUV07USsrO2wucHVzaChuZXcgQ29udG91cih7ZmxhZ3M6aCx4Q29vcmRpbmF0ZXM6Yyx5Q29vcmRpbmF0ZXM6Q30pKTtDPVtdO2g9W119fXJldHVybiBuZXcgU2ltcGxlR2x5cGgoe2NvbnRvdXJzOmwsaW5zdHJ1Y3Rpb25zOm59KX1nZXRTaXplKCl7bGV0IGU9Mip0aGlzLmNvbnRvdXJzLmxlbmd0aCsyK3RoaXMuaW5zdHJ1Y3Rpb25zLmxlbmd0aCx0PTAsaT0wO2Zvcihjb25zdCBhIG9mIHRoaXMuY29udG91cnMpe2UrPWEuZmxhZ3MubGVuZ3RoO2ZvcihsZXQgcj0wLHM9YS54Q29vcmRpbmF0ZXMubGVuZ3RoO3I8cztyKyspe2NvbnN0IHM9YS54Q29vcmRpbmF0ZXNbcl0sbj1hLnlDb29yZGluYXRlc1tyXTtsZXQgbz1NYXRoLmFicyhzLXQpO28+MjU1P2UrPTI6bz4wJiYoZSs9MSk7dD1zO289TWF0aC5hYnMobi1pKTtvPjI1NT9lKz0yOm8+MCYmKGUrPTEpO2k9bn19cmV0dXJuIGV9d3JpdGUoZSx0KXtjb25zdCBpPWUsYT1bXSxyPVtdLHM9W107bGV0IG49MCxvPTA7Zm9yKGNvbnN0IGkgb2YgdGhpcy5jb250b3Vycyl7Zm9yKGxldCBlPTAsdD1pLnhDb29yZGluYXRlcy5sZW5ndGg7ZTx0O2UrKyl7bGV0IHQ9aS5mbGFnc1tlXTtjb25zdCBnPWkueENvb3JkaW5hdGVzW2VdO2xldCBjPWctbjtpZigwPT09Yyl7dHw9MTY7YS5wdXNoKDApfWVsc2V7Y29uc3QgZT1NYXRoLmFicyhjKTtpZihlPD0yNTUpe3R8PWM+PTA/MTg6MjthLnB1c2goZSl9ZWxzZSBhLnB1c2goYyl9bj1nO2NvbnN0IEM9aS55Q29vcmRpbmF0ZXNbZV07Yz1DLW87aWYoMD09PWMpe3R8PTMyO3IucHVzaCgwKX1lbHNle2NvbnN0IGU9TWF0aC5hYnMoYyk7aWYoZTw9MjU1KXt0fD1jPj0wPzM2OjQ7ci5wdXNoKGUpfWVsc2Ugci5wdXNoKGMpfW89QztzLnB1c2godCl9dC5zZXRVaW50MTYoZSxhLmxlbmd0aC0xKTtlKz0yfXQuc2V0VWludDE2KGUsdGhpcy5pbnN0cnVjdGlvbnMubGVuZ3RoKTtlKz0yO2lmKHRoaXMuaW5zdHJ1Y3Rpb25zLmxlbmd0aCl7bmV3IFVpbnQ4QXJyYXkodC5idWZmZXIsMCx0LmJ1ZmZlci5ieXRlTGVuZ3RoKS5zZXQodGhpcy5pbnN0cnVjdGlvbnMsZSk7ZSs9dGhpcy5pbnN0cnVjdGlvbnMubGVuZ3RofWZvcihjb25zdCBpIG9mIHMpdC5zZXRVaW50OChlKyssaSk7Zm9yKGxldCBpPTAscj1hLmxlbmd0aDtpPHI7aSsrKXtjb25zdCByPWFbaV0sbj1zW2ldO2lmKDImbil0LnNldFVpbnQ4KGUrKyxyKTtlbHNlIGlmKCEoMTYmbikpe3Quc2V0SW50MTYoZSxyKTtlKz0yfX1mb3IobGV0IGk9MCxhPXIubGVuZ3RoO2k8YTtpKyspe2NvbnN0IGE9cltpXSxuPXNbaV07aWYoNCZuKXQuc2V0VWludDgoZSsrLGEpO2Vsc2UgaWYoISgzMiZuKSl7dC5zZXRJbnQxNihlLGEpO2UrPTJ9fXJldHVybiBlLWl9c2NhbGUoZSx0KXtmb3IoY29uc3QgaSBvZiB0aGlzLmNvbnRvdXJzKWlmKDAhPT1pLnhDb29yZGluYXRlcy5sZW5ndGgpZm9yKGxldCBhPTAscj1pLnhDb29yZGluYXRlcy5sZW5ndGg7YTxyO2ErKylpLnhDb29yZGluYXRlc1thXT1NYXRoLnJvdW5kKGUrKGkueENvb3JkaW5hdGVzW2FdLWUpKnQpfX1jbGFzcyBDb21wb3NpdGVHbHlwaHtjb25zdHJ1Y3Rvcih7ZmxhZ3M6ZSxnbHlwaEluZGV4OnQsYXJndW1lbnQxOmksYXJndW1lbnQyOmEsdHJhbnNmOnIsaW5zdHJ1Y3Rpb25zOnN9KXt0aGlzLmZsYWdzPWU7dGhpcy5nbHlwaEluZGV4PXQ7dGhpcy5hcmd1bWVudDE9aTt0aGlzLmFyZ3VtZW50Mj1hO3RoaXMudHJhbnNmPXI7dGhpcy5pbnN0cnVjdGlvbnM9c31zdGF0aWMgcGFyc2UoZSx0KXtjb25zdCBpPWUsYT1bXTtsZXQgcj10LmdldFVpbnQxNihlKTtjb25zdCBzPXQuZ2V0VWludDE2KGUrMik7ZSs9NDtsZXQgbixvO2lmKDEmcil7aWYoMiZyKXtuPXQuZ2V0SW50MTYoZSk7bz10LmdldEludDE2KGUrMil9ZWxzZXtuPXQuZ2V0VWludDE2KGUpO289dC5nZXRVaW50MTYoZSsyKX1lKz00O3JePTF9ZWxzZXtpZigyJnIpe249dC5nZXRJbnQ4KGUpO289dC5nZXRJbnQ4KGUrMSl9ZWxzZXtuPXQuZ2V0VWludDgoZSk7bz10LmdldFVpbnQ4KGUrMSl9ZSs9Mn1pZig4JnIpe2EucHVzaCh0LmdldFVpbnQxNihlKSk7ZSs9Mn1lbHNlIGlmKDY0JnIpe2EucHVzaCh0LmdldFVpbnQxNihlKSx0LmdldFVpbnQxNihlKzIpKTtlKz00fWVsc2UgaWYoMTI4JnIpe2EucHVzaCh0LmdldFVpbnQxNihlKSx0LmdldFVpbnQxNihlKzIpLHQuZ2V0VWludDE2KGUrNCksdC5nZXRVaW50MTYoZSs2KSk7ZSs9OH1sZXQgZz1udWxsO2lmKDI1NiZyKXtjb25zdCBpPXQuZ2V0VWludDE2KGUpO2UrPTI7Zz1uZXcgVWludDhBcnJheSh0KS5zbGljZShlLGUraSk7ZSs9aX1yZXR1cm5bZS1pLG5ldyBDb21wb3NpdGVHbHlwaCh7ZmxhZ3M6cixnbHlwaEluZGV4OnMsYXJndW1lbnQxOm4sYXJndW1lbnQyOm8sdHJhbnNmOmEsaW5zdHJ1Y3Rpb25zOmd9KV19Z2V0U2l6ZSgpe2xldCBlPTQrMip0aGlzLnRyYW5zZi5sZW5ndGg7MjU2JnRoaXMuZmxhZ3MmJihlKz0yK3RoaXMuaW5zdHJ1Y3Rpb25zLmxlbmd0aCk7ZSs9MjsyJnRoaXMuZmxhZ3M/dGhpcy5hcmd1bWVudDE+PS0xMjgmJnRoaXMuYXJndW1lbnQxPD0xMjcmJnRoaXMuYXJndW1lbnQyPj0tMTI4JiZ0aGlzLmFyZ3VtZW50Mjw9MTI3fHwoZSs9Mik6dGhpcy5hcmd1bWVudDE+PTAmJnRoaXMuYXJndW1lbnQxPD0yNTUmJnRoaXMuYXJndW1lbnQyPj0wJiZ0aGlzLmFyZ3VtZW50Mjw9MjU1fHwoZSs9Mik7cmV0dXJuIGV9d3JpdGUoZSx0KXtjb25zdCBpPWU7MiZ0aGlzLmZsYWdzP3RoaXMuYXJndW1lbnQxPj0tMTI4JiZ0aGlzLmFyZ3VtZW50MTw9MTI3JiZ0aGlzLmFyZ3VtZW50Mj49LTEyOCYmdGhpcy5hcmd1bWVudDI8PTEyN3x8KHRoaXMuZmxhZ3N8PTEpOnRoaXMuYXJndW1lbnQxPj0wJiZ0aGlzLmFyZ3VtZW50MTw9MjU1JiZ0aGlzLmFyZ3VtZW50Mj49MCYmdGhpcy5hcmd1bWVudDI8PTI1NXx8KHRoaXMuZmxhZ3N8PTEpO3Quc2V0VWludDE2KGUsdGhpcy5mbGFncyk7dC5zZXRVaW50MTYoZSsyLHRoaXMuZ2x5cGhJbmRleCk7ZSs9NDtpZigxJnRoaXMuZmxhZ3Mpe2lmKDImdGhpcy5mbGFncyl7dC5zZXRJbnQxNihlLHRoaXMuYXJndW1lbnQxKTt0LnNldEludDE2KGUrMix0aGlzLmFyZ3VtZW50Mil9ZWxzZXt0LnNldFVpbnQxNihlLHRoaXMuYXJndW1lbnQxKTt0LnNldFVpbnQxNihlKzIsdGhpcy5hcmd1bWVudDIpfWUrPTR9ZWxzZXt0LnNldFVpbnQ4KGUsdGhpcy5hcmd1bWVudDEpO3Quc2V0VWludDgoZSsxLHRoaXMuYXJndW1lbnQyKTtlKz0yfWlmKDI1NiZ0aGlzLmZsYWdzKXt0LnNldFVpbnQxNihlLHRoaXMuaW5zdHJ1Y3Rpb25zLmxlbmd0aCk7ZSs9MjtpZih0aGlzLmluc3RydWN0aW9ucy5sZW5ndGgpe25ldyBVaW50OEFycmF5KHQuYnVmZmVyLDAsdC5idWZmZXIuYnl0ZUxlbmd0aCkuc2V0KHRoaXMuaW5zdHJ1Y3Rpb25zLGUpO2UrPXRoaXMuaW5zdHJ1Y3Rpb25zLmxlbmd0aH19cmV0dXJuIGUtaX1zY2FsZShlLHQpe319ZnVuY3Rpb24gd3JpdGVJbnQxNihlLHQsaSl7ZVt0XT1pPj44JjI1NTtlW3QrMV09MjU1Jml9ZnVuY3Rpb24gd3JpdGVJbnQzMihlLHQsaSl7ZVt0XT1pPj4yNCYyNTU7ZVt0KzFdPWk+PjE2JjI1NTtlW3QrMl09aT4+OCYyNTU7ZVt0KzNdPTI1NSZpfWZ1bmN0aW9uIHdyaXRlRGF0YShlLHQsaSl7aWYoaSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpZS5zZXQoaSx0KTtlbHNlIGlmKCJzdHJpbmciPT10eXBlb2YgaSlmb3IobGV0IGE9MCxyPWkubGVuZ3RoO2E8cjthKyspZVt0KytdPTI1NSZpLmNoYXJDb2RlQXQoYSk7ZWxzZSBmb3IoY29uc3QgYSBvZiBpKWVbdCsrXT0yNTUmYX1jbGFzcyBPcGVuVHlwZUZpbGVCdWlsZGVye2NvbnN0cnVjdG9yKGUpe3RoaXMuc2ZudD1lO3RoaXMudGFibGVzPU9iamVjdC5jcmVhdGUobnVsbCl9c3RhdGljIGdldFNlYXJjaFBhcmFtcyhlLHQpe2xldCBpPTEsYT0wO2Zvcig7KGleZSk+aTspe2k8PD0xO2ErK31jb25zdCByPWkqdDtyZXR1cm57cmFuZ2U6cixlbnRyeTphLHJhbmdlU2hpZnQ6dCplLXJ9fXRvQXJyYXkoKXtsZXQgZT10aGlzLnNmbnQ7Y29uc3QgdD10aGlzLnRhYmxlcyxpPU9iamVjdC5rZXlzKHQpO2kuc29ydCgpO2NvbnN0IGE9aS5sZW5ndGg7bGV0IHIscyxuLG8sZyxjPTEyKzE2KmE7Y29uc3QgQz1bY107Zm9yKHI9MDtyPGE7cisrKXtvPXRbaVtyXV07Yys9KG8ubGVuZ3RoKzMmLTQpPj4+MDtDLnB1c2goYyl9Y29uc3QgaD1uZXcgVWludDhBcnJheShjKTtmb3Iocj0wO3I8YTtyKyspe289dFtpW3JdXTt3cml0ZURhdGEoaCxDW3JdLG8pfSJ0cnVlIj09PWUmJihlPXN0cmluZzMyKDY1NTM2KSk7aFswXT0yNTUmZS5jaGFyQ29kZUF0KDApO2hbMV09MjU1JmUuY2hhckNvZGVBdCgxKTtoWzJdPTI1NSZlLmNoYXJDb2RlQXQoMik7aFszXT0yNTUmZS5jaGFyQ29kZUF0KDMpO3dyaXRlSW50MTYoaCw0LGEpO2NvbnN0IGw9T3BlblR5cGVGaWxlQnVpbGRlci5nZXRTZWFyY2hQYXJhbXMoYSwxNik7d3JpdGVJbnQxNihoLDYsbC5yYW5nZSk7d3JpdGVJbnQxNihoLDgsbC5lbnRyeSk7d3JpdGVJbnQxNihoLDEwLGwucmFuZ2VTaGlmdCk7Yz0xMjtmb3Iocj0wO3I8YTtyKyspe2c9aVtyXTtoW2NdPTI1NSZnLmNoYXJDb2RlQXQoMCk7aFtjKzFdPTI1NSZnLmNoYXJDb2RlQXQoMSk7aFtjKzJdPTI1NSZnLmNoYXJDb2RlQXQoMik7aFtjKzNdPTI1NSZnLmNoYXJDb2RlQXQoMyk7bGV0IGU9MDtmb3Iocz1DW3JdLG49Q1tyKzFdO3M8bjtzKz00KXtlPWUrcmVhZFVpbnQzMihoLHMpPj4+MH13cml0ZUludDMyKGgsYys0LGUpO3dyaXRlSW50MzIoaCxjKzgsQ1tyXSk7d3JpdGVJbnQzMihoLGMrMTIsdFtnXS5sZW5ndGgpO2MrPTE2fXJldHVybiBofWFkZFRhYmxlKGUsdCl7aWYoZSBpbiB0aGlzLnRhYmxlcyl0aHJvdyBuZXcgRXJyb3IoIlRhYmxlICIrZSsiIGFscmVhZHkgZXhpc3RzIik7dGhpcy50YWJsZXNbZV09dH19Y29uc3Qgb2E9WzRdLGdhPVs1XSxJYT1bNl0sY2E9WzddLENhPVs4XSxoYT1bMTIsMzVdLGxhPVsxNF0sQmE9WzIxXSxRYT1bMjJdLEVhPVszMF0sdWE9WzMxXTtjbGFzcyBUeXBlMUNoYXJTdHJpbmd7Y29uc3RydWN0b3IoKXt0aGlzLndpZHRoPTA7dGhpcy5sc2I9MDt0aGlzLmZsZXhpbmc9ITE7dGhpcy5vdXRwdXQ9W107dGhpcy5zdGFjaz1bXX1jb252ZXJ0KGUsdCxpKXtjb25zdCBhPWUubGVuZ3RoO2xldCByLHMsbixvPSExO2ZvcihsZXQgZz0wO2c8YTtnKyspe2xldCBhPWVbZ107aWYoYTwzMil7MTI9PT1hJiYoYT0oYTw8OCkrZVsrK2ddKTtzd2l0Y2goYSl7Y2FzZSAxOmNhc2UgMzpjYXNlIDk6Y2FzZSAzMDcyOmNhc2UgMzA3MzpjYXNlIDMwNzQ6Y2FzZSAzMTA1OnRoaXMuc3RhY2s9W107YnJlYWs7Y2FzZSA0OmlmKHRoaXMuZmxleGluZyl7aWYodGhpcy5zdGFjay5sZW5ndGg8MSl7bz0hMDticmVha31jb25zdCBlPXRoaXMuc3RhY2sucG9wKCk7dGhpcy5zdGFjay5wdXNoKDAsZSk7YnJlYWt9bz10aGlzLmV4ZWN1dGVDb21tYW5kKDEsb2EpO2JyZWFrO2Nhc2UgNTpvPXRoaXMuZXhlY3V0ZUNvbW1hbmQoMixnYSk7YnJlYWs7Y2FzZSA2Om89dGhpcy5leGVjdXRlQ29tbWFuZCgxLElhKTticmVhaztjYXNlIDc6bz10aGlzLmV4ZWN1dGVDb21tYW5kKDEsY2EpO2JyZWFrO2Nhc2UgODpvPXRoaXMuZXhlY3V0ZUNvbW1hbmQoNixDYSk7YnJlYWs7Y2FzZSAxMDppZih0aGlzLnN0YWNrLmxlbmd0aDwxKXtvPSEwO2JyZWFrfW49dGhpcy5zdGFjay5wb3AoKTtpZighdFtuXSl7bz0hMDticmVha31vPXRoaXMuY29udmVydCh0W25dLHQsaSk7YnJlYWs7Y2FzZSAxMTpyZXR1cm4gbztjYXNlIDEzOmlmKHRoaXMuc3RhY2subGVuZ3RoPDIpe289ITA7YnJlYWt9cj10aGlzLnN0YWNrLnBvcCgpO3M9dGhpcy5zdGFjay5wb3AoKTt0aGlzLmxzYj1zO3RoaXMud2lkdGg9cjt0aGlzLnN0YWNrLnB1c2gocixzKTtvPXRoaXMuZXhlY3V0ZUNvbW1hbmQoMixRYSk7YnJlYWs7Y2FzZSAxNDp0aGlzLm91dHB1dC5wdXNoKGxhWzBdKTticmVhaztjYXNlIDIxOmlmKHRoaXMuZmxleGluZylicmVhaztvPXRoaXMuZXhlY3V0ZUNvbW1hbmQoMixCYSk7YnJlYWs7Y2FzZSAyMjppZih0aGlzLmZsZXhpbmcpe3RoaXMuc3RhY2sucHVzaCgwKTticmVha31vPXRoaXMuZXhlY3V0ZUNvbW1hbmQoMSxRYSk7YnJlYWs7Y2FzZSAzMDpvPXRoaXMuZXhlY3V0ZUNvbW1hbmQoNCxFYSk7YnJlYWs7Y2FzZSAzMTpvPXRoaXMuZXhlY3V0ZUNvbW1hbmQoNCx1YSk7YnJlYWs7Y2FzZSAzMDc4OmlmKGkpe2NvbnN0IGU9dGhpcy5zdGFjay5hdCgtNSk7dGhpcy5zZWFjPXRoaXMuc3RhY2suc3BsaWNlKC00LDQpO3RoaXMuc2VhY1swXSs9dGhpcy5sc2ItZTtvPXRoaXMuZXhlY3V0ZUNvbW1hbmQoMCxsYSl9ZWxzZSBvPXRoaXMuZXhlY3V0ZUNvbW1hbmQoNCxsYSk7YnJlYWs7Y2FzZSAzMDc5OmlmKHRoaXMuc3RhY2subGVuZ3RoPDQpe289ITA7YnJlYWt9dGhpcy5zdGFjay5wb3AoKTtyPXRoaXMuc3RhY2sucG9wKCk7Y29uc3QgZT10aGlzLnN0YWNrLnBvcCgpO3M9dGhpcy5zdGFjay5wb3AoKTt0aGlzLmxzYj1zO3RoaXMud2lkdGg9cjt0aGlzLnN0YWNrLnB1c2gocixzLGUpO289dGhpcy5leGVjdXRlQ29tbWFuZCgzLEJhKTticmVhaztjYXNlIDMwODQ6aWYodGhpcy5zdGFjay5sZW5ndGg8Mil7bz0hMDticmVha31jb25zdCBnPXRoaXMuc3RhY2sucG9wKCksYz10aGlzLnN0YWNrLnBvcCgpO3RoaXMuc3RhY2sucHVzaChjL2cpO2JyZWFrO2Nhc2UgMzA4ODppZih0aGlzLnN0YWNrLmxlbmd0aDwyKXtvPSEwO2JyZWFrfW49dGhpcy5zdGFjay5wb3AoKTtjb25zdCBDPXRoaXMuc3RhY2sucG9wKCk7aWYoMD09PW4mJjM9PT1DKXtjb25zdCBlPXRoaXMuc3RhY2suc3BsaWNlKC0xNywxNyk7dGhpcy5zdGFjay5wdXNoKGVbMl0rZVswXSxlWzNdK2VbMV0sZVs0XSxlWzVdLGVbNl0sZVs3XSxlWzhdLGVbOV0sZVsxMF0sZVsxMV0sZVsxMl0sZVsxM10sZVsxNF0pO289dGhpcy5leGVjdXRlQ29tbWFuZCgxMyxoYSwhMCk7dGhpcy5mbGV4aW5nPSExO3RoaXMuc3RhY2sucHVzaChlWzE1XSxlWzE2XSl9ZWxzZSAxPT09biYmMD09PUMmJih0aGlzLmZsZXhpbmc9ITApO2JyZWFrO2Nhc2UgMzA4OTpicmVhaztkZWZhdWx0Ondhcm4oJ1Vua25vd24gdHlwZSAxIGNoYXJzdHJpbmcgY29tbWFuZCBvZiAiJythKyciJyl9aWYobylicmVha31lbHNle2E8PTI0Nj9hLT0xMzk6YT1hPD0yNTA/MjU2KihhLTI0NykrZVsrK2ddKzEwODphPD0yNTQ/LTI1NiooYS0yNTEpLWVbKytnXS0xMDg6KDI1NSZlWysrZ10pPDwyNHwoMjU1JmVbKytnXSk8PDE2fCgyNTUmZVsrK2ddKTw8OHwoMjU1JmVbKytnXSk8PDA7dGhpcy5zdGFjay5wdXNoKGEpfX1yZXR1cm4gb31leGVjdXRlQ29tbWFuZChlLHQsaSl7Y29uc3QgYT10aGlzLnN0YWNrLmxlbmd0aDtpZihlPmEpcmV0dXJuITA7Y29uc3Qgcj1hLWU7Zm9yKGxldCBlPXI7ZTxhO2UrKyl7bGV0IHQ9dGhpcy5zdGFja1tlXTtpZihOdW1iZXIuaXNJbnRlZ2VyKHQpKXRoaXMub3V0cHV0LnB1c2goMjgsdD4+OCYyNTUsMjU1JnQpO2Vsc2V7dD02NTUzNip0fDA7dGhpcy5vdXRwdXQucHVzaCgyNTUsdD4+MjQmMjU1LHQ+PjE2JjI1NSx0Pj44JjI1NSwyNTUmdCl9fXRoaXMub3V0cHV0LnB1c2goLi4udCk7aT90aGlzLnN0YWNrLnNwbGljZShyLGUpOnRoaXMuc3RhY2subGVuZ3RoPTA7cmV0dXJuITF9fWZ1bmN0aW9uIGlzSGV4RGlnaXQoZSl7cmV0dXJuIGU+PTQ4JiZlPD01N3x8ZT49NjUmJmU8PTcwfHxlPj05NyYmZTw9MTAyfWZ1bmN0aW9uIGRlY3J5cHQoZSx0LGkpe2lmKGk+PWUubGVuZ3RoKXJldHVybiBuZXcgVWludDhBcnJheSgwKTtsZXQgYSxyLHM9MHx0O2ZvcihhPTA7YTxpO2ErKylzPTUyODQ1KihlW2FdK3MpKzIyNzE5JjY1NTM1O2NvbnN0IG49ZS5sZW5ndGgtaSxvPW5ldyBVaW50OEFycmF5KG4pO2ZvcihhPWkscj0wO3I8bjthKysscisrKXtjb25zdCB0PWVbYV07b1tyXT10XnM+Pjg7cz01Mjg0NSoodCtzKSsyMjcxOSY2NTUzNX1yZXR1cm4gb31mdW5jdGlvbiBpc1NwZWNpYWwoZSl7cmV0dXJuIDQ3PT09ZXx8OTE9PT1lfHw5Mz09PWV8fDEyMz09PWV8fDEyNT09PWV8fDQwPT09ZXx8NDE9PT1lfWNsYXNzIFR5cGUxUGFyc2Vye2NvbnN0cnVjdG9yKGUsdCxpKXtpZih0KXtjb25zdCB0PWUuZ2V0Qnl0ZXMoKSxpPSEoKGlzSGV4RGlnaXQodFswXSl8fGlzV2hpdGVTcGFjZSh0WzBdKSkmJmlzSGV4RGlnaXQodFsxXSkmJmlzSGV4RGlnaXQodFsyXSkmJmlzSGV4RGlnaXQodFszXSkmJmlzSGV4RGlnaXQodFs0XSkmJmlzSGV4RGlnaXQodFs1XSkmJmlzSGV4RGlnaXQodFs2XSkmJmlzSGV4RGlnaXQodFs3XSkpO2U9bmV3IFN0cmVhbShpP2RlY3J5cHQodCw1NTY2NSw0KTpmdW5jdGlvbiBkZWNyeXB0QXNjaWkoZSx0LGkpe2xldCBhPTB8dDtjb25zdCByPWUubGVuZ3RoLHM9bmV3IFVpbnQ4QXJyYXkocj4+PjEpO2xldCBuLG87Zm9yKG49MCxvPTA7bjxyO24rKyl7Y29uc3QgdD1lW25dO2lmKCFpc0hleERpZ2l0KHQpKWNvbnRpbnVlO24rKztsZXQgaTtmb3IoO248ciYmIWlzSGV4RGlnaXQoaT1lW25dKTspbisrO2lmKG48cil7Y29uc3QgZT1wYXJzZUludChTdHJpbmcuZnJvbUNoYXJDb2RlKHQsaSksMTYpO3NbbysrXT1lXmE+Pjg7YT01Mjg0NSooZSthKSsyMjcxOSY2NTUzNX19cmV0dXJuIHMuc2xpY2UoaSxvKX0odCw1NTY2NSw0KSl9dGhpcy5zZWFjQW5hbHlzaXNFbmFibGVkPSEhaTt0aGlzLnN0cmVhbT1lO3RoaXMubmV4dENoYXIoKX1yZWFkTnVtYmVyQXJyYXkoKXt0aGlzLmdldFRva2VuKCk7Y29uc3QgZT1bXTtmb3IoOzspe2NvbnN0IHQ9dGhpcy5nZXRUb2tlbigpO2lmKG51bGw9PT10fHwiXSI9PT10fHwifSI9PT10KWJyZWFrO2UucHVzaChwYXJzZUZsb2F0KHR8fDApKX1yZXR1cm4gZX1yZWFkTnVtYmVyKCl7Y29uc3QgZT10aGlzLmdldFRva2VuKCk7cmV0dXJuIHBhcnNlRmxvYXQoZXx8MCl9cmVhZEludCgpe2NvbnN0IGU9dGhpcy5nZXRUb2tlbigpO3JldHVybiAwfHBhcnNlSW50KGV8fDAsMTApfXJlYWRCb29sZWFuKCl7cmV0dXJuInRydWUiPT09dGhpcy5nZXRUb2tlbigpPzE6MH1uZXh0Q2hhcigpe3JldHVybiB0aGlzLmN1cnJlbnRDaGFyPXRoaXMuc3RyZWFtLmdldEJ5dGUoKX1wcmV2Q2hhcigpe3RoaXMuc3RyZWFtLnNraXAoLTIpO3JldHVybiB0aGlzLmN1cnJlbnRDaGFyPXRoaXMuc3RyZWFtLmdldEJ5dGUoKX1nZXRUb2tlbigpe2xldCBlPSExLHQ9dGhpcy5jdXJyZW50Q2hhcjtmb3IoOzspe2lmKC0xPT09dClyZXR1cm4gbnVsbDtpZihlKTEwIT09dCYmMTMhPT10fHwoZT0hMSk7ZWxzZSBpZigzNz09PXQpZT0hMDtlbHNlIGlmKCFpc1doaXRlU3BhY2UodCkpYnJlYWs7dD10aGlzLm5leHRDaGFyKCl9aWYoaXNTcGVjaWFsKHQpKXt0aGlzLm5leHRDaGFyKCk7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUodCl9bGV0IGk9IiI7ZG97aSs9U3RyaW5nLmZyb21DaGFyQ29kZSh0KTt0PXRoaXMubmV4dENoYXIoKX13aGlsZSh0Pj0wJiYhaXNXaGl0ZVNwYWNlKHQpJiYhaXNTcGVjaWFsKHQpKTtyZXR1cm4gaX1yZWFkQ2hhclN0cmluZ3MoZSx0KXtyZXR1cm4tMT09PXQ/ZTpkZWNyeXB0KGUsNDMzMCx0KX1leHRyYWN0Rm9udFByb2dyYW0oZSl7Y29uc3QgdD10aGlzLnN0cmVhbSxpPVtdLGE9W10scj1PYmplY3QuY3JlYXRlKG51bGwpO3IubGVuSVY9NDtjb25zdCBzPXtzdWJyczpbXSxjaGFyc3RyaW5nczpbXSxwcm9wZXJ0aWVzOntwcml2YXRlRGF0YTpyfX07bGV0IG4sbyxnLGM7Zm9yKDtudWxsIT09KG49dGhpcy5nZXRUb2tlbigpKTspaWYoIi8iPT09bil7bj10aGlzLmdldFRva2VuKCk7c3dpdGNoKG4pe2Nhc2UiQ2hhclN0cmluZ3MiOnRoaXMuZ2V0VG9rZW4oKTt0aGlzLmdldFRva2VuKCk7dGhpcy5nZXRUb2tlbigpO3RoaXMuZ2V0VG9rZW4oKTtmb3IoOzspe249dGhpcy5nZXRUb2tlbigpO2lmKG51bGw9PT1ufHwiZW5kIj09PW4pYnJlYWs7aWYoIi8iIT09biljb250aW51ZTtjb25zdCBlPXRoaXMuZ2V0VG9rZW4oKTtvPXRoaXMucmVhZEludCgpO3RoaXMuZ2V0VG9rZW4oKTtnPW8+MD90LmdldEJ5dGVzKG8pOm5ldyBVaW50OEFycmF5KDApO2M9cy5wcm9wZXJ0aWVzLnByaXZhdGVEYXRhLmxlbklWO2NvbnN0IGk9dGhpcy5yZWFkQ2hhclN0cmluZ3MoZyxjKTt0aGlzLm5leHRDaGFyKCk7bj10aGlzLmdldFRva2VuKCk7Im5vYWNjZXNzIj09PW4/dGhpcy5nZXRUb2tlbigpOiIvIj09PW4mJnRoaXMucHJldkNoYXIoKTthLnB1c2goe2dseXBoOmUsZW5jb2RlZDppfSl9YnJlYWs7Y2FzZSJTdWJycyI6dGhpcy5yZWFkSW50KCk7dGhpcy5nZXRUb2tlbigpO2Zvcig7ImR1cCI9PT10aGlzLmdldFRva2VuKCk7KXtjb25zdCBlPXRoaXMucmVhZEludCgpO289dGhpcy5yZWFkSW50KCk7dGhpcy5nZXRUb2tlbigpO2c9bz4wP3QuZ2V0Qnl0ZXMobyk6bmV3IFVpbnQ4QXJyYXkoMCk7Yz1zLnByb3BlcnRpZXMucHJpdmF0ZURhdGEubGVuSVY7Y29uc3QgYT10aGlzLnJlYWRDaGFyU3RyaW5ncyhnLGMpO3RoaXMubmV4dENoYXIoKTtuPXRoaXMuZ2V0VG9rZW4oKTsibm9hY2Nlc3MiPT09biYmdGhpcy5nZXRUb2tlbigpO2lbZV09YX1icmVhaztjYXNlIkJsdWVWYWx1ZXMiOmNhc2UiT3RoZXJCbHVlcyI6Y2FzZSJGYW1pbHlCbHVlcyI6Y2FzZSJGYW1pbHlPdGhlckJsdWVzIjpjb25zdCBlPXRoaXMucmVhZE51bWJlckFycmF5KCk7ZS5sZW5ndGg+MCYmZS5sZW5ndGgsMDticmVhaztjYXNlIlN0ZW1TbmFwSCI6Y2FzZSJTdGVtU25hcFYiOnMucHJvcGVydGllcy5wcml2YXRlRGF0YVtuXT10aGlzLnJlYWROdW1iZXJBcnJheSgpO2JyZWFrO2Nhc2UiU3RkSFciOmNhc2UiU3RkVlciOnMucHJvcGVydGllcy5wcml2YXRlRGF0YVtuXT10aGlzLnJlYWROdW1iZXJBcnJheSgpWzBdO2JyZWFrO2Nhc2UiQmx1ZVNoaWZ0IjpjYXNlImxlbklWIjpjYXNlIkJsdWVGdXp6IjpjYXNlIkJsdWVTY2FsZSI6Y2FzZSJMYW5ndWFnZUdyb3VwIjpzLnByb3BlcnRpZXMucHJpdmF0ZURhdGFbbl09dGhpcy5yZWFkTnVtYmVyKCk7YnJlYWs7Y2FzZSJFeHBhbnNpb25GYWN0b3IiOnMucHJvcGVydGllcy5wcml2YXRlRGF0YVtuXT10aGlzLnJlYWROdW1iZXIoKXx8LjA2O2JyZWFrO2Nhc2UiRm9yY2VCb2xkIjpzLnByb3BlcnRpZXMucHJpdmF0ZURhdGFbbl09dGhpcy5yZWFkQm9vbGVhbigpfX1mb3IoY29uc3R7ZW5jb2RlZDp0LGdseXBoOnJ9b2YgYSl7Y29uc3QgYT1uZXcgVHlwZTFDaGFyU3RyaW5nLG49YS5jb252ZXJ0KHQsaSx0aGlzLnNlYWNBbmFseXNpc0VuYWJsZWQpO2xldCBvPWEub3V0cHV0O24mJihvPVsxNF0pO2NvbnN0IGc9e2dseXBoTmFtZTpyLGNoYXJzdHJpbmc6byx3aWR0aDphLndpZHRoLGxzYjphLmxzYixzZWFjOmEuc2VhY307Ii5ub3RkZWYiPT09cj9zLmNoYXJzdHJpbmdzLnVuc2hpZnQoZyk6cy5jaGFyc3RyaW5ncy5wdXNoKGcpO2lmKGUuYnVpbHRJbkVuY29kaW5nKXtjb25zdCB0PWUuYnVpbHRJbkVuY29kaW5nLmluZGV4T2Yocik7dD4tMSYmdm9pZCAwPT09ZS53aWR0aHNbdF0mJnQ+PWUuZmlyc3RDaGFyJiZ0PD1lLmxhc3RDaGFyJiYoZS53aWR0aHNbdF09YS53aWR0aCl9fXJldHVybiBzfWV4dHJhY3RGb250SGVhZGVyKGUpe2xldCB0O2Zvcig7bnVsbCE9PSh0PXRoaXMuZ2V0VG9rZW4oKSk7KWlmKCIvIj09PXQpe3Q9dGhpcy5nZXRUb2tlbigpO3N3aXRjaCh0KXtjYXNlIkZvbnRNYXRyaXgiOmNvbnN0IGk9dGhpcy5yZWFkTnVtYmVyQXJyYXkoKTtlLmZvbnRNYXRyaXg9aTticmVhaztjYXNlIkVuY29kaW5nIjpjb25zdCBhPXRoaXMuZ2V0VG9rZW4oKTtsZXQgcjtpZigvXlxkKyQvLnRlc3QoYSkpe3I9W107Y29uc3QgZT0wfHBhcnNlSW50KGEsMTApO3RoaXMuZ2V0VG9rZW4oKTtmb3IobGV0IGk9MDtpPGU7aSsrKXt0PXRoaXMuZ2V0VG9rZW4oKTtmb3IoOyJkdXAiIT09dCYmImRlZiIhPT10Oyl7dD10aGlzLmdldFRva2VuKCk7aWYobnVsbD09PXQpcmV0dXJufWlmKCJkZWYiPT09dClicmVhaztjb25zdCBlPXRoaXMucmVhZEludCgpO3RoaXMuZ2V0VG9rZW4oKTtjb25zdCBpPXRoaXMuZ2V0VG9rZW4oKTtyW2VdPWk7dGhpcy5nZXRUb2tlbigpfX1lbHNlIHI9Z2V0RW5jb2RpbmcoYSk7ZS5idWlsdEluRW5jb2Rpbmc9cjticmVhaztjYXNlIkZvbnRCQm94Ijpjb25zdCBzPXRoaXMucmVhZE51bWJlckFycmF5KCk7ZS5hc2NlbnQ9TWF0aC5tYXgoc1szXSxzWzFdKTtlLmRlc2NlbnQ9TWF0aC5taW4oc1sxXSxzWzNdKTtlLmFzY2VudFNjYWxlZD0hMH19fX1mdW5jdGlvbiBmaW5kQmxvY2soZSx0LGkpe2NvbnN0IGE9ZS5sZW5ndGgscj10Lmxlbmd0aCxzPWEtcjtsZXQgbj1pLG89ITE7Zm9yKDtuPHM7KXtsZXQgaT0wO2Zvcig7aTxyJiZlW24raV09PT10W2ldOylpKys7aWYoaT49cil7bis9aTtmb3IoO248YSYmaXNXaGl0ZVNwYWNlKGVbbl0pOyluKys7bz0hMDticmVha31uKyt9cmV0dXJue2ZvdW5kOm8sbGVuZ3RoOm59fWNsYXNzIFR5cGUxRm9udHtjb25zdHJ1Y3RvcihlLHQsaSl7bGV0IGE9aS5sZW5ndGgxLHI9aS5sZW5ndGgyLHM9dC5wZWVrQnl0ZXMoNik7Y29uc3Qgbj0xMjg9PT1zWzBdJiYxPT09c1sxXTtpZihuKXt0LnNraXAoNik7YT1zWzVdPDwyNHxzWzRdPDwxNnxzWzNdPDw4fHNbMl19Y29uc3Qgbz1mdW5jdGlvbiBnZXRIZWFkZXJCbG9jayhlLHQpe2NvbnN0IGk9WzEwMSwxMDEsMTIwLDEwMSw5OV0sYT1lLnBvcztsZXQgcixzLG4sbzt0cnl7cj1lLmdldEJ5dGVzKHQpO3M9ci5sZW5ndGh9Y2F0Y2h7fWlmKHM9PT10KXtuPWZpbmRCbG9jayhyLGksdC0yKmkubGVuZ3RoKTtpZihuLmZvdW5kJiZuLmxlbmd0aD09PXQpcmV0dXJue3N0cmVhbTpuZXcgU3RyZWFtKHIpLGxlbmd0aDp0fX13YXJuKCdJbnZhbGlkICJMZW5ndGgxIiBwcm9wZXJ0eSBpbiBUeXBlMSBmb250IC0tIHRyeWluZyB0byByZWNvdmVyLicpO2UucG9zPWE7Zm9yKDs7KXtuPWZpbmRCbG9jayhlLnBlZWtCeXRlcygyMDQ4KSxpLDApO2lmKDA9PT1uLmxlbmd0aClicmVhaztlLnBvcys9bi5sZW5ndGg7aWYobi5mb3VuZCl7bz1lLnBvcy1hO2JyZWFrfX1lLnBvcz1hO2lmKG8pcmV0dXJue3N0cmVhbTpuZXcgU3RyZWFtKGUuZ2V0Qnl0ZXMobykpLGxlbmd0aDpvfTt3YXJuKCdVbmFibGUgdG8gcmVjb3ZlciAiTGVuZ3RoMSIgcHJvcGVydHkgaW4gVHlwZTEgZm9udCAtLSB1c2luZyBhcyBpcy4nKTtyZXR1cm57c3RyZWFtOm5ldyBTdHJlYW0oZS5nZXRCeXRlcyh0KSksbGVuZ3RoOnR9fSh0LGEpO25ldyBUeXBlMVBhcnNlcihvLnN0cmVhbSwhMSxPaSkuZXh0cmFjdEZvbnRIZWFkZXIoaSk7aWYobil7cz10LmdldEJ5dGVzKDYpO3I9c1s1XTw8MjR8c1s0XTw8MTZ8c1szXTw8OHxzWzJdfWNvbnN0IGc9ZnVuY3Rpb24gZ2V0RWV4ZWNCbG9jayhlLHQpe2NvbnN0IGk9ZS5nZXRCeXRlcygpO2lmKDA9PT1pLmxlbmd0aCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoImdldEVleGVjQmxvY2sgLSBubyBmb250IHByb2dyYW0gZm91bmQuIik7cmV0dXJue3N0cmVhbTpuZXcgU3RyZWFtKGkpLGxlbmd0aDppLmxlbmd0aH19KHQpLGM9bmV3IFR5cGUxUGFyc2VyKGcuc3RyZWFtLCEwLE9pKS5leHRyYWN0Rm9udFByb2dyYW0oaSk7Zm9yKGNvbnN0IGUgaW4gYy5wcm9wZXJ0aWVzKWlbZV09Yy5wcm9wZXJ0aWVzW2VdO2NvbnN0IEM9Yy5jaGFyc3RyaW5ncyxoPXRoaXMuZ2V0VHlwZTJDaGFyc3RyaW5ncyhDKSxsPXRoaXMuZ2V0VHlwZTJTdWJycyhjLnN1YnJzKTt0aGlzLmNoYXJzdHJpbmdzPUM7dGhpcy5kYXRhPXRoaXMud3JhcChlLGgsdGhpcy5jaGFyc3RyaW5ncyxsLGkpO3RoaXMuc2VhY3M9dGhpcy5nZXRTZWFjcyhjLmNoYXJzdHJpbmdzKX1nZXQgbnVtR2x5cGhzKCl7cmV0dXJuIHRoaXMuY2hhcnN0cmluZ3MubGVuZ3RoKzF9Z2V0Q2hhcnNldCgpe2NvbnN0IGU9WyIubm90ZGVmIl07Zm9yKGNvbnN0e2dseXBoTmFtZTp0fW9mIHRoaXMuY2hhcnN0cmluZ3MpZS5wdXNoKHQpO3JldHVybiBlfWdldEdseXBoTWFwcGluZyhlKXtjb25zdCB0PXRoaXMuY2hhcnN0cmluZ3M7aWYoZS5jb21wb3NpdGUpe2NvbnN0IGk9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IobGV0IGE9MCxyPXQubGVuZ3RoO2E8cjthKyspe2lbZS5jTWFwLmNoYXJDb2RlT2YoYSldPWErMX1yZXR1cm4gaX1jb25zdCBpPVsiLm5vdGRlZiJdO2xldCBhLHI7Zm9yKHI9MDtyPHQubGVuZ3RoO3IrKylpLnB1c2godFtyXS5nbHlwaE5hbWUpO2NvbnN0IHM9ZS5idWlsdEluRW5jb2Rpbmc7aWYocyl7YT1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdCBlIGluIHMpe3I9aS5pbmRleE9mKHNbZV0pO3I+PTAmJihhW2VdPXIpfX1yZXR1cm4gdHlwZTFGb250R2x5cGhNYXBwaW5nKGUsYSxpKX1oYXNHbHlwaElkKGUpe2lmKGU8MHx8ZT49dGhpcy5udW1HbHlwaHMpcmV0dXJuITE7aWYoMD09PWUpcmV0dXJuITA7cmV0dXJuIHRoaXMuY2hhcnN0cmluZ3NbZS0xXS5jaGFyc3RyaW5nLmxlbmd0aD4wfWdldFNlYWNzKGUpe2NvbnN0IHQ9W107Zm9yKGxldCBpPTAsYT1lLmxlbmd0aDtpPGE7aSsrKXtjb25zdCBhPWVbaV07YS5zZWFjJiYodFtpKzFdPWEuc2VhYyl9cmV0dXJuIHR9Z2V0VHlwZTJDaGFyc3RyaW5ncyhlKXtjb25zdCB0PVtdO2Zvcihjb25zdCBpIG9mIGUpdC5wdXNoKGkuY2hhcnN0cmluZyk7cmV0dXJuIHR9Z2V0VHlwZTJTdWJycyhlKXtsZXQgdD0wO2NvbnN0IGk9ZS5sZW5ndGg7dD1pPDExMzM/MTA3Omk8MzM3Njk/MTEzMTozMjc2ODtjb25zdCBhPVtdO2xldCByO2ZvcihyPTA7cjx0O3IrKylhLnB1c2goWzExXSk7Zm9yKHI9MDtyPGk7cisrKWEucHVzaChlW3JdKTtyZXR1cm4gYX13cmFwKGUsdCxpLGEscil7Y29uc3Qgcz1uZXcgQ0ZGO3MuaGVhZGVyPW5ldyBDRkZIZWFkZXIoMSwwLDQsNCk7cy5uYW1lcz1bZV07Y29uc3Qgbj1uZXcgQ0ZGVG9wRGljdDtuLnNldEJ5TmFtZSgidmVyc2lvbiIsMzkxKTtuLnNldEJ5TmFtZSgiTm90aWNlIiwzOTIpO24uc2V0QnlOYW1lKCJGdWxsTmFtZSIsMzkzKTtuLnNldEJ5TmFtZSgiRmFtaWx5TmFtZSIsMzk0KTtuLnNldEJ5TmFtZSgiV2VpZ2h0IiwzOTUpO24uc2V0QnlOYW1lKCJFbmNvZGluZyIsbnVsbCk7bi5zZXRCeU5hbWUoIkZvbnRNYXRyaXgiLHIuZm9udE1hdHJpeCk7bi5zZXRCeU5hbWUoIkZvbnRCQm94IixyLmJib3gpO24uc2V0QnlOYW1lKCJjaGFyc2V0IixudWxsKTtuLnNldEJ5TmFtZSgiQ2hhclN0cmluZ3MiLG51bGwpO24uc2V0QnlOYW1lKCJQcml2YXRlIixudWxsKTtzLnRvcERpY3Q9bjtjb25zdCBvPW5ldyBDRkZTdHJpbmdzO28uYWRkKCJWZXJzaW9uIDAuMTEiKTtvLmFkZCgiU2VlIG9yaWdpbmFsIG5vdGljZSIpO28uYWRkKGUpO28uYWRkKGUpO28uYWRkKCJNZWRpdW0iKTtzLnN0cmluZ3M9bztzLmdsb2JhbFN1YnJJbmRleD1uZXcgQ0ZGSW5kZXg7Y29uc3QgZz10Lmxlbmd0aCxjPVsiLm5vdGRlZiJdO2xldCBDLGg7Zm9yKEM9MDtDPGc7QysrKXtjb25zdCBlPWlbQ10uZ2x5cGhOYW1lOy0xPT09a2kuaW5kZXhPZihlKSYmby5hZGQoZSk7Yy5wdXNoKGUpfXMuY2hhcnNldD1uZXcgQ0ZGQ2hhcnNldCghMSwwLGMpO2NvbnN0IGw9bmV3IENGRkluZGV4O2wuYWRkKFsxMzksMTRdKTtmb3IoQz0wO0M8ZztDKyspbC5hZGQodFtDXSk7cy5jaGFyU3RyaW5ncz1sO2NvbnN0IFE9bmV3IENGRlByaXZhdGVEaWN0O1Euc2V0QnlOYW1lKCJTdWJycyIsbnVsbCk7Y29uc3QgRT1bIkJsdWVWYWx1ZXMiLCJPdGhlckJsdWVzIiwiRmFtaWx5Qmx1ZXMiLCJGYW1pbHlPdGhlckJsdWVzIiwiU3RlbVNuYXBIIiwiU3RlbVNuYXBWIiwiQmx1ZVNoaWZ0IiwiQmx1ZUZ1enoiLCJCbHVlU2NhbGUiLCJMYW5ndWFnZUdyb3VwIiwiRXhwYW5zaW9uRmFjdG9yIiwiRm9yY2VCb2xkIiwiU3RkSFciLCJTdGRWVyJdO2ZvcihDPTAsaD1FLmxlbmd0aDtDPGg7QysrKXtjb25zdCBlPUVbQ107aWYoIShlIGluIHIucHJpdmF0ZURhdGEpKWNvbnRpbnVlO2NvbnN0IHQ9ci5wcml2YXRlRGF0YVtlXTtpZihBcnJheS5pc0FycmF5KHQpKWZvcihsZXQgZT10Lmxlbmd0aC0xO2U+MDtlLS0pdFtlXS09dFtlLTFdO1Euc2V0QnlOYW1lKGUsdCl9cy50b3BEaWN0LnByaXZhdGVEaWN0PVE7Y29uc3QgdT1uZXcgQ0ZGSW5kZXg7Zm9yKEM9MCxoPWEubGVuZ3RoO0M8aDtDKyspdS5hZGQoYVtDXSk7US5zdWJyc0luZGV4PXU7cmV0dXJuIG5ldyBDRkZDb21waWxlcihzKS5jb21waWxlKCl9fWNvbnN0IGRhPVtbNTczNDQsNjM3NDNdLFsxMDQ4NTc2LDExMTQxMDldXSxmYT0xZTMscGE9WyJhc2NlbnQiLCJiYm94IiwiYmxhY2siLCJib2xkIiwiY2hhclByb2NPcGVyYXRvckxpc3QiLCJjb21wb3NpdGUiLCJjc3NGb250SW5mbyIsImRhdGEiLCJkZWZhdWx0Vk1ldHJpY3MiLCJkZWZhdWx0V2lkdGgiLCJkZXNjZW50IiwiZmFsbGJhY2tOYW1lIiwiZm9udE1hdHJpeCIsImlzSW52YWxpZFBERmpzRm9udCIsImlzVHlwZTNGb250IiwiaXRhbGljIiwibG9hZGVkTmFtZSIsIm1pbWV0eXBlIiwibWlzc2luZ0ZpbGUiLCJuYW1lIiwicmVtZWFzdXJlIiwic3VidHlwZSIsInN5c3RlbUZvbnRJbmZvIiwidHlwZSIsInZlcnRpY2FsIl0sbWE9WyJjTWFwIiwiZGVmYXVsdEVuY29kaW5nIiwiZGlmZmVyZW5jZXMiLCJpc01vbm9zcGFjZSIsImlzU2VyaWZGb250IiwiaXNTeW1ib2xpY0ZvbnQiLCJzZWFjTWFwIiwidG9Gb250Q2hhciIsInRvVW5pY29kZSIsInZtZXRyaWNzIiwid2lkdGhzIl07ZnVuY3Rpb24gYWRqdXN0V2lkdGhzKGUpe2lmKCFlLmZvbnRNYXRyaXgpcmV0dXJuO2lmKGUuZm9udE1hdHJpeFswXT09PXJbMF0pcmV0dXJuO2NvbnN0IHQ9LjAwMS9lLmZvbnRNYXRyaXhbMF0saT1lLndpZHRocztmb3IoY29uc3QgZSBpbiBpKWlbZV0qPXQ7ZS5kZWZhdWx0V2lkdGgqPXR9ZnVuY3Rpb24gYW1lbmRGYWxsYmFja1RvVW5pY29kZShlKXtpZighZS5mYWxsYmFja1RvVW5pY29kZSlyZXR1cm47aWYoZS50b1VuaWNvZGUgaW5zdGFuY2VvZiBJZGVudGl0eVRvVW5pY29kZU1hcClyZXR1cm47Y29uc3QgdD1bXTtmb3IoY29uc3QgaSBpbiBlLmZhbGxiYWNrVG9Vbmljb2RlKWUudG9Vbmljb2RlLmhhcyhpKXx8KHRbaV09ZS5mYWxsYmFja1RvVW5pY29kZVtpXSk7dC5sZW5ndGg+MCYmZS50b1VuaWNvZGUuYW1lbmQodCl9Y2xhc3MgZm9udHNfR2x5cGh7Y29uc3RydWN0b3IoZSx0LGksYSxyLHMsbixvLGcpe3RoaXMub3JpZ2luYWxDaGFyQ29kZT1lO3RoaXMuZm9udENoYXI9dDt0aGlzLnVuaWNvZGU9aTt0aGlzLmFjY2VudD1hO3RoaXMud2lkdGg9cjt0aGlzLnZtZXRyaWM9czt0aGlzLm9wZXJhdG9yTGlzdElkPW47dGhpcy5pc1NwYWNlPW87dGhpcy5pc0luRm9udD1nfWdldCBjYXRlZ29yeSgpe3JldHVybiBzaGFkb3codGhpcywiY2F0ZWdvcnkiLGZ1bmN0aW9uIGdldENoYXJVbmljb2RlQ2F0ZWdvcnkoZSl7Y29uc3QgdD1xaS5nZXQoZSk7aWYodClyZXR1cm4gdDtjb25zdCBpPWUubWF0Y2goS2kpLGE9e2lzV2hpdGVzcGFjZTohIWk/LlsxXSxpc1plcm9XaWR0aERpYWNyaXRpYzohIWk/LlsyXSxpc0ludmlzaWJsZUZvcm1hdE1hcms6ISFpPy5bM119O3FpLnNldChlLGEpO3JldHVybiBhfSh0aGlzLnVuaWNvZGUpLCEwKX19ZnVuY3Rpb24gaW50MTYoZSx0KXtyZXR1cm4oZTw8OCkrdH1mdW5jdGlvbiB3cml0ZVNpZ25lZEludDE2KGUsdCxpKXtlW3QrMV09aTtlW3RdPWk+Pj44fWZ1bmN0aW9uIHNpZ25lZEludDE2KGUsdCl7Y29uc3QgaT0oZTw8OCkrdDtyZXR1cm4gMzI3NjgmaT9pLTY1NTM2Oml9ZnVuY3Rpb24gc3RyaW5nMTYoZSl7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoZT4+OCYyNTUsMjU1JmUpfWZ1bmN0aW9uIHNhZmVTdHJpbmcxNihlKXtlPjMyNzY3P2U9MzI3Njc6ZTwtMzI3NjgmJihlPS0zMjc2OCk7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoZT4+OCYyNTUsMjU1JmUpfWZ1bmN0aW9uIGlzVHJ1ZVR5cGVDb2xsZWN0aW9uRmlsZShlKXtyZXR1cm4idHRjZiI9PT1ieXRlc1RvU3RyaW5nKGUucGVla0J5dGVzKDQpKX1mdW5jdGlvbiBnZXRGb250RmlsZVR5cGUoZSx7dHlwZTp0LHN1YnR5cGU6aSxjb21wb3NpdGU6YX0pe2xldCByLHM7aWYoZnVuY3Rpb24gaXNUcnVlVHlwZUZpbGUoZSl7Y29uc3QgdD1lLnBlZWtCeXRlcyg0KTtyZXR1cm4gNjU1MzY9PT1yZWFkVWludDMyKHQsMCl8fCJ0cnVlIj09PWJ5dGVzVG9TdHJpbmcodCl9KGUpfHxpc1RydWVUeXBlQ29sbGVjdGlvbkZpbGUoZSkpcj1hPyJDSURGb250VHlwZTIiOiJUcnVlVHlwZSI7ZWxzZSBpZihmdW5jdGlvbiBpc09wZW5UeXBlRmlsZShlKXtyZXR1cm4iT1RUTyI9PT1ieXRlc1RvU3RyaW5nKGUucGVla0J5dGVzKDQpKX0oZSkpcj1hPyJDSURGb250VHlwZTIiOiJPcGVuVHlwZSI7ZWxzZSBpZihmdW5jdGlvbiBpc1R5cGUxRmlsZShlKXtjb25zdCB0PWUucGVla0J5dGVzKDIpO3JldHVybiAzNz09PXRbMF0mJjMzPT09dFsxXXx8MTI4PT09dFswXSYmMT09PXRbMV19KGUpKXI9YT8iQ0lERm9udFR5cGUwIjoiTU1UeXBlMSI9PT10PyJNTVR5cGUxIjoiVHlwZTEiO2Vsc2UgaWYoZnVuY3Rpb24gaXNDRkZGaWxlKGUpe2NvbnN0IHQ9ZS5wZWVrQnl0ZXMoNCk7cmV0dXJuIHRbMF0+PTEmJnRbM10+PTEmJnRbM108PTR9KGUpKWlmKGEpe3I9IkNJREZvbnRUeXBlMCI7cz0iQ0lERm9udFR5cGUwQyJ9ZWxzZXtyPSJNTVR5cGUxIj09PXQ/Ik1NVHlwZTEiOiJUeXBlMSI7cz0iVHlwZTFDIn1lbHNle3dhcm4oImdldEZvbnRGaWxlVHlwZTogVW5hYmxlIHRvIGRldGVjdCBjb3JyZWN0IGZvbnQgZmlsZSBUeXBlL1N1YnR5cGUuIik7cj10O3M9aX1yZXR1cm5bcixzXX1mdW5jdGlvbiBhcHBseVN0YW5kYXJkRm9udEdseXBoTWFwKGUsdCl7Zm9yKGNvbnN0IGkgaW4gdCllWytpXT10W2ldfWZ1bmN0aW9uIGJ1aWxkVG9Gb250Q2hhcihlLHQsaSl7Y29uc3QgYT1bXTtsZXQgcjtmb3IobGV0IGk9MCxzPWUubGVuZ3RoO2k8cztpKyspe3I9Z2V0VW5pY29kZUZvckdseXBoKGVbaV0sdCk7LTEhPT1yJiYoYVtpXT1yKX1mb3IoY29uc3QgZSBpbiBpKXtyPWdldFVuaWNvZGVGb3JHbHlwaChpW2VdLHQpOy0xIT09ciYmKGFbK2VdPXIpfXJldHVybiBhfWZ1bmN0aW9uIGlzTWFjTmFtZVJlY29yZChlKXtyZXR1cm4gMT09PWUucGxhdGZvcm0mJjA9PT1lLmVuY29kaW5nJiYwPT09ZS5sYW5ndWFnZX1mdW5jdGlvbiBpc1dpbk5hbWVSZWNvcmQoZSl7cmV0dXJuIDM9PT1lLnBsYXRmb3JtJiYxPT09ZS5lbmNvZGluZyYmMTAzMz09PWUubGFuZ3VhZ2V9ZnVuY3Rpb24gY29udmVydENpZFN0cmluZyhlLHQsaT0hMSl7c3dpdGNoKHQubGVuZ3RoKXtjYXNlIDE6cmV0dXJuIHQuY2hhckNvZGVBdCgwKTtjYXNlIDI6cmV0dXJuIHQuY2hhckNvZGVBdCgwKTw8OHx0LmNoYXJDb2RlQXQoMSl9Y29uc3QgYT1gVW5zdXBwb3J0ZWQgQ0lEIHN0cmluZyAoY2hhckNvZGUgJHtlfSk6ICIke3R9Ii5gO2lmKGkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGEpO3dhcm4oYSk7cmV0dXJuIHR9ZnVuY3Rpb24gYWRqdXN0TWFwcGluZyhlLHQsaSxhKXtjb25zdCByPU9iamVjdC5jcmVhdGUobnVsbCkscz1uZXcgTWFwLG49W10sbz1uZXcgU2V0O2xldCBnPTA7bGV0IGM9ZGFbZ11bMF0sQz1kYVtnXVsxXTtmb3IoY29uc3QgbCBpbiBlKXtsZXQgUT1lW2xdO2lmKCF0KFEpKWNvbnRpbnVlO2lmKGM+Qyl7ZysrO2lmKGc+PWRhLmxlbmd0aCl7d2FybigiUmFuIG91dCBvZiBzcGFjZSBpbiBmb250IHByaXZhdGUgdXNlIGFyZWEuIik7YnJlYWt9Yz1kYVtnXVswXTtDPWRhW2ddWzFdfWNvbnN0IEU9YysrOzA9PT1RJiYoUT1pKTtsZXQgdT1hLmdldChsKTsic3RyaW5nIj09dHlwZW9mIHUmJih1PXUuY29kZVBvaW50QXQoMCkpO2lmKHUmJiEoaD11LGRhWzBdWzBdPD1oJiZoPD1kYVswXVsxXXx8ZGFbMV1bMF08PWgmJmg8PWRhWzFdWzFdKSYmIW8uaGFzKFEpKXtzLnNldCh1LFEpO28uYWRkKFEpfXJbRV09UTtuW2xdPUV9dmFyIGg7cmV0dXJue3RvRm9udENoYXI6bixjaGFyQ29kZVRvR2x5cGhJZDpyLHRvVW5pY29kZUV4dHJhTWFwOnMsbmV4dEF2YWlsYWJsZUZvbnRDaGFyQ29kZTpjfX1mdW5jdGlvbiBjcmVhdGVDbWFwVGFibGUoZSx0LGkpe2NvbnN0IGE9ZnVuY3Rpb24gZ2V0UmFuZ2VzKGUsdCxpKXtjb25zdCBhPVtdO2Zvcihjb25zdCB0IGluIGUpZVt0XT49aXx8YS5wdXNoKHtmb250Q2hhckNvZGU6MHx0LGdseXBoSWQ6ZVt0XX0pO2lmKHQpZm9yKGNvbnN0W2Uscl1vZiB0KXI+PWl8fGEucHVzaCh7Zm9udENoYXJDb2RlOmUsZ2x5cGhJZDpyfSk7MD09PWEubGVuZ3RoJiZhLnB1c2goe2ZvbnRDaGFyQ29kZTowLGdseXBoSWQ6MH0pO2Euc29ydCgoZnVuY3Rpb24gZm9udEdldFJhbmdlc1NvcnQoZSx0KXtyZXR1cm4gZS5mb250Q2hhckNvZGUtdC5mb250Q2hhckNvZGV9KSk7Y29uc3Qgcj1bXSxzPWEubGVuZ3RoO2ZvcihsZXQgZT0wO2U8czspe2NvbnN0IHQ9YVtlXS5mb250Q2hhckNvZGUsaT1bYVtlXS5nbHlwaElkXTsrK2U7bGV0IG49dDtmb3IoO2U8cyYmbisxPT09YVtlXS5mb250Q2hhckNvZGU7KXtpLnB1c2goYVtlXS5nbHlwaElkKTsrK247KytlO2lmKDY1NTM1PT09bilicmVha31yLnB1c2goW3QsbixpXSl9cmV0dXJuIHJ9KGUsdCxpKSxyPWEuYXQoLTEpWzFdPjY1NTM1PzI6MTtsZXQgcyxuLG8sZyxjPSJcMFwwIitzdHJpbmcxNihyKSsiXDADXDABIitzdHJpbmczMig0Kzgqcik7Zm9yKHM9YS5sZW5ndGgtMTtzPj0wJiYhKGFbc11bMF08PTY1NTM1KTstLXMpO2NvbnN0IEM9cysxO2Fbc11bMF08NjU1MzUmJjY1NTM1PT09YVtzXVsxXSYmKGFbc11bMV09NjU1MzQpO2NvbnN0IGg9YVtzXVsxXTw2NTUzNT8xOjAsbD1DK2gsUT1PcGVuVHlwZUZpbGVCdWlsZGVyLmdldFNlYXJjaFBhcmFtcyhsLDIpO2xldCBFLHUsZCxmLHA9IiIsbT0iIix5PSIiLHc9IiIsYj0iIixEPTA7Zm9yKHM9MCxuPUM7czxuO3MrKyl7RT1hW3NdO3U9RVswXTtkPUVbMV07cCs9c3RyaW5nMTYodSk7bSs9c3RyaW5nMTYoZCk7Zj1FWzJdO2xldCBlPSEwO2ZvcihvPTEsZz1mLmxlbmd0aDtvPGc7KytvKWlmKGZbb10hPT1mW28tMV0rMSl7ZT0hMTticmVha31pZihlKXt5Kz1zdHJpbmcxNihmWzBdLXUmNjU1MzUpO3crPXN0cmluZzE2KDApfWVsc2V7Y29uc3QgZT0yKihsLXMpKzIqRDtEKz1kLXUrMTt5Kz1zdHJpbmcxNigwKTt3Kz1zdHJpbmcxNihlKTtmb3Iobz0wLGc9Zi5sZW5ndGg7bzxnOysrbyliKz1zdHJpbmcxNihmW29dKX19aWYoaD4wKXttKz0iw7/DvyI7cCs9IsO/w78iO3krPSJcMAEiO3crPSJcMFwwIn1jb25zdCBTPSJcMFwwIitzdHJpbmcxNigyKmwpK3N0cmluZzE2KFEucmFuZ2UpK3N0cmluZzE2KFEuZW50cnkpK3N0cmluZzE2KFEucmFuZ2VTaGlmdCkrbSsiXDBcMCIrcCt5K3crYjtsZXQgaz0iIixSPSIiO2lmKHI+MSl7Yys9IlwwA1wwXG4iK3N0cmluZzMyKDQrOCpyKzQrUy5sZW5ndGgpO2s9IiI7Zm9yKHM9MCxuPWEubGVuZ3RoO3M8bjtzKyspe0U9YVtzXTt1PUVbMF07Zj1FWzJdO2xldCBlPWZbMF07Zm9yKG89MSxnPWYubGVuZ3RoO288ZzsrK28paWYoZltvXSE9PWZbby0xXSsxKXtkPUVbMF0rby0xO2srPXN0cmluZzMyKHUpK3N0cmluZzMyKGQpK3N0cmluZzMyKGUpO3U9ZCsxO2U9ZltvXX1rKz1zdHJpbmczMih1KStzdHJpbmczMihFWzFdKStzdHJpbmczMihlKX1SPSJcMFxmXDBcMCIrc3RyaW5nMzIoay5sZW5ndGgrMTYpKyJcMFwwXDBcMCIrc3RyaW5nMzIoay5sZW5ndGgvMTIpfXJldHVybiBjKyJcMAQiK3N0cmluZzE2KFMubGVuZ3RoKzQpK1MrUitrfWZ1bmN0aW9uIGNyZWF0ZU9TMlRhYmxlKGUsdCxpKXtpfHw9e3VuaXRzUGVyRW06MCx5TWF4OjAseU1pbjowLGFzY2VudDowLGRlc2NlbnQ6MH07bGV0IGE9MCxyPTAscz0wLG49MCxvPW51bGwsZz0wLGM9LTE7aWYodCl7Zm9yKGxldCBlIGluIHQpe2V8PTA7KG8+ZXx8IW8pJiYobz1lKTtnPGUmJihnPWUpO2M9Z2V0VW5pY29kZVJhbmdlRm9yKGUsYyk7aWYoYzwzMilhfD0xPDxjO2Vsc2UgaWYoYzw2NClyfD0xPDxjLTMyO2Vsc2UgaWYoYzw5NilzfD0xPDxjLTY0O2Vsc2V7aWYoIShjPDEyMykpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJVbmljb2RlIHJhbmdlcyBCaXRzID4gMTIzIGFyZSByZXNlcnZlZCBmb3IgaW50ZXJuYWwgdXNhZ2UiKTtufD0xPDxjLTk2fX1nPjY1NTM1JiYoZz02NTUzNSl9ZWxzZXtvPTA7Zz0yNTV9Y29uc3QgQz1lLmJib3h8fFswLDAsMCwwXSxoPWkudW5pdHNQZXJFbXx8KGUuZm9udE1hdHJpeD8xL01hdGgubWF4KC4uLmUuZm9udE1hdHJpeC5zbGljZSgwLDQpLm1hcChNYXRoLmFicykpOjFlMyksbD1lLmFzY2VudFNjYWxlZD8xOmgvZmEsUT1pLmFzY2VudHx8TWF0aC5yb3VuZChsKihlLmFzY2VudHx8Q1szXSkpO2xldCBFPWkuZGVzY2VudHx8TWF0aC5yb3VuZChsKihlLmRlc2NlbnR8fENbMV0pKTtFPjAmJmUuZGVzY2VudD4wJiZDWzFdPDAmJihFPS1FKTtjb25zdCB1PWkueU1heHx8USxkPS1pLnlNaW58fC1FO3JldHVybiJcMAMCJAHDtFwwBVwwXDACwooCwrtcMFwwXDDCjALCigLCu1wwXDABw59ceDAwMQECXDBcMFwwXDAGIitTdHJpbmcuZnJvbUNoYXJDb2RlKGUuZml4ZWRQaXRjaD85OjApKyJcMFwwXDBcMFwwXDAiK3N0cmluZzMyKGEpK3N0cmluZzMyKHIpK3N0cmluZzMyKHMpK3N0cmluZzMyKG4pKyIqMjEqIitzdHJpbmcxNihlLml0YWxpY0FuZ2xlPzE6MCkrc3RyaW5nMTYob3x8ZS5maXJzdENoYXIpK3N0cmluZzE2KGd8fGUubGFzdENoYXIpK3N0cmluZzE2KFEpK3N0cmluZzE2KEUpKyJcMGQiK3N0cmluZzE2KHUpK3N0cmluZzE2KGQpKyJcMFwwXDBcMFwwXDBcMFwwIitzdHJpbmcxNihlLnhIZWlnaHQpK3N0cmluZzE2KGUuY2FwSGVpZ2h0KStzdHJpbmcxNigwKStzdHJpbmcxNihvfHxlLmZpcnN0Q2hhcikrIlwwAyJ9ZnVuY3Rpb24gY3JlYXRlUG9zdFRhYmxlKGUpe3JldHVybiJcMANcMFwwIitzdHJpbmczMihNYXRoLmZsb29yKDY1NTM2KmUuaXRhbGljQW5nbGUpKSsiXDBcMFwwXDAiK3N0cmluZzMyKGUuZml4ZWRQaXRjaD8xOjApKyJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCJ9ZnVuY3Rpb24gY3JlYXRlUG9zdHNjcmlwdE5hbWUoZSl7cmV0dXJuIGUucmVwbGFjZUFsbCgvW15ceDIxLVx4N0VdfFtbXF0oKXt9PD4vJV0vZywiIikuc2xpY2UoMCw2Myl9ZnVuY3Rpb24gY3JlYXRlTmFtZVRhYmxlKGUsdCl7dHx8KHQ9W1tdLFtdXSk7Y29uc3QgaT1bdFswXVswXXx8Ik9yaWdpbmFsIGxpY2VuY2UiLHRbMF1bMV18fGUsdFswXVsyXXx8IlVua25vd24iLHRbMF1bM118fCJ1bmlxdWVJRCIsdFswXVs0XXx8ZSx0WzBdWzVdfHwiVmVyc2lvbiAwLjExIix0WzBdWzZdfHxjcmVhdGVQb3N0c2NyaXB0TmFtZShlKSx0WzBdWzddfHwiVW5rbm93biIsdFswXVs4XXx8IlVua25vd24iLHRbMF1bOV18fCJVbmtub3duIl0sYT1bXTtsZXQgcixzLG4sbyxnO2ZvcihyPTAscz1pLmxlbmd0aDtyPHM7cisrKXtnPXRbMV1bcl18fGlbcl07Y29uc3QgZT1bXTtmb3Iobj0wLG89Zy5sZW5ndGg7bjxvO24rKyllLnB1c2goc3RyaW5nMTYoZy5jaGFyQ29kZUF0KG4pKSk7YS5wdXNoKGUuam9pbigiIikpfWNvbnN0IGM9W2ksYV0sQz1bIlwwASIsIlwwAyJdLGg9WyJcMFwwIiwiXDABIl0sbD1bIlwwXDAiLCIEXHQiXSxRPWkubGVuZ3RoKkMubGVuZ3RoO2xldCBFPSJcMFwwIitzdHJpbmcxNihRKStzdHJpbmcxNigxMipRKzYpLHU9MDtmb3Iocj0wLHM9Qy5sZW5ndGg7cjxzO3IrKyl7Y29uc3QgZT1jW3JdO2ZvcihuPTAsbz1lLmxlbmd0aDtuPG87bisrKXtnPWVbbl07RSs9Q1tyXStoW3JdK2xbcl0rc3RyaW5nMTYobikrc3RyaW5nMTYoZy5sZW5ndGgpK3N0cmluZzE2KHUpO3UrPWcubGVuZ3RofX1FKz1pLmpvaW4oIiIpK2Euam9pbigiIik7cmV0dXJuIEV9Y2xhc3MgRm9udHtjb25zdHJ1Y3RvcihlLHQsaSl7dGhpcy5uYW1lPWU7dGhpcy5wc05hbWU9bnVsbDt0aGlzLm1pbWV0eXBlPW51bGw7dGhpcy5kaXNhYmxlRm9udEZhY2U9ITE7dGhpcy5sb2FkZWROYW1lPWkubG9hZGVkTmFtZTt0aGlzLmlzVHlwZTNGb250PWkuaXNUeXBlM0ZvbnQ7dGhpcy5taXNzaW5nRmlsZT0hMTt0aGlzLmNzc0ZvbnRJbmZvPWkuY3NzRm9udEluZm87dGhpcy5fY2hhcnNDYWNoZT1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXMuX2dseXBoQ2FjaGU9T2JqZWN0LmNyZWF0ZShudWxsKTtsZXQgYT0hIShpLmZsYWdzJldpKTtpZighYSYmIWkuaXNTaW11bGF0ZWRGbGFncyl7Y29uc3QgdD1lLnJlcGxhY2VBbGwoL1ssX10vZywiLSIpLnNwbGl0KCItIiwxKVswXSxpPUFhKCk7Zm9yKGNvbnN0IGUgb2YgdC5zcGxpdCgiKyIpKWlmKGlbZV0pe2E9ITA7YnJlYWt9fXRoaXMuaXNTZXJpZkZvbnQ9YTt0aGlzLmlzU3ltYm9saWNGb250PSEhKGkuZmxhZ3MmamkpO3RoaXMuaXNNb25vc3BhY2U9ISEoaS5mbGFncyZQaSk7bGV0e3R5cGU6cixzdWJ0eXBlOnN9PWk7dGhpcy50eXBlPXI7dGhpcy5zdWJ0eXBlPXM7dGhpcy5zeXN0ZW1Gb250SW5mbz1pLnN5c3RlbUZvbnRJbmZvO2NvbnN0IG49ZS5tYXRjaCgvXkludmFsaWRQREZqc0ZvbnRfKC4qKV9cZCskLyk7dGhpcy5pc0ludmFsaWRQREZqc0ZvbnQ9ISFuO3RoaXMuaXNJbnZhbGlkUERGanNGb250P3RoaXMuZmFsbGJhY2tOYW1lPW5bMV06dGhpcy5pc01vbm9zcGFjZT90aGlzLmZhbGxiYWNrTmFtZT0ibW9ub3NwYWNlIjp0aGlzLmlzU2VyaWZGb250P3RoaXMuZmFsbGJhY2tOYW1lPSJzZXJpZiI6dGhpcy5mYWxsYmFja05hbWU9InNhbnMtc2VyaWYiO2lmKHRoaXMuc3lzdGVtRm9udEluZm8/Lmd1ZXNzRmFsbGJhY2spe3RoaXMuc3lzdGVtRm9udEluZm8uZ3Vlc3NGYWxsYmFjaz0hMTt0aGlzLnN5c3RlbUZvbnRJbmZvLmNzcys9YCwke3RoaXMuZmFsbGJhY2tOYW1lfWB9dGhpcy5kaWZmZXJlbmNlcz1pLmRpZmZlcmVuY2VzO3RoaXMud2lkdGhzPWkud2lkdGhzO3RoaXMuZGVmYXVsdFdpZHRoPWkuZGVmYXVsdFdpZHRoO3RoaXMuY29tcG9zaXRlPWkuY29tcG9zaXRlO3RoaXMuY01hcD1pLmNNYXA7dGhpcy5jYXBIZWlnaHQ9aS5jYXBIZWlnaHQvZmE7dGhpcy5hc2NlbnQ9aS5hc2NlbnQvZmE7dGhpcy5kZXNjZW50PWkuZGVzY2VudC9mYTt0aGlzLmxpbmVIZWlnaHQ9dGhpcy5hc2NlbnQtdGhpcy5kZXNjZW50O3RoaXMuZm9udE1hdHJpeD1pLmZvbnRNYXRyaXg7dGhpcy5iYm94PWkuYmJveDt0aGlzLmRlZmF1bHRFbmNvZGluZz1pLmRlZmF1bHRFbmNvZGluZzt0aGlzLnRvVW5pY29kZT1pLnRvVW5pY29kZTt0aGlzLnRvRm9udENoYXI9W107aWYoIlR5cGUzIj09PWkudHlwZSl7Zm9yKGxldCBlPTA7ZTwyNTY7ZSsrKXRoaXMudG9Gb250Q2hhcltlXT10aGlzLmRpZmZlcmVuY2VzW2VdfHxpLmRlZmF1bHRFbmNvZGluZ1tlXTtyZXR1cm59dGhpcy5jaWRFbmNvZGluZz1pLmNpZEVuY29kaW5nfHwiIjt0aGlzLnZlcnRpY2FsPSEhaS52ZXJ0aWNhbDtpZih0aGlzLnZlcnRpY2FsKXt0aGlzLnZtZXRyaWNzPWkudm1ldHJpY3M7dGhpcy5kZWZhdWx0Vk1ldHJpY3M9aS5kZWZhdWx0Vk1ldHJpY3N9aWYoIXR8fHQuaXNFbXB0eSl7dCYmd2FybignRm9udCBmaWxlIGlzIGVtcHR5IGluICInK2UrJyIgKCcrdGhpcy5sb2FkZWROYW1lKyIpIik7dGhpcy5mYWxsYmFja1RvU3lzdGVtRm9udChpKTtyZXR1cm59W3Isc109Z2V0Rm9udEZpbGVUeXBlKHQsaSk7cj09PXRoaXMudHlwZSYmcz09PXRoaXMuc3VidHlwZXx8aW5mbyhgSW5jb25zaXN0ZW50IGZvbnQgZmlsZSBUeXBlL1N1YlR5cGUsIGV4cGVjdGVkOiAke3RoaXMudHlwZX0vJHt0aGlzLnN1YnR5cGV9IGJ1dCBmb3VuZDogJHtyfS8ke3N9LmApO2xldCBvO3RyeXtzd2l0Y2gocil7Y2FzZSJNTVR5cGUxIjppbmZvKCJNTVR5cGUxIGZvbnQgKCIrZSsiKSwgZmFsbGluZyBiYWNrIHRvIFR5cGUxLiIpO2Nhc2UiVHlwZTEiOmNhc2UiQ0lERm9udFR5cGUwIjp0aGlzLm1pbWV0eXBlPSJmb250L29wZW50eXBlIjtjb25zdCBhPSJUeXBlMUMiPT09c3x8IkNJREZvbnRUeXBlMEMiPT09cz9uZXcgQ0ZGRm9udCh0LGkpOm5ldyBUeXBlMUZvbnQoZSx0LGkpO2FkanVzdFdpZHRocyhpKTtvPXRoaXMuY29udmVydChlLGEsaSk7YnJlYWs7Y2FzZSJPcGVuVHlwZSI6Y2FzZSJUcnVlVHlwZSI6Y2FzZSJDSURGb250VHlwZTIiOnRoaXMubWltZXR5cGU9ImZvbnQvb3BlbnR5cGUiO289dGhpcy5jaGVja0FuZFJlcGFpcihlLHQsaSk7aWYodGhpcy5pc09wZW5UeXBlKXthZGp1c3RXaWR0aHMoaSk7cj0iT3BlblR5cGUifWJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEZvcm1hdEVycm9yKGBGb250ICR7cn0gaXMgbm90IHN1cHBvcnRlZGApfX1jYXRjaChlKXt3YXJuKGUpO3RoaXMuZmFsbGJhY2tUb1N5c3RlbUZvbnQoaSk7cmV0dXJufWFtZW5kRmFsbGJhY2tUb1VuaWNvZGUoaSk7dGhpcy5kYXRhPW87dGhpcy50eXBlPXI7dGhpcy5zdWJ0eXBlPXM7dGhpcy5mb250TWF0cml4PWkuZm9udE1hdHJpeDt0aGlzLndpZHRocz1pLndpZHRoczt0aGlzLmRlZmF1bHRXaWR0aD1pLmRlZmF1bHRXaWR0aDt0aGlzLnRvVW5pY29kZT1pLnRvVW5pY29kZTt0aGlzLnNlYWNNYXA9aS5zZWFjTWFwfWdldCByZW5kZXJlcigpe3JldHVybiBzaGFkb3codGhpcywicmVuZGVyZXIiLEZvbnRSZW5kZXJlckZhY3RvcnkuY3JlYXRlKHRoaXMsT2kpKX1leHBvcnREYXRhKGU9ITEpe2NvbnN0IHQ9ZT9bLi4ucGEsLi4ubWFdOnBhLGk9T2JqZWN0LmNyZWF0ZShudWxsKTtsZXQgYSxyO2ZvcihhIG9mIHQpe3I9dGhpc1thXTt2b2lkIDAhPT1yJiYoaVthXT1yKX1yZXR1cm4gaX1mYWxsYmFja1RvU3lzdGVtRm9udChlKXt0aGlzLm1pc3NpbmdGaWxlPSEwO2NvbnN0e25hbWU6dCx0eXBlOml9PXRoaXM7bGV0IGE9bm9ybWFsaXplRm9udE5hbWUodCk7Y29uc3Qgcj1faSgpLHM9JGkoKSxuPSEhclthXSxvPSEoIXNbYV18fCFyW3NbYV1dKTthPXJbYV18fHNbYV18fGE7Y29uc3QgZz1uYSgpW2FdO2lmKGcpe2lzTmFOKHRoaXMuYXNjZW50KSYmKHRoaXMuYXNjZW50PWcuYXNjZW50L2ZhKTtpc05hTih0aGlzLmRlc2NlbnQpJiYodGhpcy5kZXNjZW50PWcuZGVzY2VudC9mYSk7aXNOYU4odGhpcy5jYXBIZWlnaHQpJiYodGhpcy5jYXBIZWlnaHQ9Zy5jYXBIZWlnaHQvZmEpfXRoaXMuYm9sZD0vYm9sZC9naS50ZXN0KGEpO3RoaXMuaXRhbGljPS9vYmxpcXVlfGl0YWxpYy9naS50ZXN0KGEpO3RoaXMuYmxhY2s9L0JsYWNrL2cudGVzdCh0KTtjb25zdCBjPS9OYXJyb3cvZy50ZXN0KHQpO3RoaXMucmVtZWFzdXJlPSghbnx8YykmJk9iamVjdC5rZXlzKHRoaXMud2lkdGhzKS5sZW5ndGg+MDtpZigobnx8bykmJiJDSURGb250VHlwZTIiPT09aSYmdGhpcy5jaWRFbmNvZGluZy5zdGFydHNXaXRoKCJJZGVudGl0eS0iKSl7Y29uc3QgaT1lLmNpZFRvR2lkTWFwLGE9W107YXBwbHlTdGFuZGFyZEZvbnRHbHlwaE1hcChhLHRhKCkpOy9BcmlhbC0/QmxhY2svaS50ZXN0KHQpP2FwcGx5U3RhbmRhcmRGb250R2x5cGhNYXAoYSxpYSgpKTovQ2FsaWJyaS9pLnRlc3QodCkmJmFwcGx5U3RhbmRhcmRGb250R2x5cGhNYXAoYSxhYSgpKTtpZihpKXtmb3IoY29uc3QgZSBpbiBhKXtjb25zdCB0PWFbZV07dm9pZCAwIT09aVt0XSYmKGFbK2VdPWlbdF0pfWkubGVuZ3RoIT09dGhpcy50b1VuaWNvZGUubGVuZ3RoJiZlLmhhc0luY2x1ZGVkVG9Vbmljb2RlTWFwJiZ0aGlzLnRvVW5pY29kZSBpbnN0YW5jZW9mIElkZW50aXR5VG9Vbmljb2RlTWFwJiZ0aGlzLnRvVW5pY29kZS5mb3JFYWNoKChmdW5jdGlvbihlLHQpe2NvbnN0IHI9YVtlXTt2b2lkIDA9PT1pW3JdJiYoYVsrZV09dCl9KSl9dGhpcy50b1VuaWNvZGUgaW5zdGFuY2VvZiBJZGVudGl0eVRvVW5pY29kZU1hcHx8dGhpcy50b1VuaWNvZGUuZm9yRWFjaCgoZnVuY3Rpb24oZSx0KXthWytlXT10fSkpO3RoaXMudG9Gb250Q2hhcj1hO3RoaXMudG9Vbmljb2RlPW5ldyBUb1VuaWNvZGVNYXAoYSl9ZWxzZSBpZigvU3ltYm9sL2kudGVzdChhKSl0aGlzLnRvRm9udENoYXI9YnVpbGRUb0ZvbnRDaGFyKEZpLEppKCksdGhpcy5kaWZmZXJlbmNlcyk7ZWxzZSBpZigvRGluZ2JhdHMvaS50ZXN0KGEpKXRoaXMudG9Gb250Q2hhcj1idWlsZFRvRm9udENoYXIoU2ksdmkoKSx0aGlzLmRpZmZlcmVuY2VzKTtlbHNlIGlmKG58fG8pe2NvbnN0IGU9YnVpbGRUb0ZvbnRDaGFyKHRoaXMuZGVmYXVsdEVuY29kaW5nLEppKCksdGhpcy5kaWZmZXJlbmNlcyk7IkNJREZvbnRUeXBlMiIhPT1pfHx0aGlzLmNpZEVuY29kaW5nLnN0YXJ0c1dpdGgoIklkZW50aXR5LSIpfHx0aGlzLnRvVW5pY29kZSBpbnN0YW5jZW9mIElkZW50aXR5VG9Vbmljb2RlTWFwfHx0aGlzLnRvVW5pY29kZS5mb3JFYWNoKChmdW5jdGlvbih0LGkpe2VbK3RdPWl9KSk7dGhpcy50b0ZvbnRDaGFyPWV9ZWxzZXtjb25zdCBlPUppKCksaT1bXTt0aGlzLnRvVW5pY29kZS5mb3JFYWNoKCgodCxhKT0+e2lmKCF0aGlzLmNvbXBvc2l0ZSl7Y29uc3QgaT1nZXRVbmljb2RlRm9yR2x5cGgodGhpcy5kaWZmZXJlbmNlc1t0XXx8dGhpcy5kZWZhdWx0RW5jb2RpbmdbdF0sZSk7LTEhPT1pJiYoYT1pKX1pWyt0XT1hfSkpO3RoaXMuY29tcG9zaXRlJiZ0aGlzLnRvVW5pY29kZSBpbnN0YW5jZW9mIElkZW50aXR5VG9Vbmljb2RlTWFwJiYvVGFob21hfFZlcmRhbmEvaS50ZXN0KHQpJiZhcHBseVN0YW5kYXJkRm9udEdseXBoTWFwKGksdGEoKSk7dGhpcy50b0ZvbnRDaGFyPWl9YW1lbmRGYWxsYmFja1RvVW5pY29kZShlKTt0aGlzLmxvYWRlZE5hbWU9YS5zcGxpdCgiLSIsMSlbMF19Y2hlY2tBbmRSZXBhaXIoZSx0LGkpe2NvbnN0IGE9WyJPUy8yIiwiY21hcCIsImhlYWQiLCJoaGVhIiwiaG10eCIsIm1heHAiLCJuYW1lIiwicG9zdCIsImxvY2EiLCJnbHlmIiwiZnBnbSIsInByZXAiLCJjdnQgIiwiQ0ZGICJdO2Z1bmN0aW9uIHJlYWRUYWJsZXMoZSx0KXtjb25zdCBpPU9iamVjdC5jcmVhdGUobnVsbCk7aVsiT1MvMiJdPW51bGw7aS5jbWFwPW51bGw7aS5oZWFkPW51bGw7aS5oaGVhPW51bGw7aS5obXR4PW51bGw7aS5tYXhwPW51bGw7aS5uYW1lPW51bGw7aS5wb3N0PW51bGw7Zm9yKGxldCByPTA7cjx0O3IrKyl7Y29uc3QgdD1yZWFkVGFibGVFbnRyeShlKTthLmluY2x1ZGVzKHQudGFnKSYmKDAhPT10Lmxlbmd0aCYmKGlbdC50YWddPXQpKX1yZXR1cm4gaX1mdW5jdGlvbiByZWFkVGFibGVFbnRyeShlKXtjb25zdCB0PWUuZ2V0U3RyaW5nKDQpLGk9ZS5nZXRJbnQzMigpPj4+MCxhPWUuZ2V0SW50MzIoKT4+PjAscj1lLmdldEludDMyKCk+Pj4wLHM9ZS5wb3M7ZS5wb3M9ZS5zdGFydHx8MDtlLnNraXAoYSk7Y29uc3Qgbj1lLmdldEJ5dGVzKHIpO2UucG9zPXM7aWYoImhlYWQiPT09dCl7bls4XT1uWzldPW5bMTBdPW5bMTFdPTA7blsxN118PTMyfXJldHVybnt0YWc6dCxjaGVja3N1bTppLGxlbmd0aDpyLG9mZnNldDphLGRhdGE6bn19ZnVuY3Rpb24gcmVhZE9wZW5UeXBlSGVhZGVyKGUpe3JldHVybnt2ZXJzaW9uOmUuZ2V0U3RyaW5nKDQpLG51bVRhYmxlczplLmdldFVpbnQxNigpLHNlYXJjaFJhbmdlOmUuZ2V0VWludDE2KCksZW50cnlTZWxlY3RvcjplLmdldFVpbnQxNigpLHJhbmdlU2hpZnQ6ZS5nZXRVaW50MTYoKX19ZnVuY3Rpb24gc2FuaXRpemVHbHlwaChlLHQsaSxhLHIscyl7Y29uc3Qgbj17bGVuZ3RoOjAsc2l6ZU9mSW5zdHJ1Y3Rpb25zOjB9O2lmKHQ8MHx8dD49ZS5sZW5ndGh8fGk+ZS5sZW5ndGh8fGktdDw9MTIpcmV0dXJuIG47Y29uc3Qgbz1lLnN1YmFycmF5KHQsaSksZz1zaWduZWRJbnQxNihvWzJdLG9bM10pLGM9c2lnbmVkSW50MTYob1s0XSxvWzVdKSxDPXNpZ25lZEludDE2KG9bNl0sb1s3XSksaD1zaWduZWRJbnQxNihvWzhdLG9bOV0pO2lmKGc+Qyl7d3JpdGVTaWduZWRJbnQxNihvLDIsQyk7d3JpdGVTaWduZWRJbnQxNihvLDYsZyl9aWYoYz5oKXt3cml0ZVNpZ25lZEludDE2KG8sNCxoKTt3cml0ZVNpZ25lZEludDE2KG8sOCxjKX1jb25zdCBsPXNpZ25lZEludDE2KG9bMF0sb1sxXSk7aWYobDwwKXtpZihsPC0xKXJldHVybiBuO2Euc2V0KG8scik7bi5sZW5ndGg9by5sZW5ndGg7cmV0dXJuIG59bGV0IFEsRT0xMCx1PTA7Zm9yKFE9MDtRPGw7USsrKXt1PShvW0VdPDw4fG9bRSsxXSkrMTtFKz0yfWNvbnN0IGQ9RSxmPW9bRV08PDh8b1tFKzFdO24uc2l6ZU9mSW5zdHJ1Y3Rpb25zPWY7RSs9MitmO2NvbnN0IHA9RTtsZXQgbT0wO2ZvcihRPTA7UTx1O1ErKyl7Y29uc3QgZT1vW0UrK107MTkyJmUmJihvW0UtMV09NjMmZSk7bGV0IHQ9MjsyJmU/dD0xOjE2JmUmJih0PTApO2xldCBpPTI7NCZlP2k9MTozMiZlJiYoaT0wKTtjb25zdCBhPXQraTttKz1hO2lmKDgmZSl7Y29uc3QgZT1vW0UrK107MD09PWUmJihvW0UtMV1ePTgpO1ErPWU7bSs9ZSphfX1pZigwPT09bSlyZXR1cm4gbjtsZXQgeT1FK207aWYoeT5vLmxlbmd0aClyZXR1cm4gbjtpZighcyYmZj4wKXthLnNldChvLnN1YmFycmF5KDAsZCkscik7YS5zZXQoWzAsMF0scitkKTthLnNldChvLnN1YmFycmF5KHAseSkscitkKzIpO3ktPWY7by5sZW5ndGgteT4zJiYoeT15KzMmLTQpO24ubGVuZ3RoPXk7cmV0dXJuIG59aWYoby5sZW5ndGgteT4zKXt5PXkrMyYtNDthLnNldChvLnN1YmFycmF5KDAseSkscik7bi5sZW5ndGg9eTtyZXR1cm4gbn1hLnNldChvLHIpO24ubGVuZ3RoPW8ubGVuZ3RoO3JldHVybiBufWZ1bmN0aW9uIHJlYWROYW1lVGFibGUoZSl7Y29uc3QgaT0odC5zdGFydHx8MCkrZS5vZmZzZXQ7dC5wb3M9aTtjb25zdCBhPVtbXSxbXV0scj1bXSxzPWUubGVuZ3RoLG49aStzO2lmKDAhPT10LmdldFVpbnQxNigpfHxzPDYpcmV0dXJuW2Escl07Y29uc3Qgbz10LmdldFVpbnQxNigpLGc9dC5nZXRVaW50MTYoKTtsZXQgYyxDO2ZvcihjPTA7YzxvJiZ0LnBvcysxMjw9bjtjKyspe2NvbnN0IGU9e3BsYXRmb3JtOnQuZ2V0VWludDE2KCksZW5jb2Rpbmc6dC5nZXRVaW50MTYoKSxsYW5ndWFnZTp0LmdldFVpbnQxNigpLG5hbWU6dC5nZXRVaW50MTYoKSxsZW5ndGg6dC5nZXRVaW50MTYoKSxvZmZzZXQ6dC5nZXRVaW50MTYoKX07KGlzTWFjTmFtZVJlY29yZChlKXx8aXNXaW5OYW1lUmVjb3JkKGUpKSYmci5wdXNoKGUpfWZvcihjPTAsQz1yLmxlbmd0aDtjPEM7YysrKXtjb25zdCBlPXJbY107aWYoZS5sZW5ndGg8PTApY29udGludWU7Y29uc3Qgcz1pK2crZS5vZmZzZXQ7aWYocytlLmxlbmd0aD5uKWNvbnRpbnVlO3QucG9zPXM7Y29uc3Qgbz1lLm5hbWU7aWYoZS5lbmNvZGluZyl7bGV0IGk9IiI7Zm9yKGxldCBhPTAscj1lLmxlbmd0aDthPHI7YSs9MilpKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHQuZ2V0VWludDE2KCkpO2FbMV1bb109aX1lbHNlIGFbMF1bb109dC5nZXRTdHJpbmcoZS5sZW5ndGgpfXJldHVyblthLHJdfWNvbnN0IHI9WzAsMCwwLDAsMCwwLDAsMCwtMiwtMiwtMiwtMiwwLDAsLTIsLTUsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsMCwwLC0xLDAsLTEsLTEsLTEsLTEsMSwtMSwtOTk5LDAsMSwwLC0xLC0yLDAsLTEsLTIsLTEsLTEsMCwtMSwtMSwwLDAsLTk5OSwtOTk5LC0xLC0xLC0xLC0xLC0yLC05OTksLTIsLTIsLTk5OSwwLC0yLC0yLDAsMCwtMiwwLC0yLDAsMCwwLC0yLC0xLC0xLDEsMSwwLDAsLTEsLTEsLTEsLTEsLTEsLTEsLTEsMCwwLC0xLDAsLTEsLTEsMCwtOTk5LC0xLC0xLC0xLC0xLC0xLC0xLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLC0yLC05OTksLTk5OSwtOTk5LC05OTksLTk5OSwtMSwtMSwtMiwtMiwwLDAsMCwwLC0xLC0xLC05OTksLTIsLTIsMCwwLC0xLC0yLC0yLDAsMCwwLC0xLC0xLC0xLC0yXTtmdW5jdGlvbiBzYW5pdGl6ZVRUUHJvZ3JhbShlLHQpe2xldCBpLGEscyxuLG8sZz1lLmRhdGEsYz0wLEM9MCxoPTA7Y29uc3QgbD1bXSxRPVtdLEU9W107bGV0IHU9dC50b29Db21wbGV4VG9Gb2xsb3dGdW5jdGlvbnMsZD0hMSxmPTAscD0wO2ZvcihsZXQgZT1nLmxlbmd0aDtjPGU7KXtjb25zdCBlPWdbYysrXTtpZig2ND09PWUpe2E9Z1tjKytdO2lmKGR8fHApYys9YTtlbHNlIGZvcihpPTA7aTxhO2krKylsLnB1c2goZ1tjKytdKX1lbHNlIGlmKDY1PT09ZSl7YT1nW2MrK107aWYoZHx8cCljKz0yKmE7ZWxzZSBmb3IoaT0wO2k8YTtpKyspe3M9Z1tjKytdO2wucHVzaChzPDw4fGdbYysrXSl9fWVsc2UgaWYoMTc2PT0oMjQ4JmUpKXthPWUtMTc2KzE7aWYoZHx8cCljKz1hO2Vsc2UgZm9yKGk9MDtpPGE7aSsrKWwucHVzaChnW2MrK10pfWVsc2UgaWYoMTg0PT0oMjQ4JmUpKXthPWUtMTg0KzE7aWYoZHx8cCljKz0yKmE7ZWxzZSBmb3IoaT0wO2k8YTtpKyspe3M9Z1tjKytdO2wucHVzaChzaWduZWRJbnQxNihzLGdbYysrXSkpfX1lbHNlIGlmKDQzIT09ZXx8dSlpZig0NCE9PWV8fHUpe2lmKDQ1PT09ZSlpZihkKXtkPSExO0M9Y31lbHNle289US5wb3AoKTtpZighbyl7d2FybigiVFQ6IEVOREYgYmFkIHN0YWNrIik7dC5oaW50c1ZhbGlkPSExO3JldHVybn1uPUUucG9wKCk7Zz1vLmRhdGE7Yz1vLmk7dC5mdW5jdGlvbnNTdGFja0RlbHRhc1tuXT1sLmxlbmd0aC1vLnN0YWNrVG9wfWVsc2UgaWYoMTM3PT09ZSl7aWYoZHx8cCl7d2FybigiVFQ6IG5lc3RlZCBJREVGcyBub3QgYWxsb3dlZCIpO3U9ITB9ZD0hMDtoPWN9ZWxzZSBpZig4OD09PWUpKytmO2Vsc2UgaWYoMjc9PT1lKXA9ZjtlbHNlIGlmKDg5PT09ZSl7cD09PWYmJihwPTApOy0tZn1lbHNlIGlmKDI4PT09ZSYmIWQmJiFwKXtjb25zdCBlPWwuYXQoLTEpO2U+MCYmKGMrPWUtMSl9fWVsc2V7aWYoZHx8cCl7d2FybigiVFQ6IG5lc3RlZCBGREVGcyBub3QgYWxsb3dlZCIpO3U9ITB9ZD0hMDtoPWM7bj1sLnBvcCgpO3QuZnVuY3Rpb25zRGVmaW5lZFtuXT17ZGF0YTpnLGk6Y319ZWxzZSBpZighZCYmIXApe249bC5hdCgtMSk7aWYoaXNOYU4obikpaW5mbygiVFQ6IENBTEwgZW1wdHkgc3RhY2sgKG9yIGludmFsaWQgZW50cnkpLiIpO2Vsc2V7dC5mdW5jdGlvbnNVc2VkW25dPSEwO2lmKG4gaW4gdC5mdW5jdGlvbnNTdGFja0RlbHRhcyl7Y29uc3QgZT1sLmxlbmd0aCt0LmZ1bmN0aW9uc1N0YWNrRGVsdGFzW25dO2lmKGU8MCl7d2FybigiVFQ6IENBTEwgaW52YWxpZCBmdW5jdGlvbnMgc3RhY2sgZGVsdGEuIik7dC5oaW50c1ZhbGlkPSExO3JldHVybn1sLmxlbmd0aD1lfWVsc2UgaWYobiBpbiB0LmZ1bmN0aW9uc0RlZmluZWQmJiFFLmluY2x1ZGVzKG4pKXtRLnB1c2goe2RhdGE6ZyxpOmMsc3RhY2tUb3A6bC5sZW5ndGgtMX0pO0UucHVzaChuKTtvPXQuZnVuY3Rpb25zRGVmaW5lZFtuXTtpZighbyl7d2FybigiVFQ6IENBTEwgbm9uLWV4aXN0ZW50IGZ1bmN0aW9uIik7dC5oaW50c1ZhbGlkPSExO3JldHVybn1nPW8uZGF0YTtjPW8uaX19fWlmKCFkJiYhcCl7bGV0IHQ9MDtlPD0xNDI/dD1yW2VdOmU+PTE5MiYmZTw9MjIzP3Q9LTE6ZT49MjI0JiYodD0tMik7aWYoZT49MTEzJiZlPD0xMTcpe2E9bC5wb3AoKTtpc05hTihhKXx8KHQ9MiotYSl9Zm9yKDt0PDAmJmwubGVuZ3RoPjA7KXtsLnBvcCgpO3QrK31mb3IoO3Q+MDspe2wucHVzaChOYU4pO3QtLX19fXQudG9vQ29tcGxleFRvRm9sbG93RnVuY3Rpb25zPXU7Y29uc3QgbT1bZ107Yz5nLmxlbmd0aCYmbS5wdXNoKG5ldyBVaW50OEFycmF5KGMtZy5sZW5ndGgpKTtpZihoPkMpe3dhcm4oIlRUOiBjb21wbGVtZW50aW5nIGEgbWlzc2luZyBmdW5jdGlvbiB0YWlsIik7bS5wdXNoKG5ldyBVaW50OEFycmF5KFszNCw0NV0pKX0hZnVuY3Rpb24gZm9sZFRUVGFibGUoZSx0KXtpZih0Lmxlbmd0aD4xKXtsZXQgaSxhLHI9MDtmb3IoaT0wLGE9dC5sZW5ndGg7aTxhO2krKylyKz10W2ldLmxlbmd0aDtyPXIrMyYtNDtjb25zdCBzPW5ldyBVaW50OEFycmF5KHIpO2xldCBuPTA7Zm9yKGk9MCxhPXQubGVuZ3RoO2k8YTtpKyspe3Muc2V0KHRbaV0sbik7bis9dFtpXS5sZW5ndGh9ZS5kYXRhPXM7ZS5sZW5ndGg9cn19KGUsbSl9bGV0IHMsbixvLGc7aWYoaXNUcnVlVHlwZUNvbGxlY3Rpb25GaWxlKHQ9bmV3IFN0cmVhbShuZXcgVWludDhBcnJheSh0LmdldEJ5dGVzKCkpKSkpe2NvbnN0IGU9ZnVuY3Rpb24gcmVhZFRydWVUeXBlQ29sbGVjdGlvbkRhdGEoZSx0KXtjb25zdHtudW1Gb250czppLG9mZnNldFRhYmxlOmF9PWZ1bmN0aW9uIHJlYWRUcnVlVHlwZUNvbGxlY3Rpb25IZWFkZXIoZSl7Y29uc3QgdD1lLmdldFN0cmluZyg0KTthc3NlcnQoInR0Y2YiPT09dCwiTXVzdCBiZSBhIFRydWVUeXBlIENvbGxlY3Rpb24gZm9udC4iKTtjb25zdCBpPWUuZ2V0VWludDE2KCksYT1lLmdldFVpbnQxNigpLHI9ZS5nZXRJbnQzMigpPj4+MCxzPVtdO2ZvcihsZXQgdD0wO3Q8cjt0Kyspcy5wdXNoKGUuZ2V0SW50MzIoKT4+PjApO2NvbnN0IG49e3R0Y1RhZzp0LG1ham9yVmVyc2lvbjppLG1pbm9yVmVyc2lvbjphLG51bUZvbnRzOnIsb2Zmc2V0VGFibGU6c307c3dpdGNoKGkpe2Nhc2UgMTpyZXR1cm4gbjtjYXNlIDI6bi5kc2lnVGFnPWUuZ2V0SW50MzIoKT4+PjA7bi5kc2lnTGVuZ3RoPWUuZ2V0SW50MzIoKT4+PjA7bi5kc2lnT2Zmc2V0PWUuZ2V0SW50MzIoKT4+PjA7cmV0dXJuIG59dGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkIFRydWVUeXBlIENvbGxlY3Rpb24gbWFqb3JWZXJzaW9uOiAke2l9LmApfShlKSxyPXQuc3BsaXQoIisiKTtsZXQgcztmb3IobGV0IG49MDtuPGk7bisrKXtlLnBvcz0oZS5zdGFydHx8MCkrYVtuXTtjb25zdCBpPXJlYWRPcGVuVHlwZUhlYWRlcihlKSxvPXJlYWRUYWJsZXMoZSxpLm51bVRhYmxlcyk7aWYoIW8ubmFtZSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoJ1RydWVUeXBlIENvbGxlY3Rpb24gZm9udCBtdXN0IGNvbnRhaW4gYSAibmFtZSIgdGFibGUuJyk7Y29uc3RbZ109cmVhZE5hbWVUYWJsZShvLm5hbWUpO2ZvcihsZXQgZT0wLGE9Zy5sZW5ndGg7ZTxhO2UrKylmb3IobGV0IGE9MCxuPWdbZV0ubGVuZ3RoO2E8bjthKyspe2NvbnN0IG49Z1tlXVthXT8ucmVwbGFjZUFsbCgvXHMvZywiIik7aWYobil7aWYobj09PXQpcmV0dXJue2hlYWRlcjppLHRhYmxlczpvfTtpZighKHIubGVuZ3RoPDIpKWZvcihjb25zdCBlIG9mIHIpbj09PWUmJihzPXtuYW1lOmUsaGVhZGVyOmksdGFibGVzOm99KX19fWlmKHMpe3dhcm4oYFRydWVUeXBlIENvbGxlY3Rpb24gZG9lcyBub3QgY29udGFpbiAiJHt0fSIgZm9udCwgZmFsbGluZyBiYWNrIHRvICIke3MubmFtZX0iIGZvbnQgaW5zdGVhZC5gKTtyZXR1cm57aGVhZGVyOnMuaGVhZGVyLHRhYmxlczpzLnRhYmxlc319dGhyb3cgbmV3IEZvcm1hdEVycm9yKGBUcnVlVHlwZSBDb2xsZWN0aW9uIGRvZXMgbm90IGNvbnRhaW4gIiR7dH0iIGZvbnQuYCl9KHQsdGhpcy5uYW1lKTtzPWUuaGVhZGVyO249ZS50YWJsZXN9ZWxzZXtzPXJlYWRPcGVuVHlwZUhlYWRlcih0KTtuPXJlYWRUYWJsZXModCxzLm51bVRhYmxlcyl9Y29uc3QgYz0hblsiQ0ZGICJdO2lmKGMpe2lmKCFuLmxvY2EpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCdSZXF1aXJlZCAibG9jYSIgdGFibGUgaXMgbm90IGZvdW5kJyk7aWYoIW4uZ2x5Zil7d2FybignUmVxdWlyZWQgImdseWYiIHRhYmxlIGlzIG5vdCBmb3VuZCAtLSB0cnlpbmcgdG8gcmVjb3Zlci4nKTtuLmdseWY9e3RhZzoiZ2x5ZiIsZGF0YTpuZXcgVWludDhBcnJheSgwKX19dGhpcy5pc09wZW5UeXBlPSExfWVsc2V7Y29uc3QgdD1pLmNvbXBvc2l0ZSYmKGkuY2lkVG9HaWRNYXA/Lmxlbmd0aD4wfHwhKGkuY01hcCBpbnN0YW5jZW9mIElkZW50aXR5Q01hcCkpO2lmKCJPVFRPIj09PXMudmVyc2lvbiYmIXR8fCFuLmhlYWR8fCFuLmhoZWF8fCFuLm1heHB8fCFuLnBvc3Qpe2c9bmV3IFN0cmVhbShuWyJDRkYgIl0uZGF0YSk7bz1uZXcgQ0ZGRm9udChnLGkpO2FkanVzdFdpZHRocyhpKTtyZXR1cm4gdGhpcy5jb252ZXJ0KGUsbyxpKX1kZWxldGUgbi5nbHlmO2RlbGV0ZSBuLmxvY2E7ZGVsZXRlIG4uZnBnbTtkZWxldGUgbi5wcmVwO2RlbGV0ZSBuWyJjdnQgIl07dGhpcy5pc09wZW5UeXBlPSEwfWlmKCFuLm1heHApdGhyb3cgbmV3IEZvcm1hdEVycm9yKCdSZXF1aXJlZCAibWF4cCIgdGFibGUgaXMgbm90IGZvdW5kJyk7dC5wb3M9KHQuc3RhcnR8fDApK24ubWF4cC5vZmZzZXQ7bGV0IEM9dC5nZXRJbnQzMigpO2NvbnN0IGg9dC5nZXRVaW50MTYoKTtpZig2NTUzNiE9PUMmJjIwNDgwIT09Qyl7aWYoNj09PW4ubWF4cC5sZW5ndGgpQz0yMDQ4MDtlbHNle2lmKCEobi5tYXhwLmxlbmd0aD49MzIpKXRocm93IG5ldyBGb3JtYXRFcnJvcignIm1heHAiIHRhYmxlIGhhcyBhIHdyb25nIHZlcnNpb24gbnVtYmVyJyk7Qz02NTUzNn0hZnVuY3Rpb24gd3JpdGVVaW50MzIoZSx0LGkpe2VbdCszXT0yNTUmaTtlW3QrMl09aT4+Pjg7ZVt0KzFdPWk+Pj4xNjtlW3RdPWk+Pj4yNH0obi5tYXhwLmRhdGEsMCxDKX1pZihpLnNjYWxlRmFjdG9ycz8ubGVuZ3RoPT09aCYmYyl7Y29uc3R7c2NhbGVGYWN0b3JzOmV9PWksdD1pbnQxNihuLmhlYWQuZGF0YVs1MF0sbi5oZWFkLmRhdGFbNTFdKSxhPW5ldyBHbHlmVGFibGUoe2dseWZUYWJsZTpuLmdseWYuZGF0YSxpc0dseXBoTG9jYXRpb25zTG9uZzp0LGxvY2FUYWJsZTpuLmxvY2EuZGF0YSxudW1HbHlwaHM6aH0pO2Euc2NhbGUoZSk7Y29uc3R7Z2x5ZjpyLGxvY2E6cyxpc0xvY2F0aW9uTG9uZzpvfT1hLndyaXRlKCk7bi5nbHlmLmRhdGE9cjtuLmxvY2EuZGF0YT1zO2lmKG8hPT0hIXQpe24uaGVhZC5kYXRhWzUwXT0wO24uaGVhZC5kYXRhWzUxXT1vPzE6MH1jb25zdCBnPW4uaG10eC5kYXRhO2ZvcihsZXQgdD0wO3Q8aDt0Kyspe2NvbnN0IGk9NCp0LGE9TWF0aC5yb3VuZChlW3RdKmludDE2KGdbaV0sZ1tpKzFdKSk7Z1tpXT1hPj44JjI1NTtnW2krMV09MjU1JmE7d3JpdGVTaWduZWRJbnQxNihnLGkrMixNYXRoLnJvdW5kKGVbdF0qc2lnbmVkSW50MTYoZ1tpKzJdLGdbaSszXSkpKX19bGV0IGw9aCsxLFE9ITA7aWYobD42NTUzNSl7UT0hMTtsPWg7d2FybigiTm90IGVub3VnaCBzcGFjZSBpbiBnbHlmcyB0byBkdXBsaWNhdGUgZmlyc3QgZ2x5cGguIil9bGV0IEU9MCx1PTA7aWYoQz49NjU1MzYmJm4ubWF4cC5sZW5ndGg+PTMyKXt0LnBvcys9ODtpZih0LmdldFVpbnQxNigpPjIpe24ubWF4cC5kYXRhWzE0XT0wO24ubWF4cC5kYXRhWzE1XT0yfXQucG9zKz00O0U9dC5nZXRVaW50MTYoKTt0LnBvcys9NDt1PXQuZ2V0VWludDE2KCl9bi5tYXhwLmRhdGFbNF09bD4+ODtuLm1heHAuZGF0YVs1XT0yNTUmbDtjb25zdCBkPWZ1bmN0aW9uIHNhbml0aXplVFRQcm9ncmFtcyhlLHQsaSxhKXtjb25zdCByPXtmdW5jdGlvbnNEZWZpbmVkOltdLGZ1bmN0aW9uc1VzZWQ6W10sZnVuY3Rpb25zU3RhY2tEZWx0YXM6W10sdG9vQ29tcGxleFRvRm9sbG93RnVuY3Rpb25zOiExLGhpbnRzVmFsaWQ6ITB9O2UmJnNhbml0aXplVFRQcm9ncmFtKGUscik7dCYmc2FuaXRpemVUVFByb2dyYW0odCxyKTtlJiZmdW5jdGlvbiBjaGVja0ludmFsaWRGdW5jdGlvbnMoZSx0KXtpZighZS50b29Db21wbGV4VG9Gb2xsb3dGdW5jdGlvbnMpaWYoZS5mdW5jdGlvbnNEZWZpbmVkLmxlbmd0aD50KXt3YXJuKCJUVDogbW9yZSBmdW5jdGlvbnMgZGVmaW5lZCB0aGFuIGV4cGVjdGVkIik7ZS5oaW50c1ZhbGlkPSExfWVsc2UgZm9yKGxldCBpPTAsYT1lLmZ1bmN0aW9uc1VzZWQubGVuZ3RoO2k8YTtpKyspe2lmKGk+dCl7d2FybigiVFQ6IGludmFsaWQgZnVuY3Rpb24gaWQ6ICIraSk7ZS5oaW50c1ZhbGlkPSExO3JldHVybn1pZihlLmZ1bmN0aW9uc1VzZWRbaV0mJiFlLmZ1bmN0aW9uc0RlZmluZWRbaV0pe3dhcm4oIlRUOiB1bmRlZmluZWQgZnVuY3Rpb246ICIraSk7ZS5oaW50c1ZhbGlkPSExO3JldHVybn19fShyLGEpO2lmKGkmJjEmaS5sZW5ndGgpe2NvbnN0IGU9bmV3IFVpbnQ4QXJyYXkoaS5sZW5ndGgrMSk7ZS5zZXQoaS5kYXRhKTtpLmRhdGE9ZX1yZXR1cm4gci5oaW50c1ZhbGlkfShuLmZwZ20sbi5wcmVwLG5bImN2dCAiXSxFKTtpZighZCl7ZGVsZXRlIG4uZnBnbTtkZWxldGUgbi5wcmVwO2RlbGV0ZSBuWyJjdnQgIl19IWZ1bmN0aW9uIHNhbml0aXplTWV0cmljcyhlLHQsaSxhLHIscyl7aWYoIXQpe2kmJihpLmRhdGE9bnVsbCk7cmV0dXJufWUucG9zPShlLnN0YXJ0fHwwKSt0Lm9mZnNldDtlLnBvcys9NDtlLnBvcys9MjtlLnBvcys9MjtlLnBvcys9MjtlLnBvcys9MjtlLnBvcys9MjtlLnBvcys9MjtlLnBvcys9MjtlLnBvcys9MjtlLnBvcys9Mjtjb25zdCBuPWUuZ2V0VWludDE2KCk7ZS5wb3MrPTg7ZS5wb3MrPTI7bGV0IG89ZS5nZXRVaW50MTYoKTtpZigwIT09bil7aWYoISgyJmludDE2KGEuZGF0YVs0NF0sYS5kYXRhWzQ1XSkpKXt0LmRhdGFbMjJdPTA7dC5kYXRhWzIzXT0wfX1pZihvPnIpe2luZm8oYFRoZSBudW1PZk1ldHJpY3MgKCR7b30pIHNob3VsZCBub3QgYmUgZ3JlYXRlciB0aGFuIHRoZSBudW1HbHlwaHMgKCR7cn0pLmApO289cjt0LmRhdGFbMzRdPSg2NTI4MCZvKT4+ODt0LmRhdGFbMzVdPTI1NSZvfWNvbnN0IGc9ci1vLShpLmxlbmd0aC00Km8+PjEpO2lmKGc+MCl7Y29uc3QgZT1uZXcgVWludDhBcnJheShpLmxlbmd0aCsyKmcpO2Uuc2V0KGkuZGF0YSk7aWYocyl7ZVtpLmxlbmd0aF09aS5kYXRhWzJdO2VbaS5sZW5ndGgrMV09aS5kYXRhWzNdfWkuZGF0YT1lfX0odCxuLmhoZWEsbi5obXR4LG4uaGVhZCxsLFEpO2lmKCFuLmhlYWQpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCdSZXF1aXJlZCAiaGVhZCIgdGFibGUgaXMgbm90IGZvdW5kJyk7IWZ1bmN0aW9uIHNhbml0aXplSGVhZChlLHQsaSl7Y29uc3QgYT1lLmRhdGEscj1mdW5jdGlvbiBpbnQzMihlLHQsaSxhKXtyZXR1cm4oZTw8MjQpKyh0PDwxNikrKGk8PDgpK2F9KGFbMF0sYVsxXSxhWzJdLGFbM10pO2lmKHI+PjE2IT0xKXtpbmZvKCJBdHRlbXB0aW5nIHRvIGZpeCBpbnZhbGlkIHZlcnNpb24gaW4gaGVhZCB0YWJsZTogIityKTthWzBdPTA7YVsxXT0xO2FbMl09MDthWzNdPTB9Y29uc3Qgcz1pbnQxNihhWzUwXSxhWzUxXSk7aWYoczwwfHxzPjEpe2luZm8oIkF0dGVtcHRpbmcgdG8gZml4IGludmFsaWQgaW5kZXhUb0xvY0Zvcm1hdCBpbiBoZWFkIHRhYmxlOiAiK3MpO2NvbnN0IGU9dCsxO2lmKGk9PT1lPDwxKXthWzUwXT0wO2FbNTFdPTB9ZWxzZXtpZihpIT09ZTw8Mil0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkNvdWxkIG5vdCBmaXggaW5kZXhUb0xvY0Zvcm1hdDogIitzKTthWzUwXT0wO2FbNTFdPTF9fX0obi5oZWFkLGgsYz9uLmxvY2EubGVuZ3RoOjApO2xldCBmPU9iamVjdC5jcmVhdGUobnVsbCk7aWYoYyl7Y29uc3QgZT1pbnQxNihuLmhlYWQuZGF0YVs1MF0sbi5oZWFkLmRhdGFbNTFdKSx0PWZ1bmN0aW9uIHNhbml0aXplR2x5cGhMb2NhdGlvbnMoZSx0LGksYSxyLHMsbil7bGV0IG8sZyxjO2lmKGEpe289NDtnPWZ1bmN0aW9uIGZvbnRJdGVtRGVjb2RlTG9uZyhlLHQpe3JldHVybiBlW3RdPDwyNHxlW3QrMV08PDE2fGVbdCsyXTw8OHxlW3QrM119O2M9ZnVuY3Rpb24gZm9udEl0ZW1FbmNvZGVMb25nKGUsdCxpKXtlW3RdPWk+Pj4yNCYyNTU7ZVt0KzFdPWk+PjE2JjI1NTtlW3QrMl09aT4+OCYyNTU7ZVt0KzNdPTI1NSZpfX1lbHNle289MjtnPWZ1bmN0aW9uIGZvbnRJdGVtRGVjb2RlKGUsdCl7cmV0dXJuIGVbdF08PDl8ZVt0KzFdPDwxfTtjPWZ1bmN0aW9uIGZvbnRJdGVtRW5jb2RlKGUsdCxpKXtlW3RdPWk+PjkmMjU1O2VbdCsxXT1pPj4xJjI1NX19Y29uc3QgQz1zP2krMTppLGg9byooMStDKSxsPW5ldyBVaW50OEFycmF5KGgpO2wuc2V0KGUuZGF0YS5zdWJhcnJheSgwLGgpKTtlLmRhdGE9bDtjb25zdCBRPXQuZGF0YSxFPVEubGVuZ3RoLHU9bmV3IFVpbnQ4QXJyYXkoRSk7bGV0IGQsZjtjb25zdCBwPVtdO2ZvcihkPTAsZj0wO2Q8aSsxO2QrKyxmKz1vKXtsZXQgZT1nKGwsZik7ZT5FJiYoZT1FKTtwLnB1c2goe2luZGV4OmQsb2Zmc2V0OmUsZW5kT2Zmc2V0OjB9KX1wLnNvcnQoKChlLHQpPT5lLm9mZnNldC10Lm9mZnNldCkpO2ZvcihkPTA7ZDxpO2QrKylwW2RdLmVuZE9mZnNldD1wW2QrMV0ub2Zmc2V0O3Auc29ydCgoKGUsdCk9PmUuaW5kZXgtdC5pbmRleCkpO2ZvcihkPTA7ZDxpO2QrKyl7Y29uc3R7b2Zmc2V0OmUsZW5kT2Zmc2V0OnR9PXBbZF07aWYoMCE9PWV8fDAhPT10KWJyZWFrO2NvbnN0IGk9cFtkKzFdLm9mZnNldDtpZigwIT09aSl7cFtkXS5lbmRPZmZzZXQ9aTticmVha319Y29uc3QgbT1wLmF0KC0yKTswIT09bS5vZmZzZXQmJjA9PT1tLmVuZE9mZnNldCYmKG0uZW5kT2Zmc2V0PUUpO2NvbnN0IHk9T2JqZWN0LmNyZWF0ZShudWxsKTtsZXQgdz0wO2MobCwwLHcpO2ZvcihkPTAsZj1vO2Q8aTtkKyssZis9byl7Y29uc3QgZT1zYW5pdGl6ZUdseXBoKFEscFtkXS5vZmZzZXQscFtkXS5lbmRPZmZzZXQsdSx3LHIpLHQ9ZS5sZW5ndGg7MD09PXQmJih5W2RdPSEwKTtlLnNpemVPZkluc3RydWN0aW9ucz5uJiYobj1lLnNpemVPZkluc3RydWN0aW9ucyk7dys9dDtjKGwsZix3KX1pZigwPT09dyl7Y29uc3QgZT1uZXcgVWludDhBcnJheShbMCwxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDQ5LDBdKTtmb3IoZD0wLGY9bztkPEM7ZCsrLGYrPW8pYyhsLGYsZS5sZW5ndGgpO3QuZGF0YT1lfWVsc2UgaWYocyl7Y29uc3QgaT1nKGwsbyk7aWYodS5sZW5ndGg+aSt3KXQuZGF0YT11LnN1YmFycmF5KDAsaSt3KTtlbHNle3QuZGF0YT1uZXcgVWludDhBcnJheShpK3cpO3QuZGF0YS5zZXQodS5zdWJhcnJheSgwLHcpKX10LmRhdGEuc2V0KHUuc3ViYXJyYXkoMCxpKSx3KTtjKGUuZGF0YSxsLmxlbmd0aC1vLHcraSl9ZWxzZSB0LmRhdGE9dS5zdWJhcnJheSgwLHcpO3JldHVybnttaXNzaW5nR2x5cGhzOnksbWF4U2l6ZU9mSW5zdHJ1Y3Rpb25zOm59fShuLmxvY2Esbi5nbHlmLGgsZSxkLFEsdSk7Zj10Lm1pc3NpbmdHbHlwaHM7aWYoQz49NjU1MzYmJm4ubWF4cC5sZW5ndGg+PTMyKXtuLm1heHAuZGF0YVsyNl09dC5tYXhTaXplT2ZJbnN0cnVjdGlvbnM+Pjg7bi5tYXhwLmRhdGFbMjddPTI1NSZ0Lm1heFNpemVPZkluc3RydWN0aW9uc319aWYoIW4uaGhlYSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoJ1JlcXVpcmVkICJoaGVhIiB0YWJsZSBpcyBub3QgZm91bmQnKTtpZigwPT09bi5oaGVhLmRhdGFbMTBdJiYwPT09bi5oaGVhLmRhdGFbMTFdKXtuLmhoZWEuZGF0YVsxMF09MjU1O24uaGhlYS5kYXRhWzExXT0yNTV9Y29uc3QgcD17dW5pdHNQZXJFbTppbnQxNihuLmhlYWQuZGF0YVsxOF0sbi5oZWFkLmRhdGFbMTldKSx5TWF4OnNpZ25lZEludDE2KG4uaGVhZC5kYXRhWzQyXSxuLmhlYWQuZGF0YVs0M10pLHlNaW46c2lnbmVkSW50MTYobi5oZWFkLmRhdGFbMzhdLG4uaGVhZC5kYXRhWzM5XSksYXNjZW50OnNpZ25lZEludDE2KG4uaGhlYS5kYXRhWzRdLG4uaGhlYS5kYXRhWzVdKSxkZXNjZW50OnNpZ25lZEludDE2KG4uaGhlYS5kYXRhWzZdLG4uaGhlYS5kYXRhWzddKSxsaW5lR2FwOnNpZ25lZEludDE2KG4uaGhlYS5kYXRhWzhdLG4uaGhlYS5kYXRhWzldKX07dGhpcy5hc2NlbnQ9cC5hc2NlbnQvcC51bml0c1BlckVtO3RoaXMuZGVzY2VudD1wLmRlc2NlbnQvcC51bml0c1BlckVtO3RoaXMubGluZUdhcD1wLmxpbmVHYXAvcC51bml0c1BlckVtO2lmKHRoaXMuY3NzRm9udEluZm8/LmxpbmVIZWlnaHQpe3RoaXMubGluZUhlaWdodD10aGlzLmNzc0ZvbnRJbmZvLm1ldHJpY3MubGluZUhlaWdodDt0aGlzLmxpbmVHYXA9dGhpcy5jc3NGb250SW5mby5tZXRyaWNzLmxpbmVHYXB9ZWxzZSB0aGlzLmxpbmVIZWlnaHQ9dGhpcy5hc2NlbnQtdGhpcy5kZXNjZW50K3RoaXMubGluZUdhcDtuLnBvc3QmJmZ1bmN0aW9uIHJlYWRQb3N0U2NyaXB0VGFibGUoZSxpLGEpe2NvbnN0IHI9KHQuc3RhcnR8fDApK2Uub2Zmc2V0O3QucG9zPXI7Y29uc3Qgcz1yK2UubGVuZ3RoLG49dC5nZXRJbnQzMigpO3Quc2tpcCgyOCk7bGV0IG8sZyxjPSEwO3N3aXRjaChuKXtjYXNlIDY1NTM2Om89Wmk7YnJlYWs7Y2FzZSAxMzEwNzI6Y29uc3QgZT10LmdldFVpbnQxNigpO2lmKGUhPT1hKXtjPSExO2JyZWFrfWNvbnN0IHI9W107Zm9yKGc9MDtnPGU7KytnKXtjb25zdCBlPXQuZ2V0VWludDE2KCk7aWYoZT49MzI3Njgpe2M9ITE7YnJlYWt9ci5wdXNoKGUpfWlmKCFjKWJyZWFrO2NvbnN0IEM9W10saD1bXTtmb3IoO3QucG9zPHM7KXtjb25zdCBlPXQuZ2V0Qnl0ZSgpO2gubGVuZ3RoPWU7Zm9yKGc9MDtnPGU7KytnKWhbZ109U3RyaW5nLmZyb21DaGFyQ29kZSh0LmdldEJ5dGUoKSk7Qy5wdXNoKGguam9pbigiIikpfW89W107Zm9yKGc9MDtnPGU7KytnKXtjb25zdCBlPXJbZ107ZTwyNTg/by5wdXNoKFppW2VdKTpvLnB1c2goQ1tlLTI1OF0pfWJyZWFrO2Nhc2UgMTk2NjA4OmJyZWFrO2RlZmF1bHQ6d2FybigiVW5rbm93bi91bnN1cHBvcnRlZCBwb3N0IHRhYmxlIHZlcnNpb24gIituKTtjPSExO2kuZGVmYXVsdEVuY29kaW5nJiYobz1pLmRlZmF1bHRFbmNvZGluZyl9aS5nbHlwaE5hbWVzPW87cmV0dXJuIGN9KG4ucG9zdCxpLGgpO24ucG9zdD17dGFnOiJwb3N0IixkYXRhOmNyZWF0ZVBvc3RUYWJsZShpKX07Y29uc3QgbT1PYmplY3QuY3JlYXRlKG51bGwpO2Z1bmN0aW9uIGhhc0dseXBoKGUpe3JldHVybiFmW2VdfWlmKGkuY29tcG9zaXRlKXtjb25zdCBlPWkuY2lkVG9HaWRNYXB8fFtdLHQ9MD09PWUubGVuZ3RoO2kuY01hcC5mb3JFYWNoKChmdW5jdGlvbihpLGEpeyJzdHJpbmciPT10eXBlb2YgYSYmKGE9Y29udmVydENpZFN0cmluZyhpLGEsITApKTtpZihhPjY1NTM1KXRocm93IG5ldyBGb3JtYXRFcnJvcigiTWF4IHNpemUgb2YgQ0lEIGlzIDY1LDUzNSIpO2xldCByPS0xO3Q/cj1hOnZvaWQgMCE9PWVbYV0mJihyPWVbYV0pO3I+PTAmJnI8aCYmaGFzR2x5cGgocikmJihtW2ldPXIpfSkpfWVsc2V7Y29uc3QgZT1mdW5jdGlvbiByZWFkQ21hcFRhYmxlKGUsdCxpLGEpe2lmKCFlKXt3YXJuKCJObyBjbWFwIHRhYmxlIGF2YWlsYWJsZS4iKTtyZXR1cm57cGxhdGZvcm1JZDotMSxlbmNvZGluZ0lkOi0xLG1hcHBpbmdzOltdLGhhc1Nob3J0Q21hcDohMX19bGV0IHIscz0odC5zdGFydHx8MCkrZS5vZmZzZXQ7dC5wb3M9czt0LnNraXAoMik7Y29uc3Qgbj10LmdldFVpbnQxNigpO2xldCBvLGc9ITE7Zm9yKGxldCBlPTA7ZTxuO2UrKyl7Y29uc3Qgcj10LmdldFVpbnQxNigpLHM9dC5nZXRVaW50MTYoKSxjPXQuZ2V0SW50MzIoKT4+PjA7bGV0IEM9ITE7aWYobz8ucGxhdGZvcm1JZCE9PXJ8fG8/LmVuY29kaW5nSWQhPT1zKXtpZigwIT09cnx8MCE9PXMmJjEhPT1zJiYzIT09cylpZigxPT09ciYmMD09PXMpQz0hMDtlbHNlIGlmKDMhPT1yfHwxIT09c3x8IWEmJm8pe2lmKGkmJjM9PT1yJiYwPT09cyl7Qz0hMDtsZXQgaT0hMDtpZihlPG4tMSl7Y29uc3QgZT10LnBlZWtCeXRlcygyKTtpbnQxNihlWzBdLGVbMV0pPHImJihpPSExKX1pJiYoZz0hMCl9fWVsc2V7Qz0hMDtpfHwoZz0hMCl9ZWxzZSBDPSEwO0MmJihvPXtwbGF0Zm9ybUlkOnIsZW5jb2RpbmdJZDpzLG9mZnNldDpjfSk7aWYoZylicmVha319byYmKHQucG9zPXMrby5vZmZzZXQpO2lmKCFvfHwtMT09PXQucGVla0J5dGUoKSl7d2FybigiQ291bGQgbm90IGZpbmQgYSBwcmVmZXJyZWQgY21hcCB0YWJsZS4iKTtyZXR1cm57cGxhdGZvcm1JZDotMSxlbmNvZGluZ0lkOi0xLG1hcHBpbmdzOltdLGhhc1Nob3J0Q21hcDohMX19Y29uc3QgYz10LmdldFVpbnQxNigpO2xldCBDPSExO2NvbnN0IGg9W107bGV0IGwsUTtpZigwPT09Yyl7dC5za2lwKDQpO2ZvcihsPTA7bDwyNTY7bCsrKXtjb25zdCBlPXQuZ2V0Qnl0ZSgpO2UmJmgucHVzaCh7Y2hhckNvZGU6bCxnbHlwaElkOmV9KX1DPSEwfWVsc2UgaWYoMj09PWMpe3Quc2tpcCg0KTtjb25zdCBlPVtdO2xldCBpPTA7Zm9yKGxldCBhPTA7YTwyNTY7YSsrKXtjb25zdCBhPXQuZ2V0VWludDE2KCk+PjM7ZS5wdXNoKGEpO2k9TWF0aC5tYXgoYSxpKX1jb25zdCBhPVtdO2ZvcihsZXQgZT0wO2U8PWk7ZSsrKWEucHVzaCh7Zmlyc3RDb2RlOnQuZ2V0VWludDE2KCksZW50cnlDb3VudDp0LmdldFVpbnQxNigpLGlkRGVsdGE6c2lnbmVkSW50MTYodC5nZXRCeXRlKCksdC5nZXRCeXRlKCkpLGlkUmFuZ2VQb3M6dC5wb3MrdC5nZXRVaW50MTYoKX0pO2ZvcihsZXQgaT0wO2k8MjU2O2krKylpZigwPT09ZVtpXSl7dC5wb3M9YVswXS5pZFJhbmdlUG9zKzIqaTtRPXQuZ2V0VWludDE2KCk7aC5wdXNoKHtjaGFyQ29kZTppLGdseXBoSWQ6UX0pfWVsc2V7Y29uc3Qgcj1hW2VbaV1dO2ZvcihsPTA7bDxyLmVudHJ5Q291bnQ7bCsrKXtjb25zdCBlPShpPDw4KStsK3IuZmlyc3RDb2RlO3QucG9zPXIuaWRSYW5nZVBvcysyKmw7UT10LmdldFVpbnQxNigpOzAhPT1RJiYoUT0oUStyLmlkRGVsdGEpJTY1NTM2KTtoLnB1c2goe2NoYXJDb2RlOmUsZ2x5cGhJZDpRfSl9fX1lbHNlIGlmKDQ9PT1jKXt0LnNraXAoNCk7Y29uc3QgZT10LmdldFVpbnQxNigpPj4xO3Quc2tpcCg2KTtjb25zdCBpPVtdO2xldCBhO2ZvcihhPTA7YTxlO2ErKylpLnB1c2goe2VuZDp0LmdldFVpbnQxNigpfSk7dC5za2lwKDIpO2ZvcihhPTA7YTxlO2ErKylpW2FdLnN0YXJ0PXQuZ2V0VWludDE2KCk7Zm9yKGE9MDthPGU7YSsrKWlbYV0uZGVsdGE9dC5nZXRVaW50MTYoKTtsZXQgbixvPTA7Zm9yKGE9MDthPGU7YSsrKXtyPWlbYV07Y29uc3Qgcz10LmdldFVpbnQxNigpO2lmKHMpe249KHM+PjEpLShlLWEpO3Iub2Zmc2V0SW5kZXg9bjtvPU1hdGgubWF4KG8sbityLmVuZC1yLnN0YXJ0KzEpfWVsc2Ugci5vZmZzZXRJbmRleD0tMX1jb25zdCBnPVtdO2ZvcihsPTA7bDxvO2wrKylnLnB1c2godC5nZXRVaW50MTYoKSk7Zm9yKGE9MDthPGU7YSsrKXtyPWlbYV07cz1yLnN0YXJ0O2NvbnN0IGU9ci5lbmQsdD1yLmRlbHRhO249ci5vZmZzZXRJbmRleDtmb3IobD1zO2w8PWU7bCsrKWlmKDY1NTM1IT09bCl7UT1uPDA/bDpnW24rbC1zXTtRPVErdCY2NTUzNTtoLnB1c2goe2NoYXJDb2RlOmwsZ2x5cGhJZDpRfSl9fX1lbHNlIGlmKDY9PT1jKXt0LnNraXAoNCk7Y29uc3QgZT10LmdldFVpbnQxNigpLGk9dC5nZXRVaW50MTYoKTtmb3IobD0wO2w8aTtsKyspe1E9dC5nZXRVaW50MTYoKTtjb25zdCBpPWUrbDtoLnB1c2goe2NoYXJDb2RlOmksZ2x5cGhJZDpRfSl9fWVsc2V7aWYoMTIhPT1jKXt3YXJuKCJjbWFwIHRhYmxlIGhhcyB1bnN1cHBvcnRlZCBmb3JtYXQ6ICIrYyk7cmV0dXJue3BsYXRmb3JtSWQ6LTEsZW5jb2RpbmdJZDotMSxtYXBwaW5nczpbXSxoYXNTaG9ydENtYXA6ITF9fXt0LnNraXAoMTApO2NvbnN0IGU9dC5nZXRJbnQzMigpPj4+MDtmb3IobD0wO2w8ZTtsKyspe2NvbnN0IGU9dC5nZXRJbnQzMigpPj4+MCxpPXQuZ2V0SW50MzIoKT4+PjA7bGV0IGE9dC5nZXRJbnQzMigpPj4+MDtmb3IobGV0IHQ9ZTt0PD1pO3QrKyloLnB1c2goe2NoYXJDb2RlOnQsZ2x5cGhJZDphKyt9KX19fWguc29ydCgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5jaGFyQ29kZS10LmNoYXJDb2RlfSkpO2ZvcihsZXQgZT0xO2U8aC5sZW5ndGg7ZSsrKWlmKGhbZS0xXS5jaGFyQ29kZT09PWhbZV0uY2hhckNvZGUpe2guc3BsaWNlKGUsMSk7ZS0tfXJldHVybntwbGF0Zm9ybUlkOm8ucGxhdGZvcm1JZCxlbmNvZGluZ0lkOm8uZW5jb2RpbmdJZCxtYXBwaW5nczpoLGhhc1Nob3J0Q21hcDpDfX0obi5jbWFwLHQsdGhpcy5pc1N5bWJvbGljRm9udCxpLmhhc0VuY29kaW5nKSxhPWUucGxhdGZvcm1JZCxyPWUuZW5jb2RpbmdJZCxzPWUubWFwcGluZ3M7bGV0IG89W10sZz0hMTshaS5oYXNFbmNvZGluZ3x8Ik1hY1JvbWFuRW5jb2RpbmciIT09aS5iYXNlRW5jb2RpbmdOYW1lJiYiV2luQW5zaUVuY29kaW5nIiE9PWkuYmFzZUVuY29kaW5nTmFtZXx8KG89Z2V0RW5jb2RpbmcoaS5iYXNlRW5jb2RpbmdOYW1lKSk7aWYoaS5oYXNFbmNvZGluZyYmIXRoaXMuaXNTeW1ib2xpY0ZvbnQmJigzPT09YSYmMT09PXJ8fDE9PT1hJiYwPT09cikpe2NvbnN0IGU9SmkoKTtmb3IobGV0IHQ9MDt0PDI1Njt0Kyspe2xldCBuO249dm9pZCAwIT09dGhpcy5kaWZmZXJlbmNlc1t0XT90aGlzLmRpZmZlcmVuY2VzW3RdOm8ubGVuZ3RoJiYiIiE9PW9bdF0/b1t0XTpiaVt0XTtpZighbiljb250aW51ZTtjb25zdCBnPXJlY292ZXJHbHlwaE5hbWUobixlKTtsZXQgYzszPT09YSYmMT09PXI/Yz1lW2ddOjE9PT1hJiYwPT09ciYmKGM9d2kuaW5kZXhPZihnKSk7aWYodm9pZCAwPT09Yyl7aWYoIWkuZ2x5cGhOYW1lcyYmaS5oYXNJbmNsdWRlZFRvVW5pY29kZU1hcCYmISh0aGlzLnRvVW5pY29kZSBpbnN0YW5jZW9mIElkZW50aXR5VG9Vbmljb2RlTWFwKSl7Y29uc3QgZT10aGlzLnRvVW5pY29kZS5nZXQodCk7ZSYmKGM9ZS5jb2RlUG9pbnRBdCgwKSl9aWYodm9pZCAwPT09Yyljb250aW51ZX1mb3IoY29uc3QgZSBvZiBzKWlmKGUuY2hhckNvZGU9PT1jKXttW3RdPWUuZ2x5cGhJZDticmVha319fWVsc2UgaWYoMD09PWEpe2Zvcihjb25zdCBlIG9mIHMpbVtlLmNoYXJDb2RlXT1lLmdseXBoSWQ7Zz0hMH1lbHNlIGlmKDM9PT1hJiYwPT09cilmb3IoY29uc3QgZSBvZiBzKXtsZXQgdD1lLmNoYXJDb2RlO3Q+PTYxNDQwJiZ0PD02MTY5NSYmKHQmPTI1NSk7bVt0XT1lLmdseXBoSWR9ZWxzZSBmb3IoY29uc3QgZSBvZiBzKW1bZS5jaGFyQ29kZV09ZS5nbHlwaElkO2lmKGkuZ2x5cGhOYW1lcyYmKG8ubGVuZ3RofHx0aGlzLmRpZmZlcmVuY2VzLmxlbmd0aCkpZm9yKGxldCBlPTA7ZTwyNTY7KytlKXtpZighZyYmdm9pZCAwIT09bVtlXSljb250aW51ZTtjb25zdCB0PXRoaXMuZGlmZmVyZW5jZXNbZV18fG9bZV07aWYoIXQpY29udGludWU7Y29uc3QgYT1pLmdseXBoTmFtZXMuaW5kZXhPZih0KTthPjAmJmhhc0dseXBoKGEpJiYobVtlXT1hKX19MD09PW0ubGVuZ3RoJiYobVswXT0wKTtsZXQgeT1sLTE7UXx8KHk9MCk7aWYoIWkuY3NzRm9udEluZm8pe2NvbnN0IGU9YWRqdXN0TWFwcGluZyhtLGhhc0dseXBoLHksdGhpcy50b1VuaWNvZGUpO3RoaXMudG9Gb250Q2hhcj1lLnRvRm9udENoYXI7bi5jbWFwPXt0YWc6ImNtYXAiLGRhdGE6Y3JlYXRlQ21hcFRhYmxlKGUuY2hhckNvZGVUb0dseXBoSWQsZS50b1VuaWNvZGVFeHRyYU1hcCxsKX07blsiT1MvMiJdJiZmdW5jdGlvbiB2YWxpZGF0ZU9TMlRhYmxlKGUsdCl7dC5wb3M9KHQuc3RhcnR8fDApK2Uub2Zmc2V0O2NvbnN0IGk9dC5nZXRVaW50MTYoKTt0LnNraXAoNjApO2NvbnN0IGE9dC5nZXRVaW50MTYoKTtpZihpPDQmJjc2OCZhKXJldHVybiExO2lmKHQuZ2V0VWludDE2KCk+dC5nZXRVaW50MTYoKSlyZXR1cm4hMTt0LnNraXAoNik7aWYoMD09PXQuZ2V0VWludDE2KCkpcmV0dXJuITE7ZS5kYXRhWzhdPWUuZGF0YVs5XT0wO3JldHVybiEwfShuWyJPUy8yIl0sdCl8fChuWyJPUy8yIl09e3RhZzoiT1MvMiIsZGF0YTpjcmVhdGVPUzJUYWJsZShpLGUuY2hhckNvZGVUb0dseXBoSWQscCl9KX1pZighYyl0cnl7Zz1uZXcgU3RyZWFtKG5bIkNGRiAiXS5kYXRhKTtvPW5ldyBDRkZQYXJzZXIoZyxpLE9pKS5wYXJzZSgpO28uZHVwbGljYXRlRmlyc3RHbHlwaCgpO2NvbnN0IGU9bmV3IENGRkNvbXBpbGVyKG8pO25bIkNGRiAiXS5kYXRhPWUuY29tcGlsZSgpfWNhdGNoe3dhcm4oIkZhaWxlZCB0byBjb21waWxlIGZvbnQgIitpLmxvYWRlZE5hbWUpfWlmKG4ubmFtZSl7Y29uc3RbdCxhXT1yZWFkTmFtZVRhYmxlKG4ubmFtZSk7bi5uYW1lLmRhdGE9Y3JlYXRlTmFtZVRhYmxlKGUsdCk7dGhpcy5wc05hbWU9dFswXVs2XXx8bnVsbDtpLmNvbXBvc2l0ZXx8ZnVuY3Rpb24gYWRqdXN0VHJ1ZVR5cGVUb1VuaWNvZGUoZSx0LGkpe2lmKGUuaXNJbnRlcm5hbEZvbnQpcmV0dXJuO2lmKGUuaGFzSW5jbHVkZWRUb1VuaWNvZGVNYXApcmV0dXJuO2lmKGUuaGFzRW5jb2RpbmcpcmV0dXJuO2lmKGUudG9Vbmljb2RlIGluc3RhbmNlb2YgSWRlbnRpdHlUb1VuaWNvZGVNYXApcmV0dXJuO2lmKCF0KXJldHVybjtpZigwPT09aS5sZW5ndGgpcmV0dXJuO2lmKGUuZGVmYXVsdEVuY29kaW5nPT09RGkpcmV0dXJuO2Zvcihjb25zdCBlIG9mIGkpaWYoIWlzV2luTmFtZVJlY29yZChlKSlyZXR1cm47Y29uc3QgYT1EaSxyPVtdLHM9SmkoKTtmb3IoY29uc3QgZSBpbiBhKXtjb25zdCB0PWFbZV07aWYoIiI9PT10KWNvbnRpbnVlO2NvbnN0IGk9c1t0XTt2b2lkIDAhPT1pJiYocltlXT1TdHJpbmcuZnJvbUNoYXJDb2RlKGkpKX1yLmxlbmd0aD4wJiZlLnRvVW5pY29kZS5hbWVuZChyKX0oaSx0aGlzLmlzU3ltYm9saWNGb250LGEpfWVsc2Ugbi5uYW1lPXt0YWc6Im5hbWUiLGRhdGE6Y3JlYXRlTmFtZVRhYmxlKHRoaXMubmFtZSl9O2NvbnN0IHc9bmV3IE9wZW5UeXBlRmlsZUJ1aWxkZXIocy52ZXJzaW9uKTtmb3IoY29uc3QgZSBpbiBuKXcuYWRkVGFibGUoZSxuW2VdLmRhdGEpO3JldHVybiB3LnRvQXJyYXkoKX1jb252ZXJ0KGUsdCxpKXtpLmZpeGVkUGl0Y2g9ITE7aS5idWlsdEluRW5jb2RpbmcmJmZ1bmN0aW9uIGFkanVzdFR5cGUxVG9Vbmljb2RlKGUsdCl7aWYoZS5pc0ludGVybmFsRm9udClyZXR1cm47aWYoZS5oYXNJbmNsdWRlZFRvVW5pY29kZU1hcClyZXR1cm47aWYodD09PWUuZGVmYXVsdEVuY29kaW5nKXJldHVybjtpZihlLnRvVW5pY29kZSBpbnN0YW5jZW9mIElkZW50aXR5VG9Vbmljb2RlTWFwKXJldHVybjtjb25zdCBpPVtdLGE9SmkoKTtmb3IoY29uc3QgciBpbiB0KXtpZihlLmhhc0VuY29kaW5nJiYoZS5iYXNlRW5jb2RpbmdOYW1lfHx2b2lkIDAhPT1lLmRpZmZlcmVuY2VzW3JdKSljb250aW51ZTtjb25zdCBzPWdldFVuaWNvZGVGb3JHbHlwaCh0W3JdLGEpOy0xIT09cyYmKGlbcl09U3RyaW5nLmZyb21DaGFyQ29kZShzKSl9aS5sZW5ndGg+MCYmZS50b1VuaWNvZGUuYW1lbmQoaSl9KGksaS5idWlsdEluRW5jb2RpbmcpO2xldCBhPTE7dCBpbnN0YW5jZW9mIENGRkZvbnQmJihhPXQubnVtR2x5cGhzLTEpO2NvbnN0IHM9dC5nZXRHbHlwaE1hcHBpbmcoaSk7bGV0IG49bnVsbCxvPXMsZz1udWxsO2lmKCFpLmNzc0ZvbnRJbmZvKXtuPWFkanVzdE1hcHBpbmcocyx0Lmhhc0dseXBoSWQuYmluZCh0KSxhLHRoaXMudG9Vbmljb2RlKTt0aGlzLnRvRm9udENoYXI9bi50b0ZvbnRDaGFyO289bi5jaGFyQ29kZVRvR2x5cGhJZDtnPW4udG9Vbmljb2RlRXh0cmFNYXB9Y29uc3QgYz10Lm51bUdseXBocztmdW5jdGlvbiBnZXRDaGFyQ29kZXMoZSx0KXtsZXQgaT1udWxsO2Zvcihjb25zdCBhIGluIGUpdD09PWVbYV0mJihpfHw9W10pLnB1c2goMHxhKTtyZXR1cm4gaX1mdW5jdGlvbiBjcmVhdGVDaGFyQ29kZShlLHQpe2Zvcihjb25zdCBpIGluIGUpaWYodD09PWVbaV0pcmV0dXJuIDB8aTtuLmNoYXJDb2RlVG9HbHlwaElkW24ubmV4dEF2YWlsYWJsZUZvbnRDaGFyQ29kZV09dDtyZXR1cm4gbi5uZXh0QXZhaWxhYmxlRm9udENoYXJDb2RlKyt9Y29uc3QgQz10LnNlYWNzO2lmKG4mJkM/Lmxlbmd0aCl7Y29uc3QgZT1pLmZvbnRNYXRyaXh8fHIsYT10LmdldENoYXJzZXQoKSxvPU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGxldCB0IGluIEMpe3R8PTA7Y29uc3QgaT1DW3RdLHI9YmlbaVsyXV0sZz1iaVtpWzNdXSxjPWEuaW5kZXhPZihyKSxoPWEuaW5kZXhPZihnKTtpZihjPDB8fGg8MCljb250aW51ZTtjb25zdCBsPXt4OmlbMF0qZVswXStpWzFdKmVbMl0rZVs0XSx5OmlbMF0qZVsxXStpWzFdKmVbM10rZVs1XX0sUT1nZXRDaGFyQ29kZXMocyx0KTtpZihRKWZvcihjb25zdCBlIG9mIFEpe2NvbnN0IHQ9bi5jaGFyQ29kZVRvR2x5cGhJZCxpPWNyZWF0ZUNoYXJDb2RlKHQsYyksYT1jcmVhdGVDaGFyQ29kZSh0LGgpO29bZV09e2Jhc2VGb250Q2hhckNvZGU6aSxhY2NlbnRGb250Q2hhckNvZGU6YSxhY2NlbnRPZmZzZXQ6bH19fWkuc2VhY01hcD1vfWNvbnN0IGg9aS5mb250TWF0cml4PzEvTWF0aC5tYXgoLi4uaS5mb250TWF0cml4LnNsaWNlKDAsNCkubWFwKE1hdGguYWJzKSk6MWUzLGw9bmV3IE9wZW5UeXBlRmlsZUJ1aWxkZXIoIk9UVE8iKTtsLmFkZFRhYmxlKCJDRkYgIix0LmRhdGEpO2wuYWRkVGFibGUoIk9TLzIiLGNyZWF0ZU9TMlRhYmxlKGksbykpO2wuYWRkVGFibGUoImNtYXAiLGNyZWF0ZUNtYXBUYWJsZShvLGcsYykpO2wuYWRkVGFibGUoImhlYWQiLCJcMAFcMFwwXDBcMBBcMFwwXDBcMFwwXw88w7VcMFwwIitzYWZlU3RyaW5nMTYoaCkrIlwwXDBcMFwwwp5cdn4nXDBcMFwwXDDCnlx2fidcMFwwIitzYWZlU3RyaW5nMTYoaS5kZXNjZW50KSsiD8O/IitzYWZlU3RyaW5nMTYoaS5hc2NlbnQpK3N0cmluZzE2KGkuaXRhbGljQW5nbGU/MjowKSsiXDARXDBcMFwwXDBcMFwwIik7bC5hZGRUYWJsZSgiaGhlYSIsIlwwAVwwXDAiK3NhZmVTdHJpbmcxNihpLmFzY2VudCkrc2FmZVN0cmluZzE2KGkuZGVzY2VudCkrIlwwXDDDv8O/XDBcMFwwXDBcMFwwIitzYWZlU3RyaW5nMTYoaS5jYXBIZWlnaHQpK3NhZmVTdHJpbmcxNihNYXRoLnRhbihpLml0YWxpY0FuZ2xlKSppLnhIZWlnaHQpKyJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiK3N0cmluZzE2KGMpKTtsLmFkZFRhYmxlKCJobXR4IixmdW5jdGlvbiBmb250RmllbGRzSG10eCgpe2NvbnN0IGU9dC5jaGFyc3RyaW5ncyxpPXQuY2ZmP3QuY2ZmLndpZHRoczpudWxsO2xldCBhPSJcMFwwXDBcMCI7Zm9yKGxldCB0PTEscj1jO3Q8cjt0Kyspe2xldCByPTA7aWYoZSl7Y29uc3QgaT1lW3QtMV07cj0id2lkdGgiaW4gaT9pLndpZHRoOjB9ZWxzZSBpJiYocj1NYXRoLmNlaWwoaVt0XXx8MCkpO2ErPXN0cmluZzE2KHIpK3N0cmluZzE2KDApfXJldHVybiBhfSgpKTtsLmFkZFRhYmxlKCJtYXhwIiwiXDBcMFBcMCIrc3RyaW5nMTYoYykpO2wuYWRkVGFibGUoIm5hbWUiLGNyZWF0ZU5hbWVUYWJsZShlKSk7bC5hZGRUYWJsZSgicG9zdCIsY3JlYXRlUG9zdFRhYmxlKGkpKTtyZXR1cm4gbC50b0FycmF5KCl9Z2V0IF9zcGFjZVdpZHRoKCl7Y29uc3QgZT1bInNwYWNlIiwibWludXMiLCJvbmUiLCJpIiwiSSJdO2xldCB0O2Zvcihjb25zdCBpIG9mIGUpe2lmKGkgaW4gdGhpcy53aWR0aHMpe3Q9dGhpcy53aWR0aHNbaV07YnJlYWt9Y29uc3QgZT1KaSgpW2ldO2xldCBhPTA7aWYodGhpcy5jb21wb3NpdGUmJnRoaXMuY01hcC5jb250YWlucyhlKSl7YT10aGlzLmNNYXAubG9va3VwKGUpOyJzdHJpbmciPT10eXBlb2YgYSYmKGE9Y29udmVydENpZFN0cmluZyhlLGEpKX0hYSYmdGhpcy50b1VuaWNvZGUmJihhPXRoaXMudG9Vbmljb2RlLmNoYXJDb2RlT2YoZSkpO2E8PTAmJihhPWUpO3Q9dGhpcy53aWR0aHNbYV07aWYodClicmVha31yZXR1cm4gc2hhZG93KHRoaXMsIl9zcGFjZVdpZHRoIix0fHx0aGlzLmRlZmF1bHRXaWR0aCl9X2NoYXJUb0dseXBoKGUsdD0hMSl7bGV0IGksYSxyLHM9dGhpcy5fZ2x5cGhDYWNoZVtlXTtpZihzPy5pc1NwYWNlPT09dClyZXR1cm4gcztsZXQgbj1lO2lmKHRoaXMuY01hcD8uY29udGFpbnMoZSkpe249dGhpcy5jTWFwLmxvb2t1cChlKTsic3RyaW5nIj09dHlwZW9mIG4mJihuPWNvbnZlcnRDaWRTdHJpbmcoZSxuKSl9YT10aGlzLndpZHRoc1tuXTsibnVtYmVyIiE9dHlwZW9mIGEmJihhPXRoaXMuZGVmYXVsdFdpZHRoKTtjb25zdCBvPXRoaXMudm1ldHJpY3M/LltuXTtsZXQgZz10aGlzLnRvVW5pY29kZS5nZXQoZSl8fGU7Im51bWJlciI9PXR5cGVvZiBnJiYoZz1TdHJpbmcuZnJvbUNoYXJDb2RlKGcpKTtsZXQgYz12b2lkIDAhPT10aGlzLnRvRm9udENoYXJbZV07aT10aGlzLnRvRm9udENoYXJbZV18fGU7aWYodGhpcy5taXNzaW5nRmlsZSl7Y29uc3QgdD10aGlzLmRpZmZlcmVuY2VzW2VdfHx0aGlzLmRlZmF1bHRFbmNvZGluZ1tlXTtpZigoIi5ub3RkZWYiPT09dHx8IiI9PT10KSYmIlR5cGUxIj09PXRoaXMudHlwZSl7aT0zMjtpZigiIj09PXQpe2F8fD10aGlzLl9zcGFjZVdpZHRoO2c9U3RyaW5nLmZyb21DaGFyQ29kZShpKX19aT1mdW5jdGlvbiBtYXBTcGVjaWFsVW5pY29kZVZhbHVlcyhlKXtyZXR1cm4gZT49NjU1MjAmJmU8PTY1NTM1PzA6ZT49NjI5NzYmJmU8PTYzNzQzP1lpKClbZV18fGU6MTczPT09ZT80NTplfShpKX10aGlzLmlzVHlwZTNGb250JiYocj1pKTtsZXQgQz1udWxsO2lmKHRoaXMuc2VhY01hcD8uW2VdKXtjPSEwO2NvbnN0IHQ9dGhpcy5zZWFjTWFwW2VdO2k9dC5iYXNlRm9udENoYXJDb2RlO0M9e2ZvbnRDaGFyOlN0cmluZy5mcm9tQ29kZVBvaW50KHQuYWNjZW50Rm9udENoYXJDb2RlKSxvZmZzZXQ6dC5hY2NlbnRPZmZzZXR9fWxldCBoPSIiOyJudW1iZXIiPT10eXBlb2YgaSYmKGk8PTExMTQxMTE/aD1TdHJpbmcuZnJvbUNvZGVQb2ludChpKTp3YXJuKGBjaGFyVG9HbHlwaCAtIGludmFsaWQgZm9udENoYXJDb2RlOiAke2l9YCkpO2lmKHRoaXMubWlzc2luZ0ZpbGUmJnRoaXMudmVydGljYWwmJjE9PT1oLmxlbmd0aCl7Y29uc3QgZT1WaSgpW2guY2hhckNvZGVBdCgwKV07ZSYmKGg9Zz1TdHJpbmcuZnJvbUNoYXJDb2RlKGUpKX1zPW5ldyBmb250c19HbHlwaChlLGgsZyxDLGEsbyxyLHQsYyk7cmV0dXJuIHRoaXMuX2dseXBoQ2FjaGVbZV09c31jaGFyc1RvR2x5cGhzKGUpe2xldCB0PXRoaXMuX2NoYXJzQ2FjaGVbZV07aWYodClyZXR1cm4gdDt0PVtdO2lmKHRoaXMuY01hcCl7Y29uc3QgaT1PYmplY3QuY3JlYXRlKG51bGwpLGE9ZS5sZW5ndGg7bGV0IHI9MDtmb3IoO3I8YTspe3RoaXMuY01hcC5yZWFkQ2hhckNvZGUoZSxyLGkpO2NvbnN0e2NoYXJjb2RlOmEsbGVuZ3RoOnN9PWk7cis9cztjb25zdCBuPXRoaXMuX2NoYXJUb0dseXBoKGEsMT09PXMmJjMyPT09ZS5jaGFyQ29kZUF0KHItMSkpO3QucHVzaChuKX19ZWxzZSBmb3IobGV0IGk9MCxhPWUubGVuZ3RoO2k8YTsrK2kpe2NvbnN0IGE9ZS5jaGFyQ29kZUF0KGkpLHI9dGhpcy5fY2hhclRvR2x5cGgoYSwzMj09PWEpO3QucHVzaChyKX1yZXR1cm4gdGhpcy5fY2hhcnNDYWNoZVtlXT10fWdldENoYXJQb3NpdGlvbnMoZSl7Y29uc3QgdD1bXTtpZih0aGlzLmNNYXApe2NvbnN0IGk9T2JqZWN0LmNyZWF0ZShudWxsKTtsZXQgYT0wO2Zvcig7YTxlLmxlbmd0aDspe3RoaXMuY01hcC5yZWFkQ2hhckNvZGUoZSxhLGkpO2NvbnN0IHI9aS5sZW5ndGg7dC5wdXNoKFthLGErcl0pO2ErPXJ9fWVsc2UgZm9yKGxldCBpPTAsYT1lLmxlbmd0aDtpPGE7KytpKXQucHVzaChbaSxpKzFdKTtyZXR1cm4gdH1nZXQgZ2x5cGhDYWNoZVZhbHVlcygpe3JldHVybiBPYmplY3QudmFsdWVzKHRoaXMuX2dseXBoQ2FjaGUpfWVuY29kZVN0cmluZyhlKXtjb25zdCB0PVtdLGk9W10saGFzQ3VycmVudEJ1ZkVycm9ycz0oKT0+dC5sZW5ndGglMj09MSxhPXRoaXMudG9Vbmljb2RlIGluc3RhbmNlb2YgSWRlbnRpdHlUb1VuaWNvZGVNYXA/ZT0+dGhpcy50b1VuaWNvZGUuY2hhckNvZGVPZihlKTplPT50aGlzLnRvVW5pY29kZS5jaGFyQ29kZU9mKFN0cmluZy5mcm9tQ29kZVBvaW50KGUpKTtmb3IobGV0IHI9MCxzPWUubGVuZ3RoO3I8cztyKyspe2NvbnN0IHM9ZS5jb2RlUG9pbnRBdChyKTtzPjU1Mjk1JiYoczw1NzM0NHx8cz42NTUzMykmJnIrKztpZih0aGlzLnRvVW5pY29kZSl7Y29uc3QgZT1hKHMpO2lmKC0xIT09ZSl7aWYoaGFzQ3VycmVudEJ1ZkVycm9ycygpKXt0LnB1c2goaS5qb2luKCIiKSk7aS5sZW5ndGg9MH1mb3IobGV0IHQ9KHRoaXMuY01hcD90aGlzLmNNYXAuZ2V0Q2hhckNvZGVMZW5ndGgoZSk6MSktMTt0Pj0wO3QtLSlpLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShlPj44KnQmMjU1KSk7Y29udGludWV9fWlmKCFoYXNDdXJyZW50QnVmRXJyb3JzKCkpe3QucHVzaChpLmpvaW4oIiIpKTtpLmxlbmd0aD0wfWkucHVzaChTdHJpbmcuZnJvbUNvZGVQb2ludChzKSl9dC5wdXNoKGkuam9pbigiIikpO3JldHVybiB0fX1jbGFzcyBFcnJvckZvbnR7Y29uc3RydWN0b3IoZSl7dGhpcy5lcnJvcj1lO3RoaXMubG9hZGVkTmFtZT0iZ19mb250X2Vycm9yIjt0aGlzLm1pc3NpbmdGaWxlPSEwfWNoYXJzVG9HbHlwaHMoKXtyZXR1cm5bXX1lbmNvZGVTdHJpbmcoZSl7cmV0dXJuW2VdfWV4cG9ydERhdGEoZT0hMSl7cmV0dXJue2Vycm9yOnRoaXMuZXJyb3J9fX1jb25zdCB5YT0yLHdhPTMsYmE9NCxEYT01LEZhPTYsU2E9NztjbGFzcyBQYXR0ZXJue2NvbnN0cnVjdG9yKCl7dW5yZWFjaGFibGUoIkNhbm5vdCBpbml0aWFsaXplIFBhdHRlcm4uIil9c3RhdGljIHBhcnNlU2hhZGluZyhlLHQsaSxhLHIpe2NvbnN0IHM9ZSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0/ZS5kaWN0OmUsbj1zLmdldCgiU2hhZGluZ1R5cGUiKTt0cnl7c3dpdGNoKG4pe2Nhc2UgeWE6Y2FzZSB3YTpyZXR1cm4gbmV3IFJhZGlhbEF4aWFsU2hhZGluZyhzLHQsaSxhLHIpO2Nhc2UgYmE6Y2FzZSBEYTpjYXNlIEZhOmNhc2UgU2E6cmV0dXJuIG5ldyBNZXNoU2hhZGluZyhlLHQsaSxhLHIpO2RlZmF1bHQ6dGhyb3cgbmV3IEZvcm1hdEVycm9yKCJVbnN1cHBvcnRlZCBTaGFkaW5nVHlwZTogIituKX19Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7d2FybihlKTtyZXR1cm4gbmV3IER1bW15U2hhZGluZ319fWNsYXNzIEJhc2VTaGFkaW5ne3N0YXRpYyBTTUFMTF9OVU1CRVI9MWUtNjtnZXRJUigpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYGdldElSYCBjYWxsZWQuIil9fWNsYXNzIFJhZGlhbEF4aWFsU2hhZGluZyBleHRlbmRzIEJhc2VTaGFkaW5ne2NvbnN0cnVjdG9yKGUsdCxpLGEscil7c3VwZXIoKTt0aGlzLnNoYWRpbmdUeXBlPWUuZ2V0KCJTaGFkaW5nVHlwZSIpO2xldCBzPTA7dGhpcy5zaGFkaW5nVHlwZT09PXlhP3M9NDp0aGlzLnNoYWRpbmdUeXBlPT09d2EmJihzPTYpO3RoaXMuY29vcmRzQXJyPWUuZ2V0QXJyYXkoIkNvb3JkcyIpO2lmKCFpc051bWJlckFycmF5KHRoaXMuY29vcmRzQXJyLHMpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiUmFkaWFsQXhpYWxTaGFkaW5nOiBJbnZhbGlkIC9Db29yZHMgYXJyYXkuIik7Y29uc3Qgbj1Db2xvclNwYWNlLnBhcnNlKHtjczplLmdldFJhdygiQ1MiKXx8ZS5nZXRSYXcoIkNvbG9yU3BhY2UiKSx4cmVmOnQscmVzb3VyY2VzOmkscGRmRnVuY3Rpb25GYWN0b3J5OmEsbG9jYWxDb2xvclNwYWNlQ2FjaGU6cn0pO3RoaXMuYmJveD1sb29rdXBOb3JtYWxSZWN0KGUuZ2V0QXJyYXkoIkJCb3giKSxudWxsKTtsZXQgbz0wLGc9MTtjb25zdCBjPWUuZ2V0QXJyYXkoIkRvbWFpbiIpO2lzTnVtYmVyQXJyYXkoYywyKSYmKFtvLGddPWMpO2xldCBDPSExLGg9ITE7Y29uc3QgbD1lLmdldEFycmF5KCJFeHRlbmQiKTsoZnVuY3Rpb24gaXNCb29sZWFuQXJyYXkoZSx0KXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKSYmKG51bGw9PT10fHxlLmxlbmd0aD09PXQpJiZlLmV2ZXJ5KChlPT4iYm9vbGVhbiI9PXR5cGVvZiBlKSl9KShsLDIpJiYoW0MsaF09bCk7aWYoISh0aGlzLnNoYWRpbmdUeXBlIT09d2F8fEMmJmgpKXtjb25zdFtlLHQsaSxhLHIsc109dGhpcy5jb29yZHNBcnIsbj1NYXRoLmh5cG90KGUtYSx0LXIpO2k8PXMrbiYmczw9aStuJiZ3YXJuKCJVbnN1cHBvcnRlZCByYWRpYWwgZ3JhZGllbnQuIil9dGhpcy5leHRlbmRTdGFydD1DO3RoaXMuZXh0ZW5kRW5kPWg7Y29uc3QgUT1lLmdldFJhdygiRnVuY3Rpb24iKSxFPWEuY3JlYXRlRnJvbUFycmF5KFEpLHU9KGctbykvODQwLGQ9dGhpcy5jb2xvclN0b3BzPVtdO2lmKG8+PWd8fHU8PTApe2luZm8oIkJhZCBzaGFkaW5nIGRvbWFpbi4iKTtyZXR1cm59Y29uc3QgZj1uZXcgRmxvYXQzMkFycmF5KG4ubnVtQ29tcHMpLHA9bmV3IEZsb2F0MzJBcnJheSgxKTtsZXQgbSx5PTA7cFswXT1vO0UocCwwLGYsMCk7bGV0IHc9bi5nZXRSZ2IoZiwwKTtjb25zdCBiPVV0aWwubWFrZUhleENvbG9yKHdbMF0sd1sxXSx3WzJdKTtkLnB1c2goWzAsYl0pO2xldCBEPTE7cFswXT1vK3U7RShwLDAsZiwwKTtsZXQgUz1uLmdldFJnYihmLDApLGs9U1swXS13WzBdKzEsUj1TWzFdLXdbMV0rMSxOPVNbMl0td1syXSsxLEc9U1swXS13WzBdLTEseD1TWzFdLXdbMV0tMSxVPVNbMl0td1syXS0xO2ZvcihsZXQgZT0yO2U8ODQwO2UrKyl7cFswXT1vK2UqdTtFKHAsMCxmLDApO209bi5nZXRSZ2IoZiwwKTtjb25zdCB0PWUteTtrPU1hdGgubWluKGssKG1bMF0td1swXSsxKS90KTtSPU1hdGgubWluKFIsKG1bMV0td1sxXSsxKS90KTtOPU1hdGgubWluKE4sKG1bMl0td1syXSsxKS90KTtHPU1hdGgubWF4KEcsKG1bMF0td1swXS0xKS90KTt4PU1hdGgubWF4KHgsKG1bMV0td1sxXS0xKS90KTtVPU1hdGgubWF4KFUsKG1bMl0td1syXS0xKS90KTtpZighKEc8PWsmJng8PVImJlU8PU4pKXtjb25zdCBlPVV0aWwubWFrZUhleENvbG9yKFNbMF0sU1sxXSxTWzJdKTtkLnB1c2goW0QvODQwLGVdKTtrPW1bMF0tU1swXSsxO1I9bVsxXS1TWzFdKzE7Tj1tWzJdLVNbMl0rMTtHPW1bMF0tU1swXS0xO3g9bVsxXS1TWzFdLTE7VT1tWzJdLVNbMl0tMTt5PUQ7dz1TfUQ9ZTtTPW19Y29uc3QgTT1VdGlsLm1ha2VIZXhDb2xvcihTWzBdLFNbMV0sU1syXSk7ZC5wdXNoKFsxLE1dKTtsZXQgTD0idHJhbnNwYXJlbnQiO2lmKGUuaGFzKCJCYWNrZ3JvdW5kIikpe209bi5nZXRSZ2IoZS5nZXQoIkJhY2tncm91bmQiKSwwKTtMPVV0aWwubWFrZUhleENvbG9yKG1bMF0sbVsxXSxtWzJdKX1pZighQyl7ZC51bnNoaWZ0KFswLExdKTtkWzFdWzBdKz1CYXNlU2hhZGluZy5TTUFMTF9OVU1CRVJ9aWYoIWgpe2QuYXQoLTEpWzBdLT1CYXNlU2hhZGluZy5TTUFMTF9OVU1CRVI7ZC5wdXNoKFsxLExdKX10aGlzLmNvbG9yU3RvcHM9ZH1nZXRJUigpe2NvbnN0e2Nvb3Jkc0FycjplLHNoYWRpbmdUeXBlOnR9PXRoaXM7bGV0IGksYSxyLHMsbjtpZih0PT09eWEpe2E9W2VbMF0sZVsxXV07cj1bZVsyXSxlWzNdXTtzPW51bGw7bj1udWxsO2k9ImF4aWFsIn1lbHNlIGlmKHQ9PT13YSl7YT1bZVswXSxlWzFdXTtyPVtlWzNdLGVbNF1dO3M9ZVsyXTtuPWVbNV07aT0icmFkaWFsIn1lbHNlIHVucmVhY2hhYmxlKGBnZXRQYXR0ZXJuIHR5cGUgdW5rbm93bjogJHt0fWApO3JldHVyblsiUmFkaWFsQXhpYWwiLGksdGhpcy5iYm94LHRoaXMuY29sb3JTdG9wcyxhLHIscyxuXX19Y2xhc3MgTWVzaFN0cmVhbVJlYWRlcntjb25zdHJ1Y3RvcihlLHQpe3RoaXMuc3RyZWFtPWU7dGhpcy5jb250ZXh0PXQ7dGhpcy5idWZmZXI9MDt0aGlzLmJ1ZmZlckxlbmd0aD0wO2NvbnN0IGk9dC5udW1Db21wczt0aGlzLnRtcENvbXBzQnVmPW5ldyBGbG9hdDMyQXJyYXkoaSk7Y29uc3QgYT10LmNvbG9yU3BhY2UubnVtQ29tcHM7dGhpcy50bXBDc0NvbXBzQnVmPXQuY29sb3JGbj9uZXcgRmxvYXQzMkFycmF5KGEpOnRoaXMudG1wQ29tcHNCdWZ9Z2V0IGhhc0RhdGEoKXtpZih0aGlzLnN0cmVhbS5lbmQpcmV0dXJuIHRoaXMuc3RyZWFtLnBvczx0aGlzLnN0cmVhbS5lbmQ7aWYodGhpcy5idWZmZXJMZW5ndGg+MClyZXR1cm4hMDtjb25zdCBlPXRoaXMuc3RyZWFtLmdldEJ5dGUoKTtpZihlPDApcmV0dXJuITE7dGhpcy5idWZmZXI9ZTt0aGlzLmJ1ZmZlckxlbmd0aD04O3JldHVybiEwfXJlYWRCaXRzKGUpe2xldCB0PXRoaXMuYnVmZmVyLGk9dGhpcy5idWZmZXJMZW5ndGg7aWYoMzI9PT1lKXtpZigwPT09aSlyZXR1cm4odGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpPDwyNHx0aGlzLnN0cmVhbS5nZXRCeXRlKCk8PDE2fHRoaXMuc3RyZWFtLmdldEJ5dGUoKTw8OHx0aGlzLnN0cmVhbS5nZXRCeXRlKCkpPj4+MDt0PXQ8PDI0fHRoaXMuc3RyZWFtLmdldEJ5dGUoKTw8MTZ8dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpPDw4fHRoaXMuc3RyZWFtLmdldEJ5dGUoKTtjb25zdCBlPXRoaXMuc3RyZWFtLmdldEJ5dGUoKTt0aGlzLmJ1ZmZlcj1lJigxPDxpKS0xO3JldHVybih0PDw4LWl8KDI1NSZlKT4+aSk+Pj4wfWlmKDg9PT1lJiYwPT09aSlyZXR1cm4gdGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpO2Zvcig7aTxlOyl7dD10PDw4fHRoaXMuc3RyZWFtLmdldEJ5dGUoKTtpKz04fWktPWU7dGhpcy5idWZmZXJMZW5ndGg9aTt0aGlzLmJ1ZmZlcj10JigxPDxpKS0xO3JldHVybiB0Pj5pfWFsaWduKCl7dGhpcy5idWZmZXI9MDt0aGlzLmJ1ZmZlckxlbmd0aD0wfXJlYWRGbGFnKCl7cmV0dXJuIHRoaXMucmVhZEJpdHModGhpcy5jb250ZXh0LmJpdHNQZXJGbGFnKX1yZWFkQ29vcmRpbmF0ZSgpe2NvbnN0IGU9dGhpcy5jb250ZXh0LmJpdHNQZXJDb29yZGluYXRlLHQ9dGhpcy5yZWFkQml0cyhlKSxpPXRoaXMucmVhZEJpdHMoZSksYT10aGlzLmNvbnRleHQuZGVjb2RlLHI9ZTwzMj8xLygoMTw8ZSktMSk6Mi4zMjgzMDY0MzY1Mzg2OTYzZS0xMDtyZXR1cm5bdCpyKihhWzFdLWFbMF0pK2FbMF0saSpyKihhWzNdLWFbMl0pK2FbMl1dfXJlYWRDb21wb25lbnRzKCl7Y29uc3QgZT10aGlzLmNvbnRleHQubnVtQ29tcHMsdD10aGlzLmNvbnRleHQuYml0c1BlckNvbXBvbmVudCxpPXQ8MzI/MS8oKDE8PHQpLTEpOjIuMzI4MzA2NDM2NTM4Njk2M2UtMTAsYT10aGlzLmNvbnRleHQuZGVjb2RlLHI9dGhpcy50bXBDb21wc0J1Zjtmb3IobGV0IHM9MCxuPTQ7czxlO3MrKyxuKz0yKXtjb25zdCBlPXRoaXMucmVhZEJpdHModCk7cltzXT1lKmkqKGFbbisxXS1hW25dKSthW25dfWNvbnN0IHM9dGhpcy50bXBDc0NvbXBzQnVmO3RoaXMuY29udGV4dC5jb2xvckZuJiZ0aGlzLmNvbnRleHQuY29sb3JGbihyLDAscywwKTtyZXR1cm4gdGhpcy5jb250ZXh0LmNvbG9yU3BhY2UuZ2V0UmdiKHMsMCl9fWxldCBrYT1PYmplY3QuY3JlYXRlKG51bGwpO2Z1bmN0aW9uIGdldEIoZSl7cmV0dXJuIGthW2VdfHw9ZnVuY3Rpb24gYnVpbGRCKGUpe2NvbnN0IHQ9W107Zm9yKGxldCBpPTA7aTw9ZTtpKyspe2NvbnN0IGE9aS9lLHI9MS1hO3QucHVzaChuZXcgRmxvYXQzMkFycmF5KFtyKiozLDMqYSpyKioyLDMqYSoqMipyLGEqKjNdKSl9cmV0dXJuIHR9KGUpfWNsYXNzIE1lc2hTaGFkaW5nIGV4dGVuZHMgQmFzZVNoYWRpbmd7c3RhdGljIE1JTl9TUExJVF9QQVRDSF9DSFVOS1NfQU1PVU5UPTM7c3RhdGljIE1BWF9TUExJVF9QQVRDSF9DSFVOS1NfQU1PVU5UPTIwO3N0YXRpYyBUUklBTkdMRV9ERU5TSVRZPTIwO2NvbnN0cnVjdG9yKGUsdCxpLGEscil7c3VwZXIoKTtpZighKGUgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIk1lc2ggZGF0YSBpcyBub3QgYSBzdHJlYW0iKTtjb25zdCBzPWUuZGljdDt0aGlzLnNoYWRpbmdUeXBlPXMuZ2V0KCJTaGFkaW5nVHlwZSIpO3RoaXMuYmJveD1sb29rdXBOb3JtYWxSZWN0KHMuZ2V0QXJyYXkoIkJCb3giKSxudWxsKTtjb25zdCBuPUNvbG9yU3BhY2UucGFyc2Uoe2NzOnMuZ2V0UmF3KCJDUyIpfHxzLmdldFJhdygiQ29sb3JTcGFjZSIpLHhyZWY6dCxyZXNvdXJjZXM6aSxwZGZGdW5jdGlvbkZhY3Rvcnk6YSxsb2NhbENvbG9yU3BhY2VDYWNoZTpyfSk7dGhpcy5iYWNrZ3JvdW5kPXMuaGFzKCJCYWNrZ3JvdW5kIik/bi5nZXRSZ2Iocy5nZXQoIkJhY2tncm91bmQiKSwwKTpudWxsO2NvbnN0IG89cy5nZXRSYXcoIkZ1bmN0aW9uIiksZz1vP2EuY3JlYXRlRnJvbUFycmF5KG8pOm51bGw7dGhpcy5jb29yZHM9W107dGhpcy5jb2xvcnM9W107dGhpcy5maWd1cmVzPVtdO2NvbnN0IGM9e2JpdHNQZXJDb29yZGluYXRlOnMuZ2V0KCJCaXRzUGVyQ29vcmRpbmF0ZSIpLGJpdHNQZXJDb21wb25lbnQ6cy5nZXQoIkJpdHNQZXJDb21wb25lbnQiKSxiaXRzUGVyRmxhZzpzLmdldCgiQml0c1BlckZsYWciKSxkZWNvZGU6cy5nZXRBcnJheSgiRGVjb2RlIiksY29sb3JGbjpnLGNvbG9yU3BhY2U6bixudW1Db21wczpnPzE6bi5udW1Db21wc30sQz1uZXcgTWVzaFN0cmVhbVJlYWRlcihlLGMpO2xldCBoPSExO3N3aXRjaCh0aGlzLnNoYWRpbmdUeXBlKXtjYXNlIGJhOnRoaXMuX2RlY29kZVR5cGU0U2hhZGluZyhDKTticmVhaztjYXNlIERhOmNvbnN0IGU9MHxzLmdldCgiVmVydGljZXNQZXJSb3ciKTtpZihlPDIpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIFZlcnRpY2VzUGVyUm93Iik7dGhpcy5fZGVjb2RlVHlwZTVTaGFkaW5nKEMsZSk7YnJlYWs7Y2FzZSBGYTp0aGlzLl9kZWNvZGVUeXBlNlNoYWRpbmcoQyk7aD0hMDticmVhaztjYXNlIFNhOnRoaXMuX2RlY29kZVR5cGU3U2hhZGluZyhDKTtoPSEwO2JyZWFrO2RlZmF1bHQ6dW5yZWFjaGFibGUoIlVuc3VwcG9ydGVkIG1lc2ggdHlwZS4iKX1pZihoKXt0aGlzLl91cGRhdGVCb3VuZHMoKTtmb3IobGV0IGU9MCx0PXRoaXMuZmlndXJlcy5sZW5ndGg7ZTx0O2UrKyl0aGlzLl9idWlsZEZpZ3VyZUZyb21QYXRjaChlKX10aGlzLl91cGRhdGVCb3VuZHMoKTt0aGlzLl9wYWNrRGF0YSgpfV9kZWNvZGVUeXBlNFNoYWRpbmcoZSl7Y29uc3QgdD10aGlzLmNvb3JkcyxpPXRoaXMuY29sb3JzLGE9W10scj1bXTtsZXQgcz0wO2Zvcig7ZS5oYXNEYXRhOyl7Y29uc3Qgbj1lLnJlYWRGbGFnKCksbz1lLnJlYWRDb29yZGluYXRlKCksZz1lLnJlYWRDb21wb25lbnRzKCk7aWYoMD09PXMpe2lmKCEoMDw9biYmbjw9MikpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJVbmtub3duIHR5cGU0IGZsYWciKTtzd2l0Y2gobil7Y2FzZSAwOnM9MzticmVhaztjYXNlIDE6ci5wdXNoKHIuYXQoLTIpLHIuYXQoLTEpKTtzPTE7YnJlYWs7Y2FzZSAyOnIucHVzaChyLmF0KC0zKSxyLmF0KC0xKSk7cz0xfWEucHVzaChuKX1yLnB1c2godC5sZW5ndGgpO3QucHVzaChvKTtpLnB1c2goZyk7cy0tO2UuYWxpZ24oKX10aGlzLmZpZ3VyZXMucHVzaCh7dHlwZToidHJpYW5nbGVzIixjb29yZHM6bmV3IEludDMyQXJyYXkociksY29sb3JzOm5ldyBJbnQzMkFycmF5KHIpfSl9X2RlY29kZVR5cGU1U2hhZGluZyhlLHQpe2NvbnN0IGk9dGhpcy5jb29yZHMsYT10aGlzLmNvbG9ycyxyPVtdO2Zvcig7ZS5oYXNEYXRhOyl7Y29uc3QgdD1lLnJlYWRDb29yZGluYXRlKCkscz1lLnJlYWRDb21wb25lbnRzKCk7ci5wdXNoKGkubGVuZ3RoKTtpLnB1c2godCk7YS5wdXNoKHMpfXRoaXMuZmlndXJlcy5wdXNoKHt0eXBlOiJsYXR0aWNlIixjb29yZHM6bmV3IEludDMyQXJyYXkociksY29sb3JzOm5ldyBJbnQzMkFycmF5KHIpLHZlcnRpY2VzUGVyUm93OnR9KX1fZGVjb2RlVHlwZTZTaGFkaW5nKGUpe2NvbnN0IHQ9dGhpcy5jb29yZHMsaT10aGlzLmNvbG9ycyxhPW5ldyBJbnQzMkFycmF5KDE2KSxyPW5ldyBJbnQzMkFycmF5KDQpO2Zvcig7ZS5oYXNEYXRhOyl7Y29uc3Qgcz1lLnJlYWRGbGFnKCk7aWYoISgwPD1zJiZzPD0zKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlVua25vd24gdHlwZTYgZmxhZyIpO2NvbnN0IG49dC5sZW5ndGg7Zm9yKGxldCBpPTAsYT0wIT09cz84OjEyO2k8YTtpKyspdC5wdXNoKGUucmVhZENvb3JkaW5hdGUoKSk7Y29uc3Qgbz1pLmxlbmd0aDtmb3IobGV0IHQ9MCxhPTAhPT1zPzI6NDt0PGE7dCsrKWkucHVzaChlLnJlYWRDb21wb25lbnRzKCkpO2xldCBnLGMsQyxoO3N3aXRjaChzKXtjYXNlIDA6YVsxMl09biszO2FbMTNdPW4rNDthWzE0XT1uKzU7YVsxNV09bis2O2FbOF09bisyO2FbMTFdPW4rNzthWzRdPW4rMTthWzddPW4rODthWzBdPW47YVsxXT1uKzExO2FbMl09bisxMDthWzNdPW4rOTtyWzJdPW8rMTtyWzNdPW8rMjtyWzBdPW87clsxXT1vKzM7YnJlYWs7Y2FzZSAxOmc9YVsxMl07Yz1hWzEzXTtDPWFbMTRdO2g9YVsxNV07YVsxMl09aDthWzEzXT1uKzA7YVsxNF09bisxO2FbMTVdPW4rMjthWzhdPUM7YVsxMV09biszO2FbNF09YzthWzddPW4rNDthWzBdPWc7YVsxXT1uKzc7YVsyXT1uKzY7YVszXT1uKzU7Zz1yWzJdO2M9clszXTtyWzJdPWM7clszXT1vO3JbMF09ZztyWzFdPW8rMTticmVhaztjYXNlIDI6Zz1hWzE1XTtjPWFbMTFdO2FbMTJdPWFbM107YVsxM109biswO2FbMTRdPW4rMTthWzE1XT1uKzI7YVs4XT1hWzddO2FbMTFdPW4rMzthWzRdPWM7YVs3XT1uKzQ7YVswXT1nO2FbMV09bis3O2FbMl09bis2O2FbM109bis1O2c9clszXTtyWzJdPXJbMV07clszXT1vO3JbMF09ZztyWzFdPW8rMTticmVhaztjYXNlIDM6YVsxMl09YVswXTthWzEzXT1uKzA7YVsxNF09bisxO2FbMTVdPW4rMjthWzhdPWFbMV07YVsxMV09biszO2FbNF09YVsyXTthWzddPW4rNDthWzBdPWFbM107YVsxXT1uKzc7YVsyXT1uKzY7YVszXT1uKzU7clsyXT1yWzBdO3JbM109bztyWzBdPXJbMV07clsxXT1vKzF9YVs1XT10Lmxlbmd0aDt0LnB1c2goWygtNCp0W2FbMF1dWzBdLXRbYVsxNV1dWzBdKzYqKHRbYVs0XV1bMF0rdFthWzFdXVswXSktMioodFthWzEyXV1bMF0rdFthWzNdXVswXSkrMyoodFthWzEzXV1bMF0rdFthWzddXVswXSkpLzksKC00KnRbYVswXV1bMV0tdFthWzE1XV1bMV0rNioodFthWzRdXVsxXSt0W2FbMV1dWzFdKS0yKih0W2FbMTJdXVsxXSt0W2FbM11dWzFdKSszKih0W2FbMTNdXVsxXSt0W2FbN11dWzFdKSkvOV0pO2FbNl09dC5sZW5ndGg7dC5wdXNoKFsoLTQqdFthWzNdXVswXS10W2FbMTJdXVswXSs2Kih0W2FbMl1dWzBdK3RbYVs3XV1bMF0pLTIqKHRbYVswXV1bMF0rdFthWzE1XV1bMF0pKzMqKHRbYVs0XV1bMF0rdFthWzE0XV1bMF0pKS85LCgtNCp0W2FbM11dWzFdLXRbYVsxMl1dWzFdKzYqKHRbYVsyXV1bMV0rdFthWzddXVsxXSktMioodFthWzBdXVsxXSt0W2FbMTVdXVsxXSkrMyoodFthWzRdXVsxXSt0W2FbMTRdXVsxXSkpLzldKTthWzldPXQubGVuZ3RoO3QucHVzaChbKC00KnRbYVsxMl1dWzBdLXRbYVszXV1bMF0rNioodFthWzhdXVswXSt0W2FbMTNdXVswXSktMioodFthWzBdXVswXSt0W2FbMTVdXVswXSkrMyoodFthWzExXV1bMF0rdFthWzFdXVswXSkpLzksKC00KnRbYVsxMl1dWzFdLXRbYVszXV1bMV0rNioodFthWzhdXVsxXSt0W2FbMTNdXVsxXSktMioodFthWzBdXVsxXSt0W2FbMTVdXVsxXSkrMyoodFthWzExXV1bMV0rdFthWzFdXVsxXSkpLzldKTthWzEwXT10Lmxlbmd0aDt0LnB1c2goWygtNCp0W2FbMTVdXVswXS10W2FbMF1dWzBdKzYqKHRbYVsxMV1dWzBdK3RbYVsxNF1dWzBdKS0yKih0W2FbMTJdXVswXSt0W2FbM11dWzBdKSszKih0W2FbMl1dWzBdK3RbYVs4XV1bMF0pKS85LCgtNCp0W2FbMTVdXVsxXS10W2FbMF1dWzFdKzYqKHRbYVsxMV1dWzFdK3RbYVsxNF1dWzFdKS0yKih0W2FbMTJdXVsxXSt0W2FbM11dWzFdKSszKih0W2FbMl1dWzFdK3RbYVs4XV1bMV0pKS85XSk7dGhpcy5maWd1cmVzLnB1c2goe3R5cGU6InBhdGNoIixjb29yZHM6bmV3IEludDMyQXJyYXkoYSksY29sb3JzOm5ldyBJbnQzMkFycmF5KHIpfSl9fV9kZWNvZGVUeXBlN1NoYWRpbmcoZSl7Y29uc3QgdD10aGlzLmNvb3JkcyxpPXRoaXMuY29sb3JzLGE9bmV3IEludDMyQXJyYXkoMTYpLHI9bmV3IEludDMyQXJyYXkoNCk7Zm9yKDtlLmhhc0RhdGE7KXtjb25zdCBzPWUucmVhZEZsYWcoKTtpZighKDA8PXMmJnM8PTMpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiVW5rbm93biB0eXBlNyBmbGFnIik7Y29uc3Qgbj10Lmxlbmd0aDtmb3IobGV0IGk9MCxhPTAhPT1zPzEyOjE2O2k8YTtpKyspdC5wdXNoKGUucmVhZENvb3JkaW5hdGUoKSk7Y29uc3Qgbz1pLmxlbmd0aDtmb3IobGV0IHQ9MCxhPTAhPT1zPzI6NDt0PGE7dCsrKWkucHVzaChlLnJlYWRDb21wb25lbnRzKCkpO2xldCBnLGMsQyxoO3N3aXRjaChzKXtjYXNlIDA6YVsxMl09biszO2FbMTNdPW4rNDthWzE0XT1uKzU7YVsxNV09bis2O2FbOF09bisyO2FbOV09bisxMzthWzEwXT1uKzE0O2FbMTFdPW4rNzthWzRdPW4rMTthWzVdPW4rMTI7YVs2XT1uKzE1O2FbN109bis4O2FbMF09bjthWzFdPW4rMTE7YVsyXT1uKzEwO2FbM109bis5O3JbMl09bysxO3JbM109bysyO3JbMF09bztyWzFdPW8rMzticmVhaztjYXNlIDE6Zz1hWzEyXTtjPWFbMTNdO0M9YVsxNF07aD1hWzE1XTthWzEyXT1oO2FbMTNdPW4rMDthWzE0XT1uKzE7YVsxNV09bisyO2FbOF09QzthWzldPW4rOTthWzEwXT1uKzEwO2FbMTFdPW4rMzthWzRdPWM7YVs1XT1uKzg7YVs2XT1uKzExO2FbN109bis0O2FbMF09ZzthWzFdPW4rNzthWzJdPW4rNjthWzNdPW4rNTtnPXJbMl07Yz1yWzNdO3JbMl09YztyWzNdPW87clswXT1nO3JbMV09bysxO2JyZWFrO2Nhc2UgMjpnPWFbMTVdO2M9YVsxMV07YVsxMl09YVszXTthWzEzXT1uKzA7YVsxNF09bisxO2FbMTVdPW4rMjthWzhdPWFbN107YVs5XT1uKzk7YVsxMF09bisxMDthWzExXT1uKzM7YVs0XT1jO2FbNV09bis4O2FbNl09bisxMTthWzddPW4rNDthWzBdPWc7YVsxXT1uKzc7YVsyXT1uKzY7YVszXT1uKzU7Zz1yWzNdO3JbMl09clsxXTtyWzNdPW87clswXT1nO3JbMV09bysxO2JyZWFrO2Nhc2UgMzphWzEyXT1hWzBdO2FbMTNdPW4rMDthWzE0XT1uKzE7YVsxNV09bisyO2FbOF09YVsxXTthWzldPW4rOTthWzEwXT1uKzEwO2FbMTFdPW4rMzthWzRdPWFbMl07YVs1XT1uKzg7YVs2XT1uKzExO2FbN109bis0O2FbMF09YVszXTthWzFdPW4rNzthWzJdPW4rNjthWzNdPW4rNTtyWzJdPXJbMF07clszXT1vO3JbMF09clsxXTtyWzFdPW8rMX10aGlzLmZpZ3VyZXMucHVzaCh7dHlwZToicGF0Y2giLGNvb3JkczpuZXcgSW50MzJBcnJheShhKSxjb2xvcnM6bmV3IEludDMyQXJyYXkocil9KX19X2J1aWxkRmlndXJlRnJvbVBhdGNoKGUpe2NvbnN0IHQ9dGhpcy5maWd1cmVzW2VdO2Fzc2VydCgicGF0Y2giPT09dC50eXBlLCJVbmV4cGVjdGVkIHBhdGNoIG1lc2ggZmlndXJlIik7Y29uc3QgaT10aGlzLmNvb3JkcyxhPXRoaXMuY29sb3JzLHI9dC5jb29yZHMscz10LmNvbG9ycyxuPU1hdGgubWluKGlbclswXV1bMF0saVtyWzNdXVswXSxpW3JbMTJdXVswXSxpW3JbMTVdXVswXSksbz1NYXRoLm1pbihpW3JbMF1dWzFdLGlbclszXV1bMV0saVtyWzEyXV1bMV0saVtyWzE1XV1bMV0pLGc9TWF0aC5tYXgoaVtyWzBdXVswXSxpW3JbM11dWzBdLGlbclsxMl1dWzBdLGlbclsxNV1dWzBdKSxjPU1hdGgubWF4KGlbclswXV1bMV0saVtyWzNdXVsxXSxpW3JbMTJdXVsxXSxpW3JbMTVdXVsxXSk7bGV0IEM9TWF0aC5jZWlsKChnLW4pKk1lc2hTaGFkaW5nLlRSSUFOR0xFX0RFTlNJVFkvKHRoaXMuYm91bmRzWzJdLXRoaXMuYm91bmRzWzBdKSk7Qz1NYXRoLm1heChNZXNoU2hhZGluZy5NSU5fU1BMSVRfUEFUQ0hfQ0hVTktTX0FNT1VOVCxNYXRoLm1pbihNZXNoU2hhZGluZy5NQVhfU1BMSVRfUEFUQ0hfQ0hVTktTX0FNT1VOVCxDKSk7bGV0IGg9TWF0aC5jZWlsKChjLW8pKk1lc2hTaGFkaW5nLlRSSUFOR0xFX0RFTlNJVFkvKHRoaXMuYm91bmRzWzNdLXRoaXMuYm91bmRzWzFdKSk7aD1NYXRoLm1heChNZXNoU2hhZGluZy5NSU5fU1BMSVRfUEFUQ0hfQ0hVTktTX0FNT1VOVCxNYXRoLm1pbihNZXNoU2hhZGluZy5NQVhfU1BMSVRfUEFUQ0hfQ0hVTktTX0FNT1VOVCxoKSk7Y29uc3QgbD1DKzEsUT1uZXcgSW50MzJBcnJheSgoaCsxKSpsKSxFPW5ldyBJbnQzMkFycmF5KChoKzEpKmwpO2xldCB1PTA7Y29uc3QgZD1uZXcgVWludDhBcnJheSgzKSxmPW5ldyBVaW50OEFycmF5KDMpLHA9YVtzWzBdXSxtPWFbc1sxXV0seT1hW3NbMl1dLHc9YVtzWzNdXSxiPWdldEIoaCksRD1nZXRCKEMpO2ZvcihsZXQgZT0wO2U8PWg7ZSsrKXtkWzBdPShwWzBdKihoLWUpK3lbMF0qZSkvaHwwO2RbMV09KHBbMV0qKGgtZSkreVsxXSplKS9ofDA7ZFsyXT0ocFsyXSooaC1lKSt5WzJdKmUpL2h8MDtmWzBdPShtWzBdKihoLWUpK3dbMF0qZSkvaHwwO2ZbMV09KG1bMV0qKGgtZSkrd1sxXSplKS9ofDA7ZlsyXT0obVsyXSooaC1lKSt3WzJdKmUpL2h8MDtmb3IobGV0IHQ9MDt0PD1DO3QrKyx1Kyspe2lmKCEoMCE9PWUmJmUhPT1ofHwwIT09dCYmdCE9PUMpKWNvbnRpbnVlO2xldCBzPTAsbj0wLG89MDtmb3IobGV0IGE9MDthPD0zO2ErKylmb3IobGV0IGc9MDtnPD0zO2crKyxvKyspe2NvbnN0IGM9YltlXVthXSpEW3RdW2ddO3MrPWlbcltvXV1bMF0qYztuKz1pW3Jbb11dWzFdKmN9UVt1XT1pLmxlbmd0aDtpLnB1c2goW3Msbl0pO0VbdV09YS5sZW5ndGg7Y29uc3QgZz1uZXcgVWludDhBcnJheSgzKTtnWzBdPShkWzBdKihDLXQpK2ZbMF0qdCkvQ3wwO2dbMV09KGRbMV0qKEMtdCkrZlsxXSp0KS9DfDA7Z1syXT0oZFsyXSooQy10KStmWzJdKnQpL0N8MDthLnB1c2goZyl9fVFbMF09clswXTtFWzBdPXNbMF07UVtDXT1yWzNdO0VbQ109c1sxXTtRW2wqaF09clsxMl07RVtsKmhdPXNbMl07UVtsKmgrQ109clsxNV07RVtsKmgrQ109c1szXTt0aGlzLmZpZ3VyZXNbZV09e3R5cGU6ImxhdHRpY2UiLGNvb3JkczpRLGNvbG9yczpFLHZlcnRpY2VzUGVyUm93Omx9fV91cGRhdGVCb3VuZHMoKXtsZXQgZT10aGlzLmNvb3Jkc1swXVswXSx0PXRoaXMuY29vcmRzWzBdWzFdLGk9ZSxhPXQ7Zm9yKGxldCByPTEscz10aGlzLmNvb3Jkcy5sZW5ndGg7cjxzO3IrKyl7Y29uc3Qgcz10aGlzLmNvb3Jkc1tyXVswXSxuPXRoaXMuY29vcmRzW3JdWzFdO2U9ZT5zP3M6ZTt0PXQ+bj9uOnQ7aT1pPHM/czppO2E9YTxuP246YX10aGlzLmJvdW5kcz1bZSx0LGksYV19X3BhY2tEYXRhKCl7bGV0IGUsdCxpLGE7Y29uc3Qgcj10aGlzLmNvb3JkcyxzPW5ldyBGbG9hdDMyQXJyYXkoMipyLmxlbmd0aCk7Zm9yKGU9MCxpPTAsdD1yLmxlbmd0aDtlPHQ7ZSsrKXtjb25zdCB0PXJbZV07c1tpKytdPXRbMF07c1tpKytdPXRbMV19dGhpcy5jb29yZHM9cztjb25zdCBuPXRoaXMuY29sb3JzLG89bmV3IFVpbnQ4QXJyYXkoMypuLmxlbmd0aCk7Zm9yKGU9MCxpPTAsdD1uLmxlbmd0aDtlPHQ7ZSsrKXtjb25zdCB0PW5bZV07b1tpKytdPXRbMF07b1tpKytdPXRbMV07b1tpKytdPXRbMl19dGhpcy5jb2xvcnM9bztjb25zdCBnPXRoaXMuZmlndXJlcztmb3IoZT0wLHQ9Zy5sZW5ndGg7ZTx0O2UrKyl7Y29uc3QgdD1nW2VdLHI9dC5jb29yZHMscz10LmNvbG9ycztmb3IoaT0wLGE9ci5sZW5ndGg7aTxhO2krKyl7cltpXSo9MjtzW2ldKj0zfX19Z2V0SVIoKXtjb25zdHtib3VuZHM6ZX09dGhpcztpZihlWzJdLWVbMF09PTB8fGVbM10tZVsxXT09MCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEludmFsaWQgTWVzaFNoYWRpbmcgYm91bmRzOiBbJHtlfV0uYCk7cmV0dXJuWyJNZXNoIix0aGlzLnNoYWRpbmdUeXBlLHRoaXMuY29vcmRzLHRoaXMuY29sb3JzLHRoaXMuZmlndXJlcyxlLHRoaXMuYmJveCx0aGlzLmJhY2tncm91bmRdfX1jbGFzcyBEdW1teVNoYWRpbmcgZXh0ZW5kcyBCYXNlU2hhZGluZ3tnZXRJUigpe3JldHVyblsiRHVtbXkiXX19ZnVuY3Rpb24gZ2V0VGlsaW5nUGF0dGVybklSKGUsdCxpKXtjb25zdCByPWxvb2t1cE1hdHJpeCh0LmdldEFycmF5KCJNYXRyaXgiKSxhKSxzPWxvb2t1cE5vcm1hbFJlY3QodC5nZXRBcnJheSgiQkJveCIpLG51bGwpO2lmKCFzfHxzWzJdLXNbMF09PTB8fHNbM10tc1sxXT09MCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgZ2V0VGlsaW5nUGF0dGVybklSIC9CQm94IGFycmF5LiIpO2NvbnN0IG49dC5nZXQoIlhTdGVwIik7aWYoIm51bWJlciIhPXR5cGVvZiBuKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBnZXRUaWxpbmdQYXR0ZXJuSVIgL1hTdGVwIHZhbHVlLiIpO2NvbnN0IG89dC5nZXQoIllTdGVwIik7aWYoIm51bWJlciIhPXR5cGVvZiBvKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBnZXRUaWxpbmdQYXR0ZXJuSVIgL1lTdGVwIHZhbHVlLiIpO2NvbnN0IGc9dC5nZXQoIlBhaW50VHlwZSIpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGcpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBnZXRUaWxpbmdQYXR0ZXJuSVIgL1BhaW50VHlwZSB2YWx1ZS4iKTtjb25zdCBjPXQuZ2V0KCJUaWxpbmdUeXBlIik7aWYoIU51bWJlci5pc0ludGVnZXIoYykpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIGdldFRpbGluZ1BhdHRlcm5JUiAvVGlsaW5nVHlwZSB2YWx1ZS4iKTtyZXR1cm5bIlRpbGluZ1BhdHRlcm4iLGksZSxyLHMsbixvLGcsY119Y29uc3QgUmE9WzEuMzg3NywxLDEsMSwuOTc4MDEsLjkyNDgyLC44OTU1MiwuOTExMzMsLjgxOTg4LC45NzU2NiwuOTgxNTIsLjkzNTQ4LC45MzU0OCwxLjI3OTgsLjg1Mjg0LC45Mjc5NCwxLC45NjEzNCwxLjU0NjU3LC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuODI4NDUsLjgyODQ1LC44NTI4NCwuODUyODQsLjg1Mjg0LC43NTg1OSwuOTIxMzgsLjgzOTA4LC43NzYyLC43MzI5MywuODcyODksLjczMTMzLC43NTE0LC44MTkyMSwuODczNTYsLjk1OTU4LC41OTUyNiwuNzU3MjcsLjY5MjI1LDEuMDQ5MjQsLjkxMjEsLjg2OTQzLC43OTc5NSwuODgxOTgsLjc3OTU4LC43MDg2NCwuODEwNTUsLjkwMzk5LC44ODY1MywuOTYwMTcsLjgyNTc3LC43Nzg5MiwuNzgyNTcsLjk3NTA3LDEuNTQ2NTcsLjk3NTA3LC44NTI4NCwuODk1NTIsLjkwMTc2LC44ODc2MiwuODc4NSwuNzUyNDEsLjg3ODUsLjkwNTE4LC45NTAxNSwuNzc2MTgsLjg3ODUsLjg4NDAxLC45MTkxNiwuODYzMDQsLjg4NDAxLC45MTQ4OCwuODc4NSwuODgwMSwuODc4NSwuODc4NSwuOTEzNDMsLjcxNzMsMS4wNDEwNiwuODc4NSwuODUwNzUsLjk1Nzk0LC44MjYxNiwuODUxNjIsLjc5NDkyLC44ODMzMSwxLjY5ODA4LC44ODMzMSwuODUyODQsLjk3ODAxLC44OTU1MiwuOTExMzMsLjg5NTUyLC45MTEzMywxLjc4MDEsLjg5NTUyLDEuMjQ0ODcsMS4xMzI1NCwxLjEyNDAxLC45NjgzOSwuODUyODQsLjY4Nzg3LC43MDY0NSwuODU1OTIsLjkwNzQ3LDEuMDE0NjYsMS4wMDg4LC45MDMyMywxLDEuMDc0NjMsMSwuOTEwNTYsLjc1ODA2LDEuMTkxMTgsLjk2ODM5LC43ODg2NCwuODI4NDUsLjg0MTMzLC43NTg1OSwuODM5MDgsLjgzOTA4LC44MzkwOCwuODM5MDgsLjgzOTA4LC44MzkwOCwuNzc1MzksLjczMjkzLC43MzEzMywuNzMxMzMsLjczMTMzLC43MzEzMywuOTU5NTgsLjk1OTU4LC45NTk1OCwuOTU5NTgsLjg4NTA2LC45MTIxLC44Njk0MywuODY5NDMsLjg2OTQzLC44Njk0MywuODY5NDMsLjg1Mjg0LC44NzUwOCwuOTAzOTksLjkwMzk5LC45MDM5OSwuOTAzOTksLjc3ODkyLC43OTc5NSwuOTA4MDcsLjg4NzYyLC44ODc2MiwuODg3NjIsLjg4NzYyLC44ODc2MiwuODg3NjIsLjg3MTUsLjc1MjQxLC45MDUxOCwuOTA1MTgsLjkwNTE4LC45MDUxOCwuODg0MDEsLjg4NDAxLC44ODQwMSwuODg0MDEsLjg3ODUsLjg3ODUsLjg4MDEsLjg4MDEsLjg4MDEsLjg4MDEsLjg4MDEsLjkwNzQ3LC44OTA0OSwuODc4NSwuODc4NSwuODc4NSwuODc4NSwuODUxNjIsLjg3ODUsLjg1MTYyLC44MzkwOCwuODg3NjIsLjgzOTA4LC44ODc2MiwuODM5MDgsLjg4NzYyLC43MzI5MywuNzUyNDEsLjczMjkzLC43NTI0MSwuNzMyOTMsLjc1MjQxLC43MzI5MywuNzUyNDEsLjg3Mjg5LC44MzAxNiwuODg1MDYsLjkzMTI1LC43MzEzMywuOTA1MTgsLjczMTMzLC45MDUxOCwuNzMxMzMsLjkwNTE4LC43MzEzMywuOTA1MTgsLjczMTMzLC45MDUxOCwuODE5MjEsLjc3NjE4LC44MTkyMSwuNzc2MTgsLjgxOTIxLC43NzYxOCwxLDEsLjg3MzU2LC44Nzg1LC45MTA3NSwuODk2MDgsLjk1OTU4LC44ODQwMSwuOTU5NTgsLjg4NDAxLC45NTk1OCwuODg0MDEsLjk1OTU4LC44ODQwMSwuOTU5NTgsLjg4NDAxLC43NjIyOSwuOTAxNjcsLjU5NTI2LC45MTkxNiwxLDEsLjg2MzA0LC42OTIyNSwuODg0MDEsMSwxLC43MDQyNCwuNzk0NjgsLjkxOTI2LC44ODE3NSwuNzA4MjMsLjk0OTAzLC45MTIxLC44Nzg1LDEsMSwuOTEyMSwuODc4NSwuODc4MDIsLjg4NjU2LC44Nzg1LC44Njk0MywuODgwMSwuODY5NDMsLjg4MDEsLjg2OTQzLC44ODAxLC44NzQwMiwuODkyOTEsLjc3OTU4LC45MTM0MywxLDEsLjc3OTU4LC45MTM0MywuNzA4NjQsLjcxNzMsLjcwODY0LC43MTczLC43MDg2NCwuNzE3MywuNzA4NjQsLjcxNzMsMSwxLC44MTA1NSwuNzU4NDEsLjgxMDU1LDEuMDY0NTIsLjkwMzk5LC44Nzg1LC45MDM5OSwuODc4NSwuOTAzOTksLjg3ODUsLjkwMzk5LC44Nzg1LC45MDM5OSwuODc4NSwuOTAzOTksLjg3ODUsLjk2MDE3LC45NTc5NCwuNzc4OTIsLjg1MTYyLC43Nzg5MiwuNzgyNTcsLjc5NDkyLC43ODI1NywuNzk0OTIsLjc4MjU3LC43OTQ5MiwuOTI5NywuNTY4OTIsLjgzOTA4LC44ODc2MiwuNzc1MzksLjg3MTUsLjg3NTA4LC44OTA0OSwxLDEsLjgxMDU1LDEuMDQxMDYsMS4yMDUyOCwxLjIwNTI4LDEsMS4xNTU0MywuNzA2NzQsLjk4Mzg3LC45NDcyMSwxLjMzNDMxLDEuNDU4OTQsLjk1MTYxLDEuMDYzMDMsLjgzOTA4LC44MDM1MiwuNTcxODQsLjY5NjUsLjU2Mjg5LC44MjAwMSwuNTYwMjksLjgxMjM1LDEuMDI5ODgsLjgzOTA4LC43NzYyLC42ODE1NiwuODAzNjcsLjczMTMzLC43ODI1NywuODczNTYsLjg2OTQzLC45NTk1OCwuNzU3MjcsLjg5MDE5LDEuMDQ5MjQsLjkxMjEsLjc2NDgsLjg2OTQzLC44NzM1NiwuNzk3OTUsLjc4Mjc1LC44MTA1NSwuNzc4OTIsLjk3NjIsLjgyNTc3LC45OTgxOSwuODQ4OTYsLjk1OTU4LC43Nzg5MiwuOTYxMDgsMS4wMTQwNywuODkwNDksMS4wMjk4OCwuOTQyMTEsLjk2MTA4LC44OTM2LC44NDAyMSwuODc4NDIsLjk2Mzk5LC43OTEwOSwuODkwNDksMS4wMDgxMywxLjAyOTg4LC44NjA3NywuODc0NDUsLjkyMDk5LC44NDcyMywuODY1MTMsLjg4MDEsLjc1NjM4LC44NTcxNCwuNzgyMTYsLjc5NTg2LC44Nzk2NSwuOTQyMTEsLjk3NzQ3LC43ODI4NywuOTc5MjYsLjg0OTcxLDEuMDI5ODgsLjk0MjExLC44ODAxLC45NDIxMSwuODQ5NzEsLjczMTMzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45MDI2NCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTA1MTgsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkwNTQ4LDEsMSwxLDEsMSwxLC45NjAxNywuOTU3OTQsLjk2MDE3LC45NTc5NCwuOTYwMTcsLjk1Nzk0LC43Nzg5MiwuODUxNjIsMSwxLC44OTU1MiwuOTA1MjcsMSwuOTAzNjMsLjkyNzk0LC45Mjc5NCwuOTI3OTQsLjkyNzk0LC44NzAxMiwuODcwMTIsLjg3MDEyLC44OTU1MiwuODk1NTIsMS40MjI1OSwuNzExNDMsMS4wNjE1MiwxLDEsMS4wMzM3MiwxLjAzMzcyLC45NzE3MSwxLjQ5NTYsMi4yODA3LC45MzgzNSwuODM0MDYsLjkxMTMzLC44NDEwNywuOTExMzMsMSwxLDEsLjcyMDIxLDEsMS4yMzEwOCwuODM0ODksLjg4NTI1LC44ODUyNSwuODE0OTksLjkwNTI3LDEuODEwNTUsLjkwNTI3LDEuODEwNTUsMS4zMTAwNiwxLjUzNzExLC45NDQzNCwxLjA4Njk2LDEsLjk1MDE4LC43NzE5MiwuODUyODQsLjkwNzQ3LDEuMTc1MzQsLjY5ODI1LC45NzE2LDEuMzcwNzcsLjkwNzQ3LC45MDc0NywuODUzNTYsLjkwNzQ3LC45MDc0NywxLjQ0OTQ3LC44NTI4NCwuODk0MSwuODk0MSwuNzA1NzIsLjgsLjcwNTcyLC43MDU3MiwuNzA1NzIsLjcwNTcyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTk4NjIsLjk5ODYyLDEsMSwxLDEsMSwxLjA4MDA0LC45MTAyNywxLDEsMSwuOTk4NjIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkwNzI3LC45MDcyNywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sTmE9e2xpbmVIZWlnaHQ6MS4yMjA3LGxpbmVHYXA6LjIyMDd9LEdhPVsxLjM4NzcsMSwxLDEsLjk3ODAxLC45MjQ4MiwuODk1NTIsLjkxMTMzLC44MTk4OCwuOTc1NjYsLjk4MTUyLC45MzU0OCwuOTM1NDgsMS4yNzk4LC44NTI4NCwuOTI3OTQsMSwuOTYxMzQsMS41NjIzOSwuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjgyODQ1LC44Mjg0NSwuODUyODQsLjg1Mjg0LC44NTI4NCwuNzU4NTksLjkyMTM4LC44MzkwOCwuNzc2MiwuNzE4MDUsLjg3Mjg5LC43MzEzMywuNzUxNCwuODE5MjEsLjg3MzU2LC45NTk1OCwuNTk1MjYsLjc1NzI3LC42OTIyNSwxLjA0OTI0LC45MDg3MiwuODU5MzgsLjc5Nzk1LC44NzA2OCwuNzc5NTgsLjY5NzY2LC44MTA1NSwuOTAzOTksLjg4NjUzLC45NjA2OCwuODI1NzcsLjc3ODkyLC43ODI1NywuOTc1MDcsMS41MjksLjk3NTA3LC44NTI4NCwuODk1NTIsLjkwMTc2LC45NDkwOCwuODY0MTEsLjc0MDEyLC44NjQxMSwuODgzMjMsLjk1MDE1LC44NjQxMSwuODYzMzEsLjg4NDAxLC45MTkxNiwuODYzMDQsLjg4NDAxLC45MDM5LC44NjMzMSwuODYzMzEsLjg2NDExLC44NjQxMSwuOTA0NjQsLjcwODUyLDEuMDQxMDYsLjg2MzMxLC44NDM3MiwuOTU3OTQsLjgyNjE2LC44NDU0OCwuNzk0OTIsLjg4MzMxLDEuNjk4MDgsLjg4MzMxLC44NTI4NCwuOTc4MDEsLjg5NTUyLC45MTEzMywuODk1NTIsLjkxMTMzLDEuNzgwMSwuODk1NTIsMS4yNDQ4NywxLjEzMjU0LDEuMTkxMjksLjk2ODM5LC44NTI4NCwuNjg3ODcsLjcwNjQ1LC44NTU5MiwuOTA3NDcsMS4wMTQ2NiwxLjAwODgsLjkwMzIzLDEsMS4wNzQ2MywxLC45MTA1NiwuNzU4MDYsMS4xOTExOCwuOTY4MzksLjc4ODY0LC44Mjg0NSwuODQxMzMsLjc1ODU5LC44MzkwOCwuODM5MDgsLjgzOTA4LC44MzkwOCwuODM5MDgsLjgzOTA4LC43NzUzOSwuNzE4MDUsLjczMTMzLC43MzEzMywuNzMxMzMsLjczMTMzLC45NTk1OCwuOTU5NTgsLjk1OTU4LC45NTk1OCwuODg1MDYsLjkwODcyLC44NTkzOCwuODU5MzgsLjg1OTM4LC44NTkzOCwuODU5MzgsLjg1Mjg0LC44NzA2OCwuOTAzOTksLjkwMzk5LC45MDM5OSwuOTAzOTksLjc3ODkyLC43OTc5NSwuOTA4MDcsLjk0OTA4LC45NDkwOCwuOTQ5MDgsLjk0OTA4LC45NDkwOCwuOTQ5MDgsLjg1ODg3LC43NDAxMiwuODgzMjMsLjg4MzIzLC44ODMyMywuODgzMjMsLjg4NDAxLC44ODQwMSwuODg0MDEsLjg4NDAxLC44Nzg1LC44NjMzMSwuODYzMzEsLjg2MzMxLC44NjMzMSwuODYzMzEsLjg2MzMxLC45MDc0NywuODkwNDksLjg2MzMxLC44NjMzMSwuODYzMzEsLjg2MzMxLC44NDU0OCwuODY0MTEsLjg0NTQ4LC44MzkwOCwuOTQ5MDgsLjgzOTA4LC45NDkwOCwuODM5MDgsLjk0OTA4LC43MTgwNSwuNzQwMTIsLjcxODA1LC43NDAxMiwuNzE4MDUsLjc0MDEyLC43MTgwNSwuNzQwMTIsLjg3Mjg5LC43OTUzOCwuODg1MDYsLjkyNzI2LC43MzEzMywuODgzMjMsLjczMTMzLC44ODMyMywuNzMxMzMsLjg4MzIzLC43MzEzMywuODgzMjMsLjczMTMzLC44ODMyMywuODE5MjEsLjg2NDExLC44MTkyMSwuODY0MTEsLjgxOTIxLC44NjQxMSwxLDEsLjg3MzU2LC44NjMzMSwuOTEwNzUsLjg3NzcsLjk1OTU4LC44ODQwMSwuOTU5NTgsLjg4NDAxLC45NTk1OCwuODg0MDEsLjk1OTU4LC44ODQwMSwuOTU5NTgsLjg4NDAxLC43NjQ2NywuOTAxNjcsLjU5NTI2LC45MTkxNiwxLDEsLjg2MzA0LC42OTIyNSwuODg0MDEsMSwxLC43MDQyNCwuNzczMTIsLjkxOTI2LC44ODE3NSwuNzA4MjMsLjk0OTAzLC45MDg3MiwuODYzMzEsMSwxLC45MDg3MiwuODYzMzEsLjg2OTA2LC44ODExNiwuODYzMzEsLjg1OTM4LC44NjMzMSwuODU5MzgsLjg2MzMxLC44NTkzOCwuODYzMzEsLjg3NDAyLC44NjU0OSwuNzc5NTgsLjkwNDY0LDEsMSwuNzc5NTgsLjkwNDY0LC42OTc2NiwuNzA4NTIsLjY5NzY2LC43MDg1MiwuNjk3NjYsLjcwODUyLC42OTc2NiwuNzA4NTIsMSwxLC44MTA1NSwuNzU4NDEsLjgxMDU1LDEuMDY0NTIsLjkwMzk5LC44NjMzMSwuOTAzOTksLjg2MzMxLC45MDM5OSwuODYzMzEsLjkwMzk5LC44NjMzMSwuOTAzOTksLjg2MzMxLC45MDM5OSwuODYzMzEsLjk2MDY4LC45NTc5NCwuNzc4OTIsLjg0NTQ4LC43Nzg5MiwuNzgyNTcsLjc5NDkyLC43ODI1NywuNzk0OTIsLjc4MjU3LC43OTQ5MiwuOTI5NywuNTY4OTIsLjgzOTA4LC45NDkwOCwuNzc1MzksLjg1ODg3LC44NzA2OCwuODkwNDksMSwxLC44MTA1NSwxLjA0MTA2LDEuMjA1MjgsMS4yMDUyOCwxLDEuMTU1NDMsLjcwMDg4LC45ODM4NywuOTQ3MjEsMS4zMzQzMSwxLjQ1ODk0LC45NTE2MSwxLjQ4Mzg3LC44MzkwOCwuODAzNTIsLjU3MTE4LC42OTY1LC41NjM0NywuNzkxNzksLjU1ODUzLC44MDM0NiwxLjAyOTg4LC44MzkwOCwuNzc2MiwuNjcxNzQsLjg2MDM2LC43MzEzMywuNzgyNTcsLjg3MzU2LC44NjQ0MSwuOTU5NTgsLjc1NzI3LC44OTAxOSwxLjA0OTI0LC45MDg3MiwuNzQ4ODksLjg1OTM4LC44Nzg5MSwuNzk3OTUsLjc5NTcsLjgxMDU1LC43Nzg5MiwuOTc0NDcsLjgyNTc3LC45NzQ2NiwuODcxNzksLjk1OTU4LC43Nzg5MiwuOTQyNTIsLjk1NjEyLC44NzUzLDEuMDI5ODgsLjkyNzMzLC45NDI1MiwuODc0MTEsLjg0MDIxLC44NzI4LC45NTYxMiwuNzQwODEsLjg3NTMsMS4wMjE4OSwxLjAyOTg4LC44NDgxNCwuODc0NDUsLjkxODIyLC44NDcyMywuODU2NjgsLjg2MzMxLC44MTM0NCwuODc1ODEsLjc2NDIyLC44MjA0NiwuOTYwNTcsLjkyNzMzLC45OTM3NSwuNzgwMjIsLjk1NDUyLC44NjAxNSwxLjAyOTg4LC45MjczMywuODYzMzEsLjkyNzMzLC44NjAxNSwuNzMxMzMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkwNjMxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC44ODMyMywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODUxNzQsMSwxLDEsMSwxLDEsLjk2MDY4LC45NTc5NCwuOTYwNjgsLjk1Nzk0LC45NjA2OCwuOTU3OTQsLjc3ODkyLC44NDU0OCwxLDEsLjg5NTUyLC45MDUyNywxLC45MDM2MywuOTI3OTQsLjkyNzk0LC45Mjc5NCwuODk4MDcsLjg3MDEyLC44NzAxMiwuODcwMTIsLjg5NTUyLC44OTU1MiwxLjQyMjU5LC43MTA5NCwxLjA2MTUyLDEsMSwxLjAzMzcyLDEuMDMzNzIsLjk3MTcxLDEuNDk1NiwyLjI4MDcsLjkyOTcyLC44MzQwNiwuOTExMzMsLjgzMzI2LC45MTEzMywxLDEsMSwuNzIwMjEsMSwxLjIzMTA4LC44MzQ4OSwuODg1MjUsLjg4NTI1LC44MTQ5OSwuOTA2MTYsMS44MTA1NSwuOTA1MjcsMS44MTA1NSwxLjMxMDcsMS41MzcxMSwuOTQ0MzQsMS4wODY5NiwxLC45NTAxOCwuNzcxOTIsLjg1Mjg0LC45MDc0NywxLjE3NTM0LC42OTgyNSwuOTcxNiwxLjM3MDc3LC45MDc0NywuOTA3NDcsLjg1MzU2LC45MDc0NywuOTA3NDcsMS40NDk0NywuODUyODQsLjg5NDEsLjg5NDEsLjcwNTcyLC44LC43MDU3MiwuNzA1NzIsLjcwNTcyLC43MDU3MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk5ODYyLC45OTg2MiwxLDEsMSwxLDEsMS4wODAwNCwuOTEwMjcsMSwxLDEsLjk5ODYyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45MDcyNywuOTA3MjcsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLHhhPXtsaW5lSGVpZ2h0OjEuMjIwNyxsaW5lR2FwOi4yMjA3fSxVYT1bMS4zODc3LDEsMSwxLDEuMTcyMjMsMS4xMjkzLC44OTU1MiwuOTExMzMsLjgwMzk1LDEuMDIyNjksMS4xNTYwMSwuOTEwNTYsLjkxMDU2LDEuMjc5OCwuODUyODQsLjg5ODA3LDEsLjkwODYxLDEuMzk1NDMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45NjMwOSwuOTYzMDksLjg1Mjg0LC44NTI4NCwuODUyODQsLjgzMzE5LC44ODA3MSwuODY3NSwuODE1NTIsLjcyMzQ2LC44NTE5MywuNzMyMDYsLjc1MjIsLjgxMTA1LC44NjI3NSwuOTA2ODUsLjYzNzcsLjc3ODkyLC43NTU5MywxLjAyNjM4LC44OTI0OSwuODQxMTgsLjc3NDUyLC44NTM3NCwuNzUxODYsLjY3Nzg5LC43OTc3NiwuODg4NDQsLjg1MDY2LC45NDMwOSwuNzc4MTgsLjczMDYsLjc2NjU5LDEuMTAzNjksMS4zODMxMywxLjEwMzY5LDEuMDYxMzksLjg5NTUyLC44NzM5LC45MjQ1LC45MjQ1LC44MzIwMywuOTI0NSwuODU4NjUsMS4wOTg0MiwuOTI0NSwuOTI0NSwxLjAzMjk3LDEuMDc2OTIsLjkwOTE4LDEuMDMyOTcsLjk0OTU5LC45MjQ1LC45MjI3NCwuOTI0NSwuOTI0NSwxLjAyOTMzLC43NzgzMiwxLjIwNTYyLC45MjQ1LC44OTE2LC45ODk4NiwuODY2MjEsLjg5NDUzLC43OTAwNCwuOTQxNTIsMS43NzI1NiwuOTQxNTIsLjg1Mjg0LC45NzgwMSwuODk1NTIsLjkxMTMzLC44OTU1MiwuOTExMzMsMS45MTcyOSwuODk1NTIsMS4xNzg4OSwxLjEzMjU0LDEuMTYzNTksLjkyMDk4LC44NTI4NCwuNjg3ODcsLjcxMzUzLC44NDczNywuOTA3NDcsMS4wMDg4LDEuMDA0NCwuODc2ODMsMSwxLjA5MDkxLDEsLjkyMjI5LC43MzksMS4xNTY0MiwuOTIwOTgsLjc2Mjg4LC44MDUwNCwuODA5NzIsLjc1ODU5LC44Njc1LC44Njc1LC44Njc1LC44Njc1LC44Njc1LC44Njc1LC43NjMxOCwuNzIzNDYsLjczMjA2LC43MzIwNiwuNzMyMDYsLjczMjA2LC45MDY4NSwuOTA2ODUsLjkwNjg1LC45MDY4NSwuODY0NzcsLjg5MjQ5LC44NDExOCwuODQxMTgsLjg0MTE4LC44NDExOCwuODQxMTgsLjg1Mjg0LC44NDU1NywuODg4NDQsLjg4ODQ0LC44ODg0NCwuODg4NDQsLjczMDYsLjc3NDUyLC44NjMzMSwuOTI0NSwuOTI0NSwuOTI0NSwuOTI0NSwuOTI0NSwuOTI0NSwuODQ4NDMsLjgzMjAzLC44NTg2NSwuODU4NjUsLjg1ODY1LC44NTg2NSwuODI2MDEsLjgyNjAxLC44MjYwMSwuODI2MDEsLjk0NDY5LC45MjQ1LC45MjI3NCwuOTIyNzQsLjkyMjc0LC45MjI3NCwuOTIyNzQsLjkwNzQ3LC44NjY1MSwuOTI0NSwuOTI0NSwuOTI0NSwuOTI0NSwuODk0NTMsLjkyNDUsLjg5NDUzLC44Njc1LC45MjQ1LC44Njc1LC45MjQ1LC44Njc1LC45MjQ1LC43MjM0NiwuODMyMDMsLjcyMzQ2LC44MzIwMywuNzIzNDYsLjgzMjAzLC43MjM0NiwuODMyMDMsLjg1MTkzLC44ODc1LC44NjQ3NywuOTkwMzQsLjczMjA2LC44NTg2NSwuNzMyMDYsLjg1ODY1LC43MzIwNiwuODU4NjUsLjczMjA2LC44NTg2NSwuNzMyMDYsLjg1ODY1LC44MTEwNSwuOTI0NSwuODExMDUsLjkyNDUsLjgxMTA1LC45MjQ1LDEsMSwuODYyNzUsLjkyNDUsLjkwODcyLC45MzU5MSwuOTA2ODUsLjgyNjAxLC45MDY4NSwuODI2MDEsLjkwNjg1LC44MjYwMSwuOTA2ODUsMS4wMzI5NywuOTA2ODUsLjgyNjAxLC43Nzg5NiwxLjA1NjExLC42Mzc3LDEuMDc2OTIsMSwxLC45MDkxOCwuNzU1OTMsMS4wMzI5NywxLDEsLjc2MDMyLC45Mzc1LC45ODE1NiwuOTM0MDcsLjc3MjYxLDEuMTE0MjksLjg5MjQ5LC45MjQ1LDEsMSwuODkyNDksLjkyNDUsLjkyNTM0LC44NjY5OCwuOTI0NSwuODQxMTgsLjkyMjc0LC44NDExOCwuOTIyNzQsLjg0MTE4LC45MjI3NCwuODY2NywuODYyOTEsLjc1MTg2LDEuMDI5MzMsMSwxLC43NTE4NiwxLjAyOTMzLC42Nzc4OSwuNzc4MzIsLjY3Nzg5LC43NzgzMiwuNjc3ODksLjc3ODMyLC42Nzc4OSwuNzc4MzIsMSwxLC43OTc3NiwuOTc2NTUsLjc5Nzc2LDEuMjMwMjMsLjg4ODQ0LC45MjQ1LC44ODg0NCwuOTI0NSwuODg4NDQsLjkyNDUsLjg4ODQ0LC45MjQ1LC44ODg0NCwuOTI0NSwuODg4NDQsLjkyNDUsLjk0MzA5LC45ODk4NiwuNzMwNiwuODk0NTMsLjczMDYsLjc2NjU5LC43OTAwNCwuNzY2NTksLjc5MDA0LC43NjY1OSwuNzkwMDQsMS4wOTIzMSwuNTQ4NzMsLjg2NzUsLjkyNDUsLjc2MzE4LC44NDg0MywuODQ1NTcsLjg2NjUxLDEsMSwuNzk3NzYsMS4yMDU2MiwxLjE4NjIyLDEuMTg2MjIsMSwxLjE0MzcsLjY3MDA5LC45NjMzNCwuOTM2OTUsMS4zNTE5MSwxLjQwOTA5LC45NTE2MSwxLjQ4Mzg3LC44Njc1LC45MDg2MSwuNjE5MiwuNzM2MywuNjQ4MjQsLjgyNDExLC41NjMyMSwuODU2OTYsMS4yMzUxNiwuODY3NSwuODE1NTIsLjcyODYsLjg0MTM0LC43MzIwNiwuNzY2NTksLjg2Mjc1LC44NDM2OSwuOTA2ODUsLjc3ODkyLC44NTg3MSwxLjAyNjM4LC44OTI0OSwuNzU4MjgsLjg0MTE4LC44NTk4NCwuNzc0NTIsLjc2NDY2LC43OTc3NiwuNzMwNiwuOTA3ODIsLjc3ODE4LC45MDMsLjg3MjkxLC45MDY4NSwuNzMwNiwuOTkwNTgsMS4wMzY2NywuOTQ2MzUsMS4yMzUxNiwuOTg0OSwuOTkwNTgsLjkyMzkzLC44OTE2LC45NDIsMS4wMzY2NywuNzUwMjYsLjk0NjM1LDEuMDI5NywxLjIzNTE2LC45MDkxOCwuOTQwNDgsLjk4MjE3LC44OTc0NiwuODQxNTMsLjkyMjc0LC44MjUwNywuODg4MzIsLjg0NDM4LC44ODE3OCwxLjAzNTI1LC45ODQ5LDEuMDAyMjUsLjc4MDg2LC45NzI0OCwuODk0MDQsMS4yMzUxNiwuOTg0OSwuOTIyNzQsLjk4NDksLjg5NDA0LC43MzIwNiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODk2OTMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjg1ODY1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45MDkzMywxLDEsMSwxLDEsMSwuOTQzMDksLjk4OTg2LC45NDMwOSwuOTg5ODYsLjk0MzA5LC45ODk4NiwuNzMwNiwuODk0NTMsMSwxLC44OTU1MiwuOTA1MjcsMSwuOTAxODYsMS4xMjMwOCwxLjEyMzA4LDEuMTIzMDgsMS4xMjMwOCwxLjI1NjYsMS4yNTY2LDEuMjU2NiwuODk1NTIsLjg5NTUyLDEuNDIyNTksLjY4OTk0LDEuMDM4MDksMSwxLDEuMDE3NiwxLjAxNzYsMS4xMTUyMywxLjQ5NTYsMi4wMTQ2MiwuOTc4NTgsLjgyNjE2LC45MTEzMywuODM0MzcsLjkxMTMzLDEsMSwxLC43MDUwOCwxLDEuMjMxMDgsLjc5ODAxLC44NDQyNiwuODQ0MjYsLjc3NCwuOTA1NzIsMS44MTA1NSwuOTA3NDksMS44MTA1NSwxLjI4ODA5LDEuNTU0NjksLjk0NDM0LDEuMDc4MDYsMSwuOTcwOTQsLjc1ODksLjg1Mjg0LC45MDc0NywxLjE5NjU4LC42OTgyNSwuOTc2MjIsMS4zMzUxMiwuOTA3NDcsLjkwNzQ3LC44NTI4NCwuOTA3NDcsLjkwNzQ3LDEuNDQ5NDcsLjg1Mjg0LC44OTQxLC44OTQxLC43MDU3MiwuOCwuNzA1NzIsLjcwNTcyLC43MDU3MiwuNzA1NzIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45OTg2MiwuOTk4NjIsMSwxLDEsMSwxLDEuMDMzNiwuOTEwMjcsMSwxLDEsLjk5ODYyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDU4NTksMS4wNTg1OSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sTWE9e2xpbmVIZWlnaHQ6MS4yMjA3LGxpbmVHYXA6LjIyMDd9LExhPVsxLjM4NzcsMSwxLDEsMS4xNzIyMywxLjEyOTMsLjg5NTUyLC45MTEzMywuODAzOTUsMS4wMjI2OSwxLjE1NjAxLC45MTA1NiwuOTEwNTYsMS4yNzk4LC44NTI4NCwuODk4MDcsMSwuOTA4NjEsMS4zOTAxNiwuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjk2MzA5LC45NjMwOSwuODUyODQsLjg1Mjg0LC44NTI4NCwuODMzMTksLjg4MDcxLC44Njc1LC44MTU1MiwuNzM4MzQsLjg1MTkzLC43MzIwNiwuNzUyMiwuODExMDUsLjg2Mjc1LC45MDY4NSwuNjM3NywuNzc4OTIsLjc1NTkzLDEuMDI2MzgsLjg5Mzg1LC44NTEyMiwuNzc0NTIsLjg2NTAzLC43NTE4NiwuNjg4ODcsLjc5Nzc2LC44ODg0NCwuODUwNjYsLjk0MjU4LC43NzgxOCwuNzMwNiwuNzY2NTksMS4xMDM2OSwxLjM5MDE2LDEuMTAzNjksMS4wNjEzOSwuODk1NTIsLjg3MzksLjg2MTI4LC45NDQ2OSwuODQ1NywuOTQ0NjksLjg5NDY0LDEuMDk4NDIsLjg0NjM2LC45NDQ2OSwxLjAzMjk3LDEuMDc2OTIsLjkwOTE4LDEuMDMyOTcsLjk1ODk3LC45NDQ2OSwuOTQ4MiwuOTQ0NjksLjk0NDY5LDEuMDQ2OTIsLjc4MjIzLDEuMjA1NjIsLjk0NDY5LC45MDMzMiwuOTg5ODYsLjg2NjIxLC45MDUyNywuNzkwMDQsLjk0MTUyLDEuNzcyNTYsLjk0MTUyLC44NTI4NCwuOTc4MDEsLjg5NTUyLC45MTEzMywuODk1NTIsLjkxMTMzLDEuOTE3MjksLjg5NTUyLDEuMTc4ODksMS4xMzI1NCwxLjA4NzA3LC45MjA5OCwuODUyODQsLjY4Nzg3LC43MTM1MywuODQ3MzcsLjkwNzQ3LDEuMDA4OCwxLjAwNDQsLjg3NjgzLDEsMS4wOTA5MSwxLC45MjIyOSwuNzM5LDEuMTU2NDIsLjkyMDk4LC43NjI4OCwuODA1MDQsLjgwOTcyLC43NTg1OSwuODY3NSwuODY3NSwuODY3NSwuODY3NSwuODY3NSwuODY3NSwuNzYzMTgsLjczODM0LC43MzIwNiwuNzMyMDYsLjczMjA2LC43MzIwNiwuOTA2ODUsLjkwNjg1LC45MDY4NSwuOTA2ODUsLjg2NDc3LC44OTM4NSwuODUxMjIsLjg1MTIyLC44NTEyMiwuODUxMjIsLjg1MTIyLC44NTI4NCwuODUzMTEsLjg4ODQ0LC44ODg0NCwuODg4NDQsLjg4ODQ0LC43MzA2LC43NzQ1MiwuODYzMzEsLjg2MTI4LC44NjEyOCwuODYxMjgsLjg2MTI4LC44NjEyOCwuODYxMjgsLjg2OTMsLjg0NTcsLjg5NDY0LC44OTQ2NCwuODk0NjQsLjg5NDY0LC44MjYwMSwuODI2MDEsLjgyNjAxLC44MjYwMSwuOTQ0NjksLjk0NDY5LC45NDgyLC45NDgyLC45NDgyLC45NDgyLC45NDgyLC45MDc0NywuODY2NTEsLjk0NDY5LC45NDQ2OSwuOTQ0NjksLjk0NDY5LC45MDUyNywuOTQ0NjksLjkwNTI3LC44Njc1LC44NjEyOCwuODY3NSwuODYxMjgsLjg2NzUsLjg2MTI4LC43MzgzNCwuODQ1NywuNzM4MzQsLjg0NTcsLjczODM0LC44NDU3LC43MzgzNCwuODQ1NywuODUxOTMsLjkyNDU0LC44NjQ3NywuOTkyMSwuNzMyMDYsLjg5NDY0LC43MzIwNiwuODk0NjQsLjczMjA2LC44OTQ2NCwuNzMyMDYsLjg5NDY0LC43MzIwNiwuODk0NjQsLjgxMTA1LC44NDYzNiwuODExMDUsLjg0NjM2LC44MTEwNSwuODQ2MzYsMSwxLC44NjI3NSwuOTQ0NjksLjkwODcyLC45NTc4NiwuOTA2ODUsLjgyNjAxLC45MDY4NSwuODI2MDEsLjkwNjg1LC44MjYwMSwuOTA2ODUsMS4wMzI5NywuOTA2ODUsLjgyNjAxLC43Nzc0MSwxLjA1NjExLC42Mzc3LDEuMDc2OTIsMSwxLC45MDkxOCwuNzU1OTMsMS4wMzI5NywxLDEsLjc2MDMyLC45MDQ1MiwuOTgxNTYsMS4xMTg0MiwuNzcyNjEsMS4xMTQyOSwuODkzODUsLjk0NDY5LDEsMSwuODkzODUsLjk0NDY5LC45NTg3NywuODY5MDEsLjk0NDY5LC44NTEyMiwuOTQ4MiwuODUxMjIsLjk0ODIsLjg1MTIyLC45NDgyLC44NjY3LC45MDAxNiwuNzUxODYsMS4wNDY5MiwxLDEsLjc1MTg2LDEuMDQ2OTIsLjY4ODg3LC43ODIyMywuNjg4ODcsLjc4MjIzLC42ODg4NywuNzgyMjMsLjY4ODg3LC43ODIyMywxLDEsLjc5Nzc2LC45MjE4OCwuNzk3NzYsMS4yMzAyMywuODg4NDQsLjk0NDY5LC44ODg0NCwuOTQ0NjksLjg4ODQ0LC45NDQ2OSwuODg4NDQsLjk0NDY5LC44ODg0NCwuOTQ0NjksLjg4ODQ0LC45NDQ2OSwuOTQyNTgsLjk4OTg2LC43MzA2LC45MDUyNywuNzMwNiwuNzY2NTksLjc5MDA0LC43NjY1OSwuNzkwMDQsLjc2NjU5LC43OTAwNCwxLjA5MjMxLC41NDg3MywuODY3NSwuODYxMjgsLjc2MzE4LC44NjkzLC44NTMxMSwuODY2NTEsMSwxLC43OTc3NiwxLjIwNTYyLDEuMTg2MjIsMS4xODYyMiwxLDEuMTQzNywuNjc3NDIsLjk2MzM0LC45MzY5NSwxLjM1MTkxLDEuNDA5MDksLjk1MTYxLDEuNDgzODcsLjg2Njg2LC45MDg2MSwuNjIyNjcsLjc0MzU5LC42NTY0OSwuODU0OTgsLjU2OTYzLC44ODI1NCwxLjIzNTE2LC44Njc1LC44MTU1MiwuNzU0NDMsLjg0NTAzLC43MzIwNiwuNzY2NTksLjg2Mjc1LC44NTEyMiwuOTA2ODUsLjc3ODkyLC44NTc0NiwxLjAyNjM4LC44OTM4NSwuNzU2NTcsLjg1MTIyLC44NjI3NSwuNzc0NTIsLjc0MTcxLC43OTc3NiwuNzMwNiwuOTUxNjUsLjc3ODE4LC44OTc3MiwuODg4MzEsLjkwNjg1LC43MzA2LC45ODE0MiwxLjAyMTkxLC45NjU3NiwxLjIzNTE2LC45OTAxOCwuOTgxNDIsLjkyMzYsLjg5MjU4LC45NDAzNSwxLjAyMTkxLC43ODg0OCwuOTY1NzYsLjk1NjEsMS4yMzUxNiwuOTA5MTgsLjkyNTc4LC45NTQyNCwuODk3NDYsLjgzOTY5LC45NDgyLC44MDExMywuODk0NDIsLjg1MjA4LC44NjE1NSwuOTgwMjIsLjk5MDE4LDEuMDA0NTIsLjgxMjA5LC45OTI0NywuODkxODEsMS4yMzUxNiwuOTkwMTgsLjk0ODIsLjk5MDE4LC44OTE4MSwuNzMyMDYsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjg4ODQ0LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC44OTQ2NCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTY3NjYsMSwxLDEsMSwxLDEsLjk0MjU4LC45ODk4NiwuOTQyNTgsLjk4OTg2LC45NDI1OCwuOTg5ODYsLjczMDYsLjkwNTI3LDEsMSwuODk1NTIsLjkwNTI3LDEsLjkwMTg2LDEuMTIzMDgsMS4xMjMwOCwxLjEyMzA4LDEuMTIzMDgsMS4yNTY2LDEuMjU2NiwxLjI1NjYsLjg5NTUyLC44OTU1MiwxLjQyMjU5LC42OTA0MywxLjAzODA5LDEsMSwxLjAxNzYsMS4wMTc2LDEuMTE1MjMsMS40OTU2LDIuMDE0NjIsLjk5MzMxLC44MjYxNiwuOTExMzMsLjg0Mjg2LC45MTEzMywxLDEsMSwuNzA1MDgsMSwxLjIzMTA4LC43OTgwMSwuODQ0MjYsLjg0NDI2LC43NzQsLjkwNTI3LDEuODEwNTUsLjkwNTI3LDEuODEwNTUsMS4yODgwOSwxLjU1NDY5LC45NDQzNCwxLjA3ODA2LDEsLjk3MDk0LC43NTg5LC44NTI4NCwuOTA3NDcsMS4xOTY1OCwuNjk4MjUsLjk3NjIyLDEuMzM1MTIsLjkwNzQ3LC45MDc0NywuODUzNTYsLjkwNzQ3LC45MDc0NywxLjQ0OTQ3LC44NTI4NCwuODk0MSwuODk0MSwuNzA1NzIsLjgsLjcwNTcyLC43MDU3MiwuNzA1NzIsLjcwNTcyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTk4NjIsLjk5ODYyLDEsMSwxLDEsMSwxLjAzMzYsLjkxMDI3LDEsMSwxLC45OTg2MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjA1ODU5LDEuMDU4NTksMSwxLDEsMS4wNzE4NSwuOTk0MTMsLjk2MzM0LDEuMDgwNjUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSxIYT17bGluZUhlaWdodDoxLjIyMDcsbGluZUdhcDouMjIwN30sSmE9Wy43NjExNiwxLDEsMS4wMDA2LC45OTk5OCwuOTk5NzQsLjk5OTczLC45OTk3MywuOTk5ODIsLjk5OTc3LDEuMDAwODcsLjk5OTk4LC45OTk5OCwuOTk5NTksMS4wMDAwMywxLjAwMDYsLjk5OTk4LDEuMDAwNiwxLjAwMDYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk5OCwxLDEuMDAwMDMsMS4wMDAwMywxLjAwMDAzLDEuMDAwMjYsLjk5OTksLjk5OTc3LC45OTk3NywuOTk5NzcsLjk5OTc3LDEuMDAwMDEsMS4wMDAyNiwxLjAwMDIyLC45OTk3NywxLjAwMDYsLjk5OTczLC45OTk3NywxLjAwMDI2LC45OTk5OSwuOTk5NzcsMS4wMDAyMiwxLjAwMDAxLDEuMDAwMjIsLjk5OTc3LDEuMDAwMDEsMS4wMDAyNiwuOTk5NzcsMS4wMDAwMSwxLjAwMDE2LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDI2LC45OTk5OCwxLjAwMDYsLjk5OTk4LDEuMDAwMDMsLjk5OTczLC45OTk5OCwuOTk5NzMsMS4wMDAyNiwuOTk5NzMsMS4wMDAyNiwuOTk5NzMsLjk5OTk4LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDYsMS4wMDA2LC45OTk3MywxLjAwMDYsLjk5OTgyLDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsLjk5OTU5LC45OTk3MywuOTk5OTgsMS4wMDAyNiwuOTk5NzMsMS4wMDAyMiwuOTk5NzMsLjk5OTczLDEsLjk5OTU5LDEuMDAwNzcsLjk5OTU5LDEuMDAwMDMsLjk5OTk4LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDc3LC45OTk3MywuOTk5OTgsMS4wMDAyNSwuOTk5NjgsLjk5OTczLDEuMDAwMDMsMS4wMDAyNSwuNjAyOTksMS4wMDAyNCwxLjA2NDA5LDEsMSwuOTk5OTgsMSwuOTk5NzMsMS4wMDA2LC45OTk5OCwxLC45OTkzNiwuOTk5NzMsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMS4wMDAyNiwuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywxLC45OTk3NywxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5NzcsLjk5OTc3LDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDAzLDEuMDAwMjIsLjk5OTc3LC45OTk3NywuOTk5NzcsLjk5OTc3LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDI2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk4MiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDY0MDksMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LC45OTk3MywxLjAwMDI2LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywxLjAzMzc0LC45OTk3NywxLjAwMDI2LDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA0MiwuOTk5NzMsLjk5OTczLDEuMDAwNiwuOTk5NzcsLjk5OTczLC45OTk3MywxLjAwMDI2LDEuMDAwNiwxLjAwMDI2LDEuMDAwNiwxLjAwMDI2LDEuMDM4MjgsMS4wMDAyNiwuOTk5OTksMS4wMDAyNiwxLjAwMDYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTMsLjk5OTgsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLDEuMDAwMTYsLjk5OTc3LC45OTk1OSwuOTk5NzcsLjk5OTU5LC45OTk3NywuOTk5NTksMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAyNiwuOTk5OTgsMS4wMDAyNiwuODEyMSwxLjAwMDI2LC45OTk5OCwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwxLjAwMDE2LDEuMDAwMjIsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwxLjAwMDI2LDEsMS4wMDAyNiwxLDEuMDAwMjYsMSwxLjAwMDYsLjk5OTczLC45OTk3NywuOTk5NzMsMSwuOTk5ODIsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMDEsLjk5OTczLDEuMDAwMjYsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwxLjAwMDM0LC45OTk3NywxLC45OTk5NywxLjAwMDI2LDEuMDAwNzgsMS4wMDAzNiwuOTk5NzMsMS4wMDAxMywxLjAwMDYsLjk5OTc3LC45OTk3NywuOTk5ODgsLjg1MTQ4LDEuMDAwMDEsMS4wMDAyNiwuOTk5NzcsMS4wMDAyMiwxLjAwMDYsLjk5OTc3LDEuMDAwMDEsLjk5OTk5LC45OTk3NywxLjAwMDY5LDEuMDAwMjIsLjk5OTc3LDEuMDAwMDEsLjk5OTg0LDEuMDAwMjYsMS4wMDAwMSwxLjAwMDI0LDEuMDAwMDEsLjk5OTksMSwxLjAwMDYsMS4wMDAwMSwxLjAwMDQxLC45OTk2MiwxLjAwMDI2LDEuMDAwNiwuOTk5OTUsMS4wMDA0MSwuOTk5NDIsLjk5OTczLC45OTkyNywxLjAwMDgyLC45OTkwMiwxLjAwMDI2LDEuMDAwODcsMS4wMDA2LDEuMDAwNjksLjk5OTczLC45OTg2NywuOTk5NzMsLjk5OTMsMS4wMDAyNiwxLjAwMDQ5LDEuMDAwNTYsMSwuOTk5ODgsLjk5OTM1LC45OTk5NSwuOTk5NTQsMS4wMDA1NSwuOTk5NDUsMS4wMDAzMiwxLjAwMDYsLjk5OTk1LDEuMDAwMjYsLjk5OTk1LDEuMDAwMzIsMS4wMDAwMSwxLjAwMDA4LC45OTk3MSwxLjAwMDE5LC45OTk0LDEuMDAwMDEsMS4wMDA2LDEuMDAwNDQsLjk5OTczLDEuMDAwMjMsMS4wMDA0NywxLC45OTk0MiwuOTk1NjEsLjk5OTg5LDEuMDAwMzUsLjk5OTc3LDEuMDAwMzUsLjk5OTc3LDEuMDAwMTksLjk5OTQ0LDEuMDAwMDEsMS4wMDAyMSwuOTk5MjYsMS4wMDAzNSwxLjAwMDM1LC45OTk0MiwxLjAwMDQ4LC45OTk5OSwuOTk5NzcsMS4wMDAyMiwxLjAwMDM1LDEuMDAwMDEsLjk5OTc3LDEuMDAwMjYsLjk5OTg5LDEuMDAwNTcsMS4wMDAwMSwuOTk5MzYsMS4wMDA1MiwxLjAwMDEyLC45OTk5NiwxLjAwMDQzLDEsMS4wMDAzNSwuOTk5NCwuOTk5NzYsMS4wMDAzNSwuOTk5NzMsMS4wMDA1MiwxLjAwMDQxLDEuMDAxMTksMS4wMDAzNywuOTk5NzMsMS4wMDAwMiwuOTk5ODYsMS4wMDA0MSwxLjAwMDQxLC45OTkwMiwuOTk5NiwxLjAwMDM0LC45OTk5OSwxLjAwMDI2LC45OTk5OSwxLjAwMDI2LC45OTk3MywxLjAwMDUyLC45OTk3MywxLC45OTk3MywxLjAwMDQxLDEuMDAwNzUsLjk5OTQsMS4wMDAzLC45OTk5OSwxLDEuMDAwNDEsLjk5OTU1LDEsLjk5OTE1LC45OTk3MywuOTk5NzMsMS4wMDAyNiwxLjAwMTE5LC45OTk1NSwuOTk5NzMsMS4wMDA2LC45OTkxMSwxLjAwMDYsMS4wMDAyNiwuOTk5NzIsMS4wMDAyNiwuOTk5MDIsMS4wMDA0MSwuOTk5NzMsLjk5OTk5LDEsMSwxLjAwMDM4LDEuMDAwNSwxLjAwMDE2LDEuMDAwMjIsMS4wMDAxNiwxLjAwMDIyLDEuMDAwMTYsMS4wMDAyMiwxLjAwMDAxLC45OTk3MywxLDEsLjk5OTczLDEsMSwuOTk5NTUsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEsMSwxLC45OTk3MywuOTk5NzMsLjk5OTcyLDEsMSwxLjAwMTA2LC45OTk5OSwuOTk5OTgsLjk5OTk4LC45OTk5OSwuOTk5OTgsMS42NjQ3NSwxLC45OTk3MywuOTk5NzMsMS4wMDAyMywuOTk5NzMsLjk5OTcxLDEuMDAwNDcsMS4wMDAyMywxLC45OTk5MSwuOTk5ODQsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLDEsMSwxLDEsMSwxLC45OTk3MiwxLDEuMjA5ODUsMS4zOTcxMywxLjAwMDAzLDEuMDAwMzEsMS4wMDAxNSwxLC45OTU2MSwxLjAwMDI3LDEuMDAwMzEsMS4wMDAzMSwuOTk5MTUsMS4wMDAzMSwxLjAwMDMxLC45OTk5OSwxLjAwMDAzLC45OTk5OSwuOTk5OTksMS40MTE0NCwxLjYsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQwNTc5LDEuNDA1NzksMS4zNjYyNSwuOTk5OTksMSwuOTk4NjEsLjk5ODYxLDEsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwuOTk5NzIsLjk5OTk5LC45OTk5OSwuOTk5OTksLjk5OTk5LDEuNDA0ODMsMSwuOTk5NzcsMS4wMDA1NCwxLDEsLjk5OTUzLC45OTk2MiwxLjAwMDQyLC45OTk1LDEsMSwxLDEsMSwxLDEsMSwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSx2YT17bGluZUhlaWdodDoxLjIsbGluZUdhcDouMn0sWWE9Wy43NjExNiwxLDEsMS4wMDA2LC45OTk5OCwuOTk5NzQsLjk5OTczLC45OTk3MywuOTk5ODIsLjk5OTc3LDEuMDAwODcsLjk5OTk4LC45OTk5OCwuOTk5NTksMS4wMDAwMywxLjAwMDYsLjk5OTk4LDEuMDAwNiwxLjAwMDYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk5OCwxLDEuMDAwMDMsMS4wMDAwMywxLjAwMDAzLDEuMDAwMjYsLjk5OTksLjk5OTc3LC45OTk3NywuOTk5NzcsLjk5OTc3LDEuMDAwMDEsMS4wMDAyNiwxLjAwMDIyLC45OTk3NywxLjAwMDYsLjk5OTczLC45OTk3NywxLjAwMDI2LC45OTk5OSwuOTk5NzcsMS4wMDAyMiwxLjAwMDAxLDEuMDAwMjIsLjk5OTc3LDEuMDAwMDEsMS4wMDAyNiwuOTk5NzcsMS4wMDAwMSwxLjAwMDE2LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDI2LC45OTk5OCwxLjAwMDYsLjk5OTk4LDEuMDAwMDMsLjk5OTczLC45OTk5OCwuOTk5NzMsMS4wMDAyNiwuOTk5NzMsMS4wMDAyNiwuOTk5NzMsLjk5OTk4LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDYsMS4wMDA2LC45OTk3MywxLjAwMDYsLjk5OTgyLDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsLjk5OTU5LC45OTk3MywuOTk5OTgsMS4wMDAyNiwuOTk5NzMsMS4wMDAyMiwuOTk5NzMsLjk5OTczLDEsLjk5OTU5LDEuMDAwNzcsLjk5OTU5LDEuMDAwMDMsLjk5OTk4LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDc3LC45OTk3MywuOTk5OTgsMS4wMDAyNSwuOTk5NjgsLjk5OTczLDEuMDAwMDMsMS4wMDAyNSwuNjAyOTksMS4wMDAyNCwxLjA2NDA5LDEsMSwuOTk5OTgsMSwuOTk5NzMsMS4wMDA2LC45OTk5OCwxLC45OTkzNiwuOTk5NzMsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMS4wMDAyNiwuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywxLC45OTk3NywxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5NzcsLjk5OTc3LDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDAzLDEuMDAwMjIsLjk5OTc3LC45OTk3NywuOTk5NzcsLjk5OTc3LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDI2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk4MiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDY0MDksMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LC45OTk3MywxLjAwMDI2LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywxLjAwNDQsLjk5OTc3LDEuMDAwMjYsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5NzEsLjk5OTczLC45OTk3MywxLjAwMDYsLjk5OTc3LC45OTk3MywuOTk5NzMsMS4wMDAyNiwxLjAwMDYsMS4wMDAyNiwxLjAwMDYsMS4wMDAyNiwxLjAxMDExLDEuMDAwMjYsLjk5OTk5LDEuMDAwMjYsMS4wMDA2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTkzLC45OTk4LDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsMSwxLjAwMDE2LC45OTk3NywuOTk5NTksLjk5OTc3LC45OTk1OSwuOTk5NzcsLjk5OTU5LDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMjYsLjk5OTk4LDEuMDAwMjYsLjgxMjEsMS4wMDAyNiwuOTk5OTgsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsMS4wMDAxNiwxLjAwMDIyLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsMS4wMDAyNiwxLDEuMDAwMjYsMSwxLjAwMDI2LDEsMS4wMDA2LC45OTk3MywuOTk5NzcsLjk5OTczLDEsLjk5OTgyLDEuMDAwMjIsMS4wMDAyNiwxLjAwMDAxLC45OTk3MywxLjAwMDI2LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk3NywxLDEsMS4wMDAyNiwuOTk5NjksLjk5OTcyLC45OTk4MSwuOTk5OCwxLjAwMDYsLjk5OTc3LC45OTk3NywxLjAwMDIyLC45MTE1NSwxLjAwMDAxLDEuMDAwMjYsLjk5OTc3LDEuMDAwMjIsMS4wMDA2LC45OTk3NywxLjAwMDAxLC45OTk5OSwuOTk5NzcsLjk5OTY2LDEuMDAwMjIsMS4wMDAzMiwxLjAwMDAxLC45OTk0NCwxLjAwMDI2LDEuMDAwMDEsLjk5OTY4LDEuMDAwMDEsMS4wMDA0NywxLDEuMDAwNiwxLjAwMDAxLC45OTk4MSwxLjAwMTAxLDEuMDAwMjYsMS4wMDA2LC45OTk0OCwuOTk5ODEsMS4wMDA2NCwuOTk5NzMsLjk5OTQyLDEuMDAxMDEsMS4wMDA2MSwxLjAwMDI2LDEuMDAwNjksMS4wMDA2LDEuMDAwMTQsLjk5OTczLDEuMDEzMjIsLjk5OTczLDEuMDAwNjUsMS4wMDAyNiwxLjAwMDEyLC45OTkyMywxLDEuMDAwNjQsMS4wMDA3NiwuOTk5NDgsMS4wMDA1NSwxLjAwMDYzLDEuMDAwMDcsLjk5OTQzLDEuMDAwNiwuOTk5NDgsMS4wMDAyNiwuOTk5NDgsLjk5OTQzLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDI5LDEuMDAwMzgsMS4wMDAzNSwxLjAwMDAxLDEuMDAwNiwxLjAwMDYsLjk5OTczLC45OTk3OCwxLjAwMDAxLDEuMDAwNTcsLjk5OTg5LC45OTk2NywuOTk5NjQsLjk5OTY3LC45OTk3NywuOTk5OTksLjk5OTc3LDEuMDAwMzgsLjk5OTc3LDEuMDAwMDEsLjk5OTczLDEuMDAwNjYsLjk5OTY3LC45OTk2NywxLjAwMDQxLC45OTk5OCwuOTk5OTksLjk5OTc3LDEuMDAwMjIsLjk5OTY3LDEuMDAwMDEsLjk5OTc3LDEuMDAwMjYsLjk5OTY0LDEuMDAwMzEsMS4wMDAwMSwuOTk5OTksLjk5OTk5LDEsMS4wMDAyMywxLDEsLjk5OTk5LDEuMDAwMzUsMS4wMDAwMSwuOTk5OTksLjk5OTczLC45OTk3NywuOTk5OTksMS4wMDA1OCwuOTk5NzMsLjk5OTczLC45OTk1NSwuOTk5NSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAzMiwuOTk5ODksMS4wMDAzNCwuOTk5OTksMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsLjk5OTczLC40NTk5OCwuOTk5NzMsMS4wMDAyNiwuOTk5NzMsMS4wMDAwMSwuOTk5OTksLjk5OTgyLC45OTk5NCwuOTk5OTYsMSwxLjAwMDQyLDEuMDAwNDQsMS4wMDAyOSwxLjAwMDIzLC45OTk3MywuOTk5NzMsMS4wMDAyNiwuOTk5NDksMS4wMDAwMiwuOTk5NzMsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTc1LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDMyLC45ODY4NSwuOTk5NzMsMS4wMDAyNiwxLDEsLjk5OTY2LDEuMDAwNDQsMS4wMDAxNiwxLjAwMDIyLDEuMDAwMTYsMS4wMDAyMiwxLjAwMDE2LDEuMDAwMjIsMS4wMDAwMSwuOTk5NzMsMSwxLC45OTk3MywxLDEsLjk5OTU1LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLDEsMSwuOTk5NzMsLjk5OTczLC45OTk3MiwxLDEsMS4wMDEwNiwuOTk5OTksLjk5OTk4LC45OTk5OCwuOTk5OTksLjk5OTk4LDEuNjY0NzUsMSwuOTk5NzMsLjk5OTczLDEsLjk5OTczLC45OTk3MSwuOTk5NzgsMSwxLC45OTk5MSwuOTk5ODQsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDk4LDEsMSwxLDEuMDAwNDksMSwxLC45OTk3MiwxLDEuMjA5ODUsMS4zOTcxMywxLjAwMDAzLDEuMDAwMzEsMS4wMDAxNSwxLC45OTU2MSwxLjAwMDI3LDEuMDAwMzEsMS4wMDAzMSwuOTk5MTUsMS4wMDAzMSwxLjAwMDMxLC45OTk5OSwxLjAwMDAzLC45OTk5OSwuOTk5OTksMS40MTE0NCwxLjYsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQwNTc5LDEuNDA1NzksMS4zNjYyNSwuOTk5OTksMSwuOTk4NjEsLjk5ODYxLDEsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwuOTk5NzIsLjk5OTk5LC45OTk5OSwuOTk5OTksLjk5OTk5LDEuNDA0ODMsMSwuOTk5NzcsMS4wMDA1NCwxLDEsLjk5OTUzLC45OTk2MiwxLjAwMDQyLC45OTk1LDEsMSwxLDEsMSwxLDEsMSwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSxUYT17bGluZUhlaWdodDoxLjM1LGxpbmVHYXA6LjJ9LEthPVsuNzYxMTYsMSwxLDEuMDAwNiwxLjAwMDYsMS4wMDAwNiwuOTk5NzMsLjk5OTczLC45OTk4MiwxLjAwMDAxLDEuMDAwNDMsLjk5OTk4LC45OTk5OCwuOTk5NTksMS4wMDAwMywxLjAwMDYsLjk5OTk4LDEuMDAwNiwxLjAwMDYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwNiwxLDEuMDAwMDMsMS4wMDAwMywxLjAwMDAzLC45OTk3MywuOTk5ODcsMS4wMDAwMSwxLjAwMDAxLC45OTk3NywuOTk5NzcsMS4wMDAwMSwxLjAwMDI2LDEuMDAwMjIsLjk5OTc3LDEuMDAwNiwxLDEuMDAwMDEsLjk5OTczLC45OTk5OSwuOTk5NzcsMS4wMDAyMiwxLjAwMDAxLDEuMDAwMjIsLjk5OTc3LDEuMDAwMDEsMS4wMDAyNiwuOTk5NzcsMS4wMDAwMSwxLjAwMDE2LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDI2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk0OSwuOTk5NzMsLjk5OTk4LC45OTk3MywuOTk5NzMsMSwuOTk5NzMsLjk5OTczLDEuMDAwNiwuOTk5NzMsLjk5OTczLC45OTkyNCwuOTk5MjQsMSwuOTk5MjQsLjk5OTk5LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5OTgsMSwxLjAwMDYsLjk5OTczLDEsLjk5OTc3LDEsMSwxLDEuMDAwMDUsMS4wMDA5LDEuMDAwMDUsMS4wMDAwMywuOTk5OTgsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwOSwuOTk5NzMsLjk5OTk4LDEuMDAwMjUsLjk5OTY4LC45OTk3MywxLjAwMDAzLDEuMDAwMjUsLjYwMjk5LDEuMDAwMjQsMS4wNjQwOSwxLDEsLjk5OTk4LDEsLjk5OTgsMS4wMDA2LC45OTk5OCwxLC45OTkzNiwuOTk5NzMsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMS4wMDAyNiwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLC45OTk3NywxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5NzcsLjk5OTc3LDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDAzLDEuMDAwMjIsLjk5OTc3LC45OTk3NywuOTk5NzcsLjk5OTc3LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDI2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk4MiwxLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDY0MDksMS4wMDAyNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMSwuOTk5NzMsMSwxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywuOTk5NzcsMSwuOTk5NzcsMSwuOTk5NzcsMSwuOTk5NzcsMSwuOTk5NzcsMS4wMjg4LC45OTk3NywuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAyMiwuOTk5NzMsMS4wMDAyMiwuOTk5NzMsMS4wMDAyMiwuOTk5NzMsMS4wMDAyMiwuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5MjQsMS4wMDA2LDEuMDAwNiwuOTk5NDYsMS4wMDAzNCwxLC45OTkyNCwxLjAwMDAxLDEsMSwuOTk5NzMsLjk5OTI0LC45OTk3MywuOTk5MjQsLjk5OTczLDEuMDYzMTEsLjk5OTczLDEuMDAwMjQsLjk5OTczLC45OTkyNCwuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywxLjAwMDQxLC45OTk4LC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywxLDEuMDAwMTYsLjk5OTc3LC45OTk5OCwuOTk5NzcsLjk5OTk4LC45OTk3NywuOTk5OTgsMS4wMDAwMSwxLDEuMDAwMDEsMSwxLjAwMDAxLDEsMS4wMDAwMSwxLDEuMDAwMjYsMS4wMDA2LDEuMDAwMjYsLjg5NTQ3LDEuMDAwMjYsMS4wMDA2LC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLDEuMDAwMTYsLjk5OTc3LDEuMDAwMDEsMSwxLjAwMDAxLDEuMDAwMjYsMSwxLjAwMDI2LDEsMS4wMDAyNiwxLC45OTkyNCwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMSwuOTk5ODIsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMDEsMSwxLjAwMDI2LDEuMDAwNiwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LDEuMDAwMDEsMSwxLjAwMDU0LC45OTk3NywxLjAwMDg0LDEuMDAwMDcsLjk5OTczLDEuMDAwMTMsLjk5OTI0LDEuMDAwMDEsMS4wMDAwMSwuOTk5NDUsLjkxMjIxLDEuMDAwMDEsMS4wMDAyNiwuOTk5NzcsMS4wMDAyMiwxLjAwMDYsMS4wMDAwMSwxLjAwMDAxLC45OTk5OSwuOTk5NzcsLjk5OTMzLDEuMDAwMjIsMS4wMDA1NCwxLjAwMDAxLDEuMDAwNjUsMS4wMDAyNiwxLjAwMDAxLDEuMDAwMSwxLjAwMDAxLDEuMDAwNTIsMSwxLjAwMDYsMS4wMDAwMSwuOTk5NDUsLjk5ODk3LC45OTk2OCwuOTk5MjQsMS4wMDAzNiwuOTk5NDUsLjk5OTQ5LDEsMS4wMDA2LC45OTg5NywuOTk5MTgsLjk5OTY4LC45OTkxMSwuOTk5MjQsMSwuOTk5NjIsMS4wMTQ4NywxLDEuMDAwNSwuOTk5NzMsMS4wMDAxMiwxLjAwMDQzLDEsLjk5OTk1LC45OTk5NCwxLjAwMDM2LC45OTk0NywxLjAwMDE5LDEuMDAwNjMsMS4wMDAyNSwuOTk5MjQsMS4wMDAzNiwuOTk5NzMsMS4wMDAzNiwxLjAwMDI1LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDI3LDEuMDAwMSwxLjAwMDY4LDEuMDAwMDEsMS4wMDA2LDEuMDAwNiwxLDEuMDAwMDgsLjk5OTU3LC45OTk3MiwuOTk5NCwuOTk5NTQsLjk5OTc1LDEuMDAwNTEsMS4wMDAwMSwxLjAwMDE5LDEuMDAwMDEsMS4wMDAxLC45OTk4NiwxLjAwMDAxLDEuMDAwMDEsMS4wMDAzOCwuOTk5NTQsLjk5OTU0LC45OTk0LDEuMDAwNjYsLjk5OTk5LC45OTk3NywxLjAwMDIyLDEuMDAwNTQsMS4wMDAwMSwuOTk5NzcsMS4wMDAyNiwuOTk5NzUsMS4wMDAxLDEuMDAwMDEsLjk5OTkzLC45OTk1LC45OTk1NSwxLjAwMDE2LC45OTk3OCwuOTk5NzQsMS4wMDAxOSwxLjAwMDIyLC45OTk1NSwxLjAwMDUzLC45OTk3MywxLjAwMDg5LDEuMDAwMDUsLjk5OTY3LDEuMDAwNDgsLjk5OTczLDEuMDAwMDIsMS4wMDAzNCwuOTk5NzMsLjk5OTczLC45OTk2NCwxLjAwMDA2LDEuMDAwNjYsLjk5OTQ3LC45OTk3MywuOTg4OTQsLjk5OTczLDEsLjQ0ODk4LDEsLjk5OTQ2LDEsMS4wMDAzOSwxLjAwMDgyLC45OTk5MSwuOTk5OTEsLjk5OTg1LDEuMDAwMjIsMS4wMDAyMywxLjAwMDYxLDEuMDAwMDYsLjk5OTY2LC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwMTksMS4wMDA4LDEsLjk5OTI0LC45OTkyNCwuOTk5MjQsLjk5OTgzLDEuMDAwNDQsLjk5OTczLC45OTk2NCwuOTgzMzIsMSwuOTk5NzMsMSwxLC45OTk2MiwuOTk4OTUsMS4wMDAxNiwuOTk5NzcsMS4wMDAxNiwuOTk5NzcsMS4wMDAxNiwuOTk5NzcsMS4wMDAwMSwxLDEsMSwuOTk5NzMsMSwxLC45OTk1NSwuOTk5MjQsLjk5OTI0LC45OTkyNCwuOTk5MjQsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTczLC45OTk3MywuOTk5NzIsMSwxLDEuMDAyNjcsLjk5OTk5LC45OTk5OCwuOTk5OTgsMSwuOTk5OTgsMS42NjQ3NSwxLC45OTk3MywuOTk5NzMsMS4wMDAyMywuOTk5NzMsMS4wMDQyMywuOTk5MjUsLjk5OTk5LDEsLjk5OTkxLC45OTk4NCwxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwNDksMSwxLjAwMjQ1LDEsMSwxLDEsLjk2MzI5LDEsMS4yMDk4NSwxLjM5NzEzLDEuMDAwMDMsLjgyNTQsMS4wMDAxNSwxLDEuMDAwMzUsMS4wMDAyNywxLjAwMDMxLDEuMDAwMzEsMS4wMDAwMywxLjAwMDMxLDEuMDAwMzEsLjk5OTk5LDEuMDAwMDMsLjk5OTk5LC45OTk5OSwxLjQxMTQ0LDEuNiwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDA1NzksMS40MDU3OSwxLjM2NjI1LC45OTk5OSwxLC45OTg2MSwuOTk4NjEsMSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LC45NTMxNywuOTk5OTksLjk5OTk5LC45OTk5OSwuOTk5OTksMS40MDQ4MywxLC45OTk3NywxLjAwMDU0LDEsMSwuOTk5NTMsLjk5OTYyLDEuMDAwNDIsLjk5OTUsMSwxLDEsMSwxLDEsMSwxLC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLHFhPXtsaW5lSGVpZ2h0OjEuMzUsbGluZUdhcDouMn0sT2E9Wy43NjExNiwxLDEsMS4wMDA2LDEuMDAwNiwxLjAwMDA2LC45OTk3MywuOTk5NzMsLjk5OTgyLDEuMDAwMDEsMS4wMDA0MywuOTk5OTgsLjk5OTk4LC45OTk1OSwxLjAwMDAzLDEuMDAwNiwuOTk5OTgsMS4wMDA2LDEuMDAwNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA2LDEsMS4wMDAwMywxLjAwMDAzLDEuMDAwMDMsLjk5OTczLC45OTk4NywxLjAwMDAxLDEuMDAwMDEsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMjYsMS4wMDAyMiwuOTk5NzcsMS4wMDA2LDEsMS4wMDAwMSwuOTk5NzMsLjk5OTk5LC45OTk3NywxLjAwMDIyLDEuMDAwMDEsMS4wMDAyMiwuOTk5NzcsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDAxLDEuMDAwMTYsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTQ5LC45OTk3MywuOTk5OTgsLjk5OTczLC45OTk3MywxLC45OTk3MywuOTk5NzMsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTI0LC45OTkyNCwxLC45OTkyNCwuOTk5OTksLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk5OCwxLDEuMDAwNiwuOTk5NzMsMSwuOTk5NzcsMSwxLDEsMS4wMDAwNSwxLjAwMDksMS4wMDAwNSwxLjAwMDAzLC45OTk5OCwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA5LC45OTk3MywuOTk5OTgsMS4wMDAyNSwuOTk5NjgsLjk5OTczLDEuMDAwMDMsMS4wMDAyNSwuNjAyOTksMS4wMDAyNCwxLjA2NDA5LDEsMSwuOTk5OTgsMSwuOTk5OCwxLjAwMDYsLjk5OTk4LDEsLjk5OTM2LC45OTk3MywxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDI2LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEsLjk5OTc3LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3NywuOTk5NzcsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMDMsMS4wMDAyMiwuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTgyLDEsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wNjQwOSwxLjAwMDI2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLC45OTk3MywxLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLC45OTk3NywxLC45OTk3NywxLC45OTk3NywxLC45OTk3NywxLC45OTk3NywxLjA0NTk2LC45OTk3NywuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAyMiwuOTk5NzMsMS4wMDAyMiwuOTk5NzMsMS4wMDAyMiwuOTk5NzMsMS4wMDAyMiwuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5MjQsMS4wMDA2LDEuMDAwNiwxLjAwMDE5LDEuMDAwMzQsMSwuOTk5MjQsMS4wMDAwMSwxLDEsLjk5OTczLC45OTkyNCwuOTk5NzMsLjk5OTI0LC45OTk3MywxLjAyNTcyLC45OTk3MywxLjAwMDA1LC45OTk3MywuOTk5MjQsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTk5LC45OTk4LC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywxLDEuMDAwMTYsLjk5OTc3LC45OTk5OCwuOTk5NzcsLjk5OTk4LC45OTk3NywuOTk5OTgsMS4wMDAwMSwxLDEuMDAwMDEsMSwxLjAwMDAxLDEsMS4wMDAwMSwxLDEuMDAwMjYsMS4wMDA2LDEuMDAwMjYsLjg0NTMzLDEuMDAwMjYsMS4wMDA2LC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLDEuMDAwMTYsLjk5OTc3LDEuMDAwMDEsMSwxLjAwMDAxLDEuMDAwMjYsMSwxLjAwMDI2LDEsMS4wMDAyNiwxLC45OTkyNCwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMSwuOTk5ODIsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMDEsMSwxLjAwMDI2LDEuMDAwNiwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTkyOCwxLC45OTk3NywxLjAwMDEzLDEuMDAwNTUsLjk5OTQ3LC45OTk0NSwuOTk5NDEsLjk5OTI0LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDQsLjkxNjIxLDEuMDAwMDEsMS4wMDAyNiwuOTk5NzcsMS4wMDAyMiwxLjAwMDYsMS4wMDAwMSwxLjAwMDA1LC45OTk5OSwuOTk5NzcsMS4wMDAxNSwxLjAwMDIyLC45OTk3NywxLjAwMDAxLC45OTk3MywxLjAwMDI2LDEuMDAwMDEsMS4wMDAxOSwxLjAwMDAxLC45OTk0NiwxLDEuMDAwNiwxLjAwMDAxLC45OTk3OCwxLjAwMDQ1LC45OTk3MywuOTk5MjQsMS4wMDAyMywuOTk5NzgsLjk5OTY2LDEsMS4wMDA2NSwxLjAwMDQ1LDEuMDAwMTksLjk5OTczLC45OTk3MywuOTk5MjQsMSwxLC45NjQ5OSwxLDEuMDAwNTUsLjk5OTczLDEuMDAwMDgsMS4wMDAyNywxLC45OTk3LC45OTk5NSwxLjAwMDIzLC45OTkzMywxLjAwMDE5LDEuMDAwMTUsMS4wMDAzMSwuOTk5MjQsMS4wMDAyMywuOTk5NzMsMS4wMDAyMywxLjAwMDMxLDEuMDAwMDEsLjk5OTI4LDEuMDAwMjksMS4wMDA5MiwxLjAwMDM1LDEuMDAwMDEsMS4wMDA2LDEuMDAwNiwxLC45OTk4OCwuOTk5NzUsMSwxLjAwMDgyLC45OTU2MSwuOTk5NiwxLjAwMDM1LDEuMDAwMDEsLjk5OTYyLDEuMDAwMDEsMS4wMDA5MiwuOTk5NjQsMS4wMDAwMSwuOTk5NjMsLjk5OTk5LDEuMDAwMzUsMS4wMDAzNSwxLjAwMDgyLC45OTk2MiwuOTk5OTksLjk5OTc3LDEuMDAwMjIsMS4wMDAzNSwxLjAwMDAxLC45OTk3NywxLjAwMDI2LC45OTk2LC45OTk2NywxLjAwMDAxLDEuMDAwMzQsMS4wMDA3NCwxLjAwMDU0LDEuMDAwNTMsMS4wMDA2MywuOTk5NzEsLjk5OTYyLDEuMDAwMzUsLjk5OTc1LC45OTk3NywuOTk5NzMsMS4wMDA0MywuOTk5NTMsMS4wMDA3LC45OTkxNSwuOTk5NzMsMS4wMDAwOCwuOTk4OTIsMS4wMDA3MywxLjAwMDczLDEuMDAxMTQsLjk5OTE1LDEuMDAwNzMsLjk5OTU1LC45OTk3MywxLjAwMDkyLC45OTk3MywxLC45OTk5OCwxLDEuMDAwMywxLDEuMDAwNDMsMS4wMDAwMSwuOTk5NjksMS4wMDAzLDEsMS4wMDAzNSwxLjAwMDAxLC45OTk1LDEsMS4wMDA5MiwuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDcsLjk5OTUsMSwuOTk5MjQsMS4wMDA2LC45OTkyNCwuOTk5NzIsMS4wMDA2MiwuOTk5NzMsMS4wMDExNCwxLjAwMDczLDEsLjk5OTU1LDEsMSwxLjAwMDQ3LC45OTk2OCwxLjAwMDE2LC45OTk3NywxLjAwMDE2LC45OTk3NywxLjAwMDE2LC45OTk3NywxLjAwMDAxLDEsMSwxLC45OTk3MywxLDEsLjk5OTU1LC45OTkyNCwuOTk5MjQsLjk5OTI0LC45OTkyNCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5NzMsLjk5OTczLC45OTk3MiwxLDEsMS4wMDI2NywuOTk5OTksLjk5OTk4LC45OTk5OCwxLC45OTk5OCwxLjY2NDc1LDEsLjk5OTczLC45OTk3MywxLjAwMDIzLC45OTk3MywuOTk5NzEsLjk5OTI1LDEuMDAwMjMsMSwuOTk5OTEsLjk5OTg0LDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMSwxLDEsMSwxLDEsMSwuOTYzMjksMSwxLjIwOTg1LDEuMzk3MTMsMS4wMDAwMywuODI1NCwxLjAwMDE1LDEsMS4wMDAzNSwxLjAwMDI3LDEuMDAwMzEsMS4wMDAzMSwuOTk5MTUsMS4wMDAzMSwxLjAwMDMxLC45OTk5OSwxLjAwMDAzLC45OTk5OSwuOTk5OTksMS40MTE0NCwxLjYsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQwNTc5LDEuNDA1NzksMS4zNjYyNSwuOTk5OTksMSwuOTk4NjEsLjk5ODYxLDEsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwuOTUzMTcsLjk5OTk5LC45OTk5OSwuOTk5OTksLjk5OTk5LDEuNDA0ODMsMSwuOTk5NzcsMS4wMDA1NCwxLDEsLjk5OTUzLC45OTk2MiwxLjAwMDQyLC45OTk1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sUGE9e2xpbmVIZWlnaHQ6MS4yLGxpbmVHYXA6LjJ9LFdhPVszNjUsMCwzMzMsMjc4LDMzMyw0NzQsNTU2LDU1Niw4ODksNzIyLDIzOCwzMzMsMzMzLDM4OSw1ODQsMjc4LDMzMywyNzgsMjc4LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1NiwzMzMsMzMzLDU4NCw1ODQsNTg0LDYxMSw5NzUsNzIyLDcyMiw3MjIsNzIyLDY2Nyw2MTEsNzc4LDcyMiwyNzgsNTU2LDcyMiw2MTEsODMzLDcyMiw3NzgsNjY3LDc3OCw3MjIsNjY3LDYxMSw3MjIsNjY3LDk0NCw2NjcsNjY3LDYxMSwzMzMsMjc4LDMzMyw1ODQsNTU2LDMzMyw1NTYsNjExLDU1Niw2MTEsNTU2LDMzMyw2MTEsNjExLDI3OCwyNzgsNTU2LDI3OCw4ODksNjExLDYxMSw2MTEsNjExLDM4OSw1NTYsMzMzLDYxMSw1NTYsNzc4LDU1Niw1NTYsNTAwLDM4OSwyODAsMzg5LDU4NCwzMzMsNTU2LDU1Niw1NTYsNTU2LDI4MCw1NTYsMzMzLDczNywzNzAsNTU2LDU4NCw3MzcsNTUyLDQwMCw1NDksMzMzLDMzMywzMzMsNTc2LDU1NiwyNzgsMzMzLDMzMywzNjUsNTU2LDgzNCw4MzQsODM0LDYxMSw3MjIsNzIyLDcyMiw3MjIsNzIyLDcyMiwxZTMsNzIyLDY2Nyw2NjcsNjY3LDY2NywyNzgsMjc4LDI3OCwyNzgsNzIyLDcyMiw3NzgsNzc4LDc3OCw3NzgsNzc4LDU4NCw3NzgsNzIyLDcyMiw3MjIsNzIyLDY2Nyw2NjcsNjExLDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDg4OSw1NTYsNTU2LDU1Niw1NTYsNTU2LDI3OCwyNzgsMjc4LDI3OCw2MTEsNjExLDYxMSw2MTEsNjExLDYxMSw2MTEsNTQ5LDYxMSw2MTEsNjExLDYxMSw2MTEsNTU2LDYxMSw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNzE5LDcyMiw2MTEsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDc3OCw2MTEsNzc4LDYxMSw3NzgsNjExLDc3OCw2MTEsNzIyLDYxMSw3MjIsNjExLDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCw3ODUsNTU2LDU1NiwyNzgsNzIyLDU1Niw1NTYsNjExLDI3OCw2MTEsMjc4LDYxMSwzODUsNjExLDQ3OSw2MTEsMjc4LDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDcwOCw3MjMsNjExLDc3OCw2MTEsNzc4LDYxMSw3NzgsNjExLDFlMyw5NDQsNzIyLDM4OSw3MjIsMzg5LDcyMiwzODksNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2MTEsMzMzLDYxMSw0NzksNjExLDMzMyw3MjIsNjExLDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsNzIyLDYxMSw5NDQsNzc4LDY2Nyw1NTYsNjY3LDYxMSw1MDAsNjExLDUwMCw2MTEsNTAwLDI3OCw1NTYsNzIyLDU1NiwxZTMsODg5LDc3OCw2MTEsNjY3LDU1Niw2MTEsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMyw0NjUsNzIyLDMzMyw4NTMsOTA2LDQ3NCw4MjUsOTI3LDgzOCwyNzgsNzIyLDcyMiw2MDEsNzE5LDY2Nyw2MTEsNzIyLDc3OCwyNzgsNzIyLDY2Nyw4MzMsNzIyLDY0NCw3NzgsNzIyLDY2Nyw2MDAsNjExLDY2Nyw4MjEsNjY3LDgwOSw4MDIsMjc4LDY2Nyw2MTUsNDUxLDYxMSwyNzgsNTgyLDYxNSw2MTAsNTU2LDYwNiw0NzUsNDYwLDYxMSw1NDEsMjc4LDU1OCw1NTYsNjEyLDU1Niw0NDUsNjExLDc2Niw2MTksNTIwLDY4NCw0NDYsNTgyLDcxNSw1NzYsNzUzLDg0NSwyNzgsNTgyLDYxMSw1ODIsODQ1LDY2Nyw2NjksODg1LDU2Nyw3MTEsNjY3LDI3OCwyNzYsNTU2LDEwOTQsMTA2Miw4NzUsNjEwLDcyMiw2MjIsNzE5LDcyMiw3MTksNzIyLDU2Nyw3MTIsNjY3LDkwNCw2MjYsNzE5LDcxOSw2MTAsNzAyLDgzMyw3MjIsNzc4LDcxOSw2NjcsNzIyLDYxMSw2MjIsODU0LDY2Nyw3MzAsNzAzLDEwMDUsMTAxOSw4NzAsOTc5LDcxOSw3MTEsMTAzMSw3MTksNTU2LDYxOCw2MTUsNDE3LDYzNSw1NTYsNzA5LDQ5Nyw2MTUsNjE1LDUwMCw2MzUsNzQwLDYwNCw2MTEsNjA0LDYxMSw1NTYsNDkwLDU1Niw4NzUsNTU2LDYxNSw1ODEsODMzLDg0NCw3MjksODU0LDYxNSw1NTIsODU0LDU4Myw1NTYsNTU2LDYxMSw0MTcsNTUyLDU1NiwyNzgsMjgxLDI3OCw5NjksOTA2LDYxMSw1MDAsNjE1LDU1Niw2MDQsNzc4LDYxMSw0ODcsNDQ3LDk0NCw3NzgsOTQ0LDc3OCw5NDQsNzc4LDY2Nyw1NTYsMzMzLDMzMyw1NTYsMWUzLDFlMyw1NTIsMjc4LDI3OCwyNzgsMjc4LDUwMCw1MDAsNTAwLDU1Niw1NTYsMzUwLDFlMywxZTMsMjQwLDQ3OSwzMzMsMzMzLDYwNCwzMzMsMTY3LDM5Niw1NTYsNTU2LDEwOTQsNTU2LDg4NSw0ODksMTExNSwxZTMsNzY4LDYwMCw4MzQsODM0LDgzNCw4MzQsMWUzLDUwMCwxZTMsNTAwLDFlMyw1MDAsNTAwLDQ5NCw2MTIsODIzLDcxMyw1ODQsNTQ5LDcxMyw5NzksNzIyLDI3NCw1NDksNTQ5LDU4Myw1NDksNTQ5LDYwNCw1ODQsNjA0LDYwNCw3MDgsNjI1LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcyOSw2MDQsNjA0LDM1NCwzNTQsMWUzLDk5MCw5OTAsOTkwLDk5MCw0OTQsNjA0LDYwNCw2MDQsNjA0LDM1NCwxMDIxLDEwNTIsOTE3LDc1MCw3NTAsNTMxLDY1Niw1OTQsNTEwLDUwMCw3NTAsNzUwLDYxMSw2MTEsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywyMjIsMjIyLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzNdLGphPVstMSwtMSwtMSwzMiwzMywzNCwzNSwzNiwzNywzOCwzOSw0MCw0MSw0Miw0Myw0NCw0NSw0Niw0Nyw0OCw0OSw1MCw1MSw1Miw1Myw1NCw1NSw1Niw1Nyw1OCw1OSw2MCw2MSw2Miw2Myw2NCw2NSw2Niw2Nyw2OCw2OSw3MCw3MSw3Miw3Myw3NCw3NSw3Niw3Nyw3OCw3OSw4MCw4MSw4Miw4Myw4NCw4NSw4Niw4Nyw4OCw4OSw5MCw5MSw5Miw5Myw5NCw5NSw5Niw5Nyw5OCw5OSwxMDAsMTAxLDEwMiwxMDMsMTA0LDEwNSwxMDYsMTA3LDEwOCwxMDksMTEwLDExMSwxMTIsMTEzLDExNCwxMTUsMTE2LDExNywxMTgsMTE5LDEyMCwxMjEsMTIyLDEyMywxMjQsMTI1LDEyNiwxNjEsMTYyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSwxNzAsMTcxLDE3MiwxNzQsMTc1LDE3NiwxNzcsMTc4LDE3OSwxODAsMTgxLDE4MiwxODMsMTg0LDE4NSwxODYsMTg3LDE4OCwxODksMTkwLDE5MSwxOTIsMTkzLDE5NCwxOTUsMTk2LDE5NywxOTgsMTk5LDIwMCwyMDEsMjAyLDIwMywyMDQsMjA1LDIwNiwyMDcsMjA4LDIwOSwyMTAsMjExLDIxMiwyMTMsMjE0LDIxNSwyMTYsMjE3LDIxOCwyMTksMjIwLDIyMSwyMjIsMjIzLDIyNCwyMjUsMjI2LDIyNywyMjgsMjI5LDIzMCwyMzEsMjMyLDIzMywyMzQsMjM1LDIzNiwyMzcsMjM4LDIzOSwyNDAsMjQxLDI0MiwyNDMsMjQ0LDI0NSwyNDYsMjQ3LDI0OCwyNDksMjUwLDI1MSwyNTIsMjUzLDI1NCwyNTUsMjU2LDI1NywyNTgsMjU5LDI2MCwyNjEsMjYyLDI2MywyNjQsMjY1LDI2NiwyNjcsMjY4LDI2OSwyNzAsMjcxLDI3MiwyNzMsMjc0LDI3NSwyNzYsMjc3LDI3OCwyNzksMjgwLDI4MSwyODIsMjgzLDI4NCwyODUsMjg2LDI4NywyODgsMjg5LDI5MCwyOTEsMjkyLDI5MywyOTQsMjk1LDI5NiwyOTcsMjk4LDI5OSwzMDAsMzAxLDMwMiwzMDMsMzA0LDMwNSwzMDYsMzA3LDMwOCwzMDksMzEwLDMxMSwzMTIsMzEzLDMxNCwzMTUsMzE2LDMxNywzMTgsMzE5LDMyMCwzMjEsMzIyLDMyMywzMjQsMzI1LDMyNiwzMjcsMzI4LDMyOSwzMzAsMzMxLDMzMiwzMzMsMzM0LDMzNSwzMzYsMzM3LDMzOCwzMzksMzQwLDM0MSwzNDIsMzQzLDM0NCwzNDUsMzQ2LDM0NywzNDgsMzQ5LDM1MCwzNTEsMzUyLDM1MywzNTQsMzU1LDM1NiwzNTcsMzU4LDM1OSwzNjAsMzYxLDM2MiwzNjMsMzY0LDM2NSwzNjYsMzY3LDM2OCwzNjksMzcwLDM3MSwzNzIsMzczLDM3NCwzNzUsMzc2LDM3NywzNzgsMzc5LDM4MCwzODEsMzgyLDM4Myw0MDIsNTA2LDUwNyw1MDgsNTA5LDUxMCw1MTEsNTM2LDUzNyw1MzgsNTM5LDcxMCw3MTEsNzEzLDcyOCw3MjksNzMwLDczMSw3MzIsNzMzLDkwMCw5MDEsOTAyLDkwMyw5MDQsOTA1LDkwNiw5MDgsOTEwLDkxMSw5MTIsOTEzLDkxNCw5MTUsOTE2LDkxNyw5MTgsOTE5LDkyMCw5MjEsOTIyLDkyMyw5MjQsOTI1LDkyNiw5MjcsOTI4LDkyOSw5MzEsOTMyLDkzMyw5MzQsOTM1LDkzNiw5MzcsOTM4LDkzOSw5NDAsOTQxLDk0Miw5NDMsOTQ0LDk0NSw5NDYsOTQ3LDk0OCw5NDksOTUwLDk1MSw5NTIsOTUzLDk1NCw5NTUsOTU2LDk1Nyw5NTgsOTU5LDk2MCw5NjEsOTYyLDk2Myw5NjQsOTY1LDk2Niw5NjcsOTY4LDk2OSw5NzAsOTcxLDk3Miw5NzMsOTc0LDEwMjQsMTAyNSwxMDI2LDEwMjcsMTAyOCwxMDI5LDEwMzAsMTAzMSwxMDMyLDEwMzMsMTAzNCwxMDM1LDEwMzYsMTAzNywxMDM4LDEwMzksMTA0MCwxMDQxLDEwNDIsMTA0MywxMDQ0LDEwNDUsMTA0NiwxMDQ3LDEwNDgsMTA0OSwxMDUwLDEwNTEsMTA1MiwxMDUzLDEwNTQsMTA1NSwxMDU2LDEwNTcsMTA1OCwxMDU5LDEwNjAsMTA2MSwxMDYyLDEwNjMsMTA2NCwxMDY1LDEwNjYsMTA2NywxMDY4LDEwNjksMTA3MCwxMDcxLDEwNzIsMTA3MywxMDc0LDEwNzUsMTA3NiwxMDc3LDEwNzgsMTA3OSwxMDgwLDEwODEsMTA4MiwxMDgzLDEwODQsMTA4NSwxMDg2LDEwODcsMTA4OCwxMDg5LDEwOTAsMTA5MSwxMDkyLDEwOTMsMTA5NCwxMDk1LDEwOTYsMTA5NywxMDk4LDEwOTksMTEwMCwxMTAxLDExMDIsMTEwMywxMTA0LDExMDUsMTEwNiwxMTA3LDExMDgsMTEwOSwxMTEwLDExMTEsMTExMiwxMTEzLDExMTQsMTExNSwxMTE2LDExMTcsMTExOCwxMTE5LDExMzgsMTEzOSwxMTY4LDExNjksNzgwOCw3ODA5LDc4MTAsNzgxMSw3ODEyLDc4MTMsNzkyMiw3OTIzLDgyMDgsODIwOSw4MjExLDgyMTIsODIxMyw4MjE1LDgyMTYsODIxNyw4MjE4LDgyMTksODIyMCw4MjIxLDgyMjIsODIyNCw4MjI1LDgyMjYsODIzMCw4MjQwLDgyNDIsODI0Myw4MjQ5LDgyNTAsODI1Miw4MjU0LDgyNjAsODMxOSw4MzU1LDgzNTYsODM1OSw4MzY0LDg0NTMsODQ2Nyw4NDcwLDg0ODIsODQ4Niw4NDk0LDg1MzksODU0MCw4NTQxLDg1NDIsODU5Miw4NTkzLDg1OTQsODU5NSw4NTk2LDg1OTcsODYxNiw4NzA2LDg3MTAsODcxOSw4NzIxLDg3MjIsODczMCw4NzM0LDg3MzUsODc0NSw4NzQ3LDg3NzYsODgwMCw4ODAxLDg4MDQsODgwNSw4OTYyLDg5NzYsODk5Miw4OTkzLDk0NzIsOTQ3NCw5NDg0LDk0ODgsOTQ5Miw5NDk2LDk1MDAsOTUwOCw5NTE2LDk1MjQsOTUzMiw5NTUyLDk1NTMsOTU1NCw5NTU1LDk1NTYsOTU1Nyw5NTU4LDk1NTksOTU2MCw5NTYxLDk1NjIsOTU2Myw5NTY0LDk1NjUsOTU2Niw5NTY3LDk1NjgsOTU2OSw5NTcwLDk1NzEsOTU3Miw5NTczLDk1NzQsOTU3NSw5NTc2LDk1NzcsOTU3OCw5NTc5LDk1ODAsOTYwMCw5NjA0LDk2MDgsOTYxMiw5NjE2LDk2MTcsOTYxOCw5NjE5LDk2MzIsOTYzMyw5NjQyLDk2NDMsOTY0NCw5NjUwLDk2NTgsOTY2MCw5NjY4LDk2NzQsOTY3NSw5Njc5LDk2ODgsOTY4OSw5NzAyLDk3ODYsOTc4Nyw5Nzg4LDk3OTIsOTc5NCw5ODI0LDk4MjcsOTgyOSw5ODMwLDk4MzQsOTgzNSw5ODM2LDYxNDQxLDYxNDQyLDYxNDQ1LC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xXSxYYT1bMzY1LDAsMzMzLDI3OCwzMzMsNDc0LDU1Niw1NTYsODg5LDcyMiwyMzgsMzMzLDMzMywzODksNTg0LDI3OCwzMzMsMjc4LDI3OCw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsMzMzLDMzMyw1ODQsNTg0LDU4NCw2MTEsOTc1LDcyMiw3MjIsNzIyLDcyMiw2NjcsNjExLDc3OCw3MjIsMjc4LDU1Niw3MjIsNjExLDgzMyw3MjIsNzc4LDY2Nyw3NzgsNzIyLDY2Nyw2MTEsNzIyLDY2Nyw5NDQsNjY3LDY2Nyw2MTEsMzMzLDI3OCwzMzMsNTg0LDU1NiwzMzMsNTU2LDYxMSw1NTYsNjExLDU1NiwzMzMsNjExLDYxMSwyNzgsMjc4LDU1NiwyNzgsODg5LDYxMSw2MTEsNjExLDYxMSwzODksNTU2LDMzMyw2MTEsNTU2LDc3OCw1NTYsNTU2LDUwMCwzODksMjgwLDM4OSw1ODQsMzMzLDU1Niw1NTYsNTU2LDU1NiwyODAsNTU2LDMzMyw3MzcsMzcwLDU1Niw1ODQsNzM3LDU1Miw0MDAsNTQ5LDMzMywzMzMsMzMzLDU3Niw1NTYsMjc4LDMzMywzMzMsMzY1LDU1Niw4MzQsODM0LDgzNCw2MTEsNzIyLDcyMiw3MjIsNzIyLDcyMiw3MjIsMWUzLDcyMiw2NjcsNjY3LDY2Nyw2NjcsMjc4LDI3OCwyNzgsMjc4LDcyMiw3MjIsNzc4LDc3OCw3NzgsNzc4LDc3OCw1ODQsNzc4LDcyMiw3MjIsNzIyLDcyMiw2NjcsNjY3LDYxMSw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw4ODksNTU2LDU1Niw1NTYsNTU2LDU1NiwyNzgsMjc4LDI3OCwyNzgsNjExLDYxMSw2MTEsNjExLDYxMSw2MTEsNjExLDU0OSw2MTEsNjExLDYxMSw2MTEsNjExLDU1Niw2MTEsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDc0MCw3MjIsNjExLDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw3NzgsNjExLDc3OCw2MTEsNzc4LDYxMSw3NzgsNjExLDcyMiw2MTEsNzIyLDYxMSwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsNzgyLDU1Niw1NTYsMjc4LDcyMiw1NTYsNTU2LDYxMSwyNzgsNjExLDI3OCw2MTEsMzk2LDYxMSw0NzksNjExLDI3OCw3MjIsNjExLDcyMiw2MTEsNzIyLDYxMSw3MDgsNzIzLDYxMSw3NzgsNjExLDc3OCw2MTEsNzc4LDYxMSwxZTMsOTQ0LDcyMiwzODksNzIyLDM4OSw3MjIsMzg5LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjExLDMzMyw2MTEsNDc5LDYxMSwzMzMsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsOTQ0LDc3OCw2NjcsNTU2LDY2Nyw2MTEsNTAwLDYxMSw1MDAsNjExLDUwMCwyNzgsNTU2LDcyMiw1NTYsMWUzLDg4OSw3NzgsNjExLDY2Nyw1NTYsNjExLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDcyMiwzMzMsODU0LDkwNiw0NzMsODQ0LDkzMCw4NDcsMjc4LDcyMiw3MjIsNjEwLDY3MSw2NjcsNjExLDcyMiw3NzgsMjc4LDcyMiw2NjcsODMzLDcyMiw2NTcsNzc4LDcxOCw2NjcsNTkwLDYxMSw2NjcsODIyLDY2Nyw4MjksNzgxLDI3OCw2NjcsNjIwLDQ3OSw2MTEsMjc4LDU5MSw2MjAsNjIxLDU1Niw2MTAsNDc5LDQ5Miw2MTEsNTU4LDI3OCw1NjYsNTU2LDYwMyw1NTYsNDUwLDYxMSw3MTIsNjA1LDUzMiw2NjQsNDA5LDU5MSw3MDQsNTc4LDc3Myw4MzQsMjc4LDU5MSw2MTEsNTkxLDgzNCw2NjcsNjY3LDg4Niw2MTQsNzE5LDY2NywyNzgsMjc4LDU1NiwxMDk0LDEwNDIsODU0LDYyMiw3MTksNjc3LDcxOSw3MjIsNzA4LDcyMiw2MTQsNzIyLDY2Nyw5MjcsNjQzLDcxOSw3MTksNjE1LDY4Nyw4MzMsNzIyLDc3OCw3MTksNjY3LDcyMiw2MTEsNjc3LDc4MSw2NjcsNzI5LDcwOCw5NzksOTg5LDg1NCwxZTMsNzA4LDcxOSwxMDQyLDcyOSw1NTYsNjE5LDYwNCw1MzQsNjE4LDU1Niw3MzYsNTEwLDYxMSw2MTEsNTA3LDYyMiw3NDAsNjA0LDYxMSw2MTEsNjExLDU1Niw4ODksNTU2LDg4NSw1NTYsNjQ2LDU4Myw4ODksOTM1LDcwNyw4NTQsNTk0LDU1Miw4NjUsNTg5LDU1Niw1NTYsNjExLDQ2OSw1NjMsNTU2LDI3OCwyNzgsMjc4LDk2OSw5MDYsNjExLDUwNyw2MTksNTU2LDYxMSw3NzgsNjExLDU3NSw0NjcsOTQ0LDc3OCw5NDQsNzc4LDk0NCw3NzgsNjY3LDU1NiwzMzMsMzMzLDU1NiwxZTMsMWUzLDU1MiwyNzgsMjc4LDI3OCwyNzgsNTAwLDUwMCw1MDAsNTU2LDU1NiwzNTAsMWUzLDFlMywyNDAsNDc5LDMzMywzMzMsNjA0LDMzMywxNjcsMzk2LDU1Niw1NTYsMTEwNCw1NTYsODg1LDUxNiwxMTQ2LDFlMyw3NjgsNjAwLDgzNCw4MzQsODM0LDgzNCw5OTksNTAwLDFlMyw1MDAsMWUzLDUwMCw1MDAsNDk0LDYxMiw4MjMsNzEzLDU4NCw1NDksNzEzLDk3OSw3MjIsMjc0LDU0OSw1NDksNTgzLDU0OSw1NDksNjA0LDU4NCw2MDQsNjA0LDcwOCw2MjUsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzI5LDYwNCw2MDQsMzU0LDM1NCwxZTMsOTkwLDk5MCw5OTAsOTkwLDQ5NCw2MDQsNjA0LDYwNCw2MDQsMzU0LDEwMjEsMTA1Miw5MTcsNzUwLDc1MCw1MzEsNjU2LDU5NCw1MTAsNTAwLDc1MCw3NTAsNjExLDYxMSwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDIyMiwyMjIsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzM10sWmE9Wy0xLC0xLC0xLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQwLDQxLDQyLDQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUyLDUzLDU0LDU1LDU2LDU3LDU4LDU5LDYwLDYxLDYyLDYzLDY0LDY1LDY2LDY3LDY4LDY5LDcwLDcxLDcyLDczLDc0LDc1LDc2LDc3LDc4LDc5LDgwLDgxLDgyLDgzLDg0LDg1LDg2LDg3LDg4LDg5LDkwLDkxLDkyLDkzLDk0LDk1LDk2LDk3LDk4LDk5LDEwMCwxMDEsMTAyLDEwMywxMDQsMTA1LDEwNiwxMDcsMTA4LDEwOSwxMTAsMTExLDExMiwxMTMsMTE0LDExNSwxMTYsMTE3LDExOCwxMTksMTIwLDEyMSwxMjIsMTIzLDEyNCwxMjUsMTI2LDE2MSwxNjIsMTYzLDE2NCwxNjUsMTY2LDE2NywxNjgsMTY5LDE3MCwxNzEsMTcyLDE3NCwxNzUsMTc2LDE3NywxNzgsMTc5LDE4MCwxODEsMTgyLDE4MywxODQsMTg1LDE4NiwxODcsMTg4LDE4OSwxOTAsMTkxLDE5MiwxOTMsMTk0LDE5NSwxOTYsMTk3LDE5OCwxOTksMjAwLDIwMSwyMDIsMjAzLDIwNCwyMDUsMjA2LDIwNywyMDgsMjA5LDIxMCwyMTEsMjEyLDIxMywyMTQsMjE1LDIxNiwyMTcsMjE4LDIxOSwyMjAsMjIxLDIyMiwyMjMsMjI0LDIyNSwyMjYsMjI3LDIyOCwyMjksMjMwLDIzMSwyMzIsMjMzLDIzNCwyMzUsMjM2LDIzNywyMzgsMjM5LDI0MCwyNDEsMjQyLDI0MywyNDQsMjQ1LDI0NiwyNDcsMjQ4LDI0OSwyNTAsMjUxLDI1MiwyNTMsMjU0LDI1NSwyNTYsMjU3LDI1OCwyNTksMjYwLDI2MSwyNjIsMjYzLDI2NCwyNjUsMjY2LDI2NywyNjgsMjY5LDI3MCwyNzEsMjcyLDI3MywyNzQsMjc1LDI3NiwyNzcsMjc4LDI3OSwyODAsMjgxLDI4MiwyODMsMjg0LDI4NSwyODYsMjg3LDI4OCwyODksMjkwLDI5MSwyOTIsMjkzLDI5NCwyOTUsMjk2LDI5NywyOTgsMjk5LDMwMCwzMDEsMzAyLDMwMywzMDQsMzA1LDMwNiwzMDcsMzA4LDMwOSwzMTAsMzExLDMxMiwzMTMsMzE0LDMxNSwzMTYsMzE3LDMxOCwzMTksMzIwLDMyMSwzMjIsMzIzLDMyNCwzMjUsMzI2LDMyNywzMjgsMzI5LDMzMCwzMzEsMzMyLDMzMywzMzQsMzM1LDMzNiwzMzcsMzM4LDMzOSwzNDAsMzQxLDM0MiwzNDMsMzQ0LDM0NSwzNDYsMzQ3LDM0OCwzNDksMzUwLDM1MSwzNTIsMzUzLDM1NCwzNTUsMzU2LDM1NywzNTgsMzU5LDM2MCwzNjEsMzYyLDM2MywzNjQsMzY1LDM2NiwzNjcsMzY4LDM2OSwzNzAsMzcxLDM3MiwzNzMsMzc0LDM3NSwzNzYsMzc3LDM3OCwzNzksMzgwLDM4MSwzODIsMzgzLDQwMiw1MDYsNTA3LDUwOCw1MDksNTEwLDUxMSw1MzYsNTM3LDUzOCw1MzksNzEwLDcxMSw3MTMsNzI4LDcyOSw3MzAsNzMxLDczMiw3MzMsOTAwLDkwMSw5MDIsOTAzLDkwNCw5MDUsOTA2LDkwOCw5MTAsOTExLDkxMiw5MTMsOTE0LDkxNSw5MTYsOTE3LDkxOCw5MTksOTIwLDkyMSw5MjIsOTIzLDkyNCw5MjUsOTI2LDkyNyw5MjgsOTI5LDkzMSw5MzIsOTMzLDkzNCw5MzUsOTM2LDkzNyw5MzgsOTM5LDk0MCw5NDEsOTQyLDk0Myw5NDQsOTQ1LDk0Niw5NDcsOTQ4LDk0OSw5NTAsOTUxLDk1Miw5NTMsOTU0LDk1NSw5NTYsOTU3LDk1OCw5NTksOTYwLDk2MSw5NjIsOTYzLDk2NCw5NjUsOTY2LDk2Nyw5NjgsOTY5LDk3MCw5NzEsOTcyLDk3Myw5NzQsMTAyNCwxMDI1LDEwMjYsMTAyNywxMDI4LDEwMjksMTAzMCwxMDMxLDEwMzIsMTAzMywxMDM0LDEwMzUsMTAzNiwxMDM3LDEwMzgsMTAzOSwxMDQwLDEwNDEsMTA0MiwxMDQzLDEwNDQsMTA0NSwxMDQ2LDEwNDcsMTA0OCwxMDQ5LDEwNTAsMTA1MSwxMDUyLDEwNTMsMTA1NCwxMDU1LDEwNTYsMTA1NywxMDU4LDEwNTksMTA2MCwxMDYxLDEwNjIsMTA2MywxMDY0LDEwNjUsMTA2NiwxMDY3LDEwNjgsMTA2OSwxMDcwLDEwNzEsMTA3MiwxMDczLDEwNzQsMTA3NSwxMDc2LDEwNzcsMTA3OCwxMDc5LDEwODAsMTA4MSwxMDgyLDEwODMsMTA4NCwxMDg1LDEwODYsMTA4NywxMDg4LDEwODksMTA5MCwxMDkxLDEwOTIsMTA5MywxMDk0LDEwOTUsMTA5NiwxMDk3LDEwOTgsMTA5OSwxMTAwLDExMDEsMTEwMiwxMTAzLDExMDQsMTEwNSwxMTA2LDExMDcsMTEwOCwxMTA5LDExMTAsMTExMSwxMTEyLDExMTMsMTExNCwxMTE1LDExMTYsMTExNywxMTE4LDExMTksMTEzOCwxMTM5LDExNjgsMTE2OSw3ODA4LDc4MDksNzgxMCw3ODExLDc4MTIsNzgxMyw3OTIyLDc5MjMsODIwOCw4MjA5LDgyMTEsODIxMiw4MjEzLDgyMTUsODIxNiw4MjE3LDgyMTgsODIxOSw4MjIwLDgyMjEsODIyMiw4MjI0LDgyMjUsODIyNiw4MjMwLDgyNDAsODI0Miw4MjQzLDgyNDksODI1MCw4MjUyLDgyNTQsODI2MCw4MzE5LDgzNTUsODM1Niw4MzU5LDgzNjQsODQ1Myw4NDY3LDg0NzAsODQ4Miw4NDg2LDg0OTQsODUzOSw4NTQwLDg1NDEsODU0Miw4NTkyLDg1OTMsODU5NCw4NTk1LDg1OTYsODU5Nyw4NjE2LDg3MDYsODcxMCw4NzE5LDg3MjEsODcyMiw4NzMwLDg3MzQsODczNSw4NzQ1LDg3NDcsODc3Niw4ODAwLDg4MDEsODgwNCw4ODA1LDg5NjIsODk3Niw4OTkyLDg5OTMsOTQ3Miw5NDc0LDk0ODQsOTQ4OCw5NDkyLDk0OTYsOTUwMCw5NTA4LDk1MTYsOTUyNCw5NTMyLDk1NTIsOTU1Myw5NTU0LDk1NTUsOTU1Niw5NTU3LDk1NTgsOTU1OSw5NTYwLDk1NjEsOTU2Miw5NTYzLDk1NjQsOTU2NSw5NTY2LDk1NjcsOTU2OCw5NTY5LDk1NzAsOTU3MSw5NTcyLDk1NzMsOTU3NCw5NTc1LDk1NzYsOTU3Nyw5NTc4LDk1NzksOTU4MCw5NjAwLDk2MDQsOTYwOCw5NjEyLDk2MTYsOTYxNyw5NjE4LDk2MTksOTYzMiw5NjMzLDk2NDIsOTY0Myw5NjQ0LDk2NTAsOTY1OCw5NjYwLDk2NjgsOTY3NCw5Njc1LDk2NzksOTY4OCw5Njg5LDk3MDIsOTc4Niw5Nzg3LDk3ODgsOTc5Miw5Nzk0LDk4MjQsOTgyNyw5ODI5LDk4MzAsOTgzNCw5ODM1LDk4MzYsNjE0NDEsNjE0NDIsNjE0NDUsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTFdLFZhPVszNjUsMCwzMzMsMjc4LDI3OCwzNTUsNTU2LDU1Niw4ODksNjY3LDE5MSwzMzMsMzMzLDM4OSw1ODQsMjc4LDMzMywyNzgsMjc4LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1NiwyNzgsMjc4LDU4NCw1ODQsNTg0LDU1NiwxMDE1LDY2Nyw2NjcsNzIyLDcyMiw2NjcsNjExLDc3OCw3MjIsMjc4LDUwMCw2NjcsNTU2LDgzMyw3MjIsNzc4LDY2Nyw3NzgsNzIyLDY2Nyw2MTEsNzIyLDY2Nyw5NDQsNjY3LDY2Nyw2MTEsMjc4LDI3OCwyNzgsNDY5LDU1NiwzMzMsNTU2LDU1Niw1MDAsNTU2LDU1NiwyNzgsNTU2LDU1NiwyMjIsMjIyLDUwMCwyMjIsODMzLDU1Niw1NTYsNTU2LDU1NiwzMzMsNTAwLDI3OCw1NTYsNTAwLDcyMiw1MDAsNTAwLDUwMCwzMzQsMjYwLDMzNCw1ODQsMzMzLDU1Niw1NTYsNTU2LDU1NiwyNjAsNTU2LDMzMyw3MzcsMzcwLDU1Niw1ODQsNzM3LDU1Miw0MDAsNTQ5LDMzMywzMzMsMzMzLDU3Niw1MzcsMjc4LDMzMywzMzMsMzY1LDU1Niw4MzQsODM0LDgzNCw2MTEsNjY3LDY2Nyw2NjcsNjY3LDY2Nyw2NjcsMWUzLDcyMiw2NjcsNjY3LDY2Nyw2NjcsMjc4LDI3OCwyNzgsMjc4LDcyMiw3MjIsNzc4LDc3OCw3NzgsNzc4LDc3OCw1ODQsNzc4LDcyMiw3MjIsNzIyLDcyMiw2NjcsNjY3LDYxMSw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw4ODksNTAwLDU1Niw1NTYsNTU2LDU1NiwyNzgsMjc4LDI3OCwyNzgsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU0OSw2MTEsNTU2LDU1Niw1NTYsNTU2LDUwMCw1NTYsNTAwLDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDcyMiw1MDAsNzIyLDUwMCw3MjIsNTAwLDcyMiw1MDAsNzIyLDYyNSw3MjIsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw3NzgsNTU2LDc3OCw1NTYsNzc4LDU1Niw3NzgsNTU2LDcyMiw1NTYsNzIyLDU1NiwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjIyLDI3OCwyNzgsNzMzLDQ0NCw1MDAsMjIyLDY2Nyw1MDAsNTAwLDU1NiwyMjIsNTU2LDIyMiw1NTYsMjgxLDU1Niw0MDAsNTU2LDIyMiw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw2MTUsNzIzLDU1Niw3NzgsNTU2LDc3OCw1NTYsNzc4LDU1NiwxZTMsOTQ0LDcyMiwzMzMsNzIyLDMzMyw3MjIsMzMzLDY2Nyw1MDAsNjY3LDUwMCw2NjcsNTAwLDY2Nyw1MDAsNjExLDI3OCw2MTEsMzU0LDYxMSwyNzgsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsOTQ0LDcyMiw2NjcsNTAwLDY2Nyw2MTEsNTAwLDYxMSw1MDAsNjExLDUwMCwyMjIsNTU2LDY2Nyw1NTYsMWUzLDg4OSw3NzgsNjExLDY2Nyw1MDAsNjExLDI3OCwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDY2NywyNzgsNzg5LDg0NiwzODksNzk0LDg2NSw3NzUsMjIyLDY2Nyw2NjcsNTcwLDY3MSw2NjcsNjExLDcyMiw3NzgsMjc4LDY2Nyw2NjcsODMzLDcyMiw2NDgsNzc4LDcyNSw2NjcsNjAwLDYxMSw2NjcsODM3LDY2Nyw4MzEsNzYxLDI3OCw2NjcsNTcwLDQzOSw1NTUsMjIyLDU1MCw1NzAsNTcxLDUwMCw1NTYsNDM5LDQ2Myw1NTUsNTQyLDIyMiw1MDAsNDkyLDU0OCw1MDAsNDQ3LDU1Niw2NzAsNTczLDQ4Niw2MDMsMzc0LDU1MCw2NTIsNTQ2LDcyOCw3NzksMjIyLDU1MCw1NTYsNTUwLDc3OSw2NjcsNjY3LDg0Myw1NDQsNzA4LDY2NywyNzgsMjc4LDUwMCwxMDY2LDk4Miw4NDQsNTg5LDcxNSw2MzksNzI0LDY2Nyw2NTEsNjY3LDU0NCw3MDQsNjY3LDkxNyw2MTQsNzE1LDcxNSw1ODksNjg2LDgzMyw3MjIsNzc4LDcyNSw2NjcsNzIyLDYxMSw2MzksNzk1LDY2Nyw3MjcsNjczLDkyMCw5MjMsODA1LDg4Niw2NTEsNjk0LDEwMjIsNjgyLDU1Niw1NjIsNTIyLDQ5Myw1NTMsNTU2LDY4OCw0NjUsNTU2LDU1Niw0NzIsNTY0LDY4Niw1NTAsNTU2LDU1Niw1NTYsNTAwLDgzMyw1MDAsODM1LDUwMCw1NzIsNTE4LDgzMCw4NTEsNjIxLDczNiw1MjYsNDkyLDc1Miw1MzQsNTU2LDU1Niw1NTYsMzc4LDQ5Niw1MDAsMjIyLDIyMiwyMjIsOTEwLDgyOCw1NTYsNDcyLDU2NSw1MDAsNTU2LDc3OCw1NTYsNDkyLDMzOSw5NDQsNzIyLDk0NCw3MjIsOTQ0LDcyMiw2NjcsNTAwLDMzMywzMzMsNTU2LDFlMywxZTMsNTUyLDIyMiwyMjIsMjIyLDIyMiwzMzMsMzMzLDMzMyw1NTYsNTU2LDM1MCwxZTMsMWUzLDE4OCwzNTQsMzMzLDMzMyw1MDAsMzMzLDE2NywzNjUsNTU2LDU1NiwxMDk0LDU1Niw4ODUsMzIzLDEwODMsMWUzLDc2OCw2MDAsODM0LDgzNCw4MzQsODM0LDFlMyw1MDAsOTk4LDUwMCwxZTMsNTAwLDUwMCw0OTQsNjEyLDgyMyw3MTMsNTg0LDU0OSw3MTMsOTc5LDcxOSwyNzQsNTQ5LDU0OSw1ODQsNTQ5LDU0OSw2MDQsNTg0LDYwNCw2MDQsNzA4LDYyNSw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MjksNjA0LDYwNCwzNTQsMzU0LDFlMyw5OTAsOTkwLDk5MCw5OTAsNDk0LDYwNCw2MDQsNjA0LDYwNCwzNTQsMTAyMSwxMDUyLDkxNyw3NTAsNzUwLDUzMSw2NTYsNTk0LDUxMCw1MDAsNzUwLDc1MCw1MDAsNTAwLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMjIyLDIyMiwyOTQsMjk0LDMyNCwzMjQsMzE2LDMyOCwzOTgsMjg1XSxfYT1bLTEsLTEsLTEsMzIsMzMsMzQsMzUsMzYsMzcsMzgsMzksNDAsNDEsNDIsNDMsNDQsNDUsNDYsNDcsNDgsNDksNTAsNTEsNTIsNTMsNTQsNTUsNTYsNTcsNTgsNTksNjAsNjEsNjIsNjMsNjQsNjUsNjYsNjcsNjgsNjksNzAsNzEsNzIsNzMsNzQsNzUsNzYsNzcsNzgsNzksODAsODEsODIsODMsODQsODUsODYsODcsODgsODksOTAsOTEsOTIsOTMsOTQsOTUsOTYsOTcsOTgsOTksMTAwLDEwMSwxMDIsMTAzLDEwNCwxMDUsMTA2LDEwNywxMDgsMTA5LDExMCwxMTEsMTEyLDExMywxMTQsMTE1LDExNiwxMTcsMTE4LDExOSwxMjAsMTIxLDEyMiwxMjMsMTI0LDEyNSwxMjYsMTYxLDE2MiwxNjMsMTY0LDE2NSwxNjYsMTY3LDE2OCwxNjksMTcwLDE3MSwxNzIsMTc0LDE3NSwxNzYsMTc3LDE3OCwxNzksMTgwLDE4MSwxODIsMTgzLDE4NCwxODUsMTg2LDE4NywxODgsMTg5LDE5MCwxOTEsMTkyLDE5MywxOTQsMTk1LDE5NiwxOTcsMTk4LDE5OSwyMDAsMjAxLDIwMiwyMDMsMjA0LDIwNSwyMDYsMjA3LDIwOCwyMDksMjEwLDIxMSwyMTIsMjEzLDIxNCwyMTUsMjE2LDIxNywyMTgsMjE5LDIyMCwyMjEsMjIyLDIyMywyMjQsMjI1LDIyNiwyMjcsMjI4LDIyOSwyMzAsMjMxLDIzMiwyMzMsMjM0LDIzNSwyMzYsMjM3LDIzOCwyMzksMjQwLDI0MSwyNDIsMjQzLDI0NCwyNDUsMjQ2LDI0NywyNDgsMjQ5LDI1MCwyNTEsMjUyLDI1MywyNTQsMjU1LDI1NiwyNTcsMjU4LDI1OSwyNjAsMjYxLDI2MiwyNjMsMjY0LDI2NSwyNjYsMjY3LDI2OCwyNjksMjcwLDI3MSwyNzIsMjczLDI3NCwyNzUsMjc2LDI3NywyNzgsMjc5LDI4MCwyODEsMjgyLDI4MywyODQsMjg1LDI4NiwyODcsMjg4LDI4OSwyOTAsMjkxLDI5MiwyOTMsMjk0LDI5NSwyOTYsMjk3LDI5OCwyOTksMzAwLDMwMSwzMDIsMzAzLDMwNCwzMDUsMzA2LDMwNywzMDgsMzA5LDMxMCwzMTEsMzEyLDMxMywzMTQsMzE1LDMxNiwzMTcsMzE4LDMxOSwzMjAsMzIxLDMyMiwzMjMsMzI0LDMyNSwzMjYsMzI3LDMyOCwzMjksMzMwLDMzMSwzMzIsMzMzLDMzNCwzMzUsMzM2LDMzNywzMzgsMzM5LDM0MCwzNDEsMzQyLDM0MywzNDQsMzQ1LDM0NiwzNDcsMzQ4LDM0OSwzNTAsMzUxLDM1MiwzNTMsMzU0LDM1NSwzNTYsMzU3LDM1OCwzNTksMzYwLDM2MSwzNjIsMzYzLDM2NCwzNjUsMzY2LDM2NywzNjgsMzY5LDM3MCwzNzEsMzcyLDM3MywzNzQsMzc1LDM3NiwzNzcsMzc4LDM3OSwzODAsMzgxLDM4MiwzODMsNDAyLDUwNiw1MDcsNTA4LDUwOSw1MTAsNTExLDUzNiw1MzcsNTM4LDUzOSw3MTAsNzExLDcxMyw3MjgsNzI5LDczMCw3MzEsNzMyLDczMyw5MDAsOTAxLDkwMiw5MDMsOTA0LDkwNSw5MDYsOTA4LDkxMCw5MTEsOTEyLDkxMyw5MTQsOTE1LDkxNiw5MTcsOTE4LDkxOSw5MjAsOTIxLDkyMiw5MjMsOTI0LDkyNSw5MjYsOTI3LDkyOCw5MjksOTMxLDkzMiw5MzMsOTM0LDkzNSw5MzYsOTM3LDkzOCw5MzksOTQwLDk0MSw5NDIsOTQzLDk0NCw5NDUsOTQ2LDk0Nyw5NDgsOTQ5LDk1MCw5NTEsOTUyLDk1Myw5NTQsOTU1LDk1Niw5NTcsOTU4LDk1OSw5NjAsOTYxLDk2Miw5NjMsOTY0LDk2NSw5NjYsOTY3LDk2OCw5NjksOTcwLDk3MSw5NzIsOTczLDk3NCwxMDI0LDEwMjUsMTAyNiwxMDI3LDEwMjgsMTAyOSwxMDMwLDEwMzEsMTAzMiwxMDMzLDEwMzQsMTAzNSwxMDM2LDEwMzcsMTAzOCwxMDM5LDEwNDAsMTA0MSwxMDQyLDEwNDMsMTA0NCwxMDQ1LDEwNDYsMTA0NywxMDQ4LDEwNDksMTA1MCwxMDUxLDEwNTIsMTA1MywxMDU0LDEwNTUsMTA1NiwxMDU3LDEwNTgsMTA1OSwxMDYwLDEwNjEsMTA2MiwxMDYzLDEwNjQsMTA2NSwxMDY2LDEwNjcsMTA2OCwxMDY5LDEwNzAsMTA3MSwxMDcyLDEwNzMsMTA3NCwxMDc1LDEwNzYsMTA3NywxMDc4LDEwNzksMTA4MCwxMDgxLDEwODIsMTA4MywxMDg0LDEwODUsMTA4NiwxMDg3LDEwODgsMTA4OSwxMDkwLDEwOTEsMTA5MiwxMDkzLDEwOTQsMTA5NSwxMDk2LDEwOTcsMTA5OCwxMDk5LDExMDAsMTEwMSwxMTAyLDExMDMsMTEwNCwxMTA1LDExMDYsMTEwNywxMTA4LDExMDksMTExMCwxMTExLDExMTIsMTExMywxMTE0LDExMTUsMTExNiwxMTE3LDExMTgsMTExOSwxMTM4LDExMzksMTE2OCwxMTY5LDc4MDgsNzgwOSw3ODEwLDc4MTEsNzgxMiw3ODEzLDc5MjIsNzkyMyw4MjA4LDgyMDksODIxMSw4MjEyLDgyMTMsODIxNSw4MjE2LDgyMTcsODIxOCw4MjE5LDgyMjAsODIyMSw4MjIyLDgyMjQsODIyNSw4MjI2LDgyMzAsODI0MCw4MjQyLDgyNDMsODI0OSw4MjUwLDgyNTIsODI1NCw4MjYwLDgzMTksODM1NSw4MzU2LDgzNTksODM2NCw4NDUzLDg0NjcsODQ3MCw4NDgyLDg0ODYsODQ5NCw4NTM5LDg1NDAsODU0MSw4NTQyLDg1OTIsODU5Myw4NTk0LDg1OTUsODU5Niw4NTk3LDg2MTYsODcwNiw4NzEwLDg3MTksODcyMSw4NzIyLDg3MzAsODczNCw4NzM1LDg3NDUsODc0Nyw4Nzc2LDg4MDAsODgwMSw4ODA0LDg4MDUsODk2Miw4OTc2LDg5OTIsODk5Myw5NDcyLDk0NzQsOTQ4NCw5NDg4LDk0OTIsOTQ5Niw5NTAwLDk1MDgsOTUxNiw5NTI0LDk1MzIsOTU1Miw5NTUzLDk1NTQsOTU1NSw5NTU2LDk1NTcsOTU1OCw5NTU5LDk1NjAsOTU2MSw5NTYyLDk1NjMsOTU2NCw5NTY1LDk1NjYsOTU2Nyw5NTY4LDk1NjksOTU3MCw5NTcxLDk1NzIsOTU3Myw5NTc0LDk1NzUsOTU3Niw5NTc3LDk1NzgsOTU3OSw5NTgwLDk2MDAsOTYwNCw5NjA4LDk2MTIsOTYxNiw5NjE3LDk2MTgsOTYxOSw5NjMyLDk2MzMsOTY0Miw5NjQzLDk2NDQsOTY1MCw5NjU4LDk2NjAsOTY2OCw5Njc0LDk2NzUsOTY3OSw5Njg4LDk2ODksOTcwMiw5Nzg2LDk3ODcsOTc4OCw5NzkyLDk3OTQsOTgyNCw5ODI3LDk4MjksOTgzMCw5ODM0LDk4MzUsOTgzNiw2MTQ0MSw2MTQ0Miw2MTQ0NSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMV0semE9WzM2NSwwLDMzMywyNzgsMjc4LDM1NSw1NTYsNTU2LDg4OSw2NjcsMTkxLDMzMywzMzMsMzg5LDU4NCwyNzgsMzMzLDI3OCwyNzgsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDI3OCwyNzgsNTg0LDU4NCw1ODQsNTU2LDEwMTUsNjY3LDY2Nyw3MjIsNzIyLDY2Nyw2MTEsNzc4LDcyMiwyNzgsNTAwLDY2Nyw1NTYsODMzLDcyMiw3NzgsNjY3LDc3OCw3MjIsNjY3LDYxMSw3MjIsNjY3LDk0NCw2NjcsNjY3LDYxMSwyNzgsMjc4LDI3OCw0NjksNTU2LDMzMyw1NTYsNTU2LDUwMCw1NTYsNTU2LDI3OCw1NTYsNTU2LDIyMiwyMjIsNTAwLDIyMiw4MzMsNTU2LDU1Niw1NTYsNTU2LDMzMyw1MDAsMjc4LDU1Niw1MDAsNzIyLDUwMCw1MDAsNTAwLDMzNCwyNjAsMzM0LDU4NCwzMzMsNTU2LDU1Niw1NTYsNTU2LDI2MCw1NTYsMzMzLDczNywzNzAsNTU2LDU4NCw3MzcsNTUyLDQwMCw1NDksMzMzLDMzMywzMzMsNTc2LDUzNywyNzgsMzMzLDMzMywzNjUsNTU2LDgzNCw4MzQsODM0LDYxMSw2NjcsNjY3LDY2Nyw2NjcsNjY3LDY2NywxZTMsNzIyLDY2Nyw2NjcsNjY3LDY2NywyNzgsMjc4LDI3OCwyNzgsNzIyLDcyMiw3NzgsNzc4LDc3OCw3NzgsNzc4LDU4NCw3NzgsNzIyLDcyMiw3MjIsNzIyLDY2Nyw2NjcsNjExLDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDg4OSw1MDAsNTU2LDU1Niw1NTYsNTU2LDI3OCwyNzgsMjc4LDI3OCw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTQ5LDYxMSw1NTYsNTU2LDU1Niw1NTYsNTAwLDU1Niw1MDAsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNzIyLDUwMCw3MjIsNTAwLDcyMiw1MDAsNzIyLDUwMCw3MjIsNjE1LDcyMiw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDc3OCw1NTYsNzc4LDU1Niw3NzgsNTU2LDc3OCw1NTYsNzIyLDU1Niw3MjIsNTU2LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyMjIsMjc4LDI3OCw3MzUsNDQ0LDUwMCwyMjIsNjY3LDUwMCw1MDAsNTU2LDIyMiw1NTYsMjIyLDU1NiwyOTIsNTU2LDMzNCw1NTYsMjIyLDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDYwNCw3MjMsNTU2LDc3OCw1NTYsNzc4LDU1Niw3NzgsNTU2LDFlMyw5NDQsNzIyLDMzMyw3MjIsMzMzLDcyMiwzMzMsNjY3LDUwMCw2NjcsNTAwLDY2Nyw1MDAsNjY3LDUwMCw2MTEsMjc4LDYxMSwzNzUsNjExLDI3OCw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw5NDQsNzIyLDY2Nyw1MDAsNjY3LDYxMSw1MDAsNjExLDUwMCw2MTEsNTAwLDIyMiw1NTYsNjY3LDU1NiwxZTMsODg5LDc3OCw2MTEsNjY3LDUwMCw2MTEsMjc4LDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsNjY3LDI3OCw3ODQsODM4LDM4NCw3NzQsODU1LDc1MiwyMjIsNjY3LDY2Nyw1NTEsNjY4LDY2Nyw2MTEsNzIyLDc3OCwyNzgsNjY3LDY2OCw4MzMsNzIyLDY1MCw3NzgsNzIyLDY2Nyw2MTgsNjExLDY2Nyw3OTgsNjY3LDgzNSw3NDgsMjc4LDY2Nyw1NzgsNDQ2LDU1NiwyMjIsNTQ3LDU3OCw1NzUsNTAwLDU1Nyw0NDYsNDQxLDU1Niw1NTYsMjIyLDUwMCw1MDAsNTc2LDUwMCw0NDgsNTU2LDY5MCw1NjksNDgyLDYxNywzOTUsNTQ3LDY0OCw1MjUsNzEzLDc4MSwyMjIsNTQ3LDU1Niw1NDcsNzgxLDY2Nyw2NjcsODY1LDU0Miw3MTksNjY3LDI3OCwyNzgsNTAwLDEwNTcsMTAxMCw4NTQsNTgzLDcyMiw2MzUsNzE5LDY2Nyw2NTYsNjY3LDU0Miw2NzcsNjY3LDkyMyw2MDQsNzE5LDcxOSw1ODMsNjU2LDgzMyw3MjIsNzc4LDcxOSw2NjcsNzIyLDYxMSw2MzUsNzYwLDY2Nyw3NDAsNjY3LDkxNyw5MzgsNzkyLDg4NSw2NTYsNzE5LDEwMTAsNzIyLDU1Niw1NzMsNTMxLDM2NSw1ODMsNTU2LDY2OSw0NTgsNTU5LDU1OSw0MzgsNTgzLDY4OCw1NTIsNTU2LDU0Miw1NTYsNTAwLDQ1OCw1MDAsODIzLDUwMCw1NzMsNTIxLDgwMiw4MjMsNjI1LDcxOSw1MjEsNTEwLDc1MCw1NDIsNTU2LDU1Niw1NTYsMzY1LDUxMCw1MDAsMjIyLDI3OCwyMjIsOTA2LDgxMiw1NTYsNDM4LDU1OSw1MDAsNTUyLDc3OCw1NTYsNDg5LDQxMSw5NDQsNzIyLDk0NCw3MjIsOTQ0LDcyMiw2NjcsNTAwLDMzMywzMzMsNTU2LDFlMywxZTMsNTUyLDIyMiwyMjIsMjIyLDIyMiwzMzMsMzMzLDMzMyw1NTYsNTU2LDM1MCwxZTMsMWUzLDE4OCwzNTQsMzMzLDMzMyw1MDAsMzMzLDE2NywzNjUsNTU2LDU1NiwxMDk0LDU1Niw4ODUsMzIzLDEwNzMsMWUzLDc2OCw2MDAsODM0LDgzNCw4MzQsODM0LDFlMyw1MDAsMWUzLDUwMCwxZTMsNTAwLDUwMCw0OTQsNjEyLDgyMyw3MTMsNTg0LDU0OSw3MTMsOTc5LDcxOSwyNzQsNTQ5LDU0OSw1ODMsNTQ5LDU0OSw2MDQsNTg0LDYwNCw2MDQsNzA4LDYyNSw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MjksNjA0LDYwNCwzNTQsMzU0LDFlMyw5OTAsOTkwLDk5MCw5OTAsNDk0LDYwNCw2MDQsNjA0LDYwNCwzNTQsMTAyMSwxMDUyLDkxNyw3NTAsNzUwLDUzMSw2NTYsNTk0LDUxMCw1MDAsNzUwLDc1MCw1MDAsNTAwLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMjIyLDIyMiwyOTQsMjk0LDMyNCwzMjQsMzE2LDMyOCwzOTgsMjg1XSwkYT1bLTEsLTEsLTEsMzIsMzMsMzQsMzUsMzYsMzcsMzgsMzksNDAsNDEsNDIsNDMsNDQsNDUsNDYsNDcsNDgsNDksNTAsNTEsNTIsNTMsNTQsNTUsNTYsNTcsNTgsNTksNjAsNjEsNjIsNjMsNjQsNjUsNjYsNjcsNjgsNjksNzAsNzEsNzIsNzMsNzQsNzUsNzYsNzcsNzgsNzksODAsODEsODIsODMsODQsODUsODYsODcsODgsODksOTAsOTEsOTIsOTMsOTQsOTUsOTYsOTcsOTgsOTksMTAwLDEwMSwxMDIsMTAzLDEwNCwxMDUsMTA2LDEwNywxMDgsMTA5LDExMCwxMTEsMTEyLDExMywxMTQsMTE1LDExNiwxMTcsMTE4LDExOSwxMjAsMTIxLDEyMiwxMjMsMTI0LDEyNSwxMjYsMTYxLDE2MiwxNjMsMTY0LDE2NSwxNjYsMTY3LDE2OCwxNjksMTcwLDE3MSwxNzIsMTc0LDE3NSwxNzYsMTc3LDE3OCwxNzksMTgwLDE4MSwxODIsMTgzLDE4NCwxODUsMTg2LDE4NywxODgsMTg5LDE5MCwxOTEsMTkyLDE5MywxOTQsMTk1LDE5NiwxOTcsMTk4LDE5OSwyMDAsMjAxLDIwMiwyMDMsMjA0LDIwNSwyMDYsMjA3LDIwOCwyMDksMjEwLDIxMSwyMTIsMjEzLDIxNCwyMTUsMjE2LDIxNywyMTgsMjE5LDIyMCwyMjEsMjIyLDIyMywyMjQsMjI1LDIyNiwyMjcsMjI4LDIyOSwyMzAsMjMxLDIzMiwyMzMsMjM0LDIzNSwyMzYsMjM3LDIzOCwyMzksMjQwLDI0MSwyNDIsMjQzLDI0NCwyNDUsMjQ2LDI0NywyNDgsMjQ5LDI1MCwyNTEsMjUyLDI1MywyNTQsMjU1LDI1NiwyNTcsMjU4LDI1OSwyNjAsMjYxLDI2MiwyNjMsMjY0LDI2NSwyNjYsMjY3LDI2OCwyNjksMjcwLDI3MSwyNzIsMjczLDI3NCwyNzUsMjc2LDI3NywyNzgsMjc5LDI4MCwyODEsMjgyLDI4MywyODQsMjg1LDI4NiwyODcsMjg4LDI4OSwyOTAsMjkxLDI5MiwyOTMsMjk0LDI5NSwyOTYsMjk3LDI5OCwyOTksMzAwLDMwMSwzMDIsMzAzLDMwNCwzMDUsMzA2LDMwNywzMDgsMzA5LDMxMCwzMTEsMzEyLDMxMywzMTQsMzE1LDMxNiwzMTcsMzE4LDMxOSwzMjAsMzIxLDMyMiwzMjMsMzI0LDMyNSwzMjYsMzI3LDMyOCwzMjksMzMwLDMzMSwzMzIsMzMzLDMzNCwzMzUsMzM2LDMzNywzMzgsMzM5LDM0MCwzNDEsMzQyLDM0MywzNDQsMzQ1LDM0NiwzNDcsMzQ4LDM0OSwzNTAsMzUxLDM1MiwzNTMsMzU0LDM1NSwzNTYsMzU3LDM1OCwzNTksMzYwLDM2MSwzNjIsMzYzLDM2NCwzNjUsMzY2LDM2NywzNjgsMzY5LDM3MCwzNzEsMzcyLDM3MywzNzQsMzc1LDM3NiwzNzcsMzc4LDM3OSwzODAsMzgxLDM4MiwzODMsNDAyLDUwNiw1MDcsNTA4LDUwOSw1MTAsNTExLDUzNiw1MzcsNTM4LDUzOSw3MTAsNzExLDcxMyw3MjgsNzI5LDczMCw3MzEsNzMyLDczMyw5MDAsOTAxLDkwMiw5MDMsOTA0LDkwNSw5MDYsOTA4LDkxMCw5MTEsOTEyLDkxMyw5MTQsOTE1LDkxNiw5MTcsOTE4LDkxOSw5MjAsOTIxLDkyMiw5MjMsOTI0LDkyNSw5MjYsOTI3LDkyOCw5MjksOTMxLDkzMiw5MzMsOTM0LDkzNSw5MzYsOTM3LDkzOCw5MzksOTQwLDk0MSw5NDIsOTQzLDk0NCw5NDUsOTQ2LDk0Nyw5NDgsOTQ5LDk1MCw5NTEsOTUyLDk1Myw5NTQsOTU1LDk1Niw5NTcsOTU4LDk1OSw5NjAsOTYxLDk2Miw5NjMsOTY0LDk2NSw5NjYsOTY3LDk2OCw5NjksOTcwLDk3MSw5NzIsOTczLDk3NCwxMDI0LDEwMjUsMTAyNiwxMDI3LDEwMjgsMTAyOSwxMDMwLDEwMzEsMTAzMiwxMDMzLDEwMzQsMTAzNSwxMDM2LDEwMzcsMTAzOCwxMDM5LDEwNDAsMTA0MSwxMDQyLDEwNDMsMTA0NCwxMDQ1LDEwNDYsMTA0NywxMDQ4LDEwNDksMTA1MCwxMDUxLDEwNTIsMTA1MywxMDU0LDEwNTUsMTA1NiwxMDU3LDEwNTgsMTA1OSwxMDYwLDEwNjEsMTA2MiwxMDYzLDEwNjQsMTA2NSwxMDY2LDEwNjcsMTA2OCwxMDY5LDEwNzAsMTA3MSwxMDcyLDEwNzMsMTA3NCwxMDc1LDEwNzYsMTA3NywxMDc4LDEwNzksMTA4MCwxMDgxLDEwODIsMTA4MywxMDg0LDEwODUsMTA4NiwxMDg3LDEwODgsMTA4OSwxMDkwLDEwOTEsMTA5MiwxMDkzLDEwOTQsMTA5NSwxMDk2LDEwOTcsMTA5OCwxMDk5LDExMDAsMTEwMSwxMTAyLDExMDMsMTEwNCwxMTA1LDExMDYsMTEwNywxMTA4LDExMDksMTExMCwxMTExLDExMTIsMTExMywxMTE0LDExMTUsMTExNiwxMTE3LDExMTgsMTExOSwxMTM4LDExMzksMTE2OCwxMTY5LDc4MDgsNzgwOSw3ODEwLDc4MTEsNzgxMiw3ODEzLDc5MjIsNzkyMyw4MjA4LDgyMDksODIxMSw4MjEyLDgyMTMsODIxNSw4MjE2LDgyMTcsODIxOCw4MjE5LDgyMjAsODIyMSw4MjIyLDgyMjQsODIyNSw4MjI2LDgyMzAsODI0MCw4MjQyLDgyNDMsODI0OSw4MjUwLDgyNTIsODI1NCw4MjYwLDgzMTksODM1NSw4MzU2LDgzNTksODM2NCw4NDUzLDg0NjcsODQ3MCw4NDgyLDg0ODYsODQ5NCw4NTM5LDg1NDAsODU0MSw4NTQyLDg1OTIsODU5Myw4NTk0LDg1OTUsODU5Niw4NTk3LDg2MTYsODcwNiw4NzEwLDg3MTksODcyMSw4NzIyLDg3MzAsODczNCw4NzM1LDg3NDUsODc0Nyw4Nzc2LDg4MDAsODgwMSw4ODA0LDg4MDUsODk2Miw4OTc2LDg5OTIsODk5Myw5NDcyLDk0NzQsOTQ4NCw5NDg4LDk0OTIsOTQ5Niw5NTAwLDk1MDgsOTUxNiw5NTI0LDk1MzIsOTU1Miw5NTUzLDk1NTQsOTU1NSw5NTU2LDk1NTcsOTU1OCw5NTU5LDk1NjAsOTU2MSw5NTYyLDk1NjMsOTU2NCw5NTY1LDk1NjYsOTU2Nyw5NTY4LDk1NjksOTU3MCw5NTcxLDk1NzIsOTU3Myw5NTc0LDk1NzUsOTU3Niw5NTc3LDk1NzgsOTU3OSw5NTgwLDk2MDAsOTYwNCw5NjA4LDk2MTIsOTYxNiw5NjE3LDk2MTgsOTYxOSw5NjMyLDk2MzMsOTY0Miw5NjQzLDk2NDQsOTY1MCw5NjU4LDk2NjAsOTY2OCw5Njc0LDk2NzUsOTY3OSw5Njg4LDk2ODksOTcwMiw5Nzg2LDk3ODcsOTc4OCw5NzkyLDk3OTQsOTgyNCw5ODI3LDk4MjksOTgzMCw5ODM0LDk4MzUsOTgzNiw2MTQ0MSw2MTQ0Miw2MTQ0NSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMV0sQXI9WzEuMzY4OTgsMSwxLC43MjcwNiwuODA0NzksLjgzNzM0LC45ODg5NCwuOTk3OTMsLjk4OTcsLjkzODg0LC44NjIwOSwuOTQyOTIsLjk0MjkyLDEuMTY2NjEsMS4wMjA1OCwuOTM1ODIsLjk2Njk0LC45MzU4MiwxLjE5MTM3LC45OTc5MywuOTk3OTMsLjk5NzkzLC45OTc5MywuOTk3OTMsLjk5NzkzLC45OTc5MywuOTk3OTMsLjk5NzkzLC45OTc5MywuNzgwNzYsLjc4MDc2LDEuMDIwNTgsMS4wMjA1OCwxLjAyMDU4LC43Mjg1MSwuNzg5NjYsLjkwODM4LC44MzYzNywuODIzOTEsLjk2Mzc2LC44MDA2MSwuODYyNzUsLjg3NjgsLjk1NDA3LDEuMDI1OCwuNzM5MDEsLjg1MDIyLC44MzY1NSwxLjAxNTYsLjk1NTQ2LC45MjE3OSwuODcxMDcsLjkyMTc5LC44MjExNCwuODA5NiwuODk3MTMsLjk0NDM4LC45NTM1MywuOTQwODMsLjkxOTA1LC45MDQwNiwuOTQ0NiwuOTQyOTIsMS4xODc3NywuOTQyOTIsMS4wMjA1OCwuODk5MDMsLjkwMDg4LC45NDkzOCwuOTc4OTgsLjgxMDkzLC45NzU3MSwuOTQ5MzgsMS4wMjQsLjk1NzcsLjk1OTMzLC45ODYyMSwxLjA0NzQsLjk3NDU1LC45ODk4MSwuOTY3MiwuOTU5MzMsLjk0NDYsLjk3ODk4LC45NzQwNywuOTc2NDYsLjc4MDM2LDEuMTAyMDgsLjk1NDQyLC45NTI5OCwuOTc1NzksLjkzMzIsLjk0MDM5LC45MzgsLjgwNjg3LDEuMDExNDksLjgwNjg3LDEuMDIwNTgsLjgwNDc5LC45OTc5MywuOTk3OTMsLjk5NzkzLC45OTc5MywxLjAxMTQ5LDEuMDA4NzIsLjkwMDg4LC45MTg4MiwxLjAyMTMsLjgzNjEsMS4wMjA1OCwuNjIyOTUsLjU0MzI0LC44OTAyMiwxLjA4NTk1LDEsMSwuOTAwODgsMSwuOTc0NTUsLjkzNTgyLC45MDA4OCwxLDEuMDU2ODYsLjgzNjEsLjk5NjQyLC45OTY0MiwuOTk2NDIsLjcyODUxLC45MDgzOCwuOTA4MzgsLjkwODM4LC45MDgzOCwuOTA4MzgsLjkwODM4LC44NjgsLjgyMzkxLC44MDA2MSwuODAwNjEsLjgwMDYxLC44MDA2MSwxLjAyNTgsMS4wMjU4LDEuMDI1OCwxLjAyNTgsLjk3NDg0LC45NTU0NiwuOTIxNzksLjkyMTc5LC45MjE3OSwuOTIxNzksLjkyMTc5LDEuMDIwNTgsLjkyMTc5LC45NDQzOCwuOTQ0MzgsLjk0NDM4LC45NDQzOCwuOTA0MDYsLjg2OTU4LC45ODIyNSwuOTQ5MzgsLjk0OTM4LC45NDkzOCwuOTQ5MzgsLjk0OTM4LC45NDkzOCwuOTAzMSwuODEwOTMsLjk0OTM4LC45NDkzOCwuOTQ5MzgsLjk0OTM4LC45ODYyMSwuOTg2MjEsLjk4NjIxLC45ODYyMSwuOTM5NjksLjk1OTMzLC45NDQ2LC45NDQ2LC45NDQ2LC45NDQ2LC45NDQ2LDEuMDg1OTUsLjk0NDYsLjk1NDQyLC45NTQ0MiwuOTU0NDIsLjk1NDQyLC45NDAzOSwuOTc4OTgsLjk0MDM5LC45MDgzOCwuOTQ5MzgsLjkwODM4LC45NDkzOCwuOTA4MzgsLjk0OTM4LC44MjM5MSwuODEwOTMsLjgyMzkxLC44MTA5MywuODIzOTEsLjgxMDkzLC44MjM5MSwuODEwOTMsLjk2Mzc2LC44NDMxMywuOTc0ODQsLjk3NTcxLC44MDA2MSwuOTQ5MzgsLjgwMDYxLC45NDkzOCwuODAwNjEsLjk0OTM4LC44MDA2MSwuOTQ5MzgsLjgwMDYxLC45NDkzOCwuODc2OCwuOTU3NywuODc2OCwuOTU3NywuODc2OCwuOTU3NywxLDEsLjk1NDA3LC45NTkzMywuOTcwNjksLjk1OTMzLDEuMDI1OCwuOTg2MjEsMS4wMjU4LC45ODYyMSwxLjAyNTgsLjk4NjIxLDEuMDI1OCwuOTg2MjEsMS4wMjU4LC45ODYyMSwuODg3LDEuMDE1OTEsLjczOTAxLDEuMDQ3NCwxLDEsLjk3NDU1LC44MzY1NSwuOTg5ODEsMSwxLC44MzY1NSwuNzM5NzcsLjgzNjU1LC43MzkwMywuODQ2MzgsMS4wMzMsLjk1NTQ2LC45NTkzMywxLDEsLjk1NTQ2LC45NTkzMywuODI3MSwuOTU0MTcsLjk1OTMzLC45MjE3OSwuOTQ0NiwuOTIxNzksLjk0NDYsLjkyMTc5LC45NDQ2LC45MzYsLjkxOTY0LC44MjExNCwuOTc2NDYsMSwxLC44MjExNCwuOTc2NDYsLjgwOTYsLjc4MDM2LC44MDk2LC43ODAzNiwxLDEsLjgwOTYsLjc4MDM2LDEsMSwuODk3MTMsLjc3NDUyLC44OTcxMywxLjEwMjA4LC45NDQzOCwuOTU0NDIsLjk0NDM4LC45NTQ0MiwuOTQ0MzgsLjk1NDQyLC45NDQzOCwuOTU0NDIsLjk0NDM4LC45NTQ0MiwuOTQ0MzgsLjk1NDQyLC45NDA4MywuOTc1NzksLjkwNDA2LC45NDAzOSwuOTA0MDYsLjk0NDYsLjkzOCwuOTQ0NiwuOTM4LC45NDQ2LC45MzgsMSwuOTk3OTMsLjkwODM4LC45NDkzOCwuODY4LC45MDMxLC45MjE3OSwuOTQ0NiwxLDEsLjg5NzEzLDEuMTAyMDgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwOTg5LC45MzU4LC45MTk0NSwuODMxODEsLjc1MjYxLC44Nzk5MiwuODI5NzYsLjk2MDM0LC44MzY4OSwuOTcyNjgsMS4wMDc4LC45MDgzOCwuODM2MzcsLjgwMTksLjkwMTU3LC44MDA2MSwuOTQ0NiwuOTU0MDcsLjkyNDM2LDEuMDI1OCwuODUwMjIsLjk3MTUzLDEuMDE1NiwuOTU1NDYsLjg5MTkyLC45MjE3OSwuOTIzNjEsLjg3MTA3LC45NjMxOCwuODk3MTMsLjkzNzA0LC45NTYzOCwuOTE5MDUsLjkxNzA5LC45Mjc5NiwxLjAyNTgsLjkzNzA0LC45NDgzNiwxLjAzNzMsLjk1OTMzLDEuMDA3OCwuOTU4NzEsLjk0ODM2LC45NjE3NCwuOTI2MDEsLjk0OTgsLjk4NjA3LC45NTc3NiwuOTU5MzMsMS4wNTQ1MywxLjAwNzgsLjk4Mjc1LC45MzE0LC45NTYxNywuOTE3MDEsMS4wNTk5MywuOTQ0NiwuNzgzNjcsLjk1NTMsMSwuODY4MzIsMS4wMTI4LC45NTg3MSwuOTkzOTQsLjg3NTQ4LC45NjM2MSwuODY3NzQsMS4wMDc4LC45NTg3MSwuOTQ0NiwuOTU4NzEsLjg2Nzc0LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk0MDgzLC45NzU3OSwuOTQwODMsLjk3NTc5LC45NDA4MywuOTc1NzksLjkwNDA2LC45NDAzOSwuOTY2OTQsMSwuODk5MDMsMSwxLDEsLjkzNTgyLC45MzU4MiwuOTM1ODIsMSwuOTA4LC45MDgsLjkxOCwuOTQyMTksLjk0MjE5LC45NjU0NCwxLDEuMjg1LDEsMSwuODEwNzksLjgxMDc5LDEsMSwuNzQ4NTQsMSwxLDEsMSwuOTk3OTMsMSwxLDEsLjY1LDEsMS4zNjE0NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4xNzE3MywxLC44MDUzNSwuNzYxNjksMS4wMjA1OCwxLjA3MzIsMS4wNTQ4NiwxLDEsMS4zMDY5MiwxLjA4NTk1LDEuMDg1OTUsMSwxLjA4NTk1LDEuMDg1OTUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjE2MTYxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLGVyPXtsaW5lSGVpZ2h0OjEuMixsaW5lR2FwOi4yfSx0cj1bMS4zNjg5OCwxLDEsLjY2MjI3LC44MDc3OSwuODE2MjUsLjk3Mjc2LC45NzI3NiwuOTc3MzMsLjkyMjIyLC44MzI2NiwuOTQyOTIsLjk0MjkyLDEuMTYxNDgsMS4wMjA1OCwuOTM1ODIsLjk2Njk0LC45MzU4MiwxLjE3MzM3LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC45NzI3NiwuNzgwNzYsLjc4MDc2LDEuMDIwNTgsMS4wMjA1OCwxLjAyMDU4LC43MTU0MSwuNzY4MTMsLjg1NTc2LC44MDU5MSwuODA3MjksLjk0Mjk5LC43NzUxMiwuODM2NTUsLjg2NTIzLC45MjIyMiwuOTg2MjEsLjcxNzQzLC44MTY5OCwuNzk3MjYsLjk4NTU4LC45MjIyMiwuOTA2MzcsLjgzODA5LC45MDYzNywuODA3MjksLjc2NDYzLC44NjI3NSwuOTA2OTksLjkxNjA1LC45MTU0LC44NTMwOCwuODU0NTgsLjkwNTMxLC45NDI5MiwxLjIxMjk2LC45NDI5MiwxLjAyMDU4LC44OTkwMywxLjE4NjE2LC45OTYxMywuOTE2NzcsLjc4MjE2LC45MTY3NywuOTAwODMsLjk4Nzk2LC45MTM1LC45MjE2OCwuOTUzODEsLjk4OTgxLC45NTI5OCwuOTUzODEsLjkzNDU5LC45MjE2OCwuOTE1MTMsLjkyMDA0LC45MTY3NywuOTUwNzcsLjc0OCwxLjA0NTAyLC45MTY3NywuOTIwNjEsLjk0MjM2LC44OTU0NCwuODkzNjQsLjksLjgwNjg3LC44NTc4LC44MDY4NywxLjAyMDU4LC44MDc3OSwuOTcyNzYsLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjg1NzgsLjk5OTczLDEuMTg2MTYsLjkxMzM5LDEuMDgwNzQsLjgyODkxLDEuMDIwNTgsLjU1NTA5LC43MTUyNiwuODkwMjIsMS4wODU5NSwxLDEsMS4xODYxNiwxLC45NjczNiwuOTM1ODIsMS4xODYxNiwxLDEuMDQ4NjQsLjgyNzExLC45OTA0MywuOTkwNDMsLjk5MDQzLC43MTU0MSwuODU1NzYsLjg1NTc2LC44NTU3NiwuODU1NzYsLjg1NTc2LC44NTU3NiwuODQ1LC44MDcyOSwuNzc1MTIsLjc3NTEyLC43NzUxMiwuNzc1MTIsLjk4NjIxLC45ODYyMSwuOTg2MjEsLjk4NjIxLC45NTk2MSwuOTIyMjIsLjkwNjM3LC45MDYzNywuOTA2MzcsLjkwNjM3LC45MDYzNywxLjAyMDU4LC45MDI1MSwuOTA2OTksLjkwNjk5LC45MDY5OSwuOTA2OTksLjg1NDU4LC44MzY1OSwuOTQ5NTEsLjk5NjEzLC45OTYxMywuOTk2MTMsLjk5NjEzLC45OTYxMywuOTk2MTMsLjg1ODExLC43ODIxNiwuOTAwODMsLjkwMDgzLC45MDA4MywuOTAwODMsLjk1MzgxLC45NTM4MSwuOTUzODEsLjk1MzgxLC45MTM1LC45MjE2OCwuOTE1MTMsLjkxNTEzLC45MTUxMywuOTE1MTMsLjkxNTEzLDEuMDg1OTUsLjkxNjc3LC45MTY3NywuOTE2NzcsLjkxNjc3LC45MTY3NywuODkzNjQsLjkyMzMyLC44OTM2NCwuODU1NzYsLjk5NjEzLC44NTU3NiwuOTk2MTMsLjg1NTc2LC45OTYxMywuODA3MjksLjc4MjE2LC44MDcyOSwuNzgyMTYsLjgwNzI5LC43ODIxNiwuODA3MjksLjc4MjE2LC45NDI5OSwuNzY3ODMsLjk1OTYxLC45MTY3NywuNzc1MTIsLjkwMDgzLC43NzUxMiwuOTAwODMsLjc3NTEyLC45MDA4MywuNzc1MTIsLjkwMDgzLC43NzUxMiwuOTAwODMsLjg2NTIzLC45MTM1LC44NjUyMywuOTEzNSwuODY1MjMsLjkxMzUsMSwxLC45MjIyMiwuOTIxNjgsLjkyMjIyLC45MjE2OCwuOTg2MjEsLjk1MzgxLC45ODYyMSwuOTUzODEsLjk4NjIxLC45NTM4MSwuOTg2MjEsLjk1MzgxLC45ODYyMSwuOTUzODEsLjg2MDM2LC45NzA5NiwuNzE3NDMsLjk4OTgxLDEsMSwuOTUyOTgsLjc5NzI2LC45NTM4MSwxLDEsLjc5NzI2LC42ODk0LC43OTcyNiwuNzQzMjEsLjgxNjkxLDEuMDAwNiwuOTIyMjIsLjkyMTY4LDEsMSwuOTIyMjIsLjkyMTY4LC43OTQ2NCwuOTIwOTgsLjkyMTY4LC45MDYzNywuOTE1MTMsLjkwNjM3LC45MTUxMywuOTA2MzcsLjkxNTEzLC45MDksLjg3NTE0LC44MDcyOSwuOTUwNzcsMSwxLC44MDcyOSwuOTUwNzcsLjc2NDYzLC43NDgsLjc2NDYzLC43NDgsMSwxLC43NjQ2MywuNzQ4LDEsMSwuODYyNzUsLjcyNjUxLC44NjI3NSwxLjA0NTAyLC45MDY5OSwuOTE2NzcsLjkwNjk5LC45MTY3NywuOTA2OTksLjkxNjc3LC45MDY5OSwuOTE2NzcsLjkwNjk5LC45MTY3NywuOTA2OTksLjkxNjc3LC45MTU0LC45NDIzNiwuODU0NTgsLjg5MzY0LC44NTQ1OCwuOTA1MzEsLjksLjkwNTMxLC45LC45MDUzMSwuOSwxLC45NzI3NiwuODU1NzYsLjk5NjEzLC44NDUsLjg1ODExLC45MDI1MSwuOTE2NzcsMSwxLC44NjI3NSwxLjA0NTAyLDEuMTg2MTYsMS4xODYxNiwxLjE4NjE2LDEuMTg2MTYsMS4xODYxNiwxLjE4NjE2LDEuMTg2MTYsMS4xODYxNiwxLjE4NjE2LDEuMDA4OTksMS4zMDYyOCwuODU1NzYsLjgwMTc4LC42Njg2MiwuNzkyNywuNjkzMjMsLjg4MTI3LC43MjQ1OSwuODk3MTEsLjk1MzgxLC44NTU3NiwuODA1OTEsLjc4MDUsLjk0NzI5LC43NzUxMiwuOTA1MzEsLjkyMjIyLC45MDYzNywuOTg2MjEsLjgxNjk4LC45MjY1NSwuOTg1NTgsLjkyMjIyLC44NTM1OSwuOTA2MzcsLjkwOTc2LC44MzgwOSwuOTQ1MjMsLjg2Mjc1LC44MzUwOSwuOTMxNTcsLjg1MzA4LC44MzM5MiwuOTIzNDYsLjk4NjIxLC44MzUwOSwuOTI4ODYsLjkxMzI0LC45MjE2OCwuOTUzODEsLjkwNjQ2LC45Mjg4NiwuOTA1NTcsLjg2ODQ3LC45MDI3NiwuOTEzMjQsLjg2ODQyLC45MjE2OCwuOTk1MzEsLjk1MzgxLC45MjI0LC44NTQwOCwuOTI2OTksLjg2ODQ3LDEuMDA1MSwuOTE1MTMsLjgwNDg3LC45MzQ4MSwxLC44ODE1OSwxLjA1MjE0LC45MDY0NiwuOTczNTUsLjgxNTM5LC44OTM5OCwuODU5MjMsLjk1MzgxLC45MDY0NiwuOTE1MTMsLjkwNjQ2LC44NTkyMywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45MTU0LC45NDIzNiwuOTE1NCwuOTQyMzYsLjkxNTQsLjk0MjM2LC44NTQ1OCwuODkzNjQsLjk2Njk0LDEsLjg5OTAzLDEsMSwxLC45MTc4MiwuOTE3ODIsLjkxNzgyLDEsLjg5NiwuODk2LC44OTYsLjkzMzIsLjkzMzIsLjk1OTczLDEsMS4yNiwxLDEsLjgwNDc5LC44MDE3OCwxLDEsLjg1NjMzLDEsMSwxLDEsLjk3Mjc2LDEsMSwxLC42OTgsMSwxLjM2MTQ1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjE0NTQyLDEsLjc5MTk5LC43ODY5NCwxLjAyMDU4LDEuMDM0OTMsMS4wNTQ4NiwxLDEsMS4yMzAyNiwxLjA4NTk1LDEuMDg1OTUsMSwxLjA4NTk1LDEuMDg1OTUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjIwMDA2LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLGlyPXtsaW5lSGVpZ2h0OjEuMixsaW5lR2FwOi4yfSxhcj1bMS4zNjg5OCwxLDEsLjY1NTA3LC44NDk0MywuODU2MzksLjg4NDY1LC44ODQ2NSwuODY5MzYsLjg4MzA3LC44Njk0OCwuODUyODMsLjg1MjgzLDEuMDYzODMsMS4wMjA1OCwuNzU5NDUsLjkyMTksLjc1OTQ1LDEuMTczMzcsLjg4NDY1LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44ODQ2NSwuODg0NjUsLjg4NDY1LC43NTk0NSwuNzU5NDUsMS4wMjA1OCwxLjAyMDU4LDEuMDIwNTgsLjY5MDQ2LC43MDkyNiwuODUxNTgsLjc3ODEyLC43Njg1MiwuODk1OTEsLjcwNDY2LC43NjEyNSwuODAwOTQsLjg2ODIyLC44Mzg2NCwuNzI4LC43NzIxMiwuNzk0NzUsLjkzNjM3LC44NzUxNCwuODU4OCwuNzYwMTMsLjg1ODgsLjcyNDIxLC42OTg2NiwuNzc1OTgsLjg1OTkxLC44MDgxMSwuODc4MzIsLjc4MTEyLC43NzUxMiwuODU2MiwxLjAyMjIsMS4xODQxNywxLjAyMjIsMS4yNzAxNCwuODk5MDMsMS4xNTAxMiwuOTM4NTksLjk0Mzk5LC44NDYsLjk0Mzk5LC44MTQ1MywxLjAxODYsLjk0MjE5LC45NjAxNywxLjAzMDc1LDEuMDIxNzUsLjkxMiwxLjAzMDc1LC45Njk5OCwuOTYwMTcsLjkzODU5LC45NDM5OSwuOTQzOTksLjk1NDkzLC43NDYsMS4xMjY1OCwuOTQ1NzgsLjkxLC45NzksLjg4MiwuODgyLC44MywuODUwMzQsLjgzNTM3LC44NTAzNCwxLjAyMDU4LC43MDg2OSwuODg0NjUsLjg4NDY1LC44ODQ2NSwuODg0NjUsLjgzNTM3LC45MDA4MywxLjE1MDEyLC45MTYxLC45NDU2NSwuNzM1NDEsMS4wMjA1OCwuNTM2MDksLjY5MzUzLC43OTUxOSwxLjA4NTk1LDEsMSwxLjE1MDEyLDEsLjkxOTc0LC43NTk0NSwxLjE1MDEyLDEsLjk0NDYsLjczMzYxLC45MDA1LC45MDA1LC45MDA1LC42Mjg2NCwuODUxNTgsLjg1MTU4LC44NTE1OCwuODUxNTgsLjg1MTU4LC44NTE1OCwuNzczLC43Njg1MiwuNzA0NjYsLjcwNDY2LC43MDQ2NiwuNzA0NjYsLjgzODY0LC44Mzg2NCwuODM4NjQsLjgzODY0LC45MDU2MSwuODc1MTQsLjg1ODgsLjg1ODgsLjg1ODgsLjg1ODgsLjg1ODgsMS4wMjA1OCwuODU3NTEsLjg1OTkxLC44NTk5MSwuODU5OTEsLjg1OTkxLC43NzUxMiwuNzYwMTMsLjg4MDc1LC45Mzg1OSwuOTM4NTksLjkzODU5LC45Mzg1OSwuOTM4NTksLjkzODU5LC44MDc1LC44NDYsLjgxNDUzLC44MTQ1MywuODE0NTMsLjgxNDUzLC44MjQyNCwuODI0MjQsLjgyNDI0LC44MjQyNCwuOTI3OCwuOTYwMTcsLjkzODU5LC45Mzg1OSwuOTM4NTksLjkzODU5LC45Mzg1OSwxLjA4NTk1LC44NTYyLC45NDU3OCwuOTQ1NzgsLjk0NTc4LC45NDU3OCwuODgyLC45NDU3OCwuODgyLC44NTE1OCwuOTM4NTksLjg1MTU4LC45Mzg1OSwuODUxNTgsLjkzODU5LC43Njg1MiwuODQ2LC43Njg1MiwuODQ2LC43Njg1MiwuODQ2LC43Njg1MiwuODQ2LC44OTU5MSwuODU0NCwuOTA1NjEsLjk0Mzk5LC43MDQ2NiwuODE0NTMsLjcwNDY2LC44MTQ1MywuNzA0NjYsLjgxNDUzLC43MDQ2NiwuODE0NTMsLjcwNDY2LC44MTQ1MywuODAwOTQsLjk0MjE5LC44MDA5NCwuOTQyMTksLjgwMDk0LC45NDIxOSwxLDEsLjg2ODIyLC45NjAxNywuODY4MjIsLjk2MDE3LC44Mzg2NCwuODI0MjQsLjgzODY0LC44MjQyNCwuODM4NjQsLjgyNDI0LC44Mzg2NCwxLjAzMDc1LC44Mzg2NCwuODI0MjQsLjgxNDAyLDEuMDI3MzgsLjcyOCwxLjAyMTc1LDEsMSwuOTEyLC43OTQ3NSwxLjAzMDc1LDEsMSwuNzk0NzUsLjgzOTExLC43OTQ3NSwuNjYyNjYsLjgwNTUzLDEuMDY2NzYsLjg3NTE0LC45NjAxNywxLDEsLjg3NTE0LC45NjAxNywuODY4NjUsLjg3Mzk2LC45NjAxNywuODU4OCwuOTM4NTksLjg1ODgsLjkzODU5LC44NTg4LC45Mzg1OSwuODY3LC44NDc1OSwuNzI0MjEsLjk1NDkzLDEsMSwuNzI0MjEsLjk1NDkzLC42OTg2NiwuNzQ2LC42OTg2NiwuNzQ2LDEsMSwuNjk4NjYsLjc0NiwxLDEsLjc3NTk4LC44ODQxNywuNzc1OTgsMS4xMjY1OCwuODU5OTEsLjk0NTc4LC44NTk5MSwuOTQ1NzgsLjg1OTkxLC45NDU3OCwuODU5OTEsLjk0NTc4LC44NTk5MSwuOTQ1NzgsLjg1OTkxLC45NDU3OCwuODc4MzIsLjk3OSwuNzc1MTIsLjg4MiwuNzc1MTIsLjg1NjIsLjgzLC44NTYyLC44MywuODU2MiwuODMsMSwuODg0NjUsLjg1MTU4LC45Mzg1OSwuNzczLC44MDc1LC44NTc1MSwuODU2MiwxLDEsLjc3NTk4LDEuMTI2NTgsMS4xNTAxMiwxLjE1MDEyLDEuMTUwMTIsMS4xNTAxMiwxLjE1MDEyLDEuMTUzMTMsMS4xNTAxMiwxLjE1MDEyLDEuMTUwMTIsMS4wODEwNiwxLjAzOTAxLC44NTE1OCwuNzcwMjUsLjYyMjY0LC43NjQ2LC42NTM1MSwuODYwMjYsLjY5NDYxLC44OTk0NywxLjAzMDc1LC44NTE1OCwuNzc4MTIsLjc2NDQ5LC44ODgzNiwuNzA0NjYsLjg1NjIsLjg2ODIyLC44NTg4LC44Mzg2NCwuNzcyMTIsLjg1MzA4LC45MzYzNywuODc1MTQsLjgyMzUyLC44NTg4LC44NTcwMSwuNzYwMTMsLjg5MDU4LC43NzU5OCwuODE1NiwuODI1NjUsLjc4MTEyLC43Nzg5OSwuODkzODYsLjgzODY0LC44MTU2LC45NDg2LC45MjM4OCwuOTYxODYsMS4wMzA3NSwuOTExMjMsLjk0ODYsLjkzMjk4LC44NzgsLjkzOTQyLC45MjM4OCwuODQ1OTYsLjk2MTg2LC45NTExOSwxLjAzMDc1LC45MjIsLjg4Nzg3LC45NTgyOSwuODgsLjkzNTU5LC45Mzg1OSwuNzg4MTUsLjkzNzU4LDEsLjg5MjE3LDEuMDM3MzcsLjkxMTIzLC45Mzk2OSwuNzc0ODcsLjg1NzY5LC44Njc5OSwxLjAzMDc1LC45MTEyMywuOTM4NTksLjkxMTIzLC44Njc5OSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC44NzgzMiwuOTc5LC44NzgzMiwuOTc5LC44NzgzMiwuOTc5LC43NzUxMiwuODgyLC45MjE5LDEsLjg5OTAzLDEsMSwxLC44NzMyMSwuODczMjEsLjg3MzIxLDEsMS4wMjcsMS4wMjcsMS4wMjcsLjg2ODQ3LC44Njg0NywuNzkxMjEsMSwxLjEyNCwxLDEsLjczNTcyLC43MzU3MiwxLDEsLjg1MDM0LDEsMSwxLDEsLjg4NDY1LDEsMSwxLC42NjksMSwxLjM2MTQ1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjA0ODI4LDEsLjc0OTQ4LC43NTE4NywxLjAyMDU4LC45ODM5MSwxLjAyMTE5LDEsMSwxLjA2MjMzLDEuMDg1OTUsMS4wODU5NSwxLDEuMDg1OTUsMS4wODU5NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDUyMzMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0scnI9e2xpbmVIZWlnaHQ6MS4yLGxpbmVHYXA6LjJ9LHNyPVsxLjM2ODk4LDEsMSwuNzYzMDUsLjgyNzg0LC45NDkzNSwuODkzNjQsLjkyMjQxLC44OTA3MywuOTA3MDYsLjk4NDcyLC44NTI4MywuODUyODMsMS4wNjY0LDEuMDIwNTgsLjc0NTA1LC45MjE5LC43NDUwNSwxLjIzNDU2LC45MjI0MSwuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMjQxLC45MjI0MSwuNzQ1MDUsLjc0NTA1LDEuMDIwNTgsMS4wMjA1OCwxLjAyMDU4LC43MzAwMiwuNzI2MDEsLjkxNzU1LC44MTI2LC44MDMxNCwuOTIyMjIsLjczNzY0LC43OTcyNiwuODMwNTEsLjkwMjg0LC44NjAyMywuNzQsLjgxMjYsLjg0ODY5LC45NjUxOCwuOTExMTUsLjg4NTgsLjc5NzYxLC44ODU4LC43NDQ5OCwuNzM5MTQsLjgxMzYzLC44OTU5MSwuODM2NTksLjg5NjMzLC44NTYwOCwuODExMSwuOTA1MzEsMS4wMjIyLDEuMjI3MzYsMS4wMjIyLDEuMjcwMTQsLjg5OTAzLC45MDA4OCwuODY2NjcsMS4wMjMxLC44OTYsMS4wMTQxMSwuOTAwODMsMS4wNTA5OSwxLjAwNTEyLC45OTc5MywxLjA1MzI2LDEuMDkzNzcsLjkzOCwxLjA2MjI2LDEuMDAxMTksLjk5NzkzLC45ODcxNCwxLjAyMzEsMS4wMTIzMSwuOTgxOTYsLjc5MiwxLjE5MTM3LC45OTA3NCwuOTYyLDEuMDE5MTUsLjkyNiwuOTQyLC44NTYsLjg1MDM0LC45MjAwNiwuODUwMzQsMS4wMjA1OCwuNjkwNjcsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMjQxLC45MjAwNiwuOTMzMiwuOTAwODgsLjkxODgyLC45MzQ4NCwuNzUzMzksMS4wMjA1OCwuNTY4NjYsLjU0MzI0LC43OTUxOSwxLjA4NTk1LDEsMSwuOTAwODgsMSwuOTUzMjUsLjc0NTA1LC45MDA4OCwxLC45NzE5OCwuNzUzMzksLjkxMDA5LC45MTAwOSwuOTEwMDksLjY2NDY2LC45MTc1NSwuOTE3NTUsLjkxNzU1LC45MTc1NSwuOTE3NTUsLjkxNzU1LC43ODgsLjgwMzE0LC43Mzc2NCwuNzM3NjQsLjczNzY0LC43Mzc2NCwuODYwMjMsLjg2MDIzLC44NjAyMywuODYwMjMsLjkyOTE1LC45MTExNSwuODg1OCwuODg1OCwuODg1OCwuODg1OCwuODg1OCwxLjAyMDU4LC44ODU4LC44OTU5MSwuODk1OTEsLjg5NTkxLC44OTU5MSwuODExMSwuNzk2MTEsLjg5NzEzLC44NjY2NywuODY2NjcsLjg2NjY3LC44NjY2NywuODY2NjcsLjg2NjY3LC44NjkzNiwuODk2LC45MDA4MywuOTAwODMsLjkwMDgzLC45MDA4MywuODQyMjQsLjg0MjI0LC44NDIyNCwuODQyMjQsLjk3Mjc2LC45OTc5MywuOTg3MTQsLjk4NzE0LC45ODcxNCwuOTg3MTQsLjk4NzE0LDEuMDg1OTUsLjg5ODc2LC45OTA3NCwuOTkwNzQsLjk5MDc0LC45OTA3NCwuOTQyLDEuMDIzMSwuOTQyLC45MTc1NSwuODY2NjcsLjkxNzU1LC44NjY2NywuOTE3NTUsLjg2NjY3LC44MDMxNCwuODk2LC44MDMxNCwuODk2LC44MDMxNCwuODk2LC44MDMxNCwuODk2LC45MjIyMiwuOTMzNzIsLjkyOTE1LDEuMDE0MTEsLjczNzY0LC45MDA4MywuNzM3NjQsLjkwMDgzLC43Mzc2NCwuOTAwODMsLjczNzY0LC45MDA4MywuNzM3NjQsLjkwMDgzLC44MzA1MSwxLjAwNTEyLC44MzA1MSwxLjAwNTEyLC44MzA1MSwxLjAwNTEyLDEsMSwuOTAyODQsLjk5NzkzLC45MDk3NiwuOTk3OTMsLjg2MDIzLC44NDIyNCwuODYwMjMsLjg0MjI0LC44NjAyMywuODQyMjQsLjg2MDIzLDEuMDUzMjYsLjg2MDIzLC44NDIyNCwuODI4NzMsMS4wNzQ2OSwuNzQsMS4wOTM3NywxLDEsLjkzOCwuODQ4NjksMS4wNjIyNiwxLDEsLjg0ODY5LC44MzcwNCwuODQ4NjksLjgxNDQxLC44NTU4OCwxLjA4OTI3LC45MTExNSwuOTk3OTMsMSwxLC45MTExNSwuOTk3OTMsLjkxODg3LC45MDk5MSwuOTk3OTMsLjg4NTgsLjk4NzE0LC44ODU4LC45ODcxNCwuODg1OCwuOTg3MTQsLjg5NCwuOTE0MzQsLjc0NDk4LC45ODE5NiwxLDEsLjc0NDk4LC45ODE5NiwuNzM5MTQsLjc5MiwuNzM5MTQsLjc5MiwxLDEsLjczOTE0LC43OTIsMSwxLC44MTM2MywuOTA0LC44MTM2MywxLjE5MTM3LC44OTU5MSwuOTkwNzQsLjg5NTkxLC45OTA3NCwuODk1OTEsLjk5MDc0LC44OTU5MSwuOTkwNzQsLjg5NTkxLC45OTA3NCwuODk1OTEsLjk5MDc0LC44OTYzMywxLjAxOTE1LC44MTExLC45NDIsLjgxMTEsLjkwNTMxLC44NTYsLjkwNTMxLC44NTYsLjkwNTMxLC44NTYsMSwuOTIyNDEsLjkxNzU1LC44NjY2NywuNzg4LC44NjkzNiwuODg1OCwuODk4NzYsMSwxLC44MTM2MywxLjE5MTM3LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDM4OCwxLjAzOTAxLC45MjEzOCwuNzgxMDUsLjcxNTQsLjg2MTY5LC44MDUxMywuOTQwMDcsLjgyNTI4LC45ODYxMiwxLjA2MjI2LC45MTc1NSwuODEyNiwuODE4ODQsLjkyODE5LC43Mzc2NCwuOTA1MzEsLjkwMjg0LC44ODU4LC44NjAyMywuODEyNiwuOTExNzIsLjk2NTE4LC45MTExNSwuODMwODksLjg4NTgsLjg3NzkxLC43OTc2MSwuODkyOTcsLjgxMzYzLC44ODE1NywuODk5OTIsLjg1NjA4LC44MTk5MiwuOTQzMDcsLjg2MDIzLC44ODE1NywuOTUzMDgsLjk4Njk5LC45OTc5MywxLjA2MjI2LC45NTgxNywuOTUzMDgsLjk3MzU4LC45MjgsLjk4MDg4LC45ODY5OSwuOTI3NjEsLjk5NzkzLC45NjAxNywxLjA2MjI2LC45ODYsLjk0NCwuOTU5NzgsLjkzOCwuOTY3MDUsLjk4NzE0LC44MDQ0MiwuOTg5NzIsMSwuODk3NjIsMS4wNDU1MiwuOTU4MTcsLjk5MDA3LC44NzA2NCwuOTE4NzksLjg4ODg4LDEuMDYyMjYsLjk1ODE3LC45ODcxNCwuOTU4MTcsLjg4ODg4LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjg5NjMzLDEuMDE5MTUsLjg5NjMzLDEuMDE5MTUsLjg5NjMzLDEuMDE5MTUsLjgxMTEsLjk0MiwuOTIxOSwxLC44OTkwMywxLDEsMSwuOTMxNzMsLjkzMTczLC45MzE3MywxLDEuMDYzMDQsMS4wNjMwNCwxLjA2OTA0LC44OTkwMywuODk5MDMsLjgwNTQ5LDEsMS4xNTYsMSwxLC43NjU3NSwuNzY1NzUsMSwxLC43MjQ1OCwxLDEsMSwxLC45MjI0MSwxLDEsMSwuNjE5LDEsMS4zNjE0NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wNzI1NywxLC43NDcwNSwuNzExMTksMS4wMjA1OCwxLjAyNCwxLjAyMTE5LDEsMSwxLjE1MzYsMS4wODU5NSwxLjA4NTk1LDEsMS4wODU5NSwxLjA4NTk1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wNTYzOCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSxucj17bGluZUhlaWdodDoxLjIsbGluZUdhcDouMn0sb3I9WzEuNzY3MzgsMSwxLC45OTI5NywuOTgyNCwxLjA0MDE2LDEuMDY0OTcsMS4wMzQyNCwuOTc1MjksMS4xNzY0NywxLjIzMjAzLDEuMTA4NSwxLjEwODUsMS4xNjkzOSwxLjIxMDcsLjk3NTQsMS4yMTQwOCwuOTc1NCwxLjU5NTc4LDEuMDM0MjQsMS4wMzQyNCwxLjAzNDI0LDEuMDM0MjQsMS4wMzQyNCwxLjAzNDI0LDEuMDM0MjQsMS4wMzQyNCwxLjAzNDI0LDEuMDM0MjQsLjgxMzc4LC44MTM3OCwxLjIxMDcsMS4yMTA3LDEuMjEwNywuNzE3MDMsLjk3ODQ3LC45NzM2MywuODg3NzYsLjg2NDEsMS4wMjA5NiwuNzk3OTUsLjg1MTMyLC45MTQsMS4wNjA4NSwxLjE0MDYsLjgwMDcsLjg5ODU4LC44MzY5MywxLjE0ODg5LDEuMDkzOTgsLjk3NDg5LC45MjA5NCwuOTc0ODksLjkwMzk5LC44NDA0MSwuOTU5MjMsMS4wMDEzNSwxLDEuMDY0NjcsLjk4MjQzLC45MDk5NiwuOTkzNjEsMS4xMDg1LDEuNTY5NDIsMS4xMDg1LDEuMjEwNywuNzQ2MjcsLjk0MjgyLC45Njc1MiwxLjAxNTE5LC44NjMwNCwxLjAxMzU5LC45NzI3OCwxLjE1MTAzLDEuMDEzNTksLjk4NTYxLDEuMDIyODUsMS4wMjI4NSwxLjAwNTI3LDEuMDIyODUsMS4wMzAyLC45OTA0MSwxLjAwMDgsMS4wMTUxOSwxLjAxMzU5LDEuMDIyNTgsLjc5MTA0LDEuMTY4NjIsLjk5MDQxLC45NzQ1NCwxLjAyNTExLC45OTI5OCwuOTY3NTIsLjk1ODAxLC45NDg1NiwxLjE2NTc5LC45NDg1NiwxLjIxMDcsLjk4MjQsMS4wMzQyNCwxLjAzNDI0LDEsMS4wMzQyNCwxLjE2NTc5LC44NzI3LDEuMzg3MSwxLjE4NjIyLDEuMTA4MTgsMS4wNDQ3OCwxLjIxMDcsMS4xODYyMiwuNzUxNTUsLjk0OTk0LDEuMjg4MjYsMS4yMTQwOCwxLjIxNDA4LC45MTA1NiwxLC45MTU3MiwuOTc1NCwuNjQ2NjMsMS4xODMyOCwxLjI0ODY2LDEuMDQ0NzgsMS4xNDE2OSwxLjE1NzQ5LDEuMTczODksLjcxNzAzLC45NzM2MywuOTczNjMsLjk3MzYzLC45NzM2MywuOTczNjMsLjk3MzYzLC45MzUwNiwuODY0MSwuNzk3OTUsLjc5Nzk1LC43OTc5NSwuNzk3OTUsMS4xNDA2LDEuMTQwNiwxLjE0MDYsMS4xNDA2LDEuMDIwOTYsMS4wOTM5OCwuOTc0MjYsLjk3NDI2LC45NzQyNiwuOTc0MjYsLjk3NDI2LDEuMjEwNywuOTc0ODksMS4wMDEzNSwxLjAwMTM1LDEuMDAxMzUsMS4wMDEzNSwuOTA5OTYsLjkyMDk0LDEuMDI3OTgsLjk2NzUyLC45Njc1MiwuOTY3NTIsLjk2NzUyLC45Njc1MiwuOTY3NTIsLjkzMTM2LC44NjMwNCwuOTcyNzgsLjk3Mjc4LC45NzI3OCwuOTcyNzgsMS4wMjI4NSwxLjAyMjg1LDEuMDIyODUsMS4wMjI4NSwuOTcxMjIsLjk5MDQxLDEsMSwxLDEsMSwxLjI4ODI2LDEuMDAwOCwuOTkwNDEsLjk5MDQxLC45OTA0MSwuOTkwNDEsLjk2NzUyLDEuMDE1MTksLjk2NzUyLC45NzM2MywuOTY3NTIsLjk3MzYzLC45Njc1MiwuOTczNjMsLjk2NzUyLC44NjQxLC44NjMwNCwuODY0MSwuODYzMDQsLjg2NDEsLjg2MzA0LC44NjQxLC44NjMwNCwxLjAyMDk2LDEuMDMwNTcsMS4wMjA5NiwxLjAzNTE3LC43OTc5NSwuOTcyNzgsLjc5Nzk1LC45NzI3OCwuNzk3OTUsLjk3Mjc4LC43OTc5NSwuOTcyNzgsLjc5Nzk1LC45NzI3OCwuOTE0LDEuMDEzNTksLjkxNCwxLjAxMzU5LC45MTQsMS4wMTM1OSwxLDEsMS4wNjA4NSwuOTg1NjEsMS4wNjA4NSwxLjAwODc5LDEuMTQwNiwxLjAyMjg1LDEuMTQwNiwxLjAyMjg1LDEuMTQwNiwxLjAyMjg1LDEuMTQwNiwxLjAyMjg1LDEuMTQwNiwxLjAyMjg1LC45NzEzOCwxLjA4NjkyLC44MDA3LDEuMDIyODUsMSwxLDEuMDA1MjcsLjgzNjkzLDEuMDIyODUsMSwxLC44MzY5MywuOTQ1NSwuODM2OTMsLjkwNDE4LC44MzY5MywxLjEzMDA1LDEuMDkzOTgsLjk5MDQxLDEsMSwxLjA5Mzk4LC45OTA0MSwuOTY2OTIsMS4wOTI1MSwuOTkwNDEsLjk3NDg5LDEuMDAwOCwuOTc0ODksMS4wMDA4LC45NzQ4OSwxLjAwMDgsLjkzOTk0LC45NzkzMSwuOTAzOTksMS4wMjI1OCwxLDEsLjkwMzk5LDEuMDIyNTgsLjg0MDQxLC43OTEwNCwuODQwNDEsLjc5MTA0LC44NDA0MSwuNzkxMDQsLjg0MDQxLC43OTEwNCwxLDEsLjk1OTIzLDEuMDcwMzQsLjk1OTIzLDEuMTY4NjIsMS4wMDEzNSwuOTkwNDEsMS4wMDEzNSwuOTkwNDEsMS4wMDEzNSwuOTkwNDEsMS4wMDEzNSwuOTkwNDEsMS4wMDEzNSwuOTkwNDEsMS4wMDEzNSwuOTkwNDEsMS4wNjQ2NywxLjAyNTExLC45MDk5NiwuOTY3NTIsLjkwOTk2LC45OTM2MSwuOTU4MDEsLjk5MzYxLC45NTgwMSwuOTkzNjEsLjk1ODAxLDEuMDc3MzMsMS4wMzQyNCwuOTczNjMsLjk2NzUyLC45MzUwNiwuOTMxMzYsLjk3NDg5LDEuMDAwOCwxLDEsLjk1OTIzLDEuMTY4NjIsMS4xNTEwMywxLjE1MTAzLDEuMDExNzMsMS4wMzk1OSwuNzU5NTMsLjgxMzc4LC43OTkxMiwxLjE1MTAzLDEuMjE5OTQsLjk1MTYxLC44NzgxNSwxLjAxMTQ5LC44MTUyNSwuNzY3NiwuOTgxNjcsMS4wMTEzNCwxLjAyNTQ2LC44NDA5NywxLjAzMDg5LDEuMTgxMDIsLjk3MzYzLC44ODc3NiwuODUxMzQsLjk3ODI2LC43OTc5NSwuOTkzNjEsMS4wNjA4NSwuOTc0ODksMS4xNDA2LC44OTg1OCwxLjAzODgsMS4xNDg4OSwxLjA5Mzk4LC44NjAzOSwuOTc0ODksMS4wNTk1LC45MjA5NCwuOTQ3OTMsLjk1OTIzLC45MDk5NiwuOTkzNDYsLjk4MjQzLDEuMDIxMTIsLjk1NDkzLDEuMTQwNiwuOTA5OTYsMS4wMzU3NCwxLjAyNTk3LDEuMDAwOCwxLjE4MTAyLDEuMDY2MjgsMS4wMzU3NCwxLjAxOTIsMS4wMTkzMiwxLjAwODg2LC45NzUzMSwxLjAxMDYsMS4wMDA4LDEuMTMxODksMS4xODEwMiwxLjAyMjc3LC45ODY4MywxLjAwMTYsLjk5NTYxLDEuMDcyMzcsMS4wMDA4LC45MDQzNCwuOTk5MjEsLjkzODAzLC44OTY1LDEuMjMwODUsMS4wNjYyOCwxLjA0OTgzLC45NjI2OCwxLjA0OTksLjk4NDM5LDEuMTgxMDIsMS4wNjYyOCwxLjAwMDgsMS4wNjYyOCwuOTg0MzksLjc5Nzk1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDk0NjYsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk3Mjc4LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDIwNjUsMSwxLDEsMSwxLDEsMS4wNjQ2NywxLjAyNTExLDEuMDY0NjcsMS4wMjUxMSwxLjA2NDY3LDEuMDI1MTEsLjkwOTk2LC45Njc1MiwxLDEuMjE0MDgsLjg5OTAzLDEsMSwuNzUxNTUsMS4wNDM5NCwxLjA0Mzk0LDEuMDQzOTQsMS4wNDM5NCwuOTg2MzMsLjk4NjMzLC45ODYzMywuNzMwNDcsLjczMDQ3LDEuMjA2NDIsLjkxMjExLDEuMjU2MzUsMS4yMjIsMS4wMjk1NiwxLjAzMzcyLDEuMDMzNzIsLjk2MDM5LDEuMjQ2MzMsMSwxLjEyNDU0LC45MzUwMywxLjAzNDI0LDEuMTk2ODcsMS4wMzQyNCwxLDEsMSwuNzcxLDEsMSwxLjE1NzQ5LDEuMTU3NDksMS4xNTc0OSwxLjEwOTQ4LC44NjI3OSwuOTQ0MzQsLjg2Mjc5LC45NDQzNCwuODYxODIsMSwxLDEuMTY4OTcsMSwuOTYwODUsLjkwMTM3LDEuMjEwNywxLjE4NDE2LDEuMTM5NzMsLjY5ODI1LC45NzE2LDIuMTAzMzksMS4yOTAwNCwxLjI5MDA0LDEuMjExNzIsMS4yOTAwNCwxLjI5MDA0LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS40MjYwMywxLC45OTg2MiwuOTk4NjIsMSwuODcwMjUsLjg3MDI1LC44NzAyNSwuODcwMjUsMS4xODg3NCwxLjQyNjAzLDEsMS40MjYwMywxLjQyNjAzLC45OTg2MiwxLDEsMSwxLDEsMS4yODg2LDEuMDQzMTUsMS4xNTI5NiwxLjM0MTYzLDEsMSwxLDEuMDkxOTMsMS4wOTE5MywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sZ3I9e2xpbmVIZWlnaHQ6MS4zMzAwOCxsaW5lR2FwOjB9LElyPVsxLjc2NzM4LDEsMSwuOTg5NDYsMS4wMzk1OSwxLjA0MDE2LDEuMDI4MDksMS4wMzYsLjk3NjM5LDEuMTA5NTMsMS4yMzIwMywxLjExMTQ0LDEuMTExNDQsMS4xNjkzOSwxLjIxMjM3LC45NzU0LDEuMjEyNjEsLjk3NTQsMS41OTc1NCwxLjAzNiwxLjAzNiwxLjAzNiwxLjAzNiwxLjAzNiwxLjAzNiwxLjAzNiwxLjAzNiwxLjAzNiwxLjAzNiwuODEzNzgsLjgxMzc4LDEuMjEyMzcsMS4yMTIzNywxLjIxMjM3LC43MzU0MSwuOTc4NDcsLjk3MzYzLC44OTcyMywuODc4OTcsMS4wNDI2LC43OTQyOSwuODUyOTIsLjkxMTQ5LDEuMDU4MTUsMS4xNDA2LC43OTYzMSwuOTAxMjgsLjgzODUzLDEuMDQzOTYsMS4xMDYxNSwuOTc1NTIsLjk0NDM2LC45NzU1MiwuODg2NDEsLjgwNTI3LC45NjA4MywxLjAwMTM1LDEsMS4wNjc3NywuOTgxNywuOTExNDIsLjk5MzYxLDEuMTExNDQsMS41NzI5MywxLjExMTQ0LDEuMjEyMzcsLjc0NjI3LDEuMzE4MTgsMS4wNjU4NSwuOTcwNDIsLjgzMDU1LC45NzA0MiwuOTM1MDMsMS4xMjYxLC45NzA0MiwuOTc5MjIsMS4xNDIzNiwuOTQ1NTIsMS4wMTA1NCwxLjE0MjM2LDEuMDI0NzEsLjk3OTIyLC45NDE2NSwuOTcwNDIsLjk3MDQyLDEuMDI3NiwuNzg5MjksMS4xMjYxLC45NzkyMiwuOTU4NzQsMS4wMjE5NywuOTg1MDcsLjk2NzUyLC45NzE2OCwuOTUxMDcsMS4xNjU3OSwuOTUxMDcsMS4yMTIzNywxLjAzOTU5LDEuMDM2LDEuMDM2LDEsMS4wMzYsMS4xNjU3OSwuODczNTcsMS4zMTgxOCwxLjE4NzU0LDEuMjY3ODEsMS4wNTM1NiwxLjIxMjM3LDEuMTg2MjIsLjc5NDg3LC45NDk5NCwxLjI5MDA0LDEuMjQwNDcsMS4yNDA0NywxLjMxODE4LDEsLjkxNDg0LC45NzU0LDEuMzE4MTgsMS4xMzQ5LDEuMjQ4NjYsMS4wNTM1NiwxLjEzOTM0LDEuMTU1NzQsMS4xNzM4OSwuNzM1NDEsLjk3MzYzLC45NzM2MywuOTczNjMsLjk3MzYzLC45NzM2MywuOTczNjMsLjk0Mzg1LC44Nzg5NywuNzk0MjksLjc5NDI5LC43OTQyOSwuNzk0MjksMS4xNDA2LDEuMTQwNiwxLjE0MDYsMS4xNDA2LDEuMDQyNiwxLjEwNjE1LC45NzU1MiwuOTc1NTIsLjk3NTUyLC45NzU1MiwuOTc1NTIsMS4yMTIzNywuOTc1NTIsMS4wMDEzNSwxLjAwMTM1LDEuMDAxMzUsMS4wMDEzNSwuOTExNDIsLjk0NDM2LC45ODcyMSwxLjA2NTg1LDEuMDY1ODUsMS4wNjU4NSwxLjA2NTg1LDEuMDY1ODUsMS4wNjU4NSwuOTY3MDUsLjgzMDU1LC45MzUwMywuOTM1MDMsLjkzNTAzLC45MzUwMywxLjE0MjM2LDEuMTQyMzYsMS4xNDIzNiwxLjE0MjM2LC45MzEyNSwuOTc5MjIsLjk0MTY1LC45NDE2NSwuOTQxNjUsLjk0MTY1LC45NDE2NSwxLjI5MDA0LC45NDE2NSwuOTc5MjIsLjk3OTIyLC45NzkyMiwuOTc5MjIsLjk2NzUyLC45NzA0MiwuOTY3NTIsLjk3MzYzLDEuMDY1ODUsLjk3MzYzLDEuMDY1ODUsLjk3MzYzLDEuMDY1ODUsLjg3ODk3LC44MzA1NSwuODc4OTcsLjgzMDU1LC44Nzg5NywuODMwNTUsLjg3ODk3LC44MzA1NSwxLjA0MjYsMS4wMDMzLDEuMDQyNiwuOTcwNDIsLjc5NDI5LC45MzUwMywuNzk0MjksLjkzNTAzLC43OTQyOSwuOTM1MDMsLjc5NDI5LC45MzUwMywuNzk0MjksLjkzNTAzLC45MTE0OSwuOTcwNDIsLjkxMTQ5LC45NzA0MiwuOTExNDksLjk3MDQyLDEsMSwxLjA1ODE1LC45NzkyMiwxLjA1ODE1LC45NzkyMiwxLjE0MDYsMS4xNDIzNiwxLjE0MDYsMS4xNDIzNiwxLjE0MDYsMS4xNDIzNiwxLjE0MDYsMS4xNDIzNiwxLjE0MDYsMS4xNDIzNiwuOTc0NDEsMS4wNDMwMiwuNzk2MzEsMS4wMTU4MiwxLDEsMS4wMTA1NCwuODM4NTMsMS4xNDIzNiwxLDEsLjgzODUzLDEuMDkxMjUsLjgzODUzLC45MDQxOCwuODM4NTMsMS4xOTUwOCwxLjEwNjE1LC45NzkyMiwxLDEsMS4xMDYxNSwuOTc5MjIsMS4wMTAzNCwxLjEwNDY2LC45NzkyMiwuOTc1NTIsLjk0MTY1LC45NzU1MiwuOTQxNjUsLjk3NTUyLC45NDE2NSwuOTE2MDIsLjkxOTgxLC44ODY0MSwxLjAyNzYsMSwxLC44ODY0MSwxLjAyNzYsLjgwNTI3LC43ODkyOSwuODA1MjcsLjc4OTI5LC44MDUyNywuNzg5MjksLjgwNTI3LC43ODkyOSwxLDEsLjk2MDgzLDEuMDU0MDMsLjk1OTIzLDEuMTY4NjIsMS4wMDEzNSwuOTc5MjIsMS4wMDEzNSwuOTc5MjIsMS4wMDEzNSwuOTc5MjIsMS4wMDEzNSwuOTc5MjIsMS4wMDEzNSwuOTc5MjIsMS4wMDEzNSwuOTc5MjIsMS4wNjc3NywxLjAyMTk3LC45MTE0MiwuOTY3NTIsLjkxMTQyLC45OTM2MSwuOTcxNjgsLjk5MzYxLC45NzE2OCwuOTkzNjEsLjk3MTY4LDEuMjMxOTksMS4wMzYsLjk3MzYzLDEuMDY1ODUsLjk0Mzg1LC45NjcwNSwuOTc1NTIsLjk0MTY1LDEsMSwuOTYwODMsMS4xMjYxLDEuMzE4MTgsMS4zMTgxOCwxLjMxODE4LDEuMzE4MTgsMS4zMTgxOCwxLjMxODE4LDEuMzE4MTgsMS4zMTgxOCwxLjMxODE4LC45NTE2MSwxLjI3MTI2LDEuMDA4MTEsLjgzMjg0LC43NzcwMiwuOTkxMzcsLjk1MjUzLDEuMDM0NywuODYxNDIsMS4wNzIwNSwxLjE0MjM2LC45NzM2MywuODk3MjMsLjg2ODY5LDEuMDk4MTgsLjc5NDI5LC45OTM2MSwxLjA1ODE1LC45NzU1MiwxLjE0MDYsLjkwMTI4LDEuMDY2NjIsMS4wNDM5NiwxLjEwNjE1LC44NDkxOCwuOTc1NTIsMS4wNDY5NCwuOTQ0MzYsLjk4MDE1LC45NjA4MywuOTExNDIsMS4wMDM1NiwuOTgxNywxLjAxOTQ1LC45ODk5OSwxLjE0MDYsLjkxMTQyLDEuMDQ5NjEsLjk4OTgsMS4wMDYzOSwxLjE0MjM2LDEuMDc1MTQsMS4wNDk2MSwuOTk2MDcsMS4wMjg5NywxLjAwOCwuOTg5OCwuOTUxMzQsMS4wMDYzOSwxLjExMTIxLDEuMTQyMzYsMS4wMDUxOCwuOTc5ODEsMS4wMjE4NiwxLDEuMDg1NzgsLjk0MTY1LC45OTMxNCwuOTgzODcsLjkzMDI4LC45MzM3NywxLjM1MTI1LDEuMDc1MTQsMS4xMDY4NywuOTM0OTEsMS4wNDIzMiwxLjAwMzUxLDEuMTQyMzYsMS4wNzUxNCwuOTQxNjUsMS4wNzUxNCwxLjAwMzUxLC43OTQyOSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjA5MDk3LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45MzUwMywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTY2MDksMSwxLDEsMSwxLDEsMS4wNjc3NywxLjAyMTk3LDEuMDY3NzcsMS4wMjE5NywxLjA2Nzc3LDEuMDIxOTcsLjkxMTQyLC45Njc1MiwxLDEuMjEyNjEsLjg5OTAzLDEsMSwuNzUxNTUsMS4wNDc0NSwxLjA0NzQ1LDEuMDQ3NDUsMS4wNDM5NCwuOTg2MzMsLjk4NjMzLC45ODYzMywuNzI5NTksLjcyOTU5LDEuMjA1MDIsLjkxNDA2LDEuMjY1MTQsMS4yMjIsMS4wMjk1NiwxLjAzMzcyLDEuMDMzNzIsLjk2MDM5LDEuMjQ2MzMsMSwxLjA5MTI1LC45MzMyNywxLjAzMzM2LDEuMTY1NDEsMS4wMzYsMSwxLDEsLjc3MSwxLDEsMS4xNTU3NCwxLjE1NTc0LDEuMTU1NzQsMS4xNTU3NCwuODYzNjQsLjk0NDM0LC44NjI3OSwuOTQ0MzQsLjg2MjI0LDEsMSwxLjE2Nzk4LDEsLjk2MDg1LC45MDA2OCwxLjIxMjM3LDEuMTg0MTYsMS4xMzkwNCwuNjk4MjUsLjk3MTYsMi4xMDMzOSwxLjI5MDA0LDEuMjkwMDQsMS4yMTMzOSwxLjI5MDA0LDEuMjkwMDQsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjQyNjAzLDEsLjk5ODYyLC45OTg2MiwxLC44NzAyNSwuODcwMjUsLjg3MDI1LC44NzAyNSwxLjE4Nzc1LDEuNDI2MDMsMSwxLjQyNjAzLDEuNDI2MDMsLjk5ODYyLDEsMSwxLDEsMSwxLjI4ODYsMS4wNDMxNSwxLjE1Mjk2LDEuMzQxNjMsMSwxLDEsMS4xMzI2OSwxLjEzMjY5LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSxjcj17bGluZUhlaWdodDoxLjMzMDA4LGxpbmVHYXA6MH0sQ3I9WzEuNzY3MzgsMSwxLC45ODk0NiwxLjE0NzYzLDEuMDUzNjUsMS4wNjIzNCwuOTY5MjcsLjkyNTg2LDEuMTUzNzMsMS4xODQxNCwuOTEzNDksLjkxMzQ5LDEuMDc0MDMsMS4xNzMwOCwuNzgzODMsMS4yMDA4OCwuNzgzODMsMS40MjUzMSwuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjc4MzgzLC43ODM4MywxLjE3MzA4LDEuMTczMDgsMS4xNzMwOCwuNzczNDksLjk0NTY1LC45NDcyOSwuODU5NDQsLjg4NTA2LC45ODU4LC43NDgxNywuODAwMTYsLjg4NDQ5LC45ODAzOSwuOTU3ODIsLjY5MjM4LC44OTg5OCwuODMyMzEsLjk4MTgzLDEuMDM5ODksLjk2OTI0LC44NjIzNywuOTY5MjQsLjgwNTk1LC43NDUyNCwuODYwOTEsLjk1NDAyLC45NDE0MywuOTg0NDgsLjg4NTgsLjgzMDg5LC45MzI4NSwxLjA5NDksMS4zOTAxNiwxLjA5NDksMS40NTk5NCwuNzQ2MjcsMS4wNDgzOSwuOTc0NTQsLjk3NDU0LC44NzIwNywuOTc0NTQsLjg3NTMzLDEuMDYxNTEsLjk3NDU0LDEuMDAxNzYsMS4xNjQ4NCwxLjA4MTMyLC45ODA0NywxLjE2NDg0LDEuMDI5ODksMS4wMTA1NCwuOTYyMjUsLjk3NDU0LC45NzQ1NCwxLjA2NTk4LC43OTAwNCwxLjE2MzQ0LDEuMDAzNTEsLjk0NjI5LC45OTczLC45MTAxNiwuOTY3NzcsLjkwNDMsLjkxMDgyLC45MjQ4MSwuOTEwODIsMS4xNzMwOCwuOTU3NDgsLjk2OTI3LC45NjkyNywxLC45NjkyNywuOTI0ODEsLjgwNTk3LDEuMDQ4MzksMS4yMzM5MywxLjE3ODEsLjkyNDUsMS4xNzMwOCwxLjIwODA4LC42MzIxOCwuOTQyNjEsMS4yNDgyMiwxLjA5OTcxLDEuMDk5NzEsMS4wNDgzOSwxLC44NTI3MywuNzgwMzIsMS4wNDgzOSwxLjA5OTcxLDEuMjIzMjYsLjkyNDUsMS4wOTgzNiwxLjEzNTI1LDEuMTUyMjIsLjcwNDI0LC45NDcyOSwuOTQ3MjksLjk0NzI5LC45NDcyOSwuOTQ3MjksLjk0NzI5LC44NTQ5OCwuODg1MDYsLjc0ODE3LC43NDgxNywuNzQ4MTcsLjc0ODE3LC45NTc4MiwuOTU3ODIsLjk1NzgyLC45NTc4MiwuOTg1OCwxLjAzOTg5LC45NjkyNCwuOTY5MjQsLjk2OTI0LC45NjkyNCwuOTY5MjQsMS4xNzMwOCwuOTY5MjQsLjk1NDAyLC45NTQwMiwuOTU0MDIsLjk1NDAyLC44MzA4OSwuODYyMzcsLjg4NDA5LC45NzQ1NCwuOTc0NTQsLjk3NDU0LC45NzQ1NCwuOTc0NTQsLjk3NDU0LC45MjkxNiwuODcyMDcsLjg3NTMzLC44NzUzMywuODc1MzMsLjg3NTMzLC45MzE0NiwuOTMxNDYsLjkzMTQ2LC45MzE0NiwuOTM4NTQsMS4wMTA1NCwuOTYyMjUsLjk2MjI1LC45NjIyNSwuOTYyMjUsLjk2MjI1LDEuMjQ4MjIsLjg3NjEsMS4wMDM1MSwxLjAwMzUxLDEuMDAzNTEsMS4wMDM1MSwuOTY3NzcsLjk3NDU0LC45Njc3NywuOTQ3MjksLjk3NDU0LC45NDcyOSwuOTc0NTQsLjk0NzI5LC45NzQ1NCwuODg1MDYsLjg3MjA3LC44ODUwNiwuODcyMDcsLjg4NTA2LC44NzIwNywuODg1MDYsLjg3MjA3LC45ODU4LC45NTM5MSwuOTg1OCwuOTc0NTQsLjc0ODE3LC44NzUzMywuNzQ4MTcsLjg3NTMzLC43NDgxNywuODc1MzMsLjc0ODE3LC44NzUzMywuNzQ4MTcsLjg3NTMzLC44ODQ0OSwuOTc0NTQsLjg4NDQ5LC45NzQ1NCwuODg0NDksLjk3NDU0LDEsMSwuOTgwMzksMS4wMDE3NiwuOTgwMzksMS4wMDE3NiwuOTU3ODIsLjkzMTQ2LC45NTc4MiwuOTMxNDYsLjk1NzgyLC45MzE0NiwuOTU3ODIsMS4xNjQ4NCwuOTU3ODIsLjkzMTQ2LC44NDQyMSwxLjEyNzYxLC42OTIzOCwxLjA4MTMyLDEsMSwuOTgwNDcsLjgzMjMxLDEuMTY0ODQsMSwxLC44NDcyMywxLjA0ODYxLC44NDcyMywuNzg3NTUsLjgzMjMxLDEuMjM3MzYsMS4wMzk4OSwxLjAxMDU0LDEsMSwxLjAzOTg5LDEuMDEwNTQsLjk4NTcsMS4wMzg0OSwxLjAxMDU0LC45NjkyNCwuOTYyMjUsLjk2OTI0LC45NjIyNSwuOTY5MjQsLjk2MjI1LC45MjM4MywuOTAxNzEsLjgwNTk1LDEuMDY1OTgsMSwxLC44MDU5NSwxLjA2NTk4LC43NDUyNCwuNzkwMDQsLjc0NTI0LC43OTAwNCwuNzQ1MjQsLjc5MDA0LC43NDUyNCwuNzkwMDQsMSwxLC44NjA5MSwxLjAyNzU5LC44NTc3MSwxLjE2MzQ0LC45NTQwMiwxLjAwMzUxLC45NTQwMiwxLjAwMzUxLC45NTQwMiwxLjAwMzUxLC45NTQwMiwxLjAwMzUxLC45NTQwMiwxLjAwMzUxLC45NTQwMiwxLjAwMzUxLC45ODQ0OCwuOTk3MywuODMwODksLjk2Nzc3LC44MzA4OSwuOTMyODUsLjkwNDMsLjkzMjg1LC45MDQzLC45MzI4NSwuOTA0MywxLjMxODY4LC45NjkyNywuOTQ3MjksLjk3NDU0LC44NTQ5OCwuOTI5MTYsLjk2OTI0LC44NzYxLDEsMSwuODYwOTEsMS4xNjM0NCwxLjA0ODM5LDEuMDQ4MzksMS4wNDgzOSwxLjA0ODM5LDEuMDQ4MzksMS4wNDgzOSwxLjA0ODM5LDEuMDQ4MzksMS4wNDgzOSwuODE5NjUsLjgxOTY1LC45NDcyOSwuNzgwMzIsLjcxMDIyLC45MDg4MywuODQxNzEsLjk5ODc3LC43NzU5NiwxLjA1NzM0LDEuMiwuOTQ3MjksLjg1OTQ0LC44Mjc5MSwuOTYwNywuNzQ4MTcsLjkzMjg1LC45ODAzOSwuOTY5MjQsLjk1NzgyLC44OTg5OCwuOTgzMTYsLjk4MTgzLDEuMDM5ODksLjc4NjE0LC45NjkyNCwuOTc2NDIsLjg2MjM3LC44NjA3NSwuODYwOTEsLjgzMDg5LC45MDA4MiwuODg1OCwuOTcyOTYsMS4wMTI4NCwuOTU3ODIsLjgzMDg5LDEuMDk3NiwxLjA0LDEuMDMzNDIsMS4yLDEuMDY3NSwxLjA5NzYsLjk4MjA1LDEuMDM4MDksMS4wNTA5NywxLjA0LC45NTM2NCwxLjAzMzQyLDEuMDU0MDEsMS4yLDEuMDIxNDgsMS4wMTE5LDEuMDQ3MjQsMS4wMTI3LDEuMDI3MzIsLjk2MjI1LC44OTY1LC45Nzc4MywuOTM1NzQsLjk0ODE4LDEuMzA2NzksMS4wNjc1LDEuMTE4MjYsLjk5ODIxLDEuMDU1NywxLjAzMjYsMS4yLDEuMDY3NSwuOTYyMjUsMS4wNjc1LDEuMDMyNiwuNzQ4MTcsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wMzc1NCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODc1MzMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk4NzA1LDEsMSwxLDEsMSwxLC45ODQ0OCwuOTk3MywuOTg0NDgsLjk5NzMsLjk4NDQ4LC45OTczLC44MzA4OSwuOTY3NzcsMSwxLjIwMDg4LC44OTkwMywxLDEsLjc1MTU1LC45NDk0NSwuOTQ5NDUsLjk0OTQ1LC45NDk0NSwxLjEyMzE3LDEuMTIzMTcsMS4xMjMxNywuNjc2MDMsLjY3NjAzLDEuMTU2MjEsLjczNTg0LDEuMjExOTEsMS4yMjEzNSwxLjA2NDgzLC45NDg2OCwuOTQ4NjgsLjk1OTk2LDEuMjQ2MzMsMSwxLjA3NDk3LC44NzcwOSwuOTY5MjcsMS4wMTQ3MywuOTY5MjcsMSwxLDEsLjc3Mjk1LDEsMSwxLjA5ODM2LDEuMDk4MzYsMS4wOTgzNiwxLjAxNTIyLC44NjMyMSwuOTQ0MzQsLjg2NDksLjk0NDM0LC44NjE4MiwxLDEsMS4wODMsMSwuOTE1NzgsLjg2NDM4LDEuMTczMDgsMS4xODQxNiwxLjE0NTg5LC42OTgyNSwuOTc2MjIsMS45Njc5MSwxLjI0ODIyLDEuMjQ4MjIsMS4xNzMwOCwxLjI0ODIyLDEuMjQ4MjIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjQyNjAzLDEsLjk5ODYyLC45OTg2MiwxLC44NzAyNSwuODcwMjUsLjg3MDI1LC44NzAyNSwxLjE3OTg0LDEuNDI2MDMsMSwxLjQyNjAzLDEuNDI2MDMsLjk5ODYyLDEsMSwxLDEsMSwxLjI4ODYsMS4wNDMxNSwxLjE1Mjk2LDEuMzQxNjMsMSwxLDEsMS4xMDc0MiwxLjEwNzQyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSxocj17bGluZUhlaWdodDoxLjMzMDA4LGxpbmVHYXA6MH0sbHI9WzEuNzY3MzgsMSwxLC45ODU5NCwxLjAyMjg1LDEuMTA0NTQsMS4wNjIzNCwuOTY5MjcsLjkyMDM3LDEuMTk5ODUsMS4yMDQ2LC45MDYxNiwuOTA2MTYsMS4wNzE1MiwxLjE3MTQsLjc4MDMyLDEuMjAwODgsLjc4MDMyLDEuNDAyNDYsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC43ODAzMiwuNzgwMzIsMS4xNzE0LDEuMTcxNCwxLjE3MTQsLjgwNTk3LC45NDA4NCwuOTY3MDYsLjg1OTQ0LC44NTczNCwuOTcwOTMsLjc1ODQyLC43OTkzNiwuODgxOTgsLjk4MzEsLjk1NzgyLC43MTM4NywuODY5NjksLjg0NjM2LDEuMDc3OTYsMS4wMzU4NCwuOTY5MjQsLjgzOTY4LC45NjkyNCwuODI4MjYsLjc5NjQ5LC44NTc3MSwuOTUxMzIsLjkzMTE5LC45ODk2NSwuODg0MzMsLjgyODcsLjkzMzY1LDEuMDg2MTIsMS4zNjM4LDEuMDg2MTIsMS40NTc4NiwuNzQ2MjcsLjgwNDk5LC45MTQ4NCwxLjA1NzA3LC45MjM4MywxLjA1ODgyLC45NDAzLDEuMTI2NTQsMS4wNTg4MiwxLjAxNzU2LDEuMDkwMTEsMS4wOTAxMSwuOTk0MTQsMS4wOTAxMSwxLjAzNCwxLjAxNzU2LDEuMDUzNTYsMS4wNTcwNywxLjA1ODgyLDEuMDQzOTksLjg0ODYzLDEuMjE5NjgsMS4wMTc1NiwuOTU4MDEsMS4wMDA2OCwuOTE3OTcsLjk2Nzc3LC45MDQzLC45MDM1MSwuOTIxMDUsLjkwMzUxLDEuMTcxNCwuODUzMzcsLjk2OTI3LC45NjkyNywuOTk5MTIsLjk2OTI3LC45MjEwNSwuODA1OTcsMS4yNDM0LDEuMjA4MDgsMS4wNTkzNywuOTA5NTcsMS4xNzE0LDEuMjA4MDgsLjc1MTU1LC45NDI2MSwxLjI0NjQ0LDEuMDk5NzEsMS4wOTk3MSwuODQ3NTEsMSwuODUyNzMsLjc4MDMyLC42MTU4NCwxLjA1NDI1LDEuMTc5MTQsLjkwOTU3LDEuMDg2NjUsMS4xMTU5MywxLjE0MTY5LC43MzM4MSwuOTY3MDYsLjk2NzA2LC45NjcwNiwuOTY3MDYsLjk2NzA2LC45NjcwNiwuODYwMzUsLjg1NzM0LC43NTg0MiwuNzU4NDIsLjc1ODQyLC43NTg0MiwuOTU3ODIsLjk1NzgyLC45NTc4MiwuOTU3ODIsLjk3MDkzLDEuMDM1ODQsLjk2OTI0LC45NjkyNCwuOTY5MjQsLjk2OTI0LC45NjkyNCwxLjE3MTQsLjk2OTI0LC45NTEzMiwuOTUxMzIsLjk1MTMyLC45NTEzMiwuODI4NywuODM5NjgsLjg5MDQ5LC45MTQ4NCwuOTE0ODQsLjkxNDg0LC45MTQ4NCwuOTE0ODQsLjkxNDg0LC45MzU3NSwuOTIzODMsLjk0MDMsLjk0MDMsLjk0MDMsLjk0MDMsLjg3MTcsLjg3MTcsLjg3MTcsLjg3MTcsMS4wMDUyNywxLjAxNzU2LDEuMDUzNTYsMS4wNTM1NiwxLjA1MzU2LDEuMDUzNTYsMS4wNTM1NiwxLjI0NjQ0LC45NTkyMywxLjAxNzU2LDEuMDE3NTYsMS4wMTc1NiwxLjAxNzU2LC45Njc3NywxLjA1NzA3LC45Njc3NywuOTY3MDYsLjkxNDg0LC45NjcwNiwuOTE0ODQsLjk2NzA2LC45MTQ4NCwuODU3MzQsLjkyMzgzLC44NTczNCwuOTIzODMsLjg1NzM0LC45MjM4MywuODU3MzQsLjkyMzgzLC45NzA5MywxLjA5NjksLjk3MDkzLDEuMDU4ODIsLjc1ODQyLC45NDAzLC43NTg0MiwuOTQwMywuNzU4NDIsLjk0MDMsLjc1ODQyLC45NDAzLC43NTg0MiwuOTQwMywuODgxOTgsMS4wNTg4MiwuODgxOTgsMS4wNTg4MiwuODgxOTgsMS4wNTg4MiwxLDEsLjk4MzEsMS4wMTc1NiwuOTgzMSwxLjAxNzU2LC45NTc4MiwuODcxNywuOTU3ODIsLjg3MTcsLjk1NzgyLC44NzE3LC45NTc4MiwxLjA5MDExLC45NTc4MiwuODcxNywuODQ3ODQsMS4xMTU1MSwuNzEzODcsMS4wOTAxMSwxLDEsLjk5NDE0LC44NDYzNiwxLjA5MDExLDEsMSwuODQ2MzYsMS4wNTM2LC44NDYzNiwuOTQyOTgsLjg0NjM2LDEuMjMyOTcsMS4wMzU4NCwxLjAxNzU2LDEsMSwxLjAzNTg0LDEuMDE3NTYsMS4wMDMyMywxLjAzNDQ0LDEuMDE3NTYsLjk2OTI0LDEuMDUzNTYsLjk2OTI0LDEuMDUzNTYsLjk2OTI0LDEuMDUzNTYsLjkzMDY2LC45ODI5MywuODI4MjYsMS4wNDM5OSwxLDEsLjgyODI2LDEuMDQzOTksLjc5NjQ5LC44NDg2MywuNzk2NDksLjg0ODYzLC43OTY0OSwuODQ4NjMsLjc5NjQ5LC44NDg2MywxLDEsLjg1NzcxLDEuMTczMTgsLjg1NzcxLDEuMjE5NjgsLjk1MTMyLDEuMDE3NTYsLjk1MTMyLDEuMDE3NTYsLjk1MTMyLDEuMDE3NTYsLjk1MTMyLDEuMDE3NTYsLjk1MTMyLDEuMDE3NTYsLjk1MTMyLDEuMDE3NTYsLjk4OTY1LDEuMDAwNjgsLjgyODcsLjk2Nzc3LC44Mjg3LC45MzM2NSwuOTA0MywuOTMzNjUsLjkwNDMsLjkzMzY1LC45MDQzLDEuMDg1NzEsLjk2OTI3LC45NjcwNiwuOTE0ODQsLjg2MDM1LC45MzU3NSwuOTY5MjQsLjk1OTIzLDEsMSwuODU3NzEsMS4yMTk2OCwxLjExNDM3LDEuMTE0MzcsLjkzMTA5LC45MTIwMiwuNjA0MTEsLjg0MTY0LC41NTU3MiwxLjAxMTczLC45NzM2MSwuODE4MTgsLjgxODE4LC45NjYzNSwuNzgwMzIsLjcyNzI3LC45MjM2NiwuOTg2MDEsMS4wMzQwNSwuNzc5NjgsMS4wOTc5OSwxLjIsLjk2NzA2LC44NTk0NCwuODU2MzgsLjk2NDkxLC43NTg0MiwuOTMzNjUsLjk4MzEsLjk2OTI0LC45NTc4MiwuODY5NjksLjk0MTUyLDEuMDc3OTYsMS4wMzU4NCwuNzg0MzcsLjk2OTI0LC45ODcxNSwuODM5NjgsLjgzNDkxLC44NTc3MSwuODI4NywuOTQ0OTIsLjg4NDMzLC45Mjg3LDEuMDA5OCwuOTU3ODIsLjgyODcsMS4wNjI1LC45ODI0OCwxLjAzNDI0LDEuMiwxLjAxMDcxLDEuMDYyNSwuOTUyNDYsMS4wMzgwOSwxLjA0OTEyLC45ODI0OCwxLjAwMjIxLDEuMDM0MjQsMS4wNTQ0MywxLjIsMS4wNDc4NSwuOTk2MDksMS4wMDE2OSwxLjA1MTc2LC45OTM0NiwxLjA1MzU2LC45MDg3LDEuMDMwMDQsLjk1NTQyLC45MzExNywxLjIzMzYyLDEuMDEwNzEsMS4wNzgzMSwxLjAyNTEyLDEuMDUyMDUsMS4wMzUwMiwxLjIsMS4wMTA3MSwxLjA1MzU2LDEuMDEwNzEsMS4wMzUwMiwuNzU4NDIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wMzcxOSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTQwMywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjA0MDIxLDEsMSwxLDEsMSwxLC45ODk2NSwxLjAwMDY4LC45ODk2NSwxLjAwMDY4LC45ODk2NSwxLjAwMDY4LC44Mjg3LC45Njc3NywxLDEuMjAwODgsLjg5OTAzLDEsMSwuNzUxNTUsMS4wMzA3NywxLjAzMDc3LDEuMDMwNzcsMS4wMzA3NywxLjEzMTk2LDEuMTMxOTYsMS4xMzE5NiwuNjc0MjgsLjY3NDI4LDEuMTYwMzksLjczMjkxLDEuMjA5OTYsMS4yMjEzNSwxLjA2NDgzLC45NDg2OCwuOTQ4NjgsLjk1OTk2LDEuMjQ2MzMsMSwxLjA3NDk3LC44Nzc5NiwuOTY5MjcsMS4wMTUxOCwuOTY5MjcsMSwxLDEsLjc3Mjk1LDEsMSwxLjEwNTM5LDEuMTA1MzksMS4xMTM1OCwxLjA2OTY3LC44NjI3OSwuOTQ0MzQsLjg2Mjc5LC45NDQzNCwuODYxODIsMSwxLDEuMDgzLDEsLjkxNTc4LC44NjUwNywxLjE3MTQsMS4xODQxNiwxLjE0NTg5LC42OTgyNSwuOTc2MjIsMS45Njk3LDEuMjQ4MjIsMS4yNDgyMiwxLjE3MjM4LDEuMjQ4MjIsMS4yNDgyMiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuNDI2MDMsMSwuOTk4NjIsLjk5ODYyLDEsLjg3MDI1LC44NzAyNSwuODcwMjUsLjg3MDI1LDEuMTgwODMsMS40MjYwMywxLDEuNDI2MDMsMS40MjYwMywuOTk4NjIsMSwxLDEsMSwxLDEuMjg4NiwxLjA0MzE1LDEuMTUyOTYsMS4zNDE2MywxLDEsMSwxLjEwOTM4LDEuMTA5MzgsMSwxLDEsMS4wNTQyNSwxLjA5OTcxLDEuMDk5NzEsMS4wOTk3MSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLFFyPXtsaW5lSGVpZ2h0OjEuMzMwMDgsbGluZUdhcDowfSxFcj1nZXRMb29rdXBUYWJsZUZhY3RvcnkoKGZ1bmN0aW9uKGUpe2VbIk15cmlhZFByby1SZWd1bGFyIl09ZVsiUGRmSlMtRmFsbGJhY2stUmVndWxhciJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1SZWd1bGFyIixmYWN0b3JzOnNyLGJhc2VXaWR0aHM6emEsYmFzZU1hcHBpbmc6JGEsbWV0cmljczpucn07ZVsiTXlyaWFkUHJvLUJvbGQiXT1lWyJQZGZKUy1GYWxsYmFjay1Cb2xkIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUJvbGQiLGZhY3RvcnM6QXIsYmFzZVdpZHRoczpXYSxiYXNlTWFwcGluZzpqYSxtZXRyaWNzOmVyfTtlWyJNeXJpYWRQcm8tSXQiXT1lWyJNeXJpYWRQcm8tSXRhbGljIl09ZVsiUGRmSlMtRmFsbGJhY2stSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUl0YWxpYyIsZmFjdG9yczphcixiYXNlV2lkdGhzOlZhLGJhc2VNYXBwaW5nOl9hLG1ldHJpY3M6cnJ9O2VbIk15cmlhZFByby1Cb2xkSXQiXT1lWyJNeXJpYWRQcm8tQm9sZEl0YWxpYyJdPWVbIlBkZkpTLUZhbGxiYWNrLUJvbGRJdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtQm9sZEl0YWxpYyIsZmFjdG9yczp0cixiYXNlV2lkdGhzOlhhLGJhc2VNYXBwaW5nOlphLG1ldHJpY3M6aXJ9O2UuQXJpYWxNVD1lLkFyaWFsPWVbIkFyaWFsLVJlZ3VsYXIiXT17bmFtZToiTGliZXJhdGlvblNhbnMtUmVndWxhciIsYmFzZVdpZHRoczp6YSxiYXNlTWFwcGluZzokYX07ZVsiQXJpYWwtQm9sZE1UIl09ZVsiQXJpYWwtQm9sZCJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkIixiYXNlV2lkdGhzOldhLGJhc2VNYXBwaW5nOmphfTtlWyJBcmlhbC1JdGFsaWNNVCJdPWVbIkFyaWFsLUl0YWxpYyJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1JdGFsaWMiLGJhc2VXaWR0aHM6VmEsYmFzZU1hcHBpbmc6X2F9O2VbIkFyaWFsLUJvbGRJdGFsaWNNVCJdPWVbIkFyaWFsLUJvbGRJdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtQm9sZEl0YWxpYyIsYmFzZVdpZHRoczpYYSxiYXNlTWFwcGluZzpaYX07ZVsiQ2FsaWJyaS1SZWd1bGFyIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLVJlZ3VsYXIiLGZhY3RvcnM6TGEsYmFzZVdpZHRoczp6YSxiYXNlTWFwcGluZzokYSxtZXRyaWNzOkhhfTtlWyJDYWxpYnJpLUJvbGQiXT17bmFtZToiTGliZXJhdGlvblNhbnMtQm9sZCIsZmFjdG9yczpSYSxiYXNlV2lkdGhzOldhLGJhc2VNYXBwaW5nOmphLG1ldHJpY3M6TmF9O2VbIkNhbGlicmktSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUl0YWxpYyIsZmFjdG9yczpVYSxiYXNlV2lkdGhzOlZhLGJhc2VNYXBwaW5nOl9hLG1ldHJpY3M6TWF9O2VbIkNhbGlicmktQm9sZEl0YWxpYyJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkSXRhbGljIixmYWN0b3JzOkdhLGJhc2VXaWR0aHM6WGEsYmFzZU1hcHBpbmc6WmEsbWV0cmljczp4YX07ZVsiU2Vnb2V1aS1SZWd1bGFyIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLVJlZ3VsYXIiLGZhY3RvcnM6bHIsYmFzZVdpZHRoczp6YSxiYXNlTWFwcGluZzokYSxtZXRyaWNzOlFyfTtlWyJTZWdvZXVpLUJvbGQiXT17bmFtZToiTGliZXJhdGlvblNhbnMtQm9sZCIsZmFjdG9yczpvcixiYXNlV2lkdGhzOldhLGJhc2VNYXBwaW5nOmphLG1ldHJpY3M6Z3J9O2VbIlNlZ29ldWktSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUl0YWxpYyIsZmFjdG9yczpDcixiYXNlV2lkdGhzOlZhLGJhc2VNYXBwaW5nOl9hLG1ldHJpY3M6aHJ9O2VbIlNlZ29ldWktQm9sZEl0YWxpYyJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkSXRhbGljIixmYWN0b3JzOklyLGJhc2VXaWR0aHM6WGEsYmFzZU1hcHBpbmc6WmEsbWV0cmljczpjcn07ZVsiSGVsdmV0aWNhLVJlZ3VsYXIiXT1lLkhlbHZldGljYT17bmFtZToiTGliZXJhdGlvblNhbnMtUmVndWxhciIsZmFjdG9yczpPYSxiYXNlV2lkdGhzOnphLGJhc2VNYXBwaW5nOiRhLG1ldHJpY3M6UGF9O2VbIkhlbHZldGljYS1Cb2xkIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUJvbGQiLGZhY3RvcnM6SmEsYmFzZVdpZHRoczpXYSxiYXNlTWFwcGluZzpqYSxtZXRyaWNzOnZhfTtlWyJIZWx2ZXRpY2EtSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUl0YWxpYyIsZmFjdG9yczpLYSxiYXNlV2lkdGhzOlZhLGJhc2VNYXBwaW5nOl9hLG1ldHJpY3M6cWF9O2VbIkhlbHZldGljYS1Cb2xkSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUJvbGRJdGFsaWMiLGZhY3RvcnM6WWEsYmFzZVdpZHRoczpYYSxiYXNlTWFwcGluZzpaYSxtZXRyaWNzOlRhfX0pKTtmdW5jdGlvbiBnZXRYZmFGb250TmFtZShlKXtjb25zdCB0PW5vcm1hbGl6ZUZvbnROYW1lKGUpO3JldHVybiBFcigpW3RdfWZ1bmN0aW9uIGdldFhmYUZvbnREaWN0KGUpe2NvbnN0IHQ9ZnVuY3Rpb24gZ2V0WGZhRm9udFdpZHRocyhlKXtjb25zdCB0PWdldFhmYUZvbnROYW1lKGUpO2lmKCF0KXJldHVybiBudWxsO2NvbnN0e2Jhc2VXaWR0aHM6aSxiYXNlTWFwcGluZzphLGZhY3RvcnM6cn09dCxzPXI/aS5tYXAoKChlLHQpPT5lKnJbdF0pKTppO2xldCBuLG89LTI7Y29uc3QgZz1bXTtmb3IoY29uc3RbZSx0XW9mIGEubWFwKCgoZSx0KT0+W2UsdF0pKS5zb3J0KCgoW2VdLFt0XSk9PmUtdCkpKWlmKC0xIT09ZSlpZihlPT09bysxKXtuLnB1c2goc1t0XSk7bys9MX1lbHNle289ZTtuPVtzW3RdXTtnLnB1c2goZSxuKX1yZXR1cm4gZ30oZSksaT1uZXcgRGljdChudWxsKTtpLnNldCgiQmFzZUZvbnQiLE5hbWUuZ2V0KGUpKTtpLnNldCgiVHlwZSIsTmFtZS5nZXQoIkZvbnQiKSk7aS5zZXQoIlN1YnR5cGUiLE5hbWUuZ2V0KCJDSURGb250VHlwZTIiKSk7aS5zZXQoIkVuY29kaW5nIixOYW1lLmdldCgiSWRlbnRpdHktSCIpKTtpLnNldCgiQ0lEVG9HSURNYXAiLE5hbWUuZ2V0KCJJZGVudGl0eSIpKTtpLnNldCgiVyIsdCk7aS5zZXQoIkZpcnN0Q2hhciIsdFswXSk7aS5zZXQoIkxhc3RDaGFyIix0LmF0KC0yKSt0LmF0KC0xKS5sZW5ndGgtMSk7Y29uc3QgYT1uZXcgRGljdChudWxsKTtpLnNldCgiRm9udERlc2NyaXB0b3IiLGEpO2NvbnN0IHI9bmV3IERpY3QobnVsbCk7ci5zZXQoIk9yZGVyaW5nIiwiSWRlbnRpdHkiKTtyLnNldCgiUmVnaXN0cnkiLCJBZG9iZSIpO3Iuc2V0KCJTdXBwbGVtZW50IiwwKTtpLnNldCgiQ0lEU3lzdGVtSW5mbyIscik7cmV0dXJuIGl9Y2xhc3MgUG9zdFNjcmlwdFBhcnNlcntjb25zdHJ1Y3RvcihlKXt0aGlzLmxleGVyPWU7dGhpcy5vcGVyYXRvcnM9W107dGhpcy50b2tlbj1udWxsO3RoaXMucHJldj1udWxsfW5leHRUb2tlbigpe3RoaXMucHJldj10aGlzLnRva2VuO3RoaXMudG9rZW49dGhpcy5sZXhlci5nZXRUb2tlbigpfWFjY2VwdChlKXtpZih0aGlzLnRva2VuLnR5cGU9PT1lKXt0aGlzLm5leHRUb2tlbigpO3JldHVybiEwfXJldHVybiExfWV4cGVjdChlKXtpZih0aGlzLmFjY2VwdChlKSlyZXR1cm4hMDt0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYFVuZXhwZWN0ZWQgc3ltYm9sOiBmb3VuZCAke3RoaXMudG9rZW4udHlwZX0gZXhwZWN0ZWQgJHtlfS5gKX1wYXJzZSgpe3RoaXMubmV4dFRva2VuKCk7dGhpcy5leHBlY3QodXIuTEJSQUNFKTt0aGlzLnBhcnNlQmxvY2soKTt0aGlzLmV4cGVjdCh1ci5SQlJBQ0UpO3JldHVybiB0aGlzLm9wZXJhdG9yc31wYXJzZUJsb2NrKCl7Zm9yKDs7KWlmKHRoaXMuYWNjZXB0KHVyLk5VTUJFUikpdGhpcy5vcGVyYXRvcnMucHVzaCh0aGlzLnByZXYudmFsdWUpO2Vsc2UgaWYodGhpcy5hY2NlcHQodXIuT1BFUkFUT1IpKXRoaXMub3BlcmF0b3JzLnB1c2godGhpcy5wcmV2LnZhbHVlKTtlbHNle2lmKCF0aGlzLmFjY2VwdCh1ci5MQlJBQ0UpKXJldHVybjt0aGlzLnBhcnNlQ29uZGl0aW9uKCl9fXBhcnNlQ29uZGl0aW9uKCl7Y29uc3QgZT10aGlzLm9wZXJhdG9ycy5sZW5ndGg7dGhpcy5vcGVyYXRvcnMucHVzaChudWxsLG51bGwpO3RoaXMucGFyc2VCbG9jaygpO3RoaXMuZXhwZWN0KHVyLlJCUkFDRSk7aWYodGhpcy5hY2NlcHQodXIuSUYpKXt0aGlzLm9wZXJhdG9yc1tlXT10aGlzLm9wZXJhdG9ycy5sZW5ndGg7dGhpcy5vcGVyYXRvcnNbZSsxXT0ianoifWVsc2V7aWYoIXRoaXMuYWNjZXB0KHVyLkxCUkFDRSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJQUyBGdW5jdGlvbjogZXJyb3IgcGFyc2luZyBjb25kaXRpb25hbC4iKTt7Y29uc3QgdD10aGlzLm9wZXJhdG9ycy5sZW5ndGg7dGhpcy5vcGVyYXRvcnMucHVzaChudWxsLG51bGwpO2NvbnN0IGk9dGhpcy5vcGVyYXRvcnMubGVuZ3RoO3RoaXMucGFyc2VCbG9jaygpO3RoaXMuZXhwZWN0KHVyLlJCUkFDRSk7dGhpcy5leHBlY3QodXIuSUZFTFNFKTt0aGlzLm9wZXJhdG9yc1t0XT10aGlzLm9wZXJhdG9ycy5sZW5ndGg7dGhpcy5vcGVyYXRvcnNbdCsxXT0iaiI7dGhpcy5vcGVyYXRvcnNbZV09aTt0aGlzLm9wZXJhdG9yc1tlKzFdPSJqeiJ9fX19Y29uc3QgdXI9e0xCUkFDRTowLFJCUkFDRToxLE5VTUJFUjoyLE9QRVJBVE9SOjMsSUY6NCxJRkVMU0U6NX07Y2xhc3MgUG9zdFNjcmlwdFRva2Vue3N0YXRpYyBnZXQgb3BDYWNoZSgpe3JldHVybiBzaGFkb3codGhpcywib3BDYWNoZSIsT2JqZWN0LmNyZWF0ZShudWxsKSl9Y29uc3RydWN0b3IoZSx0KXt0aGlzLnR5cGU9ZTt0aGlzLnZhbHVlPXR9c3RhdGljIGdldE9wZXJhdG9yKGUpe3JldHVybiBQb3N0U2NyaXB0VG9rZW4ub3BDYWNoZVtlXXx8PW5ldyBQb3N0U2NyaXB0VG9rZW4odXIuT1BFUkFUT1IsZSl9c3RhdGljIGdldCBMQlJBQ0UoKXtyZXR1cm4gc2hhZG93KHRoaXMsIkxCUkFDRSIsbmV3IFBvc3RTY3JpcHRUb2tlbih1ci5MQlJBQ0UsInsiKSl9c3RhdGljIGdldCBSQlJBQ0UoKXtyZXR1cm4gc2hhZG93KHRoaXMsIlJCUkFDRSIsbmV3IFBvc3RTY3JpcHRUb2tlbih1ci5SQlJBQ0UsIn0iKSl9c3RhdGljIGdldCBJRigpe3JldHVybiBzaGFkb3codGhpcywiSUYiLG5ldyBQb3N0U2NyaXB0VG9rZW4odXIuSUYsIklGIikpfXN0YXRpYyBnZXQgSUZFTFNFKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJJRkVMU0UiLG5ldyBQb3N0U2NyaXB0VG9rZW4odXIuSUZFTFNFLCJJRkVMU0UiKSl9fWNsYXNzIFBvc3RTY3JpcHRMZXhlcntjb25zdHJ1Y3RvcihlKXt0aGlzLnN0cmVhbT1lO3RoaXMubmV4dENoYXIoKTt0aGlzLnN0ckJ1Zj1bXX1uZXh0Q2hhcigpe3JldHVybiB0aGlzLmN1cnJlbnRDaGFyPXRoaXMuc3RyZWFtLmdldEJ5dGUoKX1nZXRUb2tlbigpe2xldCBlPSExLHQ9dGhpcy5jdXJyZW50Q2hhcjtmb3IoOzspe2lmKHQ8MClyZXR1cm4gRHQ7aWYoZSkxMCE9PXQmJjEzIT09dHx8KGU9ITEpO2Vsc2UgaWYoMzc9PT10KWU9ITA7ZWxzZSBpZighaXNXaGl0ZVNwYWNlKHQpKWJyZWFrO3Q9dGhpcy5uZXh0Q2hhcigpfXN3aXRjaCgwfHQpe2Nhc2UgNDg6Y2FzZSA0OTpjYXNlIDUwOmNhc2UgNTE6Y2FzZSA1MjpjYXNlIDUzOmNhc2UgNTQ6Y2FzZSA1NTpjYXNlIDU2OmNhc2UgNTc6Y2FzZSA0MzpjYXNlIDQ1OmNhc2UgNDY6cmV0dXJuIG5ldyBQb3N0U2NyaXB0VG9rZW4odXIuTlVNQkVSLHRoaXMuZ2V0TnVtYmVyKCkpO2Nhc2UgMTIzOnRoaXMubmV4dENoYXIoKTtyZXR1cm4gUG9zdFNjcmlwdFRva2VuLkxCUkFDRTtjYXNlIDEyNTp0aGlzLm5leHRDaGFyKCk7cmV0dXJuIFBvc3RTY3JpcHRUb2tlbi5SQlJBQ0V9Y29uc3QgaT10aGlzLnN0ckJ1ZjtpLmxlbmd0aD0wO2lbMF09U3RyaW5nLmZyb21DaGFyQ29kZSh0KTtmb3IoOyh0PXRoaXMubmV4dENoYXIoKSk+PTAmJih0Pj02NSYmdDw9OTB8fHQ+PTk3JiZ0PD0xMjIpOylpLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZSh0KSk7Y29uc3QgYT1pLmpvaW4oIiIpO3N3aXRjaChhLnRvTG93ZXJDYXNlKCkpe2Nhc2UiaWYiOnJldHVybiBQb3N0U2NyaXB0VG9rZW4uSUY7Y2FzZSJpZmVsc2UiOnJldHVybiBQb3N0U2NyaXB0VG9rZW4uSUZFTFNFO2RlZmF1bHQ6cmV0dXJuIFBvc3RTY3JpcHRUb2tlbi5nZXRPcGVyYXRvcihhKX19Z2V0TnVtYmVyKCl7bGV0IGU9dGhpcy5jdXJyZW50Q2hhcjtjb25zdCB0PXRoaXMuc3RyQnVmO3QubGVuZ3RoPTA7dFswXT1TdHJpbmcuZnJvbUNoYXJDb2RlKGUpO2Zvcig7KGU9dGhpcy5uZXh0Q2hhcigpKT49MCYmKGU+PTQ4JiZlPD01N3x8NDU9PT1lfHw0Nj09PWUpOyl0LnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShlKSk7Y29uc3QgaT1wYXJzZUZsb2F0KHQuam9pbigiIikpO2lmKGlzTmFOKGkpKXRocm93IG5ldyBGb3JtYXRFcnJvcihgSW52YWxpZCBmbG9hdGluZyBwb2ludCBudW1iZXI6ICR7aX1gKTtyZXR1cm4gaX19Y2xhc3MgQmFzZUxvY2FsQ2FjaGV7Y29uc3RydWN0b3IoZSl7dGhpcy5fb25seVJlZnM9ITA9PT1lPy5vbmx5UmVmcztpZighdGhpcy5fb25seVJlZnMpe3RoaXMuX25hbWVSZWZNYXA9bmV3IE1hcDt0aGlzLl9pbWFnZU1hcD1uZXcgTWFwfXRoaXMuX2ltYWdlQ2FjaGU9bmV3IFJlZlNldENhY2hlfWdldEJ5TmFtZShlKXt0aGlzLl9vbmx5UmVmcyYmdW5yZWFjaGFibGUoIlNob3VsZCBub3QgY2FsbCBgZ2V0QnlOYW1lYCBtZXRob2QuIik7Y29uc3QgdD10aGlzLl9uYW1lUmVmTWFwLmdldChlKTtyZXR1cm4gdD90aGlzLmdldEJ5UmVmKHQpOnRoaXMuX2ltYWdlTWFwLmdldChlKXx8bnVsbH1nZXRCeVJlZihlKXtyZXR1cm4gdGhpcy5faW1hZ2VDYWNoZS5nZXQoZSl8fG51bGx9c2V0KGUsdCxpKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGBzZXRgIGNhbGxlZC4iKX19Y2xhc3MgTG9jYWxJbWFnZUNhY2hlIGV4dGVuZHMgQmFzZUxvY2FsQ2FjaGV7c2V0KGUsdD1udWxsLGkpe2lmKCJzdHJpbmciIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3IoJ0xvY2FsSW1hZ2VDYWNoZS5zZXQgLSBleHBlY3RlZCAibmFtZSIgYXJndW1lbnQuJyk7aWYodCl7aWYodGhpcy5faW1hZ2VDYWNoZS5oYXModCkpcmV0dXJuO3RoaXMuX25hbWVSZWZNYXAuc2V0KGUsdCk7dGhpcy5faW1hZ2VDYWNoZS5wdXQodCxpKX1lbHNlIHRoaXMuX2ltYWdlTWFwLmhhcyhlKXx8dGhpcy5faW1hZ2VNYXAuc2V0KGUsaSl9fWNsYXNzIExvY2FsQ29sb3JTcGFjZUNhY2hlIGV4dGVuZHMgQmFzZUxvY2FsQ2FjaGV7c2V0KGU9bnVsbCx0PW51bGwsaSl7aWYoInN0cmluZyIhPXR5cGVvZiBlJiYhdCl0aHJvdyBuZXcgRXJyb3IoJ0xvY2FsQ29sb3JTcGFjZUNhY2hlLnNldCAtIGV4cGVjdGVkICJuYW1lIiBhbmQvb3IgInJlZiIgYXJndW1lbnQuJyk7aWYodCl7aWYodGhpcy5faW1hZ2VDYWNoZS5oYXModCkpcmV0dXJuO251bGwhPT1lJiZ0aGlzLl9uYW1lUmVmTWFwLnNldChlLHQpO3RoaXMuX2ltYWdlQ2FjaGUucHV0KHQsaSl9ZWxzZSB0aGlzLl9pbWFnZU1hcC5oYXMoZSl8fHRoaXMuX2ltYWdlTWFwLnNldChlLGkpfX1jbGFzcyBMb2NhbEZ1bmN0aW9uQ2FjaGUgZXh0ZW5kcyBCYXNlTG9jYWxDYWNoZXtjb25zdHJ1Y3RvcihlKXtzdXBlcih7b25seVJlZnM6ITB9KX1zZXQoZT1udWxsLHQsaSl7aWYoIXQpdGhyb3cgbmV3IEVycm9yKCdMb2NhbEZ1bmN0aW9uQ2FjaGUuc2V0IC0gZXhwZWN0ZWQgInJlZiIgYXJndW1lbnQuJyk7dGhpcy5faW1hZ2VDYWNoZS5oYXModCl8fHRoaXMuX2ltYWdlQ2FjaGUucHV0KHQsaSl9fWNsYXNzIExvY2FsR1N0YXRlQ2FjaGUgZXh0ZW5kcyBCYXNlTG9jYWxDYWNoZXtzZXQoZSx0PW51bGwsaSl7aWYoInN0cmluZyIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcignTG9jYWxHU3RhdGVDYWNoZS5zZXQgLSBleHBlY3RlZCAibmFtZSIgYXJndW1lbnQuJyk7aWYodCl7aWYodGhpcy5faW1hZ2VDYWNoZS5oYXModCkpcmV0dXJuO3RoaXMuX25hbWVSZWZNYXAuc2V0KGUsdCk7dGhpcy5faW1hZ2VDYWNoZS5wdXQodCxpKX1lbHNlIHRoaXMuX2ltYWdlTWFwLmhhcyhlKXx8dGhpcy5faW1hZ2VNYXAuc2V0KGUsaSl9fWNsYXNzIExvY2FsVGlsaW5nUGF0dGVybkNhY2hlIGV4dGVuZHMgQmFzZUxvY2FsQ2FjaGV7Y29uc3RydWN0b3IoZSl7c3VwZXIoe29ubHlSZWZzOiEwfSl9c2V0KGU9bnVsbCx0LGkpe2lmKCF0KXRocm93IG5ldyBFcnJvcignTG9jYWxUaWxpbmdQYXR0ZXJuQ2FjaGUuc2V0IC0gZXhwZWN0ZWQgInJlZiIgYXJndW1lbnQuJyk7dGhpcy5faW1hZ2VDYWNoZS5oYXModCl8fHRoaXMuX2ltYWdlQ2FjaGUucHV0KHQsaSl9fWNsYXNzIFJlZ2lvbmFsSW1hZ2VDYWNoZSBleHRlbmRzIEJhc2VMb2NhbENhY2hle2NvbnN0cnVjdG9yKGUpe3N1cGVyKHtvbmx5UmVmczohMH0pfXNldChlPW51bGwsdCxpKXtpZighdCl0aHJvdyBuZXcgRXJyb3IoJ1JlZ2lvbmFsSW1hZ2VDYWNoZS5zZXQgLSBleHBlY3RlZCAicmVmIiBhcmd1bWVudC4nKTt0aGlzLl9pbWFnZUNhY2hlLmhhcyh0KXx8dGhpcy5faW1hZ2VDYWNoZS5wdXQodCxpKX19Y2xhc3MgR2xvYmFsSW1hZ2VDYWNoZXtzdGF0aWMgTlVNX1BBR0VTX1RIUkVTSE9MRD0yO3N0YXRpYyBNSU5fSU1BR0VTX1RPX0NBQ0hFPTEwO3N0YXRpYyBNQVhfQllURV9TSVpFPTVlNzsjYj1uZXcgUmVmU2V0O2NvbnN0cnVjdG9yKCl7dGhpcy5fcmVmQ2FjaGU9bmV3IFJlZlNldENhY2hlO3RoaXMuX2ltYWdlQ2FjaGU9bmV3IFJlZlNldENhY2hlfWdldCNEKCl7bGV0IGU9MDtmb3IoY29uc3QgdCBvZiB0aGlzLl9pbWFnZUNhY2hlKWUrPXQuYnl0ZVNpemU7cmV0dXJuIGV9Z2V0I0YoKXtyZXR1cm4hKHRoaXMuX2ltYWdlQ2FjaGUuc2l6ZTxHbG9iYWxJbWFnZUNhY2hlLk1JTl9JTUFHRVNfVE9fQ0FDSEUpJiYhKHRoaXMuI0Q8R2xvYmFsSW1hZ2VDYWNoZS5NQVhfQllURV9TSVpFKX1zaG91bGRDYWNoZShlLHQpe2xldCBpPXRoaXMuX3JlZkNhY2hlLmdldChlKTtpZighaSl7aT1uZXcgU2V0O3RoaXMuX3JlZkNhY2hlLnB1dChlLGkpfWkuYWRkKHQpO3JldHVybiEoaS5zaXplPEdsb2JhbEltYWdlQ2FjaGUuTlVNX1BBR0VTX1RIUkVTSE9MRCkmJiEoIXRoaXMuX2ltYWdlQ2FjaGUuaGFzKGUpJiZ0aGlzLiNGKX1hZGREZWNvZGVGYWlsZWQoZSl7dGhpcy4jYi5wdXQoZSl9aGFzRGVjb2RlRmFpbGVkKGUpe3JldHVybiB0aGlzLiNiLmhhcyhlKX1hZGRCeXRlU2l6ZShlLHQpe2NvbnN0IGk9dGhpcy5faW1hZ2VDYWNoZS5nZXQoZSk7aSYmKGkuYnl0ZVNpemV8fChpLmJ5dGVTaXplPXQpKX1nZXREYXRhKGUsdCl7Y29uc3QgaT10aGlzLl9yZWZDYWNoZS5nZXQoZSk7aWYoIWkpcmV0dXJuIG51bGw7aWYoaS5zaXplPEdsb2JhbEltYWdlQ2FjaGUuTlVNX1BBR0VTX1RIUkVTSE9MRClyZXR1cm4gbnVsbDtjb25zdCBhPXRoaXMuX2ltYWdlQ2FjaGUuZ2V0KGUpO2lmKCFhKXJldHVybiBudWxsO2kuYWRkKHQpO3JldHVybiBhfXNldERhdGEoZSx0KXtpZighdGhpcy5fcmVmQ2FjaGUuaGFzKGUpKXRocm93IG5ldyBFcnJvcignR2xvYmFsSW1hZ2VDYWNoZS5zZXREYXRhIC0gZXhwZWN0ZWQgInNob3VsZENhY2hlIiB0byBoYXZlIGJlZW4gY2FsbGVkLicpO3RoaXMuX2ltYWdlQ2FjaGUuaGFzKGUpfHwodGhpcy4jRj93YXJuKCJHbG9iYWxJbWFnZUNhY2hlLnNldERhdGEgLSBjYWNoZSBsaW1pdCByZWFjaGVkLiIpOnRoaXMuX2ltYWdlQ2FjaGUucHV0KGUsdCkpfWNsZWFyKGU9ITEpe2lmKCFlKXt0aGlzLiNiLmNsZWFyKCk7dGhpcy5fcmVmQ2FjaGUuY2xlYXIoKX10aGlzLl9pbWFnZUNhY2hlLmNsZWFyKCl9fWNsYXNzIFBERkZ1bmN0aW9uRmFjdG9yeXtjb25zdHJ1Y3Rvcih7eHJlZjplLGlzRXZhbFN1cHBvcnRlZDp0PSEwfSl7dGhpcy54cmVmPWU7dGhpcy5pc0V2YWxTdXBwb3J0ZWQ9ITEhPT10fWNyZWF0ZShlKXtjb25zdCB0PXRoaXMuZ2V0Q2FjaGVkKGUpO2lmKHQpcmV0dXJuIHQ7Y29uc3QgaT1QREZGdW5jdGlvbi5wYXJzZSh7eHJlZjp0aGlzLnhyZWYsaXNFdmFsU3VwcG9ydGVkOnRoaXMuaXNFdmFsU3VwcG9ydGVkLGZuOmUgaW5zdGFuY2VvZiBSZWY/dGhpcy54cmVmLmZldGNoKGUpOmV9KTt0aGlzLl9jYWNoZShlLGkpO3JldHVybiBpfWNyZWF0ZUZyb21BcnJheShlKXtjb25zdCB0PXRoaXMuZ2V0Q2FjaGVkKGUpO2lmKHQpcmV0dXJuIHQ7Y29uc3QgaT1QREZGdW5jdGlvbi5wYXJzZUFycmF5KHt4cmVmOnRoaXMueHJlZixpc0V2YWxTdXBwb3J0ZWQ6dGhpcy5pc0V2YWxTdXBwb3J0ZWQsZm5PYmo6ZSBpbnN0YW5jZW9mIFJlZj90aGlzLnhyZWYuZmV0Y2goZSk6ZX0pO3RoaXMuX2NhY2hlKGUsaSk7cmV0dXJuIGl9Z2V0Q2FjaGVkKGUpe2xldCB0O2UgaW5zdGFuY2VvZiBSZWY/dD1lOmUgaW5zdGFuY2VvZiBEaWN0P3Q9ZS5vYmpJZDplIGluc3RhbmNlb2YgQmFzZVN0cmVhbSYmKHQ9ZS5kaWN0Py5vYmpJZCk7aWYodCl7Y29uc3QgZT10aGlzLl9sb2NhbEZ1bmN0aW9uQ2FjaGUuZ2V0QnlSZWYodCk7aWYoZSlyZXR1cm4gZX1yZXR1cm4gbnVsbH1fY2FjaGUoZSx0KXtpZighdCl0aHJvdyBuZXcgRXJyb3IoJ1BERkZ1bmN0aW9uRmFjdG9yeS5fY2FjaGUgLSBleHBlY3RlZCAicGFyc2VkRnVuY3Rpb24iIGFyZ3VtZW50LicpO2xldCBpO2UgaW5zdGFuY2VvZiBSZWY/aT1lOmUgaW5zdGFuY2VvZiBEaWN0P2k9ZS5vYmpJZDplIGluc3RhbmNlb2YgQmFzZVN0cmVhbSYmKGk9ZS5kaWN0Py5vYmpJZCk7aSYmdGhpcy5fbG9jYWxGdW5jdGlvbkNhY2hlLnNldChudWxsLGksdCl9Z2V0IF9sb2NhbEZ1bmN0aW9uQ2FjaGUoKXtyZXR1cm4gc2hhZG93KHRoaXMsIl9sb2NhbEZ1bmN0aW9uQ2FjaGUiLG5ldyBMb2NhbEZ1bmN0aW9uQ2FjaGUpfX1mdW5jdGlvbiB0b051bWJlckFycmF5KGUpe3JldHVybiBBcnJheS5pc0FycmF5KGUpP2lzTnVtYmVyQXJyYXkoZSxudWxsKT9lOmUubWFwKChlPT4rZSkpOm51bGx9Y2xhc3MgUERGRnVuY3Rpb257c3RhdGljIGdldFNhbXBsZUFycmF5KGUsdCxpLGEpe2xldCByLHMsbj0xO2ZvcihyPTAscz1lLmxlbmd0aDtyPHM7cisrKW4qPWVbcl07bio9dDtjb25zdCBvPW5ldyBBcnJheShuKTtsZXQgZz0wLGM9MDtjb25zdCBDPTEvKDIqKmktMSksaD1hLmdldEJ5dGVzKChuKmkrNykvOCk7bGV0IGw9MDtmb3Iocj0wO3I8bjtyKyspe2Zvcig7ZzxpOyl7Yzw8PTg7Y3w9aFtsKytdO2crPTh9Zy09aTtvW3JdPShjPj5nKSpDO2MmPSgxPDxnKS0xfXJldHVybiBvfXN0YXRpYyBwYXJzZSh7eHJlZjplLGlzRXZhbFN1cHBvcnRlZDp0LGZuOml9KXtjb25zdCBhPWkuZGljdHx8aTtzd2l0Y2goYS5nZXQoIkZ1bmN0aW9uVHlwZSIpKXtjYXNlIDA6cmV0dXJuIHRoaXMuY29uc3RydWN0U2FtcGxlZCh7eHJlZjplLGlzRXZhbFN1cHBvcnRlZDp0LGZuOmksZGljdDphfSk7Y2FzZSAxOmJyZWFrO2Nhc2UgMjpyZXR1cm4gdGhpcy5jb25zdHJ1Y3RJbnRlcnBvbGF0ZWQoe3hyZWY6ZSxpc0V2YWxTdXBwb3J0ZWQ6dCxkaWN0OmF9KTtjYXNlIDM6cmV0dXJuIHRoaXMuY29uc3RydWN0U3RpY2hlZCh7eHJlZjplLGlzRXZhbFN1cHBvcnRlZDp0LGRpY3Q6YX0pO2Nhc2UgNDpyZXR1cm4gdGhpcy5jb25zdHJ1Y3RQb3N0U2NyaXB0KHt4cmVmOmUsaXNFdmFsU3VwcG9ydGVkOnQsZm46aSxkaWN0OmF9KX10aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlVua25vd24gdHlwZSBvZiBmdW5jdGlvbiIpfXN0YXRpYyBwYXJzZUFycmF5KHt4cmVmOmUsaXNFdmFsU3VwcG9ydGVkOnQsZm5PYmo6aX0pe2lmKCFBcnJheS5pc0FycmF5KGkpKXJldHVybiB0aGlzLnBhcnNlKHt4cmVmOmUsaXNFdmFsU3VwcG9ydGVkOnQsZm46aX0pO2NvbnN0IGE9W107Zm9yKGNvbnN0IHIgb2YgaSlhLnB1c2godGhpcy5wYXJzZSh7eHJlZjplLGlzRXZhbFN1cHBvcnRlZDp0LGZuOmUuZmV0Y2hJZlJlZihyKX0pKTtyZXR1cm4gZnVuY3Rpb24oZSx0LGkscil7Zm9yKGxldCBzPTAsbj1hLmxlbmd0aDtzPG47cysrKWFbc10oZSx0LGkscitzKX19c3RhdGljIGNvbnN0cnVjdFNhbXBsZWQoe3hyZWY6ZSxpc0V2YWxTdXBwb3J0ZWQ6dCxmbjppLGRpY3Q6YX0pe2Z1bmN0aW9uIHRvTXVsdGlBcnJheShlKXtjb25zdCB0PWUubGVuZ3RoLGk9W107bGV0IGE9MDtmb3IobGV0IHI9MDtyPHQ7cis9MilpW2ErK109W2Vbcl0sZVtyKzFdXTtyZXR1cm4gaX1mdW5jdGlvbiBpbnRlcnBvbGF0ZShlLHQsaSxhLHIpe3JldHVybiBhKyhyLWEpLyhpLXQpKihlLXQpfWxldCByPXRvTnVtYmVyQXJyYXkoYS5nZXRBcnJheSgiRG9tYWluIikpLHM9dG9OdW1iZXJBcnJheShhLmdldEFycmF5KCJSYW5nZSIpKTtpZighcnx8IXMpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJObyBkb21haW4gb3IgcmFuZ2UiKTtjb25zdCBuPXIubGVuZ3RoLzIsbz1zLmxlbmd0aC8yO3I9dG9NdWx0aUFycmF5KHIpO3M9dG9NdWx0aUFycmF5KHMpO2NvbnN0IGc9dG9OdW1iZXJBcnJheShhLmdldEFycmF5KCJTaXplIikpLGM9YS5nZXQoIkJpdHNQZXJTYW1wbGUiKSxDPWEuZ2V0KCJPcmRlciIpfHwxOzEhPT1DJiZpbmZvKCJObyBzdXBwb3J0IGZvciBjdWJpYyBzcGxpbmUgaW50ZXJwb2xhdGlvbjogIitDKTtsZXQgaD10b051bWJlckFycmF5KGEuZ2V0QXJyYXkoIkVuY29kZSIpKTtpZihoKWg9dG9NdWx0aUFycmF5KGgpO2Vsc2V7aD1bXTtmb3IobGV0IGU9MDtlPG47KytlKWgucHVzaChbMCxnW2VdLTFdKX1sZXQgbD10b051bWJlckFycmF5KGEuZ2V0QXJyYXkoIkRlY29kZSIpKTtsPWw/dG9NdWx0aUFycmF5KGwpOnM7Y29uc3QgUT10aGlzLmdldFNhbXBsZUFycmF5KGcsbyxjLGkpO3JldHVybiBmdW5jdGlvbiBjb25zdHJ1Y3RTYW1wbGVkRm4oZSx0LGksYSl7Y29uc3QgYz0xPDxuLEM9bmV3IEZsb2F0NjRBcnJheShjKSxFPW5ldyBVaW50MzJBcnJheShjKTtsZXQgdSxkO2ZvcihkPTA7ZDxjO2QrKylDW2RdPTE7bGV0IGY9byxwPTE7Zm9yKHU9MDt1PG47Kyt1KXtjb25zdCBpPXJbdV1bMF0sYT1yW3VdWzFdO2xldCBzPWludGVycG9sYXRlKE1hdGgubWluKE1hdGgubWF4KGVbdCt1XSxpKSxhKSxpLGEsaFt1XVswXSxoW3VdWzFdKTtjb25zdCBuPWdbdV07cz1NYXRoLm1pbihNYXRoLm1heChzLDApLG4tMSk7Y29uc3Qgbz1zPG4tMT9NYXRoLmZsb29yKHMpOnMtMSxsPW8rMS1zLFE9cy1vLG09bypmLHk9bStmO2ZvcihkPTA7ZDxjO2QrKylpZihkJnApe0NbZF0qPVE7RVtkXSs9eX1lbHNle0NbZF0qPWw7RVtkXSs9bX1mKj1uO3A8PD0xfWZvcihkPTA7ZDxvOysrZCl7bGV0IGU9MDtmb3IodT0wO3U8Yzt1KyspZSs9UVtFW3VdK2RdKkNbdV07ZT1pbnRlcnBvbGF0ZShlLDAsMSxsW2RdWzBdLGxbZF1bMV0pO2lbYStkXT1NYXRoLm1pbihNYXRoLm1heChlLHNbZF1bMF0pLHNbZF1bMV0pfX19c3RhdGljIGNvbnN0cnVjdEludGVycG9sYXRlZCh7eHJlZjplLGlzRXZhbFN1cHBvcnRlZDp0LGRpY3Q6aX0pe2NvbnN0IGE9dG9OdW1iZXJBcnJheShpLmdldEFycmF5KCJDMCIpKXx8WzBdLHI9dG9OdW1iZXJBcnJheShpLmdldEFycmF5KCJDMSIpKXx8WzFdLHM9aS5nZXQoIk4iKSxuPVtdO2ZvcihsZXQgZT0wLHQ9YS5sZW5ndGg7ZTx0OysrZSluLnB1c2gocltlXS1hW2VdKTtjb25zdCBvPW4ubGVuZ3RoO3JldHVybiBmdW5jdGlvbiBjb25zdHJ1Y3RJbnRlcnBvbGF0ZWRGbihlLHQsaSxyKXtjb25zdCBnPTE9PT1zP2VbdF06ZVt0XSoqcztmb3IobGV0IGU9MDtlPG87KytlKWlbcitlXT1hW2VdK2cqbltlXX19c3RhdGljIGNvbnN0cnVjdFN0aWNoZWQoe3hyZWY6ZSxpc0V2YWxTdXBwb3J0ZWQ6dCxkaWN0Oml9KXtjb25zdCBhPXRvTnVtYmVyQXJyYXkoaS5nZXRBcnJheSgiRG9tYWluIikpO2lmKCFhKXRocm93IG5ldyBGb3JtYXRFcnJvcigiTm8gZG9tYWluIik7aWYoMSE9PWEubGVuZ3RoLzIpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJCYWQgZG9tYWluIGZvciBzdGljaGVkIGZ1bmN0aW9uIik7Y29uc3Qgcj1bXTtmb3IoY29uc3QgYSBvZiBpLmdldCgiRnVuY3Rpb25zIikpci5wdXNoKHRoaXMucGFyc2Uoe3hyZWY6ZSxpc0V2YWxTdXBwb3J0ZWQ6dCxmbjplLmZldGNoSWZSZWYoYSl9KSk7Y29uc3Qgcz10b051bWJlckFycmF5KGkuZ2V0QXJyYXkoIkJvdW5kcyIpKSxuPXRvTnVtYmVyQXJyYXkoaS5nZXRBcnJheSgiRW5jb2RlIikpLG89bmV3IEZsb2F0MzJBcnJheSgxKTtyZXR1cm4gZnVuY3Rpb24gY29uc3RydWN0U3RpY2hlZEZuKGUsdCxpLGcpe2NvbnN0IGM9ZnVuY3Rpb24gY29uc3RydWN0U3RpY2hlZEZyb21JUkNsaXAoZSx0LGkpe2U+aT9lPWk6ZTx0JiYoZT10KTtyZXR1cm4gZX0oZVt0XSxhWzBdLGFbMV0pLEM9cy5sZW5ndGg7bGV0IGg7Zm9yKGg9MDtoPEMmJiEoYzxzW2hdKTsrK2gpO2xldCBsPWFbMF07aD4wJiYobD1zW2gtMV0pO2xldCBRPWFbMV07aDxzLmxlbmd0aCYmKFE9c1toXSk7Y29uc3QgRT1uWzIqaF0sdT1uWzIqaCsxXTtvWzBdPWw9PT1RP0U6RSsoYy1sKSoodS1FKS8oUS1sKTtyW2hdKG8sMCxpLGcpfX1zdGF0aWMgY29uc3RydWN0UG9zdFNjcmlwdCh7eHJlZjplLGlzRXZhbFN1cHBvcnRlZDp0LGZuOmksZGljdDphfSl7Y29uc3Qgcj10b051bWJlckFycmF5KGEuZ2V0QXJyYXkoIkRvbWFpbiIpKSxzPXRvTnVtYmVyQXJyYXkoYS5nZXRBcnJheSgiUmFuZ2UiKSk7aWYoIXIpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJObyBkb21haW4uIik7aWYoIXMpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJObyByYW5nZS4iKTtjb25zdCBuPW5ldyBQb3N0U2NyaXB0TGV4ZXIoaSksbz1uZXcgUG9zdFNjcmlwdFBhcnNlcihuKS5wYXJzZSgpO2lmKHQmJkZlYXR1cmVUZXN0LmlzRXZhbFN1cHBvcnRlZCl7Y29uc3QgZT0obmV3IFBvc3RTY3JpcHRDb21waWxlcikuY29tcGlsZShvLHIscyk7aWYoZSlyZXR1cm4gbmV3IEZ1bmN0aW9uKCJzcmMiLCJzcmNPZmZzZXQiLCJkZXN0IiwiZGVzdE9mZnNldCIsZSl9aW5mbygiVW5hYmxlIHRvIGNvbXBpbGUgUFMgZnVuY3Rpb24iKTtjb25zdCBnPXMubGVuZ3RoPj4xLGM9ci5sZW5ndGg+PjEsQz1uZXcgUG9zdFNjcmlwdEV2YWx1YXRvcihvKSxoPU9iamVjdC5jcmVhdGUobnVsbCk7bGV0IGw9ODE5Mjtjb25zdCBRPW5ldyBGbG9hdDMyQXJyYXkoYyk7cmV0dXJuIGZ1bmN0aW9uIGNvbnN0cnVjdFBvc3RTY3JpcHRGbihlLHQsaSxhKXtsZXQgcixuLG89IiI7Y29uc3QgRT1RO2ZvcihyPTA7cjxjO3IrKyl7bj1lW3Qrcl07RVtyXT1uO28rPW4rIl8ifWNvbnN0IHU9aFtvXTtpZih2b2lkIDAhPT11KXtpLnNldCh1LGEpO3JldHVybn1jb25zdCBkPW5ldyBGbG9hdDMyQXJyYXkoZyksZj1DLmV4ZWN1dGUoRSkscD1mLmxlbmd0aC1nO2ZvcihyPTA7cjxnO3IrKyl7bj1mW3Arcl07bGV0IGU9c1syKnJdO2lmKG48ZSluPWU7ZWxzZXtlPXNbMipyKzFdO24+ZSYmKG49ZSl9ZFtyXT1ufWlmKGw+MCl7bC0tO2hbb109ZH1pLnNldChkLGEpfX19ZnVuY3Rpb24gaXNQREZGdW5jdGlvbihlKXtsZXQgdDtpZihlIGluc3RhbmNlb2YgRGljdCl0PWU7ZWxzZXtpZighKGUgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKSlyZXR1cm4hMTt0PWUuZGljdH1yZXR1cm4gdC5oYXMoIkZ1bmN0aW9uVHlwZSIpfWNsYXNzIFBvc3RTY3JpcHRTdGFja3tzdGF0aWMgTUFYX1NUQUNLX1NJWkU9MTAwO2NvbnN0cnVjdG9yKGUpe3RoaXMuc3RhY2s9ZT9BcnJheS5mcm9tKGUpOltdfXB1c2goZSl7aWYodGhpcy5zdGFjay5sZW5ndGg+PVBvc3RTY3JpcHRTdGFjay5NQVhfU1RBQ0tfU0laRSl0aHJvdyBuZXcgRXJyb3IoIlBvc3RTY3JpcHQgZnVuY3Rpb24gc3RhY2sgb3ZlcmZsb3cuIik7dGhpcy5zdGFjay5wdXNoKGUpfXBvcCgpe2lmKHRoaXMuc3RhY2subGVuZ3RoPD0wKXRocm93IG5ldyBFcnJvcigiUG9zdFNjcmlwdCBmdW5jdGlvbiBzdGFjayB1bmRlcmZsb3cuIik7cmV0dXJuIHRoaXMuc3RhY2sucG9wKCl9Y29weShlKXtpZih0aGlzLnN0YWNrLmxlbmd0aCtlPj1Qb3N0U2NyaXB0U3RhY2suTUFYX1NUQUNLX1NJWkUpdGhyb3cgbmV3IEVycm9yKCJQb3N0U2NyaXB0IGZ1bmN0aW9uIHN0YWNrIG92ZXJmbG93LiIpO2NvbnN0IHQ9dGhpcy5zdGFjaztmb3IobGV0IGk9dC5sZW5ndGgtZSxhPWUtMTthPj0wO2EtLSxpKyspdC5wdXNoKHRbaV0pfWluZGV4KGUpe3RoaXMucHVzaCh0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoLWUtMV0pfXJvbGwoZSx0KXtjb25zdCBpPXRoaXMuc3RhY2ssYT1pLmxlbmd0aC1lLHI9aS5sZW5ndGgtMSxzPWErKHQtTWF0aC5mbG9vcih0L2UpKmUpO2ZvcihsZXQgZT1hLHQ9cjtlPHQ7ZSsrLHQtLSl7Y29uc3QgYT1pW2VdO2lbZV09aVt0XTtpW3RdPWF9Zm9yKGxldCBlPWEsdD1zLTE7ZTx0O2UrKyx0LS0pe2NvbnN0IGE9aVtlXTtpW2VdPWlbdF07aVt0XT1hfWZvcihsZXQgZT1zLHQ9cjtlPHQ7ZSsrLHQtLSl7Y29uc3QgYT1pW2VdO2lbZV09aVt0XTtpW3RdPWF9fX1jbGFzcyBQb3N0U2NyaXB0RXZhbHVhdG9ye2NvbnN0cnVjdG9yKGUpe3RoaXMub3BlcmF0b3JzPWV9ZXhlY3V0ZShlKXtjb25zdCB0PW5ldyBQb3N0U2NyaXB0U3RhY2soZSk7bGV0IGk9MDtjb25zdCBhPXRoaXMub3BlcmF0b3JzLHI9YS5sZW5ndGg7bGV0IHMsbixvO2Zvcig7aTxyOyl7cz1hW2krK107aWYoIm51bWJlciIhPXR5cGVvZiBzKXN3aXRjaChzKXtjYXNlImp6IjpvPXQucG9wKCk7bj10LnBvcCgpO258fChpPW8pO2JyZWFrO2Nhc2UiaiI6bj10LnBvcCgpO2k9bjticmVhaztjYXNlImFicyI6bj10LnBvcCgpO3QucHVzaChNYXRoLmFicyhuKSk7YnJlYWs7Y2FzZSJhZGQiOm89dC5wb3AoKTtuPXQucG9wKCk7dC5wdXNoKG4rbyk7YnJlYWs7Y2FzZSJhbmQiOm89dC5wb3AoKTtuPXQucG9wKCk7ImJvb2xlYW4iPT10eXBlb2YgbiYmImJvb2xlYW4iPT10eXBlb2Ygbz90LnB1c2gobiYmbyk6dC5wdXNoKG4mbyk7YnJlYWs7Y2FzZSJhdGFuIjpvPXQucG9wKCk7bj10LnBvcCgpO249TWF0aC5hdGFuMihuLG8pL01hdGguUEkqMTgwO248MCYmKG4rPTM2MCk7dC5wdXNoKG4pO2JyZWFrO2Nhc2UiYml0c2hpZnQiOm89dC5wb3AoKTtuPXQucG9wKCk7bj4wP3QucHVzaChuPDxvKTp0LnB1c2gobj4+byk7YnJlYWs7Y2FzZSJjZWlsaW5nIjpuPXQucG9wKCk7dC5wdXNoKE1hdGguY2VpbChuKSk7YnJlYWs7Y2FzZSJjb3B5IjpuPXQucG9wKCk7dC5jb3B5KG4pO2JyZWFrO2Nhc2UiY29zIjpuPXQucG9wKCk7dC5wdXNoKE1hdGguY29zKG4lMzYwLzE4MCpNYXRoLlBJKSk7YnJlYWs7Y2FzZSJjdmkiOm49MHx0LnBvcCgpO3QucHVzaChuKTticmVhaztjYXNlImN2ciI6YnJlYWs7Y2FzZSJkaXYiOm89dC5wb3AoKTtuPXQucG9wKCk7dC5wdXNoKG4vbyk7YnJlYWs7Y2FzZSJkdXAiOnQuY29weSgxKTticmVhaztjYXNlImVxIjpvPXQucG9wKCk7bj10LnBvcCgpO3QucHVzaChuPT09byk7YnJlYWs7Y2FzZSJleGNoIjp0LnJvbGwoMiwxKTticmVhaztjYXNlImV4cCI6bz10LnBvcCgpO249dC5wb3AoKTt0LnB1c2gobioqbyk7YnJlYWs7Y2FzZSJmYWxzZSI6dC5wdXNoKCExKTticmVhaztjYXNlImZsb29yIjpuPXQucG9wKCk7dC5wdXNoKE1hdGguZmxvb3IobikpO2JyZWFrO2Nhc2UiZ2UiOm89dC5wb3AoKTtuPXQucG9wKCk7dC5wdXNoKG4+PW8pO2JyZWFrO2Nhc2UiZ3QiOm89dC5wb3AoKTtuPXQucG9wKCk7dC5wdXNoKG4+byk7YnJlYWs7Y2FzZSJpZGl2IjpvPXQucG9wKCk7bj10LnBvcCgpO3QucHVzaChuL298MCk7YnJlYWs7Y2FzZSJpbmRleCI6bj10LnBvcCgpO3QuaW5kZXgobik7YnJlYWs7Y2FzZSJsZSI6bz10LnBvcCgpO249dC5wb3AoKTt0LnB1c2gobjw9byk7YnJlYWs7Y2FzZSJsbiI6bj10LnBvcCgpO3QucHVzaChNYXRoLmxvZyhuKSk7YnJlYWs7Y2FzZSJsb2ciOm49dC5wb3AoKTt0LnB1c2goTWF0aC5sb2cxMChuKSk7YnJlYWs7Y2FzZSJsdCI6bz10LnBvcCgpO249dC5wb3AoKTt0LnB1c2gobjxvKTticmVhaztjYXNlIm1vZCI6bz10LnBvcCgpO249dC5wb3AoKTt0LnB1c2gobiVvKTticmVhaztjYXNlIm11bCI6bz10LnBvcCgpO249dC5wb3AoKTt0LnB1c2gobipvKTticmVhaztjYXNlIm5lIjpvPXQucG9wKCk7bj10LnBvcCgpO3QucHVzaChuIT09byk7YnJlYWs7Y2FzZSJuZWciOm49dC5wb3AoKTt0LnB1c2goLW4pO2JyZWFrO2Nhc2Uibm90IjpuPXQucG9wKCk7ImJvb2xlYW4iPT10eXBlb2Ygbj90LnB1c2goIW4pOnQucHVzaCh+bik7YnJlYWs7Y2FzZSJvciI6bz10LnBvcCgpO249dC5wb3AoKTsiYm9vbGVhbiI9PXR5cGVvZiBuJiYiYm9vbGVhbiI9PXR5cGVvZiBvP3QucHVzaChufHxvKTp0LnB1c2gobnxvKTticmVhaztjYXNlInBvcCI6dC5wb3AoKTticmVhaztjYXNlInJvbGwiOm89dC5wb3AoKTtuPXQucG9wKCk7dC5yb2xsKG4sbyk7YnJlYWs7Y2FzZSJyb3VuZCI6bj10LnBvcCgpO3QucHVzaChNYXRoLnJvdW5kKG4pKTticmVhaztjYXNlInNpbiI6bj10LnBvcCgpO3QucHVzaChNYXRoLnNpbihuJTM2MC8xODAqTWF0aC5QSSkpO2JyZWFrO2Nhc2Uic3FydCI6bj10LnBvcCgpO3QucHVzaChNYXRoLnNxcnQobikpO2JyZWFrO2Nhc2Uic3ViIjpvPXQucG9wKCk7bj10LnBvcCgpO3QucHVzaChuLW8pO2JyZWFrO2Nhc2UidHJ1ZSI6dC5wdXNoKCEwKTticmVhaztjYXNlInRydW5jYXRlIjpuPXQucG9wKCk7bj1uPDA/TWF0aC5jZWlsKG4pOk1hdGguZmxvb3Iobik7dC5wdXNoKG4pO2JyZWFrO2Nhc2UieG9yIjpvPXQucG9wKCk7bj10LnBvcCgpOyJib29sZWFuIj09dHlwZW9mIG4mJiJib29sZWFuIj09dHlwZW9mIG8/dC5wdXNoKG4hPT1vKTp0LnB1c2gobl5vKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBGb3JtYXRFcnJvcihgVW5rbm93biBvcGVyYXRvciAke3N9YCl9ZWxzZSB0LnB1c2gocyl9cmV0dXJuIHQuc3RhY2t9fWNsYXNzIEFzdE5vZGV7Y29uc3RydWN0b3IoZSl7dGhpcy50eXBlPWV9dmlzaXQoZSl7dW5yZWFjaGFibGUoImFic3RyYWN0IG1ldGhvZCIpfX1jbGFzcyBBc3RBcmd1bWVudCBleHRlbmRzIEFzdE5vZGV7Y29uc3RydWN0b3IoZSx0LGkpe3N1cGVyKCJhcmdzIik7dGhpcy5pbmRleD1lO3RoaXMubWluPXQ7dGhpcy5tYXg9aX12aXNpdChlKXtlLnZpc2l0QXJndW1lbnQodGhpcyl9fWNsYXNzIEFzdExpdGVyYWwgZXh0ZW5kcyBBc3ROb2Rle2NvbnN0cnVjdG9yKGUpe3N1cGVyKCJsaXRlcmFsIik7dGhpcy5udW1iZXI9ZTt0aGlzLm1pbj1lO3RoaXMubWF4PWV9dmlzaXQoZSl7ZS52aXNpdExpdGVyYWwodGhpcyl9fWNsYXNzIEFzdEJpbmFyeU9wZXJhdGlvbiBleHRlbmRzIEFzdE5vZGV7Y29uc3RydWN0b3IoZSx0LGksYSxyKXtzdXBlcigiYmluYXJ5Iik7dGhpcy5vcD1lO3RoaXMuYXJnMT10O3RoaXMuYXJnMj1pO3RoaXMubWluPWE7dGhpcy5tYXg9cn12aXNpdChlKXtlLnZpc2l0QmluYXJ5T3BlcmF0aW9uKHRoaXMpfX1jbGFzcyBBc3RNaW4gZXh0ZW5kcyBBc3ROb2Rle2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoIm1heCIpO3RoaXMuYXJnPWU7dGhpcy5taW49ZS5taW47dGhpcy5tYXg9dH12aXNpdChlKXtlLnZpc2l0TWluKHRoaXMpfX1jbGFzcyBBc3RWYXJpYWJsZSBleHRlbmRzIEFzdE5vZGV7Y29uc3RydWN0b3IoZSx0LGkpe3N1cGVyKCJ2YXIiKTt0aGlzLmluZGV4PWU7dGhpcy5taW49dDt0aGlzLm1heD1pfXZpc2l0KGUpe2UudmlzaXRWYXJpYWJsZSh0aGlzKX19Y2xhc3MgQXN0VmFyaWFibGVEZWZpbml0aW9uIGV4dGVuZHMgQXN0Tm9kZXtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKCJkZWZpbml0aW9uIik7dGhpcy52YXJpYWJsZT1lO3RoaXMuYXJnPXR9dmlzaXQoZSl7ZS52aXNpdFZhcmlhYmxlRGVmaW5pdGlvbih0aGlzKX19Y2xhc3MgRXhwcmVzc2lvbkJ1aWxkZXJWaXNpdG9ye2NvbnN0cnVjdG9yKCl7dGhpcy5wYXJ0cz1bXX12aXNpdEFyZ3VtZW50KGUpe3RoaXMucGFydHMucHVzaCgiTWF0aC5tYXgoIixlLm1pbiwiLCBNYXRoLm1pbigiLGUubWF4LCIsIHNyY1tzcmNPZmZzZXQgKyAiLGUuaW5kZXgsIl0pKSIpfXZpc2l0VmFyaWFibGUoZSl7dGhpcy5wYXJ0cy5wdXNoKCJ2IixlLmluZGV4KX12aXNpdExpdGVyYWwoZSl7dGhpcy5wYXJ0cy5wdXNoKGUubnVtYmVyKX12aXNpdEJpbmFyeU9wZXJhdGlvbihlKXt0aGlzLnBhcnRzLnB1c2goIigiKTtlLmFyZzEudmlzaXQodGhpcyk7dGhpcy5wYXJ0cy5wdXNoKCIgIixlLm9wLCIgIik7ZS5hcmcyLnZpc2l0KHRoaXMpO3RoaXMucGFydHMucHVzaCgiKSIpfXZpc2l0VmFyaWFibGVEZWZpbml0aW9uKGUpe3RoaXMucGFydHMucHVzaCgidmFyICIpO2UudmFyaWFibGUudmlzaXQodGhpcyk7dGhpcy5wYXJ0cy5wdXNoKCIgPSAiKTtlLmFyZy52aXNpdCh0aGlzKTt0aGlzLnBhcnRzLnB1c2goIjsiKX12aXNpdE1pbihlKXt0aGlzLnBhcnRzLnB1c2goIk1hdGgubWluKCIpO2UuYXJnLnZpc2l0KHRoaXMpO3RoaXMucGFydHMucHVzaCgiLCAiLGUubWF4LCIpIil9dG9TdHJpbmcoKXtyZXR1cm4gdGhpcy5wYXJ0cy5qb2luKCIiKX19ZnVuY3Rpb24gYnVpbGRBZGRPcGVyYXRpb24oZSx0KXtyZXR1cm4ibGl0ZXJhbCI9PT10LnR5cGUmJjA9PT10Lm51bWJlcj9lOiJsaXRlcmFsIj09PWUudHlwZSYmMD09PWUubnVtYmVyP3Q6ImxpdGVyYWwiPT09dC50eXBlJiYibGl0ZXJhbCI9PT1lLnR5cGU/bmV3IEFzdExpdGVyYWwoZS5udW1iZXIrdC5udW1iZXIpOm5ldyBBc3RCaW5hcnlPcGVyYXRpb24oIisiLGUsdCxlLm1pbit0Lm1pbixlLm1heCt0Lm1heCl9ZnVuY3Rpb24gYnVpbGRNdWxPcGVyYXRpb24oZSx0KXtpZigibGl0ZXJhbCI9PT10LnR5cGUpe2lmKDA9PT10Lm51bWJlcilyZXR1cm4gbmV3IEFzdExpdGVyYWwoMCk7aWYoMT09PXQubnVtYmVyKXJldHVybiBlO2lmKCJsaXRlcmFsIj09PWUudHlwZSlyZXR1cm4gbmV3IEFzdExpdGVyYWwoZS5udW1iZXIqdC5udW1iZXIpfWlmKCJsaXRlcmFsIj09PWUudHlwZSl7aWYoMD09PWUubnVtYmVyKXJldHVybiBuZXcgQXN0TGl0ZXJhbCgwKTtpZigxPT09ZS5udW1iZXIpcmV0dXJuIHR9Y29uc3QgaT1NYXRoLm1pbihlLm1pbip0Lm1pbixlLm1pbip0Lm1heCxlLm1heCp0Lm1pbixlLm1heCp0Lm1heCksYT1NYXRoLm1heChlLm1pbip0Lm1pbixlLm1pbip0Lm1heCxlLm1heCp0Lm1pbixlLm1heCp0Lm1heCk7cmV0dXJuIG5ldyBBc3RCaW5hcnlPcGVyYXRpb24oIioiLGUsdCxpLGEpfWZ1bmN0aW9uIGJ1aWxkU3ViT3BlcmF0aW9uKGUsdCl7aWYoImxpdGVyYWwiPT09dC50eXBlKXtpZigwPT09dC5udW1iZXIpcmV0dXJuIGU7aWYoImxpdGVyYWwiPT09ZS50eXBlKXJldHVybiBuZXcgQXN0TGl0ZXJhbChlLm51bWJlci10Lm51bWJlcil9cmV0dXJuImJpbmFyeSI9PT10LnR5cGUmJiItIj09PXQub3AmJiJsaXRlcmFsIj09PWUudHlwZSYmMT09PWUubnVtYmVyJiYibGl0ZXJhbCI9PT10LmFyZzEudHlwZSYmMT09PXQuYXJnMS5udW1iZXI/dC5hcmcyOm5ldyBBc3RCaW5hcnlPcGVyYXRpb24oIi0iLGUsdCxlLm1pbi10Lm1heCxlLm1heC10Lm1pbil9ZnVuY3Rpb24gYnVpbGRNaW5PcGVyYXRpb24oZSx0KXtyZXR1cm4gZS5taW4+PXQ/bmV3IEFzdExpdGVyYWwodCk6ZS5tYXg8PXQ/ZTpuZXcgQXN0TWluKGUsdCl9Y2xhc3MgUG9zdFNjcmlwdENvbXBpbGVye2NvbXBpbGUoZSx0LGkpe2NvbnN0IGE9W10scj1bXSxzPXQubGVuZ3RoPj4xLG49aS5sZW5ndGg+PjE7bGV0IG8sZyxjLEMsaCxsLFEsRSx1PTA7Zm9yKGxldCBlPTA7ZTxzO2UrKylhLnB1c2gobmV3IEFzdEFyZ3VtZW50KGUsdFsyKmVdLHRbMiplKzFdKSk7Zm9yKGxldCB0PTAsaT1lLmxlbmd0aDt0PGk7dCsrKXtFPWVbdF07aWYoIm51bWJlciIhPXR5cGVvZiBFKXN3aXRjaChFKXtjYXNlImFkZCI6aWYoYS5sZW5ndGg8MilyZXR1cm4gbnVsbDtDPWEucG9wKCk7Yz1hLnBvcCgpO2EucHVzaChidWlsZEFkZE9wZXJhdGlvbihjLEMpKTticmVhaztjYXNlImN2ciI6aWYoYS5sZW5ndGg8MSlyZXR1cm4gbnVsbDticmVhaztjYXNlIm11bCI6aWYoYS5sZW5ndGg8MilyZXR1cm4gbnVsbDtDPWEucG9wKCk7Yz1hLnBvcCgpO2EucHVzaChidWlsZE11bE9wZXJhdGlvbihjLEMpKTticmVhaztjYXNlInN1YiI6aWYoYS5sZW5ndGg8MilyZXR1cm4gbnVsbDtDPWEucG9wKCk7Yz1hLnBvcCgpO2EucHVzaChidWlsZFN1Yk9wZXJhdGlvbihjLEMpKTticmVhaztjYXNlImV4Y2giOmlmKGEubGVuZ3RoPDIpcmV0dXJuIG51bGw7aD1hLnBvcCgpO2w9YS5wb3AoKTthLnB1c2goaCxsKTticmVhaztjYXNlInBvcCI6aWYoYS5sZW5ndGg8MSlyZXR1cm4gbnVsbDthLnBvcCgpO2JyZWFrO2Nhc2UiaW5kZXgiOmlmKGEubGVuZ3RoPDEpcmV0dXJuIG51bGw7Yz1hLnBvcCgpO2lmKCJsaXRlcmFsIiE9PWMudHlwZSlyZXR1cm4gbnVsbDtvPWMubnVtYmVyO2lmKG88MHx8IU51bWJlci5pc0ludGVnZXIobyl8fGEubGVuZ3RoPG8pcmV0dXJuIG51bGw7aD1hW2EubGVuZ3RoLW8tMV07aWYoImxpdGVyYWwiPT09aC50eXBlfHwidmFyIj09PWgudHlwZSl7YS5wdXNoKGgpO2JyZWFrfVE9bmV3IEFzdFZhcmlhYmxlKHUrKyxoLm1pbixoLm1heCk7YVthLmxlbmd0aC1vLTFdPVE7YS5wdXNoKFEpO3IucHVzaChuZXcgQXN0VmFyaWFibGVEZWZpbml0aW9uKFEsaCkpO2JyZWFrO2Nhc2UiZHVwIjppZihhLmxlbmd0aDwxKXJldHVybiBudWxsO2lmKCJudW1iZXIiPT10eXBlb2YgZVt0KzFdJiYiZ3QiPT09ZVt0KzJdJiZlW3QrM109PT10KzcmJiJqeiI9PT1lW3QrNF0mJiJwb3AiPT09ZVt0KzVdJiZlW3QrNl09PT1lW3QrMV0pe2M9YS5wb3AoKTthLnB1c2goYnVpbGRNaW5PcGVyYXRpb24oYyxlW3QrMV0pKTt0Kz02O2JyZWFrfWg9YS5hdCgtMSk7aWYoImxpdGVyYWwiPT09aC50eXBlfHwidmFyIj09PWgudHlwZSl7YS5wdXNoKGgpO2JyZWFrfVE9bmV3IEFzdFZhcmlhYmxlKHUrKyxoLm1pbixoLm1heCk7YVthLmxlbmd0aC0xXT1RO2EucHVzaChRKTtyLnB1c2gobmV3IEFzdFZhcmlhYmxlRGVmaW5pdGlvbihRLGgpKTticmVhaztjYXNlInJvbGwiOmlmKGEubGVuZ3RoPDIpcmV0dXJuIG51bGw7Qz1hLnBvcCgpO2M9YS5wb3AoKTtpZigibGl0ZXJhbCIhPT1DLnR5cGV8fCJsaXRlcmFsIiE9PWMudHlwZSlyZXR1cm4gbnVsbDtnPUMubnVtYmVyO289Yy5udW1iZXI7aWYobzw9MHx8IU51bWJlci5pc0ludGVnZXIobyl8fCFOdW1iZXIuaXNJbnRlZ2VyKGcpfHxhLmxlbmd0aDxvKXJldHVybiBudWxsO2c9KGclbytvKSVvO2lmKDA9PT1nKWJyZWFrO2EucHVzaCguLi5hLnNwbGljZShhLmxlbmd0aC1vLG8tZykpO2JyZWFrO2RlZmF1bHQ6cmV0dXJuIG51bGx9ZWxzZSBhLnB1c2gobmV3IEFzdExpdGVyYWwoRSkpfWlmKGEubGVuZ3RoIT09bilyZXR1cm4gbnVsbDtjb25zdCBkPVtdO2Zvcihjb25zdCBlIG9mIHIpe2NvbnN0IHQ9bmV3IEV4cHJlc3Npb25CdWlsZGVyVmlzaXRvcjtlLnZpc2l0KHQpO2QucHVzaCh0LnRvU3RyaW5nKCkpfWZvcihsZXQgZT0wLHQ9YS5sZW5ndGg7ZTx0O2UrKyl7Y29uc3QgdD1hW2VdLHI9bmV3IEV4cHJlc3Npb25CdWlsZGVyVmlzaXRvcjt0LnZpc2l0KHIpO2NvbnN0IHM9aVsyKmVdLG49aVsyKmUrMV0sbz1bci50b1N0cmluZygpXTtpZihzPnQubWluKXtvLnVuc2hpZnQoIk1hdGgubWF4KCIscywiLCAiKTtvLnB1c2goIikiKX1pZihuPHQubWF4KXtvLnVuc2hpZnQoIk1hdGgubWluKCIsbiwiLCAiKTtvLnB1c2goIikiKX1vLnVuc2hpZnQoImRlc3RbZGVzdE9mZnNldCArICIsZSwiXSA9ICIpO28ucHVzaCgiOyIpO2QucHVzaChvLmpvaW4oIiIpKX1yZXR1cm4gZC5qb2luKCJcbiIpfX1jb25zdCBkcj1bIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIlMiLCJCIiwiUyIsIldTIiwiQiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCIiwiQiIsIkIiLCJTIiwiV1MiLCJPTiIsIk9OIiwiRVQiLCJFVCIsIkVUIiwiT04iLCJPTiIsIk9OIiwiT04iLCJPTiIsIkVTIiwiQ1MiLCJFUyIsIkNTIiwiQ1MiLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkNTIiwiT04iLCJPTiIsIk9OIiwiT04iLCJPTiIsIk9OIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJPTiIsIk9OIiwiT04iLCJPTiIsIk9OIiwiT04iLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIk9OIiwiT04iLCJPTiIsIk9OIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJDUyIsIk9OIiwiRVQiLCJFVCIsIkVUIiwiRVQiLCJPTiIsIk9OIiwiT04iLCJPTiIsIkwiLCJPTiIsIk9OIiwiQk4iLCJPTiIsIk9OIiwiRVQiLCJFVCIsIkVOIiwiRU4iLCJPTiIsIkwiLCJPTiIsIk9OIiwiT04iLCJFTiIsIkwiLCJPTiIsIk9OIiwiT04iLCJPTiIsIk9OIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJPTiIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJPTiIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIl0sZnI9WyJBTiIsIkFOIiwiQU4iLCJBTiIsIkFOIiwiQU4iLCJPTiIsIk9OIiwiQUwiLCJFVCIsIkVUIiwiQUwiLCJDUyIsIkFMIiwiT04iLCJPTiIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIkFMIiwiQUwiLCIiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJBTiIsIkFOIiwiQU4iLCJBTiIsIkFOIiwiQU4iLCJBTiIsIkFOIiwiQU4iLCJBTiIsIkVUIiwiQU4iLCJBTiIsIkFMIiwiQUwiLCJBTCIsIk5TTSIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJBTiIsIk9OIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiQUwiLCJBTCIsIk5TTSIsIk5TTSIsIk9OIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiQUwiLCJBTCIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIl07ZnVuY3Rpb24gaXNPZGQoZSl7cmV0dXJuIDAhPSgxJmUpfWZ1bmN0aW9uIGlzRXZlbihlKXtyZXR1cm4gMD09KDEmZSl9ZnVuY3Rpb24gZmluZFVuZXF1YWwoZSx0LGkpe2xldCBhLHI7Zm9yKGE9dCxyPWUubGVuZ3RoO2E8cjsrK2EpaWYoZVthXSE9PWkpcmV0dXJuIGE7cmV0dXJuIGF9ZnVuY3Rpb24gc2V0VmFsdWVzKGUsdCxpLGEpe2ZvcihsZXQgcj10O3I8aTsrK3IpZVtyXT1hfWZ1bmN0aW9uIHJldmVyc2VWYWx1ZXMoZSx0LGkpe2ZvcihsZXQgYT10LHI9aS0xO2E8cjsrK2EsLS1yKXtjb25zdCB0PWVbYV07ZVthXT1lW3JdO2Vbcl09dH19ZnVuY3Rpb24gY3JlYXRlQmlkaVRleHQoZSx0LGk9ITEpe2xldCBhPSJsdHIiO2k/YT0idHRiIjp0fHwoYT0icnRsIik7cmV0dXJue3N0cjplLGRpcjphfX1jb25zdCBwcj1bXSxtcj1bXTtmdW5jdGlvbiBiaWRpKGUsdD0tMSxpPSExKXtsZXQgYT0hMDtjb25zdCByPWUubGVuZ3RoO2lmKDA9PT1yfHxpKXJldHVybiBjcmVhdGVCaWRpVGV4dChlLGEsaSk7cHIubGVuZ3RoPXI7bXIubGVuZ3RoPXI7bGV0IHMsbixvPTA7Zm9yKHM9MDtzPHI7KytzKXtwcltzXT1lLmNoYXJBdChzKTtjb25zdCB0PWUuY2hhckNvZGVBdChzKTtsZXQgaT0iTCI7aWYodDw9MjU1KWk9ZHJbdF07ZWxzZSBpZigxNDI0PD10JiZ0PD0xNTI0KWk9IlIiO2Vsc2UgaWYoMTUzNjw9dCYmdDw9MTc5MSl7aT1mclsyNTUmdF07aXx8d2FybigiQmlkaTogaW52YWxpZCBVbmljb2RlIGNoYXJhY3RlciAiK3QudG9TdHJpbmcoMTYpKX1lbHNlKDE3OTI8PXQmJnQ8PTIyMjB8fDY0MzM2PD10JiZ0PD02NTAyM3x8NjUxMzY8PXQmJnQ8PTY1Mjc5KSYmKGk9IkFMIik7IlIiIT09aSYmIkFMIiE9PWkmJiJBTiIhPT1pfHxvKys7bXJbc109aX1pZigwPT09byl7YT0hMDtyZXR1cm4gY3JlYXRlQmlkaVRleHQoZSxhKX1pZigtMT09PXQpaWYoby9yPC4zJiZyPjQpe2E9ITA7dD0wfWVsc2V7YT0hMTt0PTF9Y29uc3QgZz1bXTtmb3Iocz0wO3M8cjsrK3MpZ1tzXT10O2NvbnN0IGM9aXNPZGQodCk/IlIiOiJMIixDPWMsaD1DO2xldCBsLFE9Qztmb3Iocz0wO3M8cjsrK3MpIk5TTSI9PT1tcltzXT9tcltzXT1ROlE9bXJbc107UT1DO2ZvcihzPTA7czxyOysrcyl7bD1tcltzXTsiRU4iPT09bD9tcltzXT0iQUwiPT09UT8iQU4iOiJFTiI6IlIiIT09bCYmIkwiIT09bCYmIkFMIiE9PWx8fChRPWwpfWZvcihzPTA7czxyOysrcyl7bD1tcltzXTsiQUwiPT09bCYmKG1yW3NdPSJSIil9Zm9yKHM9MTtzPHItMTsrK3MpeyJFUyI9PT1tcltzXSYmIkVOIj09PW1yW3MtMV0mJiJFTiI9PT1tcltzKzFdJiYobXJbc109IkVOIik7IkNTIiE9PW1yW3NdfHwiRU4iIT09bXJbcy0xXSYmIkFOIiE9PW1yW3MtMV18fG1yW3MrMV0hPT1tcltzLTFdfHwobXJbc109bXJbcy0xXSl9Zm9yKHM9MDtzPHI7KytzKWlmKCJFTiI9PT1tcltzXSl7Zm9yKGxldCBlPXMtMTtlPj0wJiYiRVQiPT09bXJbZV07LS1lKW1yW2VdPSJFTiI7Zm9yKGxldCBlPXMrMTtlPHImJiJFVCI9PT1tcltlXTsrK2UpbXJbZV09IkVOIn1mb3Iocz0wO3M8cjsrK3Mpe2w9bXJbc107IldTIiE9PWwmJiJFUyIhPT1sJiYiRVQiIT09bCYmIkNTIiE9PWx8fChtcltzXT0iT04iKX1RPUM7Zm9yKHM9MDtzPHI7KytzKXtsPW1yW3NdOyJFTiI9PT1sP21yW3NdPSJMIj09PVE/IkwiOiJFTiI6IlIiIT09bCYmIkwiIT09bHx8KFE9bCl9Zm9yKHM9MDtzPHI7KytzKWlmKCJPTiI9PT1tcltzXSl7Y29uc3QgZT1maW5kVW5lcXVhbChtcixzKzEsIk9OIik7bGV0IHQ9QztzPjAmJih0PW1yW3MtMV0pO2xldCBpPWg7ZSsxPHImJihpPW1yW2UrMV0pOyJMIiE9PXQmJih0PSJSIik7IkwiIT09aSYmKGk9IlIiKTt0PT09aSYmc2V0VmFsdWVzKG1yLHMsZSx0KTtzPWUtMX1mb3Iocz0wO3M8cjsrK3MpIk9OIj09PW1yW3NdJiYobXJbc109Yyk7Zm9yKHM9MDtzPHI7KytzKXtsPW1yW3NdO2lzRXZlbihnW3NdKT8iUiI9PT1sP2dbc10rPTE6IkFOIiE9PWwmJiJFTiIhPT1sfHwoZ1tzXSs9Mik6IkwiIT09bCYmIkFOIiE9PWwmJiJFTiIhPT1sfHwoZ1tzXSs9MSl9bGV0IEUsdT0tMSxkPTk5O2ZvcihzPTAsbj1nLmxlbmd0aDtzPG47KytzKXtFPWdbc107dTxFJiYodT1FKTtkPkUmJmlzT2RkKEUpJiYoZD1FKX1mb3IoRT11O0U+PWQ7LS1FKXtsZXQgZT0tMTtmb3Iocz0wLG49Zy5sZW5ndGg7czxuOysrcylpZihnW3NdPEUpe2lmKGU+PTApe3JldmVyc2VWYWx1ZXMocHIsZSxzKTtlPS0xfX1lbHNlIGU8MCYmKGU9cyk7ZT49MCYmcmV2ZXJzZVZhbHVlcyhwcixlLGcubGVuZ3RoKX1mb3Iocz0wLG49cHIubGVuZ3RoO3M8bjsrK3Mpe2NvbnN0IGU9cHJbc107IjwiIT09ZSYmIj4iIT09ZXx8KHByW3NdPSIiKX1yZXR1cm4gY3JlYXRlQmlkaVRleHQocHIuam9pbigiIiksYSl9Y29uc3QgeXI9e3N0eWxlOiJub3JtYWwiLHdlaWdodDoibm9ybWFsIn0sd3I9e3N0eWxlOiJub3JtYWwiLHdlaWdodDoiYm9sZCJ9LGJyPXtzdHlsZToiaXRhbGljIix3ZWlnaHQ6Im5vcm1hbCJ9LERyPXtzdHlsZToiaXRhbGljIix3ZWlnaHQ6ImJvbGQifSxGcj1uZXcgTWFwKFtbIlRpbWVzLVJvbWFuIix7bG9jYWw6WyJUaW1lcyBOZXcgUm9tYW4iLCJUaW1lcy1Sb21hbiIsIlRpbWVzIiwiTGliZXJhdGlvbiBTZXJpZiIsIk5pbWJ1cyBSb21hbiIsIk5pbWJ1cyBSb21hbiBMIiwiVGlub3MiLCJUaG9ybmRhbGUiLCJUZVggR3lyZSBUZXJtZXMiLCJGcmVlU2VyaWYiLCJMaW51eCBMaWJlcnRpbmUgTyIsIkxpYmVydGludXMgU2VyaWYiLCJEZWphVnUgU2VyaWYiLCJCaXRzdHJlYW0gVmVyYSBTZXJpZiIsIlVidW50dSJdLHN0eWxlOnlyLHVsdGltYXRlOiJzZXJpZiJ9XSxbIlRpbWVzLUJvbGQiLHthbGlhczoiVGltZXMtUm9tYW4iLHN0eWxlOndyLHVsdGltYXRlOiJzZXJpZiJ9XSxbIlRpbWVzLUl0YWxpYyIse2FsaWFzOiJUaW1lcy1Sb21hbiIsc3R5bGU6YnIsdWx0aW1hdGU6InNlcmlmIn1dLFsiVGltZXMtQm9sZEl0YWxpYyIse2FsaWFzOiJUaW1lcy1Sb21hbiIsc3R5bGU6RHIsdWx0aW1hdGU6InNlcmlmIn1dLFsiSGVsdmV0aWNhIix7bG9jYWw6WyJIZWx2ZXRpY2EiLCJIZWx2ZXRpY2EgTmV1ZSIsIkFyaWFsIiwiQXJpYWwgTm92YSIsIkxpYmVyYXRpb24gU2FucyIsIkFyaW1vIiwiTmltYnVzIFNhbnMiLCJOaW1idXMgU2FucyBMIiwiQTAzMCIsIlRlWCBHeXJlIEhlcm9zIiwiRnJlZVNhbnMiLCJEZWphVnUgU2FucyIsIkFsYmFueSIsIkJpdHN0cmVhbSBWZXJhIFNhbnMiLCJBcmlhbCBVbmljb2RlIE1TIiwiTWljcm9zb2Z0IFNhbnMgU2VyaWYiLCJBcHBsZSBTeW1ib2xzIiwiQ2FudGFyZWxsIl0scGF0aDoiTGliZXJhdGlvblNhbnMtUmVndWxhci50dGYiLHN0eWxlOnlyLHVsdGltYXRlOiJzYW5zLXNlcmlmIn1dLFsiSGVsdmV0aWNhLUJvbGQiLHthbGlhczoiSGVsdmV0aWNhIixwYXRoOiJMaWJlcmF0aW9uU2Fucy1Cb2xkLnR0ZiIsc3R5bGU6d3IsdWx0aW1hdGU6InNhbnMtc2VyaWYifV0sWyJIZWx2ZXRpY2EtT2JsaXF1ZSIse2FsaWFzOiJIZWx2ZXRpY2EiLHBhdGg6IkxpYmVyYXRpb25TYW5zLUl0YWxpYy50dGYiLHN0eWxlOmJyLHVsdGltYXRlOiJzYW5zLXNlcmlmIn1dLFsiSGVsdmV0aWNhLUJvbGRPYmxpcXVlIix7YWxpYXM6IkhlbHZldGljYSIscGF0aDoiTGliZXJhdGlvblNhbnMtQm9sZEl0YWxpYy50dGYiLHN0eWxlOkRyLHVsdGltYXRlOiJzYW5zLXNlcmlmIn1dLFsiQ291cmllciIse2xvY2FsOlsiQ291cmllciIsIkNvdXJpZXIgTmV3IiwiTGliZXJhdGlvbiBNb25vIiwiTmltYnVzIE1vbm8iLCJOaW1idXMgTW9ubyBMIiwiQ291c2luZSIsIkN1bWJlcmxhbmQiLCJUZVggR3lyZSBDdXJzb3IiLCJGcmVlTW9ubyIsIkxpbnV4IExpYmVydGluZSBNb25vIE8iLCJMaWJlcnRpbnVzIE1vbm8iXSxzdHlsZTp5cix1bHRpbWF0ZToibW9ub3NwYWNlIn1dLFsiQ291cmllci1Cb2xkIix7YWxpYXM6IkNvdXJpZXIiLHN0eWxlOndyLHVsdGltYXRlOiJtb25vc3BhY2UifV0sWyJDb3VyaWVyLU9ibGlxdWUiLHthbGlhczoiQ291cmllciIsc3R5bGU6YnIsdWx0aW1hdGU6Im1vbm9zcGFjZSJ9XSxbIkNvdXJpZXItQm9sZE9ibGlxdWUiLHthbGlhczoiQ291cmllciIsc3R5bGU6RHIsdWx0aW1hdGU6Im1vbm9zcGFjZSJ9XSxbIkFyaWFsQmxhY2siLHtsb2NhbDpbIkFyaWFsIEJsYWNrIl0sc3R5bGU6e3N0eWxlOiJub3JtYWwiLHdlaWdodDoiOTAwIn0sZmFsbGJhY2s6IkhlbHZldGljYS1Cb2xkIn1dLFsiQXJpYWxCbGFjay1Cb2xkIix7YWxpYXM6IkFyaWFsQmxhY2sifV0sWyJBcmlhbEJsYWNrLUl0YWxpYyIse2FsaWFzOiJBcmlhbEJsYWNrIixzdHlsZTp7c3R5bGU6Iml0YWxpYyIsd2VpZ2h0OiI5MDAifSxmYWxsYmFjazoiSGVsdmV0aWNhLUJvbGRPYmxpcXVlIn1dLFsiQXJpYWxCbGFjay1Cb2xkSXRhbGljIix7YWxpYXM6IkFyaWFsQmxhY2stSXRhbGljIn1dLFsiQXJpYWxOYXJyb3ciLHtsb2NhbDpbIkFyaWFsIE5hcnJvdyIsIkxpYmVyYXRpb24gU2FucyBOYXJyb3ciLCJIZWx2ZXRpY2EgQ29uZGVuc2VkIiwiTmltYnVzIFNhbnMgTmFycm93IiwiVGVYIEd5cmUgSGVyb3MgQ24iXSxzdHlsZTp5cixmYWxsYmFjazoiSGVsdmV0aWNhIn1dLFsiQXJpYWxOYXJyb3ctQm9sZCIse2FsaWFzOiJBcmlhbE5hcnJvdyIsc3R5bGU6d3IsZmFsbGJhY2s6IkhlbHZldGljYS1Cb2xkIn1dLFsiQXJpYWxOYXJyb3ctSXRhbGljIix7YWxpYXM6IkFyaWFsTmFycm93IixzdHlsZTpicixmYWxsYmFjazoiSGVsdmV0aWNhLU9ibGlxdWUifV0sWyJBcmlhbE5hcnJvdy1Cb2xkSXRhbGljIix7YWxpYXM6IkFyaWFsTmFycm93IixzdHlsZTpEcixmYWxsYmFjazoiSGVsdmV0aWNhLUJvbGRPYmxpcXVlIn1dLFsiQ2FsaWJyaSIse2xvY2FsOlsiQ2FsaWJyaSIsIkNhcmxpdG8iXSxzdHlsZTp5cixmYWxsYmFjazoiSGVsdmV0aWNhIn1dLFsiQ2FsaWJyaS1Cb2xkIix7YWxpYXM6IkNhbGlicmkiLHN0eWxlOndyLGZhbGxiYWNrOiJIZWx2ZXRpY2EtQm9sZCJ9XSxbIkNhbGlicmktSXRhbGljIix7YWxpYXM6IkNhbGlicmkiLHN0eWxlOmJyLGZhbGxiYWNrOiJIZWx2ZXRpY2EtT2JsaXF1ZSJ9XSxbIkNhbGlicmktQm9sZEl0YWxpYyIse2FsaWFzOiJDYWxpYnJpIixzdHlsZTpEcixmYWxsYmFjazoiSGVsdmV0aWNhLUJvbGRPYmxpcXVlIn1dLFsiV2luZ2RpbmdzIix7bG9jYWw6WyJXaW5nZGluZ3MiLCJVUlcgRGluZ2JhdHMiXSxzdHlsZTp5cn1dLFsiV2luZ2RpbmdzLVJlZ3VsYXIiLHthbGlhczoiV2luZ2RpbmdzIn1dLFsiV2luZ2RpbmdzLUJvbGQiLHthbGlhczoiV2luZ2RpbmdzIn1dXSksU3I9bmV3IE1hcChbWyJBcmlhbC1CbGFjayIsIkFyaWFsQmxhY2siXV0pO2Z1bmN0aW9uIGdldEZhbWlseU5hbWUoZSl7Y29uc3QgdD1uZXcgU2V0KFsidGhpbiIsImV4dHJhbGlnaHQiLCJ1bHRyYWxpZ2h0IiwiZGVtaWxpZ2h0Iiwic2VtaWxpZ2h0IiwibGlnaHQiLCJib29rIiwicmVndWxhciIsIm5vcm1hbCIsIm1lZGl1bSIsImRlbWlib2xkIiwic2VtaWJvbGQiLCJib2xkIiwiZXh0cmFib2xkIiwidWx0cmFib2xkIiwiYmxhY2siLCJoZWF2eSIsImV4dHJhYmxhY2siLCJ1bHRyYWJsYWNrIiwicm9tYW4iLCJpdGFsaWMiLCJvYmxpcXVlIiwidWx0cmFjb25kZW5zZWQiLCJleHRyYWNvbmRlbnNlZCIsImNvbmRlbnNlZCIsInNlbWljb25kZW5zZWQiLCJub3JtYWwiLCJzZW1pZXhwYW5kZWQiLCJleHBhbmRlZCIsImV4dHJhZXhwYW5kZWQiLCJ1bHRyYWV4cGFuZGVkIiwiYm9sZGl0YWxpYyJdKTtyZXR1cm4gZS5zcGxpdCgvWy0gLCtdKy9nKS5maWx0ZXIoKGU9PiF0LmhhcyhlLnRvTG93ZXJDYXNlKCkpKSkuam9pbigiICIpfWZ1bmN0aW9uIGdlbmVyYXRlRm9udCh7YWxpYXM6ZSxsb2NhbDp0LHBhdGg6aSxmYWxsYmFjazphLHN0eWxlOnIsdWx0aW1hdGU6c30sbixvLGc9ITAsYz0hMCxDPSIiKXtjb25zdCBoPXtzdHlsZTpudWxsLHVsdGltYXRlOm51bGx9O2lmKHQpe2NvbnN0IGU9Qz9gICR7Q31gOiIiO2Zvcihjb25zdCBpIG9mIHQpbi5wdXNoKGBsb2NhbCgke2l9JHtlfSlgKX1pZihlKXtjb25zdCB0PUZyLmdldChlKSxzPUN8fGZ1bmN0aW9uIGdldFN0eWxlVG9BcHBlbmQoZSl7c3dpdGNoKGUpe2Nhc2Ugd3I6cmV0dXJuIkJvbGQiO2Nhc2UgYnI6cmV0dXJuIkl0YWxpYyI7Y2FzZSBEcjpyZXR1cm4iQm9sZCBJdGFsaWMiO2RlZmF1bHQ6aWYoImJvbGQiPT09ZT8ud2VpZ2h0KXJldHVybiJCb2xkIjtpZigiaXRhbGljIj09PWU/LnN0eWxlKXJldHVybiJJdGFsaWMifXJldHVybiIifShyKTtPYmplY3QuYXNzaWduKGgsZ2VuZXJhdGVGb250KHQsbixvLGcmJiFhLGMmJiFpLHMpKX1yJiYoaC5zdHlsZT1yKTtzJiYoaC51bHRpbWF0ZT1zKTtpZihnJiZhKXtjb25zdCBlPUZyLmdldChhKSx7dWx0aW1hdGU6dH09Z2VuZXJhdGVGb250KGUsbixvLGcsYyYmIWksQyk7aC51bHRpbWF0ZXx8PXR9YyYmaSYmbyYmbi5wdXNoKGB1cmwoJHtvfSR7aX0pYCk7cmV0dXJuIGh9ZnVuY3Rpb24gZ2V0Rm9udFN1YnN0aXR1dGlvbihlLHQsaSxhLHIscyl7aWYoYS5zdGFydHNXaXRoKCJJbnZhbGlkUERGanNGb250XyIpKXJldHVybiBudWxsOyJUcnVlVHlwZSIhPT1zJiYiVHlwZTEiIT09c3x8IS9eW0EtWl17Nn1cKy8udGVzdChhKXx8KGE9YS5zbGljZSg3KSk7Y29uc3Qgbj1hPW5vcm1hbGl6ZUZvbnROYW1lKGEpO2xldCBvPWUuZ2V0KG4pO2lmKG8pcmV0dXJuIG87bGV0IGc9RnIuZ2V0KGEpO2lmKCFnKWZvcihjb25zdFtlLHRdb2YgU3IpaWYoYS5zdGFydHNXaXRoKGUpKXthPWAke3R9JHthLnN1YnN0cmluZyhlLmxlbmd0aCl9YDtnPUZyLmdldChhKTticmVha31sZXQgYz0hMTtpZighZyl7Zz1Gci5nZXQocik7Yz0hMH1jb25zdCBDPWAke3QuZ2V0RG9jSWQoKX1fcyR7dC5jcmVhdGVGb250SWQoKX1gO2lmKCFnKXtpZighdmFsaWRhdGVGb250TmFtZShhKSl7d2FybihgQ2Fubm90IHN1YnN0aXR1dGUgdGhlIGZvbnQgYmVjYXVzZSBvZiBpdHMgbmFtZTogJHthfWApO2Uuc2V0KG4sbnVsbCk7cmV0dXJuIG51bGx9Y29uc3QgdD0vYm9sZC9naS50ZXN0KGEpLGk9L29ibGlxdWV8aXRhbGljL2dpLnRlc3QoYSkscj10JiZpJiZEcnx8dCYmd3J8fGkmJmJyfHx5cjtvPXtjc3M6YCIke2dldEZhbWlseU5hbWUoYSl9Iiwke0N9YCxndWVzc0ZhbGxiYWNrOiEwLGxvYWRlZE5hbWU6QyxiYXNlRm9udE5hbWU6YSxzcmM6YGxvY2FsKCR7YX0pYCxzdHlsZTpyfTtlLnNldChuLG8pO3JldHVybiBvfWNvbnN0IGg9W107YyYmdmFsaWRhdGVGb250TmFtZShhKSYmaC5wdXNoKGBsb2NhbCgke2F9KWApO2NvbnN0e3N0eWxlOmwsdWx0aW1hdGU6UX09Z2VuZXJhdGVGb250KGcsaCxpKSxFPW51bGw9PT1RLHU9RT8iIjpgLCR7UX1gO289e2NzczpgIiR7Z2V0RmFtaWx5TmFtZShhKX0iLCR7Q30ke3V9YCxndWVzc0ZhbGxiYWNrOkUsbG9hZGVkTmFtZTpDLGJhc2VGb250TmFtZTphLHNyYzpoLmpvaW4oIiwiKSxzdHlsZTpsfTtlLnNldChuLG8pO3JldHVybiBvfWNsYXNzIEltYWdlUmVzaXplcntjb25zdHJ1Y3RvcihlLHQpe3RoaXMuX2ltZ0RhdGE9ZTt0aGlzLl9pc01hc2s9dH1zdGF0aWMgbmVlZHNUb0JlUmVzaXplZChlLHQpe2lmKGU8PXRoaXMuX2dvb2RTcXVhcmVMZW5ndGgmJnQ8PXRoaXMuX2dvb2RTcXVhcmVMZW5ndGgpcmV0dXJuITE7Y29uc3R7TUFYX0RJTTppfT10aGlzO2lmKGU+aXx8dD5pKXJldHVybiEwO2NvbnN0IGE9ZSp0O2lmKHRoaXMuX2hhc01heEFyZWEpcmV0dXJuIGE+dGhpcy5NQVhfQVJFQTtpZihhPHRoaXMuX2dvb2RTcXVhcmVMZW5ndGgqKjIpcmV0dXJuITE7aWYodGhpcy5fYXJlR29vZERpbXMoZSx0KSl7dGhpcy5fZ29vZFNxdWFyZUxlbmd0aD1NYXRoLm1heCh0aGlzLl9nb29kU3F1YXJlTGVuZ3RoLE1hdGguZmxvb3IoTWF0aC5zcXJ0KGUqdCkpKTtyZXR1cm4hMX10aGlzLl9nb29kU3F1YXJlTGVuZ3RoPXRoaXMuX2d1ZXNzTWF4KHRoaXMuX2dvb2RTcXVhcmVMZW5ndGgsaSwxMjgsMCk7cmV0dXJuIGE+KHRoaXMuTUFYX0FSRUE9dGhpcy5fZ29vZFNxdWFyZUxlbmd0aCoqMil9c3RhdGljIGdldCBNQVhfRElNKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJNQVhfRElNIix0aGlzLl9ndWVzc01heCgyMDQ4LDY1NTM3LDAsMSkpfXN0YXRpYyBnZXQgTUFYX0FSRUEoKXt0aGlzLl9oYXNNYXhBcmVhPSEwO3JldHVybiBzaGFkb3codGhpcywiTUFYX0FSRUEiLHRoaXMuX2d1ZXNzTWF4KEltYWdlUmVzaXplci5fZ29vZFNxdWFyZUxlbmd0aCx0aGlzLk1BWF9ESU0sMTI4LDApKioyKX1zdGF0aWMgc2V0IE1BWF9BUkVBKGUpe2lmKGU+PTApe3RoaXMuX2hhc01heEFyZWE9ITA7c2hhZG93KHRoaXMsIk1BWF9BUkVBIixlKX19c3RhdGljIHNldE1heEFyZWEoZSl7dGhpcy5faGFzTWF4QXJlYXx8KHRoaXMuTUFYX0FSRUE9ZT4+Mil9c3RhdGljIF9hcmVHb29kRGltcyhlLHQpe3RyeXtjb25zdCBpPW5ldyBPZmZzY3JlZW5DYW52YXMoZSx0KSxhPWkuZ2V0Q29udGV4dCgiMmQiKTthLmZpbGxSZWN0KDAsMCwxLDEpO2NvbnN0IHI9YS5nZXRJbWFnZURhdGEoMCwwLDEsMSkuZGF0YVszXTtpLndpZHRoPWkuaGVpZ2h0PTE7cmV0dXJuIDAhPT1yfWNhdGNoe3JldHVybiExfX1zdGF0aWMgX2d1ZXNzTWF4KGUsdCxpLGEpe2Zvcig7ZStpKzE8dDspe2NvbnN0IGk9TWF0aC5mbG9vcigoZSt0KS8yKSxyPWF8fGk7dGhpcy5fYXJlR29vZERpbXMoaSxyKT9lPWk6dD1pfXJldHVybiBlfXN0YXRpYyBhc3luYyBjcmVhdGVJbWFnZShlLHQ9ITEpe3JldHVybiBuZXcgSW1hZ2VSZXNpemVyKGUsdCkuX2NyZWF0ZUltYWdlKCl9YXN5bmMgX2NyZWF0ZUltYWdlKCl7Y29uc3QgZT10aGlzLl9lbmNvZGVCTVAoKSx0PW5ldyBCbG9iKFtlLmJ1ZmZlcl0se3R5cGU6ImltYWdlL2JtcCJ9KSxpPWNyZWF0ZUltYWdlQml0bWFwKHQpLHtNQVhfQVJFQTphLE1BWF9ESU06cn09SW1hZ2VSZXNpemVyLHtfaW1nRGF0YTpzfT10aGlzLHt3aWR0aDpuLGhlaWdodDpvfT1zLGc9TWF0aC5tYXgobi9yLG8vcixNYXRoLnNxcnQobipvL2EpKSxjPU1hdGgubWF4KGcsMiksQz1NYXRoLnJvdW5kKDEwKihnKzEuMjUpKS8xMC9jLGg9TWF0aC5mbG9vcihNYXRoLmxvZzIoQykpLGw9bmV3IEFycmF5KGgrMikuZmlsbCgyKTtsWzBdPWM7bC5zcGxpY2UoLTEsMSxDLygxPDxoKSk7bGV0IFE9bixFPW8sdT1hd2FpdCBpO2Zvcihjb25zdCBlIG9mIGwpe2NvbnN0IHQ9USxpPUU7UT1NYXRoLmZsb29yKFEvZSktMTtFPU1hdGguZmxvb3IoRS9lKS0xO2NvbnN0IGE9bmV3IE9mZnNjcmVlbkNhbnZhcyhRLEUpO2EuZ2V0Q29udGV4dCgiMmQiKS5kcmF3SW1hZ2UodSwwLDAsdCxpLDAsMCxRLEUpO3U9YS50cmFuc2ZlclRvSW1hZ2VCaXRtYXAoKX1zLmRhdGE9bnVsbDtzLmJpdG1hcD11O3Mud2lkdGg9UTtzLmhlaWdodD1FO3JldHVybiBzfV9lbmNvZGVCTVAoKXtjb25zdHt3aWR0aDplLGhlaWdodDp0LGtpbmQ6aX09dGhpcy5faW1nRGF0YTtsZXQgYSxyPXRoaXMuX2ltZ0RhdGEuZGF0YSxzPW5ldyBVaW50OEFycmF5KDApLG49cyxvPTA7c3dpdGNoKGkpe2Nhc2UgUzp7YT0xO3M9bmV3IFVpbnQ4QXJyYXkodGhpcy5faXNNYXNrP1syNTUsMjU1LDI1NSwyNTUsMCwwLDAsMF06WzAsMCwwLDAsMjU1LDI1NSwyNTUsMjU1XSk7Y29uc3QgaT1lKzc+PjMsbj1pKzMmLTQ7aWYoaSE9PW4pe2NvbnN0IGU9bmV3IFVpbnQ4QXJyYXkobip0KTtsZXQgYT0wO2ZvcihsZXQgcz0wLG89dCppO3M8bztzKz1pLGErPW4pZS5zZXQoci5zdWJhcnJheShzLHMraSksYSk7cj1lfWJyZWFrfWNhc2UgazphPTI0O2lmKDMmZSl7Y29uc3QgaT0zKmUsYT1pKzMmLTQscz1hLWksbj1uZXcgVWludDhBcnJheShhKnQpO2xldCBvPTA7Zm9yKGxldCBlPTAsYT10Kmk7ZTxhO2UrPWkpe2NvbnN0IHQ9ci5zdWJhcnJheShlLGUraSk7Zm9yKGxldCBlPTA7ZTxpO2UrPTMpe25bbysrXT10W2UrMl07bltvKytdPXRbZSsxXTtuW28rK109dFtlXX1vKz1zfXI9bn1lbHNlIGZvcihsZXQgZT0wLHQ9ci5sZW5ndGg7ZTx0O2UrPTMpe2NvbnN0IHQ9cltlXTtyW2VdPXJbZSsyXTtyW2UrMl09dH1icmVhaztjYXNlIFI6YT0zMjtvPTM7bj1uZXcgVWludDhBcnJheSg2OCk7Y29uc3QgaT1uZXcgRGF0YVZpZXcobi5idWZmZXIpO2lmKEZlYXR1cmVUZXN0LmlzTGl0dGxlRW5kaWFuKXtpLnNldFVpbnQzMigwLDI1NSwhMCk7aS5zZXRVaW50MzIoNCw2NTI4MCwhMCk7aS5zZXRVaW50MzIoOCwxNjcxMTY4MCwhMCk7aS5zZXRVaW50MzIoMTIsNDI3ODE5MDA4MCwhMCl9ZWxzZXtpLnNldFVpbnQzMigwLDQyNzgxOTAwODAsITApO2kuc2V0VWludDMyKDQsMTY3MTE2ODAsITApO2kuc2V0VWludDMyKDgsNjUyODAsITApO2kuc2V0VWludDMyKDEyLDI1NSwhMCl9YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgZm9ybWF0Iil9bGV0IGc9MDtjb25zdCBjPTQwK24ubGVuZ3RoLEM9MTQrYytzLmxlbmd0aCtyLmxlbmd0aCxoPW5ldyBVaW50OEFycmF5KEMpLGw9bmV3IERhdGFWaWV3KGguYnVmZmVyKTtsLnNldFVpbnQxNihnLDE5Nzc4LCEwKTtnKz0yO2wuc2V0VWludDMyKGcsQywhMCk7Zys9NDtsLnNldFVpbnQzMihnLDAsITApO2crPTQ7bC5zZXRVaW50MzIoZywxNCtjK3MubGVuZ3RoLCEwKTtnKz00O2wuc2V0VWludDMyKGcsYywhMCk7Zys9NDtsLnNldEludDMyKGcsZSwhMCk7Zys9NDtsLnNldEludDMyKGcsLXQsITApO2crPTQ7bC5zZXRVaW50MTYoZywxLCEwKTtnKz0yO2wuc2V0VWludDE2KGcsYSwhMCk7Zys9MjtsLnNldFVpbnQzMihnLG8sITApO2crPTQ7bC5zZXRVaW50MzIoZywwLCEwKTtnKz00O2wuc2V0SW50MzIoZywwLCEwKTtnKz00O2wuc2V0SW50MzIoZywwLCEwKTtnKz00O2wuc2V0VWludDMyKGcscy5sZW5ndGgvNCwhMCk7Zys9NDtsLnNldFVpbnQzMihnLDAsITApO2crPTQ7aC5zZXQobixnKTtnKz1uLmxlbmd0aDtoLnNldChzLGcpO2crPXMubGVuZ3RoO2guc2V0KHIsZyk7cmV0dXJuIGh9fUltYWdlUmVzaXplci5fZ29vZFNxdWFyZUxlbmd0aD0yMDQ4O2NvbnN0IGtyPTMyODUzNzc1MjAsUnI9NDI5NDkwMTc2MCxOcj02NTUzNTtjbGFzcyBNdXJtdXJIYXNoM182NHtjb25zdHJ1Y3RvcihlKXt0aGlzLmgxPWU/NDI5NDk2NzI5NSZlOmtyO3RoaXMuaDI9ZT80Mjk0OTY3Mjk1JmU6a3J9dXBkYXRlKGUpe2xldCB0LGk7aWYoInN0cmluZyI9PXR5cGVvZiBlKXt0PW5ldyBVaW50OEFycmF5KDIqZS5sZW5ndGgpO2k9MDtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKyspe2NvbnN0IHI9ZS5jaGFyQ29kZUF0KGEpO2lmKHI8PTI1NSl0W2krK109cjtlbHNle3RbaSsrXT1yPj4+ODt0W2krK109MjU1JnJ9fX1lbHNle2lmKCFBcnJheUJ1ZmZlci5pc1ZpZXcoZSkpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGRhdGEgZm9ybWF0LCBtdXN0IGJlIGEgc3RyaW5nIG9yIFR5cGVkQXJyYXkuIik7dD1lLnNsaWNlKCk7aT10LmJ5dGVMZW5ndGh9Y29uc3QgYT1pPj4yLHI9aS00KmEscz1uZXcgVWludDMyQXJyYXkodC5idWZmZXIsMCxhKTtsZXQgbj0wLG89MCxnPXRoaXMuaDEsYz10aGlzLmgyO2NvbnN0IEM9MzQzMjkxODM1MyxoPTQ2MTg0NTkwNyxsPTExNjAxLFE9MTM3MTU7Zm9yKGxldCBlPTA7ZTxhO2UrKylpZigxJmUpe249c1tlXTtuPW4qQyZScnxuKmwmTnI7bj1uPDwxNXxuPj4+MTc7bj1uKmgmUnJ8bipRJk5yO2dePW47Zz1nPDwxM3xnPj4+MTk7Zz01KmcrMzg2NDI5MjE5Nn1lbHNle289c1tlXTtvPW8qQyZScnxvKmwmTnI7bz1vPDwxNXxvPj4+MTc7bz1vKmgmUnJ8bypRJk5yO2NePW87Yz1jPDwxM3xjPj4+MTk7Yz01KmMrMzg2NDI5MjE5Nn1uPTA7c3dpdGNoKHIpe2Nhc2UgMzpuXj10WzQqYSsyXTw8MTY7Y2FzZSAyOm5ePXRbNCphKzFdPDw4O2Nhc2UgMTpuXj10WzQqYV07bj1uKkMmUnJ8bipsJk5yO249bjw8MTV8bj4+PjE3O249bipoJlJyfG4qUSZOcjsxJmE/Z149bjpjXj1ufXRoaXMuaDE9Zzt0aGlzLmgyPWN9aGV4ZGlnZXN0KCl7bGV0IGU9dGhpcy5oMSx0PXRoaXMuaDI7ZV49dD4+PjE7ZT0zOTgxODA2Nzk3KmUmUnJ8MzYwNDUqZSZOcjt0PTQyODM1NDM1MTEqdCZScnwoMjk1MDE2Mzc5NyoodDw8MTZ8ZT4+PjE2KSZScik+Pj4xNjtlXj10Pj4+MTtlPTQ0NDk4NDQwMyplJlJyfDYwNDk5KmUmTnI7dD0zMzAxODgyMzY2KnQmUnJ8KDMxMjA0Mzc4OTMqKHQ8PDE2fGU+Pj4xNikmUnIpPj4+MTY7ZV49dD4+PjE7cmV0dXJuKGU+Pj4wKS50b1N0cmluZygxNikucGFkU3RhcnQoOCwiMCIpKyh0Pj4+MCkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDgsIjAiKX19ZnVuY3Rpb24gYWRkU3RhdGUoZSx0LGksYSxyKXtsZXQgcz1lO2ZvcihsZXQgZT0wLGk9dC5sZW5ndGgtMTtlPGk7ZSsrKXtjb25zdCBpPXRbZV07cz1zW2ldfHw9W119c1t0LmF0KC0xKV09e2NoZWNrRm46aSxpdGVyYXRlRm46YSxwcm9jZXNzRm46cn19Y29uc3QgR3I9W107YWRkU3RhdGUoR3IsW01BLEhBLEF0LExBXSxudWxsLChmdW5jdGlvbiBpdGVyYXRlSW5saW5lSW1hZ2VHcm91cChlLHQpe2NvbnN0IGk9ZS5mbkFycmF5LGE9KHQtKGUuaUN1cnItMykpJTQ7c3dpdGNoKGEpe2Nhc2UgMDpyZXR1cm4gaVt0XT09PU1BO2Nhc2UgMTpyZXR1cm4gaVt0XT09PUhBO2Nhc2UgMjpyZXR1cm4gaVt0XT09PUF0O2Nhc2UgMzpyZXR1cm4gaVt0XT09PUxBfXRocm93IG5ldyBFcnJvcihgaXRlcmF0ZUlubGluZUltYWdlR3JvdXAgLSBpbnZhbGlkIHBvczogJHthfWApfSksKGZ1bmN0aW9uIGZvdW5kSW5saW5lSW1hZ2VHcm91cChlLHQpe2NvbnN0IGk9ZS5mbkFycmF5LGE9ZS5hcmdzQXJyYXkscj1lLmlDdXJyLHM9ci0zLG49ci0yLG89ci0xLGc9TWF0aC5taW4oTWF0aC5mbG9vcigodC1zKS80KSwyMDApO2lmKGc8MTApcmV0dXJuIHQtKHQtcyklNDtsZXQgYz0wO2NvbnN0IEM9W107bGV0IGg9MCxsPTEsUT0xO2ZvcihsZXQgZT0wO2U8ZztlKyspe2NvbnN0IHQ9YVtuKyhlPDwyKV0saT1hW28rKGU8PDIpXVswXTtpZihsK2kud2lkdGg+MWUzKXtjPU1hdGgubWF4KGMsbCk7USs9aCsyO2w9MDtoPTB9Qy5wdXNoKHt0cmFuc2Zvcm06dCx4OmwseTpRLHc6aS53aWR0aCxoOmkuaGVpZ2h0fSk7bCs9aS53aWR0aCsyO2g9TWF0aC5tYXgoaCxpLmhlaWdodCl9Y29uc3QgRT1NYXRoLm1heChjLGwpKzEsdT1RK2grMSxkPW5ldyBVaW50OEFycmF5KEUqdSo0KSxmPUU8PDI7Zm9yKGxldCBlPTA7ZTxnO2UrKyl7Y29uc3QgdD1hW28rKGU8PDIpXVswXS5kYXRhLGk9Q1tlXS53PDwyO2xldCByPTAscz1DW2VdLngrQ1tlXS55KkU8PDI7ZC5zZXQodC5zdWJhcnJheSgwLGkpLHMtZik7Zm9yKGxldCBhPTAsbj1DW2VdLmg7YTxuO2ErKyl7ZC5zZXQodC5zdWJhcnJheShyLHIraSkscyk7cis9aTtzKz1mfWQuc2V0KHQuc3ViYXJyYXkoci1pLHIpLHMpO2Zvcig7cz49MDspe3Rbcy00XT10W3NdO3Rbcy0zXT10W3MrMV07dFtzLTJdPXRbcysyXTt0W3MtMV09dFtzKzNdO3RbcytpXT10W3MraS00XTt0W3MraSsxXT10W3MraS0zXTt0W3MraSsyXT10W3MraS0yXTt0W3MraSszXT10W3MraS0xXTtzLT1mfX1jb25zdCBwPXt3aWR0aDpFLGhlaWdodDp1fTtpZihlLmlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkKXtjb25zdCBlPW5ldyBPZmZzY3JlZW5DYW52YXMoRSx1KTtlLmdldENvbnRleHQoIjJkIikucHV0SW1hZ2VEYXRhKG5ldyBJbWFnZURhdGEobmV3IFVpbnQ4Q2xhbXBlZEFycmF5KGQuYnVmZmVyKSxFLHUpLDAsMCk7cC5iaXRtYXA9ZS50cmFuc2ZlclRvSW1hZ2VCaXRtYXAoKTtwLmRhdGE9bnVsbH1lbHNle3Aua2luZD1SO3AuZGF0YT1kfWkuc3BsaWNlKHMsNCpnLGV0KTthLnNwbGljZShzLDQqZyxbcCxDXSk7cmV0dXJuIHMrMX0pKTthZGRTdGF0ZShHcixbTUEsSEEsX2UsTEFdLG51bGwsKGZ1bmN0aW9uIGl0ZXJhdGVJbWFnZU1hc2tHcm91cChlLHQpe2NvbnN0IGk9ZS5mbkFycmF5LGE9KHQtKGUuaUN1cnItMykpJTQ7c3dpdGNoKGEpe2Nhc2UgMDpyZXR1cm4gaVt0XT09PU1BO2Nhc2UgMTpyZXR1cm4gaVt0XT09PUhBO2Nhc2UgMjpyZXR1cm4gaVt0XT09PV9lO2Nhc2UgMzpyZXR1cm4gaVt0XT09PUxBfXRocm93IG5ldyBFcnJvcihgaXRlcmF0ZUltYWdlTWFza0dyb3VwIC0gaW52YWxpZCBwb3M6ICR7YX1gKX0pLChmdW5jdGlvbiBmb3VuZEltYWdlTWFza0dyb3VwKGUsdCl7Y29uc3QgaT1lLmZuQXJyYXksYT1lLmFyZ3NBcnJheSxyPWUuaUN1cnIscz1yLTMsbj1yLTIsbz1yLTE7bGV0IGc9TWF0aC5mbG9vcigodC1zKS80KTtpZihnPDEwKXJldHVybiB0LSh0LXMpJTQ7bGV0IGMsQyxoPSExO2NvbnN0IGw9YVtvXVswXSxRPWFbbl1bMF0sRT1hW25dWzFdLHU9YVtuXVsyXSxkPWFbbl1bM107aWYoRT09PXUpe2g9ITA7Yz1uKzQ7bGV0IGU9bys0O2ZvcihsZXQgdD0xO3Q8Zzt0KyssYys9NCxlKz00KXtDPWFbY107aWYoYVtlXVswXSE9PWx8fENbMF0hPT1RfHxDWzFdIT09RXx8Q1syXSE9PXV8fENbM10hPT1kKXt0PDEwP2g9ITE6Zz10O2JyZWFrfX19aWYoaCl7Zz1NYXRoLm1pbihnLDFlMyk7Y29uc3QgZT1uZXcgRmxvYXQzMkFycmF5KDIqZyk7Yz1uO2ZvcihsZXQgdD0wO3Q8Zzt0KyssYys9NCl7Qz1hW2NdO2VbdDw8MV09Q1s0XTtlWzErKHQ8PDEpXT1DWzVdfWkuc3BsaWNlKHMsNCpnLGl0KTthLnNwbGljZShzLDQqZyxbbCxRLEUsdSxkLGVdKX1lbHNle2c9TWF0aC5taW4oZywxMDApO2NvbnN0IGU9W107Zm9yKGxldCB0PTA7dDxnO3QrKyl7Qz1hW24rKHQ8PDIpXTtjb25zdCBpPWFbbysodDw8MildWzBdO2UucHVzaCh7ZGF0YTppLmRhdGEsd2lkdGg6aS53aWR0aCxoZWlnaHQ6aS5oZWlnaHQsaW50ZXJwb2xhdGU6aS5pbnRlcnBvbGF0ZSxjb3VudDppLmNvdW50LHRyYW5zZm9ybTpDfSl9aS5zcGxpY2Uocyw0KmcsemUpO2Euc3BsaWNlKHMsNCpnLFtlXSl9cmV0dXJuIHMrMX0pKTthZGRTdGF0ZShHcixbTUEsSEEsJGUsTEFdLChmdW5jdGlvbihlKXtjb25zdCB0PWUuYXJnc0FycmF5LGk9ZS5pQ3Vyci0yO3JldHVybiAwPT09dFtpXVsxXSYmMD09PXRbaV1bMl19KSwoZnVuY3Rpb24gaXRlcmF0ZUltYWdlR3JvdXAoZSx0KXtjb25zdCBpPWUuZm5BcnJheSxhPWUuYXJnc0FycmF5LHI9KHQtKGUuaUN1cnItMykpJTQ7c3dpdGNoKHIpe2Nhc2UgMDpyZXR1cm4gaVt0XT09PU1BO2Nhc2UgMTppZihpW3RdIT09SEEpcmV0dXJuITE7Y29uc3Qgcj1lLmlDdXJyLTIscz1hW3JdWzBdLG49YVtyXVszXTtyZXR1cm4gYVt0XVswXT09PXMmJjA9PT1hW3RdWzFdJiYwPT09YVt0XVsyXSYmYVt0XVszXT09PW47Y2FzZSAyOmlmKGlbdF0hPT0kZSlyZXR1cm4hMTtjb25zdCBvPWFbZS5pQ3Vyci0xXVswXTtyZXR1cm4gYVt0XVswXT09PW87Y2FzZSAzOnJldHVybiBpW3RdPT09TEF9dGhyb3cgbmV3IEVycm9yKGBpdGVyYXRlSW1hZ2VHcm91cCAtIGludmFsaWQgcG9zOiAke3J9YCl9KSwoZnVuY3Rpb24oZSx0KXtjb25zdCBpPWUuZm5BcnJheSxhPWUuYXJnc0FycmF5LHI9ZS5pQ3VycixzPXItMyxuPXItMixvPWFbci0xXVswXSxnPWFbbl1bMF0sYz1hW25dWzNdLEM9TWF0aC5taW4oTWF0aC5mbG9vcigodC1zKS80KSwxZTMpO2lmKEM8MylyZXR1cm4gdC0odC1zKSU0O2NvbnN0IGg9bmV3IEZsb2F0MzJBcnJheSgyKkMpO2xldCBsPW47Zm9yKGxldCBlPTA7ZTxDO2UrKyxsKz00KXtjb25zdCB0PWFbbF07aFtlPDwxXT10WzRdO2hbMSsoZTw8MSldPXRbNV19Y29uc3QgUT1bbyxnLGMsaF07aS5zcGxpY2Uocyw0KkMsdHQpO2Euc3BsaWNlKHMsNCpDLFEpO3JldHVybiBzKzF9KSk7YWRkU3RhdGUoR3IsW3RlLG9lLGhlLEJlLGllXSxudWxsLChmdW5jdGlvbiBpdGVyYXRlU2hvd1RleHRHcm91cChlLHQpe2NvbnN0IGk9ZS5mbkFycmF5LGE9ZS5hcmdzQXJyYXkscj0odC0oZS5pQ3Vyci00KSklNTtzd2l0Y2gocil7Y2FzZSAwOnJldHVybiBpW3RdPT09dGU7Y2FzZSAxOnJldHVybiBpW3RdPT09b2U7Y2FzZSAyOnJldHVybiBpW3RdPT09aGU7Y2FzZSAzOmlmKGlbdF0hPT1CZSlyZXR1cm4hMTtjb25zdCByPWUuaUN1cnItMyxzPWFbcl1bMF0sbj1hW3JdWzFdO3JldHVybiBhW3RdWzBdPT09cyYmYVt0XVsxXT09PW47Y2FzZSA0OnJldHVybiBpW3RdPT09aWV9dGhyb3cgbmV3IEVycm9yKGBpdGVyYXRlU2hvd1RleHRHcm91cCAtIGludmFsaWQgcG9zOiAke3J9YCl9KSwoZnVuY3Rpb24oZSx0KXtjb25zdCBpPWUuZm5BcnJheSxhPWUuYXJnc0FycmF5LHI9ZS5pQ3VycixzPXItNCxuPXItMyxvPXItMixnPXItMSxjPXIsQz1hW25dWzBdLGg9YVtuXVsxXTtsZXQgbD1NYXRoLm1pbihNYXRoLmZsb29yKCh0LXMpLzUpLDFlMyk7aWYobDwzKXJldHVybiB0LSh0LXMpJTU7bGV0IFE9cztpZihzPj00JiZpW3MtNF09PT1pW25dJiZpW3MtM109PT1pW29dJiZpW3MtMl09PT1pW2ddJiZpW3MtMV09PT1pW2NdJiZhW3MtNF1bMF09PT1DJiZhW3MtNF1bMV09PT1oKXtsKys7US09NX1sZXQgRT1RKzQ7Zm9yKGxldCBlPTE7ZTxsO2UrKyl7aS5zcGxpY2UoRSwzKTthLnNwbGljZShFLDMpO0UrPTJ9cmV0dXJuIEUrMX0pKTtjbGFzcyBOdWxsT3B0aW1pemVye2NvbnN0cnVjdG9yKGUpe3RoaXMucXVldWU9ZX1fb3B0aW1pemUoKXt9cHVzaChlLHQpe3RoaXMucXVldWUuZm5BcnJheS5wdXNoKGUpO3RoaXMucXVldWUuYXJnc0FycmF5LnB1c2godCk7dGhpcy5fb3B0aW1pemUoKX1mbHVzaCgpe31yZXNldCgpe319Y2xhc3MgUXVldWVPcHRpbWl6ZXIgZXh0ZW5kcyBOdWxsT3B0aW1pemVye2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuc3RhdGU9bnVsbDt0aGlzLmNvbnRleHQ9e2lDdXJyOjAsZm5BcnJheTplLmZuQXJyYXksYXJnc0FycmF5OmUuYXJnc0FycmF5LGlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkOiExfTt0aGlzLm1hdGNoPW51bGw7dGhpcy5sYXN0UHJvY2Vzc2VkPTB9c2V0IGlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkKGUpe3RoaXMuY29udGV4dC5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZD1lfV9vcHRpbWl6ZSgpe2NvbnN0IGU9dGhpcy5xdWV1ZS5mbkFycmF5O2xldCB0PXRoaXMubGFzdFByb2Nlc3NlZCxpPWUubGVuZ3RoLGE9dGhpcy5zdGF0ZSxyPXRoaXMubWF0Y2g7aWYoIWEmJiFyJiZ0KzE9PT1pJiYhR3JbZVt0XV0pe3RoaXMubGFzdFByb2Nlc3NlZD1pO3JldHVybn1jb25zdCBzPXRoaXMuY29udGV4dDtmb3IoO3Q8aTspe2lmKHIpe2lmKCgwLHIuaXRlcmF0ZUZuKShzLHQpKXt0Kys7Y29udGludWV9dD0oMCxyLnByb2Nlc3NGbikocyx0KzEpO2k9ZS5sZW5ndGg7cj1udWxsO2E9bnVsbDtpZih0Pj1pKWJyZWFrfWE9KGF8fEdyKVtlW3RdXTtpZihhJiYhQXJyYXkuaXNBcnJheShhKSl7cy5pQ3Vycj10O3QrKztpZighYS5jaGVja0ZufHwoMCxhLmNoZWNrRm4pKHMpKXtyPWE7YT1udWxsfWVsc2UgYT1udWxsfWVsc2UgdCsrfXRoaXMuc3RhdGU9YTt0aGlzLm1hdGNoPXI7dGhpcy5sYXN0UHJvY2Vzc2VkPXR9Zmx1c2goKXtmb3IoO3RoaXMubWF0Y2g7KXtjb25zdCBlPXRoaXMucXVldWUuZm5BcnJheS5sZW5ndGg7dGhpcy5sYXN0UHJvY2Vzc2VkPSgwLHRoaXMubWF0Y2gucHJvY2Vzc0ZuKSh0aGlzLmNvbnRleHQsZSk7dGhpcy5tYXRjaD1udWxsO3RoaXMuc3RhdGU9bnVsbDt0aGlzLl9vcHRpbWl6ZSgpfX1yZXNldCgpe3RoaXMuc3RhdGU9bnVsbDt0aGlzLm1hdGNoPW51bGw7dGhpcy5sYXN0UHJvY2Vzc2VkPTB9fWNsYXNzIE9wZXJhdG9yTGlzdHtzdGF0aWMgQ0hVTktfU0laRT0xZTM7c3RhdGljIENIVU5LX1NJWkVfQUJPVVQ9dGhpcy5DSFVOS19TSVpFLTU7Y29uc3RydWN0b3IoZT0wLHQpe3RoaXMuX3N0cmVhbVNpbms9dDt0aGlzLmZuQXJyYXk9W107dGhpcy5hcmdzQXJyYXk9W107dGhpcy5vcHRpbWl6ZXI9IXR8fGUmdT9uZXcgTnVsbE9wdGltaXplcih0aGlzKTpuZXcgUXVldWVPcHRpbWl6ZXIodGhpcyk7dGhpcy5kZXBlbmRlbmNpZXM9bmV3IFNldDt0aGlzLl90b3RhbExlbmd0aD0wO3RoaXMud2VpZ2h0PTA7dGhpcy5fcmVzb2x2ZWQ9dD9udWxsOlByb21pc2UucmVzb2x2ZSgpfXNldCBpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZChlKXt0aGlzLm9wdGltaXplci5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZD1lfWdldCBsZW5ndGgoKXtyZXR1cm4gdGhpcy5hcmdzQXJyYXkubGVuZ3RofWdldCByZWFkeSgpe3JldHVybiB0aGlzLl9yZXNvbHZlZHx8dGhpcy5fc3RyZWFtU2luay5yZWFkeX1nZXQgdG90YWxMZW5ndGgoKXtyZXR1cm4gdGhpcy5fdG90YWxMZW5ndGgrdGhpcy5sZW5ndGh9YWRkT3AoZSx0KXt0aGlzLm9wdGltaXplci5wdXNoKGUsdCk7dGhpcy53ZWlnaHQrKzt0aGlzLl9zdHJlYW1TaW5rJiYodGhpcy53ZWlnaHQ+PU9wZXJhdG9yTGlzdC5DSFVOS19TSVpFfHx0aGlzLndlaWdodD49T3BlcmF0b3JMaXN0LkNIVU5LX1NJWkVfQUJPVVQmJihlPT09TEF8fGU9PT1pZSkpJiZ0aGlzLmZsdXNoKCl9YWRkSW1hZ2VPcHMoZSx0LGkpe3ZvaWQgMCE9PWkmJnRoaXMuYWRkT3AoVGUsWyJPQyIsaV0pO3RoaXMuYWRkT3AoZSx0KTt2b2lkIDAhPT1pJiZ0aGlzLmFkZE9wKEtlLFtdKX1hZGREZXBlbmRlbmN5KGUpe2lmKCF0aGlzLmRlcGVuZGVuY2llcy5oYXMoZSkpe3RoaXMuZGVwZW5kZW5jaWVzLmFkZChlKTt0aGlzLmFkZE9wKERBLFtlXSl9fWFkZERlcGVuZGVuY2llcyhlKXtmb3IoY29uc3QgdCBvZiBlKXRoaXMuYWRkRGVwZW5kZW5jeSh0KX1hZGRPcExpc3QoZSl7aWYoZSBpbnN0YW5jZW9mIE9wZXJhdG9yTGlzdCl7Zm9yKGNvbnN0IHQgb2YgZS5kZXBlbmRlbmNpZXMpdGhpcy5kZXBlbmRlbmNpZXMuYWRkKHQpO2ZvcihsZXQgdD0wLGk9ZS5sZW5ndGg7dDxpO3QrKyl0aGlzLmFkZE9wKGUuZm5BcnJheVt0XSxlLmFyZ3NBcnJheVt0XSl9ZWxzZSB3YXJuKCdhZGRPcExpc3QgLSBpZ25vcmluZyBpbnZhbGlkICJvcExpc3QiIHBhcmFtZXRlci4nKX1nZXRJUigpe3JldHVybntmbkFycmF5OnRoaXMuZm5BcnJheSxhcmdzQXJyYXk6dGhpcy5hcmdzQXJyYXksbGVuZ3RoOnRoaXMubGVuZ3RofX1nZXQgX3RyYW5zZmVycygpe2NvbnN0IGU9W10se2ZuQXJyYXk6dCxhcmdzQXJyYXk6aSxsZW5ndGg6YX09dGhpcztmb3IobGV0IHI9MDtyPGE7cisrKXN3aXRjaCh0W3JdKXtjYXNlIEF0OmNhc2UgZXQ6Y2FzZSBfZTpjb25zdCB0PWlbcl1bMF07IXQuY2FjaGVkJiZ0LmRhdGE/LmJ1ZmZlciBpbnN0YW5jZW9mIEFycmF5QnVmZmVyJiZlLnB1c2godC5kYXRhLmJ1ZmZlcil9cmV0dXJuIGV9Zmx1c2goZT0hMSx0PW51bGwpe3RoaXMub3B0aW1pemVyLmZsdXNoKCk7Y29uc3QgaT10aGlzLmxlbmd0aDt0aGlzLl90b3RhbExlbmd0aCs9aTt0aGlzLl9zdHJlYW1TaW5rLmVucXVldWUoe2ZuQXJyYXk6dGhpcy5mbkFycmF5LGFyZ3NBcnJheTp0aGlzLmFyZ3NBcnJheSxsYXN0Q2h1bms6ZSxzZXBhcmF0ZUFubm90czp0LGxlbmd0aDppfSwxLHRoaXMuX3RyYW5zZmVycyk7dGhpcy5kZXBlbmRlbmNpZXMuY2xlYXIoKTt0aGlzLmZuQXJyYXkubGVuZ3RoPTA7dGhpcy5hcmdzQXJyYXkubGVuZ3RoPTA7dGhpcy53ZWlnaHQ9MDt0aGlzLm9wdGltaXplci5yZXNldCgpfX1mdW5jdGlvbiBkZWNvZGVBbmRDbGFtcChlLHQsaSxhKXsoZT10K2UqaSk8MD9lPTA6ZT5hJiYoZT1hKTtyZXR1cm4gZX1mdW5jdGlvbiByZXNpemVJbWFnZU1hc2soZSx0LGksYSxyLHMpe2NvbnN0IG49cipzO2xldCBvO289dDw9OD9uZXcgVWludDhBcnJheShuKTp0PD0xNj9uZXcgVWludDE2QXJyYXkobik6bmV3IFVpbnQzMkFycmF5KG4pO2NvbnN0IGc9aS9yLGM9YS9zO2xldCBDLGgsbCxRLEU9MDtjb25zdCB1PW5ldyBVaW50MTZBcnJheShyKSxkPWk7Zm9yKEM9MDtDPHI7QysrKXVbQ109TWF0aC5mbG9vcihDKmcpO2ZvcihDPTA7QzxzO0MrKyl7bD1NYXRoLmZsb29yKEMqYykqZDtmb3IoaD0wO2g8cjtoKyspe1E9bCt1W2hdO29bRSsrXT1lW1FdfX1yZXR1cm4gb31jbGFzcyBQREZJbWFnZXtjb25zdHJ1Y3Rvcih7eHJlZjplLHJlczp0LGltYWdlOmksaXNJbmxpbmU6YT0hMSxzbWFzazpyPW51bGwsbWFzazpzPW51bGwsaXNNYXNrOm49ITEscGRmRnVuY3Rpb25GYWN0b3J5Om8sbG9jYWxDb2xvclNwYWNlQ2FjaGU6Z30pe3RoaXMuaW1hZ2U9aTtjb25zdCBjPWkuZGljdCxDPWMuZ2V0KCJGIiwiRmlsdGVyIik7bGV0IGg7aWYoQyBpbnN0YW5jZW9mIE5hbWUpaD1DLm5hbWU7ZWxzZSBpZihBcnJheS5pc0FycmF5KEMpKXtjb25zdCB0PWUuZmV0Y2hJZlJlZihDWzBdKTt0IGluc3RhbmNlb2YgTmFtZSYmKGg9dC5uYW1lKX1zd2l0Y2goaCl7Y2FzZSJKUFhEZWNvZGUiOih7d2lkdGg6aS53aWR0aCxoZWlnaHQ6aS5oZWlnaHQsY29tcG9uZW50c0NvdW50OmkubnVtQ29tcHMsYml0c1BlckNvbXBvbmVudDppLmJpdHNQZXJDb21wb25lbnR9PUpweEltYWdlLnBhcnNlSW1hZ2VQcm9wZXJ0aWVzKGkuc3RyZWFtKSk7aS5zdHJlYW0ucmVzZXQoKTt0aGlzLmpweERlY29kZXJPcHRpb25zPXtudW1Db21wb25lbnRzOjAsaXNJbmRleGVkQ29sb3JtYXA6ITEsc21hc2tJbkRhdGE6Yy5oYXMoIlNNYXNrSW5EYXRhIil9O2JyZWFrO2Nhc2UiSkJJRzJEZWNvZGUiOmkuYml0c1BlckNvbXBvbmVudD0xO2kubnVtQ29tcHM9MX1sZXQgbD1jLmdldCgiVyIsIldpZHRoIiksUT1jLmdldCgiSCIsIkhlaWdodCIpO2lmKE51bWJlci5pc0ludGVnZXIoaS53aWR0aCkmJmkud2lkdGg+MCYmTnVtYmVyLmlzSW50ZWdlcihpLmhlaWdodCkmJmkuaGVpZ2h0PjAmJihpLndpZHRoIT09bHx8aS5oZWlnaHQhPT1RKSl7d2FybigiUERGSW1hZ2UgLSB1c2luZyB0aGUgV2lkdGgvSGVpZ2h0IG9mIHRoZSBpbWFnZSBkYXRhLCByYXRoZXIgdGhhbiB0aGUgaW1hZ2UgZGljdGlvbmFyeS4iKTtsPWkud2lkdGg7UT1pLmhlaWdodH1pZihsPDF8fFE8MSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEludmFsaWQgaW1hZ2Ugd2lkdGg6ICR7bH0gb3IgaGVpZ2h0OiAke1F9YCk7dGhpcy53aWR0aD1sO3RoaXMuaGVpZ2h0PVE7dGhpcy5pbnRlcnBvbGF0ZT1jLmdldCgiSSIsIkludGVycG9sYXRlIik7dGhpcy5pbWFnZU1hc2s9Yy5nZXQoIklNIiwiSW1hZ2VNYXNrIil8fCExO3RoaXMubWF0dGU9Yy5nZXQoIk1hdHRlIil8fCExO2xldCBFPWkuYml0c1BlckNvbXBvbmVudDtpZighRSl7RT1jLmdldCgiQlBDIiwiQml0c1BlckNvbXBvbmVudCIpO2lmKCFFKXtpZighdGhpcy5pbWFnZU1hc2spdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBCaXRzIHBlciBjb21wb25lbnQgbWlzc2luZyBpbiBpbWFnZTogJHt0aGlzLmltYWdlTWFza31gKTtFPTF9fXRoaXMuYnBjPUU7aWYoIXRoaXMuaW1hZ2VNYXNrKXtsZXQgcj1jLmdldFJhdygiQ1MiKXx8Yy5nZXRSYXcoIkNvbG9yU3BhY2UiKTtjb25zdCBzPSEhcjtpZihzKXRoaXMuanB4RGVjb2Rlck9wdGlvbnM/LnNtYXNrSW5EYXRhJiYocj1OYW1lLmdldCgiRGV2aWNlUkdCQSIpKTtlbHNlIGlmKHRoaXMuanB4RGVjb2Rlck9wdGlvbnMpcj1OYW1lLmdldCgiRGV2aWNlUkdCQSIpO2Vsc2Ugc3dpdGNoKGkubnVtQ29tcHMpe2Nhc2UgMTpyPU5hbWUuZ2V0KCJEZXZpY2VHcmF5Iik7YnJlYWs7Y2FzZSAzOnI9TmFtZS5nZXQoIkRldmljZVJHQiIpO2JyZWFrO2Nhc2UgNDpyPU5hbWUuZ2V0KCJEZXZpY2VDTVlLIik7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYEltYWdlcyB3aXRoICR7aS5udW1Db21wc30gY29sb3IgY29tcG9uZW50cyBub3Qgc3VwcG9ydGVkLmApfXRoaXMuY29sb3JTcGFjZT1Db2xvclNwYWNlLnBhcnNlKHtjczpyLHhyZWY6ZSxyZXNvdXJjZXM6YT90Om51bGwscGRmRnVuY3Rpb25GYWN0b3J5Om8sbG9jYWxDb2xvclNwYWNlQ2FjaGU6Z30pO3RoaXMubnVtQ29tcHM9dGhpcy5jb2xvclNwYWNlLm51bUNvbXBzO2lmKHRoaXMuanB4RGVjb2Rlck9wdGlvbnMpe3RoaXMuanB4RGVjb2Rlck9wdGlvbnMubnVtQ29tcG9uZW50cz1zP3RoaXMubnVtQ29tcDowO3RoaXMuanB4RGVjb2Rlck9wdGlvbnMuaXNJbmRleGVkQ29sb3JtYXA9IkluZGV4ZWQiPT09dGhpcy5jb2xvclNwYWNlLm5hbWV9fXRoaXMuZGVjb2RlPWMuZ2V0QXJyYXkoIkQiLCJEZWNvZGUiKTt0aGlzLm5lZWRzRGVjb2RlPSExO2lmKHRoaXMuZGVjb2RlJiYodGhpcy5jb2xvclNwYWNlJiYhdGhpcy5jb2xvclNwYWNlLmlzRGVmYXVsdERlY29kZSh0aGlzLmRlY29kZSxFKXx8biYmIUNvbG9yU3BhY2UuaXNEZWZhdWx0RGVjb2RlKHRoaXMuZGVjb2RlLDEpKSl7dGhpcy5uZWVkc0RlY29kZT0hMDtjb25zdCBlPSgxPDxFKS0xO3RoaXMuZGVjb2RlQ29lZmZpY2llbnRzPVtdO3RoaXMuZGVjb2RlQWRkZW5kcz1bXTtjb25zdCB0PSJJbmRleGVkIj09PXRoaXMuY29sb3JTcGFjZT8ubmFtZTtmb3IobGV0IGk9MCxhPTA7aTx0aGlzLmRlY29kZS5sZW5ndGg7aSs9MiwrK2Epe2NvbnN0IHI9dGhpcy5kZWNvZGVbaV0scz10aGlzLmRlY29kZVtpKzFdO3RoaXMuZGVjb2RlQ29lZmZpY2llbnRzW2FdPXQ/KHMtcikvZTpzLXI7dGhpcy5kZWNvZGVBZGRlbmRzW2FdPXQ/cjplKnJ9fWlmKHIpdGhpcy5zbWFzaz1uZXcgUERGSW1hZ2Uoe3hyZWY6ZSxyZXM6dCxpbWFnZTpyLGlzSW5saW5lOmEscGRmRnVuY3Rpb25GYWN0b3J5Om8sbG9jYWxDb2xvclNwYWNlQ2FjaGU6Z30pO2Vsc2UgaWYocylpZihzIGluc3RhbmNlb2YgQmFzZVN0cmVhbSl7cy5kaWN0LmdldCgiSU0iLCJJbWFnZU1hc2siKT90aGlzLm1hc2s9bmV3IFBERkltYWdlKHt4cmVmOmUscmVzOnQsaW1hZ2U6cyxpc0lubGluZTphLGlzTWFzazohMCxwZGZGdW5jdGlvbkZhY3Rvcnk6byxsb2NhbENvbG9yU3BhY2VDYWNoZTpnfSk6d2FybigiSWdub3JpbmcgL01hc2sgaW4gaW1hZ2Ugd2l0aG91dCAvSW1hZ2VNYXNrLiIpfWVsc2UgdGhpcy5tYXNrPXN9c3RhdGljIGFzeW5jIGJ1aWxkSW1hZ2Uoe3hyZWY6ZSxyZXM6dCxpbWFnZTppLGlzSW5saW5lOmE9ITEscGRmRnVuY3Rpb25GYWN0b3J5OnIsbG9jYWxDb2xvclNwYWNlQ2FjaGU6c30pe2NvbnN0IG49aTtsZXQgbz1udWxsLGc9bnVsbDtjb25zdCBjPWkuZGljdC5nZXQoIlNNYXNrIiksQz1pLmRpY3QuZ2V0KCJNYXNrIik7Yz9jIGluc3RhbmNlb2YgQmFzZVN0cmVhbT9vPWM6d2FybigiVW5zdXBwb3J0ZWQgL1NNYXNrIGZvcm1hdC4iKTpDJiYoQyBpbnN0YW5jZW9mIEJhc2VTdHJlYW18fEFycmF5LmlzQXJyYXkoQyk/Zz1DOndhcm4oIlVuc3VwcG9ydGVkIC9NYXNrIGZvcm1hdC4iKSk7cmV0dXJuIG5ldyBQREZJbWFnZSh7eHJlZjplLHJlczp0LGltYWdlOm4saXNJbmxpbmU6YSxzbWFzazpvLG1hc2s6ZyxwZGZGdW5jdGlvbkZhY3Rvcnk6cixsb2NhbENvbG9yU3BhY2VDYWNoZTpzfSl9c3RhdGljIGNyZWF0ZVJhd01hc2soe2ltZ0FycmF5OmUsd2lkdGg6dCxoZWlnaHQ6aSxpbWFnZUlzRnJvbURlY29kZVN0cmVhbTphLGludmVyc2VEZWNvZGU6cixpbnRlcnBvbGF0ZTpzfSl7Y29uc3Qgbj0odCs3Pj4zKSppLG89ZS5ieXRlTGVuZ3RoO2xldCBnLGM7aWYoIWF8fHImJiEobj09PW8pKWlmKHIpe2c9bmV3IFVpbnQ4QXJyYXkobik7Zy5zZXQoZSk7Zy5maWxsKDI1NSxvKX1lbHNlIGc9bmV3IFVpbnQ4QXJyYXkoZSk7ZWxzZSBnPWU7aWYocilmb3IoYz0wO2M8bztjKyspZ1tjXV49MjU1O3JldHVybntkYXRhOmcsd2lkdGg6dCxoZWlnaHQ6aSxpbnRlcnBvbGF0ZTpzfX1zdGF0aWMgYXN5bmMgY3JlYXRlTWFzayh7aW1nQXJyYXk6ZSx3aWR0aDp0LGhlaWdodDppLGltYWdlSXNGcm9tRGVjb2RlU3RyZWFtOmEsaW52ZXJzZURlY29kZTpyLGludGVycG9sYXRlOnMsaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ6bj0hMX0pe2NvbnN0IG89MT09PXQmJjE9PT1pJiZyPT09KDA9PT1lLmxlbmd0aHx8ISEoMTI4JmVbMF0pKTtpZihvKXJldHVybntpc1NpbmdsZU9wYXF1ZVBpeGVsOm99O2lmKG4pe2lmKEltYWdlUmVzaXplci5uZWVkc1RvQmVSZXNpemVkKHQsaSkpe2NvbnN0IGE9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KHQqaSo0KTtjb252ZXJ0QmxhY2tBbmRXaGl0ZVRvUkdCQSh7c3JjOmUsZGVzdDphLHdpZHRoOnQsaGVpZ2h0Omksbm9uQmxhY2tDb2xvcjowLGludmVyc2VEZWNvZGU6cn0pO3JldHVybiBJbWFnZVJlc2l6ZXIuY3JlYXRlSW1hZ2Uoe2tpbmQ6UixkYXRhOmEsd2lkdGg6dCxoZWlnaHQ6aSxpbnRlcnBvbGF0ZTpzfSl9Y29uc3QgYT1uZXcgT2Zmc2NyZWVuQ2FudmFzKHQsaSksbj1hLmdldENvbnRleHQoIjJkIiksbz1uLmNyZWF0ZUltYWdlRGF0YSh0LGkpO2NvbnZlcnRCbGFja0FuZFdoaXRlVG9SR0JBKHtzcmM6ZSxkZXN0Om8uZGF0YSx3aWR0aDp0LGhlaWdodDppLG5vbkJsYWNrQ29sb3I6MCxpbnZlcnNlRGVjb2RlOnJ9KTtuLnB1dEltYWdlRGF0YShvLDAsMCk7cmV0dXJue2RhdGE6bnVsbCx3aWR0aDp0LGhlaWdodDppLGludGVycG9sYXRlOnMsYml0bWFwOmEudHJhbnNmZXJUb0ltYWdlQml0bWFwKCl9fXJldHVybiB0aGlzLmNyZWF0ZVJhd01hc2soe2ltZ0FycmF5OmUsd2lkdGg6dCxoZWlnaHQ6aSxpbnZlcnNlRGVjb2RlOnIsaW1hZ2VJc0Zyb21EZWNvZGVTdHJlYW06YSxpbnRlcnBvbGF0ZTpzfSl9Z2V0IGRyYXdXaWR0aCgpe3JldHVybiBNYXRoLm1heCh0aGlzLndpZHRoLHRoaXMuc21hc2s/LndpZHRofHwwLHRoaXMubWFzaz8ud2lkdGh8fDApfWdldCBkcmF3SGVpZ2h0KCl7cmV0dXJuIE1hdGgubWF4KHRoaXMuaGVpZ2h0LHRoaXMuc21hc2s/LmhlaWdodHx8MCx0aGlzLm1hc2s/LmhlaWdodHx8MCl9ZGVjb2RlQnVmZmVyKGUpe2NvbnN0IHQ9dGhpcy5icGMsaT10aGlzLm51bUNvbXBzLGE9dGhpcy5kZWNvZGVBZGRlbmRzLHI9dGhpcy5kZWNvZGVDb2VmZmljaWVudHMscz0oMTw8dCktMTtsZXQgbixvO2lmKDE9PT10KXtmb3Iobj0wLG89ZS5sZW5ndGg7bjxvO24rKyllW25dPSshZVtuXTtyZXR1cm59bGV0IGc9MDtmb3Iobj0wLG89dGhpcy53aWR0aCp0aGlzLmhlaWdodDtuPG87bisrKWZvcihsZXQgdD0wO3Q8aTt0Kyspe2VbZ109ZGVjb2RlQW5kQ2xhbXAoZVtnXSxhW3RdLHJbdF0scyk7ZysrfX1nZXRDb21wb25lbnRzKGUpe2NvbnN0IHQ9dGhpcy5icGM7aWYoOD09PXQpcmV0dXJuIGU7Y29uc3QgaT10aGlzLndpZHRoLGE9dGhpcy5oZWlnaHQscj10aGlzLm51bUNvbXBzLHM9aSphKnI7bGV0IG4sbz0wO249dDw9OD9uZXcgVWludDhBcnJheShzKTp0PD0xNj9uZXcgVWludDE2QXJyYXkocyk6bmV3IFVpbnQzMkFycmF5KHMpO2NvbnN0IGc9aSpyLGM9KDE8PHQpLTE7bGV0IEMsaCxsPTA7aWYoMT09PXQpe2xldCB0LGkscjtmb3IobGV0IHM9MDtzPGE7cysrKXtpPWwrKC04JmcpO3I9bCtnO2Zvcig7bDxpOyl7aD1lW28rK107bltsXT1oPj43JjE7bltsKzFdPWg+PjYmMTtuW2wrMl09aD4+NSYxO25bbCszXT1oPj40JjE7bltsKzRdPWg+PjMmMTtuW2wrNV09aD4+MiYxO25bbCs2XT1oPj4xJjE7bltsKzddPTEmaDtsKz04fWlmKGw8cil7aD1lW28rK107dD0xMjg7Zm9yKDtsPHI7KXtuW2wrK109KyEhKGgmdCk7dD4+PTF9fX19ZWxzZXtsZXQgaT0wO2g9MDtmb3IobD0wLEM9cztsPEM7KytsKXtpZihsJWc9PTApe2g9MDtpPTB9Zm9yKDtpPHQ7KXtoPWg8PDh8ZVtvKytdO2krPTh9Y29uc3QgYT1pLXQ7bGV0IHI9aD4+YTtyPDA/cj0wOnI+YyYmKHI9Yyk7bltsXT1yO2gmPSgxPDxhKS0xO2k9YX19cmV0dXJuIG59YXN5bmMgZmlsbE9wYWNpdHkoZSx0LGksYSxyKXtjb25zdCBzPXRoaXMuc21hc2ssbj10aGlzLm1hc2s7bGV0IG8sZyxjLEMsaCxsO2lmKHMpe2c9cy53aWR0aDtjPXMuaGVpZ2h0O289bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KGcqYyk7YXdhaXQgcy5maWxsR3JheUJ1ZmZlcihvKTtnPT09dCYmYz09PWl8fChvPXJlc2l6ZUltYWdlTWFzayhvLHMuYnBjLGcsYyx0LGkpKX1lbHNlIGlmKG4paWYobiBpbnN0YW5jZW9mIFBERkltYWdlKXtnPW4ud2lkdGg7Yz1uLmhlaWdodDtvPW5ldyBVaW50OENsYW1wZWRBcnJheShnKmMpO24ubnVtQ29tcHM9MTthd2FpdCBuLmZpbGxHcmF5QnVmZmVyKG8pO2ZvcihDPTAsaD1nKmM7QzxoOysrQylvW0NdPTI1NS1vW0NdO2c9PT10JiZjPT09aXx8KG89cmVzaXplSW1hZ2VNYXNrKG8sbi5icGMsZyxjLHQsaSkpfWVsc2V7aWYoIUFycmF5LmlzQXJyYXkobikpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJVbmtub3duIG1hc2sgZm9ybWF0LiIpO3tvPW5ldyBVaW50OENsYW1wZWRBcnJheSh0KmkpO2NvbnN0IGU9dGhpcy5udW1Db21wcztmb3IoQz0wLGg9dCppO0M8aDsrK0Mpe2xldCB0PTA7Y29uc3QgaT1DKmU7Zm9yKGw9MDtsPGU7KytsKXtjb25zdCBlPXJbaStsXSxhPTIqbDtpZihlPG5bYV18fGU+blthKzFdKXt0PTI1NTticmVha319b1tDXT10fX19aWYobylmb3IoQz0wLGw9MyxoPXQqYTtDPGg7KytDLGwrPTQpZVtsXT1vW0NdO2Vsc2UgZm9yKEM9MCxsPTMsaD10KmE7QzxoOysrQyxsKz00KWVbbF09MjU1fXVuZG9QcmVibGVuZChlLHQsaSl7Y29uc3QgYT10aGlzLnNtYXNrPy5tYXR0ZTtpZighYSlyZXR1cm47Y29uc3Qgcj10aGlzLmNvbG9yU3BhY2UuZ2V0UmdiKGEsMCkscz1yWzBdLG49clsxXSxvPXJbMl0sZz10KmkqNDtmb3IobGV0IHQ9MDt0PGc7dCs9NCl7Y29uc3QgaT1lW3QrM107aWYoMD09PWkpe2VbdF09MjU1O2VbdCsxXT0yNTU7ZVt0KzJdPTI1NTtjb250aW51ZX1jb25zdCBhPTI1NS9pO2VbdF09KGVbdF0tcykqYStzO2VbdCsxXT0oZVt0KzFdLW4pKmErbjtlW3QrMl09KGVbdCsyXS1vKSphK299fWFzeW5jIGNyZWF0ZUltYWdlRGF0YShlPSExLHQ9ITEpe2NvbnN0IGk9dGhpcy5kcmF3V2lkdGgsYT10aGlzLmRyYXdIZWlnaHQscj17d2lkdGg6aSxoZWlnaHQ6YSxpbnRlcnBvbGF0ZTp0aGlzLmludGVycG9sYXRlLGtpbmQ6MCxkYXRhOm51bGx9LHM9dGhpcy5udW1Db21wcyxuPXRoaXMud2lkdGgsbz10aGlzLmhlaWdodCxnPXRoaXMuYnBjLGM9bipzKmcrNz4+MyxDPXQmJkltYWdlUmVzaXplci5uZWVkc1RvQmVSZXNpemVkKGksYSk7aWYoIkRldmljZVJHQkEiPT09dGhpcy5jb2xvclNwYWNlLm5hbWUpe3Iua2luZD1SO2NvbnN0IGU9ci5kYXRhPWF3YWl0IHRoaXMuZ2V0SW1hZ2VCeXRlcyhvKm4qNCx7fSk7cmV0dXJuIHQ/Qz9JbWFnZVJlc2l6ZXIuY3JlYXRlSW1hZ2UociwhMSk6dGhpcy5jcmVhdGVCaXRtYXAoUixpLGEsZSk6cn1pZighZSl7bGV0IGU7IkRldmljZUdyYXkiPT09dGhpcy5jb2xvclNwYWNlLm5hbWUmJjE9PT1nP2U9UzoiRGV2aWNlUkdCIiE9PXRoaXMuY29sb3JTcGFjZS5uYW1lfHw4IT09Z3x8dGhpcy5uZWVkc0RlY29kZXx8KGU9ayk7aWYoZSYmIXRoaXMuc21hc2smJiF0aGlzLm1hc2smJmk9PT1uJiZhPT09byl7Y29uc3Qgcz1hd2FpdCB0aGlzLmdldEltYWdlQnl0ZXMobypjLHt9KTtpZih0KXJldHVybiBDP0ltYWdlUmVzaXplci5jcmVhdGVJbWFnZSh7ZGF0YTpzLGtpbmQ6ZSx3aWR0aDppLGhlaWdodDphLGludGVycG9sYXRlOnRoaXMuaW50ZXJwb2xhdGV9LHRoaXMubmVlZHNEZWNvZGUpOnRoaXMuY3JlYXRlQml0bWFwKGUsbixvLHMpO3Iua2luZD1lO3IuZGF0YT1zO2lmKHRoaXMubmVlZHNEZWNvZGUpe2Fzc2VydChlPT09UywiUERGSW1hZ2UuY3JlYXRlSW1hZ2VEYXRhOiBUaGUgaW1hZ2UgbXVzdCBiZSBncmF5c2NhbGUuIik7Y29uc3QgdD1yLmRhdGE7Zm9yKGxldCBlPTAsaT10Lmxlbmd0aDtlPGk7ZSsrKXRbZV1ePTI1NX1yZXR1cm4gcn1pZih0aGlzLmltYWdlIGluc3RhbmNlb2YgSnBlZ1N0cmVhbSYmIXRoaXMuc21hc2smJiF0aGlzLm1hc2smJiF0aGlzLm5lZWRzRGVjb2RlKXtsZXQgZT1vKmM7aWYodCYmIUMpe2xldCB0PSExO3N3aXRjaCh0aGlzLmNvbG9yU3BhY2UubmFtZSl7Y2FzZSJEZXZpY2VHcmF5IjplKj00O3Q9ITA7YnJlYWs7Y2FzZSJEZXZpY2VSR0IiOmU9ZS8zKjQ7dD0hMDticmVhaztjYXNlIkRldmljZUNNWUsiOnQ9ITB9aWYodCl7Y29uc3QgdD1hd2FpdCB0aGlzLmdldEltYWdlQnl0ZXMoZSx7ZHJhd1dpZHRoOmksZHJhd0hlaWdodDphLGZvcmNlUkdCQTohMH0pO3JldHVybiB0aGlzLmNyZWF0ZUJpdG1hcChSLGksYSx0KX19ZWxzZSBzd2l0Y2godGhpcy5jb2xvclNwYWNlLm5hbWUpe2Nhc2UiRGV2aWNlR3JheSI6ZSo9MztjYXNlIkRldmljZVJHQiI6Y2FzZSJEZXZpY2VDTVlLIjpyLmtpbmQ9aztyLmRhdGE9YXdhaXQgdGhpcy5nZXRJbWFnZUJ5dGVzKGUse2RyYXdXaWR0aDppLGRyYXdIZWlnaHQ6YSxmb3JjZVJHQjohMH0pO3JldHVybiBDP0ltYWdlUmVzaXplci5jcmVhdGVJbWFnZShyKTpyfX19Y29uc3QgaD1hd2FpdCB0aGlzLmdldEltYWdlQnl0ZXMobypjLHtpbnRlcm5hbDohMH0pLGw9MHxoLmxlbmd0aC9jKmEvbyxRPXRoaXMuZ2V0Q29tcG9uZW50cyhoKTtsZXQgRSx1LGQsZixwLG07aWYodCYmIUMpe2Q9bmV3IE9mZnNjcmVlbkNhbnZhcyhpLGEpO2Y9ZC5nZXRDb250ZXh0KCIyZCIpO3A9Zi5jcmVhdGVJbWFnZURhdGEoaSxhKTttPXAuZGF0YX1yLmtpbmQ9UjtpZihlfHx0aGlzLnNtYXNrfHx0aGlzLm1hc2spe3QmJiFDfHwobT1uZXcgVWludDhDbGFtcGVkQXJyYXkoaSphKjQpKTtFPTE7dT0hMDthd2FpdCB0aGlzLmZpbGxPcGFjaXR5KG0saSxhLGwsUSl9ZWxzZXtpZighdHx8Qyl7ci5raW5kPWs7bT1uZXcgVWludDhDbGFtcGVkQXJyYXkoaSphKjMpO0U9MH1lbHNle25ldyBVaW50MzJBcnJheShtLmJ1ZmZlcikuZmlsbChGZWF0dXJlVGVzdC5pc0xpdHRsZUVuZGlhbj80Mjc4MTkwMDgwOjI1NSk7RT0xfXU9ITF9dGhpcy5uZWVkc0RlY29kZSYmdGhpcy5kZWNvZGVCdWZmZXIoUSk7dGhpcy5jb2xvclNwYWNlLmZpbGxSZ2IobSxuLG8saSxhLGwsZyxRLEUpO3UmJnRoaXMudW5kb1ByZWJsZW5kKG0saSxsKTtpZih0JiYhQyl7Zi5wdXRJbWFnZURhdGEocCwwLDApO3JldHVybntkYXRhOm51bGwsd2lkdGg6aSxoZWlnaHQ6YSxiaXRtYXA6ZC50cmFuc2ZlclRvSW1hZ2VCaXRtYXAoKSxpbnRlcnBvbGF0ZTp0aGlzLmludGVycG9sYXRlfX1yLmRhdGE9bTtyZXR1cm4gQz9JbWFnZVJlc2l6ZXIuY3JlYXRlSW1hZ2Uocik6cn1hc3luYyBmaWxsR3JheUJ1ZmZlcihlKXtjb25zdCB0PXRoaXMubnVtQ29tcHM7aWYoMSE9PXQpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBSZWFkaW5nIGdyYXkgc2NhbGUgZnJvbSBhIGNvbG9yIGltYWdlOiAke3R9YCk7Y29uc3QgaT10aGlzLndpZHRoLGE9dGhpcy5oZWlnaHQscj10aGlzLmJwYyxzPWkqdCpyKzc+PjMsbj1hd2FpdCB0aGlzLmdldEltYWdlQnl0ZXMoYSpzLHtpbnRlcm5hbDohMH0pLG89dGhpcy5nZXRDb21wb25lbnRzKG4pO2xldCBnLGM7aWYoMT09PXIpe2M9aSphO2lmKHRoaXMubmVlZHNEZWNvZGUpZm9yKGc9MDtnPGM7KytnKWVbZ109b1tnXS0xJjI1NTtlbHNlIGZvcihnPTA7ZzxjOysrZyllW2ddPTI1NSYtb1tnXTtyZXR1cm59dGhpcy5uZWVkc0RlY29kZSYmdGhpcy5kZWNvZGVCdWZmZXIobyk7Yz1pKmE7Y29uc3QgQz0yNTUvKCgxPDxyKS0xKTtmb3IoZz0wO2c8YzsrK2cpZVtnXT1DKm9bZ119Y3JlYXRlQml0bWFwKGUsdCxpLGEpe2NvbnN0IHI9bmV3IE9mZnNjcmVlbkNhbnZhcyh0LGkpLHM9ci5nZXRDb250ZXh0KCIyZCIpO2xldCBuO2lmKGU9PT1SKW49bmV3IEltYWdlRGF0YShhLHQsaSk7ZWxzZXtuPXMuY3JlYXRlSW1hZ2VEYXRhKHQsaSk7Y29udmVydFRvUkdCQSh7a2luZDplLHNyYzphLGRlc3Q6bmV3IFVpbnQzMkFycmF5KG4uZGF0YS5idWZmZXIpLHdpZHRoOnQsaGVpZ2h0OmksaW52ZXJzZURlY29kZTp0aGlzLm5lZWRzRGVjb2RlfSl9cy5wdXRJbWFnZURhdGEobiwwLDApO3JldHVybntkYXRhOm51bGwsd2lkdGg6dCxoZWlnaHQ6aSxiaXRtYXA6ci50cmFuc2ZlclRvSW1hZ2VCaXRtYXAoKSxpbnRlcnBvbGF0ZTp0aGlzLmludGVycG9sYXRlfX1hc3luYyBnZXRJbWFnZUJ5dGVzKGUse2RyYXdXaWR0aDp0LGRyYXdIZWlnaHQ6aSxmb3JjZVJHQkE6YT0hMSxmb3JjZVJHQjpyPSExLGludGVybmFsOnM9ITF9KXt0aGlzLmltYWdlLnJlc2V0KCk7dGhpcy5pbWFnZS5kcmF3V2lkdGg9dHx8dGhpcy53aWR0aDt0aGlzLmltYWdlLmRyYXdIZWlnaHQ9aXx8dGhpcy5oZWlnaHQ7dGhpcy5pbWFnZS5mb3JjZVJHQkE9ISFhO3RoaXMuaW1hZ2UuZm9yY2VSR0I9ISFyO2NvbnN0IG49YXdhaXQgdGhpcy5pbWFnZS5nZXRJbWFnZURhdGEoZSx0aGlzLmpweERlY29kZXJPcHRpb25zKTtpZihzfHx0aGlzLmltYWdlIGluc3RhbmNlb2YgRGVjb2RlU3RyZWFtKXJldHVybiBuO2Fzc2VydChuIGluc3RhbmNlb2YgVWludDhBcnJheSwnUERGSW1hZ2UuZ2V0SW1hZ2VCeXRlczogVW5zdXBwb3J0ZWQgImltYWdlQnl0ZXMiIHR5cGUuJyk7cmV0dXJuIG5ldyBVaW50OEFycmF5KG4pfX1jb25zdCB4cj1PYmplY3QuZnJlZXplKHttYXhJbWFnZVNpemU6LTEsZGlzYWJsZUZvbnRGYWNlOiExLGlnbm9yZUVycm9yczohMSxpc0V2YWxTdXBwb3J0ZWQ6ITAsaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ6ITEsY2FudmFzTWF4QXJlYUluQnl0ZXM6LTEsZm9udEV4dHJhUHJvcGVydGllczohMSx1c2VTeXN0ZW1Gb250czohMCxjTWFwVXJsOm51bGwsc3RhbmRhcmRGb250RGF0YVVybDpudWxsfSksVXI9MSxNcj0yLExyPVByb21pc2UucmVzb2x2ZSgpO2Z1bmN0aW9uIG5vcm1hbGl6ZUJsZW5kTW9kZShlLHQ9ITEpe2lmKEFycmF5LmlzQXJyYXkoZSkpe2Zvcihjb25zdCB0IG9mIGUpe2NvbnN0IGU9bm9ybWFsaXplQmxlbmRNb2RlKHQsITApO2lmKGUpcmV0dXJuIGV9d2FybihgVW5zdXBwb3J0ZWQgYmxlbmQgbW9kZSBBcnJheTogJHtlfWApO3JldHVybiJzb3VyY2Utb3ZlciJ9aWYoIShlIGluc3RhbmNlb2YgTmFtZSkpcmV0dXJuIHQ/bnVsbDoic291cmNlLW92ZXIiO3N3aXRjaChlLm5hbWUpe2Nhc2UiTm9ybWFsIjpjYXNlIkNvbXBhdGlibGUiOnJldHVybiJzb3VyY2Utb3ZlciI7Y2FzZSJNdWx0aXBseSI6cmV0dXJuIm11bHRpcGx5IjtjYXNlIlNjcmVlbiI6cmV0dXJuInNjcmVlbiI7Y2FzZSJPdmVybGF5IjpyZXR1cm4ib3ZlcmxheSI7Y2FzZSJEYXJrZW4iOnJldHVybiJkYXJrZW4iO2Nhc2UiTGlnaHRlbiI6cmV0dXJuImxpZ2h0ZW4iO2Nhc2UiQ29sb3JEb2RnZSI6cmV0dXJuImNvbG9yLWRvZGdlIjtjYXNlIkNvbG9yQnVybiI6cmV0dXJuImNvbG9yLWJ1cm4iO2Nhc2UiSGFyZExpZ2h0IjpyZXR1cm4iaGFyZC1saWdodCI7Y2FzZSJTb2Z0TGlnaHQiOnJldHVybiJzb2Z0LWxpZ2h0IjtjYXNlIkRpZmZlcmVuY2UiOnJldHVybiJkaWZmZXJlbmNlIjtjYXNlIkV4Y2x1c2lvbiI6cmV0dXJuImV4Y2x1c2lvbiI7Y2FzZSJIdWUiOnJldHVybiJodWUiO2Nhc2UiU2F0dXJhdGlvbiI6cmV0dXJuInNhdHVyYXRpb24iO2Nhc2UiQ29sb3IiOnJldHVybiJjb2xvciI7Y2FzZSJMdW1pbm9zaXR5IjpyZXR1cm4ibHVtaW5vc2l0eSJ9aWYodClyZXR1cm4gbnVsbDt3YXJuKGBVbnN1cHBvcnRlZCBibGVuZCBtb2RlOiAke2UubmFtZX1gKTtyZXR1cm4ic291cmNlLW92ZXIifWZ1bmN0aW9uIGFkZExvY2FsbHlDYWNoZWRJbWFnZU9wcyhlLHQpe3Qub2JqSWQmJmUuYWRkRGVwZW5kZW5jeSh0Lm9iaklkKTtlLmFkZEltYWdlT3BzKHQuZm4sdC5hcmdzLHQub3B0aW9uYWxDb250ZW50KTt0LmZuPT09X2UmJnQuYXJnc1swXT8uY291bnQ+MCYmdC5hcmdzWzBdLmNvdW50Kyt9Y2xhc3MgVGltZVNsb3RNYW5hZ2Vye3N0YXRpYyBUSU1FX1NMT1RfRFVSQVRJT05fTVM9MjA7c3RhdGljIENIRUNLX1RJTUVfRVZFUlk9MTAwO2NvbnN0cnVjdG9yKCl7dGhpcy5yZXNldCgpfWNoZWNrKCl7aWYoKyt0aGlzLmNoZWNrZWQ8VGltZVNsb3RNYW5hZ2VyLkNIRUNLX1RJTUVfRVZFUlkpcmV0dXJuITE7dGhpcy5jaGVja2VkPTA7cmV0dXJuIHRoaXMuZW5kVGltZTw9RGF0ZS5ub3coKX1yZXNldCgpe3RoaXMuZW5kVGltZT1EYXRlLm5vdygpK1RpbWVTbG90TWFuYWdlci5USU1FX1NMT1RfRFVSQVRJT05fTVM7dGhpcy5jaGVja2VkPTB9fWNsYXNzIFBhcnRpYWxFdmFsdWF0b3J7Y29uc3RydWN0b3Ioe3hyZWY6ZSxoYW5kbGVyOnQscGFnZUluZGV4OmksaWRGYWN0b3J5OmEsZm9udENhY2hlOnIsYnVpbHRJbkNNYXBDYWNoZTpzLHN0YW5kYXJkRm9udERhdGFDYWNoZTpuLGdsb2JhbEltYWdlQ2FjaGU6byxzeXN0ZW1Gb250Q2FjaGU6ZyxvcHRpb25zOmM9bnVsbH0pe3RoaXMueHJlZj1lO3RoaXMuaGFuZGxlcj10O3RoaXMucGFnZUluZGV4PWk7dGhpcy5pZEZhY3Rvcnk9YTt0aGlzLmZvbnRDYWNoZT1yO3RoaXMuYnVpbHRJbkNNYXBDYWNoZT1zO3RoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlPW47dGhpcy5nbG9iYWxJbWFnZUNhY2hlPW87dGhpcy5zeXN0ZW1Gb250Q2FjaGU9Zzt0aGlzLm9wdGlvbnM9Y3x8eHI7dGhpcy50eXBlM0ZvbnRSZWZzPW51bGw7dGhpcy5fcmVnaW9uYWxJbWFnZUNhY2hlPW5ldyBSZWdpb25hbEltYWdlQ2FjaGU7dGhpcy5fZmV0Y2hCdWlsdEluQ01hcEJvdW5kPXRoaXMuZmV0Y2hCdWlsdEluQ01hcC5iaW5kKHRoaXMpO0ltYWdlUmVzaXplci5zZXRNYXhBcmVhKHRoaXMub3B0aW9ucy5jYW52YXNNYXhBcmVhSW5CeXRlcyl9Z2V0IF9wZGZGdW5jdGlvbkZhY3RvcnkoKXtyZXR1cm4gc2hhZG93KHRoaXMsIl9wZGZGdW5jdGlvbkZhY3RvcnkiLG5ldyBQREZGdW5jdGlvbkZhY3Rvcnkoe3hyZWY6dGhpcy54cmVmLGlzRXZhbFN1cHBvcnRlZDp0aGlzLm9wdGlvbnMuaXNFdmFsU3VwcG9ydGVkfSkpfWdldCBwYXJzaW5nVHlwZTNGb250KCl7cmV0dXJuISF0aGlzLnR5cGUzRm9udFJlZnN9Y2xvbmUoZT1udWxsKXtjb25zdCB0PU9iamVjdC5jcmVhdGUodGhpcyk7dC5vcHRpb25zPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLm9wdGlvbnMsZSk7cmV0dXJuIHR9aGFzQmxlbmRNb2RlcyhlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIERpY3QpKXJldHVybiExO2lmKGUub2JqSWQmJnQuaGFzKGUub2JqSWQpKXJldHVybiExO2NvbnN0IGk9bmV3IFJlZlNldCh0KTtlLm9iaklkJiZpLnB1dChlLm9iaklkKTtjb25zdCBhPVtlXSxyPXRoaXMueHJlZjtmb3IoO2EubGVuZ3RoOyl7Y29uc3QgZT1hLnNoaWZ0KCksdD1lLmdldCgiRXh0R1N0YXRlIik7aWYodCBpbnN0YW5jZW9mIERpY3QpZm9yKGxldCBlIG9mIHQuZ2V0UmF3VmFsdWVzKCkpe2lmKGUgaW5zdGFuY2VvZiBSZWYpe2lmKGkuaGFzKGUpKWNvbnRpbnVlO3RyeXtlPXIuZmV0Y2goZSl9Y2F0Y2godCl7aS5wdXQoZSk7aW5mbyhgaGFzQmxlbmRNb2RlcyAtIGlnbm9yaW5nIEV4dEdTdGF0ZTogIiR7dH0iLmApO2NvbnRpbnVlfX1pZighKGUgaW5zdGFuY2VvZiBEaWN0KSljb250aW51ZTtlLm9iaklkJiZpLnB1dChlLm9iaklkKTtjb25zdCB0PWUuZ2V0KCJCTSIpO2lmKHQgaW5zdGFuY2VvZiBOYW1lKXtpZigiTm9ybWFsIiE9PXQubmFtZSlyZXR1cm4hMH1lbHNlIGlmKHZvaWQgMCE9PXQmJkFycmF5LmlzQXJyYXkodCkpZm9yKGNvbnN0IGUgb2YgdClpZihlIGluc3RhbmNlb2YgTmFtZSYmIk5vcm1hbCIhPT1lLm5hbWUpcmV0dXJuITB9Y29uc3Qgcz1lLmdldCgiWE9iamVjdCIpO2lmKHMgaW5zdGFuY2VvZiBEaWN0KWZvcihsZXQgZSBvZiBzLmdldFJhd1ZhbHVlcygpKXtpZihlIGluc3RhbmNlb2YgUmVmKXtpZihpLmhhcyhlKSljb250aW51ZTt0cnl7ZT1yLmZldGNoKGUpfWNhdGNoKHQpe2kucHV0KGUpO2luZm8oYGhhc0JsZW5kTW9kZXMgLSBpZ25vcmluZyBYT2JqZWN0OiAiJHt0fSIuYCk7Y29udGludWV9fWlmKCEoZSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pKWNvbnRpbnVlO2UuZGljdC5vYmpJZCYmaS5wdXQoZS5kaWN0Lm9iaklkKTtjb25zdCB0PWUuZGljdC5nZXQoIlJlc291cmNlcyIpO2lmKHQgaW5zdGFuY2VvZiBEaWN0JiYoIXQub2JqSWR8fCFpLmhhcyh0Lm9iaklkKSkpe2EucHVzaCh0KTt0Lm9iaklkJiZpLnB1dCh0Lm9iaklkKX19fWZvcihjb25zdCBlIG9mIGkpdC5wdXQoZSk7cmV0dXJuITF9YXN5bmMgZmV0Y2hCdWlsdEluQ01hcChlKXtjb25zdCB0PXRoaXMuYnVpbHRJbkNNYXBDYWNoZS5nZXQoZSk7aWYodClyZXR1cm4gdDtsZXQgaTtpZihudWxsIT09dGhpcy5vcHRpb25zLmNNYXBVcmwpe2NvbnN0IHQ9YCR7dGhpcy5vcHRpb25zLmNNYXBVcmx9JHtlfS5iY21hcGAsYT1hd2FpdCBmZXRjaCh0KTtpZighYS5vayl0aHJvdyBuZXcgRXJyb3IoYGZldGNoQnVpbHRJbkNNYXA6IGZhaWxlZCB0byBmZXRjaCBmaWxlICIke3R9IiB3aXRoICIke2Euc3RhdHVzVGV4dH0iLmApO2k9e2NNYXBEYXRhOm5ldyBVaW50OEFycmF5KGF3YWl0IGEuYXJyYXlCdWZmZXIoKSksY29tcHJlc3Npb25UeXBlOmJBLkJJTkFSWX19ZWxzZSBpPWF3YWl0IHRoaXMuaGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkZldGNoQnVpbHRJbkNNYXAiLHtuYW1lOmV9KTtpLmNvbXByZXNzaW9uVHlwZSE9PWJBLk5PTkUmJnRoaXMuYnVpbHRJbkNNYXBDYWNoZS5zZXQoZSxpKTtyZXR1cm4gaX1hc3luYyBmZXRjaFN0YW5kYXJkRm9udERhdGEoZSl7Y29uc3QgdD10aGlzLnN0YW5kYXJkRm9udERhdGFDYWNoZS5nZXQoZSk7aWYodClyZXR1cm4gbmV3IFN0cmVhbSh0KTtpZih0aGlzLm9wdGlvbnMudXNlU3lzdGVtRm9udHMmJiJTeW1ib2wiIT09ZSYmIlphcGZEaW5nYmF0cyIhPT1lKXJldHVybiBudWxsO2NvbnN0IGk9emkoKVtlXTtsZXQgYTtpZihudWxsIT09dGhpcy5vcHRpb25zLnN0YW5kYXJkRm9udERhdGFVcmwpe2NvbnN0IGU9YCR7dGhpcy5vcHRpb25zLnN0YW5kYXJkRm9udERhdGFVcmx9JHtpfWAsdD1hd2FpdCBmZXRjaChlKTt0Lm9rP2E9bmV3IFVpbnQ4QXJyYXkoYXdhaXQgdC5hcnJheUJ1ZmZlcigpKTp3YXJuKGBmZXRjaFN0YW5kYXJkRm9udERhdGE6IGZhaWxlZCB0byBmZXRjaCBmaWxlICIke2V9IiB3aXRoICIke3Quc3RhdHVzVGV4dH0iLmApfWVsc2UgdHJ5e2E9YXdhaXQgdGhpcy5oYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiRmV0Y2hTdGFuZGFyZEZvbnREYXRhIix7ZmlsZW5hbWU6aX0pfWNhdGNoKGUpe3dhcm4oYGZldGNoU3RhbmRhcmRGb250RGF0YTogZmFpbGVkIHRvIGZldGNoIGZpbGUgIiR7aX0iIHdpdGggIiR7ZX0iLmApfWlmKCFhKXJldHVybiBudWxsO3RoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLnNldChlLGEpO3JldHVybiBuZXcgU3RyZWFtKGEpfWFzeW5jIGJ1aWxkRm9ybVhPYmplY3QoZSx0LGksYSxyLHMsbil7Y29uc3Qgbz10LmRpY3QsZz1sb29rdXBNYXRyaXgoby5nZXRBcnJheSgiTWF0cml4IiksbnVsbCksYz1sb29rdXBOb3JtYWxSZWN0KG8uZ2V0QXJyYXkoIkJCb3giKSxudWxsKTtsZXQgQyxoO28uaGFzKCJPQyIpJiYoQz1hd2FpdCB0aGlzLnBhcnNlTWFya2VkQ29udGVudFByb3BzKG8uZ2V0KCJPQyIpLGUpKTt2b2lkIDAhPT1DJiZhLmFkZE9wKFRlLFsiT0MiLENdKTtjb25zdCBsPW8uZ2V0KCJHcm91cCIpO2lmKGwpe2g9e21hdHJpeDpnLGJib3g6YyxzbWFzazppLGlzb2xhdGVkOiExLGtub2Nrb3V0OiExfTtsZXQgdD1udWxsO2lmKGlzTmFtZShsLmdldCgiUyIpLCJUcmFuc3BhcmVuY3kiKSl7aC5pc29sYXRlZD1sLmdldCgiSSIpfHwhMTtoLmtub2Nrb3V0PWwuZ2V0KCJLIil8fCExO2lmKGwuaGFzKCJDUyIpKXtjb25zdCBpPWwuZ2V0UmF3KCJDUyIpLGE9Q29sb3JTcGFjZS5nZXRDYWNoZWQoaSx0aGlzLnhyZWYsbik7dD1hfHxhd2FpdCB0aGlzLnBhcnNlQ29sb3JTcGFjZSh7Y3M6aSxyZXNvdXJjZXM6ZSxsb2NhbENvbG9yU3BhY2VDYWNoZTpufSl9fWlmKGk/LmJhY2tkcm9wKXt0fHw9Q29sb3JTcGFjZS5zaW5nbGV0b25zLnJnYjtpLmJhY2tkcm9wPXQuZ2V0UmdiKGkuYmFja2Ryb3AsMCl9YS5hZGRPcChqZSxbaF0pfWNvbnN0IFE9bD9bZyxudWxsXTpbZyxjXTthLmFkZE9wKFBlLFEpO2F3YWl0IHRoaXMuZ2V0T3BlcmF0b3JMaXN0KHtzdHJlYW06dCx0YXNrOnIscmVzb3VyY2VzOm8uZ2V0KCJSZXNvdXJjZXMiKXx8ZSxvcGVyYXRvckxpc3Q6YSxpbml0aWFsU3RhdGU6c30pO2EuYWRkT3AoV2UsW10pO2wmJmEuYWRkT3AoWGUsW2hdKTt2b2lkIDAhPT1DJiZhLmFkZE9wKEtlLFtdKX1fc2VuZEltZ0RhdGEoZSx0LGk9ITEpe2NvbnN0IGE9dD9bdC5iaXRtYXB8fHQuZGF0YS5idWZmZXJdOm51bGw7cmV0dXJuIHRoaXMucGFyc2luZ1R5cGUzRm9udHx8aT90aGlzLmhhbmRsZXIuc2VuZCgiY29tbW9ub2JqIixbZSwiSW1hZ2UiLHRdLGEpOnRoaXMuaGFuZGxlci5zZW5kKCJvYmoiLFtlLHRoaXMucGFnZUluZGV4LCJJbWFnZSIsdF0sYSl9YXN5bmMgYnVpbGRQYWludEltYWdlWE9iamVjdCh7cmVzb3VyY2VzOmUsaW1hZ2U6dCxpc0lubGluZTppPSExLG9wZXJhdG9yTGlzdDphLGNhY2hlS2V5OnIsbG9jYWxJbWFnZUNhY2hlOnMsbG9jYWxDb2xvclNwYWNlQ2FjaGU6bn0pe2NvbnN0IG89dC5kaWN0LGc9by5vYmpJZCxjPW8uZ2V0KCJXIiwiV2lkdGgiKSxDPW8uZ2V0KCJIIiwiSGVpZ2h0Iik7aWYoIWN8fCJudW1iZXIiIT10eXBlb2YgY3x8IUN8fCJudW1iZXIiIT10eXBlb2YgQyl7d2FybigiSW1hZ2UgZGltZW5zaW9ucyBhcmUgbWlzc2luZywgb3Igbm90IG51bWJlcnMuIik7cmV0dXJufWNvbnN0IGg9dGhpcy5vcHRpb25zLm1heEltYWdlU2l6ZTtpZigtMSE9PWgmJmMqQz5oKXtjb25zdCBlPSJJbWFnZSBleGNlZWRlZCBtYXhpbXVtIGFsbG93ZWQgc2l6ZSBhbmQgd2FzIHJlbW92ZWQuIjtpZih0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXt3YXJuKGUpO3JldHVybn10aHJvdyBuZXcgRXJyb3IoZSl9bGV0IGw7by5oYXMoIk9DIikmJihsPWF3YWl0IHRoaXMucGFyc2VNYXJrZWRDb250ZW50UHJvcHMoby5nZXQoIk9DIiksZSkpO2xldCBRLEU7aWYoby5nZXQoIklNIiwiSW1hZ2VNYXNrIil8fCExKXtjb25zdCBlPW8uZ2V0KCJJIiwiSW50ZXJwb2xhdGUiKSxpPWMrNz4+MyxuPXQuZ2V0Qnl0ZXMoaSpDKSxoPW8uZ2V0QXJyYXkoIkQiLCJEZWNvZGUiKTtpZih0aGlzLnBhcnNpbmdUeXBlM0ZvbnQpe1E9UERGSW1hZ2UuY3JlYXRlUmF3TWFzayh7aW1nQXJyYXk6bix3aWR0aDpjLGhlaWdodDpDLGltYWdlSXNGcm9tRGVjb2RlU3RyZWFtOnQgaW5zdGFuY2VvZiBEZWNvZGVTdHJlYW0saW52ZXJzZURlY29kZTpoPy5bMF0+MCxpbnRlcnBvbGF0ZTplfSk7US5jYWNoZWQ9ISFyO0U9W1FdO2EuYWRkSW1hZ2VPcHMoX2UsRSxsKTtpZihyKXtjb25zdCBlPXtmbjpfZSxhcmdzOkUsb3B0aW9uYWxDb250ZW50Omx9O3Muc2V0KHIsZyxlKTtnJiZ0aGlzLl9yZWdpb25hbEltYWdlQ2FjaGUuc2V0KG51bGwsZyxlKX1yZXR1cm59UT1hd2FpdCBQREZJbWFnZS5jcmVhdGVNYXNrKHtpbWdBcnJheTpuLHdpZHRoOmMsaGVpZ2h0OkMsaW1hZ2VJc0Zyb21EZWNvZGVTdHJlYW06dCBpbnN0YW5jZW9mIERlY29kZVN0cmVhbSxpbnZlcnNlRGVjb2RlOmg/LlswXT4wLGludGVycG9sYXRlOmUsaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ6dGhpcy5vcHRpb25zLmlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkfSk7aWYoUS5pc1NpbmdsZU9wYXF1ZVBpeGVsKXthLmFkZEltYWdlT3BzKGF0LFtdLGwpO2lmKHIpe2NvbnN0IGU9e2ZuOmF0LGFyZ3M6W10sb3B0aW9uYWxDb250ZW50Omx9O3Muc2V0KHIsZyxlKTtnJiZ0aGlzLl9yZWdpb25hbEltYWdlQ2FjaGUuc2V0KG51bGwsZyxlKX1yZXR1cm59Y29uc3QgdT1gbWFza18ke3RoaXMuaWRGYWN0b3J5LmNyZWF0ZU9iaklkKCl9YDthLmFkZERlcGVuZGVuY3kodSk7US5kYXRhTGVuPVEuYml0bWFwP1Eud2lkdGgqUS5oZWlnaHQqNDpRLmRhdGEubGVuZ3RoO3RoaXMuX3NlbmRJbWdEYXRhKHUsUSk7RT1be2RhdGE6dSx3aWR0aDpRLndpZHRoLGhlaWdodDpRLmhlaWdodCxpbnRlcnBvbGF0ZTpRLmludGVycG9sYXRlLGNvdW50OjF9XTthLmFkZEltYWdlT3BzKF9lLEUsbCk7aWYocil7Y29uc3QgZT17b2JqSWQ6dSxmbjpfZSxhcmdzOkUsb3B0aW9uYWxDb250ZW50Omx9O3Muc2V0KHIsZyxlKTtnJiZ0aGlzLl9yZWdpb25hbEltYWdlQ2FjaGUuc2V0KG51bGwsZyxlKX1yZXR1cm59aWYoaSYmYytDPDIwMCYmIW8uaGFzKCJTTWFzayIpJiYhby5oYXMoIk1hc2siKSl7dHJ5e2NvbnN0IHI9bmV3IFBERkltYWdlKHt4cmVmOnRoaXMueHJlZixyZXM6ZSxpbWFnZTp0LGlzSW5saW5lOmkscGRmRnVuY3Rpb25GYWN0b3J5OnRoaXMuX3BkZkZ1bmN0aW9uRmFjdG9yeSxsb2NhbENvbG9yU3BhY2VDYWNoZTpufSk7UT1hd2FpdCByLmNyZWF0ZUltYWdlRGF0YSghMCwhMSk7YS5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZD10aGlzLm9wdGlvbnMuaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ7YS5hZGRJbWFnZU9wcyhBdCxbUV0sbCl9Y2F0Y2goZSl7Y29uc3QgdD1gVW5hYmxlIHRvIGRlY29kZSBpbmxpbmUgaW1hZ2U6ICIke2V9Ii5gO2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IG5ldyBFcnJvcih0KTt3YXJuKHQpfXJldHVybn1sZXQgdT1gaW1nXyR7dGhpcy5pZEZhY3RvcnkuY3JlYXRlT2JqSWQoKX1gLGQ9ITE7aWYodGhpcy5wYXJzaW5nVHlwZTNGb250KXU9YCR7dGhpcy5pZEZhY3RvcnkuZ2V0RG9jSWQoKX1fdHlwZTNfJHt1fWA7ZWxzZSBpZihyJiZnKXtkPXRoaXMuZ2xvYmFsSW1hZ2VDYWNoZS5zaG91bGRDYWNoZShnLHRoaXMucGFnZUluZGV4KTtpZihkKXthc3NlcnQoIWksIkNhbm5vdCBjYWNoZSBhbiBpbmxpbmUgaW1hZ2UgZ2xvYmFsbHkuIik7dT1gJHt0aGlzLmlkRmFjdG9yeS5nZXREb2NJZCgpfV8ke3V9YH19YS5hZGREZXBlbmRlbmN5KHUpO0U9W3UsYyxDXTthLmFkZEltYWdlT3BzKCRlLEUsbCk7aWYoZCl7aWYodGhpcy5nbG9iYWxJbWFnZUNhY2hlLmhhc0RlY29kZUZhaWxlZChnKSl7dGhpcy5nbG9iYWxJbWFnZUNhY2hlLnNldERhdGEoZyx7b2JqSWQ6dSxmbjokZSxhcmdzOkUsb3B0aW9uYWxDb250ZW50OmwsYnl0ZVNpemU6MH0pO3RoaXMuX3NlbmRJbWdEYXRhKHUsbnVsbCxkKTtyZXR1cm59aWYoYypDPjI1ZTR8fG8uaGFzKCJTTWFzayIpfHxvLmhhcygiTWFzayIpKXtjb25zdCBlPWF3YWl0IHRoaXMuaGFuZGxlci5zZW5kV2l0aFByb21pc2UoImNvbW1vbm9iaiIsW3UsIkNvcHlMb2NhbEltYWdlIix7aW1hZ2VSZWY6Z31dKTtpZihlKXt0aGlzLmdsb2JhbEltYWdlQ2FjaGUuc2V0RGF0YShnLHtvYmpJZDp1LGZuOiRlLGFyZ3M6RSxvcHRpb25hbENvbnRlbnQ6bCxieXRlU2l6ZTowfSk7dGhpcy5nbG9iYWxJbWFnZUNhY2hlLmFkZEJ5dGVTaXplKGcsZSk7cmV0dXJufX19UERGSW1hZ2UuYnVpbGRJbWFnZSh7eHJlZjp0aGlzLnhyZWYscmVzOmUsaW1hZ2U6dCxpc0lubGluZTppLHBkZkZ1bmN0aW9uRmFjdG9yeTp0aGlzLl9wZGZGdW5jdGlvbkZhY3RvcnksbG9jYWxDb2xvclNwYWNlQ2FjaGU6bn0pLnRoZW4oKGFzeW5jIGU9PntRPWF3YWl0IGUuY3JlYXRlSW1hZ2VEYXRhKCExLHRoaXMub3B0aW9ucy5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZCk7US5kYXRhTGVuPVEuYml0bWFwP1Eud2lkdGgqUS5oZWlnaHQqNDpRLmRhdGEubGVuZ3RoO1EucmVmPWc7ZCYmdGhpcy5nbG9iYWxJbWFnZUNhY2hlLmFkZEJ5dGVTaXplKGcsUS5kYXRhTGVuKTtyZXR1cm4gdGhpcy5fc2VuZEltZ0RhdGEodSxRLGQpfSkpLmNhdGNoKChlPT57d2FybihgVW5hYmxlIHRvIGRlY29kZSBpbWFnZSAiJHt1fSI6ICIke2V9Ii5gKTtnJiZ0aGlzLmdsb2JhbEltYWdlQ2FjaGUuYWRkRGVjb2RlRmFpbGVkKGcpO3JldHVybiB0aGlzLl9zZW5kSW1nRGF0YSh1LG51bGwsZCl9KSk7aWYocil7Y29uc3QgZT17b2JqSWQ6dSxmbjokZSxhcmdzOkUsb3B0aW9uYWxDb250ZW50Omx9O3Muc2V0KHIsZyxlKTtpZihnKXt0aGlzLl9yZWdpb25hbEltYWdlQ2FjaGUuc2V0KG51bGwsZyxlKTtkJiZ0aGlzLmdsb2JhbEltYWdlQ2FjaGUuc2V0RGF0YShnLHtvYmpJZDp1LGZuOiRlLGFyZ3M6RSxvcHRpb25hbENvbnRlbnQ6bCxieXRlU2l6ZTowfSl9fX1oYW5kbGVTTWFzayhlLHQsaSxhLHIscyl7Y29uc3Qgbj1lLmdldCgiRyIpLG89e3N1YnR5cGU6ZS5nZXQoIlMiKS5uYW1lLGJhY2tkcm9wOmUuZ2V0KCJCQyIpfSxnPWUuZ2V0KCJUUiIpO2lmKGlzUERGRnVuY3Rpb24oZykpe2NvbnN0IGU9dGhpcy5fcGRmRnVuY3Rpb25GYWN0b3J5LmNyZWF0ZShnKSx0PW5ldyBVaW50OEFycmF5KDI1NiksaT1uZXcgRmxvYXQzMkFycmF5KDEpO2ZvcihsZXQgYT0wO2E8MjU2O2ErKyl7aVswXT1hLzI1NTtlKGksMCxpLDApO3RbYV09MjU1KmlbMF18MH1vLnRyYW5zZmVyTWFwPXR9cmV0dXJuIHRoaXMuYnVpbGRGb3JtWE9iamVjdCh0LG4sbyxpLGEsci5zdGF0ZS5jbG9uZSgpLHMpfWhhbmRsZVRyYW5zZmVyRnVuY3Rpb24oZSl7bGV0IHQ7aWYoQXJyYXkuaXNBcnJheShlKSl0PWU7ZWxzZXtpZighaXNQREZGdW5jdGlvbihlKSlyZXR1cm4gbnVsbDt0PVtlXX1jb25zdCBpPVtdO2xldCBhPTAscj0wO2Zvcihjb25zdCBlIG9mIHQpe2NvbnN0IHQ9dGhpcy54cmVmLmZldGNoSWZSZWYoZSk7YSsrO2lmKGlzTmFtZSh0LCJJZGVudGl0eSIpKXtpLnB1c2gobnVsbCk7Y29udGludWV9aWYoIWlzUERGRnVuY3Rpb24odCkpcmV0dXJuIG51bGw7Y29uc3Qgcz10aGlzLl9wZGZGdW5jdGlvbkZhY3RvcnkuY3JlYXRlKHQpLG49bmV3IFVpbnQ4QXJyYXkoMjU2KSxvPW5ldyBGbG9hdDMyQXJyYXkoMSk7Zm9yKGxldCBlPTA7ZTwyNTY7ZSsrKXtvWzBdPWUvMjU1O3MobywwLG8sMCk7bltlXT0yNTUqb1swXXwwfWkucHVzaChuKTtyKyt9cmV0dXJuIDEhPT1hJiY0IT09YXx8MD09PXI/bnVsbDppfWhhbmRsZVRpbGluZ1R5cGUoZSx0LGksYSxyLHMsbixvKXtjb25zdCBnPW5ldyBPcGVyYXRvckxpc3QsYz1EaWN0Lm1lcmdlKHt4cmVmOnRoaXMueHJlZixkaWN0QXJyYXk6W3IuZ2V0KCJSZXNvdXJjZXMiKSxpXX0pO3JldHVybiB0aGlzLmdldE9wZXJhdG9yTGlzdCh7c3RyZWFtOmEsdGFzazpuLHJlc291cmNlczpjLG9wZXJhdG9yTGlzdDpnfSkudGhlbigoZnVuY3Rpb24oKXtjb25zdCBpPWcuZ2V0SVIoKSxhPWdldFRpbGluZ1BhdHRlcm5JUihpLHIsdCk7cy5hZGREZXBlbmRlbmNpZXMoZy5kZXBlbmRlbmNpZXMpO3MuYWRkT3AoZSxhKTtyLm9iaklkJiZvLnNldChudWxsLHIub2JqSWQse29wZXJhdG9yTGlzdElSOmksZGljdDpyfSl9KSkuY2F0Y2goKGU9PntpZighKGUgaW5zdGFuY2VvZiBBYm9ydEV4Y2VwdGlvbikpe2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IGU7d2FybihgaGFuZGxlVGlsaW5nVHlwZSAtIGlnbm9yaW5nIHBhdHRlcm46ICIke2V9Ii5gKX19KSl9YXN5bmMgaGFuZGxlU2V0Rm9udChlLHQsaSxhLHIscyxuPW51bGwsbz1udWxsKXtjb25zdCBnPXQ/LlswXWluc3RhbmNlb2YgTmFtZT90WzBdLm5hbWU6bnVsbDtsZXQgYz1hd2FpdCB0aGlzLmxvYWRGb250KGcsaSxlLG4sbyk7aWYoYy5mb250LmlzVHlwZTNGb250KXRyeXthd2FpdCBjLmxvYWRUeXBlM0RhdGEodGhpcyxlLHIpO2EuYWRkRGVwZW5kZW5jaWVzKGMudHlwZTNEZXBlbmRlbmNpZXMpfWNhdGNoKGUpe2M9bmV3IFRyYW5zbGF0ZWRGb250KHtsb2FkZWROYW1lOiJnX2ZvbnRfZXJyb3IiLGZvbnQ6bmV3IEVycm9yRm9udChgVHlwZTMgZm9udCBsb2FkIGVycm9yOiAke2V9YCksZGljdDpjLmZvbnQsZXZhbHVhdG9yT3B0aW9uczp0aGlzLm9wdGlvbnN9KX1zLmZvbnQ9Yy5mb250O2Muc2VuZCh0aGlzLmhhbmRsZXIpO3JldHVybiBjLmxvYWRlZE5hbWV9aGFuZGxlVGV4dChlLHQpe2NvbnN0IGk9dC5mb250LGE9aS5jaGFyc1RvR2x5cGhzKGUpO2lmKGkuZGF0YSl7KCEhKHQudGV4dFJlbmRlcmluZ01vZGUmRCl8fCJQYXR0ZXJuIj09PXQuZmlsbENvbG9yU3BhY2UubmFtZXx8aS5kaXNhYmxlRm9udEZhY2V8fHRoaXMub3B0aW9ucy5kaXNhYmxlRm9udEZhY2UpJiZQYXJ0aWFsRXZhbHVhdG9yLmJ1aWxkRm9udFBhdGhzKGksYSx0aGlzLmhhbmRsZXIsdGhpcy5vcHRpb25zKX1yZXR1cm4gYX1lbnN1cmVTdGF0ZUZvbnQoZSl7aWYoZS5mb250KXJldHVybjtjb25zdCB0PW5ldyBGb3JtYXRFcnJvcigiTWlzc2luZyBzZXRGb250IChUZikgb3BlcmF0b3IgYmVmb3JlIHRleHQgcmVuZGVyaW5nIG9wZXJhdG9yLiIpO2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IHQ7d2FybihgZW5zdXJlU3RhdGVGb250OiAiJHt0fSIuYCl9YXN5bmMgc2V0R1N0YXRlKHtyZXNvdXJjZXM6ZSxnU3RhdGU6dCxvcGVyYXRvckxpc3Q6aSxjYWNoZUtleTphLHRhc2s6cixzdGF0ZU1hbmFnZXI6cyxsb2NhbEdTdGF0ZUNhY2hlOm4sbG9jYWxDb2xvclNwYWNlQ2FjaGU6b30pe2NvbnN0IGc9dC5vYmpJZDtsZXQgYz0hMDtjb25zdCBDPVtdO2xldCBoPVByb21pc2UucmVzb2x2ZSgpO2Zvcihjb25zdCBhIG9mIHQuZ2V0S2V5cygpKXtjb25zdCBuPXQuZ2V0KGEpO3N3aXRjaChhKXtjYXNlIlR5cGUiOmJyZWFrO2Nhc2UiTFciOmNhc2UiTEMiOmNhc2UiTEoiOmNhc2UiTUwiOmNhc2UiRCI6Y2FzZSJSSSI6Y2FzZSJGTCI6Y2FzZSJDQSI6Y2FzZSJjYSI6Qy5wdXNoKFthLG5dKTticmVhaztjYXNlIkZvbnQiOmM9ITE7aD1oLnRoZW4oKCgpPT50aGlzLmhhbmRsZVNldEZvbnQoZSxudWxsLG5bMF0saSxyLHMuc3RhdGUpLnRoZW4oKGZ1bmN0aW9uKGUpe2kuYWRkRGVwZW5kZW5jeShlKTtDLnB1c2goW2EsW2UsblsxXV1dKX0pKSkpO2JyZWFrO2Nhc2UiQk0iOkMucHVzaChbYSxub3JtYWxpemVCbGVuZE1vZGUobildKTticmVhaztjYXNlIlNNYXNrIjppZihpc05hbWUobiwiTm9uZSIpKXtDLnB1c2goW2EsITFdKTticmVha31pZihuIGluc3RhbmNlb2YgRGljdCl7Yz0hMTtoPWgudGhlbigoKCk9PnRoaXMuaGFuZGxlU01hc2sobixlLGkscixzLG8pKSk7Qy5wdXNoKFthLCEwXSl9ZWxzZSB3YXJuKCJVbnN1cHBvcnRlZCBTTWFzayB0eXBlIik7YnJlYWs7Y2FzZSJUUiI6Y29uc3QgdD10aGlzLmhhbmRsZVRyYW5zZmVyRnVuY3Rpb24obik7Qy5wdXNoKFthLHRdKTticmVhaztjYXNlIk9QIjpjYXNlIm9wIjpjYXNlIk9QTSI6Y2FzZSJCRyI6Y2FzZSJCRzIiOmNhc2UiVUNSIjpjYXNlIlVDUjIiOmNhc2UiVFIyIjpjYXNlIkhUIjpjYXNlIlNNIjpjYXNlIlNBIjpjYXNlIkFJUyI6Y2FzZSJUSyI6aW5mbygiZ3JhcGhpYyBzdGF0ZSBvcGVyYXRvciAiK2EpO2JyZWFrO2RlZmF1bHQ6aW5mbygiVW5rbm93biBncmFwaGljIHN0YXRlIG9wZXJhdG9yICIrYSl9fWF3YWl0IGg7Qy5sZW5ndGg+MCYmaS5hZGRPcChVQSxbQ10pO2MmJm4uc2V0KGEsZyxDKX1sb2FkRm9udChlLHQsaSxhPW51bGwscj1udWxsKXtjb25zdCBlcnJvckZvbnQ9YXN5bmMoKT0+bmV3IFRyYW5zbGF0ZWRGb250KHtsb2FkZWROYW1lOiJnX2ZvbnRfZXJyb3IiLGZvbnQ6bmV3IEVycm9yRm9udChgRm9udCAiJHtlfSIgaXMgbm90IGF2YWlsYWJsZS5gKSxkaWN0OnQsZXZhbHVhdG9yT3B0aW9uczp0aGlzLm9wdGlvbnN9KTtsZXQgcztpZih0KXQgaW5zdGFuY2VvZiBSZWYmJihzPXQpO2Vsc2V7Y29uc3QgdD1pLmdldCgiRm9udCIpO3QmJihzPXQuZ2V0UmF3KGUpKX1pZihzKXtpZih0aGlzLnR5cGUzRm9udFJlZnM/LmhhcyhzKSlyZXR1cm4gZXJyb3JGb250KCk7aWYodGhpcy5mb250Q2FjaGUuaGFzKHMpKXJldHVybiB0aGlzLmZvbnRDYWNoZS5nZXQocyk7dHJ5e3Q9dGhpcy54cmVmLmZldGNoSWZSZWYocyl9Y2F0Y2goZSl7d2FybihgbG9hZEZvbnQgLSBsb29rdXAgZmFpbGVkOiAiJHtlfSIuYCl9fWlmKCEodCBpbnN0YW5jZW9mIERpY3QpKXtpZighdGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyYmIXRoaXMucGFyc2luZ1R5cGUzRm9udCl7d2FybihgRm9udCAiJHtlfSIgaXMgbm90IGF2YWlsYWJsZS5gKTtyZXR1cm4gZXJyb3JGb250KCl9d2FybihgRm9udCAiJHtlfSIgaXMgbm90IGF2YWlsYWJsZSAtLSBhdHRlbXB0aW5nIHRvIGZhbGxiYWNrIHRvIGEgZGVmYXVsdCBmb250LmApO3Q9YXx8UGFydGlhbEV2YWx1YXRvci5mYWxsYmFja0ZvbnREaWN0fWlmKHQuY2FjaGVLZXkmJnRoaXMuZm9udENhY2hlLmhhcyh0LmNhY2hlS2V5KSlyZXR1cm4gdGhpcy5mb250Q2FjaGUuZ2V0KHQuY2FjaGVLZXkpO2NvbnN0e3Byb21pc2U6bixyZXNvbHZlOm99PVByb21pc2Uud2l0aFJlc29sdmVycygpO2xldCBnO3RyeXtnPXRoaXMucHJlRXZhbHVhdGVGb250KHQpO2cuY3NzRm9udEluZm89cn1jYXRjaChlKXt3YXJuKGBsb2FkRm9udCAtIHByZUV2YWx1YXRlRm9udCBmYWlsZWQ6ICIke2V9Ii5gKTtyZXR1cm4gZXJyb3JGb250KCl9Y29uc3R7ZGVzY3JpcHRvcjpjLGhhc2g6Q309ZyxoPXMgaW5zdGFuY2VvZiBSZWY7bGV0IGw7aWYoQyYmYyBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IGU9Yy5mb250QWxpYXNlc3x8PU9iamVjdC5jcmVhdGUobnVsbCk7aWYoZVtDXSl7Y29uc3QgdD1lW0NdLmFsaWFzUmVmO2lmKGgmJnQmJnRoaXMuZm9udENhY2hlLmhhcyh0KSl7dGhpcy5mb250Q2FjaGUucHV0QWxpYXMocyx0KTtyZXR1cm4gdGhpcy5mb250Q2FjaGUuZ2V0KHMpfX1lbHNlIGVbQ109e2ZvbnRJRDp0aGlzLmlkRmFjdG9yeS5jcmVhdGVGb250SWQoKX07aCYmKGVbQ10uYWxpYXNSZWY9cyk7bD1lW0NdLmZvbnRJRH1lbHNlIGw9dGhpcy5pZEZhY3RvcnkuY3JlYXRlRm9udElkKCk7YXNzZXJ0KGw/LnN0YXJ0c1dpdGgoImYiKSwnVGhlICJmb250SUQiIG11c3QgYmUgKGNvcnJlY3RseSkgZGVmaW5lZC4nKTtpZihoKXRoaXMuZm9udENhY2hlLnB1dChzLG4pO2Vsc2V7dC5jYWNoZUtleT1gY2FjaGVLZXlfJHtsfWA7dGhpcy5mb250Q2FjaGUucHV0KHQuY2FjaGVLZXksbil9dC5sb2FkZWROYW1lPWAke3RoaXMuaWRGYWN0b3J5LmdldERvY0lkKCl9XyR7bH1gO3RoaXMudHJhbnNsYXRlRm9udChnKS50aGVuKChlPT57byhuZXcgVHJhbnNsYXRlZEZvbnQoe2xvYWRlZE5hbWU6dC5sb2FkZWROYW1lLGZvbnQ6ZSxkaWN0OnQsZXZhbHVhdG9yT3B0aW9uczp0aGlzLm9wdGlvbnN9KSl9KSkuY2F0Y2goKGU9Pnt3YXJuKGBsb2FkRm9udCAtIHRyYW5zbGF0ZUZvbnQgZmFpbGVkOiAiJHtlfSIuYCk7byhuZXcgVHJhbnNsYXRlZEZvbnQoe2xvYWRlZE5hbWU6dC5sb2FkZWROYW1lLGZvbnQ6bmV3IEVycm9yRm9udChlIGluc3RhbmNlb2YgRXJyb3I/ZS5tZXNzYWdlOmUpLGRpY3Q6dCxldmFsdWF0b3JPcHRpb25zOnRoaXMub3B0aW9uc30pKX0pKTtyZXR1cm4gbn1idWlsZFBhdGgoZSx0LGksYT0hMSl7Y29uc3Qgcj1lLmxlbmd0aC0xO2l8fChpPVtdKTtpZihyPDB8fGUuZm5BcnJheVtyXSE9PXJ0KXtpZihhKXt3YXJuKGBFbmNvdW50ZXJlZCBwYXRoIG9wZXJhdG9yICIke3R9IiBpbnNpZGUgb2YgYSB0ZXh0IG9iamVjdC5gKTtlLmFkZE9wKE1BLG51bGwpfWxldCByO3N3aXRjaCh0KXtjYXNlIE9BOmNvbnN0IGU9aVswXStpWzJdLHQ9aVsxXStpWzNdO3I9W01hdGgubWluKGlbMF0sZSksTWF0aC5taW4oaVsxXSx0KSxNYXRoLm1heChpWzBdLGUpLE1hdGgubWF4KGlbMV0sdCldO2JyZWFrO2Nhc2UgSkE6Y2FzZSB2QTpyPVtpWzBdLGlbMV0saVswXSxpWzFdXTticmVhaztkZWZhdWx0OnI9WzEvMCwxLzAsLTEvMCwtMS8wXX1lLmFkZE9wKHJ0LFtbdF0saSxyXSk7YSYmZS5hZGRPcChMQSxudWxsKX1lbHNle2NvbnN0IGE9ZS5hcmdzQXJyYXlbcl07YVswXS5wdXNoKHQpO2FbMV0ucHVzaCguLi5pKTtjb25zdCBzPWFbMl07c3dpdGNoKHQpe2Nhc2UgT0E6Y29uc3QgZT1pWzBdK2lbMl0sdD1pWzFdK2lbM107c1swXT1NYXRoLm1pbihzWzBdLGlbMF0sZSk7c1sxXT1NYXRoLm1pbihzWzFdLGlbMV0sdCk7c1syXT1NYXRoLm1heChzWzJdLGlbMF0sZSk7c1szXT1NYXRoLm1heChzWzNdLGlbMV0sdCk7YnJlYWs7Y2FzZSBKQTpjYXNlIHZBOnNbMF09TWF0aC5taW4oc1swXSxpWzBdKTtzWzFdPU1hdGgubWluKHNbMV0saVsxXSk7c1syXT1NYXRoLm1heChzWzJdLGlbMF0pO3NbM109TWF0aC5tYXgoc1szXSxpWzFdKX19fXBhcnNlQ29sb3JTcGFjZSh7Y3M6ZSxyZXNvdXJjZXM6dCxsb2NhbENvbG9yU3BhY2VDYWNoZTppfSl7cmV0dXJuIENvbG9yU3BhY2UucGFyc2VBc3luYyh7Y3M6ZSx4cmVmOnRoaXMueHJlZixyZXNvdXJjZXM6dCxwZGZGdW5jdGlvbkZhY3Rvcnk6dGhpcy5fcGRmRnVuY3Rpb25GYWN0b3J5LGxvY2FsQ29sb3JTcGFjZUNhY2hlOml9KS5jYXRjaCgoZT0+e2lmKGUgaW5zdGFuY2VvZiBBYm9ydEV4Y2VwdGlvbilyZXR1cm4gbnVsbDtpZih0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXt3YXJuKGBwYXJzZUNvbG9yU3BhY2UgLSBpZ25vcmluZyBDb2xvclNwYWNlOiAiJHtlfSIuYCk7cmV0dXJuIG51bGx9dGhyb3cgZX0pKX1wYXJzZVNoYWRpbmcoe3NoYWRpbmc6ZSxyZXNvdXJjZXM6dCxsb2NhbENvbG9yU3BhY2VDYWNoZTppLGxvY2FsU2hhZGluZ1BhdHRlcm5DYWNoZTphfSl7bGV0IHIscz1hLmdldChlKTtpZihzKXJldHVybiBzO3RyeXtyPVBhdHRlcm4ucGFyc2VTaGFkaW5nKGUsdGhpcy54cmVmLHQsdGhpcy5fcGRmRnVuY3Rpb25GYWN0b3J5LGkpLmdldElSKCl9Y2F0Y2godCl7aWYodCBpbnN0YW5jZW9mIEFib3J0RXhjZXB0aW9uKXJldHVybiBudWxsO2lmKHRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpe3dhcm4oYHBhcnNlU2hhZGluZyAtIGlnbm9yaW5nIHNoYWRpbmc6ICIke3R9Ii5gKTthLnNldChlLG51bGwpO3JldHVybiBudWxsfXRocm93IHR9cz1gcGF0dGVybl8ke3RoaXMuaWRGYWN0b3J5LmNyZWF0ZU9iaklkKCl9YDt0aGlzLnBhcnNpbmdUeXBlM0ZvbnQmJihzPWAke3RoaXMuaWRGYWN0b3J5LmdldERvY0lkKCl9X3R5cGUzXyR7c31gKTthLnNldChlLHMpO3RoaXMucGFyc2luZ1R5cGUzRm9udD90aGlzLmhhbmRsZXIuc2VuZCgiY29tbW9ub2JqIixbcywiUGF0dGVybiIscl0pOnRoaXMuaGFuZGxlci5zZW5kKCJvYmoiLFtzLHRoaXMucGFnZUluZGV4LCJQYXR0ZXJuIixyXSk7cmV0dXJuIHN9aGFuZGxlQ29sb3JOKGUsdCxpLGEscixzLG4sbyxnLGMpe2NvbnN0IEM9aS5wb3AoKTtpZihDIGluc3RhbmNlb2YgTmFtZSl7Y29uc3QgaD1yLmdldFJhdyhDLm5hbWUpLGw9aCBpbnN0YW5jZW9mIFJlZiYmZy5nZXRCeVJlZihoKTtpZihsKXRyeXtjb25zdCByPWEuYmFzZT9hLmJhc2UuZ2V0UmdiKGksMCk6bnVsbCxzPWdldFRpbGluZ1BhdHRlcm5JUihsLm9wZXJhdG9yTGlzdElSLGwuZGljdCxyKTtlLmFkZE9wKHQscyk7cmV0dXJufWNhdGNoe31jb25zdCBRPXRoaXMueHJlZi5mZXRjaElmUmVmKGgpO2lmKFEpe2NvbnN0IHI9USBpbnN0YW5jZW9mIEJhc2VTdHJlYW0/US5kaWN0OlEsQz1yLmdldCgiUGF0dGVyblR5cGUiKTtpZihDPT09VXIpe2NvbnN0IG89YS5iYXNlP2EuYmFzZS5nZXRSZ2IoaSwwKTpudWxsO3JldHVybiB0aGlzLmhhbmRsZVRpbGluZ1R5cGUodCxvLHMsUSxyLGUsbixnKX1pZihDPT09TXIpe2NvbnN0IGk9ci5nZXQoIlNoYWRpbmciKSxhPXRoaXMucGFyc2VTaGFkaW5nKHtzaGFkaW5nOmkscmVzb3VyY2VzOnMsbG9jYWxDb2xvclNwYWNlQ2FjaGU6byxsb2NhbFNoYWRpbmdQYXR0ZXJuQ2FjaGU6Y30pO2lmKGEpe2NvbnN0IGk9bG9va3VwTWF0cml4KHIuZ2V0QXJyYXkoIk1hdHJpeCIpLG51bGwpO2UuYWRkT3AodCxbIlNoYWRpbmciLGEsaV0pfXJldHVybn10aHJvdyBuZXcgRm9ybWF0RXJyb3IoYFVua25vd24gUGF0dGVyblR5cGU6ICR7Q31gKX19dGhyb3cgbmV3IEZvcm1hdEVycm9yKGBVbmtub3duIFBhdHRlcm5OYW1lOiAke0N9YCl9X3BhcnNlVmlzaWJpbGl0eUV4cHJlc3Npb24oZSx0LGkpe2lmKCsrdD4xMCl7d2FybigiVmlzaWJpbGl0eSBleHByZXNzaW9uIGlzIHRvbyBkZWVwbHkgbmVzdGVkIik7cmV0dXJufWNvbnN0IGE9ZS5sZW5ndGgscj10aGlzLnhyZWYuZmV0Y2hJZlJlZihlWzBdKTtpZighKGE8MikmJnIgaW5zdGFuY2VvZiBOYW1lKXtzd2l0Y2goci5uYW1lKXtjYXNlIkFuZCI6Y2FzZSJPciI6Y2FzZSJOb3QiOmkucHVzaChyLm5hbWUpO2JyZWFrO2RlZmF1bHQ6d2FybihgSW52YWxpZCBvcGVyYXRvciAke3IubmFtZX0gaW4gdmlzaWJpbGl0eSBleHByZXNzaW9uYCk7cmV0dXJufWZvcihsZXQgcj0xO3I8YTtyKyspe2NvbnN0IGE9ZVtyXSxzPXRoaXMueHJlZi5mZXRjaElmUmVmKGEpO2lmKEFycmF5LmlzQXJyYXkocykpe2NvbnN0IGU9W107aS5wdXNoKGUpO3RoaXMuX3BhcnNlVmlzaWJpbGl0eUV4cHJlc3Npb24ocyx0LGUpfWVsc2UgYSBpbnN0YW5jZW9mIFJlZiYmaS5wdXNoKGEudG9TdHJpbmcoKSl9fWVsc2Ugd2FybigiSW52YWxpZCB2aXNpYmlsaXR5IGV4cHJlc3Npb24iKX1hc3luYyBwYXJzZU1hcmtlZENvbnRlbnRQcm9wcyhlLHQpe2xldCBpO2lmKGUgaW5zdGFuY2VvZiBOYW1lKXtpPXQuZ2V0KCJQcm9wZXJ0aWVzIikuZ2V0KGUubmFtZSl9ZWxzZXtpZighKGUgaW5zdGFuY2VvZiBEaWN0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIk9wdGlvbmFsIGNvbnRlbnQgcHJvcGVydGllcyBtYWxmb3JtZWQuIik7aT1lfWNvbnN0IGE9aS5nZXQoIlR5cGUiKT8ubmFtZTtpZigiT0NHIj09PWEpcmV0dXJue3R5cGU6YSxpZDppLm9iaklkfTtpZigiT0NNRCI9PT1hKXtjb25zdCBlPWkuZ2V0KCJWRSIpO2lmKEFycmF5LmlzQXJyYXkoZSkpe2NvbnN0IHQ9W107dGhpcy5fcGFyc2VWaXNpYmlsaXR5RXhwcmVzc2lvbihlLDAsdCk7aWYodC5sZW5ndGg+MClyZXR1cm57dHlwZToiT0NNRCIsZXhwcmVzc2lvbjp0fX1jb25zdCB0PWkuZ2V0KCJPQ0dzIik7aWYoQXJyYXkuaXNBcnJheSh0KXx8dCBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IGU9W107aWYoQXJyYXkuaXNBcnJheSh0KSlmb3IoY29uc3QgaSBvZiB0KWUucHVzaChpLnRvU3RyaW5nKCkpO2Vsc2UgZS5wdXNoKHQub2JqSWQpO3JldHVybnt0eXBlOmEsaWRzOmUscG9saWN5OmkuZ2V0KCJQIilpbnN0YW5jZW9mIE5hbWU/aS5nZXQoIlAiKS5uYW1lOm51bGwsZXhwcmVzc2lvbjpudWxsfX1pZih0IGluc3RhbmNlb2YgUmVmKXJldHVybnt0eXBlOmEsaWQ6dC50b1N0cmluZygpfX1yZXR1cm4gbnVsbH1nZXRPcGVyYXRvckxpc3Qoe3N0cmVhbTplLHRhc2s6dCxyZXNvdXJjZXM6aSxvcGVyYXRvckxpc3Q6YSxpbml0aWFsU3RhdGU6cj1udWxsLGZhbGxiYWNrRm9udERpY3Q6cz1udWxsfSl7aXx8PURpY3QuZW1wdHk7cnx8PW5ldyBFdmFsU3RhdGU7aWYoIWEpdGhyb3cgbmV3IEVycm9yKCdnZXRPcGVyYXRvckxpc3Q6IG1pc3NpbmcgIm9wZXJhdG9yTGlzdCIgcGFyYW1ldGVyJyk7Y29uc3Qgbj10aGlzLG89dGhpcy54cmVmO2xldCBnPSExO2NvbnN0IGM9bmV3IExvY2FsSW1hZ2VDYWNoZSxDPW5ldyBMb2NhbENvbG9yU3BhY2VDYWNoZSxoPW5ldyBMb2NhbEdTdGF0ZUNhY2hlLGw9bmV3IExvY2FsVGlsaW5nUGF0dGVybkNhY2hlLFE9bmV3IE1hcCxFPWkuZ2V0KCJYT2JqZWN0Iil8fERpY3QuZW1wdHksdT1pLmdldCgiUGF0dGVybiIpfHxEaWN0LmVtcHR5LGQ9bmV3IFN0YXRlTWFuYWdlcihyKSxmPW5ldyBFdmFsdWF0b3JQcmVwcm9jZXNzb3IoZSxvLGQpLHA9bmV3IFRpbWVTbG90TWFuYWdlcjtmdW5jdGlvbiBjbG9zZVBlbmRpbmdSZXN0b3JlT1BTKGUpe2ZvcihsZXQgZT0wLHQ9Zi5zYXZlZFN0YXRlc0RlcHRoO2U8dDtlKyspYS5hZGRPcChMQSxbXSl9cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbiBwcm9taXNlQm9keShlLHIpe2NvbnN0IG5leHQ9ZnVuY3Rpb24odCl7UHJvbWlzZS5hbGwoW3QsYS5yZWFkeV0pLnRoZW4oKGZ1bmN0aW9uKCl7dHJ5e3Byb21pc2VCb2R5KGUscil9Y2F0Y2goZSl7cihlKX19KSxyKX07dC5lbnN1cmVOb3RUZXJtaW5hdGVkKCk7cC5yZXNldCgpO2NvbnN0IG09e307bGV0IHksdyxiLEQsUyxrO2Zvcig7ISh5PXAuY2hlY2soKSk7KXttLmFyZ3M9bnVsbDtpZighZi5yZWFkKG0pKWJyZWFrO2xldCBlPW0uYXJncyxyPW0uZm47c3dpdGNoKDB8cil7Y2FzZSBIZTprPWVbMF1pbnN0YW5jZW9mIE5hbWU7Uz1lWzBdLm5hbWU7aWYoayl7Y29uc3QgdD1jLmdldEJ5TmFtZShTKTtpZih0KXthZGRMb2NhbGx5Q2FjaGVkSW1hZ2VPcHMoYSx0KTtlPW51bGw7Y29udGludWV9fW5leHQobmV3IFByb21pc2UoKGZ1bmN0aW9uKGUscil7aWYoIWspdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJYT2JqZWN0IG11c3QgYmUgcmVmZXJyZWQgdG8gYnkgbmFtZS4iKTtsZXQgcz1FLmdldFJhdyhTKTtpZihzIGluc3RhbmNlb2YgUmVmKXtjb25zdCB0PWMuZ2V0QnlSZWYocyl8fG4uX3JlZ2lvbmFsSW1hZ2VDYWNoZS5nZXRCeVJlZihzKTtpZih0KXthZGRMb2NhbGx5Q2FjaGVkSW1hZ2VPcHMoYSx0KTtlKCk7cmV0dXJufWNvbnN0IGk9bi5nbG9iYWxJbWFnZUNhY2hlLmdldERhdGEocyxuLnBhZ2VJbmRleCk7aWYoaSl7YS5hZGREZXBlbmRlbmN5KGkub2JqSWQpO2EuYWRkSW1hZ2VPcHMoaS5mbixpLmFyZ3MsaS5vcHRpb25hbENvbnRlbnQpO2UoKTtyZXR1cm59cz1vLmZldGNoKHMpfWlmKCEocyBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pKXRocm93IG5ldyBGb3JtYXRFcnJvcigiWE9iamVjdCBzaG91bGQgYmUgYSBzdHJlYW0iKTtjb25zdCBnPXMuZGljdC5nZXQoIlN1YnR5cGUiKTtpZighKGcgaW5zdGFuY2VvZiBOYW1lKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlhPYmplY3Qgc2hvdWxkIGhhdmUgYSBOYW1lIHN1YnR5cGUiKTtpZigiRm9ybSIhPT1nLm5hbWUpaWYoIkltYWdlIiE9PWcubmFtZSl7aWYoIlBTIiE9PWcubmFtZSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYFVuaGFuZGxlZCBYT2JqZWN0IHN1YnR5cGUgJHtnLm5hbWV9YCk7aW5mbygiSWdub3JlZCBYT2JqZWN0IHN1YnR5cGUgUFMiKTtlKCl9ZWxzZSBuLmJ1aWxkUGFpbnRJbWFnZVhPYmplY3Qoe3Jlc291cmNlczppLGltYWdlOnMsb3BlcmF0b3JMaXN0OmEsY2FjaGVLZXk6Uyxsb2NhbEltYWdlQ2FjaGU6Yyxsb2NhbENvbG9yU3BhY2VDYWNoZTpDfSkudGhlbihlLHIpO2Vsc2V7ZC5zYXZlKCk7bi5idWlsZEZvcm1YT2JqZWN0KGkscyxudWxsLGEsdCxkLnN0YXRlLmNsb25lKCksQykudGhlbigoZnVuY3Rpb24oKXtkLnJlc3RvcmUoKTtlKCl9KSxyKX19KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe2lmKCEoZSBpbnN0YW5jZW9mIEFib3J0RXhjZXB0aW9uKSl7aWYoIW4ub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTt3YXJuKGBnZXRPcGVyYXRvckxpc3QgLSBpZ25vcmluZyBYT2JqZWN0OiAiJHtlfSIuYCl9fSkpKTtyZXR1cm47Y2FzZSBvZTp2YXIgUj1lWzFdO25leHQobi5oYW5kbGVTZXRGb250KGksZSxudWxsLGEsdCxkLnN0YXRlLHMpLnRoZW4oKGZ1bmN0aW9uKGUpe2EuYWRkRGVwZW5kZW5jeShlKTthLmFkZE9wKG9lLFtlLFJdKX0pKSk7cmV0dXJuO2Nhc2UgdGU6Zz0hMDticmVhaztjYXNlIGllOmc9ITE7YnJlYWs7Y2FzZSBMZTp2YXIgTj1lWzBdLmNhY2hlS2V5O2lmKE4pe2NvbnN0IHQ9Yy5nZXRCeU5hbWUoTik7aWYodCl7YWRkTG9jYWxseUNhY2hlZEltYWdlT3BzKGEsdCk7ZT1udWxsO2NvbnRpbnVlfX1uZXh0KG4uYnVpbGRQYWludEltYWdlWE9iamVjdCh7cmVzb3VyY2VzOmksaW1hZ2U6ZVswXSxpc0lubGluZTohMCxvcGVyYXRvckxpc3Q6YSxjYWNoZUtleTpOLGxvY2FsSW1hZ2VDYWNoZTpjLGxvY2FsQ29sb3JTcGFjZUNhY2hlOkN9KSk7cmV0dXJuO2Nhc2UgQmU6aWYoIWQuc3RhdGUuZm9udCl7bi5lbnN1cmVTdGF0ZUZvbnQoZC5zdGF0ZSk7Y29udGludWV9ZVswXT1uLmhhbmRsZVRleHQoZVswXSxkLnN0YXRlKTticmVhaztjYXNlIFFlOmlmKCFkLnN0YXRlLmZvbnQpe24uZW5zdXJlU3RhdGVGb250KGQuc3RhdGUpO2NvbnRpbnVlfXZhciBHPVtdLHg9ZC5zdGF0ZTtmb3IoY29uc3QgdCBvZiBlWzBdKSJzdHJpbmciPT10eXBlb2YgdD9HLnB1c2goLi4ubi5oYW5kbGVUZXh0KHQseCkpOiJudW1iZXIiPT10eXBlb2YgdCYmRy5wdXNoKHQpO2VbMF09RztyPUJlO2JyZWFrO2Nhc2UgRWU6aWYoIWQuc3RhdGUuZm9udCl7bi5lbnN1cmVTdGF0ZUZvbnQoZC5zdGF0ZSk7Y29udGludWV9YS5hZGRPcChsZSk7ZVswXT1uLmhhbmRsZVRleHQoZVswXSxkLnN0YXRlKTtyPUJlO2JyZWFrO2Nhc2UgdWU6aWYoIWQuc3RhdGUuZm9udCl7bi5lbnN1cmVTdGF0ZUZvbnQoZC5zdGF0ZSk7Y29udGludWV9YS5hZGRPcChsZSk7YS5hZGRPcChyZSxbZS5zaGlmdCgpXSk7YS5hZGRPcChhZSxbZS5zaGlmdCgpXSk7ZVswXT1uLmhhbmRsZVRleHQoZVswXSxkLnN0YXRlKTtyPUJlO2JyZWFrO2Nhc2UgZ2U6ZC5zdGF0ZS50ZXh0UmVuZGVyaW5nTW9kZT1lWzBdO2JyZWFrO2Nhc2UgbWU6e2NvbnN0IHQ9Q29sb3JTcGFjZS5nZXRDYWNoZWQoZVswXSxvLEMpO2lmKHQpe2Quc3RhdGUuZmlsbENvbG9yU3BhY2U9dDtjb250aW51ZX1uZXh0KG4ucGFyc2VDb2xvclNwYWNlKHtjczplWzBdLHJlc291cmNlczppLGxvY2FsQ29sb3JTcGFjZUNhY2hlOkN9KS50aGVuKChmdW5jdGlvbihlKXtkLnN0YXRlLmZpbGxDb2xvclNwYWNlPWV8fENvbG9yU3BhY2Uuc2luZ2xldG9ucy5ncmF5fSkpKTtyZXR1cm59Y2FzZSBwZTp7Y29uc3QgdD1Db2xvclNwYWNlLmdldENhY2hlZChlWzBdLG8sQyk7aWYodCl7ZC5zdGF0ZS5zdHJva2VDb2xvclNwYWNlPXQ7Y29udGludWV9bmV4dChuLnBhcnNlQ29sb3JTcGFjZSh7Y3M6ZVswXSxyZXNvdXJjZXM6aSxsb2NhbENvbG9yU3BhY2VDYWNoZTpDfSkudGhlbigoZnVuY3Rpb24oZSl7ZC5zdGF0ZS5zdHJva2VDb2xvclNwYWNlPWV8fENvbG9yU3BhY2Uuc2luZ2xldG9ucy5ncmF5fSkpKTtyZXR1cm59Y2FzZSBiZTpEPWQuc3RhdGUuZmlsbENvbG9yU3BhY2U7ZT1ELmdldFJnYihlLDApO3I9UmU7YnJlYWs7Y2FzZSB5ZTpEPWQuc3RhdGUuc3Ryb2tlQ29sb3JTcGFjZTtlPUQuZ2V0UmdiKGUsMCk7cj1rZTticmVhaztjYXNlIFNlOmQuc3RhdGUuZmlsbENvbG9yU3BhY2U9Q29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXk7ZT1Db2xvclNwYWNlLnNpbmdsZXRvbnMuZ3JheS5nZXRSZ2IoZSwwKTtyPVJlO2JyZWFrO2Nhc2UgRmU6ZC5zdGF0ZS5zdHJva2VDb2xvclNwYWNlPUNvbG9yU3BhY2Uuc2luZ2xldG9ucy5ncmF5O2U9Q29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXkuZ2V0UmdiKGUsMCk7cj1rZTticmVhaztjYXNlIEdlOmQuc3RhdGUuZmlsbENvbG9yU3BhY2U9Q29sb3JTcGFjZS5zaW5nbGV0b25zLmNteWs7ZT1Db2xvclNwYWNlLnNpbmdsZXRvbnMuY215ay5nZXRSZ2IoZSwwKTtyPVJlO2JyZWFrO2Nhc2UgTmU6ZC5zdGF0ZS5zdHJva2VDb2xvclNwYWNlPUNvbG9yU3BhY2Uuc2luZ2xldG9ucy5jbXlrO2U9Q29sb3JTcGFjZS5zaW5nbGV0b25zLmNteWsuZ2V0UmdiKGUsMCk7cj1rZTticmVhaztjYXNlIFJlOmQuc3RhdGUuZmlsbENvbG9yU3BhY2U9Q29sb3JTcGFjZS5zaW5nbGV0b25zLnJnYjtlPUNvbG9yU3BhY2Uuc2luZ2xldG9ucy5yZ2IuZ2V0UmdiKGUsMCk7YnJlYWs7Y2FzZSBrZTpkLnN0YXRlLnN0cm9rZUNvbG9yU3BhY2U9Q29sb3JTcGFjZS5zaW5nbGV0b25zLnJnYjtlPUNvbG9yU3BhY2Uuc2luZ2xldG9ucy5yZ2IuZ2V0UmdiKGUsMCk7YnJlYWs7Y2FzZSBEZTpEPWQuc3RhdGUucGF0dGVybkZpbGxDb2xvclNwYWNlO2lmKCFEKXtlPVtdO3I9bnQ7YnJlYWt9aWYoIlBhdHRlcm4iPT09RC5uYW1lKXtuZXh0KG4uaGFuZGxlQ29sb3JOKGEsRGUsZSxELHUsaSx0LEMsbCxRKSk7cmV0dXJufWU9RC5nZXRSZ2IoZSwwKTtyPVJlO2JyZWFrO2Nhc2Ugd2U6RD1kLnN0YXRlLnBhdHRlcm5TdHJva2VDb2xvclNwYWNlO2lmKCFEKXtlPVtdO3I9c3Q7YnJlYWt9aWYoIlBhdHRlcm4iPT09RC5uYW1lKXtuZXh0KG4uaGFuZGxlQ29sb3JOKGEsd2UsZSxELHUsaSx0LEMsbCxRKSk7cmV0dXJufWU9RC5nZXRSZ2IoZSwwKTtyPWtlO2JyZWFrO2Nhc2UgeGU6bGV0IGY7dHJ5e2NvbnN0IHQ9aS5nZXQoIlNoYWRpbmciKTtpZighdCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIk5vIHNoYWRpbmcgcmVzb3VyY2UgZm91bmQiKTtmPXQuZ2V0KGVbMF0ubmFtZSk7aWYoIWYpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJObyBzaGFkaW5nIG9iamVjdCBmb3VuZCIpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBBYm9ydEV4Y2VwdGlvbiljb250aW51ZTtpZihuLm9wdGlvbnMuaWdub3JlRXJyb3JzKXt3YXJuKGBnZXRPcGVyYXRvckxpc3QgLSBpZ25vcmluZyBTaGFkaW5nOiAiJHtlfSIuYCk7Y29udGludWV9dGhyb3cgZX1jb25zdCBwPW4ucGFyc2VTaGFkaW5nKHtzaGFkaW5nOmYscmVzb3VyY2VzOmksbG9jYWxDb2xvclNwYWNlQ2FjaGU6Qyxsb2NhbFNoYWRpbmdQYXR0ZXJuQ2FjaGU6UX0pO2lmKCFwKWNvbnRpbnVlO2U9W3BdO3I9eGU7YnJlYWs7Y2FzZSBVQTprPWVbMF1pbnN0YW5jZW9mIE5hbWU7Uz1lWzBdLm5hbWU7aWYoayl7Y29uc3QgdD1oLmdldEJ5TmFtZShTKTtpZih0KXt0Lmxlbmd0aD4wJiZhLmFkZE9wKFVBLFt0XSk7ZT1udWxsO2NvbnRpbnVlfX1uZXh0KG5ldyBQcm9taXNlKChmdW5jdGlvbihlLHIpe2lmKCFrKXRocm93IG5ldyBGb3JtYXRFcnJvcigiR1N0YXRlIG11c3QgYmUgcmVmZXJyZWQgdG8gYnkgbmFtZS4iKTtjb25zdCBzPWkuZ2V0KCJFeHRHU3RhdGUiKTtpZighKHMgaW5zdGFuY2VvZiBEaWN0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkV4dEdTdGF0ZSBzaG91bGQgYmUgYSBkaWN0aW9uYXJ5LiIpO2NvbnN0IG89cy5nZXQoUyk7aWYoIShvIGluc3RhbmNlb2YgRGljdCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJHU3RhdGUgc2hvdWxkIGJlIGEgZGljdGlvbmFyeS4iKTtuLnNldEdTdGF0ZSh7cmVzb3VyY2VzOmksZ1N0YXRlOm8sb3BlcmF0b3JMaXN0OmEsY2FjaGVLZXk6Uyx0YXNrOnQsc3RhdGVNYW5hZ2VyOmQsbG9jYWxHU3RhdGVDYWNoZTpoLGxvY2FsQ29sb3JTcGFjZUNhY2hlOkN9KS50aGVuKGUscil9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe2lmKCEoZSBpbnN0YW5jZW9mIEFib3J0RXhjZXB0aW9uKSl7aWYoIW4ub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTt3YXJuKGBnZXRPcGVyYXRvckxpc3QgLSBpZ25vcmluZyBFeHRHU3RhdGU6ICIke2V9Ii5gKX19KSkpO3JldHVybjtjYXNlIEpBOmNhc2UgdkE6Y2FzZSBZQTpjYXNlIFRBOmNhc2UgS0E6Y2FzZSBxQTpjYXNlIE9BOm4uYnVpbGRQYXRoKGEscixlLGcpO2NvbnRpbnVlO2Nhc2UgSmU6Y2FzZSB2ZTpjYXNlIHFlOmNhc2UgT2U6Y29udGludWU7Y2FzZSBUZTppZighKGVbMF1pbnN0YW5jZW9mIE5hbWUpKXt3YXJuKGBFeHBlY3RlZCBuYW1lIGZvciBiZWdpbk1hcmtlZENvbnRlbnRQcm9wcyBhcmcwPSR7ZVswXX1gKTthLmFkZE9wKFRlLFsiT0MiLG51bGxdKTtjb250aW51ZX1pZigiT0MiPT09ZVswXS5uYW1lKXtuZXh0KG4ucGFyc2VNYXJrZWRDb250ZW50UHJvcHMoZVsxXSxpKS50aGVuKChlPT57YS5hZGRPcChUZSxbIk9DIixlXSl9KSkuY2F0Y2goKGU9PntpZighKGUgaW5zdGFuY2VvZiBBYm9ydEV4Y2VwdGlvbikpe2lmKCFuLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IGU7d2FybihgZ2V0T3BlcmF0b3JMaXN0IC0gaWdub3JpbmcgYmVnaW5NYXJrZWRDb250ZW50UHJvcHM6ICIke2V9Ii5gKTthLmFkZE9wKFRlLFsiT0MiLG51bGxdKX19KSkpO3JldHVybn1lPVtlWzBdLm5hbWUsZVsxXWluc3RhbmNlb2YgRGljdD9lWzFdLmdldCgiTUNJRCIpOm51bGxdO2JyZWFrO2RlZmF1bHQ6aWYobnVsbCE9PWUpe2Zvcih3PTAsYj1lLmxlbmd0aDt3PGImJiEoZVt3XWluc3RhbmNlb2YgRGljdCk7dysrKTtpZih3PGIpe3dhcm4oImdldE9wZXJhdG9yTGlzdCAtIGlnbm9yaW5nIG9wZXJhdG9yOiAiK3IpO2NvbnRpbnVlfX19YS5hZGRPcChyLGUpfWlmKHkpbmV4dChMcik7ZWxzZXtjbG9zZVBlbmRpbmdSZXN0b3JlT1BTKCk7ZSgpfX0pKS5jYXRjaCgoZT0+e2lmKCEoZSBpbnN0YW5jZW9mIEFib3J0RXhjZXB0aW9uKSl7aWYoIXRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTt3YXJuKGBnZXRPcGVyYXRvckxpc3QgLSBpZ25vcmluZyBlcnJvcnMgZHVyaW5nICIke3QubmFtZX0iIHRhc2s6ICIke2V9Ii5gKTtjbG9zZVBlbmRpbmdSZXN0b3JlT1BTKCl9fSkpfWdldFRleHRDb250ZW50KHtzdHJlYW06ZSx0YXNrOnQscmVzb3VyY2VzOmksc3RhdGVNYW5hZ2VyOnM9bnVsbCxpbmNsdWRlTWFya2VkQ29udGVudDpuPSExLHNpbms6byxzZWVuU3R5bGVzOmc9bmV3IFNldCx2aWV3Qm94OmMsbGFuZzpDPW51bGwsbWFya2VkQ29udGVudERhdGE6aD1udWxsLGRpc2FibGVOb3JtYWxpemF0aW9uOmw9ITEsa2VlcFdoaXRlU3BhY2U6UT0hMX0pe2l8fD1EaWN0LmVtcHR5O3N8fD1uZXcgU3RhdGVNYW5hZ2VyKG5ldyBUZXh0U3RhdGUpO24mJihofHw9e2xldmVsOjB9KTtjb25zdCBFPXtpdGVtczpbXSxzdHlsZXM6T2JqZWN0LmNyZWF0ZShudWxsKSxsYW5nOkN9LHU9e2luaXRpYWxpemVkOiExLHN0cjpbXSx0b3RhbFdpZHRoOjAsdG90YWxIZWlnaHQ6MCx3aWR0aDowLGhlaWdodDowLHZlcnRpY2FsOiExLHByZXZUcmFuc2Zvcm06bnVsbCx0ZXh0QWR2YW5jZVNjYWxlOjAsc3BhY2VJbkZsb3dNaW46MCxzcGFjZUluRmxvd01heDowLHRyYWNraW5nU3BhY2VNaW46MS8wLG5lZ2F0aXZlU3BhY2VNYXg6LTEvMCxub3RBU3BhY2U6LTEvMCx0cmFuc2Zvcm06bnVsbCxmb250TmFtZTpudWxsLGhhc0VPTDohMX0sZD1bIiAiLCIgIl07bGV0IGY9MDtmdW5jdGlvbiBzYXZlTGFzdENoYXIoZSl7Y29uc3QgdD0oZisxKSUyLGk9IiAiIT09ZFtmXSYmIiAiPT09ZFt0XTtkW2ZdPWU7Zj10O3JldHVybiFRJiZpfWZ1bmN0aW9uIHNob3VsZEFkZFdoaXRlcHNhY2UoKXtyZXR1cm4hUSYmIiAiIT09ZFtmXSYmIiAiPT09ZFsoZisxKSUyXX1mdW5jdGlvbiByZXNldExhc3RDaGFycygpe2RbMF09ZFsxXT0iICI7Zj0wfWNvbnN0IHA9dGhpcyxtPXRoaXMueHJlZix5PVtdO2xldCB3PW51bGw7Y29uc3QgYj1uZXcgTG9jYWxJbWFnZUNhY2hlLEQ9bmV3IExvY2FsR1N0YXRlQ2FjaGUsUz1uZXcgRXZhbHVhdG9yUHJlcHJvY2Vzc29yKGUsbSxzKTtsZXQgaztmdW5jdGlvbiBwdXNoV2hpdGVzcGFjZSh7d2lkdGg6ZT0wLGhlaWdodDp0PTAsdHJhbnNmb3JtOmk9dS5wcmV2VHJhbnNmb3JtLGZvbnROYW1lOmE9dS5mb250TmFtZX0pe0UuaXRlbXMucHVzaCh7c3RyOiIgIixkaXI6Imx0ciIsd2lkdGg6ZSxoZWlnaHQ6dCx0cmFuc2Zvcm06aSxmb250TmFtZTphLGhhc0VPTDohMX0pfWZ1bmN0aW9uIGdldEN1cnJlbnRUZXh0VHJhbnNmb3JtKCl7Y29uc3QgZT1rLmZvbnQsdD1bay5mb250U2l6ZSprLnRleHRIU2NhbGUsMCwwLGsuZm9udFNpemUsMCxrLnRleHRSaXNlXTtpZihlLmlzVHlwZTNGb250JiYoay5mb250U2l6ZTw9MXx8ZS5pc0NoYXJCQm94KSYmIWlzQXJyYXlFcXVhbChrLmZvbnRNYXRyaXgscikpe2NvbnN0IGk9ZS5iYm94WzNdLWUuYmJveFsxXTtpPjAmJih0WzNdKj1pKmsuZm9udE1hdHJpeFszXSl9cmV0dXJuIFV0aWwudHJhbnNmb3JtKGsuY3RtLFV0aWwudHJhbnNmb3JtKGsudGV4dE1hdHJpeCx0KSl9ZnVuY3Rpb24gZW5zdXJlVGV4dENvbnRlbnRJdGVtKCl7aWYodS5pbml0aWFsaXplZClyZXR1cm4gdTtjb25zdHtmb250OmUsbG9hZGVkTmFtZTp0fT1rO2lmKCFnLmhhcyh0KSl7Zy5hZGQodCk7RS5zdHlsZXNbdF09e2ZvbnRGYW1pbHk6ZS5mYWxsYmFja05hbWUsYXNjZW50OmUuYXNjZW50LGRlc2NlbnQ6ZS5kZXNjZW50LHZlcnRpY2FsOmUudmVydGljYWx9O2lmKHAub3B0aW9ucy5mb250RXh0cmFQcm9wZXJ0aWVzJiZlLnN5c3RlbUZvbnRJbmZvKXtjb25zdCBpPUUuc3R5bGVzW3RdO2kuZm9udFN1YnN0aXR1dGlvbj1lLnN5c3RlbUZvbnRJbmZvLmNzcztpLmZvbnRTdWJzdGl0dXRpb25Mb2FkZWROYW1lPWUuc3lzdGVtRm9udEluZm8ubG9hZGVkTmFtZX19dS5mb250TmFtZT10O2NvbnN0IGk9dS50cmFuc2Zvcm09Z2V0Q3VycmVudFRleHRUcmFuc2Zvcm0oKTtpZihlLnZlcnRpY2FsKXt1LndpZHRoPXUudG90YWxXaWR0aD1NYXRoLmh5cG90KGlbMF0saVsxXSk7dS5oZWlnaHQ9dS50b3RhbEhlaWdodD0wO3UudmVydGljYWw9ITB9ZWxzZXt1LndpZHRoPXUudG90YWxXaWR0aD0wO3UuaGVpZ2h0PXUudG90YWxIZWlnaHQ9TWF0aC5oeXBvdChpWzJdLGlbM10pO3UudmVydGljYWw9ITF9Y29uc3QgYT1NYXRoLmh5cG90KGsudGV4dExpbmVNYXRyaXhbMF0say50ZXh0TGluZU1hdHJpeFsxXSkscj1NYXRoLmh5cG90KGsuY3RtWzBdLGsuY3RtWzFdKTt1LnRleHRBZHZhbmNlU2NhbGU9ciphO2NvbnN0e2ZvbnRTaXplOnN9PWs7dS50cmFja2luZ1NwYWNlTWluPS4xMDIqczt1Lm5vdEFTcGFjZT0uMDMqczt1Lm5lZ2F0aXZlU3BhY2VNYXg9LS4yKnM7dS5zcGFjZUluRmxvd01pbj0uMTAyKnM7dS5zcGFjZUluRmxvd01heD0uNipzO3UuaGFzRU9MPSExO3UuaW5pdGlhbGl6ZWQ9ITA7cmV0dXJuIHV9ZnVuY3Rpb24gdXBkYXRlQWR2YW5jZVNjYWxlKCl7aWYoIXUuaW5pdGlhbGl6ZWQpcmV0dXJuO2NvbnN0IGU9TWF0aC5oeXBvdChrLnRleHRMaW5lTWF0cml4WzBdLGsudGV4dExpbmVNYXRyaXhbMV0pLHQ9TWF0aC5oeXBvdChrLmN0bVswXSxrLmN0bVsxXSkqZTtpZih0IT09dS50ZXh0QWR2YW5jZVNjYWxlKXtpZih1LnZlcnRpY2FsKXt1LnRvdGFsSGVpZ2h0Kz11LmhlaWdodCp1LnRleHRBZHZhbmNlU2NhbGU7dS5oZWlnaHQ9MH1lbHNle3UudG90YWxXaWR0aCs9dS53aWR0aCp1LnRleHRBZHZhbmNlU2NhbGU7dS53aWR0aD0wfXUudGV4dEFkdmFuY2VTY2FsZT10fX1mdW5jdGlvbiBydW5CaWRpVHJhbnNmb3JtKGUpe2xldCB0PWUuc3RyLmpvaW4oIiIpO2x8fCh0PWZ1bmN0aW9uIG5vcm1hbGl6ZVVuaWNvZGUoZSl7aWYoIWx0KXtsdD0vKFtcdTAwYTBcdTAwYjVcdTAzN2VcdTBlYjNcdTIwMDAtXHUyMDBhXHUyMDJmXHUyMTI2XHVmYjAwLVx1ZmIwNFx1ZmIwNlx1ZmIyMC1cdWZiMzZcdWZiMzgtXHVmYjNjXHVmYjNlXHVmYjQwLVx1ZmI0MVx1ZmI0My1cdWZiNDRcdWZiNDYtXHVmYmExXHVmYmE0LVx1ZmJhOVx1ZmJhZS1cdWZiYjFcdWZiZDMtXHVmYmRjXHVmYmRlLVx1ZmJlN1x1ZmJlYS1cdWZiZjhcdWZiZmMtXHVmYmZkXHVmYzAwLVx1ZmM1ZFx1ZmM2NC1cdWZjZjFcdWZjZjUtXHVmZDNkXHVmZDg4XHVmZGY0XHVmZGZhLVx1ZmRmYlx1ZmU3MVx1ZmU3N1x1ZmU3OVx1ZmU3Ylx1ZmU3ZF0rKXwoXHVmYjA1KykvZ3U7QnQ9bmV3IE1hcChbWyLvrIUiLCLFv3QiXV0pfXJldHVybiBlLnJlcGxhY2VBbGwobHQsKChlLHQsaSk9PnQ/dC5ub3JtYWxpemUoIk5GS0MiKTpCdC5nZXQoaSkpKX0odCkpO2NvbnN0IGk9YmlkaSh0LC0xLGUudmVydGljYWwpO3JldHVybntzdHI6aS5zdHIsZGlyOmkuZGlyLHdpZHRoOk1hdGguYWJzKGUudG90YWxXaWR0aCksaGVpZ2h0Ok1hdGguYWJzKGUudG90YWxIZWlnaHQpLHRyYW5zZm9ybTplLnRyYW5zZm9ybSxmb250TmFtZTplLmZvbnROYW1lLGhhc0VPTDplLmhhc0VPTH19YXN5bmMgZnVuY3Rpb24gaGFuZGxlU2V0Rm9udChlLGEpe2NvbnN0IHM9YXdhaXQgcC5sb2FkRm9udChlLGEsaSk7aWYocy5mb250LmlzVHlwZTNGb250KXRyeXthd2FpdCBzLmxvYWRUeXBlM0RhdGEocCxpLHQpfWNhdGNoe31rLmxvYWRlZE5hbWU9cy5sb2FkZWROYW1lO2suZm9udD1zLmZvbnQ7ay5mb250TWF0cml4PXMuZm9udC5mb250TWF0cml4fHxyfWZ1bmN0aW9uIGFwcGx5SW52ZXJzZVJvdGF0aW9uKGUsdCxpKXtjb25zdCBhPU1hdGguaHlwb3QoaVswXSxpWzFdKTtyZXR1cm5bKGlbMF0qZStpWzFdKnQpL2EsKGlbMl0qZStpWzNdKnQpL2FdfWZ1bmN0aW9uIGNvbXBhcmVXaXRoTGFzdFBvc2l0aW9uKGUpe2NvbnN0IHQ9Z2V0Q3VycmVudFRleHRUcmFuc2Zvcm0oKTtsZXQgaT10WzRdLGE9dFs1XTtpZihrLmZvbnQ/LnZlcnRpY2FsKXtpZihpPGNbMF18fGk+Y1syXXx8YStlPGNbMV18fGE+Y1szXSlyZXR1cm4hMX1lbHNlIGlmKGkrZTxjWzBdfHxpPmNbMl18fGE8Y1sxXXx8YT5jWzNdKXJldHVybiExO2lmKCFrLmZvbnR8fCF1LnByZXZUcmFuc2Zvcm0pcmV0dXJuITA7bGV0IHI9dS5wcmV2VHJhbnNmb3JtWzRdLHM9dS5wcmV2VHJhbnNmb3JtWzVdO2lmKHI9PT1pJiZzPT09YSlyZXR1cm4hMDtsZXQgbj0tMTt0WzBdJiYwPT09dFsxXSYmMD09PXRbMl0/bj10WzBdPjA/MDoxODA6dFsxXSYmMD09PXRbMF0mJjA9PT10WzNdJiYobj10WzFdPjA/OTA6MjcwKTtzd2l0Y2gobil7Y2FzZSAwOmJyZWFrO2Nhc2UgOTA6W2ksYV09W2EsaV07W3Isc109W3Mscl07YnJlYWs7Y2FzZSAxODA6W2ksYSxyLHNdPVstaSwtYSwtciwtc107YnJlYWs7Y2FzZSAyNzA6W2ksYV09Wy1hLC1pXTtbcixzXT1bLXMsLXJdO2JyZWFrO2RlZmF1bHQ6W2ksYV09YXBwbHlJbnZlcnNlUm90YXRpb24oaSxhLHQpO1tyLHNdPWFwcGx5SW52ZXJzZVJvdGF0aW9uKHIscyx1LnByZXZUcmFuc2Zvcm0pfWlmKGsuZm9udC52ZXJ0aWNhbCl7Y29uc3QgZT0ocy1hKS91LnRleHRBZHZhbmNlU2NhbGUsdD1pLXIsbj1NYXRoLnNpZ24odS5oZWlnaHQpO2lmKGU8bip1Lm5lZ2F0aXZlU3BhY2VNYXgpe2lmKE1hdGguYWJzKHQpPi41KnUud2lkdGgpe2FwcGVuZEVPTCgpO3JldHVybiEwfXJlc2V0TGFzdENoYXJzKCk7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtyZXR1cm4hMH1pZihNYXRoLmFicyh0KT51LndpZHRoKXthcHBlbmRFT0woKTtyZXR1cm4hMH1lPD1uKnUubm90QVNwYWNlJiZyZXNldExhc3RDaGFycygpO2lmKGU8PW4qdS50cmFja2luZ1NwYWNlTWluKWlmKHNob3VsZEFkZFdoaXRlcHNhY2UoKSl7cmVzZXRMYXN0Q2hhcnMoKTtmbHVzaFRleHRDb250ZW50SXRlbSgpO3B1c2hXaGl0ZXNwYWNlKHtoZWlnaHQ6TWF0aC5hYnMoZSl9KX1lbHNlIHUuaGVpZ2h0Kz1lO2Vsc2UgaWYoIWFkZEZha2VTcGFjZXMoZSx1LnByZXZUcmFuc2Zvcm0sbikpaWYoMD09PXUuc3RyLmxlbmd0aCl7cmVzZXRMYXN0Q2hhcnMoKTtwdXNoV2hpdGVzcGFjZSh7aGVpZ2h0Ok1hdGguYWJzKGUpfSl9ZWxzZSB1LmhlaWdodCs9ZTtNYXRoLmFicyh0KT4uMjUqdS53aWR0aCYmZmx1c2hUZXh0Q29udGVudEl0ZW0oKTtyZXR1cm4hMH1jb25zdCBvPShpLXIpL3UudGV4dEFkdmFuY2VTY2FsZSxnPWEtcyxDPU1hdGguc2lnbih1LndpZHRoKTtpZihvPEMqdS5uZWdhdGl2ZVNwYWNlTWF4KXtpZihNYXRoLmFicyhnKT4uNSp1LmhlaWdodCl7YXBwZW5kRU9MKCk7cmV0dXJuITB9cmVzZXRMYXN0Q2hhcnMoKTtmbHVzaFRleHRDb250ZW50SXRlbSgpO3JldHVybiEwfWlmKE1hdGguYWJzKGcpPnUuaGVpZ2h0KXthcHBlbmRFT0woKTtyZXR1cm4hMH1vPD1DKnUubm90QVNwYWNlJiZyZXNldExhc3RDaGFycygpO2lmKG88PUMqdS50cmFja2luZ1NwYWNlTWluKWlmKHNob3VsZEFkZFdoaXRlcHNhY2UoKSl7cmVzZXRMYXN0Q2hhcnMoKTtmbHVzaFRleHRDb250ZW50SXRlbSgpO3B1c2hXaGl0ZXNwYWNlKHt3aWR0aDpNYXRoLmFicyhvKX0pfWVsc2UgdS53aWR0aCs9bztlbHNlIGlmKCFhZGRGYWtlU3BhY2VzKG8sdS5wcmV2VHJhbnNmb3JtLEMpKWlmKDA9PT11LnN0ci5sZW5ndGgpe3Jlc2V0TGFzdENoYXJzKCk7cHVzaFdoaXRlc3BhY2Uoe3dpZHRoOk1hdGguYWJzKG8pfSl9ZWxzZSB1LndpZHRoKz1vO01hdGguYWJzKGcpPi4yNSp1LmhlaWdodCYmZmx1c2hUZXh0Q29udGVudEl0ZW0oKTtyZXR1cm4hMH1mdW5jdGlvbiBidWlsZFRleHRDb250ZW50SXRlbSh7Y2hhcnM6ZSxleHRyYVNwYWNpbmc6dH0pe2NvbnN0IGk9ay5mb250O2lmKCFlKXtjb25zdCBlPWsuY2hhclNwYWNpbmcrdDtlJiYoaS52ZXJ0aWNhbD9rLnRyYW5zbGF0ZVRleHRNYXRyaXgoMCwtZSk6ay50cmFuc2xhdGVUZXh0TWF0cml4KGUqay50ZXh0SFNjYWxlLDApKTtRJiZjb21wYXJlV2l0aExhc3RQb3NpdGlvbigwKTtyZXR1cm59Y29uc3QgYT1pLmNoYXJzVG9HbHlwaHMoZSkscj1rLmZvbnRNYXRyaXhbMF0qay5mb250U2l6ZTtmb3IobGV0IGU9MCxzPWEubGVuZ3RoO2U8cztlKyspe2NvbnN0IG49YVtlXSx7Y2F0ZWdvcnk6b309bjtpZihvLmlzSW52aXNpYmxlRm9ybWF0TWFyayljb250aW51ZTtsZXQgZz1rLmNoYXJTcGFjaW5nKyhlKzE9PT1zP3Q6MCksYz1uLndpZHRoO2kudmVydGljYWwmJihjPW4udm1ldHJpYz9uLnZtZXRyaWNbMF06LWMpO2xldCBDPWMqcjtpZighUSYmby5pc1doaXRlc3BhY2Upe2lmKGkudmVydGljYWwpe2crPS1DK2sud29yZFNwYWNpbmc7ay50cmFuc2xhdGVUZXh0TWF0cml4KDAsLWcpfWVsc2V7Zys9QytrLndvcmRTcGFjaW5nO2sudHJhbnNsYXRlVGV4dE1hdHJpeChnKmsudGV4dEhTY2FsZSwwKX1zYXZlTGFzdENoYXIoIiAiKTtjb250aW51ZX1pZighby5pc1plcm9XaWR0aERpYWNyaXRpYyYmIWNvbXBhcmVXaXRoTGFzdFBvc2l0aW9uKEMpKXtpLnZlcnRpY2FsP2sudHJhbnNsYXRlVGV4dE1hdHJpeCgwLEMpOmsudHJhbnNsYXRlVGV4dE1hdHJpeChDKmsudGV4dEhTY2FsZSwwKTtjb250aW51ZX1jb25zdCBoPWVuc3VyZVRleHRDb250ZW50SXRlbSgpO28uaXNaZXJvV2lkdGhEaWFjcml0aWMmJihDPTApO2lmKGkudmVydGljYWwpe2sudHJhbnNsYXRlVGV4dE1hdHJpeCgwLEMpO0M9TWF0aC5hYnMoQyk7aC5oZWlnaHQrPUN9ZWxzZXtDKj1rLnRleHRIU2NhbGU7ay50cmFuc2xhdGVUZXh0TWF0cml4KEMsMCk7aC53aWR0aCs9Q31DJiYoaC5wcmV2VHJhbnNmb3JtPWdldEN1cnJlbnRUZXh0VHJhbnNmb3JtKCkpO2NvbnN0IGw9bi51bmljb2RlO3NhdmVMYXN0Q2hhcihsKSYmaC5zdHIucHVzaCgiICIpO2guc3RyLnB1c2gobCk7ZyYmKGkudmVydGljYWw/ay50cmFuc2xhdGVUZXh0TWF0cml4KDAsLWcpOmsudHJhbnNsYXRlVGV4dE1hdHJpeChnKmsudGV4dEhTY2FsZSwwKSl9fWZ1bmN0aW9uIGFwcGVuZEVPTCgpe3Jlc2V0TGFzdENoYXJzKCk7aWYodS5pbml0aWFsaXplZCl7dS5oYXNFT0w9ITA7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKX1lbHNlIEUuaXRlbXMucHVzaCh7c3RyOiIiLGRpcjoibHRyIix3aWR0aDowLGhlaWdodDowLHRyYW5zZm9ybTpnZXRDdXJyZW50VGV4dFRyYW5zZm9ybSgpLGZvbnROYW1lOmsubG9hZGVkTmFtZSxoYXNFT0w6ITB9KX1mdW5jdGlvbiBhZGRGYWtlU3BhY2VzKGUsdCxpKXtpZihpKnUuc3BhY2VJbkZsb3dNaW48PWUmJmU8PWkqdS5zcGFjZUluRmxvd01heCl7aWYodS5pbml0aWFsaXplZCl7cmVzZXRMYXN0Q2hhcnMoKTt1LnN0ci5wdXNoKCIgIil9cmV0dXJuITF9Y29uc3QgYT11LmZvbnROYW1lO2xldCByPTA7aWYodS52ZXJ0aWNhbCl7cj1lO2U9MH1mbHVzaFRleHRDb250ZW50SXRlbSgpO3Jlc2V0TGFzdENoYXJzKCk7cHVzaFdoaXRlc3BhY2Uoe3dpZHRoOk1hdGguYWJzKGUpLGhlaWdodDpNYXRoLmFicyhyKSx0cmFuc2Zvcm06dHx8Z2V0Q3VycmVudFRleHRUcmFuc2Zvcm0oKSxmb250TmFtZTphfSk7cmV0dXJuITB9ZnVuY3Rpb24gZmx1c2hUZXh0Q29udGVudEl0ZW0oKXtpZih1LmluaXRpYWxpemVkJiZ1LnN0cil7dS52ZXJ0aWNhbD91LnRvdGFsSGVpZ2h0Kz11LmhlaWdodCp1LnRleHRBZHZhbmNlU2NhbGU6dS50b3RhbFdpZHRoKz11LndpZHRoKnUudGV4dEFkdmFuY2VTY2FsZTtFLml0ZW1zLnB1c2gocnVuQmlkaVRyYW5zZm9ybSh1KSk7dS5pbml0aWFsaXplZD0hMTt1LnN0ci5sZW5ndGg9MH19ZnVuY3Rpb24gZW5xdWV1ZUNodW5rKGU9ITEpe2NvbnN0IHQ9RS5pdGVtcy5sZW5ndGg7aWYoMCE9PXQmJiEoZSYmdDwxMCkpe28uZW5xdWV1ZShFLHQpO0UuaXRlbXM9W107RS5zdHlsZXM9T2JqZWN0LmNyZWF0ZShudWxsKX19Y29uc3QgUj1uZXcgVGltZVNsb3RNYW5hZ2VyO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24gcHJvbWlzZUJvZHkoZSxyKXtjb25zdCBuZXh0PWZ1bmN0aW9uKHQpe2VucXVldWVDaHVuayghMCk7UHJvbWlzZS5hbGwoW3Qsby5yZWFkeV0pLnRoZW4oKGZ1bmN0aW9uKCl7dHJ5e3Byb21pc2VCb2R5KGUscil9Y2F0Y2goZSl7cihlKX19KSxyKX07dC5lbnN1cmVOb3RUZXJtaW5hdGVkKCk7Ui5yZXNldCgpO2NvbnN0IHU9e307bGV0IGQsZj1bXTtmb3IoOyEoZD1SLmNoZWNrKCkpOyl7Zi5sZW5ndGg9MDt1LmFyZ3M9ZjtpZighUy5yZWFkKHUpKWJyZWFrO2NvbnN0IGU9aztrPXMuc3RhdGU7Y29uc3Qgcj11LmZuO2Y9dS5hcmdzO3N3aXRjaCgwfHIpe2Nhc2Ugb2U6dmFyIE49ZlswXS5uYW1lLEc9ZlsxXTtpZihrLmZvbnQmJk49PT1rLmZvbnROYW1lJiZHPT09ay5mb250U2l6ZSlicmVhaztmbHVzaFRleHRDb250ZW50SXRlbSgpO2suZm9udE5hbWU9TjtrLmZvbnRTaXplPUc7bmV4dChoYW5kbGVTZXRGb250KE4sbnVsbCkpO3JldHVybjtjYXNlIEllOmsudGV4dFJpc2U9ZlswXTticmVhaztjYXNlIHNlOmsudGV4dEhTY2FsZT1mWzBdLzEwMDticmVhaztjYXNlIG5lOmsubGVhZGluZz1mWzBdO2JyZWFrO2Nhc2UgY2U6ay50cmFuc2xhdGVUZXh0TGluZU1hdHJpeChmWzBdLGZbMV0pO2sudGV4dE1hdHJpeD1rLnRleHRMaW5lTWF0cml4LnNsaWNlKCk7YnJlYWs7Y2FzZSBDZTprLmxlYWRpbmc9LWZbMV07ay50cmFuc2xhdGVUZXh0TGluZU1hdHJpeChmWzBdLGZbMV0pO2sudGV4dE1hdHJpeD1rLnRleHRMaW5lTWF0cml4LnNsaWNlKCk7YnJlYWs7Y2FzZSBsZTprLmNhcnJpYWdlUmV0dXJuKCk7YnJlYWs7Y2FzZSBoZTprLnNldFRleHRNYXRyaXgoZlswXSxmWzFdLGZbMl0sZlszXSxmWzRdLGZbNV0pO2suc2V0VGV4dExpbmVNYXRyaXgoZlswXSxmWzFdLGZbMl0sZlszXSxmWzRdLGZbNV0pO3VwZGF0ZUFkdmFuY2VTY2FsZSgpO2JyZWFrO2Nhc2UgYWU6ay5jaGFyU3BhY2luZz1mWzBdO2JyZWFrO2Nhc2UgcmU6ay53b3JkU3BhY2luZz1mWzBdO2JyZWFrO2Nhc2UgdGU6ay50ZXh0TWF0cml4PWEuc2xpY2UoKTtrLnRleHRMaW5lTWF0cml4PWEuc2xpY2UoKTticmVhaztjYXNlIFFlOmlmKCFzLnN0YXRlLmZvbnQpe3AuZW5zdXJlU3RhdGVGb250KHMuc3RhdGUpO2NvbnRpbnVlfWNvbnN0IHI9KGsuZm9udC52ZXJ0aWNhbD8xOi0xKSprLmZvbnRTaXplLzFlMyx1PWZbMF07Zm9yKGxldCBlPTAsdD11Lmxlbmd0aDtlPHQ7ZSsrKXtjb25zdCB0PXVbZV07aWYoInN0cmluZyI9PXR5cGVvZiB0KXkucHVzaCh0KTtlbHNlIGlmKCJudW1iZXIiPT10eXBlb2YgdCYmMCE9PXQpe2NvbnN0IGU9eS5qb2luKCIiKTt5Lmxlbmd0aD0wO2J1aWxkVGV4dENvbnRlbnRJdGVtKHtjaGFyczplLGV4dHJhU3BhY2luZzp0KnJ9KX19aWYoeS5sZW5ndGg+MCl7Y29uc3QgZT15LmpvaW4oIiIpO3kubGVuZ3RoPTA7YnVpbGRUZXh0Q29udGVudEl0ZW0oe2NoYXJzOmUsZXh0cmFTcGFjaW5nOjB9KX1icmVhaztjYXNlIEJlOmlmKCFzLnN0YXRlLmZvbnQpe3AuZW5zdXJlU3RhdGVGb250KHMuc3RhdGUpO2NvbnRpbnVlfWJ1aWxkVGV4dENvbnRlbnRJdGVtKHtjaGFyczpmWzBdLGV4dHJhU3BhY2luZzowfSk7YnJlYWs7Y2FzZSBFZTppZighcy5zdGF0ZS5mb250KXtwLmVuc3VyZVN0YXRlRm9udChzLnN0YXRlKTtjb250aW51ZX1rLmNhcnJpYWdlUmV0dXJuKCk7YnVpbGRUZXh0Q29udGVudEl0ZW0oe2NoYXJzOmZbMF0sZXh0cmFTcGFjaW5nOjB9KTticmVhaztjYXNlIHVlOmlmKCFzLnN0YXRlLmZvbnQpe3AuZW5zdXJlU3RhdGVGb250KHMuc3RhdGUpO2NvbnRpbnVlfWsud29yZFNwYWNpbmc9ZlswXTtrLmNoYXJTcGFjaW5nPWZbMV07ay5jYXJyaWFnZVJldHVybigpO2J1aWxkVGV4dENvbnRlbnRJdGVtKHtjaGFyczpmWzJdLGV4dHJhU3BhY2luZzowfSk7YnJlYWs7Y2FzZSBIZTpmbHVzaFRleHRDb250ZW50SXRlbSgpO3d8fCh3PWkuZ2V0KCJYT2JqZWN0Iil8fERpY3QuZW1wdHkpO3ZhciB4PWZbMF1pbnN0YW5jZW9mIE5hbWUsVT1mWzBdLm5hbWU7aWYoeCYmYi5nZXRCeU5hbWUoVSkpYnJlYWs7bmV4dChuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSxhKXtpZigheCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlhPYmplY3QgbXVzdCBiZSByZWZlcnJlZCB0byBieSBuYW1lLiIpO2xldCByPXcuZ2V0UmF3KFUpO2lmKHIgaW5zdGFuY2VvZiBSZWYpe2lmKGIuZ2V0QnlSZWYocikpe2UoKTtyZXR1cm59aWYocC5nbG9iYWxJbWFnZUNhY2hlLmdldERhdGEocixwLnBhZ2VJbmRleCkpe2UoKTtyZXR1cm59cj1tLmZldGNoKHIpfWlmKCEociBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pKXRocm93IG5ldyBGb3JtYXRFcnJvcigiWE9iamVjdCBzaG91bGQgYmUgYSBzdHJlYW0iKTtjb25zdCBFPXIuZGljdC5nZXQoIlN1YnR5cGUiKTtpZighKEUgaW5zdGFuY2VvZiBOYW1lKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlhPYmplY3Qgc2hvdWxkIGhhdmUgYSBOYW1lIHN1YnR5cGUiKTtpZigiRm9ybSIhPT1FLm5hbWUpe2Iuc2V0KFUsci5kaWN0Lm9iaklkLCEwKTtlKCk7cmV0dXJufWNvbnN0IHU9cy5zdGF0ZS5jbG9uZSgpLGQ9bmV3IFN0YXRlTWFuYWdlcih1KSxmPWxvb2t1cE1hdHJpeChyLmRpY3QuZ2V0QXJyYXkoIk1hdHJpeCIpLG51bGwpO2YmJmQudHJhbnNmb3JtKGYpO2VucXVldWVDaHVuaygpO2NvbnN0IHk9e2VucXVldWVJbnZva2VkOiExLGVucXVldWUoZSx0KXt0aGlzLmVucXVldWVJbnZva2VkPSEwO28uZW5xdWV1ZShlLHQpfSxnZXQgZGVzaXJlZFNpemUoKXtyZXR1cm4gby5kZXNpcmVkU2l6ZX0sZ2V0IHJlYWR5KCl7cmV0dXJuIG8ucmVhZHl9fTtwLmdldFRleHRDb250ZW50KHtzdHJlYW06cix0YXNrOnQscmVzb3VyY2VzOnIuZGljdC5nZXQoIlJlc291cmNlcyIpfHxpLHN0YXRlTWFuYWdlcjpkLGluY2x1ZGVNYXJrZWRDb250ZW50Om4sc2luazp5LHNlZW5TdHlsZXM6Zyx2aWV3Qm94OmMsbGFuZzpDLG1hcmtlZENvbnRlbnREYXRhOmgsZGlzYWJsZU5vcm1hbGl6YXRpb246bCxrZWVwV2hpdGVTcGFjZTpRfSkudGhlbigoZnVuY3Rpb24oKXt5LmVucXVldWVJbnZva2VkfHxiLnNldChVLHIuZGljdC5vYmpJZCwhMCk7ZSgpfSksYSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe2lmKCEoZSBpbnN0YW5jZW9mIEFib3J0RXhjZXB0aW9uKSl7aWYoIXAub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTt3YXJuKGBnZXRUZXh0Q29udGVudCAtIGlnbm9yaW5nIFhPYmplY3Q6ICIke2V9Ii5gKX19KSkpO3JldHVybjtjYXNlIFVBOng9ZlswXWluc3RhbmNlb2YgTmFtZTtVPWZbMF0ubmFtZTtpZih4JiZELmdldEJ5TmFtZShVKSlicmVhaztuZXh0KG5ldyBQcm9taXNlKChmdW5jdGlvbihlLHQpe2lmKCF4KXRocm93IG5ldyBGb3JtYXRFcnJvcigiR1N0YXRlIG11c3QgYmUgcmVmZXJyZWQgdG8gYnkgbmFtZS4iKTtjb25zdCBhPWkuZ2V0KCJFeHRHU3RhdGUiKTtpZighKGEgaW5zdGFuY2VvZiBEaWN0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkV4dEdTdGF0ZSBzaG91bGQgYmUgYSBkaWN0aW9uYXJ5LiIpO2NvbnN0IHI9YS5nZXQoVSk7aWYoIShyIGluc3RhbmNlb2YgRGljdCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJHU3RhdGUgc2hvdWxkIGJlIGEgZGljdGlvbmFyeS4iKTtjb25zdCBzPXIuZ2V0KCJGb250Iik7aWYocyl7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtrLmZvbnROYW1lPW51bGw7ay5mb250U2l6ZT1zWzFdO2hhbmRsZVNldEZvbnQobnVsbCxzWzBdKS50aGVuKGUsdCl9ZWxzZXtELnNldChVLHIub2JqSWQsITApO2UoKX19KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe2lmKCEoZSBpbnN0YW5jZW9mIEFib3J0RXhjZXB0aW9uKSl7aWYoIXAub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTt3YXJuKGBnZXRUZXh0Q29udGVudCAtIGlnbm9yaW5nIEV4dEdTdGF0ZTogIiR7ZX0iLmApfX0pKSk7cmV0dXJuO2Nhc2UgWWU6Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtpZihuKXtoLmxldmVsKys7RS5pdGVtcy5wdXNoKHt0eXBlOiJiZWdpbk1hcmtlZENvbnRlbnQiLHRhZzpmWzBdaW5zdGFuY2VvZiBOYW1lP2ZbMF0ubmFtZTpudWxsfSl9YnJlYWs7Y2FzZSBUZTpmbHVzaFRleHRDb250ZW50SXRlbSgpO2lmKG4pe2gubGV2ZWwrKztsZXQgZT1udWxsO2ZbMV1pbnN0YW5jZW9mIERpY3QmJihlPWZbMV0uZ2V0KCJNQ0lEIikpO0UuaXRlbXMucHVzaCh7dHlwZToiYmVnaW5NYXJrZWRDb250ZW50UHJvcHMiLGlkOk51bWJlci5pc0ludGVnZXIoZSk/YCR7cC5pZEZhY3RvcnkuZ2V0UGFnZU9iaklkKCl9X21jJHtlfWA6bnVsbCx0YWc6ZlswXWluc3RhbmNlb2YgTmFtZT9mWzBdLm5hbWU6bnVsbH0pfWJyZWFrO2Nhc2UgS2U6Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtpZihuKXtpZigwPT09aC5sZXZlbClicmVhaztoLmxldmVsLS07RS5pdGVtcy5wdXNoKHt0eXBlOiJlbmRNYXJrZWRDb250ZW50In0pfWJyZWFrO2Nhc2UgTEE6IWV8fGUuZm9udD09PWsuZm9udCYmZS5mb250U2l6ZT09PWsuZm9udFNpemUmJmUuZm9udE5hbWU9PT1rLmZvbnROYW1lfHxmbHVzaFRleHRDb250ZW50SXRlbSgpfWlmKEUuaXRlbXMubGVuZ3RoPj1vLmRlc2lyZWRTaXplKXtkPSEwO2JyZWFrfX1pZihkKW5leHQoTHIpO2Vsc2V7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtlbnF1ZXVlQ2h1bmsoKTtlKCl9fSkpLmNhdGNoKChlPT57aWYoIShlIGluc3RhbmNlb2YgQWJvcnRFeGNlcHRpb24pKXtpZighdGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlO3dhcm4oYGdldFRleHRDb250ZW50IC0gaWdub3JpbmcgZXJyb3JzIGR1cmluZyAiJHt0Lm5hbWV9IiB0YXNrOiAiJHtlfSIuYCk7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtlbnF1ZXVlQ2h1bmsoKX19KSl9YXN5bmMgZXh0cmFjdERhdGFTdHJ1Y3R1cmVzKGUsdCl7Y29uc3QgaT10aGlzLnhyZWY7bGV0IGE7Y29uc3Qgcj10aGlzLnJlYWRUb1VuaWNvZGUodC50b1VuaWNvZGUpO2lmKHQuY29tcG9zaXRlKXtjb25zdCBpPWUuZ2V0KCJDSURTeXN0ZW1JbmZvIik7aSBpbnN0YW5jZW9mIERpY3QmJih0LmNpZFN5c3RlbUluZm89e3JlZ2lzdHJ5OnN0cmluZ1RvUERGU3RyaW5nKGkuZ2V0KCJSZWdpc3RyeSIpKSxvcmRlcmluZzpzdHJpbmdUb1BERlN0cmluZyhpLmdldCgiT3JkZXJpbmciKSksc3VwcGxlbWVudDppLmdldCgiU3VwcGxlbWVudCIpfSk7dHJ5e2NvbnN0IHQ9ZS5nZXQoIkNJRFRvR0lETWFwIik7dCBpbnN0YW5jZW9mIEJhc2VTdHJlYW0mJihhPXQuZ2V0Qnl0ZXMoKSl9Y2F0Y2goZSl7aWYoIXRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTt3YXJuKGBleHRyYWN0RGF0YVN0cnVjdHVyZXMgLSBpZ25vcmluZyBDSURUb0dJRE1hcCBkYXRhOiAiJHtlfSIuYCl9fWNvbnN0IHM9W107bGV0IG4sbz1udWxsO2lmKGUuaGFzKCJFbmNvZGluZyIpKXtuPWUuZ2V0KCJFbmNvZGluZyIpO2lmKG4gaW5zdGFuY2VvZiBEaWN0KXtvPW4uZ2V0KCJCYXNlRW5jb2RpbmciKTtvPW8gaW5zdGFuY2VvZiBOYW1lP28ubmFtZTpudWxsO2lmKG4uaGFzKCJEaWZmZXJlbmNlcyIpKXtjb25zdCBlPW4uZ2V0KCJEaWZmZXJlbmNlcyIpO2xldCB0PTA7Zm9yKGNvbnN0IGEgb2YgZSl7Y29uc3QgZT1pLmZldGNoSWZSZWYoYSk7aWYoIm51bWJlciI9PXR5cGVvZiBlKXQ9ZTtlbHNle2lmKCEoZSBpbnN0YW5jZW9mIE5hbWUpKXRocm93IG5ldyBGb3JtYXRFcnJvcihgSW52YWxpZCBlbnRyeSBpbiAnRGlmZmVyZW5jZXMnIGFycmF5OiAke2V9YCk7c1t0KytdPWUubmFtZX19fX1lbHNlIGlmKG4gaW5zdGFuY2VvZiBOYW1lKW89bi5uYW1lO2Vsc2V7Y29uc3QgZT0iRW5jb2RpbmcgaXMgbm90IGEgTmFtZSBub3IgYSBEaWN0IjtpZighdGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoZSk7d2FybihlKX0iTWFjUm9tYW5FbmNvZGluZyIhPT1vJiYiTWFjRXhwZXJ0RW5jb2RpbmciIT09byYmIldpbkFuc2lFbmNvZGluZyIhPT1vJiYobz1udWxsKX1jb25zdCBnPSF0LmZpbGV8fHQuaXNJbnRlcm5hbEZvbnQsYz1lYSgpW3QubmFtZV07byYmZyYmYyYmKG89bnVsbCk7aWYobyl0LmRlZmF1bHRFbmNvZGluZz1nZXRFbmNvZGluZyhvKTtlbHNle2NvbnN0IGU9ISEodC5mbGFncyZqaSksaT0hISh0LmZsYWdzJlhpKTtuPWJpOyJUcnVlVHlwZSIhPT10LnR5cGV8fGl8fChuPURpKTtpZihlfHxjKXtuPXdpO2cmJigvU3ltYm9sL2kudGVzdCh0Lm5hbWUpP249Rmk6L0RpbmdiYXRzL2kudGVzdCh0Lm5hbWUpP249U2k6L1dpbmdkaW5ncy9pLnRlc3QodC5uYW1lKSYmKG49RGkpKX10LmRlZmF1bHRFbmNvZGluZz1ufXQuZGlmZmVyZW5jZXM9czt0LmJhc2VFbmNvZGluZ05hbWU9bzt0Lmhhc0VuY29kaW5nPSEhb3x8cy5sZW5ndGg+MDt0LmRpY3Q9ZTt0LnRvVW5pY29kZT1hd2FpdCByO2NvbnN0IEM9YXdhaXQgdGhpcy5idWlsZFRvVW5pY29kZSh0KTt0LnRvVW5pY29kZT1DO2EmJih0LmNpZFRvR2lkTWFwPXRoaXMucmVhZENpZFRvR2lkTWFwKGEsQykpO3JldHVybiB0fV9zaW1wbGVGb250VG9Vbmljb2RlKGUsdD0hMSl7YXNzZXJ0KCFlLmNvbXBvc2l0ZSwiTXVzdCBiZSBhIHNpbXBsZSBmb250LiIpO2NvbnN0IGk9W10sYT1lLmRlZmF1bHRFbmNvZGluZy5zbGljZSgpLHI9ZS5iYXNlRW5jb2RpbmdOYW1lLHM9ZS5kaWZmZXJlbmNlcztmb3IoY29uc3QgZSBpbiBzKXtjb25zdCB0PXNbZV07Ii5ub3RkZWYiIT09dCYmKGFbZV09dCl9Y29uc3Qgbj1KaSgpO2Zvcihjb25zdCBzIGluIGEpe2xldCBvPWFbc107aWYoIiI9PT1vKWNvbnRpbnVlO2xldCBnPW5bb107aWYodm9pZCAwIT09Zyl7aVtzXT1TdHJpbmcuZnJvbUNoYXJDb2RlKGcpO2NvbnRpbnVlfWxldCBjPTA7c3dpdGNoKG9bMF0pe2Nhc2UiRyI6Mz09PW8ubGVuZ3RoJiYoYz1wYXJzZUludChvLnN1YnN0cmluZygxKSwxNikpO2JyZWFrO2Nhc2UiZyI6NT09PW8ubGVuZ3RoJiYoYz1wYXJzZUludChvLnN1YnN0cmluZygxKSwxNikpO2JyZWFrO2Nhc2UiQyI6Y2FzZSJjIjppZihvLmxlbmd0aD49MyYmby5sZW5ndGg8PTQpe2NvbnN0IGk9by5zdWJzdHJpbmcoMSk7aWYodCl7Yz1wYXJzZUludChpLDE2KTticmVha31jPStpO2lmKE51bWJlci5pc05hTihjKSYmTnVtYmVyLmlzSW50ZWdlcihwYXJzZUludChpLDE2KSkpcmV0dXJuIHRoaXMuX3NpbXBsZUZvbnRUb1VuaWNvZGUoZSwhMCl9YnJlYWs7Y2FzZSJ1IjpnPWdldFVuaWNvZGVGb3JHbHlwaChvLG4pOy0xIT09ZyYmKGM9Zyk7YnJlYWs7ZGVmYXVsdDpzd2l0Y2gobyl7Y2FzZSJmX2giOmNhc2UiZl90IjpjYXNlIlRfaCI6aVtzXT1vLnJlcGxhY2VBbGwoIl8iLCIiKTtjb250aW51ZX19aWYoYz4wJiZjPD0xMTE0MTExJiZOdW1iZXIuaXNJbnRlZ2VyKGMpKXtpZihyJiZjPT09K3Mpe2NvbnN0IGU9Z2V0RW5jb2Rpbmcocik7aWYoZSYmKG89ZVtzXSkpe2lbc109U3RyaW5nLmZyb21DaGFyQ29kZShuW29dKTtjb250aW51ZX19aVtzXT1TdHJpbmcuZnJvbUNvZGVQb2ludChjKX19cmV0dXJuIGl9YXN5bmMgYnVpbGRUb1VuaWNvZGUoZSl7ZS5oYXNJbmNsdWRlZFRvVW5pY29kZU1hcD1lLnRvVW5pY29kZT8ubGVuZ3RoPjA7aWYoZS5oYXNJbmNsdWRlZFRvVW5pY29kZU1hcCl7IWUuY29tcG9zaXRlJiZlLmhhc0VuY29kaW5nJiYoZS5mYWxsYmFja1RvVW5pY29kZT10aGlzLl9zaW1wbGVGb250VG9Vbmljb2RlKGUpKTtyZXR1cm4gZS50b1VuaWNvZGV9aWYoIWUuY29tcG9zaXRlKXJldHVybiBuZXcgVG9Vbmljb2RlTWFwKHRoaXMuX3NpbXBsZUZvbnRUb1VuaWNvZGUoZSkpO2lmKGUuY29tcG9zaXRlJiYoZS5jTWFwLmJ1aWx0SW5DTWFwJiYhKGUuY01hcCBpbnN0YW5jZW9mIElkZW50aXR5Q01hcCl8fCJBZG9iZSI9PT1lLmNpZFN5c3RlbUluZm8/LnJlZ2lzdHJ5JiYoIkdCMSI9PT1lLmNpZFN5c3RlbUluZm8ub3JkZXJpbmd8fCJDTlMxIj09PWUuY2lkU3lzdGVtSW5mby5vcmRlcmluZ3x8IkphcGFuMSI9PT1lLmNpZFN5c3RlbUluZm8ub3JkZXJpbmd8fCJLb3JlYTEiPT09ZS5jaWRTeXN0ZW1JbmZvLm9yZGVyaW5nKSkpe2NvbnN0e3JlZ2lzdHJ5OnQsb3JkZXJpbmc6aX09ZS5jaWRTeXN0ZW1JbmZvLGE9TmFtZS5nZXQoYCR7dH0tJHtpfS1VQ1MyYCkscj1hd2FpdCBDTWFwRmFjdG9yeS5jcmVhdGUoe2VuY29kaW5nOmEsZmV0Y2hCdWlsdEluQ01hcDp0aGlzLl9mZXRjaEJ1aWx0SW5DTWFwQm91bmQsdXNlQ01hcDpudWxsfSkscz1bXSxuPVtdO2UuY01hcC5mb3JFYWNoKChmdW5jdGlvbihlLHQpe2lmKHQ+NjU1MzUpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJNYXggc2l6ZSBvZiBDSUQgaXMgNjUsNTM1Iik7Y29uc3QgaT1yLmxvb2t1cCh0KTtpZihpKXtuLmxlbmd0aD0wO2ZvcihsZXQgZT0wLHQ9aS5sZW5ndGg7ZTx0O2UrPTIpbi5wdXNoKChpLmNoYXJDb2RlQXQoZSk8PDgpK2kuY2hhckNvZGVBdChlKzEpKTtzW2VdPVN0cmluZy5mcm9tQ2hhckNvZGUoLi4ubil9fSkpO3JldHVybiBuZXcgVG9Vbmljb2RlTWFwKHMpfXJldHVybiBuZXcgSWRlbnRpdHlUb1VuaWNvZGVNYXAoZS5maXJzdENoYXIsZS5sYXN0Q2hhcil9YXN5bmMgcmVhZFRvVW5pY29kZShlKXtpZighZSlyZXR1cm4gbnVsbDtpZihlIGluc3RhbmNlb2YgTmFtZSl7Y29uc3QgdD1hd2FpdCBDTWFwRmFjdG9yeS5jcmVhdGUoe2VuY29kaW5nOmUsZmV0Y2hCdWlsdEluQ01hcDp0aGlzLl9mZXRjaEJ1aWx0SW5DTWFwQm91bmQsdXNlQ01hcDpudWxsfSk7cmV0dXJuIHQgaW5zdGFuY2VvZiBJZGVudGl0eUNNYXA/bmV3IElkZW50aXR5VG9Vbmljb2RlTWFwKDAsNjU1MzUpOm5ldyBUb1VuaWNvZGVNYXAodC5nZXRNYXAoKSl9aWYoZSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pdHJ5e2NvbnN0IHQ9YXdhaXQgQ01hcEZhY3RvcnkuY3JlYXRlKHtlbmNvZGluZzplLGZldGNoQnVpbHRJbkNNYXA6dGhpcy5fZmV0Y2hCdWlsdEluQ01hcEJvdW5kLHVzZUNNYXA6bnVsbH0pO2lmKHQgaW5zdGFuY2VvZiBJZGVudGl0eUNNYXApcmV0dXJuIG5ldyBJZGVudGl0eVRvVW5pY29kZU1hcCgwLDY1NTM1KTtjb25zdCBpPW5ldyBBcnJheSh0Lmxlbmd0aCk7dC5mb3JFYWNoKChmdW5jdGlvbihlLHQpe2lmKCJudW1iZXIiPT10eXBlb2YgdCl7aVtlXT1TdHJpbmcuZnJvbUNvZGVQb2ludCh0KTtyZXR1cm59dC5sZW5ndGglMiE9MCYmKHQ9IlwwIit0KTtjb25zdCBhPVtdO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSs9Mil7Y29uc3QgaT10LmNoYXJDb2RlQXQoZSk8PDh8dC5jaGFyQ29kZUF0KGUrMSk7aWYoNTUyOTYhPSg2MzQ4OCZpKSl7YS5wdXNoKGkpO2NvbnRpbnVlfWUrPTI7Y29uc3Qgcj10LmNoYXJDb2RlQXQoZSk8PDh8dC5jaGFyQ29kZUF0KGUrMSk7YS5wdXNoKCgoMTAyMyZpKTw8MTApKygxMDIzJnIpKzY1NTM2KX1pW2VdPVN0cmluZy5mcm9tQ29kZVBvaW50KC4uLmEpfSkpO3JldHVybiBuZXcgVG9Vbmljb2RlTWFwKGkpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBBYm9ydEV4Y2VwdGlvbilyZXR1cm4gbnVsbDtpZih0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXt3YXJuKGByZWFkVG9Vbmljb2RlIC0gaWdub3JpbmcgVG9Vbmljb2RlIGRhdGE6ICIke2V9Ii5gKTtyZXR1cm4gbnVsbH10aHJvdyBlfXJldHVybiBudWxsfXJlYWRDaWRUb0dpZE1hcChlLHQpe2NvbnN0IGk9W107Zm9yKGxldCBhPTAscj1lLmxlbmd0aDthPHI7YSsrKXtjb25zdCByPWVbYSsrXTw8OHxlW2FdLHM9YT4+MTsoMCE9PXJ8fHQuaGFzKHMpKSYmKGlbc109cil9cmV0dXJuIGl9ZXh0cmFjdFdpZHRocyhlLHQsaSl7Y29uc3QgYT10aGlzLnhyZWY7bGV0IHI9W10scz0wO2NvbnN0IG49W107bGV0IG87aWYoaS5jb21wb3NpdGUpe2NvbnN0IHQ9ZS5nZXQoIkRXIik7cz0ibnVtYmVyIj09dHlwZW9mIHQ/TWF0aC5jZWlsKHQpOjFlMztjb25zdCBnPWUuZ2V0KCJXIik7aWYoQXJyYXkuaXNBcnJheShnKSlmb3IobGV0IGU9MCx0PWcubGVuZ3RoO2U8dDtlKyspe2xldCB0PWEuZmV0Y2hJZlJlZihnW2UrK10pO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKHQpKWJyZWFrO2NvbnN0IGk9YS5mZXRjaElmUmVmKGdbZV0pO2lmKEFycmF5LmlzQXJyYXkoaSkpZm9yKGNvbnN0IGUgb2YgaSl7Y29uc3QgaT1hLmZldGNoSWZSZWYoZSk7Im51bWJlciI9PXR5cGVvZiBpJiYoclt0XT1pKTt0Kyt9ZWxzZXtpZighTnVtYmVyLmlzSW50ZWdlcihpKSlicmVhazt7Y29uc3Qgcz1hLmZldGNoSWZSZWYoZ1srK2VdKTtpZigibnVtYmVyIiE9dHlwZW9mIHMpY29udGludWU7Zm9yKGxldCBlPXQ7ZTw9aTtlKyspcltlXT1zfX19aWYoaS52ZXJ0aWNhbCl7Y29uc3QgdD1lLmdldEFycmF5KCJEVzIiKTtsZXQgaT1pc051bWJlckFycmF5KHQsMik/dDpbODgwLC0xZTNdO289W2lbMV0sLjUqcyxpWzBdXTtpPWUuZ2V0KCJXMiIpO2lmKEFycmF5LmlzQXJyYXkoaSkpZm9yKGxldCBlPTAsdD1pLmxlbmd0aDtlPHQ7ZSsrKXtsZXQgdD1hLmZldGNoSWZSZWYoaVtlKytdKTtpZighTnVtYmVyLmlzSW50ZWdlcih0KSlicmVhaztjb25zdCByPWEuZmV0Y2hJZlJlZihpW2VdKTtpZihBcnJheS5pc0FycmF5KHIpKWZvcihsZXQgZT0wLGk9ci5sZW5ndGg7ZTxpO2UrKyl7Y29uc3QgaT1bYS5mZXRjaElmUmVmKHJbZSsrXSksYS5mZXRjaElmUmVmKHJbZSsrXSksYS5mZXRjaElmUmVmKHJbZV0pXTtpc051bWJlckFycmF5KGksbnVsbCkmJihuW3RdPWkpO3QrK31lbHNle2lmKCFOdW1iZXIuaXNJbnRlZ2VyKHIpKWJyZWFrO3tjb25zdCBzPVthLmZldGNoSWZSZWYoaVsrK2VdKSxhLmZldGNoSWZSZWYoaVsrK2VdKSxhLmZldGNoSWZSZWYoaVsrK2VdKV07aWYoIWlzTnVtYmVyQXJyYXkocyxudWxsKSljb250aW51ZTtmb3IobGV0IGU9dDtlPD1yO2UrKyluW2VdPXN9fX19fWVsc2V7Y29uc3Qgbj1lLmdldCgiV2lkdGhzIik7aWYoQXJyYXkuaXNBcnJheShuKSl7bGV0IGU9aS5maXJzdENoYXI7Zm9yKGNvbnN0IHQgb2Ygbil7Y29uc3QgaT1hLmZldGNoSWZSZWYodCk7Im51bWJlciI9PXR5cGVvZiBpJiYocltlXT1pKTtlKyt9Y29uc3Qgbz10LmdldCgiTWlzc2luZ1dpZHRoIik7cz0ibnVtYmVyIj09dHlwZW9mIG8/bzowfWVsc2V7Y29uc3QgdD1lLmdldCgiQmFzZUZvbnQiKTtpZih0IGluc3RhbmNlb2YgTmFtZSl7Y29uc3QgZT10aGlzLmdldEJhc2VGb250TWV0cmljcyh0Lm5hbWUpO3I9dGhpcy5idWlsZENoYXJDb2RlVG9XaWR0aChlLndpZHRocyxpKTtzPWUuZGVmYXVsdFdpZHRofX19bGV0IGc9ITAsYz1zO2Zvcihjb25zdCBlIGluIHIpe2NvbnN0IHQ9cltlXTtpZih0KWlmKGMpe2lmKGMhPT10KXtnPSExO2JyZWFrfX1lbHNlIGM9dH1nP2kuZmxhZ3N8PVBpOmkuZmxhZ3MmPX5QaTtpLmRlZmF1bHRXaWR0aD1zO2kud2lkdGhzPXI7aS5kZWZhdWx0Vk1ldHJpY3M9bztpLnZtZXRyaWNzPW59aXNTZXJpZkZvbnQoZSl7Y29uc3QgdD1lLnNwbGl0KCItIiwxKVswXTtyZXR1cm4gdCBpbiBBYSgpfHwvc2VyaWYvZ2kudGVzdCh0KX1nZXRCYXNlRm9udE1ldHJpY3MoZSl7bGV0IHQ9MCxpPU9iamVjdC5jcmVhdGUobnVsbCksYT0hMTtsZXQgcj1faSgpW2VdfHxlO2NvbnN0IHM9c2EoKTtyIGluIHN8fChyPXRoaXMuaXNTZXJpZkZvbnQoZSk/IlRpbWVzLVJvbWFuIjoiSGVsdmV0aWNhIik7Y29uc3Qgbj1zW3JdO2lmKCJudW1iZXIiPT10eXBlb2Ygbil7dD1uO2E9ITB9ZWxzZSBpPW4oKTtyZXR1cm57ZGVmYXVsdFdpZHRoOnQsbW9ub3NwYWNlOmEsd2lkdGhzOml9fWJ1aWxkQ2hhckNvZGVUb1dpZHRoKGUsdCl7Y29uc3QgaT1PYmplY3QuY3JlYXRlKG51bGwpLGE9dC5kaWZmZXJlbmNlcyxyPXQuZGVmYXVsdEVuY29kaW5nO2ZvcihsZXQgdD0wO3Q8MjU2O3QrKyl0IGluIGEmJmVbYVt0XV0/aVt0XT1lW2FbdF1dOnQgaW4gciYmZVtyW3RdXSYmKGlbdF09ZVtyW3RdXSk7cmV0dXJuIGl9cHJlRXZhbHVhdGVGb250KGUpe2NvbnN0IHQ9ZTtsZXQgaT1lLmdldCgiU3VidHlwZSIpO2lmKCEoaSBpbnN0YW5jZW9mIE5hbWUpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiaW52YWxpZCBmb250IFN1YnR5cGUiKTtsZXQgYSxyPSExO2lmKCJUeXBlMCI9PT1pLm5hbWUpe2NvbnN0IHQ9ZS5nZXQoIkRlc2NlbmRhbnRGb250cyIpO2lmKCF0KXRocm93IG5ldyBGb3JtYXRFcnJvcigiRGVzY2VuZGFudCBmb250cyBhcmUgbm90IHNwZWNpZmllZCIpO2lmKCEoKGU9QXJyYXkuaXNBcnJheSh0KT90aGlzLnhyZWYuZmV0Y2hJZlJlZih0WzBdKTp0KWluc3RhbmNlb2YgRGljdCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJEZXNjZW5kYW50IGZvbnQgaXMgbm90IGEgZGljdGlvbmFyeS4iKTtpPWUuZ2V0KCJTdWJ0eXBlIik7aWYoIShpIGluc3RhbmNlb2YgTmFtZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJpbnZhbGlkIGZvbnQgU3VidHlwZSIpO3I9ITB9bGV0IHM9ZS5nZXQoIkZpcnN0Q2hhciIpO051bWJlci5pc0ludGVnZXIocyl8fChzPTApO2xldCBuPWUuZ2V0KCJMYXN0Q2hhciIpO051bWJlci5pc0ludGVnZXIobil8fChuPXI/NjU1MzU6MjU1KTtjb25zdCBvPWUuZ2V0KCJGb250RGVzY3JpcHRvciIpLGc9ZS5nZXQoIlRvVW5pY29kZSIpfHx0LmdldCgiVG9Vbmljb2RlIik7aWYobyl7YT1uZXcgTXVybXVySGFzaDNfNjQ7Y29uc3QgaT10LmdldFJhdygiRW5jb2RpbmciKTtpZihpIGluc3RhbmNlb2YgTmFtZSlhLnVwZGF0ZShpLm5hbWUpO2Vsc2UgaWYoaSBpbnN0YW5jZW9mIFJlZilhLnVwZGF0ZShpLnRvU3RyaW5nKCkpO2Vsc2UgaWYoaSBpbnN0YW5jZW9mIERpY3QpZm9yKGNvbnN0IGUgb2YgaS5nZXRSYXdWYWx1ZXMoKSlpZihlIGluc3RhbmNlb2YgTmFtZSlhLnVwZGF0ZShlLm5hbWUpO2Vsc2UgaWYoZSBpbnN0YW5jZW9mIFJlZilhLnVwZGF0ZShlLnRvU3RyaW5nKCkpO2Vsc2UgaWYoQXJyYXkuaXNBcnJheShlKSl7Y29uc3QgdD1lLmxlbmd0aCxpPW5ldyBBcnJheSh0KTtmb3IobGV0IGE9MDthPHQ7YSsrKXtjb25zdCB0PWVbYV07dCBpbnN0YW5jZW9mIE5hbWU/aVthXT10Lm5hbWU6KCJudW1iZXIiPT10eXBlb2YgdHx8dCBpbnN0YW5jZW9mIFJlZikmJihpW2FdPXQudG9TdHJpbmcoKSl9YS51cGRhdGUoaS5qb2luKCkpfWEudXBkYXRlKGAke3N9LSR7bn1gKTtpZihnIGluc3RhbmNlb2YgQmFzZVN0cmVhbSl7Y29uc3QgZT1nLnN0cnx8Zyx0PWUuYnVmZmVyP25ldyBVaW50OEFycmF5KGUuYnVmZmVyLmJ1ZmZlciwwLGUuYnVmZmVyTGVuZ3RoKTpuZXcgVWludDhBcnJheShlLmJ5dGVzLmJ1ZmZlcixlLnN0YXJ0LGUuZW5kLWUuc3RhcnQpO2EudXBkYXRlKHQpfWVsc2UgZyBpbnN0YW5jZW9mIE5hbWUmJmEudXBkYXRlKGcubmFtZSk7Y29uc3Qgbz1lLmdldCgiV2lkdGhzIil8fHQuZ2V0KCJXaWR0aHMiKTtpZihBcnJheS5pc0FycmF5KG8pKXtjb25zdCBlPVtdO2Zvcihjb25zdCB0IG9mIG8pKCJudW1iZXIiPT10eXBlb2YgdHx8dCBpbnN0YW5jZW9mIFJlZikmJmUucHVzaCh0LnRvU3RyaW5nKCkpO2EudXBkYXRlKGUuam9pbigpKX1pZihyKXthLnVwZGF0ZSgiY29tcG9zaXRlRm9udCIpO2NvbnN0IGk9ZS5nZXQoIlciKXx8dC5nZXQoIlciKTtpZihBcnJheS5pc0FycmF5KGkpKXtjb25zdCBlPVtdO2Zvcihjb25zdCB0IG9mIGkpaWYoIm51bWJlciI9PXR5cGVvZiB0fHx0IGluc3RhbmNlb2YgUmVmKWUucHVzaCh0LnRvU3RyaW5nKCkpO2Vsc2UgaWYoQXJyYXkuaXNBcnJheSh0KSl7Y29uc3QgaT1bXTtmb3IoY29uc3QgZSBvZiB0KSgibnVtYmVyIj09dHlwZW9mIGV8fGUgaW5zdGFuY2VvZiBSZWYpJiZpLnB1c2goZS50b1N0cmluZygpKTtlLnB1c2goYFske2kuam9pbigpfV1gKX1hLnVwZGF0ZShlLmpvaW4oKSl9Y29uc3Qgcj1lLmdldFJhdygiQ0lEVG9HSURNYXAiKXx8dC5nZXRSYXcoIkNJRFRvR0lETWFwIik7ciBpbnN0YW5jZW9mIE5hbWU/YS51cGRhdGUoci5uYW1lKTpyIGluc3RhbmNlb2YgUmVmP2EudXBkYXRlKHIudG9TdHJpbmcoKSk6ciBpbnN0YW5jZW9mIEJhc2VTdHJlYW0mJmEudXBkYXRlKHIucGVla0J5dGVzKCkpfX1yZXR1cm57ZGVzY3JpcHRvcjpvLGRpY3Q6ZSxiYXNlRGljdDp0LGNvbXBvc2l0ZTpyLHR5cGU6aS5uYW1lLGZpcnN0Q2hhcjpzLGxhc3RDaGFyOm4sdG9Vbmljb2RlOmcsaGFzaDphP2EuaGV4ZGlnZXN0KCk6IiJ9fWFzeW5jIHRyYW5zbGF0ZUZvbnQoe2Rlc2NyaXB0b3I6ZSxkaWN0OnQsYmFzZURpY3Q6aSxjb21wb3NpdGU6YSx0eXBlOnMsZmlyc3RDaGFyOm4sbGFzdENoYXI6byx0b1VuaWNvZGU6Zyxjc3NGb250SW5mbzpjfSl7Y29uc3QgQz0iVHlwZTMiPT09cztpZighZSl7aWYoIUMpe2xldCBlPXQuZ2V0KCJCYXNlRm9udCIpO2lmKCEoZSBpbnN0YW5jZW9mIE5hbWUpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiQmFzZSBmb250IGlzIG5vdCBzcGVjaWZpZWQiKTtlPWUubmFtZS5yZXBsYWNlQWxsKC9bLF9dL2csIi0iKTtjb25zdCBhPXRoaXMuZ2V0QmFzZUZvbnRNZXRyaWNzKGUpLHI9ZS5zcGxpdCgiLSIsMSlbMF0sYz0odGhpcy5pc1NlcmlmRm9udChyKT9XaTowKXwoYS5tb25vc3BhY2U/UGk6MCl8KGVhKClbcl0/amk6WGkpLGg9e3R5cGU6cyxuYW1lOmUsbG9hZGVkTmFtZTppLmxvYWRlZE5hbWUsc3lzdGVtRm9udEluZm86bnVsbCx3aWR0aHM6YS53aWR0aHMsZGVmYXVsdFdpZHRoOmEuZGVmYXVsdFdpZHRoLGlzU2ltdWxhdGVkRmxhZ3M6ITAsZmxhZ3M6YyxmaXJzdENoYXI6bixsYXN0Q2hhcjpvLHRvVW5pY29kZTpnLHhIZWlnaHQ6MCxjYXBIZWlnaHQ6MCxpdGFsaWNBbmdsZTowLGlzVHlwZTNGb250OkN9LGw9dC5nZXQoIldpZHRocyIpLFE9Z2V0U3RhbmRhcmRGb250TmFtZShlKTtsZXQgRT1udWxsO2lmKFEpe0U9YXdhaXQgdGhpcy5mZXRjaFN0YW5kYXJkRm9udERhdGEoUSk7aC5pc0ludGVybmFsRm9udD0hIUV9IWguaXNJbnRlcm5hbEZvbnQmJnRoaXMub3B0aW9ucy51c2VTeXN0ZW1Gb250cyYmKGguc3lzdGVtRm9udEluZm89Z2V0Rm9udFN1YnN0aXR1dGlvbih0aGlzLnN5c3RlbUZvbnRDYWNoZSx0aGlzLmlkRmFjdG9yeSx0aGlzLm9wdGlvbnMuc3RhbmRhcmRGb250RGF0YVVybCxlLFEscykpO2NvbnN0IHU9YXdhaXQgdGhpcy5leHRyYWN0RGF0YVN0cnVjdHVyZXModCxoKTtpZihBcnJheS5pc0FycmF5KGwpKXtjb25zdCBlPVtdO2xldCB0PW47Zm9yKGNvbnN0IGkgb2YgbCl7Y29uc3QgYT10aGlzLnhyZWYuZmV0Y2hJZlJlZihpKTsibnVtYmVyIj09dHlwZW9mIGEmJihlW3RdPWEpO3QrK311LndpZHRocz1lfWVsc2UgdS53aWR0aHM9dGhpcy5idWlsZENoYXJDb2RlVG9XaWR0aChhLndpZHRocyx1KTtyZXR1cm4gbmV3IEZvbnQoZSxFLHUpfXtjb25zdCBpPWxvb2t1cE5vcm1hbFJlY3QodC5nZXRBcnJheSgiRm9udEJCb3giKSxbMCwwLDAsMF0pOyhlPW5ldyBEaWN0KG51bGwpKS5zZXQoIkZvbnROYW1lIixOYW1lLmdldChzKSk7ZS5zZXQoIkZvbnRCQm94IixpKX19bGV0IGg9ZS5nZXQoIkZvbnROYW1lIiksbD10LmdldCgiQmFzZUZvbnQiKTsic3RyaW5nIj09dHlwZW9mIGgmJihoPU5hbWUuZ2V0KGgpKTsic3RyaW5nIj09dHlwZW9mIGwmJihsPU5hbWUuZ2V0KGwpKTtjb25zdCBRPWg/Lm5hbWUsRT1sPy5uYW1lO2lmKCFDJiZRIT09RSl7aW5mbyhgVGhlIEZvbnREZXNjcmlwdG9yJ3MgRm9udE5hbWUgaXMgIiR7UX0iIGJ1dCBzaG91bGQgYmUgdGhlIHNhbWUgYXMgdGhlIEZvbnQncyBCYXNlRm9udCAiJHtFfSIuYCk7USYmRSYmKEUuc3RhcnRzV2l0aChRKXx8IWlzS25vd25Gb250TmFtZShRKSYmaXNLbm93bkZvbnROYW1lKEUpKSYmKGg9bnVsbCl9aHx8PWw7aWYoIShoIGluc3RhbmNlb2YgTmFtZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJpbnZhbGlkIGZvbnQgbmFtZSIpO2xldCB1LGQsZixwLG07dHJ5e3U9ZS5nZXQoIkZvbnRGaWxlIiwiRm9udEZpbGUyIiwiRm9udEZpbGUzIil9Y2F0Y2goZSl7aWYoIXRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTt3YXJuKGB0cmFuc2xhdGVGb250IC0gZmV0Y2hpbmcgIiR7aC5uYW1lfSIgZm9udCBmaWxlOiAiJHtlfSIuYCk7dT1uZXcgTnVsbFN0cmVhbX1sZXQgeT0hMSx3PW51bGwsYj1udWxsO2lmKHUpe2lmKHUuZGljdCl7Y29uc3QgZT11LmRpY3QuZ2V0KCJTdWJ0eXBlIik7ZSBpbnN0YW5jZW9mIE5hbWUmJihkPWUubmFtZSk7Zj11LmRpY3QuZ2V0KCJMZW5ndGgxIik7cD11LmRpY3QuZ2V0KCJMZW5ndGgyIik7bT11LmRpY3QuZ2V0KCJMZW5ndGgzIil9fWVsc2UgaWYoYyl7Y29uc3QgZT1nZXRYZmFGb250TmFtZShoLm5hbWUpO2lmKGUpe2MuZm9udEZhbWlseT1gJHtjLmZvbnRGYW1pbHl9LVBkZkpTLVhGQWA7Yy5tZXRyaWNzPWUubWV0cmljc3x8bnVsbDt3PWUuZmFjdG9yc3x8bnVsbDt1PWF3YWl0IHRoaXMuZmV0Y2hTdGFuZGFyZEZvbnREYXRhKGUubmFtZSk7eT0hIXU7aT10PWdldFhmYUZvbnREaWN0KGgubmFtZSk7YT0hMH19ZWxzZSBpZighQyl7Y29uc3QgZT1nZXRTdGFuZGFyZEZvbnROYW1lKGgubmFtZSk7aWYoZSl7dT1hd2FpdCB0aGlzLmZldGNoU3RhbmRhcmRGb250RGF0YShlKTt5PSEhdX0heSYmdGhpcy5vcHRpb25zLnVzZVN5c3RlbUZvbnRzJiYoYj1nZXRGb250U3Vic3RpdHV0aW9uKHRoaXMuc3lzdGVtRm9udENhY2hlLHRoaXMuaWRGYWN0b3J5LHRoaXMub3B0aW9ucy5zdGFuZGFyZEZvbnREYXRhVXJsLGgubmFtZSxlLHMpKX1jb25zdCBEPWxvb2t1cE1hdHJpeCh0LmdldEFycmF5KCJGb250TWF0cml4IiksciksUz1sb29rdXBOb3JtYWxSZWN0KGUuZ2V0QXJyYXkoIkZvbnRCQm94Iil8fHQuZ2V0QXJyYXkoIkZvbnRCQm94Iiksdm9pZCAwKTtsZXQgaz1lLmdldCgiQXNjZW50Iik7Im51bWJlciIhPXR5cGVvZiBrJiYoaz12b2lkIDApO2xldCBSPWUuZ2V0KCJEZXNjZW50Iik7Im51bWJlciIhPXR5cGVvZiBSJiYoUj12b2lkIDApO2xldCBOPWUuZ2V0KCJYSGVpZ2h0Iik7Im51bWJlciIhPXR5cGVvZiBOJiYoTj0wKTtsZXQgRz1lLmdldCgiQ2FwSGVpZ2h0Iik7Im51bWJlciIhPXR5cGVvZiBHJiYoRz0wKTtsZXQgeD1lLmdldCgiRmxhZ3MiKTtOdW1iZXIuaXNJbnRlZ2VyKHgpfHwoeD0wKTtsZXQgVT1lLmdldCgiSXRhbGljQW5nbGUiKTsibnVtYmVyIiE9dHlwZW9mIFUmJihVPTApO2NvbnN0IE09e3R5cGU6cyxuYW1lOmgubmFtZSxzdWJ0eXBlOmQsZmlsZTp1LGxlbmd0aDE6ZixsZW5ndGgyOnAsbGVuZ3RoMzptLGlzSW50ZXJuYWxGb250OnksbG9hZGVkTmFtZTppLmxvYWRlZE5hbWUsY29tcG9zaXRlOmEsZml4ZWRQaXRjaDohMSxmb250TWF0cml4OkQsZmlyc3RDaGFyOm4sbGFzdENoYXI6byx0b1VuaWNvZGU6ZyxiYm94OlMsYXNjZW50OmssZGVzY2VudDpSLHhIZWlnaHQ6TixjYXBIZWlnaHQ6RyxmbGFnczp4LGl0YWxpY0FuZ2xlOlUsaXNUeXBlM0ZvbnQ6Qyxjc3NGb250SW5mbzpjLHNjYWxlRmFjdG9yczp3LHN5c3RlbUZvbnRJbmZvOmJ9O2lmKGEpe2NvbnN0IGU9aS5nZXQoIkVuY29kaW5nIik7ZSBpbnN0YW5jZW9mIE5hbWUmJihNLmNpZEVuY29kaW5nPWUubmFtZSk7Y29uc3QgdD1hd2FpdCBDTWFwRmFjdG9yeS5jcmVhdGUoe2VuY29kaW5nOmUsZmV0Y2hCdWlsdEluQ01hcDp0aGlzLl9mZXRjaEJ1aWx0SW5DTWFwQm91bmQsdXNlQ01hcDpudWxsfSk7TS5jTWFwPXQ7TS52ZXJ0aWNhbD1NLmNNYXAudmVydGljYWx9Y29uc3QgTD1hd2FpdCB0aGlzLmV4dHJhY3REYXRhU3RydWN0dXJlcyh0LE0pO3RoaXMuZXh0cmFjdFdpZHRocyh0LGUsTCk7cmV0dXJuIG5ldyBGb250KGgubmFtZSx1LEwpfXN0YXRpYyBidWlsZEZvbnRQYXRocyhlLHQsaSxhKXtmdW5jdGlvbiBidWlsZFBhdGgodCl7Y29uc3Qgcj1gJHtlLmxvYWRlZE5hbWV9X3BhdGhfJHt0fWA7dHJ5e2lmKGUucmVuZGVyZXIuaGFzQnVpbHRQYXRoKHQpKXJldHVybjtpLnNlbmQoImNvbW1vbm9iaiIsW3IsIkZvbnRQYXRoIixlLnJlbmRlcmVyLmdldFBhdGhKcyh0KV0pfWNhdGNoKGUpe2lmKGEuaWdub3JlRXJyb3JzKXt3YXJuKGBidWlsZEZvbnRQYXRocyAtIGlnbm9yaW5nICR7cn0gZ2x5cGg6ICIke2V9Ii5gKTtyZXR1cm59dGhyb3cgZX19Zm9yKGNvbnN0IGUgb2YgdCl7YnVpbGRQYXRoKGUuZm9udENoYXIpO2NvbnN0IHQ9ZS5hY2NlbnQ7dD8uZm9udENoYXImJmJ1aWxkUGF0aCh0LmZvbnRDaGFyKX19c3RhdGljIGdldCBmYWxsYmFja0ZvbnREaWN0KCl7Y29uc3QgZT1uZXcgRGljdDtlLnNldCgiQmFzZUZvbnQiLE5hbWUuZ2V0KCJIZWx2ZXRpY2EiKSk7ZS5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJGYWxsYmFja1R5cGUiKSk7ZS5zZXQoIlN1YnR5cGUiLE5hbWUuZ2V0KCJGYWxsYmFja1R5cGUiKSk7ZS5zZXQoIkVuY29kaW5nIixOYW1lLmdldCgiV2luQW5zaUVuY29kaW5nIikpO3JldHVybiBzaGFkb3codGhpcywiZmFsbGJhY2tGb250RGljdCIsZSl9fWNsYXNzIFRyYW5zbGF0ZWRGb250e2NvbnN0cnVjdG9yKHtsb2FkZWROYW1lOmUsZm9udDp0LGRpY3Q6aSxldmFsdWF0b3JPcHRpb25zOmF9KXt0aGlzLmxvYWRlZE5hbWU9ZTt0aGlzLmZvbnQ9dDt0aGlzLmRpY3Q9aTt0aGlzLl9ldmFsdWF0b3JPcHRpb25zPWF8fHhyO3RoaXMudHlwZTNMb2FkZWQ9bnVsbDt0aGlzLnR5cGUzRGVwZW5kZW5jaWVzPXQuaXNUeXBlM0ZvbnQ/bmV3IFNldDpudWxsO3RoaXMuc2VudD0hMX1zZW5kKGUpe2lmKCF0aGlzLnNlbnQpe3RoaXMuc2VudD0hMDtlLnNlbmQoImNvbW1vbm9iaiIsW3RoaXMubG9hZGVkTmFtZSwiRm9udCIsdGhpcy5mb250LmV4cG9ydERhdGEodGhpcy5fZXZhbHVhdG9yT3B0aW9ucy5mb250RXh0cmFQcm9wZXJ0aWVzKV0pfX1mYWxsYmFjayhlKXtpZih0aGlzLmZvbnQuZGF0YSl7dGhpcy5mb250LmRpc2FibGVGb250RmFjZT0hMDtQYXJ0aWFsRXZhbHVhdG9yLmJ1aWxkRm9udFBhdGhzKHRoaXMuZm9udCx0aGlzLmZvbnQuZ2x5cGhDYWNoZVZhbHVlcyxlLHRoaXMuX2V2YWx1YXRvck9wdGlvbnMpfX1sb2FkVHlwZTNEYXRhKGUsdCxpKXtpZih0aGlzLnR5cGUzTG9hZGVkKXJldHVybiB0aGlzLnR5cGUzTG9hZGVkO2lmKCF0aGlzLmZvbnQuaXNUeXBlM0ZvbnQpdGhyb3cgbmV3IEVycm9yKCJNdXN0IGJlIGEgVHlwZTMgZm9udC4iKTtjb25zdCBhPWUuY2xvbmUoe2lnbm9yZUVycm9yczohMX0pLHI9bmV3IFJlZlNldChlLnR5cGUzRm9udFJlZnMpO3RoaXMuZGljdC5vYmpJZCYmIXIuaGFzKHRoaXMuZGljdC5vYmpJZCkmJnIucHV0KHRoaXMuZGljdC5vYmpJZCk7YS50eXBlM0ZvbnRSZWZzPXI7Y29uc3Qgcz10aGlzLmZvbnQsbj10aGlzLnR5cGUzRGVwZW5kZW5jaWVzO2xldCBvPVByb21pc2UucmVzb2x2ZSgpO2NvbnN0IGc9dGhpcy5kaWN0LmdldCgiQ2hhclByb2NzIiksYz10aGlzLmRpY3QuZ2V0KCJSZXNvdXJjZXMiKXx8dCxDPU9iamVjdC5jcmVhdGUobnVsbCksaD1VdGlsLm5vcm1hbGl6ZVJlY3Qocy5iYm94fHxbMCwwLDAsMF0pLGw9aFsyXS1oWzBdLFE9aFszXS1oWzFdLEU9TWF0aC5oeXBvdChsLFEpO2Zvcihjb25zdCBlIG9mIGcuZ2V0S2V5cygpKW89by50aGVuKCgoKT0+e2NvbnN0IHQ9Zy5nZXQoZSkscj1uZXcgT3BlcmF0b3JMaXN0O3JldHVybiBhLmdldE9wZXJhdG9yTGlzdCh7c3RyZWFtOnQsdGFzazppLHJlc291cmNlczpjLG9wZXJhdG9yTGlzdDpyfSkudGhlbigoKCk9PntyLmZuQXJyYXlbMF09PT1mZSYmdGhpcy5fcmVtb3ZlVHlwZTNDb2xvck9wZXJhdG9ycyhyLEUpO0NbZV09ci5nZXRJUigpO2Zvcihjb25zdCBlIG9mIHIuZGVwZW5kZW5jaWVzKW4uYWRkKGUpfSkpLmNhdGNoKChmdW5jdGlvbih0KXt3YXJuKGBUeXBlMyBmb250IHJlc291cmNlICIke2V9IiBpcyBub3QgYXZhaWxhYmxlLmApO2NvbnN0IGk9bmV3IE9wZXJhdG9yTGlzdDtDW2VdPWkuZ2V0SVIoKX0pKX0pKTt0aGlzLnR5cGUzTG9hZGVkPW8udGhlbigoKCk9PntzLmNoYXJQcm9jT3BlcmF0b3JMaXN0PUM7aWYodGhpcy5fYmJveCl7cy5pc0NoYXJCQm94PSEwO3MuYmJveD10aGlzLl9iYm94fX0pKTtyZXR1cm4gdGhpcy50eXBlM0xvYWRlZH1fcmVtb3ZlVHlwZTNDb2xvck9wZXJhdG9ycyhlLHQ9TmFOKXtjb25zdCBpPVV0aWwubm9ybWFsaXplUmVjdChlLmFyZ3NBcnJheVswXS5zbGljZSgyKSksYT1pWzJdLWlbMF0scj1pWzNdLWlbMV0scz1NYXRoLmh5cG90KGEscik7aWYoMD09PWF8fDA9PT1yKXtlLmZuQXJyYXkuc3BsaWNlKDAsMSk7ZS5hcmdzQXJyYXkuc3BsaWNlKDAsMSl9ZWxzZSBpZigwPT09dHx8TWF0aC5yb3VuZChzL3QpPj0xMCl7dGhpcy5fYmJveHx8KHRoaXMuX2Jib3g9WzEvMCwxLzAsLTEvMCwtMS8wXSk7dGhpcy5fYmJveFswXT1NYXRoLm1pbih0aGlzLl9iYm94WzBdLGlbMF0pO3RoaXMuX2Jib3hbMV09TWF0aC5taW4odGhpcy5fYmJveFsxXSxpWzFdKTt0aGlzLl9iYm94WzJdPU1hdGgubWF4KHRoaXMuX2Jib3hbMl0saVsyXSk7dGhpcy5fYmJveFszXT1NYXRoLm1heCh0aGlzLl9iYm94WzNdLGlbM10pfWxldCBuPTAsbz1lLmxlbmd0aDtmb3IoO248bzspe3N3aXRjaChlLmZuQXJyYXlbbl0pe2Nhc2UgZmU6YnJlYWs7Y2FzZSBwZTpjYXNlIG1lOmNhc2UgeWU6Y2FzZSB3ZTpjYXNlIGJlOmNhc2UgRGU6Y2FzZSBGZTpjYXNlIFNlOmNhc2Uga2U6Y2FzZSBSZTpjYXNlIE5lOmNhc2UgR2U6Y2FzZSB4ZTpjYXNlIEdBOmUuZm5BcnJheS5zcGxpY2UobiwxKTtlLmFyZ3NBcnJheS5zcGxpY2UobiwxKTtvLS07Y29udGludWU7Y2FzZSBVQTpjb25zdFt0XT1lLmFyZ3NBcnJheVtuXTtsZXQgaT0wLGE9dC5sZW5ndGg7Zm9yKDtpPGE7KXtjb25zdFtlXT10W2ldO3N3aXRjaChlKXtjYXNlIlRSIjpjYXNlIlRSMiI6Y2FzZSJIVCI6Y2FzZSJCRyI6Y2FzZSJCRzIiOmNhc2UiVUNSIjpjYXNlIlVDUjIiOnQuc3BsaWNlKGksMSk7YS0tO2NvbnRpbnVlfWkrK319bisrfX19Y2xhc3MgU3RhdGVNYW5hZ2Vye2NvbnN0cnVjdG9yKGU9bmV3IEV2YWxTdGF0ZSl7dGhpcy5zdGF0ZT1lO3RoaXMuc3RhdGVTdGFjaz1bXX1zYXZlKCl7Y29uc3QgZT10aGlzLnN0YXRlO3RoaXMuc3RhdGVTdGFjay5wdXNoKHRoaXMuc3RhdGUpO3RoaXMuc3RhdGU9ZS5jbG9uZSgpfXJlc3RvcmUoKXtjb25zdCBlPXRoaXMuc3RhdGVTdGFjay5wb3AoKTtlJiYodGhpcy5zdGF0ZT1lKX10cmFuc2Zvcm0oZSl7dGhpcy5zdGF0ZS5jdG09VXRpbC50cmFuc2Zvcm0odGhpcy5zdGF0ZS5jdG0sZSl9fWNsYXNzIFRleHRTdGF0ZXtjb25zdHJ1Y3Rvcigpe3RoaXMuY3RtPW5ldyBGbG9hdDMyQXJyYXkoYSk7dGhpcy5mb250TmFtZT1udWxsO3RoaXMuZm9udFNpemU9MDt0aGlzLmxvYWRlZE5hbWU9bnVsbDt0aGlzLmZvbnQ9bnVsbDt0aGlzLmZvbnRNYXRyaXg9cjt0aGlzLnRleHRNYXRyaXg9YS5zbGljZSgpO3RoaXMudGV4dExpbmVNYXRyaXg9YS5zbGljZSgpO3RoaXMuY2hhclNwYWNpbmc9MDt0aGlzLndvcmRTcGFjaW5nPTA7dGhpcy5sZWFkaW5nPTA7dGhpcy50ZXh0SFNjYWxlPTE7dGhpcy50ZXh0UmlzZT0wfXNldFRleHRNYXRyaXgoZSx0LGksYSxyLHMpe2NvbnN0IG49dGhpcy50ZXh0TWF0cml4O25bMF09ZTtuWzFdPXQ7blsyXT1pO25bM109YTtuWzRdPXI7bls1XT1zfXNldFRleHRMaW5lTWF0cml4KGUsdCxpLGEscixzKXtjb25zdCBuPXRoaXMudGV4dExpbmVNYXRyaXg7blswXT1lO25bMV09dDtuWzJdPWk7blszXT1hO25bNF09cjtuWzVdPXN9dHJhbnNsYXRlVGV4dE1hdHJpeChlLHQpe2NvbnN0IGk9dGhpcy50ZXh0TWF0cml4O2lbNF09aVswXSplK2lbMl0qdCtpWzRdO2lbNV09aVsxXSplK2lbM10qdCtpWzVdfXRyYW5zbGF0ZVRleHRMaW5lTWF0cml4KGUsdCl7Y29uc3QgaT10aGlzLnRleHRMaW5lTWF0cml4O2lbNF09aVswXSplK2lbMl0qdCtpWzRdO2lbNV09aVsxXSplK2lbM10qdCtpWzVdfWNhcnJpYWdlUmV0dXJuKCl7dGhpcy50cmFuc2xhdGVUZXh0TGluZU1hdHJpeCgwLC10aGlzLmxlYWRpbmcpO3RoaXMudGV4dE1hdHJpeD10aGlzLnRleHRMaW5lTWF0cml4LnNsaWNlKCl9Y2xvbmUoKXtjb25zdCBlPU9iamVjdC5jcmVhdGUodGhpcyk7ZS50ZXh0TWF0cml4PXRoaXMudGV4dE1hdHJpeC5zbGljZSgpO2UudGV4dExpbmVNYXRyaXg9dGhpcy50ZXh0TGluZU1hdHJpeC5zbGljZSgpO2UuZm9udE1hdHJpeD10aGlzLmZvbnRNYXRyaXguc2xpY2UoKTtyZXR1cm4gZX19Y2xhc3MgRXZhbFN0YXRle2NvbnN0cnVjdG9yKCl7dGhpcy5jdG09bmV3IEZsb2F0MzJBcnJheShhKTt0aGlzLmZvbnQ9bnVsbDt0aGlzLnRleHRSZW5kZXJpbmdNb2RlPWI7dGhpcy5fZmlsbENvbG9yU3BhY2U9Q29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXk7dGhpcy5fc3Ryb2tlQ29sb3JTcGFjZT1Db2xvclNwYWNlLnNpbmdsZXRvbnMuZ3JheTt0aGlzLnBhdHRlcm5GaWxsQ29sb3JTcGFjZT1udWxsO3RoaXMucGF0dGVyblN0cm9rZUNvbG9yU3BhY2U9bnVsbH1nZXQgZmlsbENvbG9yU3BhY2UoKXtyZXR1cm4gdGhpcy5fZmlsbENvbG9yU3BhY2V9c2V0IGZpbGxDb2xvclNwYWNlKGUpe3RoaXMuX2ZpbGxDb2xvclNwYWNlPXRoaXMucGF0dGVybkZpbGxDb2xvclNwYWNlPWV9Z2V0IHN0cm9rZUNvbG9yU3BhY2UoKXtyZXR1cm4gdGhpcy5fc3Ryb2tlQ29sb3JTcGFjZX1zZXQgc3Ryb2tlQ29sb3JTcGFjZShlKXt0aGlzLl9zdHJva2VDb2xvclNwYWNlPXRoaXMucGF0dGVyblN0cm9rZUNvbG9yU3BhY2U9ZX1jbG9uZSgpe3JldHVybiBPYmplY3QuY3JlYXRlKHRoaXMpfX1jbGFzcyBFdmFsdWF0b3JQcmVwcm9jZXNzb3J7c3RhdGljIGdldCBvcE1hcCgpe3JldHVybiBzaGFkb3codGhpcywib3BNYXAiLE9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShudWxsKSx7dzp7aWQ6RkEsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sSjp7aWQ6U0EsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sajp7aWQ6a0EsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sTTp7aWQ6UkEsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sZDp7aWQ6TkEsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX0scmk6e2lkOkdBLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LGk6e2lkOnhBLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LGdzOntpZDpVQSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxxOntpZDpNQSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxROntpZDpMQSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxjbTp7aWQ6SEEsbnVtQXJnczo2LHZhcmlhYmxlQXJnczohMX0sbTp7aWQ6SkEsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX0sbDp7aWQ6dkEsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX0sYzp7aWQ6WUEsbnVtQXJnczo2LHZhcmlhYmxlQXJnczohMX0sdjp7aWQ6VEEsbnVtQXJnczo0LHZhcmlhYmxlQXJnczohMX0seTp7aWQ6S0EsbnVtQXJnczo0LHZhcmlhYmxlQXJnczohMX0saDp7aWQ6cUEsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0scmU6e2lkOk9BLG51bUFyZ3M6NCx2YXJpYWJsZUFyZ3M6ITF9LFM6e2lkOlBBLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LHM6e2lkOldBLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LGY6e2lkOmpBLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LEY6e2lkOmpBLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LCJmKiI6e2lkOlhBLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LEI6e2lkOlpBLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LCJCKiI6e2lkOlZBLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LGI6e2lkOl9BLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LCJiKiI6e2lkOnpBLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LG46e2lkOiRBLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LFc6e2lkOkFlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LCJXKiI6e2lkOmVlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LEJUOntpZDp0ZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxFVDp7aWQ6aWUsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sVGM6e2lkOmFlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LFR3OntpZDpyZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxUejp7aWQ6c2UsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sVEw6e2lkOm5lLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LFRmOntpZDpvZSxudW1BcmdzOjIsdmFyaWFibGVBcmdzOiExfSxUcjp7aWQ6Z2UsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sVHM6e2lkOkllLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LFRkOntpZDpjZSxudW1BcmdzOjIsdmFyaWFibGVBcmdzOiExfSxURDp7aWQ6Q2UsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX0sVG06e2lkOmhlLG51bUFyZ3M6Nix2YXJpYWJsZUFyZ3M6ITF9LCJUKiI6e2lkOmxlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LFRqOntpZDpCZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxUSjp7aWQ6UWUsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sIiciOntpZDpFZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSwnIic6e2lkOnVlLG51bUFyZ3M6Myx2YXJpYWJsZUFyZ3M6ITF9LGQwOntpZDpkZSxudW1BcmdzOjIsdmFyaWFibGVBcmdzOiExfSxkMTp7aWQ6ZmUsbnVtQXJnczo2LHZhcmlhYmxlQXJnczohMX0sQ1M6e2lkOnBlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LGNzOntpZDptZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxTQzp7aWQ6eWUsbnVtQXJnczo0LHZhcmlhYmxlQXJnczohMH0sU0NOOntpZDp3ZSxudW1BcmdzOjMzLHZhcmlhYmxlQXJnczohMH0sc2M6e2lkOmJlLG51bUFyZ3M6NCx2YXJpYWJsZUFyZ3M6ITB9LHNjbjp7aWQ6RGUsbnVtQXJnczozMyx2YXJpYWJsZUFyZ3M6ITB9LEc6e2lkOkZlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LGc6e2lkOlNlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LFJHOntpZDprZSxudW1BcmdzOjMsdmFyaWFibGVBcmdzOiExfSxyZzp7aWQ6UmUsbnVtQXJnczozLHZhcmlhYmxlQXJnczohMX0sSzp7aWQ6TmUsbnVtQXJnczo0LHZhcmlhYmxlQXJnczohMX0sazp7aWQ6R2UsbnVtQXJnczo0LHZhcmlhYmxlQXJnczohMX0sc2g6e2lkOnhlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LEJJOntpZDpVZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxJRDp7aWQ6TWUsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sRUk6e2lkOkxlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LERvOntpZDpIZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxNUDp7aWQ6SmUsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sRFA6e2lkOnZlLG51bUFyZ3M6Mix2YXJpYWJsZUFyZ3M6ITF9LEJNQzp7aWQ6WWUsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sQkRDOntpZDpUZSxudW1BcmdzOjIsdmFyaWFibGVBcmdzOiExfSxFTUM6e2lkOktlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LEJYOntpZDpxZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxFWDp7aWQ6T2UsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sQk06bnVsbCxCRDpudWxsLHRydWU6bnVsbCxmYTpudWxsLGZhbDpudWxsLGZhbHM6bnVsbCxmYWxzZTpudWxsLG51Om51bGwsbnVsOm51bGwsbnVsbDpudWxsfSkpfXN0YXRpYyBNQVhfSU5WQUxJRF9QQVRIX09QUz0xMDtjb25zdHJ1Y3RvcihlLHQsaT1uZXcgU3RhdGVNYW5hZ2VyKXt0aGlzLnBhcnNlcj1uZXcgUGFyc2VyKHtsZXhlcjpuZXcgTGV4ZXIoZSxFdmFsdWF0b3JQcmVwcm9jZXNzb3Iub3BNYXApLHhyZWY6dH0pO3RoaXMuc3RhdGVNYW5hZ2VyPWk7dGhpcy5ub25Qcm9jZXNzZWRBcmdzPVtdO3RoaXMuX2lzUGF0aE9wPSExO3RoaXMuX251bUludmFsaWRQYXRoT1BTPTB9Z2V0IHNhdmVkU3RhdGVzRGVwdGgoKXtyZXR1cm4gdGhpcy5zdGF0ZU1hbmFnZXIuc3RhdGVTdGFjay5sZW5ndGh9cmVhZChlKXtsZXQgdD1lLmFyZ3M7Zm9yKDs7KXtjb25zdCBpPXRoaXMucGFyc2VyLmdldE9iaigpO2lmKGkgaW5zdGFuY2VvZiBDbWQpe2NvbnN0IGE9aS5jbWQscj1FdmFsdWF0b3JQcmVwcm9jZXNzb3Iub3BNYXBbYV07aWYoIXIpe3dhcm4oYFVua25vd24gY29tbWFuZCAiJHthfSIuYCk7Y29udGludWV9Y29uc3Qgcz1yLmlkLG49ci5udW1BcmdzO2xldCBvPW51bGwhPT10P3QubGVuZ3RoOjA7dGhpcy5faXNQYXRoT3B8fCh0aGlzLl9udW1JbnZhbGlkUGF0aE9QUz0wKTt0aGlzLl9pc1BhdGhPcD1zPj1KQSYmczw9JEE7aWYoci52YXJpYWJsZUFyZ3Mpbz5uJiZpbmZvKGBDb21tYW5kICR7YX06IGV4cGVjdGVkIFswLCAke259XSBhcmdzLCBidXQgcmVjZWl2ZWQgJHtvfSBhcmdzLmApO2Vsc2V7aWYobyE9PW4pe2NvbnN0IGU9dGhpcy5ub25Qcm9jZXNzZWRBcmdzO2Zvcig7bz5uOyl7ZS5wdXNoKHQuc2hpZnQoKSk7by0tfWZvcig7bzxuJiYwIT09ZS5sZW5ndGg7KXtudWxsPT09dCYmKHQ9W10pO3QudW5zaGlmdChlLnBvcCgpKTtvKyt9fWlmKG88bil7Y29uc3QgZT1gY29tbWFuZCAke2F9OiBleHBlY3RlZCAke259IGFyZ3MsIGJ1dCByZWNlaXZlZCAke299IGFyZ3MuYDtpZih0aGlzLl9pc1BhdGhPcCYmKyt0aGlzLl9udW1JbnZhbGlkUGF0aE9QUz5FdmFsdWF0b3JQcmVwcm9jZXNzb3IuTUFYX0lOVkFMSURfUEFUSF9PUFMpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkICR7ZX1gKTt3YXJuKGBTa2lwcGluZyAke2V9YCk7bnVsbCE9PXQmJih0Lmxlbmd0aD0wKTtjb250aW51ZX19dGhpcy5wcmVwcm9jZXNzQ29tbWFuZChzLHQpO2UuZm49cztlLmFyZ3M9dDtyZXR1cm4hMH1pZihpPT09RHQpcmV0dXJuITE7aWYobnVsbCE9PWkpe251bGw9PT10JiYodD1bXSk7dC5wdXNoKGkpO2lmKHQubGVuZ3RoPjMzKXRocm93IG5ldyBGb3JtYXRFcnJvcigiVG9vIG1hbnkgYXJndW1lbnRzIil9fX1wcmVwcm9jZXNzQ29tbWFuZChlLHQpe3N3aXRjaCgwfGUpe2Nhc2UgTUE6dGhpcy5zdGF0ZU1hbmFnZXIuc2F2ZSgpO2JyZWFrO2Nhc2UgTEE6dGhpcy5zdGF0ZU1hbmFnZXIucmVzdG9yZSgpO2JyZWFrO2Nhc2UgSEE6dGhpcy5zdGF0ZU1hbmFnZXIudHJhbnNmb3JtKHQpfX19Y2xhc3MgRGVmYXVsdEFwcGVhcmFuY2VFdmFsdWF0b3IgZXh0ZW5kcyBFdmFsdWF0b3JQcmVwcm9jZXNzb3J7Y29uc3RydWN0b3IoZSl7c3VwZXIobmV3IFN0cmluZ1N0cmVhbShlKSl9cGFyc2UoKXtjb25zdCBlPXtmbjowLGFyZ3M6W119LHQ9e2ZvbnRTaXplOjAsZm9udE5hbWU6IiIsZm9udENvbG9yOm5ldyBVaW50OENsYW1wZWRBcnJheSgzKX07dHJ5e2Zvcig7Oyl7ZS5hcmdzLmxlbmd0aD0wO2lmKCF0aGlzLnJlYWQoZSkpYnJlYWs7aWYoMCE9PXRoaXMuc2F2ZWRTdGF0ZXNEZXB0aCljb250aW51ZTtjb25zdHtmbjppLGFyZ3M6YX09ZTtzd2l0Y2goMHxpKXtjYXNlIG9lOmNvbnN0W2UsaV09YTtlIGluc3RhbmNlb2YgTmFtZSYmKHQuZm9udE5hbWU9ZS5uYW1lKTsibnVtYmVyIj09dHlwZW9mIGkmJmk+MCYmKHQuZm9udFNpemU9aSk7YnJlYWs7Y2FzZSBSZTpDb2xvclNwYWNlLnNpbmdsZXRvbnMucmdiLmdldFJnYkl0ZW0oYSwwLHQuZm9udENvbG9yLDApO2JyZWFrO2Nhc2UgU2U6Q29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXkuZ2V0UmdiSXRlbShhLDAsdC5mb250Q29sb3IsMCk7YnJlYWs7Y2FzZSBHZTpDb2xvclNwYWNlLnNpbmdsZXRvbnMuY215ay5nZXRSZ2JJdGVtKGEsMCx0LmZvbnRDb2xvciwwKX19fWNhdGNoKGUpe3dhcm4oYHBhcnNlRGVmYXVsdEFwcGVhcmFuY2UgLSBpZ25vcmluZyBlcnJvcnM6ICIke2V9Ii5gKX1yZXR1cm4gdH19ZnVuY3Rpb24gcGFyc2VEZWZhdWx0QXBwZWFyYW5jZShlKXtyZXR1cm4gbmV3IERlZmF1bHRBcHBlYXJhbmNlRXZhbHVhdG9yKGUpLnBhcnNlKCl9Y2xhc3MgQXBwZWFyYW5jZVN0cmVhbUV2YWx1YXRvciBleHRlbmRzIEV2YWx1YXRvclByZXByb2Nlc3Nvcntjb25zdHJ1Y3RvcihlLHQsaSl7c3VwZXIoZSk7dGhpcy5zdHJlYW09ZTt0aGlzLmV2YWx1YXRvck9wdGlvbnM9dDt0aGlzLnhyZWY9aTt0aGlzLnJlc291cmNlcz1lLmRpY3Q/LmdldCgiUmVzb3VyY2VzIil9cGFyc2UoKXtjb25zdCBlPXtmbjowLGFyZ3M6W119O2xldCB0PXtzY2FsZUZhY3RvcjoxLGZvbnRTaXplOjAsZm9udE5hbWU6IiIsZm9udENvbG9yOm5ldyBVaW50OENsYW1wZWRBcnJheSgzKSxmaWxsQ29sb3JTcGFjZTpDb2xvclNwYWNlLnNpbmdsZXRvbnMuZ3JheX0saT0hMTtjb25zdCBhPVtdO3RyeXtmb3IoOzspe2UuYXJncy5sZW5ndGg9MDtpZihpfHwhdGhpcy5yZWFkKGUpKWJyZWFrO2NvbnN0e2ZuOnIsYXJnczpzfT1lO3N3aXRjaCgwfHIpe2Nhc2UgTUE6YS5wdXNoKHtzY2FsZUZhY3Rvcjp0LnNjYWxlRmFjdG9yLGZvbnRTaXplOnQuZm9udFNpemUsZm9udE5hbWU6dC5mb250TmFtZSxmb250Q29sb3I6dC5mb250Q29sb3Iuc2xpY2UoKSxmaWxsQ29sb3JTcGFjZTp0LmZpbGxDb2xvclNwYWNlfSk7YnJlYWs7Y2FzZSBMQTp0PWEucG9wKCl8fHQ7YnJlYWs7Y2FzZSBoZTp0LnNjYWxlRmFjdG9yKj1NYXRoLmh5cG90KHNbMF0sc1sxXSk7YnJlYWs7Y2FzZSBvZTpjb25zdFtlLHJdPXM7ZSBpbnN0YW5jZW9mIE5hbWUmJih0LmZvbnROYW1lPWUubmFtZSk7Im51bWJlciI9PXR5cGVvZiByJiZyPjAmJih0LmZvbnRTaXplPXIqdC5zY2FsZUZhY3Rvcik7YnJlYWs7Y2FzZSBtZTp0LmZpbGxDb2xvclNwYWNlPUNvbG9yU3BhY2UucGFyc2Uoe2NzOnNbMF0seHJlZjp0aGlzLnhyZWYscmVzb3VyY2VzOnRoaXMucmVzb3VyY2VzLHBkZkZ1bmN0aW9uRmFjdG9yeTp0aGlzLl9wZGZGdW5jdGlvbkZhY3RvcnksbG9jYWxDb2xvclNwYWNlQ2FjaGU6dGhpcy5fbG9jYWxDb2xvclNwYWNlQ2FjaGV9KTticmVhaztjYXNlIGJlOnQuZmlsbENvbG9yU3BhY2UuZ2V0UmdiSXRlbShzLDAsdC5mb250Q29sb3IsMCk7YnJlYWs7Y2FzZSBSZTpDb2xvclNwYWNlLnNpbmdsZXRvbnMucmdiLmdldFJnYkl0ZW0ocywwLHQuZm9udENvbG9yLDApO2JyZWFrO2Nhc2UgU2U6Q29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXkuZ2V0UmdiSXRlbShzLDAsdC5mb250Q29sb3IsMCk7YnJlYWs7Y2FzZSBHZTpDb2xvclNwYWNlLnNpbmdsZXRvbnMuY215ay5nZXRSZ2JJdGVtKHMsMCx0LmZvbnRDb2xvciwwKTticmVhaztjYXNlIEJlOmNhc2UgUWU6Y2FzZSBFZTpjYXNlIHVlOmk9ITB9fX1jYXRjaChlKXt3YXJuKGBwYXJzZUFwcGVhcmFuY2VTdHJlYW0gLSBpZ25vcmluZyBlcnJvcnM6ICIke2V9Ii5gKX10aGlzLnN0cmVhbS5yZXNldCgpO2RlbGV0ZSB0LnNjYWxlRmFjdG9yO2RlbGV0ZSB0LmZpbGxDb2xvclNwYWNlO3JldHVybiB0fWdldCBfbG9jYWxDb2xvclNwYWNlQ2FjaGUoKXtyZXR1cm4gc2hhZG93KHRoaXMsIl9sb2NhbENvbG9yU3BhY2VDYWNoZSIsbmV3IExvY2FsQ29sb3JTcGFjZUNhY2hlKX1nZXQgX3BkZkZ1bmN0aW9uRmFjdG9yeSgpe3JldHVybiBzaGFkb3codGhpcywiX3BkZkZ1bmN0aW9uRmFjdG9yeSIsbmV3IFBERkZ1bmN0aW9uRmFjdG9yeSh7eHJlZjp0aGlzLnhyZWYsaXNFdmFsU3VwcG9ydGVkOnRoaXMuZXZhbHVhdG9yT3B0aW9ucy5pc0V2YWxTdXBwb3J0ZWR9KSl9fWZ1bmN0aW9uIGdldFBkZkNvbG9yKGUsdCl7aWYoZVswXT09PWVbMV0mJmVbMV09PT1lWzJdKXtyZXR1cm5gJHtudW1iZXJUb1N0cmluZyhlWzBdLzI1NSl9ICR7dD8iZyI6IkcifWB9cmV0dXJuIEFycmF5LmZyb20oZSwoZT0+bnVtYmVyVG9TdHJpbmcoZS8yNTUpKSkuam9pbigiICIpKyIgIisodD8icmciOiJSRyIpfWNsYXNzIEZha2VVbmljb2RlRm9udHtjb25zdHJ1Y3RvcihlLHQpe3RoaXMueHJlZj1lO3RoaXMud2lkdGhzPW51bGw7dGhpcy5maXJzdENoYXI9MS8wO3RoaXMubGFzdENoYXI9LTEvMDt0aGlzLmZvbnRGYW1pbHk9dDtjb25zdCBpPW5ldyBPZmZzY3JlZW5DYW52YXMoMSwxKTt0aGlzLmN0eE1lYXN1cmU9aS5nZXRDb250ZXh0KCIyZCIse3dpbGxSZWFkRnJlcXVlbnRseTohMH0pO0Zha2VVbmljb2RlRm9udC5fZm9udE5hbWVJZHx8KEZha2VVbmljb2RlRm9udC5fZm9udE5hbWVJZD0xKTt0aGlzLmZvbnROYW1lPU5hbWUuZ2V0KGBJbnZhbGlkUERGanNGb250XyR7dH1fJHtGYWtlVW5pY29kZUZvbnQuX2ZvbnROYW1lSWQrK31gKX1nZXQgZm9udERlc2NyaXB0b3JSZWYoKXtpZighRmFrZVVuaWNvZGVGb250Ll9mb250RGVzY3JpcHRvclJlZil7Y29uc3QgZT1uZXcgRGljdCh0aGlzLnhyZWYpO2Uuc2V0KCJUeXBlIixOYW1lLmdldCgiRm9udERlc2NyaXB0b3IiKSk7ZS5zZXQoIkZvbnROYW1lIix0aGlzLmZvbnROYW1lKTtlLnNldCgiRm9udEZhbWlseSIsIk15cmlhZFBybyBSZWd1bGFyIik7ZS5zZXQoIkZvbnRCQm94IixbMCwwLDAsMF0pO2Uuc2V0KCJGb250U3RyZXRjaCIsTmFtZS5nZXQoIk5vcm1hbCIpKTtlLnNldCgiRm9udFdlaWdodCIsNDAwKTtlLnNldCgiSXRhbGljQW5nbGUiLDApO0Zha2VVbmljb2RlRm9udC5fZm9udERlc2NyaXB0b3JSZWY9dGhpcy54cmVmLmdldE5ld1BlcnNpc3RlbnRSZWYoZSl9cmV0dXJuIEZha2VVbmljb2RlRm9udC5fZm9udERlc2NyaXB0b3JSZWZ9Z2V0IGRlc2NlbmRhbnRGb250UmVmKCl7Y29uc3QgZT1uZXcgRGljdCh0aGlzLnhyZWYpO2Uuc2V0KCJCYXNlRm9udCIsdGhpcy5mb250TmFtZSk7ZS5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJGb250IikpO2Uuc2V0KCJTdWJ0eXBlIixOYW1lLmdldCgiQ0lERm9udFR5cGUwIikpO2Uuc2V0KCJDSURUb0dJRE1hcCIsTmFtZS5nZXQoIklkZW50aXR5IikpO2Uuc2V0KCJGaXJzdENoYXIiLHRoaXMuZmlyc3RDaGFyKTtlLnNldCgiTGFzdENoYXIiLHRoaXMubGFzdENoYXIpO2Uuc2V0KCJGb250RGVzY3JpcHRvciIsdGhpcy5mb250RGVzY3JpcHRvclJlZik7ZS5zZXQoIkRXIiwxZTMpO2NvbnN0IHQ9W10saT1bLi4udGhpcy53aWR0aHMuZW50cmllcygpXS5zb3J0KCk7bGV0IGE9bnVsbCxyPW51bGw7Zm9yKGNvbnN0W2Usc11vZiBpKWlmKGEpaWYoZT09PWErci5sZW5ndGgpci5wdXNoKHMpO2Vsc2V7dC5wdXNoKGEscik7YT1lO3I9W3NdfWVsc2V7YT1lO3I9W3NdfWEmJnQucHVzaChhLHIpO2Uuc2V0KCJXIix0KTtjb25zdCBzPW5ldyBEaWN0KHRoaXMueHJlZik7cy5zZXQoIk9yZGVyaW5nIiwiSWRlbnRpdHkiKTtzLnNldCgiUmVnaXN0cnkiLCJBZG9iZSIpO3Muc2V0KCJTdXBwbGVtZW50IiwwKTtlLnNldCgiQ0lEU3lzdGVtSW5mbyIscyk7cmV0dXJuIHRoaXMueHJlZi5nZXROZXdQZXJzaXN0ZW50UmVmKGUpfWdldCBiYXNlRm9udFJlZigpe2NvbnN0IGU9bmV3IERpY3QodGhpcy54cmVmKTtlLnNldCgiQmFzZUZvbnQiLHRoaXMuZm9udE5hbWUpO2Uuc2V0KCJUeXBlIixOYW1lLmdldCgiRm9udCIpKTtlLnNldCgiU3VidHlwZSIsTmFtZS5nZXQoIlR5cGUwIikpO2Uuc2V0KCJFbmNvZGluZyIsTmFtZS5nZXQoIklkZW50aXR5LUgiKSk7ZS5zZXQoIkRlc2NlbmRhbnRGb250cyIsW3RoaXMuZGVzY2VuZGFudEZvbnRSZWZdKTtlLnNldCgiVG9Vbmljb2RlIixOYW1lLmdldCgiSWRlbnRpdHktSCIpKTtyZXR1cm4gdGhpcy54cmVmLmdldE5ld1BlcnNpc3RlbnRSZWYoZSl9Z2V0IHJlc291cmNlcygpe2NvbnN0IGU9bmV3IERpY3QodGhpcy54cmVmKSx0PW5ldyBEaWN0KHRoaXMueHJlZik7dC5zZXQodGhpcy5mb250TmFtZS5uYW1lLHRoaXMuYmFzZUZvbnRSZWYpO2Uuc2V0KCJGb250Iix0KTtyZXR1cm4gZX1fY3JlYXRlQ29udGV4dCgpe3RoaXMud2lkdGhzPW5ldyBNYXA7dGhpcy5jdHhNZWFzdXJlLmZvbnQ9YDEwMDBweCAke3RoaXMuZm9udEZhbWlseX1gO3JldHVybiB0aGlzLmN0eE1lYXN1cmV9Y3JlYXRlRm9udFJlc291cmNlcyhlKXtjb25zdCB0PXRoaXMuX2NyZWF0ZUNvbnRleHQoKTtmb3IoY29uc3QgaSBvZiBlLnNwbGl0KC9cclxuP3xcbi8pKWZvcihjb25zdCBlIG9mIGkuc3BsaXQoIiIpKXtjb25zdCBpPWUuY2hhckNvZGVBdCgwKTtpZih0aGlzLndpZHRocy5oYXMoaSkpY29udGludWU7Y29uc3QgYT10Lm1lYXN1cmVUZXh0KGUpLHI9TWF0aC5jZWlsKGEud2lkdGgpO3RoaXMud2lkdGhzLnNldChpLHIpO3RoaXMuZmlyc3RDaGFyPU1hdGgubWluKGksdGhpcy5maXJzdENoYXIpO3RoaXMubGFzdENoYXI9TWF0aC5tYXgoaSx0aGlzLmxhc3RDaGFyKX1yZXR1cm4gdGhpcy5yZXNvdXJjZXN9c3RhdGljIGdldEZpcnN0UG9zaXRpb25JbmZvKGUsdCxpKXtjb25zdFthLHIsbyxnXT1lO2xldCBjPW8tYSxDPWctcjt0JTE4MCE9MCYmKFtjLENdPVtDLGNdKTtjb25zdCBoPXMqaTtyZXR1cm57Y29vcmRzOlswLEMrbippLWhdLGJib3g6WzAsMCxjLENdLG1hdHJpeDowIT09dD9nZXRSb3RhdGlvbk1hdHJpeCh0LEMsaCk6dm9pZCAwfX1jcmVhdGVBcHBlYXJhbmNlKGUsdCxpLGEscixvKXtjb25zdCBnPXRoaXMuX2NyZWF0ZUNvbnRleHQoKSxjPVtdO2xldCBDPS0xLzA7Zm9yKGNvbnN0IHQgb2YgZS5zcGxpdCgvXHJcbj98XG4vKSl7Yy5wdXNoKHQpO2NvbnN0IGU9Zy5tZWFzdXJlVGV4dCh0KS53aWR0aDtDPU1hdGgubWF4KEMsZSk7Zm9yKGNvbnN0IGUgb2YgY29kZVBvaW50SXRlcih0KSl7Y29uc3QgdD1TdHJpbmcuZnJvbUNvZGVQb2ludChlKTtsZXQgaT10aGlzLndpZHRocy5nZXQoZSk7aWYodm9pZCAwPT09aSl7Y29uc3QgYT1nLm1lYXN1cmVUZXh0KHQpO2k9TWF0aC5jZWlsKGEud2lkdGgpO3RoaXMud2lkdGhzLnNldChlLGkpO3RoaXMuZmlyc3RDaGFyPU1hdGgubWluKGUsdGhpcy5maXJzdENoYXIpO3RoaXMubGFzdENoYXI9TWF0aC5tYXgoZSx0aGlzLmxhc3RDaGFyKX19fUMqPWEvMWUzO2NvbnN0W2gsbCxRLEVdPXQ7bGV0IHU9US1oLGQ9RS1sO2klMTgwIT0wJiYoW3UsZF09W2QsdV0pO2xldCBmPTE7Qz51JiYoZj11L0MpO2xldCBwPTE7Y29uc3QgbT1zKmEseT1uKmEsdz1tKmMubGVuZ3RoO3c+ZCYmKHA9ZC93KTtjb25zdCBiPWEqTWF0aC5taW4oZixwKSxEPVsicSIsYDAgMCAke251bWJlclRvU3RyaW5nKHUpfSAke251bWJlclRvU3RyaW5nKGQpfSByZSBXIG5gLCJCVCIsYDEgMCAwIDEgMCAke251bWJlclRvU3RyaW5nKGQreSl9IFRtIDAgVGMgJHtnZXRQZGZDb2xvcihyLCEwKX1gLGAvJHt0aGlzLmZvbnROYW1lLm5hbWV9ICR7bnVtYmVyVG9TdHJpbmcoYil9IFRmYF0se3Jlc291cmNlczpTfT10aGlzO2lmKDEhPT0obz0ibnVtYmVyIj09dHlwZW9mIG8mJm8+PTAmJm88PTE/bzoxKSl7RC5wdXNoKCIvUjAgZ3MiKTtjb25zdCBlPW5ldyBEaWN0KHRoaXMueHJlZiksdD1uZXcgRGljdCh0aGlzLnhyZWYpO3Quc2V0KCJjYSIsbyk7dC5zZXQoIkNBIixvKTt0LnNldCgiVHlwZSIsTmFtZS5nZXQoIkV4dEdTdGF0ZSIpKTtlLnNldCgiUjAiLHQpO1Muc2V0KCJFeHRHU3RhdGUiLGUpfWNvbnN0IGs9bnVtYmVyVG9TdHJpbmcobSk7Zm9yKGNvbnN0IGUgb2YgYylELnB1c2goYDAgLSR7a30gVGQgPCR7c3RyaW5nVG9VVEYxNkhleFN0cmluZyhlKX0+IFRqYCk7RC5wdXNoKCJFVCIsIlEiKTtjb25zdCBSPUQuam9pbigiXG4iKSxOPW5ldyBEaWN0KHRoaXMueHJlZik7Ti5zZXQoIlN1YnR5cGUiLE5hbWUuZ2V0KCJGb3JtIikpO04uc2V0KCJUeXBlIixOYW1lLmdldCgiWE9iamVjdCIpKTtOLnNldCgiQkJveCIsWzAsMCx1LGRdKTtOLnNldCgiTGVuZ3RoIixSLmxlbmd0aCk7Ti5zZXQoIlJlc291cmNlcyIsUyk7aWYoaSl7Y29uc3QgZT1nZXRSb3RhdGlvbk1hdHJpeChpLHUsZCk7Ti5zZXQoIk1hdHJpeCIsZSl9Y29uc3QgRz1uZXcgU3RyaW5nU3RyZWFtKFIpO0cuZGljdD1OO3JldHVybiBHfX1jbGFzcyBOYW1lT3JOdW1iZXJUcmVle2NvbnN0cnVjdG9yKGUsdCxpKXt0aGlzLnJvb3Q9ZTt0aGlzLnhyZWY9dDt0aGlzLl90eXBlPWl9Z2V0QWxsKCl7Y29uc3QgZT1uZXcgTWFwO2lmKCF0aGlzLnJvb3QpcmV0dXJuIGU7Y29uc3QgdD10aGlzLnhyZWYsaT1uZXcgUmVmU2V0O2kucHV0KHRoaXMucm9vdCk7Y29uc3QgYT1bdGhpcy5yb290XTtmb3IoO2EubGVuZ3RoPjA7KXtjb25zdCByPXQuZmV0Y2hJZlJlZihhLnNoaWZ0KCkpO2lmKCEociBpbnN0YW5jZW9mIERpY3QpKWNvbnRpbnVlO2lmKHIuaGFzKCJLaWRzIikpe2NvbnN0IGU9ci5nZXQoIktpZHMiKTtpZighQXJyYXkuaXNBcnJheShlKSljb250aW51ZTtmb3IoY29uc3QgdCBvZiBlKXtpZihpLmhhcyh0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYER1cGxpY2F0ZSBlbnRyeSBpbiAiJHt0aGlzLl90eXBlfSIgdHJlZS5gKTthLnB1c2godCk7aS5wdXQodCl9Y29udGludWV9Y29uc3Qgcz1yLmdldCh0aGlzLl90eXBlKTtpZihBcnJheS5pc0FycmF5KHMpKWZvcihsZXQgaT0wLGE9cy5sZW5ndGg7aTxhO2krPTIpZS5zZXQodC5mZXRjaElmUmVmKHNbaV0pLHQuZmV0Y2hJZlJlZihzW2krMV0pKX1yZXR1cm4gZX1nZXRSYXcoZSl7aWYoIXRoaXMucm9vdClyZXR1cm4gbnVsbDtjb25zdCB0PXRoaXMueHJlZjtsZXQgaT10LmZldGNoSWZSZWYodGhpcy5yb290KSxhPTA7Zm9yKDtpLmhhcygiS2lkcyIpOyl7aWYoKythPjEwKXt3YXJuKGBTZWFyY2ggZGVwdGggbGltaXQgcmVhY2hlZCBmb3IgIiR7dGhpcy5fdHlwZX0iIHRyZWUuYCk7cmV0dXJuIG51bGx9Y29uc3Qgcj1pLmdldCgiS2lkcyIpO2lmKCFBcnJheS5pc0FycmF5KHIpKXJldHVybiBudWxsO2xldCBzPTAsbj1yLmxlbmd0aC0xO2Zvcig7czw9bjspe2NvbnN0IGE9cytuPj4xLG89dC5mZXRjaElmUmVmKHJbYV0pLGc9by5nZXQoIkxpbWl0cyIpO2lmKGU8dC5mZXRjaElmUmVmKGdbMF0pKW49YS0xO2Vsc2V7aWYoIShlPnQuZmV0Y2hJZlJlZihnWzFdKSkpe2k9bzticmVha31zPWErMX19aWYocz5uKXJldHVybiBudWxsfWNvbnN0IHI9aS5nZXQodGhpcy5fdHlwZSk7aWYoQXJyYXkuaXNBcnJheShyKSl7bGV0IGk9MCxhPXIubGVuZ3RoLTI7Zm9yKDtpPD1hOyl7Y29uc3Qgcz1pK2E+PjEsbj1zKygxJnMpLG89dC5mZXRjaElmUmVmKHJbbl0pO2lmKGU8bylhPW4tMjtlbHNle2lmKCEoZT5vKSlyZXR1cm4gcltuKzFdO2k9bisyfX19cmV0dXJuIG51bGx9Z2V0KGUpe3JldHVybiB0aGlzLnhyZWYuZmV0Y2hJZlJlZih0aGlzLmdldFJhdyhlKSl9fWNsYXNzIE5hbWVUcmVlIGV4dGVuZHMgTmFtZU9yTnVtYmVyVHJlZXtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsdCwiTmFtZXMiKX19Y2xhc3MgTnVtYmVyVHJlZSBleHRlbmRzIE5hbWVPck51bWJlclRyZWV7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQsIk51bXMiKX19ZnVuY3Rpb24gY2xlYXJHbG9iYWxDYWNoZXMoKXshZnVuY3Rpb24gY2xlYXJQYXR0ZXJuQ2FjaGVzKCl7a2E9T2JqZWN0LmNyZWF0ZShudWxsKX0oKTshZnVuY3Rpb24gY2xlYXJQcmltaXRpdmVDYWNoZXMoKXtGdD1PYmplY3QuY3JlYXRlKG51bGwpO1N0PU9iamVjdC5jcmVhdGUobnVsbCk7a3Q9T2JqZWN0LmNyZWF0ZShudWxsKX0oKTshZnVuY3Rpb24gY2xlYXJVbmljb2RlQ2FjaGVzKCl7cWkuY2xlYXIoKX0oKTtKcHhJbWFnZS5jbGVhbnVwKCl9ZnVuY3Rpb24gcGlja1BsYXRmb3JtSXRlbShlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIERpY3Q/ZS5oYXMoIlVGIik/ZS5nZXQoIlVGIik6ZS5oYXMoIkYiKT9lLmdldCgiRiIpOmUuaGFzKCJVbml4Iik/ZS5nZXQoIlVuaXgiKTplLmhhcygiTWFjIik/ZS5nZXQoIk1hYyIpOmUuaGFzKCJET1MiKT9lLmdldCgiRE9TIik6bnVsbDpudWxsfWNsYXNzIEZpbGVTcGVjeyNTPSExO2NvbnN0cnVjdG9yKGUsdCxpPSExKXtpZihlIGluc3RhbmNlb2YgRGljdCl7dGhpcy54cmVmPXQ7dGhpcy5yb290PWU7ZS5oYXMoIkZTIikmJih0aGlzLmZzPWUuZ2V0KCJGUyIpKTtlLmhhcygiUkYiKSYmd2FybigiUmVsYXRlZCBmaWxlIHNwZWNpZmljYXRpb25zIGFyZSBub3Qgc3VwcG9ydGVkIik7aXx8KGUuaGFzKCJFRiIpP3RoaXMuI1M9ITA6d2FybigiTm9uLWVtYmVkZGVkIGZpbGUgc3BlY2lmaWNhdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQiKSl9fWdldCBmaWxlbmFtZSgpe2xldCBlPSIiO2NvbnN0IHQ9cGlja1BsYXRmb3JtSXRlbSh0aGlzLnJvb3QpO3QmJiJzdHJpbmciPT10eXBlb2YgdCYmKGU9c3RyaW5nVG9QREZTdHJpbmcodCkucmVwbGFjZUFsbCgiXFxcXCIsIlxcIikucmVwbGFjZUFsbCgiXFwvIiwiLyIpLnJlcGxhY2VBbGwoIlxcIiwiLyIpKTtyZXR1cm4gc2hhZG93KHRoaXMsImZpbGVuYW1lIixlfHwidW5uYW1lZCIpfWdldCBjb250ZW50KCl7aWYoIXRoaXMuI1MpcmV0dXJuIG51bGw7dGhpcy5fY29udGVudFJlZnx8PXBpY2tQbGF0Zm9ybUl0ZW0odGhpcy5yb290Py5nZXQoIkVGIikpO2xldCBlPW51bGw7aWYodGhpcy5fY29udGVudFJlZil7Y29uc3QgdD10aGlzLnhyZWYuZmV0Y2hJZlJlZih0aGlzLl9jb250ZW50UmVmKTt0IGluc3RhbmNlb2YgQmFzZVN0cmVhbT9lPXQuZ2V0Qnl0ZXMoKTp3YXJuKCJFbWJlZGRlZCBmaWxlIHNwZWNpZmljYXRpb24gcG9pbnRzIHRvIG5vbi1leGlzdGluZy9pbnZhbGlkIGNvbnRlbnQiKX1lbHNlIHdhcm4oIkVtYmVkZGVkIGZpbGUgc3BlY2lmaWNhdGlvbiBkb2VzIG5vdCBoYXZlIGFueSBjb250ZW50Iik7cmV0dXJuIGV9Z2V0IGRlc2NyaXB0aW9uKCl7bGV0IGU9IiI7Y29uc3QgdD10aGlzLnJvb3Q/LmdldCgiRGVzYyIpO3QmJiJzdHJpbmciPT10eXBlb2YgdCYmKGU9c3RyaW5nVG9QREZTdHJpbmcodCkpO3JldHVybiBzaGFkb3codGhpcywiZGVzY3JpcHRpb24iLGUpfWdldCBzZXJpYWxpemFibGUoKXtyZXR1cm57cmF3RmlsZW5hbWU6dGhpcy5maWxlbmFtZSxmaWxlbmFtZTooZT10aGlzLmZpbGVuYW1lLGUuc3Vic3RyaW5nKGUubGFzdEluZGV4T2YoIi8iKSsxKSksY29udGVudDp0aGlzLmNvbnRlbnQsZGVzY3JpcHRpb246dGhpcy5kZXNjcmlwdGlvbn07dmFyIGV9fWNvbnN0IEhyPTAsSnI9LTIsdnI9LTMsWXI9LTQsVHI9LTUsS3I9LTYscXI9LTk7ZnVuY3Rpb24gaXNXaGl0ZXNwYWNlKGUsdCl7Y29uc3QgaT1lW3RdO3JldHVybiIgIj09PWl8fCJcbiI9PT1pfHwiXHIiPT09aXx8Ilx0Ij09PWl9Y2xhc3MgWE1MUGFyc2VyQmFzZXtfcmVzb2x2ZUVudGl0aWVzKGUpe3JldHVybiBlLnJlcGxhY2VBbGwoLyYoW147XSspOy9nLCgoZSx0KT0+e2lmKCIjeCI9PT10LnN1YnN0cmluZygwLDIpKXJldHVybiBTdHJpbmcuZnJvbUNvZGVQb2ludChwYXJzZUludCh0LnN1YnN0cmluZygyKSwxNikpO2lmKCIjIj09PXQuc3Vic3RyaW5nKDAsMSkpcmV0dXJuIFN0cmluZy5mcm9tQ29kZVBvaW50KHBhcnNlSW50KHQuc3Vic3RyaW5nKDEpLDEwKSk7c3dpdGNoKHQpe2Nhc2UibHQiOnJldHVybiI8IjtjYXNlImd0IjpyZXR1cm4iPiI7Y2FzZSJhbXAiOnJldHVybiImIjtjYXNlInF1b3QiOnJldHVybiciJztjYXNlImFwb3MiOnJldHVybiInIn1yZXR1cm4gdGhpcy5vblJlc29sdmVFbnRpdHkodCl9KSl9X3BhcnNlQ29udGVudChlLHQpe2NvbnN0IGk9W107bGV0IGE9dDtmdW5jdGlvbiBza2lwV3MoKXtmb3IoO2E8ZS5sZW5ndGgmJmlzV2hpdGVzcGFjZShlLGEpOykrK2F9Zm9yKDthPGUubGVuZ3RoJiYhaXNXaGl0ZXNwYWNlKGUsYSkmJiI+IiE9PWVbYV0mJiIvIiE9PWVbYV07KSsrYTtjb25zdCByPWUuc3Vic3RyaW5nKHQsYSk7c2tpcFdzKCk7Zm9yKDthPGUubGVuZ3RoJiYiPiIhPT1lW2FdJiYiLyIhPT1lW2FdJiYiPyIhPT1lW2FdOyl7c2tpcFdzKCk7bGV0IHQ9IiIscj0iIjtmb3IoO2E8ZS5sZW5ndGgmJiFpc1doaXRlc3BhY2UoZSxhKSYmIj0iIT09ZVthXTspe3QrPWVbYV07KythfXNraXBXcygpO2lmKCI9IiE9PWVbYV0pcmV0dXJuIG51bGw7KythO3NraXBXcygpO2NvbnN0IHM9ZVthXTtpZignIichPT1zJiYiJyIhPT1zKXJldHVybiBudWxsO2NvbnN0IG49ZS5pbmRleE9mKHMsKythKTtpZihuPDApcmV0dXJuIG51bGw7cj1lLnN1YnN0cmluZyhhLG4pO2kucHVzaCh7bmFtZTp0LHZhbHVlOnRoaXMuX3Jlc29sdmVFbnRpdGllcyhyKX0pO2E9bisxO3NraXBXcygpfXJldHVybntuYW1lOnIsYXR0cmlidXRlczppLHBhcnNlZDphLXR9fV9wYXJzZVByb2Nlc3NpbmdJbnN0cnVjdGlvbihlLHQpe2xldCBpPXQ7Zm9yKDtpPGUubGVuZ3RoJiYhaXNXaGl0ZXNwYWNlKGUsaSkmJiI+IiE9PWVbaV0mJiI/IiE9PWVbaV0mJiIvIiE9PWVbaV07KSsraTtjb25zdCBhPWUuc3Vic3RyaW5nKHQsaSk7IWZ1bmN0aW9uIHNraXBXcygpe2Zvcig7aTxlLmxlbmd0aCYmaXNXaGl0ZXNwYWNlKGUsaSk7KSsraX0oKTtjb25zdCByPWk7Zm9yKDtpPGUubGVuZ3RoJiYoIj8iIT09ZVtpXXx8Ij4iIT09ZVtpKzFdKTspKytpO3JldHVybntuYW1lOmEsdmFsdWU6ZS5zdWJzdHJpbmcocixpKSxwYXJzZWQ6aS10fX1wYXJzZVhtbChlKXtsZXQgdD0wO2Zvcig7dDxlLmxlbmd0aDspe2xldCBpPXQ7aWYoIjwiPT09ZVt0XSl7KytpO2xldCB0O3N3aXRjaChlW2ldKXtjYXNlIi8iOisraTt0PWUuaW5kZXhPZigiPiIsaSk7aWYodDwwKXt0aGlzLm9uRXJyb3IocXIpO3JldHVybn10aGlzLm9uRW5kRWxlbWVudChlLnN1YnN0cmluZyhpLHQpKTtpPXQrMTticmVhaztjYXNlIj8iOisraTtjb25zdCBhPXRoaXMuX3BhcnNlUHJvY2Vzc2luZ0luc3RydWN0aW9uKGUsaSk7aWYoIj8+IiE9PWUuc3Vic3RyaW5nKGkrYS5wYXJzZWQsaSthLnBhcnNlZCsyKSl7dGhpcy5vbkVycm9yKHZyKTtyZXR1cm59dGhpcy5vblBpKGEubmFtZSxhLnZhbHVlKTtpKz1hLnBhcnNlZCsyO2JyZWFrO2Nhc2UiISI6aWYoIi0tIj09PWUuc3Vic3RyaW5nKGkrMSxpKzMpKXt0PWUuaW5kZXhPZigiLS1ceDNlIixpKzMpO2lmKHQ8MCl7dGhpcy5vbkVycm9yKFRyKTtyZXR1cm59dGhpcy5vbkNvbW1lbnQoZS5zdWJzdHJpbmcoaSszLHQpKTtpPXQrM31lbHNlIGlmKCJbQ0RBVEFbIj09PWUuc3Vic3RyaW5nKGkrMSxpKzgpKXt0PWUuaW5kZXhPZigiXV0+IixpKzgpO2lmKHQ8MCl7dGhpcy5vbkVycm9yKEpyKTtyZXR1cm59dGhpcy5vbkNkYXRhKGUuc3Vic3RyaW5nKGkrOCx0KSk7aT10KzN9ZWxzZXtpZigiRE9DVFlQRSIhPT1lLnN1YnN0cmluZyhpKzEsaSs4KSl7dGhpcy5vbkVycm9yKEtyKTtyZXR1cm59e2NvbnN0IGE9ZS5pbmRleE9mKCJbIixpKzgpO2xldCByPSExO3Q9ZS5pbmRleE9mKCI+IixpKzgpO2lmKHQ8MCl7dGhpcy5vbkVycm9yKFlyKTtyZXR1cm59aWYoYT4wJiZ0PmEpe3Q9ZS5pbmRleE9mKCJdPiIsaSs4KTtpZih0PDApe3RoaXMub25FcnJvcihZcik7cmV0dXJufXI9ITB9Y29uc3Qgcz1lLnN1YnN0cmluZyhpKzgsdCsocj8xOjApKTt0aGlzLm9uRG9jdHlwZShzKTtpPXQrKHI/MjoxKX19YnJlYWs7ZGVmYXVsdDpjb25zdCByPXRoaXMuX3BhcnNlQ29udGVudChlLGkpO2lmKG51bGw9PT1yKXt0aGlzLm9uRXJyb3IoS3IpO3JldHVybn1sZXQgcz0hMTtpZigiLz4iPT09ZS5zdWJzdHJpbmcoaStyLnBhcnNlZCxpK3IucGFyc2VkKzIpKXM9ITA7ZWxzZSBpZigiPiIhPT1lLnN1YnN0cmluZyhpK3IucGFyc2VkLGkrci5wYXJzZWQrMSkpe3RoaXMub25FcnJvcihxcik7cmV0dXJufXRoaXMub25CZWdpbkVsZW1lbnQoci5uYW1lLHIuYXR0cmlidXRlcyxzKTtpKz1yLnBhcnNlZCsocz8yOjEpfX1lbHNle2Zvcig7aTxlLmxlbmd0aCYmIjwiIT09ZVtpXTspaSsrO2NvbnN0IGE9ZS5zdWJzdHJpbmcodCxpKTt0aGlzLm9uVGV4dCh0aGlzLl9yZXNvbHZlRW50aXRpZXMoYSkpfXQ9aX19b25SZXNvbHZlRW50aXR5KGUpe3JldHVybmAmJHtlfTtgfW9uUGkoZSx0KXt9b25Db21tZW50KGUpe31vbkNkYXRhKGUpe31vbkRvY3R5cGUoZSl7fW9uVGV4dChlKXt9b25CZWdpbkVsZW1lbnQoZSx0LGkpe31vbkVuZEVsZW1lbnQoZSl7fW9uRXJyb3IoZSl7fX1jbGFzcyBTaW1wbGVET01Ob2Rle2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5ub2RlTmFtZT1lO3RoaXMubm9kZVZhbHVlPXQ7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsInBhcmVudE5vZGUiLHt2YWx1ZTpudWxsLHdyaXRhYmxlOiEwfSl9Z2V0IGZpcnN0Q2hpbGQoKXtyZXR1cm4gdGhpcy5jaGlsZE5vZGVzPy5bMF19Z2V0IG5leHRTaWJsaW5nKCl7Y29uc3QgZT10aGlzLnBhcmVudE5vZGUuY2hpbGROb2RlcztpZighZSlyZXR1cm47Y29uc3QgdD1lLmluZGV4T2YodGhpcyk7cmV0dXJuLTEhPT10P2VbdCsxXTp2b2lkIDB9Z2V0IHRleHRDb250ZW50KCl7cmV0dXJuIHRoaXMuY2hpbGROb2Rlcz90aGlzLmNoaWxkTm9kZXMubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZS50ZXh0Q29udGVudH0pKS5qb2luKCIiKTp0aGlzLm5vZGVWYWx1ZXx8IiJ9Z2V0IGNoaWxkcmVuKCl7cmV0dXJuIHRoaXMuY2hpbGROb2Rlc3x8W119aGFzQ2hpbGROb2Rlcygpe3JldHVybiB0aGlzLmNoaWxkTm9kZXM/Lmxlbmd0aD4wfXNlYXJjaE5vZGUoZSx0KXtpZih0Pj1lLmxlbmd0aClyZXR1cm4gdGhpcztjb25zdCBpPWVbdF07aWYoaS5uYW1lLnN0YXJ0c1dpdGgoIiMiKSYmdDxlLmxlbmd0aC0xKXJldHVybiB0aGlzLnNlYXJjaE5vZGUoZSx0KzEpO2NvbnN0IGE9W107bGV0IHI9dGhpcztmb3IoOzspe2lmKGkubmFtZT09PXIubm9kZU5hbWUpe2lmKDAhPT1pLnBvcyl7aWYoMD09PWEubGVuZ3RoKXJldHVybiBudWxsO3tjb25zdFtzXT1hLnBvcCgpO2xldCBuPTA7Zm9yKGNvbnN0IGEgb2Ygcy5jaGlsZE5vZGVzKWlmKGkubmFtZT09PWEubm9kZU5hbWUpe2lmKG49PT1pLnBvcylyZXR1cm4gYS5zZWFyY2hOb2RlKGUsdCsxKTtuKyt9cmV0dXJuIHIuc2VhcmNoTm9kZShlLHQrMSl9fXtjb25zdCBpPXIuc2VhcmNoTm9kZShlLHQrMSk7aWYobnVsbCE9PWkpcmV0dXJuIGl9fWlmKHIuY2hpbGROb2Rlcz8ubGVuZ3RoPjApe2EucHVzaChbciwwXSk7cj1yLmNoaWxkTm9kZXNbMF19ZWxzZXtpZigwPT09YS5sZW5ndGgpcmV0dXJuIG51bGw7Zm9yKDswIT09YS5sZW5ndGg7KXtjb25zdFtlLHRdPWEucG9wKCksaT10KzE7aWYoaTxlLmNoaWxkTm9kZXMubGVuZ3RoKXthLnB1c2goW2UsaV0pO3I9ZS5jaGlsZE5vZGVzW2ldO2JyZWFrfX1pZigwPT09YS5sZW5ndGgpcmV0dXJuIG51bGx9fX1kdW1wKGUpe2lmKCIjdGV4dCIhPT10aGlzLm5vZGVOYW1lKXtlLnB1c2goYDwke3RoaXMubm9kZU5hbWV9YCk7aWYodGhpcy5hdHRyaWJ1dGVzKWZvcihjb25zdCB0IG9mIHRoaXMuYXR0cmlidXRlcyllLnB1c2goYCAke3QubmFtZX09IiR7ZW5jb2RlVG9YbWxTdHJpbmcodC52YWx1ZSl9ImApO2lmKHRoaXMuaGFzQ2hpbGROb2RlcygpKXtlLnB1c2goIj4iKTtmb3IoY29uc3QgdCBvZiB0aGlzLmNoaWxkTm9kZXMpdC5kdW1wKGUpO2UucHVzaChgPC8ke3RoaXMubm9kZU5hbWV9PmApfWVsc2UgdGhpcy5ub2RlVmFsdWU/ZS5wdXNoKGA+JHtlbmNvZGVUb1htbFN0cmluZyh0aGlzLm5vZGVWYWx1ZSl9PC8ke3RoaXMubm9kZU5hbWV9PmApOmUucHVzaCgiLz4iKX1lbHNlIGUucHVzaChlbmNvZGVUb1htbFN0cmluZyh0aGlzLm5vZGVWYWx1ZSkpfX1jbGFzcyBTaW1wbGVYTUxQYXJzZXIgZXh0ZW5kcyBYTUxQYXJzZXJCYXNle2NvbnN0cnVjdG9yKHtoYXNBdHRyaWJ1dGVzOmU9ITEsbG93ZXJDYXNlTmFtZTp0PSExfSl7c3VwZXIoKTt0aGlzLl9jdXJyZW50RnJhZ21lbnQ9bnVsbDt0aGlzLl9zdGFjaz1udWxsO3RoaXMuX2Vycm9yQ29kZT1Icjt0aGlzLl9oYXNBdHRyaWJ1dGVzPWU7dGhpcy5fbG93ZXJDYXNlTmFtZT10fXBhcnNlRnJvbVN0cmluZyhlKXt0aGlzLl9jdXJyZW50RnJhZ21lbnQ9W107dGhpcy5fc3RhY2s9W107dGhpcy5fZXJyb3JDb2RlPUhyO3RoaXMucGFyc2VYbWwoZSk7aWYodGhpcy5fZXJyb3JDb2RlIT09SHIpcmV0dXJuO2NvbnN0W3RdPXRoaXMuX2N1cnJlbnRGcmFnbWVudDtyZXR1cm4gdD97ZG9jdW1lbnRFbGVtZW50OnR9OnZvaWQgMH1vblRleHQoZSl7aWYoZnVuY3Rpb24gaXNXaGl0ZXNwYWNlU3RyaW5nKGUpe2ZvcihsZXQgdD0wLGk9ZS5sZW5ndGg7dDxpO3QrKylpZighaXNXaGl0ZXNwYWNlKGUsdCkpcmV0dXJuITE7cmV0dXJuITB9KGUpKXJldHVybjtjb25zdCB0PW5ldyBTaW1wbGVET01Ob2RlKCIjdGV4dCIsZSk7dGhpcy5fY3VycmVudEZyYWdtZW50LnB1c2godCl9b25DZGF0YShlKXtjb25zdCB0PW5ldyBTaW1wbGVET01Ob2RlKCIjdGV4dCIsZSk7dGhpcy5fY3VycmVudEZyYWdtZW50LnB1c2godCl9b25CZWdpbkVsZW1lbnQoZSx0LGkpe3RoaXMuX2xvd2VyQ2FzZU5hbWUmJihlPWUudG9Mb3dlckNhc2UoKSk7Y29uc3QgYT1uZXcgU2ltcGxlRE9NTm9kZShlKTthLmNoaWxkTm9kZXM9W107dGhpcy5faGFzQXR0cmlidXRlcyYmKGEuYXR0cmlidXRlcz10KTt0aGlzLl9jdXJyZW50RnJhZ21lbnQucHVzaChhKTtpZighaSl7dGhpcy5fc3RhY2sucHVzaCh0aGlzLl9jdXJyZW50RnJhZ21lbnQpO3RoaXMuX2N1cnJlbnRGcmFnbWVudD1hLmNoaWxkTm9kZXN9fW9uRW5kRWxlbWVudChlKXt0aGlzLl9jdXJyZW50RnJhZ21lbnQ9dGhpcy5fc3RhY2sucG9wKCl8fFtdO2NvbnN0IHQ9dGhpcy5fY3VycmVudEZyYWdtZW50LmF0KC0xKTtpZighdClyZXR1cm4gbnVsbDtmb3IoY29uc3QgZSBvZiB0LmNoaWxkTm9kZXMpZS5wYXJlbnROb2RlPXQ7cmV0dXJuIHR9b25FcnJvcihlKXt0aGlzLl9lcnJvckNvZGU9ZX19Y2xhc3MgTWV0YWRhdGFQYXJzZXJ7Y29uc3RydWN0b3IoZSl7ZT10aGlzLl9yZXBhaXIoZSk7Y29uc3QgdD1uZXcgU2ltcGxlWE1MUGFyc2VyKHtsb3dlckNhc2VOYW1lOiEwfSkucGFyc2VGcm9tU3RyaW5nKGUpO3RoaXMuX21ldGFkYXRhTWFwPW5ldyBNYXA7dGhpcy5fZGF0YT1lO3QmJnRoaXMuX3BhcnNlKHQpfV9yZXBhaXIoZSl7cmV0dXJuIGUucmVwbGFjZSgvXltePF0rLywiIikucmVwbGFjZUFsbCgvPlxcMzc2XFwzNzcoW148XSspL2csKGZ1bmN0aW9uKGUsdCl7Y29uc3QgaT10LnJlcGxhY2VBbGwoL1xcKFswLTNdKShbMC03XSkoWzAtN10pL2csKGZ1bmN0aW9uKGUsdCxpLGEpe3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKDY0KnQrOCppKzEqYSl9KSkucmVwbGFjZUFsbCgvJihhbXB8YXBvc3xndHxsdHxxdW90KTsvZywoZnVuY3Rpb24oZSx0KXtzd2l0Y2godCl7Y2FzZSJhbXAiOnJldHVybiImIjtjYXNlImFwb3MiOnJldHVybiInIjtjYXNlImd0IjpyZXR1cm4iPiI7Y2FzZSJsdCI6cmV0dXJuIjwiO2Nhc2UicXVvdCI6cmV0dXJuJyInfXRocm93IG5ldyBFcnJvcihgX3JlcGFpcjogJHt0fSBpc24ndCBkZWZpbmVkLmApfSkpLGE9WyI+Il07Zm9yKGxldCBlPTAsdD1pLmxlbmd0aDtlPHQ7ZSs9Mil7Y29uc3QgdD0yNTYqaS5jaGFyQ29kZUF0KGUpK2kuY2hhckNvZGVBdChlKzEpO3Q+PTMyJiZ0PDEyNyYmNjAhPT10JiY2MiE9PXQmJjM4IT09dD9hLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZSh0KSk6YS5wdXNoKCImI3giKyg2NTUzNit0KS50b1N0cmluZygxNikuc3Vic3RyaW5nKDEpKyI7Iil9cmV0dXJuIGEuam9pbigiIil9KSl9X2dldFNlcXVlbmNlKGUpe2NvbnN0IHQ9ZS5ub2RlTmFtZTtyZXR1cm4icmRmOmJhZyIhPT10JiYicmRmOnNlcSIhPT10JiYicmRmOmFsdCIhPT10P251bGw6ZS5jaGlsZE5vZGVzLmZpbHRlcigoZT0+InJkZjpsaSI9PT1lLm5vZGVOYW1lKSl9X3BhcnNlQXJyYXkoZSl7aWYoIWUuaGFzQ2hpbGROb2RlcygpKXJldHVybjtjb25zdFt0XT1lLmNoaWxkTm9kZXMsaT10aGlzLl9nZXRTZXF1ZW5jZSh0KXx8W107dGhpcy5fbWV0YWRhdGFNYXAuc2V0KGUubm9kZU5hbWUsaS5tYXAoKGU9PmUudGV4dENvbnRlbnQudHJpbSgpKSkpfV9wYXJzZShlKXtsZXQgdD1lLmRvY3VtZW50RWxlbWVudDtpZigicmRmOnJkZiIhPT10Lm5vZGVOYW1lKXt0PXQuZmlyc3RDaGlsZDtmb3IoO3QmJiJyZGY6cmRmIiE9PXQubm9kZU5hbWU7KXQ9dC5uZXh0U2libGluZ31pZih0JiYicmRmOnJkZiI9PT10Lm5vZGVOYW1lJiZ0Lmhhc0NoaWxkTm9kZXMoKSlmb3IoY29uc3QgZSBvZiB0LmNoaWxkTm9kZXMpaWYoInJkZjpkZXNjcmlwdGlvbiI9PT1lLm5vZGVOYW1lKWZvcihjb25zdCB0IG9mIGUuY2hpbGROb2Rlcyl7Y29uc3QgZT10Lm5vZGVOYW1lO3N3aXRjaChlKXtjYXNlIiN0ZXh0Ijpjb250aW51ZTtjYXNlImRjOmNyZWF0b3IiOmNhc2UiZGM6c3ViamVjdCI6dGhpcy5fcGFyc2VBcnJheSh0KTtjb250aW51ZX10aGlzLl9tZXRhZGF0YU1hcC5zZXQoZSx0LnRleHRDb250ZW50LnRyaW0oKSl9fWdldCBzZXJpYWxpemFibGUoKXtyZXR1cm57cGFyc2VkRGF0YTp0aGlzLl9tZXRhZGF0YU1hcCxyYXdEYXRhOnRoaXMuX2RhdGF9fX1jbGFzcyBEZWNyeXB0U3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCxpKXtzdXBlcih0KTt0aGlzLnN0cj1lO3RoaXMuZGljdD1lLmRpY3Q7dGhpcy5kZWNyeXB0PWk7dGhpcy5uZXh0Q2h1bms9bnVsbDt0aGlzLmluaXRpYWxpemVkPSExfXJlYWRCbG9jaygpe2xldCBlO2lmKHRoaXMuaW5pdGlhbGl6ZWQpZT10aGlzLm5leHRDaHVuaztlbHNle2U9dGhpcy5zdHIuZ2V0Qnl0ZXMoNTEyKTt0aGlzLmluaXRpYWxpemVkPSEwfWlmKCFlfHwwPT09ZS5sZW5ndGgpe3RoaXMuZW9mPSEwO3JldHVybn10aGlzLm5leHRDaHVuaz10aGlzLnN0ci5nZXRCeXRlcyg1MTIpO2NvbnN0IHQ9dGhpcy5uZXh0Q2h1bms/Lmxlbmd0aD4wO2U9KDAsdGhpcy5kZWNyeXB0KShlLCF0KTtjb25zdCBpPXRoaXMuYnVmZmVyTGVuZ3RoLGE9aStlLmxlbmd0aDt0aGlzLmVuc3VyZUJ1ZmZlcihhKS5zZXQoZSxpKTt0aGlzLmJ1ZmZlckxlbmd0aD1hfX1jbGFzcyBBUkNGb3VyQ2lwaGVye2NvbnN0cnVjdG9yKGUpe3RoaXMuYT0wO3RoaXMuYj0wO2NvbnN0IHQ9bmV3IFVpbnQ4QXJyYXkoMjU2KSxpPWUubGVuZ3RoO2ZvcihsZXQgZT0wO2U8MjU2OysrZSl0W2VdPWU7Zm9yKGxldCBhPTAscj0wO2E8MjU2OysrYSl7Y29uc3Qgcz10W2FdO3I9citzK2VbYSVpXSYyNTU7dFthXT10W3JdO3Rbcl09c310aGlzLnM9dH1lbmNyeXB0QmxvY2soZSl7bGV0IHQ9dGhpcy5hLGk9dGhpcy5iO2NvbnN0IGE9dGhpcy5zLHI9ZS5sZW5ndGgscz1uZXcgVWludDhBcnJheShyKTtmb3IobGV0IG49MDtuPHI7KytuKXt0PXQrMSYyNTU7Y29uc3Qgcj1hW3RdO2k9aStyJjI1NTtjb25zdCBvPWFbaV07YVt0XT1vO2FbaV09cjtzW25dPWVbbl1eYVtyK28mMjU1XX10aGlzLmE9dDt0aGlzLmI9aTtyZXR1cm4gc31kZWNyeXB0QmxvY2soZSl7cmV0dXJuIHRoaXMuZW5jcnlwdEJsb2NrKGUpfWVuY3J5cHQoZSl7cmV0dXJuIHRoaXMuZW5jcnlwdEJsb2NrKGUpfX1jb25zdCBPcj1mdW5jdGlvbiBjYWxjdWxhdGVNRDVDbG9zdXJlKCl7Y29uc3QgZT1uZXcgVWludDhBcnJheShbNywxMiwxNywyMiw3LDEyLDE3LDIyLDcsMTIsMTcsMjIsNywxMiwxNywyMiw1LDksMTQsMjAsNSw5LDE0LDIwLDUsOSwxNCwyMCw1LDksMTQsMjAsNCwxMSwxNiwyMyw0LDExLDE2LDIzLDQsMTEsMTYsMjMsNCwxMSwxNiwyMyw2LDEwLDE1LDIxLDYsMTAsMTUsMjEsNiwxMCwxNSwyMSw2LDEwLDE1LDIxXSksdD1uZXcgSW50MzJBcnJheShbLTY4MDg3NjkzNiwtMzg5NTY0NTg2LDYwNjEwNTgxOSwtMTA0NDUyNTMzMCwtMTc2NDE4ODk3LDEyMDAwODA0MjYsLTE0NzMyMzEzNDEsLTQ1NzA1OTgzLDE3NzAwMzU0MTYsLTE5NTg0MTQ0MTcsLTQyMDYzLC0xOTkwNDA0MTYyLDE4MDQ2MDM2ODIsLTQwMzQxMTAxLC0xNTAyMDAyMjkwLDEyMzY1MzUzMjksLTE2NTc5NjUxMCwtMTA2OTUwMTYzMiw2NDM3MTc3MTMsLTM3Mzg5NzMwMiwtNzAxNTU4NjkxLDM4MDE2MDgzLC02NjA0NzgzMzUsLTQwNTUzNzg0OCw1Njg0NDY0MzgsLTEwMTk4MDM2OTAsLTE4NzM2Mzk2MSwxMTYzNTMxNTAxLC0xNDQ0NjgxNDY3LC01MTQwMzc4NCwxNzM1MzI4NDczLC0xOTI2NjA3NzM0LC0zNzg1NTgsLTIwMjI1NzQ0NjMsMTgzOTAzMDU2MiwtMzUzMDk1NTYsLTE1MzA5OTIwNjAsMTI3Mjg5MzM1MywtMTU1NDk3NjMyLC0xMDk0NzMwNjQwLDY4MTI3OTE3NCwtMzU4NTM3MjIyLC03MjI1MjE5NzksNzYwMjkxODksLTY0MDM2NDQ4NywtNDIxODE1ODM1LDUzMDc0MjUyMCwtOTk1MzM4NjUxLC0xOTg2MzA4NDQsMTEyNjg5MTQxNSwtMTQxNjM1NDkwNSwtNTc0MzQwNTUsMTcwMDQ4NTU3MSwtMTg5NDk4NjYwNiwtMTA1MTUyMywtMjA1NDkyMjc5OSwxODczMzEzMzU5LC0zMDYxMTc0NCwtMTU2MDE5ODM4MCwxMzA5MTUxNjQ5LC0xNDU1MjMwNzAsLTExMjAyMTAzNzksNzE4Nzg3MjU5LC0zNDM0ODU1NTFdKTtyZXR1cm4gZnVuY3Rpb24gaGFzaChpLGEscil7bGV0IHM9MTczMjU4NDE5MyxuPS0yNzE3MzM4Nzksbz0tMTczMjU4NDE5NCxnPTI3MTczMzg3ODtjb25zdCBjPXIrNzImLTY0LEM9bmV3IFVpbnQ4QXJyYXkoYyk7bGV0IGgsbDtmb3IoaD0wO2g8cjsrK2gpQ1toXT1pW2ErK107Q1toKytdPTEyODtjb25zdCBRPWMtODtmb3IoO2g8UTspQ1toKytdPTA7Q1toKytdPXI8PDMmMjU1O0NbaCsrXT1yPj41JjI1NTtDW2grK109cj4+MTMmMjU1O0NbaCsrXT1yPj4yMSYyNTU7Q1toKytdPXI+Pj4yOSYyNTU7Q1toKytdPTA7Q1toKytdPTA7Q1toKytdPTA7Y29uc3QgRT1uZXcgSW50MzJBcnJheSgxNik7Zm9yKGg9MDtoPGM7KXtmb3IobD0wO2w8MTY7KytsLGgrPTQpRVtsXT1DW2hdfENbaCsxXTw8OHxDW2grMl08PDE2fENbaCszXTw8MjQ7bGV0IGksYSxyPXMsYz1uLFE9byx1PWc7Zm9yKGw9MDtsPDY0OysrbCl7aWYobDwxNil7aT1jJlF8fmMmdTthPWx9ZWxzZSBpZihsPDMyKXtpPXUmY3x+dSZRO2E9NSpsKzEmMTV9ZWxzZSBpZihsPDQ4KXtpPWNeUV51O2E9MypsKzUmMTV9ZWxzZXtpPVFeKGN8fnUpO2E9NypsJjE1fWNvbnN0IHM9dSxuPXIraSt0W2xdK0VbYV18MCxvPWVbbF07dT1RO1E9YztjPWMrKG48PG98bj4+PjMyLW8pfDA7cj1zfXM9cytyfDA7bj1uK2N8MDtvPW8rUXwwO2c9Zyt1fDB9cmV0dXJuIG5ldyBVaW50OEFycmF5KFsyNTUmcyxzPj44JjI1NSxzPj4xNiYyNTUscz4+PjI0JjI1NSwyNTUmbixuPj44JjI1NSxuPj4xNiYyNTUsbj4+PjI0JjI1NSwyNTUmbyxvPj44JjI1NSxvPj4xNiYyNTUsbz4+PjI0JjI1NSwyNTUmZyxnPj44JjI1NSxnPj4xNiYyNTUsZz4+PjI0JjI1NV0pfX0oKTtjbGFzcyBXb3JkNjR7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmhpZ2g9MHxlO3RoaXMubG93PTB8dH1hbmQoZSl7dGhpcy5oaWdoJj1lLmhpZ2g7dGhpcy5sb3cmPWUubG93fXhvcihlKXt0aGlzLmhpZ2hePWUuaGlnaDt0aGlzLmxvd149ZS5sb3d9b3IoZSl7dGhpcy5oaWdofD1lLmhpZ2g7dGhpcy5sb3d8PWUubG93fXNoaWZ0UmlnaHQoZSl7aWYoZT49MzIpe3RoaXMubG93PXRoaXMuaGlnaD4+PmUtMzJ8MDt0aGlzLmhpZ2g9MH1lbHNle3RoaXMubG93PXRoaXMubG93Pj4+ZXx0aGlzLmhpZ2g8PDMyLWU7dGhpcy5oaWdoPXRoaXMuaGlnaD4+PmV8MH19c2hpZnRMZWZ0KGUpe2lmKGU+PTMyKXt0aGlzLmhpZ2g9dGhpcy5sb3c8PGUtMzI7dGhpcy5sb3c9MH1lbHNle3RoaXMuaGlnaD10aGlzLmhpZ2g8PGV8dGhpcy5sb3c+Pj4zMi1lO3RoaXMubG93PDw9ZX19cm90YXRlUmlnaHQoZSl7bGV0IHQsaTtpZigzMiZlKXtpPXRoaXMubG93O3Q9dGhpcy5oaWdofWVsc2V7dD10aGlzLmxvdztpPXRoaXMuaGlnaH1lJj0zMTt0aGlzLmxvdz10Pj4+ZXxpPDwzMi1lO3RoaXMuaGlnaD1pPj4+ZXx0PDwzMi1lfW5vdCgpe3RoaXMuaGlnaD1+dGhpcy5oaWdoO3RoaXMubG93PX50aGlzLmxvd31hZGQoZSl7Y29uc3QgdD0odGhpcy5sb3c+Pj4wKSsoZS5sb3c+Pj4wKTtsZXQgaT0odGhpcy5oaWdoPj4+MCkrKGUuaGlnaD4+PjApO3Q+NDI5NDk2NzI5NSYmKGkrPTEpO3RoaXMubG93PTB8dDt0aGlzLmhpZ2g9MHxpfWNvcHlUbyhlLHQpe2VbdF09dGhpcy5oaWdoPj4+MjQmMjU1O2VbdCsxXT10aGlzLmhpZ2g+PjE2JjI1NTtlW3QrMl09dGhpcy5oaWdoPj44JjI1NTtlW3QrM109MjU1JnRoaXMuaGlnaDtlW3QrNF09dGhpcy5sb3c+Pj4yNCYyNTU7ZVt0KzVdPXRoaXMubG93Pj4xNiYyNTU7ZVt0KzZdPXRoaXMubG93Pj44JjI1NTtlW3QrN109MjU1JnRoaXMubG93fWFzc2lnbihlKXt0aGlzLmhpZ2g9ZS5oaWdoO3RoaXMubG93PWUubG93fX1jb25zdCBQcj1mdW5jdGlvbiBjYWxjdWxhdGVTSEEyNTZDbG9zdXJlKCl7ZnVuY3Rpb24gcm90cihlLHQpe3JldHVybiBlPj4+dHxlPDwzMi10fWZ1bmN0aW9uIGNoKGUsdCxpKXtyZXR1cm4gZSZ0Xn5lJml9ZnVuY3Rpb24gbWFqKGUsdCxpKXtyZXR1cm4gZSZ0XmUmaV50Jml9ZnVuY3Rpb24gc2lnbWEoZSl7cmV0dXJuIHJvdHIoZSwyKV5yb3RyKGUsMTMpXnJvdHIoZSwyMil9ZnVuY3Rpb24gc2lnbWFQcmltZShlKXtyZXR1cm4gcm90cihlLDYpXnJvdHIoZSwxMSlecm90cihlLDI1KX1mdW5jdGlvbiBsaXR0bGVTaWdtYShlKXtyZXR1cm4gcm90cihlLDcpXnJvdHIoZSwxOCleZT4+PjN9Y29uc3QgZT1bMTExNjM1MjQwOCwxODk5NDQ3NDQxLDMwNDkzMjM0NzEsMzkyMTAwOTU3Myw5NjE5ODcxNjMsMTUwODk3MDk5MywyNDUzNjM1NzQ4LDI4NzA3NjMyMjEsMzYyNDM4MTA4MCwzMTA1OTg0MDEsNjA3MjI1Mjc4LDE0MjY4ODE5ODcsMTkyNTA3ODM4OCwyMTYyMDc4MjA2LDI2MTQ4ODgxMDMsMzI0ODIyMjU4MCwzODM1MzkwNDAxLDQwMjIyMjQ3NzQsMjY0MzQ3MDc4LDYwNDgwNzYyOCw3NzAyNTU5ODMsMTI0OTE1MDEyMiwxNTU1MDgxNjkyLDE5OTYwNjQ5ODYsMjU1NDIyMDg4MiwyODIxODM0MzQ5LDI5NTI5OTY4MDgsMzIxMDMxMzY3MSwzMzM2NTcxODkxLDM1ODQ1Mjg3MTEsMTEzOTI2OTkzLDMzODI0MTg5NSw2NjYzMDcyMDUsNzczNTI5OTEyLDEyOTQ3NTczNzIsMTM5NjE4MjI5MSwxNjk1MTgzNzAwLDE5ODY2NjEwNTEsMjE3NzAyNjM1MCwyNDU2OTU2MDM3LDI3MzA0ODU5MjEsMjgyMDMwMjQxMSwzMjU5NzMwODAwLDMzNDU3NjQ3NzEsMzUxNjA2NTgxNywzNjAwMzUyODA0LDQwOTQ1NzE5MDksMjc1NDIzMzQ0LDQzMDIyNzczNCw1MDY5NDg2MTYsNjU5MDYwNTU2LDg4Mzk5Nzg3Nyw5NTgxMzk1NzEsMTMyMjgyMjIxOCwxNTM3MDAyMDYzLDE3NDc4NzM3NzksMTk1NTU2MjIyMiwyMDI0MTA0ODE1LDIyMjc3MzA0NTIsMjM2MTg1MjQyNCwyNDI4NDM2NDc0LDI3NTY3MzQxODcsMzIwNDAzMTQ3OSwzMzI5MzI1Mjk4XTtyZXR1cm4gZnVuY3Rpb24gaGFzaCh0LGksYSl7bGV0IHI9MTc3OTAzMzcwMyxzPTMxNDQxMzQyNzcsbj0xMDEzOTA0MjQyLG89Mjc3MzQ4MDc2MixnPTEzNTk4OTMxMTksYz0yNjAwODIyOTI0LEM9NTI4NzM0NjM1LGg9MTU0MTQ1OTIyNTtjb25zdCBsPTY0Kk1hdGguY2VpbCgoYSs5KS82NCksUT1uZXcgVWludDhBcnJheShsKTtsZXQgRSx1O2ZvcihFPTA7RTxhOysrRSlRW0VdPXRbaSsrXTtRW0UrK109MTI4O2NvbnN0IGQ9bC04O2Zvcig7RTxkOylRW0UrK109MDtRW0UrK109MDtRW0UrK109MDtRW0UrK109MDtRW0UrK109YT4+PjI5JjI1NTtRW0UrK109YT4+MjEmMjU1O1FbRSsrXT1hPj4xMyYyNTU7UVtFKytdPWE+PjUmMjU1O1FbRSsrXT1hPDwzJjI1NTtjb25zdCBmPW5ldyBVaW50MzJBcnJheSg2NCk7Zm9yKEU9MDtFPGw7KXtmb3IodT0wO3U8MTY7Kyt1KXtmW3VdPVFbRV08PDI0fFFbRSsxXTw8MTZ8UVtFKzJdPDw4fFFbRSszXTtFKz00fWZvcih1PTE2O3U8NjQ7Kyt1KWZbdV09KHJvdHIocD1mW3UtMl0sMTcpXnJvdHIocCwxOSlecD4+PjEwKStmW3UtN10rbGl0dGxlU2lnbWEoZlt1LTE1XSkrZlt1LTE2XXwwO2xldCB0LGksYT1yLGw9cyxkPW4sbT1vLHk9Zyx3PWMsYj1DLEQ9aDtmb3IodT0wO3U8NjQ7Kyt1KXt0PUQrc2lnbWFQcmltZSh5KStjaCh5LHcsYikrZVt1XStmW3VdO2k9c2lnbWEoYSkrbWFqKGEsbCxkKTtEPWI7Yj13O3c9eTt5PW0rdHwwO209ZDtkPWw7bD1hO2E9dCtpfDB9cj1yK2F8MDtzPXMrbHwwO249bitkfDA7bz1vK218MDtnPWcreXwwO2M9Yyt3fDA7Qz1DK2J8MDtoPWgrRHwwfXZhciBwO3JldHVybiBuZXcgVWludDhBcnJheShbcj4+MjQmMjU1LHI+PjE2JjI1NSxyPj44JjI1NSwyNTUmcixzPj4yNCYyNTUscz4+MTYmMjU1LHM+PjgmMjU1LDI1NSZzLG4+PjI0JjI1NSxuPj4xNiYyNTUsbj4+OCYyNTUsMjU1Jm4sbz4+MjQmMjU1LG8+PjE2JjI1NSxvPj44JjI1NSwyNTUmbyxnPj4yNCYyNTUsZz4+MTYmMjU1LGc+PjgmMjU1LDI1NSZnLGM+PjI0JjI1NSxjPj4xNiYyNTUsYz4+OCYyNTUsMjU1JmMsQz4+MjQmMjU1LEM+PjE2JjI1NSxDPj44JjI1NSwyNTUmQyxoPj4yNCYyNTUsaD4+MTYmMjU1LGg+PjgmMjU1LDI1NSZoXSl9fSgpLFdyPWZ1bmN0aW9uIGNhbGN1bGF0ZVNIQTUxMkNsb3N1cmUoKXtmdW5jdGlvbiBjaChlLHQsaSxhLHIpe2UuYXNzaWduKHQpO2UuYW5kKGkpO3IuYXNzaWduKHQpO3Iubm90KCk7ci5hbmQoYSk7ZS54b3Iocil9ZnVuY3Rpb24gbWFqKGUsdCxpLGEscil7ZS5hc3NpZ24odCk7ZS5hbmQoaSk7ci5hc3NpZ24odCk7ci5hbmQoYSk7ZS54b3Iocik7ci5hc3NpZ24oaSk7ci5hbmQoYSk7ZS54b3Iocil9ZnVuY3Rpb24gc2lnbWEoZSx0LGkpe2UuYXNzaWduKHQpO2Uucm90YXRlUmlnaHQoMjgpO2kuYXNzaWduKHQpO2kucm90YXRlUmlnaHQoMzQpO2UueG9yKGkpO2kuYXNzaWduKHQpO2kucm90YXRlUmlnaHQoMzkpO2UueG9yKGkpfWZ1bmN0aW9uIHNpZ21hUHJpbWUoZSx0LGkpe2UuYXNzaWduKHQpO2Uucm90YXRlUmlnaHQoMTQpO2kuYXNzaWduKHQpO2kucm90YXRlUmlnaHQoMTgpO2UueG9yKGkpO2kuYXNzaWduKHQpO2kucm90YXRlUmlnaHQoNDEpO2UueG9yKGkpfWZ1bmN0aW9uIGxpdHRsZVNpZ21hKGUsdCxpKXtlLmFzc2lnbih0KTtlLnJvdGF0ZVJpZ2h0KDEpO2kuYXNzaWduKHQpO2kucm90YXRlUmlnaHQoOCk7ZS54b3IoaSk7aS5hc3NpZ24odCk7aS5zaGlmdFJpZ2h0KDcpO2UueG9yKGkpfWZ1bmN0aW9uIGxpdHRsZVNpZ21hUHJpbWUoZSx0LGkpe2UuYXNzaWduKHQpO2Uucm90YXRlUmlnaHQoMTkpO2kuYXNzaWduKHQpO2kucm90YXRlUmlnaHQoNjEpO2UueG9yKGkpO2kuYXNzaWduKHQpO2kuc2hpZnRSaWdodCg2KTtlLnhvcihpKX1jb25zdCBlPVtuZXcgV29yZDY0KDExMTYzNTI0MDgsMzYwOTc2NzQ1OCksbmV3IFdvcmQ2NCgxODk5NDQ3NDQxLDYwMjg5MTcyNSksbmV3IFdvcmQ2NCgzMDQ5MzIzNDcxLDM5NjQ0ODQzOTkpLG5ldyBXb3JkNjQoMzkyMTAwOTU3MywyMTczMjk1NTQ4KSxuZXcgV29yZDY0KDk2MTk4NzE2Myw0MDgxNjI4NDcyKSxuZXcgV29yZDY0KDE1MDg5NzA5OTMsMzA1MzgzNDI2NSksbmV3IFdvcmQ2NCgyNDUzNjM1NzQ4LDI5Mzc2NzE1NzkpLG5ldyBXb3JkNjQoMjg3MDc2MzIyMSwzNjY0NjA5NTYwKSxuZXcgV29yZDY0KDM2MjQzODEwODAsMjczNDg4MzM5NCksbmV3IFdvcmQ2NCgzMTA1OTg0MDEsMTE2NDk5NjU0MiksbmV3IFdvcmQ2NCg2MDcyMjUyNzgsMTMyMzYxMDc2NCksbmV3IFdvcmQ2NCgxNDI2ODgxOTg3LDM1OTAzMDQ5OTQpLG5ldyBXb3JkNjQoMTkyNTA3ODM4OCw0MDY4MTgyMzgzKSxuZXcgV29yZDY0KDIxNjIwNzgyMDYsOTkxMzM2MTEzKSxuZXcgV29yZDY0KDI2MTQ4ODgxMDMsNjMzODAzMzE3KSxuZXcgV29yZDY0KDMyNDgyMjI1ODAsMzQ3OTc3NDg2OCksbmV3IFdvcmQ2NCgzODM1MzkwNDAxLDI2NjY2MTM0NTgpLG5ldyBXb3JkNjQoNDAyMjIyNDc3NCw5NDQ3MTExMzkpLG5ldyBXb3JkNjQoMjY0MzQ3MDc4LDIzNDEyNjI3NzMpLG5ldyBXb3JkNjQoNjA0ODA3NjI4LDIwMDc4MDA5MzMpLG5ldyBXb3JkNjQoNzcwMjU1OTgzLDE0OTU5OTA5MDEpLG5ldyBXb3JkNjQoMTI0OTE1MDEyMiwxODU2NDMxMjM1KSxuZXcgV29yZDY0KDE1NTUwODE2OTIsMzE3NTIxODEzMiksbmV3IFdvcmQ2NCgxOTk2MDY0OTg2LDIxOTg5NTA4MzcpLG5ldyBXb3JkNjQoMjU1NDIyMDg4MiwzOTk5NzE5MzM5KSxuZXcgV29yZDY0KDI4MjE4MzQzNDksNzY2Nzg0MDE2KSxuZXcgV29yZDY0KDI5NTI5OTY4MDgsMjU2NjU5NDg3OSksbmV3IFdvcmQ2NCgzMjEwMzEzNjcxLDMyMDMzMzc5NTYpLG5ldyBXb3JkNjQoMzMzNjU3MTg5MSwxMDM0NDU3MDI2KSxuZXcgV29yZDY0KDM1ODQ1Mjg3MTEsMjQ2Njk0ODkwMSksbmV3IFdvcmQ2NCgxMTM5MjY5OTMsMzc1ODMyNjM4MyksbmV3IFdvcmQ2NCgzMzgyNDE4OTUsMTY4NzE3OTM2KSxuZXcgV29yZDY0KDY2NjMwNzIwNSwxMTg4MTc5OTY0KSxuZXcgV29yZDY0KDc3MzUyOTkxMiwxNTQ2MDQ1NzM0KSxuZXcgV29yZDY0KDEyOTQ3NTczNzIsMTUyMjgwNTQ4NSksbmV3IFdvcmQ2NCgxMzk2MTgyMjkxLDI2NDM4MzM4MjMpLG5ldyBXb3JkNjQoMTY5NTE4MzcwMCwyMzQzNTI3MzkwKSxuZXcgV29yZDY0KDE5ODY2NjEwNTEsMTAxNDQ3NzQ4MCksbmV3IFdvcmQ2NCgyMTc3MDI2MzUwLDEyMDY3NTkxNDIpLG5ldyBXb3JkNjQoMjQ1Njk1NjAzNywzNDQwNzc2MjcpLG5ldyBXb3JkNjQoMjczMDQ4NTkyMSwxMjkwODYzNDYwKSxuZXcgV29yZDY0KDI4MjAzMDI0MTEsMzE1ODQ1NDI3MyksbmV3IFdvcmQ2NCgzMjU5NzMwODAwLDM1MDU5NTI2NTcpLG5ldyBXb3JkNjQoMzM0NTc2NDc3MSwxMDYyMTcwMDgpLG5ldyBXb3JkNjQoMzUxNjA2NTgxNywzNjA2MDA4MzQ0KSxuZXcgV29yZDY0KDM2MDAzNTI4MDQsMTQzMjcyNTc3NiksbmV3IFdvcmQ2NCg0MDk0NTcxOTA5LDE0NjcwMzE1OTQpLG5ldyBXb3JkNjQoMjc1NDIzMzQ0LDg1MTE2OTcyMCksbmV3IFdvcmQ2NCg0MzAyMjc3MzQsMzEwMDgyMzc1MiksbmV3IFdvcmQ2NCg1MDY5NDg2MTYsMTM2MzI1ODE5NSksbmV3IFdvcmQ2NCg2NTkwNjA1NTYsMzc1MDY4NTU5MyksbmV3IFdvcmQ2NCg4ODM5OTc4NzcsMzc4NTA1MDI4MCksbmV3IFdvcmQ2NCg5NTgxMzk1NzEsMzMxODMwNzQyNyksbmV3IFdvcmQ2NCgxMzIyODIyMjE4LDM4MTI3MjM0MDMpLG5ldyBXb3JkNjQoMTUzNzAwMjA2MywyMDAzMDM0OTk1KSxuZXcgV29yZDY0KDE3NDc4NzM3NzksMzYwMjAzNjg5OSksbmV3IFdvcmQ2NCgxOTU1NTYyMjIyLDE1NzU5OTAwMTIpLG5ldyBXb3JkNjQoMjAyNDEwNDgxNSwxMTI1NTkyOTI4KSxuZXcgV29yZDY0KDIyMjc3MzA0NTIsMjcxNjkwNDMwNiksbmV3IFdvcmQ2NCgyMzYxODUyNDI0LDQ0Mjc3NjA0NCksbmV3IFdvcmQ2NCgyNDI4NDM2NDc0LDU5MzY5ODM0NCksbmV3IFdvcmQ2NCgyNzU2NzM0MTg3LDM3MzMxMTAyNDkpLG5ldyBXb3JkNjQoMzIwNDAzMTQ3OSwyOTk5MzUxNTczKSxuZXcgV29yZDY0KDMzMjkzMjUyOTgsMzgxNTkyMDQyNyksbmV3IFdvcmQ2NCgzMzkxNTY5NjE0LDM5MjgzODM5MDApLG5ldyBXb3JkNjQoMzUxNTI2NzI3MSw1NjYyODA3MTEpLG5ldyBXb3JkNjQoMzk0MDE4NzYwNiwzNDU0MDY5NTM0KSxuZXcgV29yZDY0KDQxMTg2MzAyNzEsNDAwMDIzOTk5MiksbmV3IFdvcmQ2NCgxMTY0MTg0NzQsMTkxNDEzODU1NCksbmV3IFdvcmQ2NCgxNzQyOTI0MjEsMjczMTA1NTI3MCksbmV3IFdvcmQ2NCgyODkzODAzNTYsMzIwMzk5MzAwNiksbmV3IFdvcmQ2NCg0NjAzOTMyNjksMzIwNjIwMzE1KSxuZXcgV29yZDY0KDY4NTQ3MTczMyw1ODc0OTY4MzYpLG5ldyBXb3JkNjQoODUyMTQyOTcxLDEwODY3OTI4NTEpLG5ldyBXb3JkNjQoMTAxNzAzNjI5OCwzNjU1NDMxMDApLG5ldyBXb3JkNjQoMTEyNjAwMDU4MCwyNjE4Mjk3Njc2KSxuZXcgV29yZDY0KDEyODgwMzM0NzAsMzQwOTg1NTE1OCksbmV3IFdvcmQ2NCgxNTAxNTA1OTQ4LDQyMzQ1MDk4NjYpLG5ldyBXb3JkNjQoMTYwNzE2NzkxNSw5ODcxNjc0NjgpLG5ldyBXb3JkNjQoMTgxNjQwMjMxNiwxMjQ2MTg5NTkxKV07cmV0dXJuIGZ1bmN0aW9uIGhhc2godCxpLGEscj0hMSl7bGV0IHMsbixvLGcsYyxDLGgsbDtpZihyKXtzPW5ldyBXb3JkNjQoMzQxODA3MDM2NSwzMjM4MzcxMDMyKTtuPW5ldyBXb3JkNjQoMTY1NDI3MDI1MCw5MTQxNTA2NjMpO289bmV3IFdvcmQ2NCgyNDM4NTI5MzcwLDgxMjcwMjk5OSk7Zz1uZXcgV29yZDY0KDM1NTQ2MjM2MCw0MTQ0OTEyNjk3KTtjPW5ldyBXb3JkNjQoMTczMTQwNTQxNSw0MjkwNzc1ODU3KTtDPW5ldyBXb3JkNjQoMjM5NDE4MDIzMSwxNzUwNjAzMDI1KTtoPW5ldyBXb3JkNjQoMzY3NTAwODUyNSwxNjk0MDc2ODM5KTtsPW5ldyBXb3JkNjQoMTIwMzA2MjgxMywzMjA0MDc1NDI4KX1lbHNle3M9bmV3IFdvcmQ2NCgxNzc5MDMzNzAzLDQwODkyMzU3MjApO249bmV3IFdvcmQ2NCgzMTQ0MTM0Mjc3LDIyMjc4NzM1OTUpO289bmV3IFdvcmQ2NCgxMDEzOTA0MjQyLDQyNzExNzU3MjMpO2c9bmV3IFdvcmQ2NCgyNzczNDgwNzYyLDE1OTU3NTAxMjkpO2M9bmV3IFdvcmQ2NCgxMzU5ODkzMTE5LDI5MTc1NjUxMzcpO0M9bmV3IFdvcmQ2NCgyNjAwODIyOTI0LDcyNTUxMTE5OSk7aD1uZXcgV29yZDY0KDUyODczNDYzNSw0MjE1Mzg5NTQ3KTtsPW5ldyBXb3JkNjQoMTU0MTQ1OTIyNSwzMjcwMzMyMDkpfWNvbnN0IFE9MTI4Kk1hdGguY2VpbCgoYSsxNykvMTI4KSxFPW5ldyBVaW50OEFycmF5KFEpO2xldCB1LGQ7Zm9yKHU9MDt1PGE7Kyt1KUVbdV09dFtpKytdO0VbdSsrXT0xMjg7Y29uc3QgZj1RLTE2O2Zvcig7dTxmOylFW3UrK109MDtFW3UrK109MDtFW3UrK109MDtFW3UrK109MDtFW3UrK109MDtFW3UrK109MDtFW3UrK109MDtFW3UrK109MDtFW3UrK109MDtFW3UrK109MDtFW3UrK109MDtFW3UrK109MDtFW3UrK109YT4+PjI5JjI1NTtFW3UrK109YT4+MjEmMjU1O0VbdSsrXT1hPj4xMyYyNTU7RVt1KytdPWE+PjUmMjU1O0VbdSsrXT1hPDwzJjI1NTtjb25zdCBwPW5ldyBBcnJheSg4MCk7Zm9yKHU9MDt1PDgwO3UrKylwW3VdPW5ldyBXb3JkNjQoMCwwKTtsZXQgbT1uZXcgV29yZDY0KDAsMCkseT1uZXcgV29yZDY0KDAsMCksdz1uZXcgV29yZDY0KDAsMCksYj1uZXcgV29yZDY0KDAsMCksRD1uZXcgV29yZDY0KDAsMCksUz1uZXcgV29yZDY0KDAsMCksaz1uZXcgV29yZDY0KDAsMCksUj1uZXcgV29yZDY0KDAsMCk7Y29uc3QgTj1uZXcgV29yZDY0KDAsMCksRz1uZXcgV29yZDY0KDAsMCkseD1uZXcgV29yZDY0KDAsMCksVT1uZXcgV29yZDY0KDAsMCk7bGV0IE0sTDtmb3IodT0wO3U8UTspe2ZvcihkPTA7ZDwxNjsrK2Qpe3BbZF0uaGlnaD1FW3VdPDwyNHxFW3UrMV08PDE2fEVbdSsyXTw8OHxFW3UrM107cFtkXS5sb3c9RVt1KzRdPDwyNHxFW3UrNV08PDE2fEVbdSs2XTw8OHxFW3UrN107dSs9OH1mb3IoZD0xNjtkPDgwOysrZCl7TT1wW2RdO2xpdHRsZVNpZ21hUHJpbWUoTSxwW2QtMl0sVSk7TS5hZGQocFtkLTddKTtsaXR0bGVTaWdtYSh4LHBbZC0xNV0sVSk7TS5hZGQoeCk7TS5hZGQocFtkLTE2XSl9bS5hc3NpZ24ocyk7eS5hc3NpZ24obik7dy5hc3NpZ24obyk7Yi5hc3NpZ24oZyk7RC5hc3NpZ24oYyk7Uy5hc3NpZ24oQyk7ay5hc3NpZ24oaCk7Ui5hc3NpZ24obCk7Zm9yKGQ9MDtkPDgwOysrZCl7Ti5hc3NpZ24oUik7c2lnbWFQcmltZSh4LEQsVSk7Ti5hZGQoeCk7Y2goeCxELFMsayxVKTtOLmFkZCh4KTtOLmFkZChlW2RdKTtOLmFkZChwW2RdKTtzaWdtYShHLG0sVSk7bWFqKHgsbSx5LHcsVSk7Ry5hZGQoeCk7TT1SO1I9aztrPVM7Uz1EO2IuYWRkKE4pO0Q9YjtiPXc7dz15O3k9bTtNLmFzc2lnbihOKTtNLmFkZChHKTttPU19cy5hZGQobSk7bi5hZGQoeSk7by5hZGQodyk7Zy5hZGQoYik7Yy5hZGQoRCk7Qy5hZGQoUyk7aC5hZGQoayk7bC5hZGQoUil9aWYocil7TD1uZXcgVWludDhBcnJheSg0OCk7cy5jb3B5VG8oTCwwKTtuLmNvcHlUbyhMLDgpO28uY29weVRvKEwsMTYpO2cuY29weVRvKEwsMjQpO2MuY29weVRvKEwsMzIpO0MuY29weVRvKEwsNDApfWVsc2V7TD1uZXcgVWludDhBcnJheSg2NCk7cy5jb3B5VG8oTCwwKTtuLmNvcHlUbyhMLDgpO28uY29weVRvKEwsMTYpO2cuY29weVRvKEwsMjQpO2MuY29weVRvKEwsMzIpO0MuY29weVRvKEwsNDApO2guY29weVRvKEwsNDgpO2wuY29weVRvKEwsNTYpfXJldHVybiBMfX0oKTtjbGFzcyBOdWxsQ2lwaGVye2RlY3J5cHRCbG9jayhlKXtyZXR1cm4gZX1lbmNyeXB0KGUpe3JldHVybiBlfX1jbGFzcyBBRVNCYXNlQ2lwaGVye2NvbnN0cnVjdG9yKCl7dGhpcy5fcz1uZXcgVWludDhBcnJheShbOTksMTI0LDExOSwxMjMsMjQyLDEwNywxMTEsMTk3LDQ4LDEsMTAzLDQzLDI1NCwyMTUsMTcxLDExOCwyMDIsMTMwLDIwMSwxMjUsMjUwLDg5LDcxLDI0MCwxNzMsMjEyLDE2MiwxNzUsMTU2LDE2NCwxMTQsMTkyLDE4MywyNTMsMTQ3LDM4LDU0LDYzLDI0NywyMDQsNTIsMTY1LDIyOSwyNDEsMTEzLDIxNiw0OSwyMSw0LDE5OSwzNSwxOTUsMjQsMTUwLDUsMTU0LDcsMTgsMTI4LDIyNiwyMzUsMzksMTc4LDExNyw5LDEzMSw0NCwyNiwyNywxMTAsOTAsMTYwLDgyLDU5LDIxNCwxNzksNDEsMjI3LDQ3LDEzMiw4MywyMDksMCwyMzcsMzIsMjUyLDE3Nyw5MSwxMDYsMjAzLDE5MCw1Nyw3NCw3Niw4OCwyMDcsMjA4LDIzOSwxNzAsMjUxLDY3LDc3LDUxLDEzMyw2OSwyNDksMiwxMjcsODAsNjAsMTU5LDE2OCw4MSwxNjMsNjQsMTQzLDE0NiwxNTcsNTYsMjQ1LDE4OCwxODIsMjE4LDMzLDE2LDI1NSwyNDMsMjEwLDIwNSwxMiwxOSwyMzYsOTUsMTUxLDY4LDIzLDE5NiwxNjcsMTI2LDYxLDEwMCw5MywyNSwxMTUsOTYsMTI5LDc5LDIyMCwzNCw0MiwxNDQsMTM2LDcwLDIzOCwxODQsMjAsMjIyLDk0LDExLDIxOSwyMjQsNTAsNTgsMTAsNzMsNiwzNiw5MiwxOTQsMjExLDE3Miw5OCwxNDUsMTQ5LDIyOCwxMjEsMjMxLDIwMCw1NSwxMDksMTQxLDIxMyw3OCwxNjksMTA4LDg2LDI0NCwyMzQsMTAxLDEyMiwxNzQsOCwxODYsMTIwLDM3LDQ2LDI4LDE2NiwxODAsMTk4LDIzMiwyMjEsMTE2LDMxLDc1LDE4OSwxMzksMTM4LDExMiw2MiwxODEsMTAyLDcyLDMsMjQ2LDE0LDk3LDUzLDg3LDE4NSwxMzQsMTkzLDI5LDE1OCwyMjUsMjQ4LDE1MiwxNywxMDUsMjE3LDE0MiwxNDgsMTU1LDMwLDEzNSwyMzMsMjA2LDg1LDQwLDIyMywxNDAsMTYxLDEzNywxMywxOTEsMjMwLDY2LDEwNCw2NSwxNTMsNDUsMTUsMTc2LDg0LDE4NywyMl0pO3RoaXMuX2ludl9zPW5ldyBVaW50OEFycmF5KFs4Miw5LDEwNiwyMTMsNDgsNTQsMTY1LDU2LDE5MSw2NCwxNjMsMTU4LDEyOSwyNDMsMjE1LDI1MSwxMjQsMjI3LDU3LDEzMCwxNTUsNDcsMjU1LDEzNSw1MiwxNDIsNjcsNjgsMTk2LDIyMiwyMzMsMjAzLDg0LDEyMywxNDgsNTAsMTY2LDE5NCwzNSw2MSwyMzgsNzYsMTQ5LDExLDY2LDI1MCwxOTUsNzgsOCw0NiwxNjEsMTAyLDQwLDIxNywzNiwxNzgsMTE4LDkxLDE2Miw3MywxMDksMTM5LDIwOSwzNywxMTQsMjQ4LDI0NiwxMDAsMTM0LDEwNCwxNTIsMjIsMjEyLDE2NCw5MiwyMDQsOTMsMTAxLDE4MiwxNDYsMTA4LDExMiw3Miw4MCwyNTMsMjM3LDE4NSwyMTgsOTQsMjEsNzAsODcsMTY3LDE0MSwxNTcsMTMyLDE0NCwyMTYsMTcxLDAsMTQwLDE4OCwyMTEsMTAsMjQ3LDIyOCw4OCw1LDE4NCwxNzksNjksNiwyMDgsNDQsMzAsMTQzLDIwMiw2MywxNSwyLDE5MywxNzUsMTg5LDMsMSwxOSwxMzgsMTA3LDU4LDE0NSwxNyw2NSw3OSwxMDMsMjIwLDIzNCwxNTEsMjQyLDIwNywyMDYsMjQwLDE4MCwyMzAsMTE1LDE1MCwxNzIsMTE2LDM0LDIzMSwxNzMsNTMsMTMzLDIyNiwyNDksNTUsMjMyLDI4LDExNywyMjMsMTEwLDcxLDI0MSwyNiwxMTMsMjksNDEsMTk3LDEzNywxMTEsMTgzLDk4LDE0LDE3MCwyNCwxOTAsMjcsMjUyLDg2LDYyLDc1LDE5OCwyMTAsMTIxLDMyLDE1NCwyMTksMTkyLDI1NCwxMjAsMjA1LDkwLDI0NCwzMSwyMjEsMTY4LDUxLDEzNiw3LDE5OSw0OSwxNzcsMTgsMTYsODksMzksMTI4LDIzNiw5NSw5Niw4MSwxMjcsMTY5LDI1LDE4MSw3NCwxMyw0NSwyMjksMTIyLDE1OSwxNDcsMjAxLDE1NiwyMzksMTYwLDIyNCw1OSw3NywxNzQsNDIsMjQ1LDE3NiwyMDAsMjM1LDE4Nyw2MCwxMzEsODMsMTUzLDk3LDIzLDQzLDQsMTI2LDE4NiwxMTksMjE0LDM4LDIyNSwxMDUsMjAsOTksODUsMzMsMTIsMTI1XSk7dGhpcy5fbWl4PW5ldyBVaW50MzJBcnJheShbMCwyMzU0NzQxODcsNDcwOTQ4Mzc0LDMwMzc2NTI3Nyw5NDE4OTY3NDgsOTA4OTMzNDE1LDYwNzUzMDU1NCw3MDg3ODA4NDksMTg4Mzc5MzQ5NiwyMTE4MjE0OTk1LDE4MTc4NjY4MzAsMTY0OTYzOTIzNywxMjE1MDYxMTA4LDExODEwNDUxMTksMTQxNzU2MTY5OCwxNTE3NzY3NTI5LDM3Njc1ODY5OTIsNDAwMzA2MTE3OSw0MjM2NDI5OTkwLDQwNjkyNDY4OTMsMzYzNTczMzY2MCwzNjAyNzcwMzI3LDMyOTkyNzg0NzQsMzQwMDUyODc2OSwyNDMwMTIyMjE2LDI2NjQ1NDM3MTUsMjM2MjA5MDIzOCwyMTkzODYyNjQ1LDI4MzUxMjMzOTYsMjgwMTEwNzQwNywzMDM1NTM1MDU4LDMxMzU3NDA4ODksMzY3ODEyNDkyMywzNTc2ODcwNTEyLDMzNDEzOTQyODUsMzM3NDM2MTcwMiwzODEwNDk2MzQzLDM5Nzc2NzUzNTYsNDI3OTA4MDI1Nyw0MDQzNjEwMTg2LDI4NzY0OTQ2MjcsMjc3NjI5MjkwNCwzMDc2NjM5MDI5LDMxMTA2NTA5NDIsMjQ3MjAxMTUzNSwyNjQwMjQzMjA0LDI0MDM3Mjg2NjUsMjE2OTMwMzA1OCwxMDAxMDg5OTk1LDg5OTgzNTU4NCw2NjY0NjQ3MzMsNjk5NDMyMTUwLDU5NzI3ODQ3LDIyNjkwNjg2MCw1MzA0MDA3NTMsMjk0OTMwNjgyLDEyNzMxNjg3ODcsMTE3Mjk2NzA2NCwxNDc1NDE4NTAxLDE1MDk0MzA0MTQsMTk0MjQzNTc3NSwyMTEwNjY3NDQ0LDE4NzYyNDE4MzMsMTY0MTgxNjIyNiwyOTEwMjE5NzY2LDI3NDMwMzQxMDksMjk3NjE1MTUyMCwzMjExNjIzMTQ3LDI1MDUyMDIxMzgsMjYwNjQ1Mzk2OSwyMzAyNjkwMjUyLDIyNjk3Mjg0NTUsMzcxMTgyOTQyMiwzNTQzNTk5MjY5LDMyNDA4OTQzOTIsMzQ3NTMxMzMzMSwzODQzNjk5MDc0LDM5NDM5MDY0NDEsNDE3ODA2MjIyOCw0MTQ0MDQ3Nzc1LDEzMDY5NjczNjYsMTEzOTc4MTcwOSwxMzc0OTg4MTEyLDE2MTA0NTk3MzksMTk3NTY4MzQzNCwyMDc2OTM1MjY1LDE3NzUyNzY5MjQsMTc0MjMxNTEyNywxMDM0ODY3OTk4LDg2NjYzNzg0NSw1NjYwMjE4OTYsODAwNDQwODM1LDkyOTg3Njk4LDE5MzE5NTA2NSw0Mjk0NTYxNjQsMzk1NDQxNzExLDE5ODQ4MTI2ODUsMjAxNzc3ODU2NiwxNzg0NjYzMTk1LDE2ODM0MDcyNDgsMTMxNTU2MjE0NSwxMDgwMDk0NjM0LDEzODM4NTYzMTEsMTU1MTAzNzg4NCwxMDEwMzk4MjksMTM1MDUwMjA2LDQzNzc1NzEyMywzMzc1NTM4NjQsMTA0MjM4NTY1Nyw4MDc5NjI2MTAsNTczODA0NzgzLDc0MjAzOTAxMiwyNTMxMDY3NDUzLDI1NjQwMzMzMzQsMjMyODgyODk3MSwyMjI3NTczMDI0LDI5MzU1NjY4NjUsMjcwMDA5OTM1NCwzMDAxNzU1NjU1LDMxNjg5MzcyMjgsMzg2ODU1MjgwNSwzOTAyNTYzMTgyLDQyMDMxODExNzEsNDEwMjk3NzkxMiwzNzM2MTY0OTM3LDM1MDE3NDE4OTAsMzI2NTQ3ODc1MSwzNDMzNzEyOTgwLDExMDYwNDE1OTEsMTM0MDQ2MzEwMCwxNTc2OTc2NjA5LDE0MDg3NDkwMzQsMjA0MzIxMTQ4MywyMDA5MTk1NDcyLDE3MDg4NDgzMzMsMTgwOTA1NDE1MCw4MzI4NzcyMzEsMTA2ODM1MTM5Niw3NjY5NDU0NjUsNTk5NzYyMzU0LDE1OTQxNzk4NywxMjY0NTQ2NjQsMzYxOTI5ODc3LDQ2MzE4MDE5MCwyNzA5MjYwODcxLDI5NDM2ODIzODAsMzE3ODEwNjk2MSwzMDA5ODc5Mzg2LDI1NzI2OTcxOTUsMjUzODY4MTE4NCwyMjM2MjI4NzMzLDIzMzY0MzQ1NTAsMzUwOTg3MTEzNSwzNzQ1MzQ1MzAwLDM0NDE4NTAzNzcsMzI3NDY2NzI2NiwzOTEwMTYxOTcxLDM4NzcxOTg2NDgsNDExMDU2ODQ4NSw0MjExODE4Nzk4LDI1OTc4MDY0NzYsMjQ5NzYwNDc0MywyMjYxMDg5MTc4LDIyOTUxMDEwNzMsMjczMzg1NjE2MCwyOTAyMDg3ODUxLDMyMDI0MzcwNDYsMjk2ODAxMTQ1MywzOTM2MjkxMjg0LDM4MzUwMzY4OTUsNDEzNjQ0MDc3MCw0MTY5NDA4MjAxLDM1MzU0ODY0NTYsMzcwMjY2NTQ1OSwzNDY3MTkyMzAyLDMyMzE3MjIyMTMsMjA1MTUxODc4MCwxOTUxMzE3MDQ3LDE3MTY4OTA0MTAsMTc1MDkwMjMwNSwxMTEzODE4Mzg0LDEyODIwNTAwNzUsMTU4NDUwNDU4MiwxMzUwMDc4OTg5LDE2ODgxMDg1Miw2NzU1NjQ2MywzNzEwNDkzMzAsNDA0MDE2NzYxLDg0MTczOTU5MiwxMDA4OTE4NTk1LDc3NTU1MDgxNCw1NDAwODA3MjUsMzk2OTU2MjM2OSwzODAxMzMyMjM0LDQwMzU0ODkwNDcsNDI2OTkwNzk5NiwzNTY5MjU1MjEzLDM2Njk0NjI1NjYsMzM2Njc1NDYxOSwzMzMyNzQwMTQ0LDI2MzEwNjU0MzMsMjQ2Mzg3OTc2MiwyMTYwMTE3MDcxLDIzOTU1ODg2NzYsMjc2NzY0NTU1NywyODY4ODk3NDA2LDMxMDIwMTE3NDcsMzA2OTA0OTk2MCwyMDIwMDg0OTcsMzM3NzgzNjIsMjcwMDQwNDg3LDUwNDQ1OTQzNiw4NzU0NTEyOTMsOTc1NjU4NjQ2LDY3NTAzOTYyNyw2NDEwMjUxNTIsMjA4NDcwNDIzMywxOTE3NTE4NTYyLDE2MTU4NjEyNDcsMTg1MTMzMjg1MiwxMTQ3NTUwNjYxLDEyNDg4MDI1MTAsMTQ4NDAwNTg0MywxNDUxMDQ0MDU2LDkzMzMwMTM3MCw5NjczMTE3MjksNzMzMTU2OTcyLDYzMjk1MzcwMywyNjAzODg5NTAsMjU5NjU5MTcsMzI4NjcxODA4LDQ5NjkwNjA1OSwxMjA2NDc3ODU4LDEyMzk0NDM3NTMsMTU0MzIwODUwMCwxNDQxOTUyNTc1LDIxNDQxNjE4MDYsMTkwODY5NDI3NywxNjc1NTc3ODgwLDE4NDI3NTk0NDMsMzYxMDM2OTIyNiwzNjQ0Mzc5NTg1LDM0MDgxMTk1MTYsMzMwNzkxNjI0Nyw0MDExMTkwNTAyLDM3NzY3Njc0NjksNDA3NzM4NDQzMiw0MjQ1NjE4NjgzLDI4MDk3NzExNTQsMjg0MjczNzA0OSwzMTQ0Mzk2NDIwLDMwNDMxNDA0OTUsMjY3MzcwNTE1MCwyNDM4MjM3NjIxLDIyMDMwMzIyMzIsMjM3MDIxMzc5NV0pO3RoaXMuX21peENvbD1uZXcgVWludDhBcnJheSgyNTYpO2ZvcihsZXQgZT0wO2U8MjU2O2UrKyl0aGlzLl9taXhDb2xbZV09ZTwxMjg/ZTw8MTplPDwxXjI3O3RoaXMuYnVmZmVyPW5ldyBVaW50OEFycmF5KDE2KTt0aGlzLmJ1ZmZlclBvc2l0aW9uPTB9X2V4cGFuZEtleShlKXt1bnJlYWNoYWJsZSgiQ2Fubm90IGNhbGwgYF9leHBhbmRLZXlgIG9uIHRoZSBiYXNlIGNsYXNzIil9X2RlY3J5cHQoZSx0KXtsZXQgaSxhLHI7Y29uc3Qgcz1uZXcgVWludDhBcnJheSgxNik7cy5zZXQoZSk7Zm9yKGxldCBlPTAsaT10aGlzLl9rZXlTaXplO2U8MTY7KytlLCsraSlzW2VdXj10W2ldO2ZvcihsZXQgZT10aGlzLl9jeWNsZXNPZlJlcGV0aXRpb24tMTtlPj0xOy0tZSl7aT1zWzEzXTtzWzEzXT1zWzldO3NbOV09c1s1XTtzWzVdPXNbMV07c1sxXT1pO2k9c1sxNF07YT1zWzEwXTtzWzE0XT1zWzZdO3NbMTBdPXNbMl07c1s2XT1pO3NbMl09YTtpPXNbMTVdO2E9c1sxMV07cj1zWzddO3NbMTVdPXNbM107c1sxMV09aTtzWzddPWE7c1szXT1yO2ZvcihsZXQgZT0wO2U8MTY7KytlKXNbZV09dGhpcy5faW52X3Nbc1tlXV07Zm9yKGxldCBpPTAsYT0xNiplO2k8MTY7KytpLCsrYSlzW2ldXj10W2FdO2ZvcihsZXQgZT0wO2U8MTY7ZSs9NCl7Y29uc3QgdD10aGlzLl9taXhbc1tlXV0sYT10aGlzLl9taXhbc1tlKzFdXSxyPXRoaXMuX21peFtzW2UrMl1dLG49dGhpcy5fbWl4W3NbZSszXV07aT10XmE+Pj44XmE8PDI0XnI+Pj4xNl5yPDwxNl5uPj4+MjRebjw8ODtzW2VdPWk+Pj4yNCYyNTU7c1tlKzFdPWk+PjE2JjI1NTtzW2UrMl09aT4+OCYyNTU7c1tlKzNdPTI1NSZpfX1pPXNbMTNdO3NbMTNdPXNbOV07c1s5XT1zWzVdO3NbNV09c1sxXTtzWzFdPWk7aT1zWzE0XTthPXNbMTBdO3NbMTRdPXNbNl07c1sxMF09c1syXTtzWzZdPWk7c1syXT1hO2k9c1sxNV07YT1zWzExXTtyPXNbN107c1sxNV09c1szXTtzWzExXT1pO3NbN109YTtzWzNdPXI7Zm9yKGxldCBlPTA7ZTwxNjsrK2Upe3NbZV09dGhpcy5faW52X3Nbc1tlXV07c1tlXV49dFtlXX1yZXR1cm4gc31fZW5jcnlwdChlLHQpe2NvbnN0IGk9dGhpcy5fcztsZXQgYSxyLHM7Y29uc3Qgbj1uZXcgVWludDhBcnJheSgxNik7bi5zZXQoZSk7Zm9yKGxldCBlPTA7ZTwxNjsrK2UpbltlXV49dFtlXTtmb3IobGV0IGU9MTtlPHRoaXMuX2N5Y2xlc09mUmVwZXRpdGlvbjtlKyspe2ZvcihsZXQgZT0wO2U8MTY7KytlKW5bZV09aVtuW2VdXTtzPW5bMV07blsxXT1uWzVdO25bNV09bls5XTtuWzldPW5bMTNdO25bMTNdPXM7cz1uWzJdO3I9bls2XTtuWzJdPW5bMTBdO25bNl09blsxNF07blsxMF09cztuWzE0XT1yO3M9blszXTtyPW5bN107YT1uWzExXTtuWzNdPW5bMTVdO25bN109cztuWzExXT1yO25bMTVdPWE7Zm9yKGxldCBlPTA7ZTwxNjtlKz00KXtjb25zdCB0PW5bZSswXSxpPW5bZSsxXSxyPW5bZSsyXSxzPW5bZSszXTthPXReaV5yXnM7bltlKzBdXj1hXnRoaXMuX21peENvbFt0XmldO25bZSsxXV49YV50aGlzLl9taXhDb2xbaV5yXTtuW2UrMl1ePWFedGhpcy5fbWl4Q29sW3Jec107bltlKzNdXj1hXnRoaXMuX21peENvbFtzXnRdfWZvcihsZXQgaT0wLGE9MTYqZTtpPDE2OysraSwrK2EpbltpXV49dFthXX1mb3IobGV0IGU9MDtlPDE2OysrZSluW2VdPWlbbltlXV07cz1uWzFdO25bMV09bls1XTtuWzVdPW5bOV07bls5XT1uWzEzXTtuWzEzXT1zO3M9blsyXTtyPW5bNl07blsyXT1uWzEwXTtuWzZdPW5bMTRdO25bMTBdPXM7blsxNF09cjtzPW5bM107cj1uWzddO2E9blsxMV07blszXT1uWzE1XTtuWzddPXM7blsxMV09cjtuWzE1XT1hO2ZvcihsZXQgZT0wLGk9dGhpcy5fa2V5U2l6ZTtlPDE2OysrZSwrK2kpbltlXV49dFtpXTtyZXR1cm4gbn1fZGVjcnlwdEJsb2NrMihlLHQpe2NvbnN0IGk9ZS5sZW5ndGg7bGV0IGE9dGhpcy5idWZmZXIscj10aGlzLmJ1ZmZlclBvc2l0aW9uO2NvbnN0IHM9W107bGV0IG49dGhpcy5pdjtmb3IobGV0IHQ9MDt0PGk7Kyt0KXthW3JdPWVbdF07KytyO2lmKHI8MTYpY29udGludWU7Y29uc3QgaT10aGlzLl9kZWNyeXB0KGEsdGhpcy5fa2V5KTtmb3IobGV0IGU9MDtlPDE2OysrZSlpW2VdXj1uW2VdO249YTtzLnB1c2goaSk7YT1uZXcgVWludDhBcnJheSgxNik7cj0wfXRoaXMuYnVmZmVyPWE7dGhpcy5idWZmZXJMZW5ndGg9cjt0aGlzLml2PW47aWYoMD09PXMubGVuZ3RoKXJldHVybiBuZXcgVWludDhBcnJheSgwKTtsZXQgbz0xNipzLmxlbmd0aDtpZih0KXtjb25zdCBlPXMuYXQoLTEpO2xldCB0PWVbMTVdO2lmKHQ8PTE2KXtmb3IobGV0IGk9MTUsYT0xNi10O2k+PWE7LS1pKWlmKGVbaV0hPT10KXt0PTA7YnJlYWt9by09dDtzW3MubGVuZ3RoLTFdPWUuc3ViYXJyYXkoMCwxNi10KX19Y29uc3QgZz1uZXcgVWludDhBcnJheShvKTtmb3IobGV0IGU9MCx0PTAsaT1zLmxlbmd0aDtlPGk7KytlLHQrPTE2KWcuc2V0KHNbZV0sdCk7cmV0dXJuIGd9ZGVjcnlwdEJsb2NrKGUsdCxpPW51bGwpe2NvbnN0IGE9ZS5sZW5ndGgscj10aGlzLmJ1ZmZlcjtsZXQgcz10aGlzLmJ1ZmZlclBvc2l0aW9uO2lmKGkpdGhpcy5pdj1pO2Vsc2V7Zm9yKGxldCB0PTA7czwxNiYmdDxhOysrdCwrK3MpcltzXT1lW3RdO2lmKHM8MTYpe3RoaXMuYnVmZmVyTGVuZ3RoPXM7cmV0dXJuIG5ldyBVaW50OEFycmF5KDApfXRoaXMuaXY9cjtlPWUuc3ViYXJyYXkoMTYpfXRoaXMuYnVmZmVyPW5ldyBVaW50OEFycmF5KDE2KTt0aGlzLmJ1ZmZlckxlbmd0aD0wO3RoaXMuZGVjcnlwdEJsb2NrPXRoaXMuX2RlY3J5cHRCbG9jazI7cmV0dXJuIHRoaXMuZGVjcnlwdEJsb2NrKGUsdCl9ZW5jcnlwdChlLHQpe2NvbnN0IGk9ZS5sZW5ndGg7bGV0IGE9dGhpcy5idWZmZXIscj10aGlzLmJ1ZmZlclBvc2l0aW9uO2NvbnN0IHM9W107dHx8KHQ9bmV3IFVpbnQ4QXJyYXkoMTYpKTtmb3IobGV0IG49MDtuPGk7KytuKXthW3JdPWVbbl07KytyO2lmKHI8MTYpY29udGludWU7Zm9yKGxldCBlPTA7ZTwxNjsrK2UpYVtlXV49dFtlXTtjb25zdCBpPXRoaXMuX2VuY3J5cHQoYSx0aGlzLl9rZXkpO3Q9aTtzLnB1c2goaSk7YT1uZXcgVWludDhBcnJheSgxNik7cj0wfXRoaXMuYnVmZmVyPWE7dGhpcy5idWZmZXJMZW5ndGg9cjt0aGlzLml2PXQ7aWYoMD09PXMubGVuZ3RoKXJldHVybiBuZXcgVWludDhBcnJheSgwKTtjb25zdCBuPTE2KnMubGVuZ3RoLG89bmV3IFVpbnQ4QXJyYXkobik7Zm9yKGxldCBlPTAsdD0wLGk9cy5sZW5ndGg7ZTxpOysrZSx0Kz0xNilvLnNldChzW2VdLHQpO3JldHVybiBvfX1jbGFzcyBBRVMxMjhDaXBoZXIgZXh0ZW5kcyBBRVNCYXNlQ2lwaGVye2NvbnN0cnVjdG9yKGUpe3N1cGVyKCk7dGhpcy5fY3ljbGVzT2ZSZXBldGl0aW9uPTEwO3RoaXMuX2tleVNpemU9MTYwO3RoaXMuX3Jjb249bmV3IFVpbnQ4QXJyYXkoWzE0MSwxLDIsNCw4LDE2LDMyLDY0LDEyOCwyNyw1NCwxMDgsMjE2LDE3MSw3NywxNTQsNDcsOTQsMTg4LDk5LDE5OCwxNTEsNTMsMTA2LDIxMiwxNzksMTI1LDI1MCwyMzksMTk3LDE0NSw1NywxMTQsMjI4LDIxMSwxODksOTcsMTk0LDE1OSwzNyw3NCwxNDgsNTEsMTAyLDIwNCwxMzEsMjksNTgsMTE2LDIzMiwyMDMsMTQxLDEsMiw0LDgsMTYsMzIsNjQsMTI4LDI3LDU0LDEwOCwyMTYsMTcxLDc3LDE1NCw0Nyw5NCwxODgsOTksMTk4LDE1MSw1MywxMDYsMjEyLDE3OSwxMjUsMjUwLDIzOSwxOTcsMTQ1LDU3LDExNCwyMjgsMjExLDE4OSw5NywxOTQsMTU5LDM3LDc0LDE0OCw1MSwxMDIsMjA0LDEzMSwyOSw1OCwxMTYsMjMyLDIwMywxNDEsMSwyLDQsOCwxNiwzMiw2NCwxMjgsMjcsNTQsMTA4LDIxNiwxNzEsNzcsMTU0LDQ3LDk0LDE4OCw5OSwxOTgsMTUxLDUzLDEwNiwyMTIsMTc5LDEyNSwyNTAsMjM5LDE5NywxNDUsNTcsMTE0LDIyOCwyMTEsMTg5LDk3LDE5NCwxNTksMzcsNzQsMTQ4LDUxLDEwMiwyMDQsMTMxLDI5LDU4LDExNiwyMzIsMjAzLDE0MSwxLDIsNCw4LDE2LDMyLDY0LDEyOCwyNyw1NCwxMDgsMjE2LDE3MSw3NywxNTQsNDcsOTQsMTg4LDk5LDE5OCwxNTEsNTMsMTA2LDIxMiwxNzksMTI1LDI1MCwyMzksMTk3LDE0NSw1NywxMTQsMjI4LDIxMSwxODksOTcsMTk0LDE1OSwzNyw3NCwxNDgsNTEsMTAyLDIwNCwxMzEsMjksNTgsMTE2LDIzMiwyMDMsMTQxLDEsMiw0LDgsMTYsMzIsNjQsMTI4LDI3LDU0LDEwOCwyMTYsMTcxLDc3LDE1NCw0Nyw5NCwxODgsOTksMTk4LDE1MSw1MywxMDYsMjEyLDE3OSwxMjUsMjUwLDIzOSwxOTcsMTQ1LDU3LDExNCwyMjgsMjExLDE4OSw5NywxOTQsMTU5LDM3LDc0LDE0OCw1MSwxMDIsMjA0LDEzMSwyOSw1OCwxMTYsMjMyLDIwMywxNDFdKTt0aGlzLl9rZXk9dGhpcy5fZXhwYW5kS2V5KGUpfV9leHBhbmRLZXkoZSl7Y29uc3QgdD10aGlzLl9zLGk9dGhpcy5fcmNvbixhPW5ldyBVaW50OEFycmF5KDE3Nik7YS5zZXQoZSk7Zm9yKGxldCBlPTE2LHI9MTtlPDE3NjsrK3Ipe2xldCBzPWFbZS0zXSxuPWFbZS0yXSxvPWFbZS0xXSxnPWFbZS00XTtzPXRbc107bj10W25dO289dFtvXTtnPXRbZ107c149aVtyXTtmb3IobGV0IHQ9MDt0PDQ7Kyt0KXthW2VdPXNePWFbZS0xNl07ZSsrO2FbZV09bl49YVtlLTE2XTtlKys7YVtlXT1vXj1hW2UtMTZdO2UrKzthW2VdPWdePWFbZS0xNl07ZSsrfX1yZXR1cm4gYX19Y2xhc3MgQUVTMjU2Q2lwaGVyIGV4dGVuZHMgQUVTQmFzZUNpcGhlcntjb25zdHJ1Y3RvcihlKXtzdXBlcigpO3RoaXMuX2N5Y2xlc09mUmVwZXRpdGlvbj0xNDt0aGlzLl9rZXlTaXplPTIyNDt0aGlzLl9rZXk9dGhpcy5fZXhwYW5kS2V5KGUpfV9leHBhbmRLZXkoZSl7Y29uc3QgdD10aGlzLl9zLGk9bmV3IFVpbnQ4QXJyYXkoMjQwKTtpLnNldChlKTtsZXQgYSxyLHMsbixvPTE7Zm9yKGxldCBlPTMyLGc9MTtlPDI0MDsrK2cpe2lmKGUlMzI9PTE2KXthPXRbYV07cj10W3JdO3M9dFtzXTtuPXRbbl19ZWxzZSBpZihlJTMyPT0wKXthPWlbZS0zXTtyPWlbZS0yXTtzPWlbZS0xXTtuPWlbZS00XTthPXRbYV07cj10W3JdO3M9dFtzXTtuPXRbbl07YV49bzsobzw8PTEpPj0yNTYmJihvPTI1NSYoMjdebykpfWZvcihsZXQgdD0wO3Q8NDsrK3Qpe2lbZV09YV49aVtlLTMyXTtlKys7aVtlXT1yXj1pW2UtMzJdO2UrKztpW2VdPXNePWlbZS0zMl07ZSsrO2lbZV09bl49aVtlLTMyXTtlKyt9fXJldHVybiBpfX1jbGFzcyBQREYxN3tjaGVja093bmVyUGFzc3dvcmQoZSx0LGksYSl7Y29uc3Qgcj1uZXcgVWludDhBcnJheShlLmxlbmd0aCs1Nik7ci5zZXQoZSwwKTtyLnNldCh0LGUubGVuZ3RoKTtyLnNldChpLGUubGVuZ3RoK3QubGVuZ3RoKTtyZXR1cm4gaXNBcnJheUVxdWFsKFByKHIsMCxyLmxlbmd0aCksYSl9Y2hlY2tVc2VyUGFzc3dvcmQoZSx0LGkpe2NvbnN0IGE9bmV3IFVpbnQ4QXJyYXkoZS5sZW5ndGgrOCk7YS5zZXQoZSwwKTthLnNldCh0LGUubGVuZ3RoKTtyZXR1cm4gaXNBcnJheUVxdWFsKFByKGEsMCxhLmxlbmd0aCksaSl9Z2V0T3duZXJLZXkoZSx0LGksYSl7Y29uc3Qgcj1uZXcgVWludDhBcnJheShlLmxlbmd0aCs1Nik7ci5zZXQoZSwwKTtyLnNldCh0LGUubGVuZ3RoKTtyLnNldChpLGUubGVuZ3RoK3QubGVuZ3RoKTtjb25zdCBzPVByKHIsMCxyLmxlbmd0aCk7cmV0dXJuIG5ldyBBRVMyNTZDaXBoZXIocykuZGVjcnlwdEJsb2NrKGEsITEsbmV3IFVpbnQ4QXJyYXkoMTYpKX1nZXRVc2VyS2V5KGUsdCxpKXtjb25zdCBhPW5ldyBVaW50OEFycmF5KGUubGVuZ3RoKzgpO2Euc2V0KGUsMCk7YS5zZXQodCxlLmxlbmd0aCk7Y29uc3Qgcj1QcihhLDAsYS5sZW5ndGgpO3JldHVybiBuZXcgQUVTMjU2Q2lwaGVyKHIpLmRlY3J5cHRCbG9jayhpLCExLG5ldyBVaW50OEFycmF5KDE2KSl9fWNsYXNzIFBERjIwe19oYXNoKGUsdCxpKXtsZXQgYT1Qcih0LDAsdC5sZW5ndGgpLnN1YmFycmF5KDAsMzIpLHI9WzBdLHM9MDtmb3IoO3M8NjR8fHIuYXQoLTEpPnMtMzI7KXtjb25zdCB0PWUubGVuZ3RoK2EubGVuZ3RoK2kubGVuZ3RoLGM9bmV3IFVpbnQ4QXJyYXkodCk7bGV0IEM9MDtjLnNldChlLEMpO0MrPWUubGVuZ3RoO2Muc2V0KGEsQyk7Qys9YS5sZW5ndGg7Yy5zZXQoaSxDKTtjb25zdCBoPW5ldyBVaW50OEFycmF5KDY0KnQpO2ZvcihsZXQgZT0wLGk9MDtlPDY0O2UrKyxpKz10KWguc2V0KGMsaSk7cj1uZXcgQUVTMTI4Q2lwaGVyKGEuc3ViYXJyYXkoMCwxNikpLmVuY3J5cHQoaCxhLnN1YmFycmF5KDE2LDMyKSk7Y29uc3QgbD1yLnNsaWNlKDAsMTYpLnJlZHVjZSgoKGUsdCk9PmUrdCksMCklMzswPT09bD9hPVByKHIsMCxyLmxlbmd0aCk6MT09PWw/YT0obj1yLG89MCxnPXIubGVuZ3RoLFdyKG4sbyxnLCEwKSk6Mj09PWwmJihhPVdyKHIsMCxyLmxlbmd0aCkpO3MrK312YXIgbixvLGc7cmV0dXJuIGEuc3ViYXJyYXkoMCwzMil9Y2hlY2tPd25lclBhc3N3b3JkKGUsdCxpLGEpe2NvbnN0IHI9bmV3IFVpbnQ4QXJyYXkoZS5sZW5ndGgrNTYpO3Iuc2V0KGUsMCk7ci5zZXQodCxlLmxlbmd0aCk7ci5zZXQoaSxlLmxlbmd0aCt0Lmxlbmd0aCk7cmV0dXJuIGlzQXJyYXlFcXVhbCh0aGlzLl9oYXNoKGUscixpKSxhKX1jaGVja1VzZXJQYXNzd29yZChlLHQsaSl7Y29uc3QgYT1uZXcgVWludDhBcnJheShlLmxlbmd0aCs4KTthLnNldChlLDApO2Euc2V0KHQsZS5sZW5ndGgpO3JldHVybiBpc0FycmF5RXF1YWwodGhpcy5faGFzaChlLGEsW10pLGkpfWdldE93bmVyS2V5KGUsdCxpLGEpe2NvbnN0IHI9bmV3IFVpbnQ4QXJyYXkoZS5sZW5ndGgrNTYpO3Iuc2V0KGUsMCk7ci5zZXQodCxlLmxlbmd0aCk7ci5zZXQoaSxlLmxlbmd0aCt0Lmxlbmd0aCk7Y29uc3Qgcz10aGlzLl9oYXNoKGUscixpKTtyZXR1cm4gbmV3IEFFUzI1NkNpcGhlcihzKS5kZWNyeXB0QmxvY2soYSwhMSxuZXcgVWludDhBcnJheSgxNikpfWdldFVzZXJLZXkoZSx0LGkpe2NvbnN0IGE9bmV3IFVpbnQ4QXJyYXkoZS5sZW5ndGgrOCk7YS5zZXQoZSwwKTthLnNldCh0LGUubGVuZ3RoKTtjb25zdCByPXRoaXMuX2hhc2goZSxhLFtdKTtyZXR1cm4gbmV3IEFFUzI1NkNpcGhlcihyKS5kZWNyeXB0QmxvY2soaSwhMSxuZXcgVWludDhBcnJheSgxNikpfX1jbGFzcyBDaXBoZXJUcmFuc2Zvcm17Y29uc3RydWN0b3IoZSx0KXt0aGlzLlN0cmluZ0NpcGhlckNvbnN0cnVjdG9yPWU7dGhpcy5TdHJlYW1DaXBoZXJDb25zdHJ1Y3Rvcj10fWNyZWF0ZVN0cmVhbShlLHQpe2NvbnN0IGk9bmV3IHRoaXMuU3RyZWFtQ2lwaGVyQ29uc3RydWN0b3I7cmV0dXJuIG5ldyBEZWNyeXB0U3RyZWFtKGUsdCwoZnVuY3Rpb24gY2lwaGVyVHJhbnNmb3JtRGVjcnlwdFN0cmVhbShlLHQpe3JldHVybiBpLmRlY3J5cHRCbG9jayhlLHQpfSkpfWRlY3J5cHRTdHJpbmcoZSl7Y29uc3QgdD1uZXcgdGhpcy5TdHJpbmdDaXBoZXJDb25zdHJ1Y3RvcjtsZXQgaT1zdHJpbmdUb0J5dGVzKGUpO2k9dC5kZWNyeXB0QmxvY2soaSwhMCk7cmV0dXJuIGJ5dGVzVG9TdHJpbmcoaSl9ZW5jcnlwdFN0cmluZyhlKXtjb25zdCB0PW5ldyB0aGlzLlN0cmluZ0NpcGhlckNvbnN0cnVjdG9yO2lmKHQgaW5zdGFuY2VvZiBBRVNCYXNlQ2lwaGVyKXtjb25zdCBpPTE2LWUubGVuZ3RoJTE2O2UrPVN0cmluZy5mcm9tQ2hhckNvZGUoaSkucmVwZWF0KGkpO2NvbnN0IGE9bmV3IFVpbnQ4QXJyYXkoMTYpO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgY3J5cHRvKWNyeXB0by5nZXRSYW5kb21WYWx1ZXMoYSk7ZWxzZSBmb3IobGV0IGU9MDtlPDE2O2UrKylhW2VdPU1hdGguZmxvb3IoMjU2Kk1hdGgucmFuZG9tKCkpO2xldCByPXN0cmluZ1RvQnl0ZXMoZSk7cj10LmVuY3J5cHQocixhKTtjb25zdCBzPW5ldyBVaW50OEFycmF5KDE2K3IubGVuZ3RoKTtzLnNldChhKTtzLnNldChyLDE2KTtyZXR1cm4gYnl0ZXNUb1N0cmluZyhzKX1sZXQgaT1zdHJpbmdUb0J5dGVzKGUpO2k9dC5lbmNyeXB0KGkpO3JldHVybiBieXRlc1RvU3RyaW5nKGkpfX1jbGFzcyBDaXBoZXJUcmFuc2Zvcm1GYWN0b3J5e3N0YXRpYyNrPW5ldyBVaW50OEFycmF5KFs0MCwxOTEsNzgsOTQsNzgsMTE3LDEzOCw2NSwxMDAsMCw3OCw4NiwyNTUsMjUwLDEsOCw0Niw0NiwwLDE4MiwyMDgsMTA0LDYyLDEyOCw0NywxMiwxNjksMjU0LDEwMCw4MywxMDUsMTIyXSk7I1IoZSx0LGksYSxyLHMsbixvLGcsYyxDLGgpe2lmKHQpe2NvbnN0IGU9TWF0aC5taW4oMTI3LHQubGVuZ3RoKTt0PXQuc3ViYXJyYXkoMCxlKX1lbHNlIHQ9W107Y29uc3QgbD02PT09ZT9uZXcgUERGMjA6bmV3IFBERjE3O3JldHVybiBsLmNoZWNrVXNlclBhc3N3b3JkKHQsbyxuKT9sLmdldFVzZXJLZXkodCxnLEMpOnQubGVuZ3RoJiZsLmNoZWNrT3duZXJQYXNzd29yZCh0LGEscyxpKT9sLmdldE93bmVyS2V5KHQscixzLGMpOm51bGx9I04oZSx0LGksYSxyLHMsbixvKXtjb25zdCBnPTQwK2kubGVuZ3RoK2UubGVuZ3RoLGM9bmV3IFVpbnQ4QXJyYXkoZyk7bGV0IEMsaCxsPTA7aWYodCl7aD1NYXRoLm1pbigzMix0Lmxlbmd0aCk7Zm9yKDtsPGg7KytsKWNbbF09dFtsXX1DPTA7Zm9yKDtsPDMyOyljW2wrK109Q2lwaGVyVHJhbnNmb3JtRmFjdG9yeS4ja1tDKytdO2ZvcihDPTAsaD1pLmxlbmd0aDtDPGg7KytDKWNbbCsrXT1pW0NdO2NbbCsrXT0yNTUmcjtjW2wrK109cj4+OCYyNTU7Y1tsKytdPXI+PjE2JjI1NTtjW2wrK109cj4+PjI0JjI1NTtmb3IoQz0wLGg9ZS5sZW5ndGg7QzxoOysrQyljW2wrK109ZVtDXTtpZihzPj00JiYhbyl7Y1tsKytdPTI1NTtjW2wrK109MjU1O2NbbCsrXT0yNTU7Y1tsKytdPTI1NX1sZXQgUT1PcihjLDAsbCk7Y29uc3QgRT1uPj4zO2lmKHM+PTMpZm9yKEM9MDtDPDUwOysrQylRPU9yKFEsMCxFKTtjb25zdCB1PVEuc3ViYXJyYXkoMCxFKTtsZXQgZCxmO2lmKHM+PTMpe2ZvcihsPTA7bDwzMjsrK2wpY1tsXT1DaXBoZXJUcmFuc2Zvcm1GYWN0b3J5LiNrW2xdO2ZvcihDPTAsaD1lLmxlbmd0aDtDPGg7KytDKWNbbCsrXT1lW0NdO2Q9bmV3IEFSQ0ZvdXJDaXBoZXIodSk7Zj1kLmVuY3J5cHRCbG9jayhPcihjLDAsbCkpO2g9dS5sZW5ndGg7Y29uc3QgdD1uZXcgVWludDhBcnJheShoKTtmb3IoQz0xO0M8PTE5OysrQyl7Zm9yKGxldCBlPTA7ZTxoOysrZSl0W2VdPXVbZV1eQztkPW5ldyBBUkNGb3VyQ2lwaGVyKHQpO2Y9ZC5lbmNyeXB0QmxvY2soZil9Zm9yKEM9MCxoPWYubGVuZ3RoO0M8aDsrK0MpaWYoYVtDXSE9PWZbQ10pcmV0dXJuIG51bGx9ZWxzZXtkPW5ldyBBUkNGb3VyQ2lwaGVyKHUpO2Y9ZC5lbmNyeXB0QmxvY2soQ2lwaGVyVHJhbnNmb3JtRmFjdG9yeS4jayk7Zm9yKEM9MCxoPWYubGVuZ3RoO0M8aDsrK0MpaWYoYVtDXSE9PWZbQ10pcmV0dXJuIG51bGx9cmV0dXJuIHV9I0coZSx0LGksYSl7Y29uc3Qgcj1uZXcgVWludDhBcnJheSgzMik7bGV0IHM9MDtjb25zdCBuPU1hdGgubWluKDMyLGUubGVuZ3RoKTtmb3IoO3M8bjsrK3MpcltzXT1lW3NdO2xldCBvPTA7Zm9yKDtzPDMyOylyW3MrK109Q2lwaGVyVHJhbnNmb3JtRmFjdG9yeS4ja1tvKytdO2xldCBnPU9yKHIsMCxzKTtjb25zdCBjPWE+PjM7aWYoaT49Mylmb3Iobz0wO288NTA7KytvKWc9T3IoZywwLGcubGVuZ3RoKTtsZXQgQyxoO2lmKGk+PTMpe2g9dDtjb25zdCBlPW5ldyBVaW50OEFycmF5KGMpO2ZvcihvPTE5O28+PTA7by0tKXtmb3IobGV0IHQ9MDt0PGM7Kyt0KWVbdF09Z1t0XV5vO0M9bmV3IEFSQ0ZvdXJDaXBoZXIoZSk7aD1DLmVuY3J5cHRCbG9jayhoKX19ZWxzZXtDPW5ldyBBUkNGb3VyQ2lwaGVyKGcuc3ViYXJyYXkoMCxjKSk7aD1DLmVuY3J5cHRCbG9jayh0KX1yZXR1cm4gaH0jeChlLHQsaSxhPSExKXtjb25zdCByPW5ldyBVaW50OEFycmF5KGkubGVuZ3RoKzkpLHM9aS5sZW5ndGg7bGV0IG47Zm9yKG49MDtuPHM7KytuKXJbbl09aVtuXTtyW24rK109MjU1JmU7cltuKytdPWU+PjgmMjU1O3JbbisrXT1lPj4xNiYyNTU7cltuKytdPTI1NSZ0O3JbbisrXT10Pj44JjI1NTtpZihhKXtyW24rK109MTE1O3JbbisrXT02NTtyW24rK109MTA4O3JbbisrXT04NH1yZXR1cm4gT3IociwwLG4pLnN1YmFycmF5KDAsTWF0aC5taW4oaS5sZW5ndGgrNSwxNikpfSNVKGUsdCxpLGEscil7aWYoISh0IGluc3RhbmNlb2YgTmFtZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIGNyeXB0IGZpbHRlciBuYW1lLiIpO2NvbnN0IHM9dGhpcyxuPWUuZ2V0KHQubmFtZSksbz1uPy5nZXQoIkNGTSIpO2lmKCFvfHwiTm9uZSI9PT1vLm5hbWUpcmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBOdWxsQ2lwaGVyfTtpZigiVjIiPT09by5uYW1lKXJldHVybiBmdW5jdGlvbigpe3JldHVybiBuZXcgQVJDRm91ckNpcGhlcihzLiN4KGksYSxyLCExKSl9O2lmKCJBRVNWMiI9PT1vLm5hbWUpcmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBBRVMxMjhDaXBoZXIocy4jeChpLGEsciwhMCkpfTtpZigiQUVTVjMiPT09by5uYW1lKXJldHVybiBmdW5jdGlvbigpe3JldHVybiBuZXcgQUVTMjU2Q2lwaGVyKHIpfTt0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlVua25vd24gY3J5cHRvIG1ldGhvZCIpfWNvbnN0cnVjdG9yKGUsdCxpKXtjb25zdCBhPWUuZ2V0KCJGaWx0ZXIiKTtpZighaXNOYW1lKGEsIlN0YW5kYXJkIikpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJ1bmtub3duIGVuY3J5cHRpb24gbWV0aG9kIik7dGhpcy5maWx0ZXJOYW1lPWEubmFtZTt0aGlzLmRpY3Q9ZTtjb25zdCByPWUuZ2V0KCJWIik7aWYoIU51bWJlci5pc0ludGVnZXIocil8fDEhPT1yJiYyIT09ciYmNCE9PXImJjUhPT1yKXRocm93IG5ldyBGb3JtYXRFcnJvcigidW5zdXBwb3J0ZWQgZW5jcnlwdGlvbiBhbGdvcml0aG0iKTt0aGlzLmFsZ29yaXRobT1yO2xldCBzPWUuZ2V0KCJMZW5ndGgiKTtpZighcylpZihyPD0zKXM9NDA7ZWxzZXtjb25zdCB0PWUuZ2V0KCJDRiIpLGk9ZS5nZXQoIlN0bUYiKTtpZih0IGluc3RhbmNlb2YgRGljdCYmaSBpbnN0YW5jZW9mIE5hbWUpe3Quc3VwcHJlc3NFbmNyeXB0aW9uPSEwO2NvbnN0IGU9dC5nZXQoaS5uYW1lKTtzPWU/LmdldCgiTGVuZ3RoIil8fDEyODtzPDQwJiYoczw8PTMpfX1pZighTnVtYmVyLmlzSW50ZWdlcihzKXx8czw0MHx8cyU4IT0wKXRocm93IG5ldyBGb3JtYXRFcnJvcigiaW52YWxpZCBrZXkgbGVuZ3RoIik7Y29uc3Qgbj1zdHJpbmdUb0J5dGVzKGUuZ2V0KCJPIikpLG89c3RyaW5nVG9CeXRlcyhlLmdldCgiVSIpKSxnPW4uc3ViYXJyYXkoMCwzMiksYz1vLnN1YmFycmF5KDAsMzIpLEM9ZS5nZXQoIlAiKSxoPWUuZ2V0KCJSIiksbD0oND09PXJ8fDU9PT1yKSYmITEhPT1lLmdldCgiRW5jcnlwdE1ldGFkYXRhIik7dGhpcy5lbmNyeXB0TWV0YWRhdGE9bDtjb25zdCBRPXN0cmluZ1RvQnl0ZXModCk7bGV0IEUsdTtpZihpKXtpZig2PT09aCl0cnl7aT11dGY4U3RyaW5nVG9TdHJpbmcoaSl9Y2F0Y2h7d2FybigiQ2lwaGVyVHJhbnNmb3JtRmFjdG9yeTogVW5hYmxlIHRvIGNvbnZlcnQgVVRGOCBlbmNvZGVkIHBhc3N3b3JkLiIpfUU9c3RyaW5nVG9CeXRlcyhpKX1pZig1IT09cil1PXRoaXMuI04oUSxFLGcsYyxDLGgscyxsKTtlbHNle2NvbnN0IHQ9bi5zdWJhcnJheSgzMiw0MCksaT1uLnN1YmFycmF5KDQwLDQ4KSxhPW8uc3ViYXJyYXkoMCw0OCkscj1vLnN1YmFycmF5KDMyLDQwKSxzPW8uc3ViYXJyYXkoNDAsNDgpLEM9c3RyaW5nVG9CeXRlcyhlLmdldCgiT0UiKSksbD1zdHJpbmdUb0J5dGVzKGUuZ2V0KCJVRSIpKSxRPXN0cmluZ1RvQnl0ZXMoZS5nZXQoIlBlcm1zIikpO3U9dGhpcy4jUihoLEUsZyx0LGksYSxjLHIscyxDLGwsUSl9aWYoIXUmJiFpKXRocm93IG5ldyBQYXNzd29yZEV4Y2VwdGlvbigiTm8gcGFzc3dvcmQgZ2l2ZW4iLG90KTtpZighdSYmaSl7Y29uc3QgZT10aGlzLiNHKEUsZyxoLHMpO3U9dGhpcy4jTihRLGUsZyxjLEMsaCxzLGwpfWlmKCF1KXRocm93IG5ldyBQYXNzd29yZEV4Y2VwdGlvbigiSW5jb3JyZWN0IFBhc3N3b3JkIixndCk7dGhpcy5lbmNyeXB0aW9uS2V5PXU7aWYocj49NCl7Y29uc3QgdD1lLmdldCgiQ0YiKTt0IGluc3RhbmNlb2YgRGljdCYmKHQuc3VwcHJlc3NFbmNyeXB0aW9uPSEwKTt0aGlzLmNmPXQ7dGhpcy5zdG1mPWUuZ2V0KCJTdG1GIil8fE5hbWUuZ2V0KCJJZGVudGl0eSIpO3RoaXMuc3RyZj1lLmdldCgiU3RyRiIpfHxOYW1lLmdldCgiSWRlbnRpdHkiKTt0aGlzLmVmZj1lLmdldCgiRUZGIil8fHRoaXMuc3RtZn19Y3JlYXRlQ2lwaGVyVHJhbnNmb3JtKGUsdCl7aWYoND09PXRoaXMuYWxnb3JpdGhtfHw1PT09dGhpcy5hbGdvcml0aG0pcmV0dXJuIG5ldyBDaXBoZXJUcmFuc2Zvcm0odGhpcy4jVSh0aGlzLmNmLHRoaXMuc3RyZixlLHQsdGhpcy5lbmNyeXB0aW9uS2V5KSx0aGlzLiNVKHRoaXMuY2YsdGhpcy5zdG1mLGUsdCx0aGlzLmVuY3J5cHRpb25LZXkpKTtjb25zdCBpPXRoaXMuI3goZSx0LHRoaXMuZW5jcnlwdGlvbktleSwhMSksY2lwaGVyQ29uc3RydWN0b3I9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEFSQ0ZvdXJDaXBoZXIoaSl9O3JldHVybiBuZXcgQ2lwaGVyVHJhbnNmb3JtKGNpcGhlckNvbnN0cnVjdG9yLGNpcGhlckNvbnN0cnVjdG9yKX19YXN5bmMgZnVuY3Rpb24gd3JpdGVPYmplY3QoZSx0LGkse2VuY3J5cHQ6YT1udWxsfSl7Y29uc3Qgcj1hPy5jcmVhdGVDaXBoZXJUcmFuc2Zvcm0oZS5udW0sZS5nZW4pO2kucHVzaChgJHtlLm51bX0gJHtlLmdlbn0gb2JqXG5gKTt0IGluc3RhbmNlb2YgRGljdD9hd2FpdCB3cml0ZURpY3QodCxpLHIpOnQgaW5zdGFuY2VvZiBCYXNlU3RyZWFtP2F3YWl0IHdyaXRlU3RyZWFtKHQsaSxyKTooQXJyYXkuaXNBcnJheSh0KXx8QXJyYXlCdWZmZXIuaXNWaWV3KHQpKSYmYXdhaXQgd3JpdGVBcnJheSh0LGkscik7aS5wdXNoKCJcbmVuZG9ialxuIil9YXN5bmMgZnVuY3Rpb24gd3JpdGVEaWN0KGUsdCxpKXt0LnB1c2goIjw8Iik7Zm9yKGNvbnN0IGEgb2YgZS5nZXRLZXlzKCkpe3QucHVzaChgIC8ke2VzY2FwZVBERk5hbWUoYSl9IGApO2F3YWl0IHdyaXRlVmFsdWUoZS5nZXRSYXcoYSksdCxpKX10LnB1c2goIj4+Iil9YXN5bmMgZnVuY3Rpb24gd3JpdGVTdHJlYW0oZSx0LGkpe2xldCBhPWUuZ2V0Qnl0ZXMoKTtjb25zdHtkaWN0OnJ9PWUsW3Msbl09YXdhaXQgUHJvbWlzZS5hbGwoW3IuZ2V0QXN5bmMoIkZpbHRlciIpLHIuZ2V0QXN5bmMoIkRlY29kZVBhcm1zIildKSxvPWlzTmFtZShBcnJheS5pc0FycmF5KHMpP2F3YWl0IHIueHJlZi5mZXRjaElmUmVmQXN5bmMoc1swXSk6cywiRmxhdGVEZWNvZGUiKTtpZihhLmxlbmd0aD49MjU2fHxvKXRyeXtjb25zdCBlPW5ldyBDb21wcmVzc2lvblN0cmVhbSgiZGVmbGF0ZSIpLHQ9ZS53cml0YWJsZS5nZXRXcml0ZXIoKTt0LndyaXRlKGEpO3QuY2xvc2UoKTtjb25zdCBpPWF3YWl0IG5ldyBSZXNwb25zZShlLnJlYWRhYmxlKS5hcnJheUJ1ZmZlcigpO2E9bmV3IFVpbnQ4QXJyYXkoaSk7bGV0IGcsYztpZihzKXtpZighbyl7Zz1BcnJheS5pc0FycmF5KHMpP1tOYW1lLmdldCgiRmxhdGVEZWNvZGUiKSwuLi5zXTpbTmFtZS5nZXQoIkZsYXRlRGVjb2RlIiksc107biYmKGM9QXJyYXkuaXNBcnJheShuKT9bbnVsbCwuLi5uXTpbbnVsbCxuXSl9fWVsc2UgZz1OYW1lLmdldCgiRmxhdGVEZWNvZGUiKTtnJiZyLnNldCgiRmlsdGVyIixnKTtjJiZyLnNldCgiRGVjb2RlUGFybXMiLGMpfWNhdGNoKGUpe2luZm8oYHdyaXRlU3RyZWFtIC0gY2Fubm90IGNvbXByZXNzIGRhdGE6ICIke2V9Ii5gKX1sZXQgZz1ieXRlc1RvU3RyaW5nKGEpO2kmJihnPWkuZW5jcnlwdFN0cmluZyhnKSk7ci5zZXQoIkxlbmd0aCIsZy5sZW5ndGgpO2F3YWl0IHdyaXRlRGljdChyLHQsaSk7dC5wdXNoKCIgc3RyZWFtXG4iLGcsIlxuZW5kc3RyZWFtIil9YXN5bmMgZnVuY3Rpb24gd3JpdGVBcnJheShlLHQsaSl7dC5wdXNoKCJbIik7bGV0IGE9ITA7Zm9yKGNvbnN0IHIgb2YgZSl7YT9hPSExOnQucHVzaCgiICIpO2F3YWl0IHdyaXRlVmFsdWUocix0LGkpfXQucHVzaCgiXSIpfWFzeW5jIGZ1bmN0aW9uIHdyaXRlVmFsdWUoZSx0LGkpe2lmKGUgaW5zdGFuY2VvZiBOYW1lKXQucHVzaChgLyR7ZXNjYXBlUERGTmFtZShlLm5hbWUpfWApO2Vsc2UgaWYoZSBpbnN0YW5jZW9mIFJlZil0LnB1c2goYCR7ZS5udW19ICR7ZS5nZW59IFJgKTtlbHNlIGlmKEFycmF5LmlzQXJyYXkoZSl8fEFycmF5QnVmZmVyLmlzVmlldyhlKSlhd2FpdCB3cml0ZUFycmF5KGUsdCxpKTtlbHNlIGlmKCJzdHJpbmciPT10eXBlb2YgZSl7aSYmKGU9aS5lbmNyeXB0U3RyaW5nKGUpKTt0LnB1c2goYCgke2VzY2FwZVN0cmluZyhlKX0pYCl9ZWxzZSJudW1iZXIiPT10eXBlb2YgZT90LnB1c2gobnVtYmVyVG9TdHJpbmcoZSkpOiJib29sZWFuIj09dHlwZW9mIGU/dC5wdXNoKGUudG9TdHJpbmcoKSk6ZSBpbnN0YW5jZW9mIERpY3Q/YXdhaXQgd3JpdGVEaWN0KGUsdCxpKTplIGluc3RhbmNlb2YgQmFzZVN0cmVhbT9hd2FpdCB3cml0ZVN0cmVhbShlLHQsaSk6bnVsbD09PWU/dC5wdXNoKCJudWxsIik6d2FybihgVW5oYW5kbGVkIHZhbHVlIGluIHdyaXRlcjogJHt0eXBlb2YgZX0sIHBsZWFzZSBmaWxlIGEgYnVnLmApfWZ1bmN0aW9uIHdyaXRlSW50KGUsdCxpLGEpe2ZvcihsZXQgcj10K2ktMTtyPmktMTtyLS0pe2Fbcl09MjU1JmU7ZT4+PTh9cmV0dXJuIGkrdH1mdW5jdGlvbiB3cml0ZVN0cmluZyhlLHQsaSl7Zm9yKGxldCBhPTAscj1lLmxlbmd0aDthPHI7YSsrKWlbdCthXT0yNTUmZS5jaGFyQ29kZUF0KGEpfWZ1bmN0aW9uIHVwZGF0ZVhGQSh7eGZhRGF0YTplLHhmYURhdGFzZXRzUmVmOnQsbmV3UmVmczppLHhyZWY6YX0pe2lmKG51bGw9PT1lKXtlPWZ1bmN0aW9uIHdyaXRlWEZBRGF0YUZvckFjcm9mb3JtKGUsdCl7Y29uc3QgaT1uZXcgU2ltcGxlWE1MUGFyc2VyKHtoYXNBdHRyaWJ1dGVzOiEwfSkucGFyc2VGcm9tU3RyaW5nKGUpO2Zvcihjb25zdHt4ZmE6ZX1vZiB0KXtpZighZSljb250aW51ZTtjb25zdHtwYXRoOnQsdmFsdWU6YX09ZTtpZighdCljb250aW51ZTtjb25zdCByPXBhcnNlWEZBUGF0aCh0KTtsZXQgcz1pLmRvY3VtZW50RWxlbWVudC5zZWFyY2hOb2RlKHIsMCk7IXMmJnIubGVuZ3RoPjEmJihzPWkuZG9jdW1lbnRFbGVtZW50LnNlYXJjaE5vZGUoW3IuYXQoLTEpXSwwKSk7cz9zLmNoaWxkTm9kZXM9QXJyYXkuaXNBcnJheShhKT9hLm1hcCgoZT0+bmV3IFNpbXBsZURPTU5vZGUoInZhbHVlIixlKSkpOltuZXcgU2ltcGxlRE9NTm9kZSgiI3RleHQiLGEpXTp3YXJuKGBOb2RlIG5vdCBmb3VuZCBmb3IgcGF0aDogJHt0fWApfWNvbnN0IGE9W107aS5kb2N1bWVudEVsZW1lbnQuZHVtcChhKTtyZXR1cm4gYS5qb2luKCIiKX0oYS5mZXRjaElmUmVmKHQpLmdldFN0cmluZygpLGkpfWNvbnN0IHI9YS5lbmNyeXB0O2lmKHIpe2U9ci5jcmVhdGVDaXBoZXJUcmFuc2Zvcm0odC5udW0sdC5nZW4pLmVuY3J5cHRTdHJpbmcoZSl9Y29uc3Qgcz1gJHt0Lm51bX0gJHt0Lmdlbn0gb2JqXG48PCAvVHlwZSAvRW1iZWRkZWRGaWxlIC9MZW5ndGggJHtlLmxlbmd0aH0+Plxuc3RyZWFtXG5gK2UrIlxuZW5kc3RyZWFtXG5lbmRvYmpcbiI7aS5wdXNoKHtyZWY6dCxkYXRhOnN9KX1mdW5jdGlvbiBnZXRJbmRleGVzKGUpe2NvbnN0IHQ9W107Zm9yKGNvbnN0e3JlZjppfW9mIGUpaS5udW09PT10LmF0KC0yKSt0LmF0KC0xKT90W3QubGVuZ3RoLTFdKz0xOnQucHVzaChpLm51bSwxKTtyZXR1cm4gdH1mdW5jdGlvbiBjb21wdXRlSURzKGUsdCxpKXtpZihBcnJheS5pc0FycmF5KHQuZmlsZUlkcykmJnQuZmlsZUlkcy5sZW5ndGg+MCl7Y29uc3QgYT1mdW5jdGlvbiBjb21wdXRlTUQ1KGUsdCl7Y29uc3QgaT1NYXRoLmZsb29yKERhdGUubm93KCkvMWUzKSxhPXQuZmlsZW5hbWV8fCIiLHI9W2kudG9TdHJpbmcoKSxhLGUudG9TdHJpbmcoKV07bGV0IHM9ci5yZWR1Y2UoKChlLHQpPT5lK3QubGVuZ3RoKSwwKTtmb3IoY29uc3QgZSBvZiBPYmplY3QudmFsdWVzKHQuaW5mbykpe3IucHVzaChlKTtzKz1lLmxlbmd0aH1jb25zdCBuPW5ldyBVaW50OEFycmF5KHMpO2xldCBvPTA7Zm9yKGNvbnN0IGUgb2Ygcil7d3JpdGVTdHJpbmcoZSxvLG4pO28rPWUubGVuZ3RofXJldHVybiBieXRlc1RvU3RyaW5nKE9yKG4pKX0oZSx0KTtpLnNldCgiSUQiLFt0LmZpbGVJZHNbMF0sYV0pfX1hc3luYyBmdW5jdGlvbiBpbmNyZW1lbnRhbFVwZGF0ZSh7b3JpZ2luYWxEYXRhOmUseHJlZkluZm86dCxuZXdSZWZzOmkseHJlZjphPW51bGwsaGFzWGZhOnI9ITEseGZhRGF0YXNldHNSZWY6cz1udWxsLGhhc1hmYURhdGFzZXRzRW50cnk6bj0hMSxuZWVkQXBwZWFyYW5jZXM6byxhY3JvRm9ybVJlZjpnPW51bGwsYWNyb0Zvcm06Yz1udWxsLHhmYURhdGE6Qz1udWxsLHVzZVhyZWZTdHJlYW06aD0hMX0pe2F3YWl0IGFzeW5jIGZ1bmN0aW9uIHVwZGF0ZUFjcm9mb3JtKHt4cmVmOmUsYWNyb0Zvcm06dCxhY3JvRm9ybVJlZjppLGhhc1hmYTphLGhhc1hmYURhdGFzZXRzRW50cnk6cix4ZmFEYXRhc2V0c1JlZjpzLG5lZWRBcHBlYXJhbmNlczpuLG5ld1JlZnM6b30peyFhfHxyfHxzfHx3YXJuKCJYRkEgLSBDYW5ub3Qgc2F2ZSBpdCIpO2lmKCFuJiYoIWF8fCFzfHxyKSlyZXR1cm47Y29uc3QgZz10LmNsb25lKCk7aWYoYSYmIXIpe2NvbnN0IGU9dC5nZXQoIlhGQSIpLnNsaWNlKCk7ZS5zcGxpY2UoMiwwLCJkYXRhc2V0cyIpO2Uuc3BsaWNlKDMsMCxzKTtnLnNldCgiWEZBIixlKX1uJiZnLnNldCgiTmVlZEFwcGVhcmFuY2VzIiwhMCk7Y29uc3QgYz1bXTthd2FpdCB3cml0ZU9iamVjdChpLGcsYyxlKTtvLnB1c2goe3JlZjppLGRhdGE6Yy5qb2luKCIiKX0pfSh7eHJlZjphLGFjcm9Gb3JtOmMsYWNyb0Zvcm1SZWY6ZyxoYXNYZmE6cixoYXNYZmFEYXRhc2V0c0VudHJ5Om4seGZhRGF0YXNldHNSZWY6cyxuZWVkQXBwZWFyYW5jZXM6byxuZXdSZWZzOml9KTtyJiZ1cGRhdGVYRkEoe3hmYURhdGE6Qyx4ZmFEYXRhc2V0c1JlZjpzLG5ld1JlZnM6aSx4cmVmOmF9KTtjb25zdCBsPVtdO2xldCBRPWUubGVuZ3RoO2NvbnN0IEU9ZS5hdCgtMSk7aWYoMTAhPT1FJiYxMyE9PUUpe2wucHVzaCgiXG4iKTtRKz0xfWNvbnN0IHU9ZnVuY3Rpb24gZ2V0VHJhaWxlckRpY3QoZSx0LGkpe2NvbnN0IGE9bmV3IERpY3QobnVsbCk7YS5zZXQoIlByZXYiLGUuc3RhcnRYUmVmKTtjb25zdCByPWUubmV3UmVmO2lmKGkpe3QucHVzaCh7cmVmOnIsZGF0YToiIn0pO2Euc2V0KCJTaXplIixyLm51bSsxKTthLnNldCgiVHlwZSIsTmFtZS5nZXQoIlhSZWYiKSl9ZWxzZSBhLnNldCgiU2l6ZSIsci5udW0pO251bGwhPT1lLnJvb3RSZWYmJmEuc2V0KCJSb290IixlLnJvb3RSZWYpO251bGwhPT1lLmluZm9SZWYmJmEuc2V0KCJJbmZvIixlLmluZm9SZWYpO251bGwhPT1lLmVuY3J5cHRSZWYmJmEuc2V0KCJFbmNyeXB0IixlLmVuY3J5cHRSZWYpO3JldHVybiBhfSh0LGksaCk7aT1pLnNvcnQoKChlLHQpPT5lLnJlZi5udW0tdC5yZWYubnVtKSk7Zm9yKGNvbnN0e2RhdGE6ZX1vZiBpKW51bGwhPT1lJiZsLnB1c2goZSk7YXdhaXQoaD9hc3luYyBmdW5jdGlvbiBnZXRYUmVmU3RyZWFtVGFibGUoZSx0LGksYSxyKXtjb25zdCBzPVtdO2xldCBuPTAsbz0wO2Zvcihjb25zdHtyZWY6ZSxkYXRhOmF9b2YgaSl7bGV0IGk7bj1NYXRoLm1heChuLHQpO2lmKG51bGwhPT1hKXtpPU1hdGgubWluKGUuZ2VuLDY1NTM1KTtzLnB1c2goWzEsdCxpXSk7dCs9YS5sZW5ndGh9ZWxzZXtpPU1hdGgubWluKGUuZ2VuKzEsNjU1MzUpO3MucHVzaChbMCwwLGldKX1vPU1hdGgubWF4KG8saSl9YS5zZXQoIkluZGV4IixnZXRJbmRleGVzKGkpKTtjb25zdCBnPVsxLGdldFNpemVJbkJ5dGVzKG4pLGdldFNpemVJbkJ5dGVzKG8pXTthLnNldCgiVyIsZyk7Y29tcHV0ZUlEcyh0LGUsYSk7Y29uc3QgYz1nLnJlZHVjZSgoKGUsdCk9PmUrdCksMCksQz1uZXcgVWludDhBcnJheShjKnMubGVuZ3RoKSxoPW5ldyBTdHJlYW0oQyk7aC5kaWN0PWE7bGV0IGw9MDtmb3IoY29uc3RbZSx0LGldb2Ygcyl7bD13cml0ZUludChlLGdbMF0sbCxDKTtsPXdyaXRlSW50KHQsZ1sxXSxsLEMpO2w9d3JpdGVJbnQoaSxnWzJdLGwsQyl9YXdhaXQgd3JpdGVPYmplY3QoZS5uZXdSZWYsaCxyLHt9KTtyLnB1c2goInN0YXJ0eHJlZlxuIix0LnRvU3RyaW5nKCksIlxuJSVFT0ZcbiIpfSh0LFEsaSx1LGwpOmFzeW5jIGZ1bmN0aW9uIGdldFhSZWZUYWJsZShlLHQsaSxhLHIpe3IucHVzaCgieHJlZlxuIik7Y29uc3Qgcz1nZXRJbmRleGVzKGkpO2xldCBuPTA7Zm9yKGNvbnN0e3JlZjplLGRhdGE6YX1vZiBpKXtpZihlLm51bT09PXNbbl0pe3IucHVzaChgJHtzW25dfSAke3NbbisxXX1cbmApO24rPTJ9aWYobnVsbCE9PWEpe3IucHVzaChgJHt0LnRvU3RyaW5nKCkucGFkU3RhcnQoMTAsIjAiKX0gJHtNYXRoLm1pbihlLmdlbiw2NTUzNSkudG9TdHJpbmcoKS5wYWRTdGFydCg1LCIwIil9IG5cclxuYCk7dCs9YS5sZW5ndGh9ZWxzZSByLnB1c2goYDAwMDAwMDAwMDAgJHtNYXRoLm1pbihlLmdlbisxLDY1NTM1KS50b1N0cmluZygpLnBhZFN0YXJ0KDUsIjAiKX0gZlxyXG5gKX1jb21wdXRlSURzKHQsZSxhKTtyLnB1c2goInRyYWlsZXJcbiIpO2F3YWl0IHdyaXRlRGljdChhLHIpO3IucHVzaCgiXG5zdGFydHhyZWZcbiIsdC50b1N0cmluZygpLCJcbiUlRU9GXG4iKX0odCxRLGksdSxsKSk7Y29uc3QgZD1sLnJlZHVjZSgoKGUsdCk9PmUrdC5sZW5ndGgpLGUubGVuZ3RoKSxmPW5ldyBVaW50OEFycmF5KGQpO2Yuc2V0KGUpO2xldCBwPWUubGVuZ3RoO2Zvcihjb25zdCBlIG9mIGwpe3dyaXRlU3RyaW5nKGUscCxmKTtwKz1lLmxlbmd0aH1yZXR1cm4gZn1jb25zdCBqcj0xLFhyPTIsWnI9MyxWcj00LF9yPTU7Y2xhc3MgU3RydWN0VHJlZVJvb3R7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmRpY3Q9ZTt0aGlzLnJlZj10IGluc3RhbmNlb2YgUmVmP3Q6bnVsbDt0aGlzLnJvbGVNYXA9bmV3IE1hcDt0aGlzLnN0cnVjdFBhcmVudElkcz1udWxsfWluaXQoKXt0aGlzLnJlYWRSb2xlTWFwKCl9I00oZSx0LGkpe2lmKCEoZSBpbnN0YW5jZW9mIFJlZil8fHQ8MClyZXR1cm47dGhpcy5zdHJ1Y3RQYXJlbnRJZHN8fD1uZXcgUmVmU2V0Q2FjaGU7bGV0IGE9dGhpcy5zdHJ1Y3RQYXJlbnRJZHMuZ2V0KGUpO2lmKCFhKXthPVtdO3RoaXMuc3RydWN0UGFyZW50SWRzLnB1dChlLGEpfWEucHVzaChbdCxpXSl9YWRkQW5ub3RhdGlvbklkVG9QYWdlKGUsdCl7dGhpcy4jTShlLHQsVnIpfXJlYWRSb2xlTWFwKCl7Y29uc3QgZT10aGlzLmRpY3QuZ2V0KCJSb2xlTWFwIik7ZSBpbnN0YW5jZW9mIERpY3QmJmUuZm9yRWFjaCgoKGUsdCk9Pnt0IGluc3RhbmNlb2YgTmFtZSYmdGhpcy5yb2xlTWFwLnNldChlLHQubmFtZSl9KSl9c3RhdGljIGFzeW5jIGNhbkNyZWF0ZVN0cnVjdHVyZVRyZWUoe2NhdGFsb2dSZWY6ZSxwZGZNYW5hZ2VyOnQsbmV3QW5ub3RhdGlvbnNCeVBhZ2U6aX0pe2lmKCEoZSBpbnN0YW5jZW9mIFJlZikpe3dhcm4oIkNhbm5vdCBzYXZlIHRoZSBzdHJ1Y3QgdHJlZTogbm8gY2F0YWxvZyByZWZlcmVuY2UuIik7cmV0dXJuITF9bGV0IGE9MCxyPSEwO2Zvcihjb25zdFtlLHNdb2YgaSl7Y29uc3R7cmVmOml9PWF3YWl0IHQuZ2V0UGFnZShlKTtpZighKGkgaW5zdGFuY2VvZiBSZWYpKXt3YXJuKGBDYW5ub3Qgc2F2ZSB0aGUgc3RydWN0IHRyZWU6IHBhZ2UgJHtlfSBoYXMgbm8gcmVmLmApO3I9ITA7YnJlYWt9Zm9yKGNvbnN0IGUgb2YgcylpZihlLmFjY2Vzc2liaWxpdHlEYXRhPy50eXBlKXtlLnBhcmVudFRyZWVJZD1hKys7cj0hMX19aWYocil7Zm9yKGNvbnN0IGUgb2YgaS52YWx1ZXMoKSlmb3IoY29uc3QgdCBvZiBlKWRlbGV0ZSB0LnBhcmVudFRyZWVJZDtyZXR1cm4hMX1yZXR1cm4hMH1zdGF0aWMgYXN5bmMgY3JlYXRlU3RydWN0dXJlVHJlZSh7bmV3QW5ub3RhdGlvbnNCeVBhZ2U6ZSx4cmVmOnQsY2F0YWxvZ1JlZjppLHBkZk1hbmFnZXI6YSxuZXdSZWZzOnJ9KXtjb25zdCBzPWEuY2F0YWxvZy5jbG9uZURpY3QoKSxuPW5ldyBSZWZTZXRDYWNoZTtuLnB1dChpLHMpO2NvbnN0IG89dC5nZXROZXdUZW1wb3JhcnlSZWYoKTtzLnNldCgiU3RydWN0VHJlZVJvb3QiLG8pO2NvbnN0IGc9bmV3IERpY3QodCk7Zy5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJTdHJ1Y3RUcmVlUm9vdCIpKTtjb25zdCBjPXQuZ2V0TmV3VGVtcG9yYXJ5UmVmKCk7Zy5zZXQoIlBhcmVudFRyZWUiLGMpO2NvbnN0IEM9W107Zy5zZXQoIksiLEMpO24ucHV0KG8sZyk7Y29uc3QgaD1uZXcgRGljdCh0KSxsPVtdO2guc2V0KCJOdW1zIixsKTtjb25zdCBRPWF3YWl0IHRoaXMuI0woe25ld0Fubm90YXRpb25zQnlQYWdlOmUsc3RydWN0VHJlZVJvb3RSZWY6byxzdHJ1Y3RUcmVlUm9vdDpudWxsLGtpZHM6QyxudW1zOmwseHJlZjp0LHBkZk1hbmFnZXI6YSxuZXdSZWZzOnIsY2FjaGU6bn0pO2cuc2V0KCJQYXJlbnRUcmVlTmV4dEtleSIsUSk7bi5wdXQoYyxoKTtjb25zdCBFPVtdO2Zvcihjb25zdFtlLGldb2Ygbi5pdGVtcygpKXtFLmxlbmd0aD0wO2F3YWl0IHdyaXRlT2JqZWN0KGUsaSxFLHQpO3IucHVzaCh7cmVmOmUsZGF0YTpFLmpvaW4oIiIpfSl9fWFzeW5jIGNhblVwZGF0ZVN0cnVjdFRyZWUoe3BkZk1hbmFnZXI6ZSx4cmVmOnQsbmV3QW5ub3RhdGlvbnNCeVBhZ2U6aX0pe2lmKCF0aGlzLnJlZil7d2FybigiQ2Fubm90IHVwZGF0ZSB0aGUgc3RydWN0IHRyZWU6IG5vIHJvb3QgcmVmZXJlbmNlLiIpO3JldHVybiExfWxldCBhPXRoaXMuZGljdC5nZXQoIlBhcmVudFRyZWVOZXh0S2V5Iik7aWYoIU51bWJlci5pc0ludGVnZXIoYSl8fGE8MCl7d2FybigiQ2Fubm90IHVwZGF0ZSB0aGUgc3RydWN0IHRyZWU6IGludmFsaWQgbmV4dCBrZXkuIik7cmV0dXJuITF9Y29uc3Qgcj10aGlzLmRpY3QuZ2V0KCJQYXJlbnRUcmVlIik7aWYoIShyIGluc3RhbmNlb2YgRGljdCkpe3dhcm4oIkNhbm5vdCB1cGRhdGUgdGhlIHN0cnVjdCB0cmVlOiBQYXJlbnRUcmVlIGlzbid0IGEgZGljdC4iKTtyZXR1cm4hMX1jb25zdCBzPXIuZ2V0KCJOdW1zIik7aWYoIUFycmF5LmlzQXJyYXkocykpe3dhcm4oIkNhbm5vdCB1cGRhdGUgdGhlIHN0cnVjdCB0cmVlOiBudW1zIGlzbid0IGFuIGFycmF5LiIpO3JldHVybiExfWNvbnN0IG49bmV3IE51bWJlclRyZWUocix0KTtmb3IoY29uc3QgdCBvZiBpLmtleXMoKSl7Y29uc3R7cGFnZURpY3Q6aX09YXdhaXQgZS5nZXRQYWdlKHQpO2lmKCFpLmhhcygiU3RydWN0UGFyZW50cyIpKWNvbnRpbnVlO2NvbnN0IGE9aS5nZXQoIlN0cnVjdFBhcmVudHMiKTtpZighTnVtYmVyLmlzSW50ZWdlcihhKXx8IUFycmF5LmlzQXJyYXkobi5nZXQoYSkpKXt3YXJuKGBDYW5ub3Qgc2F2ZSB0aGUgc3RydWN0IHRyZWU6IHBhZ2UgJHt0fSBoYXMgYSB3cm9uZyBpZC5gKTtyZXR1cm4hMX19bGV0IG89ITA7Zm9yKGNvbnN0W3Qscl1vZiBpKXtjb25zdHtwYWdlRGljdDppfT1hd2FpdCBlLmdldFBhZ2UodCk7U3RydWN0VHJlZVJvb3QuI0goe2VsZW1lbnRzOnIseHJlZjp0aGlzLmRpY3QueHJlZixwYWdlRGljdDppLG51bWJlclRyZWU6bn0pO2Zvcihjb25zdCBlIG9mIHIpaWYoZS5hY2Nlc3NpYmlsaXR5RGF0YT8udHlwZSl7ZS5hY2Nlc3NpYmlsaXR5RGF0YS5zdHJ1Y3RQYXJlbnQ+PTB8fChlLnBhcmVudFRyZWVJZD1hKyspO289ITF9fWlmKG8pe2Zvcihjb25zdCBlIG9mIGkudmFsdWVzKCkpZm9yKGNvbnN0IHQgb2YgZSl7ZGVsZXRlIHQucGFyZW50VHJlZUlkO2RlbGV0ZSB0LnN0cnVjdFRyZWVQYXJlbnR9cmV0dXJuITF9cmV0dXJuITB9YXN5bmMgdXBkYXRlU3RydWN0dXJlVHJlZSh7bmV3QW5ub3RhdGlvbnNCeVBhZ2U6ZSxwZGZNYW5hZ2VyOnQsbmV3UmVmczppfSl7Y29uc3QgYT10aGlzLmRpY3QueHJlZixyPXRoaXMuZGljdC5jbG9uZSgpLHM9dGhpcy5yZWYsbj1uZXcgUmVmU2V0Q2FjaGU7bi5wdXQocyxyKTtsZXQgbyxnPXIuZ2V0UmF3KCJQYXJlbnRUcmVlIik7aWYoZyBpbnN0YW5jZW9mIFJlZilvPWEuZmV0Y2goZyk7ZWxzZXtvPWc7Zz1hLmdldE5ld1RlbXBvcmFyeVJlZigpO3Iuc2V0KCJQYXJlbnRUcmVlIixnKX1vPW8uY2xvbmUoKTtuLnB1dChnLG8pO2xldCBjPW8uZ2V0UmF3KCJOdW1zIiksQz1udWxsO2lmKGMgaW5zdGFuY2VvZiBSZWYpe0M9YztjPWEuZmV0Y2goQyl9Yz1jLnNsaWNlKCk7Q3x8by5zZXQoIk51bXMiLGMpO2NvbnN0IGg9YXdhaXQgU3RydWN0VHJlZVJvb3QuI0woe25ld0Fubm90YXRpb25zQnlQYWdlOmUsc3RydWN0VHJlZVJvb3RSZWY6cyxzdHJ1Y3RUcmVlUm9vdDp0aGlzLGtpZHM6bnVsbCxudW1zOmMseHJlZjphLHBkZk1hbmFnZXI6dCxuZXdSZWZzOmksY2FjaGU6bn0pO2lmKC0xPT09aClyZXR1cm47ci5zZXQoIlBhcmVudFRyZWVOZXh0S2V5IixoKTtDJiZuLnB1dChDLGMpO2NvbnN0IGw9W107Zm9yKGNvbnN0W2UsdF1vZiBuLml0ZW1zKCkpe2wubGVuZ3RoPTA7YXdhaXQgd3JpdGVPYmplY3QoZSx0LGwsYSk7aS5wdXNoKHtyZWY6ZSxkYXRhOmwuam9pbigiIil9KX19c3RhdGljIGFzeW5jI0woe25ld0Fubm90YXRpb25zQnlQYWdlOmUsc3RydWN0VHJlZVJvb3RSZWY6dCxzdHJ1Y3RUcmVlUm9vdDppLGtpZHM6YSxudW1zOnIseHJlZjpzLHBkZk1hbmFnZXI6bixuZXdSZWZzOm8sY2FjaGU6Z30pe2NvbnN0IGM9TmFtZS5nZXQoIk9CSlIiKTtsZXQgQyxoPS0xO2NvbnN0IGw9W107Zm9yKGNvbnN0W1EsRV1vZiBlKXtjb25zdCBlPWF3YWl0IG4uZ2V0UGFnZShRKSx7cmVmOnV9PWUsZD11IGluc3RhbmNlb2YgUmVmO2Zvcihjb25zdHthY2Nlc3NpYmlsaXR5RGF0YTpuLHJlZjpmLHBhcmVudFRyZWVJZDpwLHN0cnVjdFRyZWVQYXJlbnQ6bX1vZiBFKXtpZighbj8udHlwZSljb250aW51ZTtjb25zdHtzdHJ1Y3RQYXJlbnQ6RX09bjtpZihpJiZOdW1iZXIuaXNJbnRlZ2VyKEUpJiZFPj0wKXtsZXQgdD0oQ3x8PW5ldyBNYXApLmdldChRKTtpZih2b2lkIDA9PT10KXt0PW5ldyBTdHJ1Y3RUcmVlUGFnZShpLGUucGFnZURpY3QpLmNvbGxlY3RPYmplY3RzKHUpO0Muc2V0KFEsdCl9Y29uc3QgYT10Py5nZXQoRSk7aWYoYSl7Y29uc3QgZT1zLmZldGNoKGEpLmNsb25lKCk7U3RydWN0VHJlZVJvb3QuI0ooZSxuKTtsLmxlbmd0aD0wO2F3YWl0IHdyaXRlT2JqZWN0KGEsZSxsLHMpO28ucHVzaCh7cmVmOmEsZGF0YTpsLmpvaW4oIiIpfSk7Y29udGludWV9fWg9TWF0aC5tYXgoaCxwKTtjb25zdCB5PXMuZ2V0TmV3VGVtcG9yYXJ5UmVmKCksdz1uZXcgRGljdChzKTtTdHJ1Y3RUcmVlUm9vdC4jSih3LG4pO2F3YWl0IHRoaXMuI3Yoe3N0cnVjdFRyZWVQYXJlbnQ6bSx0YWdEaWN0OncsbmV3VGFnUmVmOnksc3RydWN0VHJlZVJvb3RSZWY6dCxmYWxsYmFja0tpZHM6YSx4cmVmOnMsY2FjaGU6Z30pO2NvbnN0IGI9bmV3IERpY3Qocyk7dy5zZXQoIksiLGIpO2Iuc2V0KCJUeXBlIixjKTtkJiZiLnNldCgiUGciLHUpO2Iuc2V0KCJPYmoiLGYpO2cucHV0KHksdyk7ci5wdXNoKHAseSl9fXJldHVybiBoKzF9c3RhdGljI0ooZSx7dHlwZTp0LHRpdGxlOmksbGFuZzphLGFsdDpyLGV4cGFuZGVkOnMsYWN0dWFsVGV4dDpufSl7ZS5zZXQoIlMiLE5hbWUuZ2V0KHQpKTtpJiZlLnNldCgiVCIsc3RyaW5nVG9Bc2NpaU9yVVRGMTZCRShpKSk7YSYmZS5zZXQoIkxhbmciLHN0cmluZ1RvQXNjaWlPclVURjE2QkUoYSkpO3ImJmUuc2V0KCJBbHQiLHN0cmluZ1RvQXNjaWlPclVURjE2QkUocikpO3MmJmUuc2V0KCJFIixzdHJpbmdUb0FzY2lpT3JVVEYxNkJFKHMpKTtuJiZlLnNldCgiQWN0dWFsVGV4dCIsc3RyaW5nVG9Bc2NpaU9yVVRGMTZCRShuKSl9c3RhdGljI0goe2VsZW1lbnRzOmUseHJlZjp0LHBhZ2VEaWN0OmksbnVtYmVyVHJlZTphfSl7Y29uc3Qgcj1uZXcgTWFwO2Zvcihjb25zdCB0IG9mIGUpaWYodC5zdHJ1Y3RUcmVlUGFyZW50SWQpe2NvbnN0IGU9cGFyc2VJbnQodC5zdHJ1Y3RUcmVlUGFyZW50SWQuc3BsaXQoIl9tYyIpWzFdLDEwKTtsZXQgaT1yLmdldChlKTtpZighaSl7aT1bXTtyLnNldChlLGkpfWkucHVzaCh0KX1jb25zdCBzPWkuZ2V0KCJTdHJ1Y3RQYXJlbnRzIik7aWYoIU51bWJlci5pc0ludGVnZXIocykpcmV0dXJuO2NvbnN0IG49YS5nZXQocyksdXBkYXRlRWxlbWVudD0oZSxpLGEpPT57Y29uc3Qgcz1yLmdldChlKTtpZihzKXtjb25zdCBlPWkuZ2V0UmF3KCJQIikscj10LmZldGNoSWZSZWYoZSk7aWYoZSBpbnN0YW5jZW9mIFJlZiYmciBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IGU9e3JlZjphLGRpY3Q6aX07Zm9yKGNvbnN0IHQgb2Ygcyl0LnN0cnVjdFRyZWVQYXJlbnQ9ZX1yZXR1cm4hMH1yZXR1cm4hMX07Zm9yKGNvbnN0IGUgb2Ygbil7aWYoIShlIGluc3RhbmNlb2YgUmVmKSljb250aW51ZTtjb25zdCBpPXQuZmV0Y2goZSksYT1pLmdldCgiSyIpO2lmKE51bWJlci5pc0ludGVnZXIoYSkpdXBkYXRlRWxlbWVudChhLGksZSk7ZWxzZSBpZihBcnJheS5pc0FycmF5KGEpKWZvcihsZXQgciBvZiBhKXtyPXQuZmV0Y2hJZlJlZihyKTtpZihOdW1iZXIuaXNJbnRlZ2VyKHIpJiZ1cGRhdGVFbGVtZW50KHIsaSxlKSlicmVhaztpZighKHIgaW5zdGFuY2VvZiBEaWN0KSljb250aW51ZTtpZighaXNOYW1lKHIuZ2V0KCJUeXBlIiksIk1DUiIpKWJyZWFrO2NvbnN0IGE9ci5nZXQoIk1DSUQiKTtpZihOdW1iZXIuaXNJbnRlZ2VyKGEpJiZ1cGRhdGVFbGVtZW50KGEsaSxlKSlicmVha319fXN0YXRpYyBhc3luYyN2KHtzdHJ1Y3RUcmVlUGFyZW50OmUsdGFnRGljdDp0LG5ld1RhZ1JlZjppLHN0cnVjdFRyZWVSb290UmVmOmEsZmFsbGJhY2tLaWRzOnIseHJlZjpzLGNhY2hlOm59KXtsZXQgbyxnPW51bGw7aWYoZSl7KHtyZWY6Z309ZSk7bz1lLmRpY3QuZ2V0UmF3KCJQIil8fGF9ZWxzZSBvPWE7dC5zZXQoIlAiLG8pO2NvbnN0IGM9cy5mZXRjaElmUmVmKG8pO2lmKCFjKXtyLnB1c2goaSk7cmV0dXJufWxldCBDPW4uZ2V0KG8pO2lmKCFDKXtDPWMuY2xvbmUoKTtuLnB1dChvLEMpfWNvbnN0IGg9Qy5nZXRSYXcoIksiKTtsZXQgbD1oIGluc3RhbmNlb2YgUmVmP24uZ2V0KGgpOm51bGw7aWYoIWwpe2w9cy5mZXRjaElmUmVmKGgpO2w9QXJyYXkuaXNBcnJheShsKT9sLnNsaWNlKCk6W2hdO2NvbnN0IGU9cy5nZXROZXdUZW1wb3JhcnlSZWYoKTtDLnNldCgiSyIsZSk7bi5wdXQoZSxsKX1jb25zdCBRPWwuaW5kZXhPZihnKTtsLnNwbGljZShRPj0wP1ErMTpsLmxlbmd0aCwwLGkpfX1jbGFzcyBTdHJ1Y3RFbGVtZW50Tm9kZXtjb25zdHJ1Y3RvcihlLHQpe3RoaXMudHJlZT1lO3RoaXMuZGljdD10O3RoaXMua2lkcz1bXTt0aGlzLnBhcnNlS2lkcygpfWdldCByb2xlKCl7Y29uc3QgZT10aGlzLmRpY3QuZ2V0KCJTIiksdD1lIGluc3RhbmNlb2YgTmFtZT9lLm5hbWU6IiIse3Jvb3Q6aX09dGhpcy50cmVlO3JldHVybiBpLnJvbGVNYXAuaGFzKHQpP2kucm9sZU1hcC5nZXQodCk6dH1wYXJzZUtpZHMoKXtsZXQgZT1udWxsO2NvbnN0IHQ9dGhpcy5kaWN0LmdldFJhdygiUGciKTt0IGluc3RhbmNlb2YgUmVmJiYoZT10LnRvU3RyaW5nKCkpO2NvbnN0IGk9dGhpcy5kaWN0LmdldCgiSyIpO2lmKEFycmF5LmlzQXJyYXkoaSkpZm9yKGNvbnN0IHQgb2YgaSl7Y29uc3QgaT10aGlzLnBhcnNlS2lkKGUsdCk7aSYmdGhpcy5raWRzLnB1c2goaSl9ZWxzZXtjb25zdCB0PXRoaXMucGFyc2VLaWQoZSxpKTt0JiZ0aGlzLmtpZHMucHVzaCh0KX19cGFyc2VLaWQoZSx0KXtpZihOdW1iZXIuaXNJbnRlZ2VyKHQpKXJldHVybiB0aGlzLnRyZWUucGFnZURpY3Qub2JqSWQhPT1lP251bGw6bmV3IFN0cnVjdEVsZW1lbnQoe3R5cGU6anIsbWNpZDp0LHBhZ2VPYmpJZDplfSk7bGV0IGk9bnVsbDt0IGluc3RhbmNlb2YgUmVmP2k9dGhpcy5kaWN0LnhyZWYuZmV0Y2godCk6dCBpbnN0YW5jZW9mIERpY3QmJihpPXQpO2lmKCFpKXJldHVybiBudWxsO2NvbnN0IGE9aS5nZXRSYXcoIlBnIik7YSBpbnN0YW5jZW9mIFJlZiYmKGU9YS50b1N0cmluZygpKTtjb25zdCByPWkuZ2V0KCJUeXBlIilpbnN0YW5jZW9mIE5hbWU/aS5nZXQoIlR5cGUiKS5uYW1lOm51bGw7aWYoIk1DUiI9PT1yKXtpZih0aGlzLnRyZWUucGFnZURpY3Qub2JqSWQhPT1lKXJldHVybiBudWxsO2NvbnN0IHQ9aS5nZXRSYXcoIlN0bSIpO3JldHVybiBuZXcgU3RydWN0RWxlbWVudCh7dHlwZTpYcixyZWZPYmpJZDp0IGluc3RhbmNlb2YgUmVmP3QudG9TdHJpbmcoKTpudWxsLHBhZ2VPYmpJZDplLG1jaWQ6aS5nZXQoIk1DSUQiKX0pfWlmKCJPQkpSIj09PXIpe2lmKHRoaXMudHJlZS5wYWdlRGljdC5vYmpJZCE9PWUpcmV0dXJuIG51bGw7Y29uc3QgdD1pLmdldFJhdygiT2JqIik7cmV0dXJuIG5ldyBTdHJ1Y3RFbGVtZW50KHt0eXBlOlpyLHJlZk9iaklkOnQgaW5zdGFuY2VvZiBSZWY/dC50b1N0cmluZygpOm51bGwscGFnZU9iaklkOmV9KX1yZXR1cm4gbmV3IFN0cnVjdEVsZW1lbnQoe3R5cGU6X3IsZGljdDppfSl9fWNsYXNzIFN0cnVjdEVsZW1lbnR7Y29uc3RydWN0b3Ioe3R5cGU6ZSxkaWN0OnQ9bnVsbCxtY2lkOmk9bnVsbCxwYWdlT2JqSWQ6YT1udWxsLHJlZk9iaklkOnI9bnVsbH0pe3RoaXMudHlwZT1lO3RoaXMuZGljdD10O3RoaXMubWNpZD1pO3RoaXMucGFnZU9iaklkPWE7dGhpcy5yZWZPYmpJZD1yO3RoaXMucGFyZW50Tm9kZT1udWxsfX1jbGFzcyBTdHJ1Y3RUcmVlUGFnZXtjb25zdHJ1Y3RvcihlLHQpe3RoaXMucm9vdD1lO3RoaXMucm9vdERpY3Q9ZT9lLmRpY3Q6bnVsbDt0aGlzLnBhZ2VEaWN0PXQ7dGhpcy5ub2Rlcz1bXX1jb2xsZWN0T2JqZWN0cyhlKXtpZighKHRoaXMucm9vdCYmdGhpcy5yb290RGljdCYmZSBpbnN0YW5jZW9mIFJlZikpcmV0dXJuIG51bGw7Y29uc3QgdD10aGlzLnJvb3REaWN0LmdldCgiUGFyZW50VHJlZSIpO2lmKCF0KXJldHVybiBudWxsO2NvbnN0IGk9dGhpcy5yb290LnN0cnVjdFBhcmVudElkcz8uZ2V0KGUpO2lmKCFpKXJldHVybiBudWxsO2NvbnN0IGE9bmV3IE1hcCxyPW5ldyBOdW1iZXJUcmVlKHQsdGhpcy5yb290RGljdC54cmVmKTtmb3IoY29uc3RbZV1vZiBpKXtjb25zdCB0PXIuZ2V0UmF3KGUpO3QgaW5zdGFuY2VvZiBSZWYmJmEuc2V0KGUsdCl9cmV0dXJuIGF9cGFyc2UoZSl7aWYoISh0aGlzLnJvb3QmJnRoaXMucm9vdERpY3QmJmUgaW5zdGFuY2VvZiBSZWYpKXJldHVybjtjb25zdCB0PXRoaXMucm9vdERpY3QuZ2V0KCJQYXJlbnRUcmVlIik7aWYoIXQpcmV0dXJuO2NvbnN0IGk9dGhpcy5wYWdlRGljdC5nZXQoIlN0cnVjdFBhcmVudHMiKSxhPXRoaXMucm9vdC5zdHJ1Y3RQYXJlbnRJZHM/LmdldChlKTtpZighTnVtYmVyLmlzSW50ZWdlcihpKSYmIWEpcmV0dXJuO2NvbnN0IHI9bmV3IE1hcCxzPW5ldyBOdW1iZXJUcmVlKHQsdGhpcy5yb290RGljdC54cmVmKTtpZihOdW1iZXIuaXNJbnRlZ2VyKGkpKXtjb25zdCBlPXMuZ2V0KGkpO2lmKEFycmF5LmlzQXJyYXkoZSkpZm9yKGNvbnN0IHQgb2YgZSl0IGluc3RhbmNlb2YgUmVmJiZ0aGlzLmFkZE5vZGUodGhpcy5yb290RGljdC54cmVmLmZldGNoKHQpLHIpfWlmKGEpZm9yKGNvbnN0W2UsdF1vZiBhKXtjb25zdCBpPXMuZ2V0KGUpO2lmKGkpe2NvbnN0IGU9dGhpcy5hZGROb2RlKHRoaXMucm9vdERpY3QueHJlZi5mZXRjaElmUmVmKGkpLHIpOzE9PT1lPy5raWRzPy5sZW5ndGgmJmUua2lkc1swXS50eXBlPT09WnImJihlLmtpZHNbMF0udHlwZT10KX19fWFkZE5vZGUoZSx0LGk9MCl7aWYoaT40MCl7d2FybigiU3RydWN0VHJlZSBNQVhfREVQVEggcmVhY2hlZC4iKTtyZXR1cm4gbnVsbH1pZighKGUgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm4gbnVsbDtpZih0LmhhcyhlKSlyZXR1cm4gdC5nZXQoZSk7Y29uc3QgYT1uZXcgU3RydWN0RWxlbWVudE5vZGUodGhpcyxlKTt0LnNldChlLGEpO2NvbnN0IHI9ZS5nZXQoIlAiKTtpZighcnx8aXNOYW1lKHIuZ2V0KCJUeXBlIiksIlN0cnVjdFRyZWVSb290Iikpe3RoaXMuYWRkVG9wTGV2ZWxOb2RlKGUsYSl8fHQuZGVsZXRlKGUpO3JldHVybiBhfWNvbnN0IHM9dGhpcy5hZGROb2RlKHIsdCxpKzEpO2lmKCFzKXJldHVybiBhO2xldCBuPSExO2Zvcihjb25zdCB0IG9mIHMua2lkcylpZih0LnR5cGU9PT1fciYmdC5kaWN0PT09ZSl7dC5wYXJlbnROb2RlPWE7bj0hMH1ufHx0LmRlbGV0ZShlKTtyZXR1cm4gYX1hZGRUb3BMZXZlbE5vZGUoZSx0KXtjb25zdCBpPXRoaXMucm9vdERpY3QuZ2V0KCJLIik7aWYoIWkpcmV0dXJuITE7aWYoaSBpbnN0YW5jZW9mIERpY3Qpe2lmKGkub2JqSWQhPT1lLm9iaklkKXJldHVybiExO3RoaXMubm9kZXNbMF09dDtyZXR1cm4hMH1pZighQXJyYXkuaXNBcnJheShpKSlyZXR1cm4hMDtsZXQgYT0hMTtmb3IobGV0IHI9MDtyPGkubGVuZ3RoO3IrKyl7Y29uc3Qgcz1pW3JdO2lmKHM/LnRvU3RyaW5nKCk9PT1lLm9iaklkKXt0aGlzLm5vZGVzW3JdPXQ7YT0hMH19cmV0dXJuIGF9Z2V0IHNlcmlhbGl6YWJsZSgpe2Z1bmN0aW9uIG5vZGVUb1NlcmlhbGl6YWJsZShlLHQsaT0wKXtpZihpPjQwKXt3YXJuKCJTdHJ1Y3RUcmVlIHRvbyBkZWVwIHRvIGJlIGZ1bGx5IHNlcmlhbGl6ZWQuIik7cmV0dXJufWNvbnN0IGE9T2JqZWN0LmNyZWF0ZShudWxsKTthLnJvbGU9ZS5yb2xlO2EuY2hpbGRyZW49W107dC5jaGlsZHJlbi5wdXNoKGEpO2xldCByPWUuZGljdC5nZXQoIkFsdCIpOyJzdHJpbmciIT10eXBlb2YgciYmKHI9ZS5kaWN0LmdldCgiQWN0dWFsVGV4dCIpKTsic3RyaW5nIj09dHlwZW9mIHImJihhLmFsdD1zdHJpbmdUb1BERlN0cmluZyhyKSk7Y29uc3Qgcz1lLmRpY3QuZ2V0KCJBIik7aWYocyBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IGU9bG9va3VwTm9ybWFsUmVjdChzLmdldEFycmF5KCJCQm94IiksbnVsbCk7aWYoZSlhLmJib3g9ZTtlbHNle2NvbnN0IGU9cy5nZXQoIldpZHRoIiksdD1zLmdldCgiSGVpZ2h0Iik7Im51bWJlciI9PXR5cGVvZiBlJiZlPjAmJiJudW1iZXIiPT10eXBlb2YgdCYmdD4wJiYoYS5iYm94PVswLDAsZSx0XSl9fWNvbnN0IG49ZS5kaWN0LmdldCgiTGFuZyIpOyJzdHJpbmciPT10eXBlb2YgbiYmKGEubGFuZz1zdHJpbmdUb1BERlN0cmluZyhuKSk7Zm9yKGNvbnN0IHQgb2YgZS5raWRzKXtjb25zdCBlPXQudHlwZT09PV9yP3QucGFyZW50Tm9kZTpudWxsO2U/bm9kZVRvU2VyaWFsaXphYmxlKGUsYSxpKzEpOnQudHlwZT09PWpyfHx0LnR5cGU9PT1Ycj9hLmNoaWxkcmVuLnB1c2goe3R5cGU6ImNvbnRlbnQiLGlkOmBwJHt0LnBhZ2VPYmpJZH1fbWMke3QubWNpZH1gfSk6dC50eXBlPT09WnI/YS5jaGlsZHJlbi5wdXNoKHt0eXBlOiJvYmplY3QiLGlkOnQucmVmT2JqSWR9KTp0LnR5cGU9PT1WciYmYS5jaGlsZHJlbi5wdXNoKHt0eXBlOiJhbm5vdGF0aW9uIixpZDpgcGRmanNfaW50ZXJuYWxfaWRfJHt0LnJlZk9iaklkfWB9KX19Y29uc3QgZT1PYmplY3QuY3JlYXRlKG51bGwpO2UuY2hpbGRyZW49W107ZS5yb2xlPSJSb290Ijtmb3IoY29uc3QgdCBvZiB0aGlzLm5vZGVzKXQmJm5vZGVUb1NlcmlhbGl6YWJsZSh0LGUpO3JldHVybiBlfX1mdW5jdGlvbiBpc1ZhbGlkRXhwbGljaXREZXN0KGUpe2lmKCFBcnJheS5pc0FycmF5KGUpfHxlLmxlbmd0aDwyKXJldHVybiExO2NvbnN0W3QsaSwuLi5hXT1lO2lmKCEodCBpbnN0YW5jZW9mIFJlZnx8TnVtYmVyLmlzSW50ZWdlcih0KSkpcmV0dXJuITE7aWYoIShpIGluc3RhbmNlb2YgTmFtZSkpcmV0dXJuITE7Y29uc3Qgcj1hLmxlbmd0aDtsZXQgcz0hMDtzd2l0Y2goaS5uYW1lKXtjYXNlIlhZWiI6aWYocjwyfHxyPjMpcmV0dXJuITE7YnJlYWs7Y2FzZSJGaXQiOmNhc2UiRml0QiI6cmV0dXJuIDA9PT1yO2Nhc2UiRml0SCI6Y2FzZSJGaXRCSCI6Y2FzZSJGaXRWIjpjYXNlIkZpdEJWIjppZihyPjEpcmV0dXJuITE7YnJlYWs7Y2FzZSJGaXRSIjppZig0IT09cilyZXR1cm4hMTtzPSExO2JyZWFrO2RlZmF1bHQ6cmV0dXJuITF9Zm9yKGNvbnN0IGUgb2YgYSlpZighKCJudW1iZXIiPT10eXBlb2YgZXx8cyYmbnVsbD09PWUpKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIGZldGNoRGVzdChlKXtlIGluc3RhbmNlb2YgRGljdCYmKGU9ZS5nZXQoIkQiKSk7cmV0dXJuIGlzVmFsaWRFeHBsaWNpdERlc3QoZSk/ZTpudWxsfWZ1bmN0aW9uIGZldGNoUmVtb3RlRGVzdChlKXtsZXQgdD1lLmdldCgiRCIpO2lmKHQpe3QgaW5zdGFuY2VvZiBOYW1lJiYodD10Lm5hbWUpO2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gc3RyaW5nVG9QREZTdHJpbmcodCk7aWYoaXNWYWxpZEV4cGxpY2l0RGVzdCh0KSlyZXR1cm4gSlNPTi5zdHJpbmdpZnkodCl9cmV0dXJuIG51bGx9Y2xhc3MgQ2F0YWxvZ3tjb25zdHJ1Y3RvcihlLHQpe3RoaXMucGRmTWFuYWdlcj1lO3RoaXMueHJlZj10O3RoaXMuX2NhdERpY3Q9dC5nZXRDYXRhbG9nT2JqKCk7aWYoISh0aGlzLl9jYXREaWN0IGluc3RhbmNlb2YgRGljdCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJDYXRhbG9nIG9iamVjdCBpcyBub3QgYSBkaWN0aW9uYXJ5LiIpO3RoaXMudG9wbGV2ZWxQYWdlc0RpY3Q7dGhpcy5fYWN0dWFsTnVtUGFnZXM9bnVsbDt0aGlzLmZvbnRDYWNoZT1uZXcgUmVmU2V0Q2FjaGU7dGhpcy5idWlsdEluQ01hcENhY2hlPW5ldyBNYXA7dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGU9bmV3IE1hcDt0aGlzLmdsb2JhbEltYWdlQ2FjaGU9bmV3IEdsb2JhbEltYWdlQ2FjaGU7dGhpcy5wYWdlS2lkc0NvdW50Q2FjaGU9bmV3IFJlZlNldENhY2hlO3RoaXMucGFnZUluZGV4Q2FjaGU9bmV3IFJlZlNldENhY2hlO3RoaXMucGFnZURpY3RDYWNoZT1uZXcgUmVmU2V0Q2FjaGU7dGhpcy5ub25CbGVuZE1vZGVzU2V0PW5ldyBSZWZTZXQ7dGhpcy5zeXN0ZW1Gb250Q2FjaGU9bmV3IE1hcH1jbG9uZURpY3QoKXtyZXR1cm4gdGhpcy5fY2F0RGljdC5jbG9uZSgpfWdldCB2ZXJzaW9uKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiVmVyc2lvbiIpO2lmKGUgaW5zdGFuY2VvZiBOYW1lKXtpZihOdC50ZXN0KGUubmFtZSkpcmV0dXJuIHNoYWRvdyh0aGlzLCJ2ZXJzaW9uIixlLm5hbWUpO3dhcm4oYEludmFsaWQgUERGIGNhdGFsb2cgdmVyc2lvbjogJHtlLm5hbWV9YCl9cmV0dXJuIHNoYWRvdyh0aGlzLCJ2ZXJzaW9uIixudWxsKX1nZXQgbGFuZygpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXQoIkxhbmciKTtyZXR1cm4gc2hhZG93KHRoaXMsImxhbmciLGUmJiJzdHJpbmciPT10eXBlb2YgZT9zdHJpbmdUb1BERlN0cmluZyhlKTpudWxsKX1nZXQgbmVlZHNSZW5kZXJpbmcoKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJOZWVkc1JlbmRlcmluZyIpO3JldHVybiBzaGFkb3codGhpcywibmVlZHNSZW5kZXJpbmciLCJib29sZWFuIj09dHlwZW9mIGUmJmUpfWdldCBjb2xsZWN0aW9uKCl7bGV0IGU9bnVsbDt0cnl7Y29uc3QgdD10aGlzLl9jYXREaWN0LmdldCgiQ29sbGVjdGlvbiIpO3QgaW5zdGFuY2VvZiBEaWN0JiZ0LnNpemU+MCYmKGU9dCl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7aW5mbygiQ2Fubm90IGZldGNoIENvbGxlY3Rpb24gZW50cnk7IGFzc3VtaW5nIG5vIGNvbGxlY3Rpb24gaXMgcHJlc2VudC4iKX1yZXR1cm4gc2hhZG93KHRoaXMsImNvbGxlY3Rpb24iLGUpfWdldCBhY3JvRm9ybSgpe2xldCBlPW51bGw7dHJ5e2NvbnN0IHQ9dGhpcy5fY2F0RGljdC5nZXQoIkFjcm9Gb3JtIik7dCBpbnN0YW5jZW9mIERpY3QmJnQuc2l6ZT4wJiYoZT10KX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTtpbmZvKCJDYW5ub3QgZmV0Y2ggQWNyb0Zvcm0gZW50cnk7IGFzc3VtaW5nIG5vIGZvcm1zIGFyZSBwcmVzZW50LiIpfXJldHVybiBzaGFkb3codGhpcywiYWNyb0Zvcm0iLGUpfWdldCBhY3JvRm9ybVJlZigpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXRSYXcoIkFjcm9Gb3JtIik7cmV0dXJuIHNoYWRvdyh0aGlzLCJhY3JvRm9ybVJlZiIsZSBpbnN0YW5jZW9mIFJlZj9lOm51bGwpfWdldCBtZXRhZGF0YSgpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXRSYXcoIk1ldGFkYXRhIik7aWYoIShlIGluc3RhbmNlb2YgUmVmKSlyZXR1cm4gc2hhZG93KHRoaXMsIm1ldGFkYXRhIixudWxsKTtsZXQgdD1udWxsO3RyeXtjb25zdCBpPXRoaXMueHJlZi5mZXRjaChlLCF0aGlzLnhyZWYuZW5jcnlwdD8uZW5jcnlwdE1ldGFkYXRhKTtpZihpIGluc3RhbmNlb2YgQmFzZVN0cmVhbSYmaS5kaWN0IGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT1pLmRpY3QuZ2V0KCJUeXBlIiksYT1pLmRpY3QuZ2V0KCJTdWJ0eXBlIik7aWYoaXNOYW1lKGUsIk1ldGFkYXRhIikmJmlzTmFtZShhLCJYTUwiKSl7Y29uc3QgZT1zdHJpbmdUb1VURjhTdHJpbmcoaS5nZXRTdHJpbmcoKSk7ZSYmKHQ9bmV3IE1ldGFkYXRhUGFyc2VyKGUpLnNlcmlhbGl6YWJsZSl9fX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTtpbmZvKGBTa2lwcGluZyBpbnZhbGlkIE1ldGFkYXRhOiAiJHtlfSIuYCl9cmV0dXJuIHNoYWRvdyh0aGlzLCJtZXRhZGF0YSIsdCl9Z2V0IG1hcmtJbmZvKCl7bGV0IGU9bnVsbDt0cnl7ZT10aGlzLl9yZWFkTWFya0luZm8oKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTt3YXJuKCJVbmFibGUgdG8gcmVhZCBtYXJrIGluZm8uIil9cmV0dXJuIHNoYWRvdyh0aGlzLCJtYXJrSW5mbyIsZSl9X3JlYWRNYXJrSW5mbygpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXQoIk1hcmtJbmZvIik7aWYoIShlIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuIG51bGw7Y29uc3QgdD17TWFya2VkOiExLFVzZXJQcm9wZXJ0aWVzOiExLFN1c3BlY3RzOiExfTtmb3IoY29uc3QgaSBpbiB0KXtjb25zdCBhPWUuZ2V0KGkpOyJib29sZWFuIj09dHlwZW9mIGEmJih0W2ldPWEpfXJldHVybiB0fWdldCBzdHJ1Y3RUcmVlUm9vdCgpe2xldCBlPW51bGw7dHJ5e2U9dGhpcy5fcmVhZFN0cnVjdFRyZWVSb290KCl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7d2FybigiVW5hYmxlIHJlYWQgdG8gc3RydWN0VHJlZVJvb3QgaW5mby4iKX1yZXR1cm4gc2hhZG93KHRoaXMsInN0cnVjdFRyZWVSb290IixlKX1fcmVhZFN0cnVjdFRyZWVSb290KCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldFJhdygiU3RydWN0VHJlZVJvb3QiKSx0PXRoaXMueHJlZi5mZXRjaElmUmVmKGUpO2lmKCEodCBpbnN0YW5jZW9mIERpY3QpKXJldHVybiBudWxsO2NvbnN0IGk9bmV3IFN0cnVjdFRyZWVSb290KHQsZSk7aS5pbml0KCk7cmV0dXJuIGl9Z2V0IHRvcGxldmVsUGFnZXNEaWN0KCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiUGFnZXMiKTtpZighKGUgaW5zdGFuY2VvZiBEaWN0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgdG9wLWxldmVsIHBhZ2VzIGRpY3Rpb25hcnkuIik7cmV0dXJuIHNoYWRvdyh0aGlzLCJ0b3BsZXZlbFBhZ2VzRGljdCIsZSl9Z2V0IGRvY3VtZW50T3V0bGluZSgpe2xldCBlPW51bGw7dHJ5e2U9dGhpcy5fcmVhZERvY3VtZW50T3V0bGluZSgpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3dhcm4oIlVuYWJsZSB0byByZWFkIGRvY3VtZW50IG91dGxpbmUuIil9cmV0dXJuIHNoYWRvdyh0aGlzLCJkb2N1bWVudE91dGxpbmUiLGUpfV9yZWFkRG9jdW1lbnRPdXRsaW5lKCl7bGV0IGU9dGhpcy5fY2F0RGljdC5nZXQoIk91dGxpbmVzIik7aWYoIShlIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuIG51bGw7ZT1lLmdldFJhdygiRmlyc3QiKTtpZighKGUgaW5zdGFuY2VvZiBSZWYpKXJldHVybiBudWxsO2NvbnN0IHQ9e2l0ZW1zOltdfSxpPVt7b2JqOmUscGFyZW50OnR9XSxhPW5ldyBSZWZTZXQ7YS5wdXQoZSk7Y29uc3Qgcj10aGlzLnhyZWYscz1uZXcgVWludDhDbGFtcGVkQXJyYXkoMyk7Zm9yKDtpLmxlbmd0aD4wOyl7Y29uc3QgdD1pLnNoaWZ0KCksbj1yLmZldGNoSWZSZWYodC5vYmopO2lmKG51bGw9PT1uKWNvbnRpbnVlO24uaGFzKCJUaXRsZSIpfHx3YXJuKCJJbnZhbGlkIG91dGxpbmUgaXRlbSBlbmNvdW50ZXJlZC4iKTtjb25zdCBvPXt1cmw6bnVsbCxkZXN0Om51bGwsYWN0aW9uOm51bGx9O0NhdGFsb2cucGFyc2VEZXN0RGljdGlvbmFyeSh7ZGVzdERpY3Q6bixyZXN1bHRPYmo6byxkb2NCYXNlVXJsOnRoaXMuYmFzZVVybCxkb2NBdHRhY2htZW50czp0aGlzLmF0dGFjaG1lbnRzfSk7Y29uc3QgZz1uLmdldCgiVGl0bGUiKSxjPW4uZ2V0KCJGIil8fDAsQz1uLmdldEFycmF5KCJDIiksaD1uLmdldCgiQ291bnQiKTtsZXQgbD1zOyFpc051bWJlckFycmF5KEMsMyl8fDA9PT1DWzBdJiYwPT09Q1sxXSYmMD09PUNbMl18fChsPUNvbG9yU3BhY2Uuc2luZ2xldG9ucy5yZ2IuZ2V0UmdiKEMsMCkpO2NvbnN0IFE9e2FjdGlvbjpvLmFjdGlvbixhdHRhY2htZW50Om8uYXR0YWNobWVudCxkZXN0Om8uZGVzdCx1cmw6by51cmwsdW5zYWZlVXJsOm8udW5zYWZlVXJsLG5ld1dpbmRvdzpvLm5ld1dpbmRvdyxzZXRPQ0dTdGF0ZTpvLnNldE9DR1N0YXRlLHRpdGxlOiJzdHJpbmciPT10eXBlb2YgZz9zdHJpbmdUb1BERlN0cmluZyhnKToiIixjb2xvcjpsLGNvdW50Ok51bWJlci5pc0ludGVnZXIoaCk/aDp2b2lkIDAsYm9sZDohISgyJmMpLGl0YWxpYzohISgxJmMpLGl0ZW1zOltdfTt0LnBhcmVudC5pdGVtcy5wdXNoKFEpO2U9bi5nZXRSYXcoIkZpcnN0Iik7aWYoZSBpbnN0YW5jZW9mIFJlZiYmIWEuaGFzKGUpKXtpLnB1c2goe29iajplLHBhcmVudDpRfSk7YS5wdXQoZSl9ZT1uLmdldFJhdygiTmV4dCIpO2lmKGUgaW5zdGFuY2VvZiBSZWYmJiFhLmhhcyhlKSl7aS5wdXNoKHtvYmo6ZSxwYXJlbnQ6dC5wYXJlbnR9KTthLnB1dChlKX19cmV0dXJuIHQuaXRlbXMubGVuZ3RoPjA/dC5pdGVtczpudWxsfWdldCBwZXJtaXNzaW9ucygpe2xldCBlPW51bGw7dHJ5e2U9dGhpcy5fcmVhZFBlcm1pc3Npb25zKCl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7d2FybigiVW5hYmxlIHRvIHJlYWQgcGVybWlzc2lvbnMuIil9cmV0dXJuIHNoYWRvdyh0aGlzLCJwZXJtaXNzaW9ucyIsZSl9X3JlYWRQZXJtaXNzaW9ucygpe2NvbnN0IGU9dGhpcy54cmVmLnRyYWlsZXIuZ2V0KCJFbmNyeXB0Iik7aWYoIShlIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuIG51bGw7bGV0IHQ9ZS5nZXQoIlAiKTtpZigibnVtYmVyIiE9dHlwZW9mIHQpcmV0dXJuIG51bGw7dCs9MioqMzI7Y29uc3QgaT1bXTtmb3IoY29uc3QgZSBpbiB3KXtjb25zdCBhPXdbZV07dCZhJiZpLnB1c2goYSl9cmV0dXJuIGl9Z2V0IG9wdGlvbmFsQ29udGVudENvbmZpZygpe2xldCBlPW51bGw7dHJ5e2NvbnN0IHQ9dGhpcy5fY2F0RGljdC5nZXQoIk9DUHJvcGVydGllcyIpO2lmKCF0KXJldHVybiBzaGFkb3codGhpcywib3B0aW9uYWxDb250ZW50Q29uZmlnIixudWxsKTtjb25zdCBpPXQuZ2V0KCJEIik7aWYoIWkpcmV0dXJuIHNoYWRvdyh0aGlzLCJvcHRpb25hbENvbnRlbnRDb25maWciLG51bGwpO2NvbnN0IGE9dC5nZXQoIk9DR3MiKTtpZighQXJyYXkuaXNBcnJheShhKSlyZXR1cm4gc2hhZG93KHRoaXMsIm9wdGlvbmFsQ29udGVudENvbmZpZyIsbnVsbCk7Y29uc3Qgcj1bXSxzPW5ldyBSZWZTZXQ7Zm9yKGNvbnN0IGUgb2YgYSlpZihlIGluc3RhbmNlb2YgUmVmJiYhcy5oYXMoZSkpe3MucHV0KGUpO3IucHVzaCh0aGlzLiNZKGUpKX1lPXRoaXMuI1QoaSxzKTtlLmdyb3Vwcz1yfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3dhcm4oYFVuYWJsZSB0byByZWFkIG9wdGlvbmFsIGNvbnRlbnQgY29uZmlnOiAke2V9YCl9cmV0dXJuIHNoYWRvdyh0aGlzLCJvcHRpb25hbENvbnRlbnRDb25maWciLGUpfSNZKGUpe2NvbnN0IHQ9dGhpcy54cmVmLmZldGNoKGUpLGk9e2lkOmUudG9TdHJpbmcoKSxuYW1lOm51bGwsaW50ZW50Om51bGwsdXNhZ2U6e3ByaW50Om51bGwsdmlldzpudWxsfX0sYT10LmdldCgiTmFtZSIpOyJzdHJpbmciPT10eXBlb2YgYSYmKGkubmFtZT1zdHJpbmdUb1BERlN0cmluZyhhKSk7bGV0IHI9dC5nZXRBcnJheSgiSW50ZW50Iik7QXJyYXkuaXNBcnJheShyKXx8KHI9W3JdKTtyLmV2ZXJ5KChlPT5lIGluc3RhbmNlb2YgTmFtZSkpJiYoaS5pbnRlbnQ9ci5tYXAoKGU9PmUubmFtZSkpKTtjb25zdCBzPXQuZ2V0KCJVc2FnZSIpO2lmKCEocyBpbnN0YW5jZW9mIERpY3QpKXJldHVybiBpO2NvbnN0IG49aS51c2FnZSxvPXMuZ2V0KCJQcmludCIpO2lmKG8gaW5zdGFuY2VvZiBEaWN0KXtjb25zdCBlPW8uZ2V0KCJQcmludFN0YXRlIik7aWYoZSBpbnN0YW5jZW9mIE5hbWUpc3dpdGNoKGUubmFtZSl7Y2FzZSJPTiI6Y2FzZSJPRkYiOm4ucHJpbnQ9e3ByaW50U3RhdGU6ZS5uYW1lfX19Y29uc3QgZz1zLmdldCgiVmlldyIpO2lmKGcgaW5zdGFuY2VvZiBEaWN0KXtjb25zdCBlPWcuZ2V0KCJWaWV3U3RhdGUiKTtpZihlIGluc3RhbmNlb2YgTmFtZSlzd2l0Y2goZS5uYW1lKXtjYXNlIk9OIjpjYXNlIk9GRiI6bi52aWV3PXt2aWV3U3RhdGU6ZS5uYW1lfX19cmV0dXJuIGl9I1QoZSx0KXtmdW5jdGlvbiBwYXJzZU9uT2ZmKGUpe2NvbnN0IGk9W107aWYoQXJyYXkuaXNBcnJheShlKSlmb3IoY29uc3QgYSBvZiBlKWEgaW5zdGFuY2VvZiBSZWYmJnQuaGFzKGEpJiZpLnB1c2goYS50b1N0cmluZygpKTtyZXR1cm4gaX1mdW5jdGlvbiBwYXJzZU9yZGVyKGUsaT0wKXtpZighQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gbnVsbDtjb25zdCByPVtdO2Zvcihjb25zdCBzIG9mIGUpe2lmKHMgaW5zdGFuY2VvZiBSZWYmJnQuaGFzKHMpKXthLnB1dChzKTtyLnB1c2gocy50b1N0cmluZygpKTtjb250aW51ZX1jb25zdCBlPXBhcnNlTmVzdGVkT3JkZXIocyxpKTtlJiZyLnB1c2goZSl9aWYoaT4wKXJldHVybiByO2NvbnN0IHM9W107Zm9yKGNvbnN0IGUgb2YgdClhLmhhcyhlKXx8cy5wdXNoKGUudG9TdHJpbmcoKSk7cy5sZW5ndGgmJnIucHVzaCh7bmFtZTpudWxsLG9yZGVyOnN9KTtyZXR1cm4gcn1mdW5jdGlvbiBwYXJzZU5lc3RlZE9yZGVyKGUsdCl7aWYoKyt0PnIpe3dhcm4oInBhcnNlTmVzdGVkT3JkZXIgLSByZWFjaGVkIE1BWF9ORVNURURfTEVWRUxTLiIpO3JldHVybiBudWxsfWNvbnN0IGE9aS5mZXRjaElmUmVmKGUpO2lmKCFBcnJheS5pc0FycmF5KGEpKXJldHVybiBudWxsO2NvbnN0IHM9aS5mZXRjaElmUmVmKGFbMF0pO2lmKCJzdHJpbmciIT10eXBlb2YgcylyZXR1cm4gbnVsbDtjb25zdCBuPXBhcnNlT3JkZXIoYS5zbGljZSgxKSx0KTtyZXR1cm4gbiYmbi5sZW5ndGg/e25hbWU6c3RyaW5nVG9QREZTdHJpbmcocyksb3JkZXI6bn06bnVsbH1jb25zdCBpPXRoaXMueHJlZixhPW5ldyBSZWZTZXQscj0xMDtyZXR1cm57bmFtZToic3RyaW5nIj09dHlwZW9mIGUuZ2V0KCJOYW1lIik/c3RyaW5nVG9QREZTdHJpbmcoZS5nZXQoIk5hbWUiKSk6bnVsbCxjcmVhdG9yOiJzdHJpbmciPT10eXBlb2YgZS5nZXQoIkNyZWF0b3IiKT9zdHJpbmdUb1BERlN0cmluZyhlLmdldCgiQ3JlYXRvciIpKTpudWxsLGJhc2VTdGF0ZTplLmdldCgiQmFzZVN0YXRlIilpbnN0YW5jZW9mIE5hbWU/ZS5nZXQoIkJhc2VTdGF0ZSIpLm5hbWU6bnVsbCxvbjpwYXJzZU9uT2ZmKGUuZ2V0KCJPTiIpKSxvZmY6cGFyc2VPbk9mZihlLmdldCgiT0ZGIikpLG9yZGVyOnBhcnNlT3JkZXIoZS5nZXQoIk9yZGVyIikpLGdyb3VwczpudWxsfX1zZXRBY3R1YWxOdW1QYWdlcyhlPW51bGwpe3RoaXMuX2FjdHVhbE51bVBhZ2VzPWV9Z2V0IGhhc0FjdHVhbE51bVBhZ2VzKCl7cmV0dXJuIG51bGwhPT10aGlzLl9hY3R1YWxOdW1QYWdlc31nZXQgX3BhZ2VzQ291bnQoKXtjb25zdCBlPXRoaXMudG9wbGV2ZWxQYWdlc0RpY3QuZ2V0KCJDb3VudCIpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGUpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiUGFnZSBjb3VudCBpbiB0b3AtbGV2ZWwgcGFnZXMgZGljdGlvbmFyeSBpcyBub3QgYW4gaW50ZWdlci4iKTtyZXR1cm4gc2hhZG93KHRoaXMsIl9wYWdlc0NvdW50IixlKX1nZXQgbnVtUGFnZXMoKXtyZXR1cm4gdGhpcy5oYXNBY3R1YWxOdW1QYWdlcz90aGlzLl9hY3R1YWxOdW1QYWdlczp0aGlzLl9wYWdlc0NvdW50fWdldCBkZXN0aW5hdGlvbnMoKXtjb25zdCBlPXRoaXMuX3JlYWREZXN0cygpLHQ9T2JqZWN0LmNyZWF0ZShudWxsKTtpZihlIGluc3RhbmNlb2YgTmFtZVRyZWUpZm9yKGNvbnN0W2ksYV1vZiBlLmdldEFsbCgpKXtjb25zdCBlPWZldGNoRGVzdChhKTtlJiYodFtzdHJpbmdUb1BERlN0cmluZyhpKV09ZSl9ZWxzZSBlIGluc3RhbmNlb2YgRGljdCYmZS5mb3JFYWNoKChmdW5jdGlvbihlLGkpe2NvbnN0IGE9ZmV0Y2hEZXN0KGkpO2EmJih0W2VdPWEpfSkpO3JldHVybiBzaGFkb3codGhpcywiZGVzdGluYXRpb25zIix0KX1nZXREZXN0aW5hdGlvbihlKXtjb25zdCB0PXRoaXMuX3JlYWREZXN0cygpO2lmKHQgaW5zdGFuY2VvZiBOYW1lVHJlZSl7Y29uc3QgaT1mZXRjaERlc3QodC5nZXQoZSkpO2lmKGkpcmV0dXJuIGk7Y29uc3QgYT10aGlzLmRlc3RpbmF0aW9uc1tlXTtpZihhKXt3YXJuKGBGb3VuZCAiJHtlfSIgYXQgYW4gaW5jb3JyZWN0IHBvc2l0aW9uIGluIHRoZSBOYW1lVHJlZS5gKTtyZXR1cm4gYX19ZWxzZSBpZih0IGluc3RhbmNlb2YgRGljdCl7Y29uc3QgaT1mZXRjaERlc3QodC5nZXQoZSkpO2lmKGkpcmV0dXJuIGl9cmV0dXJuIG51bGx9X3JlYWREZXN0cygpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXQoIk5hbWVzIik7cmV0dXJuIGU/LmhhcygiRGVzdHMiKT9uZXcgTmFtZVRyZWUoZS5nZXRSYXcoIkRlc3RzIiksdGhpcy54cmVmKTp0aGlzLl9jYXREaWN0LmhhcygiRGVzdHMiKT90aGlzLl9jYXREaWN0LmdldCgiRGVzdHMiKTp2b2lkIDB9Z2V0IHBhZ2VMYWJlbHMoKXtsZXQgZT1udWxsO3RyeXtlPXRoaXMuX3JlYWRQYWdlTGFiZWxzKCl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7d2FybigiVW5hYmxlIHRvIHJlYWQgcGFnZSBsYWJlbHMuIil9cmV0dXJuIHNoYWRvdyh0aGlzLCJwYWdlTGFiZWxzIixlKX1fcmVhZFBhZ2VMYWJlbHMoKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0UmF3KCJQYWdlTGFiZWxzIik7aWYoIWUpcmV0dXJuIG51bGw7Y29uc3QgdD1uZXcgQXJyYXkodGhpcy5udW1QYWdlcyk7bGV0IGk9bnVsbCxhPSIiO2NvbnN0IHI9bmV3IE51bWJlclRyZWUoZSx0aGlzLnhyZWYpLmdldEFsbCgpO2xldCBzPSIiLG49MTtmb3IobGV0IGU9MCxvPXRoaXMubnVtUGFnZXM7ZTxvO2UrKyl7Y29uc3Qgbz1yLmdldChlKTtpZih2b2lkIDAhPT1vKXtpZighKG8gaW5zdGFuY2VvZiBEaWN0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlBhZ2VMYWJlbCBpcyBub3QgYSBkaWN0aW9uYXJ5LiIpO2lmKG8uaGFzKCJUeXBlIikmJiFpc05hbWUoby5nZXQoIlR5cGUiKSwiUGFnZUxhYmVsIikpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIHR5cGUgaW4gUGFnZUxhYmVsIGRpY3Rpb25hcnkuIik7aWYoby5oYXMoIlMiKSl7Y29uc3QgZT1vLmdldCgiUyIpO2lmKCEoZSBpbnN0YW5jZW9mIE5hbWUpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBzdHlsZSBpbiBQYWdlTGFiZWwgZGljdGlvbmFyeS4iKTtpPWUubmFtZX1lbHNlIGk9bnVsbDtpZihvLmhhcygiUCIpKXtjb25zdCBlPW8uZ2V0KCJQIik7aWYoInN0cmluZyIhPXR5cGVvZiBlKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBwcmVmaXggaW4gUGFnZUxhYmVsIGRpY3Rpb25hcnkuIik7YT1zdHJpbmdUb1BERlN0cmluZyhlKX1lbHNlIGE9IiI7aWYoby5oYXMoIlN0Iikpe2NvbnN0IGU9by5nZXQoIlN0Iik7aWYoIShOdW1iZXIuaXNJbnRlZ2VyKGUpJiZlPj0xKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgc3RhcnQgaW4gUGFnZUxhYmVsIGRpY3Rpb25hcnkuIik7bj1lfWVsc2Ugbj0xfXN3aXRjaChpKXtjYXNlIkQiOnM9bjticmVhaztjYXNlIlIiOmNhc2UiciI6cz10b1JvbWFuTnVtZXJhbHMobiwiciI9PT1pKTticmVhaztjYXNlIkEiOmNhc2UiYSI6Y29uc3QgZT0yNix0PSJhIj09PWk/OTc6NjUsYT1uLTE7cz1TdHJpbmcuZnJvbUNoYXJDb2RlKHQrYSVlKS5yZXBlYXQoTWF0aC5mbG9vcihhL2UpKzEpO2JyZWFrO2RlZmF1bHQ6aWYoaSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEludmFsaWQgc3R5bGUgIiR7aX0iIGluIFBhZ2VMYWJlbCBkaWN0aW9uYXJ5LmApO3M9IiJ9dFtlXT1hK3M7bisrfXJldHVybiB0fWdldCBwYWdlTGF5b3V0KCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiUGFnZUxheW91dCIpO2xldCB0PSIiO2lmKGUgaW5zdGFuY2VvZiBOYW1lKXN3aXRjaChlLm5hbWUpe2Nhc2UiU2luZ2xlUGFnZSI6Y2FzZSJPbmVDb2x1bW4iOmNhc2UiVHdvQ29sdW1uTGVmdCI6Y2FzZSJUd29Db2x1bW5SaWdodCI6Y2FzZSJUd29QYWdlTGVmdCI6Y2FzZSJUd29QYWdlUmlnaHQiOnQ9ZS5uYW1lfXJldHVybiBzaGFkb3codGhpcywicGFnZUxheW91dCIsdCl9Z2V0IHBhZ2VNb2RlKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiUGFnZU1vZGUiKTtsZXQgdD0iVXNlTm9uZSI7aWYoZSBpbnN0YW5jZW9mIE5hbWUpc3dpdGNoKGUubmFtZSl7Y2FzZSJVc2VOb25lIjpjYXNlIlVzZU91dGxpbmVzIjpjYXNlIlVzZVRodW1icyI6Y2FzZSJGdWxsU2NyZWVuIjpjYXNlIlVzZU9DIjpjYXNlIlVzZUF0dGFjaG1lbnRzIjp0PWUubmFtZX1yZXR1cm4gc2hhZG93KHRoaXMsInBhZ2VNb2RlIix0KX1nZXQgdmlld2VyUHJlZmVyZW5jZXMoKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJWaWV3ZXJQcmVmZXJlbmNlcyIpO2lmKCEoZSBpbnN0YW5jZW9mIERpY3QpKXJldHVybiBzaGFkb3codGhpcywidmlld2VyUHJlZmVyZW5jZXMiLG51bGwpO2xldCB0PW51bGw7Zm9yKGNvbnN0IGkgb2YgZS5nZXRLZXlzKCkpe2NvbnN0IGE9ZS5nZXQoaSk7bGV0IHI7c3dpdGNoKGkpe2Nhc2UiSGlkZVRvb2xiYXIiOmNhc2UiSGlkZU1lbnViYXIiOmNhc2UiSGlkZVdpbmRvd1VJIjpjYXNlIkZpdFdpbmRvdyI6Y2FzZSJDZW50ZXJXaW5kb3ciOmNhc2UiRGlzcGxheURvY1RpdGxlIjpjYXNlIlBpY2tUcmF5QnlQREZTaXplIjoiYm9vbGVhbiI9PXR5cGVvZiBhJiYocj1hKTticmVhaztjYXNlIk5vbkZ1bGxTY3JlZW5QYWdlTW9kZSI6aWYoYSBpbnN0YW5jZW9mIE5hbWUpc3dpdGNoKGEubmFtZSl7Y2FzZSJVc2VOb25lIjpjYXNlIlVzZU91dGxpbmVzIjpjYXNlIlVzZVRodW1icyI6Y2FzZSJVc2VPQyI6cj1hLm5hbWU7YnJlYWs7ZGVmYXVsdDpyPSJVc2VOb25lIn1icmVhaztjYXNlIkRpcmVjdGlvbiI6aWYoYSBpbnN0YW5jZW9mIE5hbWUpc3dpdGNoKGEubmFtZSl7Y2FzZSJMMlIiOmNhc2UiUjJMIjpyPWEubmFtZTticmVhaztkZWZhdWx0OnI9IkwyUiJ9YnJlYWs7Y2FzZSJWaWV3QXJlYSI6Y2FzZSJWaWV3Q2xpcCI6Y2FzZSJQcmludEFyZWEiOmNhc2UiUHJpbnRDbGlwIjppZihhIGluc3RhbmNlb2YgTmFtZSlzd2l0Y2goYS5uYW1lKXtjYXNlIk1lZGlhQm94IjpjYXNlIkNyb3BCb3giOmNhc2UiQmxlZWRCb3giOmNhc2UiVHJpbUJveCI6Y2FzZSJBcnRCb3giOnI9YS5uYW1lO2JyZWFrO2RlZmF1bHQ6cj0iQ3JvcEJveCJ9YnJlYWs7Y2FzZSJQcmludFNjYWxpbmciOmlmKGEgaW5zdGFuY2VvZiBOYW1lKXN3aXRjaChhLm5hbWUpe2Nhc2UiTm9uZSI6Y2FzZSJBcHBEZWZhdWx0IjpyPWEubmFtZTticmVhaztkZWZhdWx0OnI9IkFwcERlZmF1bHQifWJyZWFrO2Nhc2UiRHVwbGV4IjppZihhIGluc3RhbmNlb2YgTmFtZSlzd2l0Y2goYS5uYW1lKXtjYXNlIlNpbXBsZXgiOmNhc2UiRHVwbGV4RmxpcFNob3J0RWRnZSI6Y2FzZSJEdXBsZXhGbGlwTG9uZ0VkZ2UiOnI9YS5uYW1lO2JyZWFrO2RlZmF1bHQ6cj0iTm9uZSJ9YnJlYWs7Y2FzZSJQcmludFBhZ2VSYW5nZSI6aWYoQXJyYXkuaXNBcnJheShhKSYmYS5sZW5ndGglMj09MCl7YS5ldmVyeSgoKGUsdCxpKT0+TnVtYmVyLmlzSW50ZWdlcihlKSYmZT4wJiYoMD09PXR8fGU+PWlbdC0xXSkmJmU8PXRoaXMubnVtUGFnZXMpKSYmKHI9YSl9YnJlYWs7Y2FzZSJOdW1Db3BpZXMiOk51bWJlci5pc0ludGVnZXIoYSkmJmE+MCYmKHI9YSk7YnJlYWs7ZGVmYXVsdDp3YXJuKGBJZ25vcmluZyBub24tc3RhbmRhcmQga2V5IGluIFZpZXdlclByZWZlcmVuY2VzOiAke2l9LmApO2NvbnRpbnVlfWlmKHZvaWQgMCE9PXIpe3R8fCh0PU9iamVjdC5jcmVhdGUobnVsbCkpO3RbaV09cn1lbHNlIHdhcm4oYEJhZCB2YWx1ZSwgZm9yIGtleSAiJHtpfSIsIGluIFZpZXdlclByZWZlcmVuY2VzOiAke2F9LmApfXJldHVybiBzaGFkb3codGhpcywidmlld2VyUHJlZmVyZW5jZXMiLHQpfWdldCBvcGVuQWN0aW9uKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiT3BlbkFjdGlvbiIpLHQ9T2JqZWN0LmNyZWF0ZShudWxsKTtpZihlIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgaT1uZXcgRGljdCh0aGlzLnhyZWYpO2kuc2V0KCJBIixlKTtjb25zdCBhPXt1cmw6bnVsbCxkZXN0Om51bGwsYWN0aW9uOm51bGx9O0NhdGFsb2cucGFyc2VEZXN0RGljdGlvbmFyeSh7ZGVzdERpY3Q6aSxyZXN1bHRPYmo6YX0pO0FycmF5LmlzQXJyYXkoYS5kZXN0KT90LmRlc3Q9YS5kZXN0OmEuYWN0aW9uJiYodC5hY3Rpb249YS5hY3Rpb24pfWVsc2UgQXJyYXkuaXNBcnJheShlKSYmKHQuZGVzdD1lKTtyZXR1cm4gc2hhZG93KHRoaXMsIm9wZW5BY3Rpb24iLG9iamVjdFNpemUodCk+MD90Om51bGwpfWdldCBhdHRhY2htZW50cygpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXQoIk5hbWVzIik7bGV0IHQ9bnVsbDtpZihlIGluc3RhbmNlb2YgRGljdCYmZS5oYXMoIkVtYmVkZGVkRmlsZXMiKSl7Y29uc3QgaT1uZXcgTmFtZVRyZWUoZS5nZXRSYXcoIkVtYmVkZGVkRmlsZXMiKSx0aGlzLnhyZWYpO2Zvcihjb25zdFtlLGFdb2YgaS5nZXRBbGwoKSl7Y29uc3QgaT1uZXcgRmlsZVNwZWMoYSx0aGlzLnhyZWYpO3R8fCh0PU9iamVjdC5jcmVhdGUobnVsbCkpO3Rbc3RyaW5nVG9QREZTdHJpbmcoZSldPWkuc2VyaWFsaXphYmxlfX1yZXR1cm4gc2hhZG93KHRoaXMsImF0dGFjaG1lbnRzIix0KX1nZXQgeGZhSW1hZ2VzKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiTmFtZXMiKTtsZXQgdD1udWxsO2lmKGUgaW5zdGFuY2VvZiBEaWN0JiZlLmhhcygiWEZBSW1hZ2VzIikpe2NvbnN0IGk9bmV3IE5hbWVUcmVlKGUuZ2V0UmF3KCJYRkFJbWFnZXMiKSx0aGlzLnhyZWYpO2Zvcihjb25zdFtlLGFdb2YgaS5nZXRBbGwoKSl7dHx8KHQ9bmV3IERpY3QodGhpcy54cmVmKSk7dC5zZXQoc3RyaW5nVG9QREZTdHJpbmcoZSksYSl9fXJldHVybiBzaGFkb3codGhpcywieGZhSW1hZ2VzIix0KX1fY29sbGVjdEphdmFTY3JpcHQoKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJOYW1lcyIpO2xldCB0PW51bGw7ZnVuY3Rpb24gYXBwZW5kSWZKYXZhU2NyaXB0RGljdChlLGkpe2lmKCEoaSBpbnN0YW5jZW9mIERpY3QpKXJldHVybjtpZighaXNOYW1lKGkuZ2V0KCJTIiksIkphdmFTY3JpcHQiKSlyZXR1cm47bGV0IGE9aS5nZXQoIkpTIik7aWYoYSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pYT1hLmdldFN0cmluZygpO2Vsc2UgaWYoInN0cmluZyIhPXR5cGVvZiBhKXJldHVybjthPXN0cmluZ1RvUERGU3RyaW5nKGEpLnJlcGxhY2VBbGwoIlwwIiwiIik7YSYmKHR8fD1uZXcgTWFwKS5zZXQoZSxhKX1pZihlIGluc3RhbmNlb2YgRGljdCYmZS5oYXMoIkphdmFTY3JpcHQiKSl7Y29uc3QgdD1uZXcgTmFtZVRyZWUoZS5nZXRSYXcoIkphdmFTY3JpcHQiKSx0aGlzLnhyZWYpO2Zvcihjb25zdFtlLGldb2YgdC5nZXRBbGwoKSlhcHBlbmRJZkphdmFTY3JpcHREaWN0KHN0cmluZ1RvUERGU3RyaW5nKGUpLGkpfWNvbnN0IGk9dGhpcy5fY2F0RGljdC5nZXQoIk9wZW5BY3Rpb24iKTtpJiZhcHBlbmRJZkphdmFTY3JpcHREaWN0KCJPcGVuQWN0aW9uIixpKTtyZXR1cm4gdH1nZXQganNBY3Rpb25zKCl7Y29uc3QgZT10aGlzLl9jb2xsZWN0SmF2YVNjcmlwdCgpO2xldCB0PWNvbGxlY3RBY3Rpb25zKHRoaXMueHJlZix0aGlzLl9jYXREaWN0LG1BKTtpZihlKXt0fHw9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IoY29uc3RbaSxhXW9mIGUpaSBpbiB0P3RbaV0ucHVzaChhKTp0W2ldPVthXX1yZXR1cm4gc2hhZG93KHRoaXMsImpzQWN0aW9ucyIsdCl9YXN5bmMgZm9udEZhbGxiYWNrKGUsdCl7Y29uc3QgaT1hd2FpdCBQcm9taXNlLmFsbCh0aGlzLmZvbnRDYWNoZSk7Zm9yKGNvbnN0IGEgb2YgaSlpZihhLmxvYWRlZE5hbWU9PT1lKXthLmZhbGxiYWNrKHQpO3JldHVybn19YXN5bmMgY2xlYW51cChlPSExKXtjbGVhckdsb2JhbENhY2hlcygpO3RoaXMuZ2xvYmFsSW1hZ2VDYWNoZS5jbGVhcihlKTt0aGlzLnBhZ2VLaWRzQ291bnRDYWNoZS5jbGVhcigpO3RoaXMucGFnZUluZGV4Q2FjaGUuY2xlYXIoKTt0aGlzLnBhZ2VEaWN0Q2FjaGUuY2xlYXIoKTt0aGlzLm5vbkJsZW5kTW9kZXNTZXQuY2xlYXIoKTtjb25zdCB0PWF3YWl0IFByb21pc2UuYWxsKHRoaXMuZm9udENhY2hlKTtmb3IoY29uc3R7ZGljdDplfW9mIHQpZGVsZXRlIGUuY2FjaGVLZXk7dGhpcy5mb250Q2FjaGUuY2xlYXIoKTt0aGlzLmJ1aWx0SW5DTWFwQ2FjaGUuY2xlYXIoKTt0aGlzLnN0YW5kYXJkRm9udERhdGFDYWNoZS5jbGVhcigpO3RoaXMuc3lzdGVtRm9udENhY2hlLmNsZWFyKCl9YXN5bmMgZ2V0UGFnZURpY3QoZSl7Y29uc3QgdD1bdGhpcy50b3BsZXZlbFBhZ2VzRGljdF0saT1uZXcgUmVmU2V0LGE9dGhpcy5fY2F0RGljdC5nZXRSYXcoIlBhZ2VzIik7YSBpbnN0YW5jZW9mIFJlZiYmaS5wdXQoYSk7Y29uc3Qgcj10aGlzLnhyZWYscz10aGlzLnBhZ2VLaWRzQ291bnRDYWNoZSxuPXRoaXMucGFnZUluZGV4Q2FjaGUsbz10aGlzLnBhZ2VEaWN0Q2FjaGU7bGV0IGc9MDtmb3IoO3QubGVuZ3RoOyl7Y29uc3QgYT10LnBvcCgpO2lmKGEgaW5zdGFuY2VvZiBSZWYpe2NvbnN0IGM9cy5nZXQoYSk7aWYoYz49MCYmZytjPD1lKXtnKz1jO2NvbnRpbnVlfWlmKGkuaGFzKGEpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiUGFnZXMgdHJlZSBjb250YWlucyBjaXJjdWxhciByZWZlcmVuY2UuIik7aS5wdXQoYSk7Y29uc3QgQz1hd2FpdChvLmdldChhKXx8ci5mZXRjaEFzeW5jKGEpKTtpZihDIGluc3RhbmNlb2YgRGljdCl7bGV0IHQ9Qy5nZXRSYXcoIlR5cGUiKTt0IGluc3RhbmNlb2YgUmVmJiYodD1hd2FpdCByLmZldGNoQXN5bmModCkpO2lmKGlzTmFtZSh0LCJQYWdlIil8fCFDLmhhcygiS2lkcyIpKXtzLmhhcyhhKXx8cy5wdXQoYSwxKTtuLmhhcyhhKXx8bi5wdXQoYSxnKTtpZihnPT09ZSlyZXR1cm5bQyxhXTtnKys7Y29udGludWV9fXQucHVzaChDKTtjb250aW51ZX1pZighKGEgaW5zdGFuY2VvZiBEaWN0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlBhZ2UgZGljdGlvbmFyeSBraWQgcmVmZXJlbmNlIHBvaW50cyB0byB3cm9uZyB0eXBlIG9mIG9iamVjdC4iKTtjb25zdHtvYmpJZDpjfT1hO2xldCBDPWEuZ2V0UmF3KCJDb3VudCIpO0MgaW5zdGFuY2VvZiBSZWYmJihDPWF3YWl0IHIuZmV0Y2hBc3luYyhDKSk7aWYoTnVtYmVyLmlzSW50ZWdlcihDKSYmQz49MCl7YyYmIXMuaGFzKGMpJiZzLnB1dChjLEMpO2lmKGcrQzw9ZSl7Zys9Qztjb250aW51ZX19bGV0IGg9YS5nZXRSYXcoIktpZHMiKTtoIGluc3RhbmNlb2YgUmVmJiYoaD1hd2FpdCByLmZldGNoQXN5bmMoaCkpO2lmKCFBcnJheS5pc0FycmF5KGgpKXtsZXQgdD1hLmdldFJhdygiVHlwZSIpO3QgaW5zdGFuY2VvZiBSZWYmJih0PWF3YWl0IHIuZmV0Y2hBc3luYyh0KSk7aWYoaXNOYW1lKHQsIlBhZ2UiKXx8IWEuaGFzKCJLaWRzIikpe2lmKGc9PT1lKXJldHVyblthLG51bGxdO2crKztjb250aW51ZX10aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlBhZ2UgZGljdGlvbmFyeSBraWRzIG9iamVjdCBpcyBub3QgYW4gYXJyYXkuIil9Zm9yKGxldCBlPWgubGVuZ3RoLTE7ZT49MDtlLS0pe2NvbnN0IGk9aFtlXTt0LnB1c2goaSk7YT09PXRoaXMudG9wbGV2ZWxQYWdlc0RpY3QmJmkgaW5zdGFuY2VvZiBSZWYmJiFvLmhhcyhpKSYmby5wdXQoaSxyLmZldGNoQXN5bmMoaSkpfX10aHJvdyBuZXcgRXJyb3IoYFBhZ2UgaW5kZXggJHtlfSBub3QgZm91bmQuYCl9YXN5bmMgZ2V0QWxsUGFnZURpY3RzKGU9ITEpe2NvbnN0e2lnbm9yZUVycm9yczp0fT10aGlzLnBkZk1hbmFnZXIuZXZhbHVhdG9yT3B0aW9ucyxpPVt7Y3VycmVudE5vZGU6dGhpcy50b3BsZXZlbFBhZ2VzRGljdCxwb3NJbktpZHM6MH1dLGE9bmV3IFJlZlNldCxyPXRoaXMuX2NhdERpY3QuZ2V0UmF3KCJQYWdlcyIpO3IgaW5zdGFuY2VvZiBSZWYmJmEucHV0KHIpO2NvbnN0IHM9bmV3IE1hcCxuPXRoaXMueHJlZixvPXRoaXMucGFnZUluZGV4Q2FjaGU7bGV0IGc9MDtmdW5jdGlvbiBhZGRQYWdlRGljdChlLHQpe3QmJiFvLmhhcyh0KSYmby5wdXQodCxnKTtzLnNldChnKyssW2UsdF0pfWZ1bmN0aW9uIGFkZFBhZ2VFcnJvcihpKXtpZihpIGluc3RhbmNlb2YgWFJlZkVudHJ5RXhjZXB0aW9uJiYhZSl0aHJvdyBpO2lmKGUmJnQmJjA9PT1nKXt3YXJuKGBnZXRBbGxQYWdlRGljdHMgLSBTa2lwcGluZyBpbnZhbGlkIGZpcnN0IHBhZ2U6ICIke2l9Ii5gKTtpPURpY3QuZW1wdHl9cy5zZXQoZysrLFtpLG51bGxdKX1mb3IoO2kubGVuZ3RoPjA7KXtjb25zdCBlPWkuYXQoLTEpLHtjdXJyZW50Tm9kZTp0LHBvc0luS2lkczpyfT1lO2xldCBzPXQuZ2V0UmF3KCJLaWRzIik7aWYocyBpbnN0YW5jZW9mIFJlZil0cnl7cz1hd2FpdCBuLmZldGNoQXN5bmMocyl9Y2F0Y2goZSl7YWRkUGFnZUVycm9yKGUpO2JyZWFrfWlmKCFBcnJheS5pc0FycmF5KHMpKXthZGRQYWdlRXJyb3IobmV3IEZvcm1hdEVycm9yKCJQYWdlIGRpY3Rpb25hcnkga2lkcyBvYmplY3QgaXMgbm90IGFuIGFycmF5LiIpKTticmVha31pZihyPj1zLmxlbmd0aCl7aS5wb3AoKTtjb250aW51ZX1jb25zdCBvPXNbcl07bGV0IGc7aWYobyBpbnN0YW5jZW9mIFJlZil7aWYoYS5oYXMobykpe2FkZFBhZ2VFcnJvcihuZXcgRm9ybWF0RXJyb3IoIlBhZ2VzIHRyZWUgY29udGFpbnMgY2lyY3VsYXIgcmVmZXJlbmNlLiIpKTticmVha31hLnB1dChvKTt0cnl7Zz1hd2FpdCBuLmZldGNoQXN5bmMobyl9Y2F0Y2goZSl7YWRkUGFnZUVycm9yKGUpO2JyZWFrfX1lbHNlIGc9bztpZighKGcgaW5zdGFuY2VvZiBEaWN0KSl7YWRkUGFnZUVycm9yKG5ldyBGb3JtYXRFcnJvcigiUGFnZSBkaWN0aW9uYXJ5IGtpZCByZWZlcmVuY2UgcG9pbnRzIHRvIHdyb25nIHR5cGUgb2Ygb2JqZWN0LiIpKTticmVha31sZXQgYz1nLmdldFJhdygiVHlwZSIpO2lmKGMgaW5zdGFuY2VvZiBSZWYpdHJ5e2M9YXdhaXQgbi5mZXRjaEFzeW5jKGMpfWNhdGNoKGUpe2FkZFBhZ2VFcnJvcihlKTticmVha31pc05hbWUoYywiUGFnZSIpfHwhZy5oYXMoIktpZHMiKT9hZGRQYWdlRGljdChnLG8gaW5zdGFuY2VvZiBSZWY/bzpudWxsKTppLnB1c2goe2N1cnJlbnROb2RlOmcscG9zSW5LaWRzOjB9KTtlLnBvc0luS2lkcysrfXJldHVybiBzfWdldFBhZ2VJbmRleChlKXtjb25zdCB0PXRoaXMucGFnZUluZGV4Q2FjaGUuZ2V0KGUpO2lmKHZvaWQgMCE9PXQpcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0KTtjb25zdCBpPXRoaXMueHJlZjtsZXQgYT0wO2NvbnN0IG5leHQ9dD0+ZnVuY3Rpb24gcGFnZXNCZWZvcmVSZWYodCl7bGV0IGEscj0wO3JldHVybiBpLmZldGNoQXN5bmModCkudGhlbigoZnVuY3Rpb24oaSl7aWYoaXNSZWZzRXF1YWwodCxlKSYmIWlzRGljdChpLCJQYWdlIikmJiEoaSBpbnN0YW5jZW9mIERpY3QmJiFpLmhhcygiVHlwZSIpJiZpLmhhcygiQ29udGVudHMiKSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJUaGUgcmVmZXJlbmNlIGRvZXMgbm90IHBvaW50IHRvIGEgL1BhZ2UgZGljdGlvbmFyeS4iKTtpZighaSlyZXR1cm4gbnVsbDtpZighKGkgaW5zdGFuY2VvZiBEaWN0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIk5vZGUgbXVzdCBiZSBhIGRpY3Rpb25hcnkuIik7YT1pLmdldFJhdygiUGFyZW50Iik7cmV0dXJuIGkuZ2V0QXN5bmMoIlBhcmVudCIpfSkpLnRoZW4oKGZ1bmN0aW9uKGUpe2lmKCFlKXJldHVybiBudWxsO2lmKCEoZSBpbnN0YW5jZW9mIERpY3QpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiUGFyZW50IG11c3QgYmUgYSBkaWN0aW9uYXJ5LiIpO3JldHVybiBlLmdldEFzeW5jKCJLaWRzIil9KSkudGhlbigoZnVuY3Rpb24oZSl7aWYoIWUpcmV0dXJuIG51bGw7Y29uc3Qgcz1bXTtsZXQgbj0hMTtmb3IoY29uc3QgYSBvZiBlKXtpZighKGEgaW5zdGFuY2VvZiBSZWYpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiS2lkIG11c3QgYmUgYSByZWZlcmVuY2UuIik7aWYoaXNSZWZzRXF1YWwoYSx0KSl7bj0hMDticmVha31zLnB1c2goaS5mZXRjaEFzeW5jKGEpLnRoZW4oKGZ1bmN0aW9uKGUpe2lmKCEoZSBpbnN0YW5jZW9mIERpY3QpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiS2lkIG5vZGUgbXVzdCBiZSBhIGRpY3Rpb25hcnkuIik7ZS5oYXMoIkNvdW50Iik/cis9ZS5nZXQoIkNvdW50Iik6cisrfSkpKX1pZighbil0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIktpZCByZWZlcmVuY2Ugbm90IGZvdW5kIGluIHBhcmVudCdzIGtpZHMuIik7cmV0dXJuIFByb21pc2UuYWxsKHMpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuW3IsYV19KSl9KSl9KHQpLnRoZW4oKHQ9PntpZighdCl7dGhpcy5wYWdlSW5kZXhDYWNoZS5wdXQoZSxhKTtyZXR1cm4gYX1jb25zdFtpLHJdPXQ7YSs9aTtyZXR1cm4gbmV4dChyKX0pKTtyZXR1cm4gbmV4dChlKX1nZXQgYmFzZVVybCgpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXQoIlVSSSIpO2lmKGUgaW5zdGFuY2VvZiBEaWN0KXtjb25zdCB0PWUuZ2V0KCJCYXNlIik7aWYoInN0cmluZyI9PXR5cGVvZiB0KXtjb25zdCBlPWNyZWF0ZVZhbGlkQWJzb2x1dGVVcmwodCxudWxsLHt0cnlDb252ZXJ0RW5jb2Rpbmc6ITB9KTtpZihlKXJldHVybiBzaGFkb3codGhpcywiYmFzZVVybCIsZS5ocmVmKX19cmV0dXJuIHNoYWRvdyh0aGlzLCJiYXNlVXJsIix0aGlzLnBkZk1hbmFnZXIuZG9jQmFzZVVybCl9c3RhdGljIHBhcnNlRGVzdERpY3Rpb25hcnkoe2Rlc3REaWN0OmUscmVzdWx0T2JqOnQsZG9jQmFzZVVybDppPW51bGwsZG9jQXR0YWNobWVudHM6YT1udWxsfSl7aWYoIShlIGluc3RhbmNlb2YgRGljdCkpe3dhcm4oInBhcnNlRGVzdERpY3Rpb25hcnk6IGBkZXN0RGljdGAgbXVzdCBiZSBhIGRpY3Rpb25hcnkuIik7cmV0dXJufWxldCByLHMsbj1lLmdldCgiQSIpO2lmKCEobiBpbnN0YW5jZW9mIERpY3QpKWlmKGUuaGFzKCJEZXN0Iikpbj1lLmdldCgiRGVzdCIpO2Vsc2V7bj1lLmdldCgiQUEiKTtuIGluc3RhbmNlb2YgRGljdCYmKG4uaGFzKCJEIik/bj1uLmdldCgiRCIpOm4uaGFzKCJVIikmJihuPW4uZ2V0KCJVIikpKX1pZihuIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT1uLmdldCgiUyIpO2lmKCEoZSBpbnN0YW5jZW9mIE5hbWUpKXt3YXJuKCJwYXJzZURlc3REaWN0aW9uYXJ5OiBJbnZhbGlkIHR5cGUgaW4gQWN0aW9uIGRpY3Rpb25hcnkuIik7cmV0dXJufWNvbnN0IGk9ZS5uYW1lO3N3aXRjaChpKXtjYXNlIlJlc2V0Rm9ybSI6Y29uc3QgZT1uLmdldCgiRmxhZ3MiKSxvPTA9PSgxJigibnVtYmVyIj09dHlwZW9mIGU/ZTowKSksZz1bXSxjPVtdO2Zvcihjb25zdCBlIG9mIG4uZ2V0KCJGaWVsZHMiKXx8W10pZSBpbnN0YW5jZW9mIFJlZj9jLnB1c2goZS50b1N0cmluZygpKToic3RyaW5nIj09dHlwZW9mIGUmJmcucHVzaChzdHJpbmdUb1BERlN0cmluZyhlKSk7dC5yZXNldEZvcm09e2ZpZWxkczpnLHJlZnM6YyxpbmNsdWRlOm99O2JyZWFrO2Nhc2UiVVJJIjpyPW4uZ2V0KCJVUkkiKTtyIGluc3RhbmNlb2YgTmFtZSYmKHI9Ii8iK3IubmFtZSk7YnJlYWs7Y2FzZSJHb1RvIjpzPW4uZ2V0KCJEIik7YnJlYWs7Y2FzZSJMYXVuY2giOmNhc2UiR29Ub1IiOmNvbnN0IEM9bi5nZXQoIkYiKTtpZihDIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT1uZXcgRmlsZVNwZWMoQyxudWxsLCEwKSx7cmF3RmlsZW5hbWU6dH09ZS5zZXJpYWxpemFibGU7cj10fWVsc2Uic3RyaW5nIj09dHlwZW9mIEMmJihyPUMpO2NvbnN0IGg9ZmV0Y2hSZW1vdGVEZXN0KG4pO2gmJiJzdHJpbmciPT10eXBlb2YgciYmKHI9ci5zcGxpdCgiIyIsMSlbMF0rIiMiK2gpO2NvbnN0IGw9bi5nZXQoIk5ld1dpbmRvdyIpOyJib29sZWFuIj09dHlwZW9mIGwmJih0Lm5ld1dpbmRvdz1sKTticmVhaztjYXNlIkdvVG9FIjpjb25zdCBRPW4uZ2V0KCJUIik7bGV0IEU7aWYoYSYmUSBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IGU9US5nZXQoIlIiKSx0PVEuZ2V0KCJOIik7aXNOYW1lKGUsIkMiKSYmInN0cmluZyI9PXR5cGVvZiB0JiYoRT1hW3N0cmluZ1RvUERGU3RyaW5nKHQpXSl9aWYoRSl7dC5hdHRhY2htZW50PUU7Y29uc3QgZT1mZXRjaFJlbW90ZURlc3Qobik7ZSYmKHQuYXR0YWNobWVudERlc3Q9ZSl9ZWxzZSB3YXJuKCdwYXJzZURlc3REaWN0aW9uYXJ5IC0gdW5pbXBsZW1lbnRlZCAiR29Ub0UiIGFjdGlvbi4nKTticmVhaztjYXNlIk5hbWVkIjpjb25zdCB1PW4uZ2V0KCJOIik7dSBpbnN0YW5jZW9mIE5hbWUmJih0LmFjdGlvbj11Lm5hbWUpO2JyZWFrO2Nhc2UiU2V0T0NHU3RhdGUiOmNvbnN0IGQ9bi5nZXQoIlN0YXRlIiksZj1uLmdldCgiUHJlc2VydmVSQiIpO2lmKCFBcnJheS5pc0FycmF5KGQpfHwwPT09ZC5sZW5ndGgpYnJlYWs7Y29uc3QgcD1bXTtmb3IoY29uc3QgZSBvZiBkKWlmKGUgaW5zdGFuY2VvZiBOYW1lKXN3aXRjaChlLm5hbWUpe2Nhc2UiT04iOmNhc2UiT0ZGIjpjYXNlIlRvZ2dsZSI6cC5wdXNoKGUubmFtZSl9ZWxzZSBlIGluc3RhbmNlb2YgUmVmJiZwLnB1c2goZS50b1N0cmluZygpKTtpZihwLmxlbmd0aCE9PWQubGVuZ3RoKWJyZWFrO3Quc2V0T0NHU3RhdGU9e3N0YXRlOnAscHJlc2VydmVSQjoiYm9vbGVhbiIhPXR5cGVvZiBmfHxmfTticmVhaztjYXNlIkphdmFTY3JpcHQiOmNvbnN0IG09bi5nZXQoIkpTIik7bGV0IHk7bSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0/eT1tLmdldFN0cmluZygpOiJzdHJpbmciPT10eXBlb2YgbSYmKHk9bSk7Y29uc3Qgdz15JiZyZWNvdmVySnNVUkwoc3RyaW5nVG9QREZTdHJpbmcoeSkpO2lmKHcpe3I9dy51cmw7dC5uZXdXaW5kb3c9dy5uZXdXaW5kb3c7YnJlYWt9ZGVmYXVsdDppZigiSmF2YVNjcmlwdCI9PT1pfHwiU3VibWl0Rm9ybSI9PT1pKWJyZWFrO3dhcm4oYHBhcnNlRGVzdERpY3Rpb25hcnkgLSB1bnN1cHBvcnRlZCBhY3Rpb246ICIke2l9Ii5gKX19ZWxzZSBlLmhhcygiRGVzdCIpJiYocz1lLmdldCgiRGVzdCIpKTtpZigic3RyaW5nIj09dHlwZW9mIHIpe2NvbnN0IGU9Y3JlYXRlVmFsaWRBYnNvbHV0ZVVybChyLGkse2FkZERlZmF1bHRQcm90b2NvbDohMCx0cnlDb252ZXJ0RW5jb2Rpbmc6ITB9KTtlJiYodC51cmw9ZS5ocmVmKTt0LnVuc2FmZVVybD1yfWlmKHMpe3MgaW5zdGFuY2VvZiBOYW1lJiYocz1zLm5hbWUpOyJzdHJpbmciPT10eXBlb2Ygcz90LmRlc3Q9c3RyaW5nVG9QREZTdHJpbmcocyk6aXNWYWxpZEV4cGxpY2l0RGVzdChzKSYmKHQuZGVzdD1zKX19fWZ1bmN0aW9uIGFkZENoaWxkcmVuKGUsdCl7aWYoZSBpbnN0YW5jZW9mIERpY3QpZT1lLmdldFJhd1ZhbHVlcygpO2Vsc2UgaWYoZSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pZT1lLmRpY3QuZ2V0UmF3VmFsdWVzKCk7ZWxzZSBpZighQXJyYXkuaXNBcnJheShlKSlyZXR1cm47Zm9yKGNvbnN0IGEgb2YgZSkoKGk9YSlpbnN0YW5jZW9mIFJlZnx8aSBpbnN0YW5jZW9mIERpY3R8fGkgaW5zdGFuY2VvZiBCYXNlU3RyZWFtfHxBcnJheS5pc0FycmF5KGkpKSYmdC5wdXNoKGEpO3ZhciBpfWNsYXNzIE9iamVjdExvYWRlcntjb25zdHJ1Y3RvcihlLHQsaSl7dGhpcy5kaWN0PWU7dGhpcy5rZXlzPXQ7dGhpcy54cmVmPWk7dGhpcy5yZWZTZXQ9bnVsbH1hc3luYyBsb2FkKCl7aWYodGhpcy54cmVmLnN0cmVhbS5pc0RhdGFMb2FkZWQpcmV0dXJuO2NvbnN0e2tleXM6ZSxkaWN0OnR9PXRoaXM7dGhpcy5yZWZTZXQ9bmV3IFJlZlNldDtjb25zdCBpPVtdO2Zvcihjb25zdCBhIG9mIGUpe2NvbnN0IGU9dC5nZXRSYXcoYSk7dm9pZCAwIT09ZSYmaS5wdXNoKGUpfXJldHVybiB0aGlzLl93YWxrKGkpfWFzeW5jIF93YWxrKGUpe2NvbnN0IHQ9W10saT1bXTtmb3IoO2UubGVuZ3RoOyl7bGV0IGE9ZS5wb3AoKTtpZihhIGluc3RhbmNlb2YgUmVmKXtpZih0aGlzLnJlZlNldC5oYXMoYSkpY29udGludWU7dHJ5e3RoaXMucmVmU2V0LnB1dChhKTthPXRoaXMueHJlZi5mZXRjaChhKX1jYXRjaChlKXtpZighKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbikpe3dhcm4oYE9iamVjdExvYWRlci5fd2FsayAtIHJlcXVlc3RpbmcgYWxsIGRhdGE6ICIke2V9Ii5gKTt0aGlzLnJlZlNldD1udWxsO2NvbnN0e21hbmFnZXI6dH09dGhpcy54cmVmLnN0cmVhbTtyZXR1cm4gdC5yZXF1ZXN0QWxsQ2h1bmtzKCl9dC5wdXNoKGEpO2kucHVzaCh7YmVnaW46ZS5iZWdpbixlbmQ6ZS5lbmR9KX19aWYoYSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pe2NvbnN0IGU9YS5nZXRCYXNlU3RyZWFtcygpO2lmKGUpe2xldCByPSExO2Zvcihjb25zdCB0IG9mIGUpaWYoIXQuaXNEYXRhTG9hZGVkKXtyPSEwO2kucHVzaCh7YmVnaW46dC5zdGFydCxlbmQ6dC5lbmR9KX1yJiZ0LnB1c2goYSl9fWFkZENoaWxkcmVuKGEsZSl9aWYoaS5sZW5ndGgpe2F3YWl0IHRoaXMueHJlZi5zdHJlYW0ubWFuYWdlci5yZXF1ZXN0UmFuZ2VzKGkpO2Zvcihjb25zdCBlIG9mIHQpZSBpbnN0YW5jZW9mIFJlZiYmdGhpcy5yZWZTZXQucmVtb3ZlKGUpO3JldHVybiB0aGlzLl93YWxrKHQpfXRoaXMucmVmU2V0PW51bGx9fWNvbnN0IHpyPVN5bWJvbCgpLCRyPVN5bWJvbCgpLEFzPVN5bWJvbCgpLGVzPVN5bWJvbCgpLHRzPVN5bWJvbCgpLGlzPVN5bWJvbCgpLGFzPVN5bWJvbCgpLHJzPVN5bWJvbCgpLHNzPVN5bWJvbCgpLG5zPVN5bWJvbCgiY29udGVudCIpLG9zPVN5bWJvbCgiZGF0YSIpLGdzPVN5bWJvbCgpLElzPVN5bWJvbCgiZXh0cmEiKSxjcz1TeW1ib2woKSxDcz1TeW1ib2woKSxocz1TeW1ib2woKSxscz1TeW1ib2woKSxCcz1TeW1ib2woKSxRcz1TeW1ib2woKSxFcz1TeW1ib2woKSx1cz1TeW1ib2woKSxkcz1TeW1ib2woKSxmcz1TeW1ib2woKSxwcz1TeW1ib2woKSxtcz1TeW1ib2woKSx5cz1TeW1ib2woKSx3cz1TeW1ib2woKSxicz1TeW1ib2woKSxEcz1TeW1ib2woKSxGcz1TeW1ib2woKSxTcz1TeW1ib2woKSxrcz1TeW1ib2woKSxScz1TeW1ib2woKSxOcz1TeW1ib2woKSxHcz1TeW1ib2woKSx4cz1TeW1ib2woKSxVcz1TeW1ib2woKSxNcz1TeW1ib2woKSxMcz1TeW1ib2woKSxIcz1TeW1ib2woKSxKcz1TeW1ib2woKSx2cz1TeW1ib2woKSxZcz1TeW1ib2woKSxUcz1TeW1ib2woKSxLcz1TeW1ib2woKSxxcz1TeW1ib2woIm5hbWVzcGFjZUlkIiksT3M9U3ltYm9sKCJub2RlTmFtZSIpLFdzPVN5bWJvbCgpLGpzPVN5bWJvbCgpLFhzPVN5bWJvbCgpLFpzPVN5bWJvbCgpLFZzPVN5bWJvbCgpLF9zPVN5bWJvbCgpLHpzPVN5bWJvbCgpLCRzPVN5bWJvbCgpLEFuPVN5bWJvbCgicm9vdCIpLGVuPVN5bWJvbCgpLHRuPVN5bWJvbCgpLGFuPVN5bWJvbCgpLHJuPVN5bWJvbCgpLHNuPVN5bWJvbCgpLG5uPVN5bWJvbCgpLG9uPVN5bWJvbCgpLGduPVN5bWJvbCgpLEluPVN5bWJvbCgpLGNuPVN5bWJvbCgpLENuPVN5bWJvbCgpLGhuPVN5bWJvbCgidWlkIiksbG49U3ltYm9sKCksQm49e2NvbmZpZzp7aWQ6MCxjaGVjazplPT5lLnN0YXJ0c1dpdGgoImh0dHA6Ly93d3cueGZhLm9yZy9zY2hlbWEveGNpLyIpfSxjb25uZWN0aW9uU2V0OntpZDoxLGNoZWNrOmU9PmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtY29ubmVjdGlvbi1zZXQvIil9LGRhdGFzZXRzOntpZDoyLGNoZWNrOmU9PmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtZGF0YS8iKX0sZm9ybTp7aWQ6MyxjaGVjazplPT5lLnN0YXJ0c1dpdGgoImh0dHA6Ly93d3cueGZhLm9yZy9zY2hlbWEveGZhLWZvcm0vIil9LGxvY2FsZVNldDp7aWQ6NCxjaGVjazplPT5lLnN0YXJ0c1dpdGgoImh0dHA6Ly93d3cueGZhLm9yZy9zY2hlbWEveGZhLWxvY2FsZS1zZXQvIil9LHBkZjp7aWQ6NSxjaGVjazplPT4iaHR0cDovL25zLmFkb2JlLmNvbS94ZHAvcGRmLyI9PT1lfSxzaWduYXR1cmU6e2lkOjYsY2hlY2s6ZT0+Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPT09ZX0sc291cmNlU2V0OntpZDo3LGNoZWNrOmU9PmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtc291cmNlLXNldC8iKX0sc3R5bGVzaGVldDp7aWQ6OCxjaGVjazplPT4iaHR0cDovL3d3dy53My5vcmcvMTk5OS9YU0wvVHJhbnNmb3JtIj09PWV9LHRlbXBsYXRlOntpZDo5LGNoZWNrOmU9PmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtdGVtcGxhdGUvIil9LHhkYzp7aWQ6MTAsY2hlY2s6ZT0+ZS5zdGFydHNXaXRoKCJodHRwOi8vd3d3LnhmYS5vcmcvc2NoZW1hL3hkYy8iKX0seGRwOntpZDoxMSxjaGVjazplPT4iaHR0cDovL25zLmFkb2JlLmNvbS94ZHAvIj09PWV9LHhmZGY6e2lkOjEyLGNoZWNrOmU9PiJodHRwOi8vbnMuYWRvYmUuY29tL3hmZGYvIj09PWV9LHhodG1sOntpZDoxMyxjaGVjazplPT4iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI9PT1lfSx4bXBtZXRhOntpZDoxNCxjaGVjazplPT4iaHR0cDovL25zLmFkb2JlLmNvbS94bXBtZXRhLyI9PT1lfX0sUW49e3B0OmU9PmUsY206ZT0+ZS8yLjU0KjcyLG1tOmU9PmUvMjUuNCo3MixpbjplPT43MiplLHB4OmU9PmV9LEVuPS8oWystXT9cZCtcLj9cZCopKC4qKS87ZnVuY3Rpb24gc3RyaXBRdW90ZXMoZSl7cmV0dXJuIGUuc3RhcnRzV2l0aCgiJyIpfHxlLnN0YXJ0c1dpdGgoJyInKT9lLnNsaWNlKDEsLTEpOmV9ZnVuY3Rpb24gZ2V0SW50ZWdlcih7ZGF0YTplLGRlZmF1bHRWYWx1ZTp0LHZhbGlkYXRlOml9KXtpZighZSlyZXR1cm4gdDtlPWUudHJpbSgpO2NvbnN0IGE9cGFyc2VJbnQoZSwxMCk7cmV0dXJuIWlzTmFOKGEpJiZpKGEpP2E6dH1mdW5jdGlvbiBnZXRGbG9hdCh7ZGF0YTplLGRlZmF1bHRWYWx1ZTp0LHZhbGlkYXRlOml9KXtpZighZSlyZXR1cm4gdDtlPWUudHJpbSgpO2NvbnN0IGE9cGFyc2VGbG9hdChlKTtyZXR1cm4haXNOYU4oYSkmJmkoYSk/YTp0fWZ1bmN0aW9uIGdldEtleXdvcmQoe2RhdGE6ZSxkZWZhdWx0VmFsdWU6dCx2YWxpZGF0ZTppfSl7cmV0dXJuIGUmJmkoZT1lLnRyaW0oKSk/ZTp0fWZ1bmN0aW9uIGdldFN0cmluZ09wdGlvbihlLHQpe3JldHVybiBnZXRLZXl3b3JkKHtkYXRhOmUsZGVmYXVsdFZhbHVlOnRbMF0sdmFsaWRhdGU6ZT0+dC5pbmNsdWRlcyhlKX0pfWZ1bmN0aW9uIGdldE1lYXN1cmVtZW50KGUsdD0iMCIpe3R8fD0iMCI7aWYoIWUpcmV0dXJuIGdldE1lYXN1cmVtZW50KHQpO2NvbnN0IGk9ZS50cmltKCkubWF0Y2goRW4pO2lmKCFpKXJldHVybiBnZXRNZWFzdXJlbWVudCh0KTtjb25zdFssYSxyXT1pLHM9cGFyc2VGbG9hdChhKTtpZihpc05hTihzKSlyZXR1cm4gZ2V0TWVhc3VyZW1lbnQodCk7aWYoMD09PXMpcmV0dXJuIDA7Y29uc3Qgbj1RbltyXTtyZXR1cm4gbj9uKHMpOnN9ZnVuY3Rpb24gZ2V0UmF0aW8oZSl7aWYoIWUpcmV0dXJue251bToxLGRlbjoxfTtjb25zdCB0PWUudHJpbSgpLnNwbGl0KC9ccyo6XHMqLykubWFwKChlPT5wYXJzZUZsb2F0KGUpKSkuZmlsdGVyKChlPT4haXNOYU4oZSkpKTsxPT09dC5sZW5ndGgmJnQucHVzaCgxKTtpZigwPT09dC5sZW5ndGgpcmV0dXJue251bToxLGRlbjoxfTtjb25zdFtpLGFdPXQ7cmV0dXJue251bTppLGRlbjphfX1mdW5jdGlvbiBnZXRSZWxldmFudChlKXtyZXR1cm4gZT9lLnRyaW0oKS5zcGxpdCgvXHMrLykubWFwKChlPT4oe2V4Y2x1ZGVkOiItIj09PWVbMF0sdmlld25hbWU6ZS5zdWJzdHJpbmcoMSl9KSkpOltdfWNsYXNzIEhUTUxSZXN1bHR7c3RhdGljIGdldCBGQUlMVVJFKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJGQUlMVVJFIixuZXcgSFRNTFJlc3VsdCghMSxudWxsLG51bGwsbnVsbCkpfXN0YXRpYyBnZXQgRU1QVFkoKXtyZXR1cm4gc2hhZG93KHRoaXMsIkVNUFRZIixuZXcgSFRNTFJlc3VsdCghMCxudWxsLG51bGwsbnVsbCkpfWNvbnN0cnVjdG9yKGUsdCxpLGEpe3RoaXMuc3VjY2Vzcz1lO3RoaXMuaHRtbD10O3RoaXMuYmJveD1pO3RoaXMuYnJlYWtOb2RlPWF9aXNCcmVhaygpe3JldHVybiEhdGhpcy5icmVha05vZGV9c3RhdGljIGJyZWFrTm9kZShlKXtyZXR1cm4gbmV3IEhUTUxSZXN1bHQoITEsbnVsbCxudWxsLGUpfXN0YXRpYyBzdWNjZXNzKGUsdD1udWxsKXtyZXR1cm4gbmV3IEhUTUxSZXN1bHQoITAsZSx0LG51bGwpfX1jbGFzcyBGb250RmluZGVye2NvbnN0cnVjdG9yKGUpe3RoaXMuZm9udHM9bmV3IE1hcDt0aGlzLmNhY2hlPW5ldyBNYXA7dGhpcy53YXJuZWQ9bmV3IFNldDt0aGlzLmRlZmF1bHRGb250PW51bGw7dGhpcy5hZGQoZSl9YWRkKGUsdD1udWxsKXtmb3IoY29uc3QgdCBvZiBlKXRoaXMuYWRkUGRmRm9udCh0KTtmb3IoY29uc3QgZSBvZiB0aGlzLmZvbnRzLnZhbHVlcygpKWUucmVndWxhcnx8KGUucmVndWxhcj1lLml0YWxpY3x8ZS5ib2xkfHxlLmJvbGRpdGFsaWMpO2lmKCF0fHwwPT09dC5zaXplKXJldHVybjtjb25zdCBpPXRoaXMuZm9udHMuZ2V0KCJQZGZKUy1GYWxsYmFjay1QZGZKUy1YRkEiKTtmb3IoY29uc3QgZSBvZiB0KXRoaXMuZm9udHMuc2V0KGUsaSl9YWRkUGRmRm9udChlKXtjb25zdCB0PWUuY3NzRm9udEluZm8saT10LmZvbnRGYW1pbHk7bGV0IGE9dGhpcy5mb250cy5nZXQoaSk7aWYoIWEpe2E9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLmZvbnRzLnNldChpLGEpO3RoaXMuZGVmYXVsdEZvbnR8fCh0aGlzLmRlZmF1bHRGb250PWEpfWxldCByPSIiO2NvbnN0IHM9cGFyc2VGbG9hdCh0LmZvbnRXZWlnaHQpOzAhPT1wYXJzZUZsb2F0KHQuaXRhbGljQW5nbGUpP3I9cz49NzAwPyJib2xkaXRhbGljIjoiaXRhbGljIjpzPj03MDAmJihyPSJib2xkIik7aWYoIXIpeyhlLm5hbWUuaW5jbHVkZXMoIkJvbGQiKXx8ZS5wc05hbWU/LmluY2x1ZGVzKCJCb2xkIikpJiYocj0iYm9sZCIpOyhlLm5hbWUuaW5jbHVkZXMoIkl0YWxpYyIpfHxlLm5hbWUuZW5kc1dpdGgoIkl0Iil8fGUucHNOYW1lPy5pbmNsdWRlcygiSXRhbGljIil8fGUucHNOYW1lPy5lbmRzV2l0aCgiSXQiKSkmJihyKz0iaXRhbGljIil9cnx8KHI9InJlZ3VsYXIiKTthW3JdPWV9Z2V0RGVmYXVsdCgpe3JldHVybiB0aGlzLmRlZmF1bHRGb250fWZpbmQoZSx0PSEwKXtsZXQgaT10aGlzLmZvbnRzLmdldChlKXx8dGhpcy5jYWNoZS5nZXQoZSk7aWYoaSlyZXR1cm4gaTtjb25zdCBhPS8sfC18X3wgfGJvbGRpdGFsaWN8Ym9sZHxpdGFsaWN8cmVndWxhcnxpdC9naTtsZXQgcj1lLnJlcGxhY2VBbGwoYSwiIik7aT10aGlzLmZvbnRzLmdldChyKTtpZihpKXt0aGlzLmNhY2hlLnNldChlLGkpO3JldHVybiBpfXI9ci50b0xvd2VyQ2FzZSgpO2NvbnN0IHM9W107Zm9yKGNvbnN0W2UsdF1vZiB0aGlzLmZvbnRzLmVudHJpZXMoKSllLnJlcGxhY2VBbGwoYSwiIikudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKHIpJiZzLnB1c2godCk7aWYoMD09PXMubGVuZ3RoKWZvcihjb25zdFssZV1vZiB0aGlzLmZvbnRzLmVudHJpZXMoKSllLnJlZ3VsYXIubmFtZT8ucmVwbGFjZUFsbChhLCIiKS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgocikmJnMucHVzaChlKTtpZigwPT09cy5sZW5ndGgpe3I9ci5yZXBsYWNlQWxsKC9wc210fG10L2dpLCIiKTtmb3IoY29uc3RbZSx0XW9mIHRoaXMuZm9udHMuZW50cmllcygpKWUucmVwbGFjZUFsbChhLCIiKS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgocikmJnMucHVzaCh0KX1pZigwPT09cy5sZW5ndGgpZm9yKGNvbnN0IGUgb2YgdGhpcy5mb250cy52YWx1ZXMoKSllLnJlZ3VsYXIubmFtZT8ucmVwbGFjZUFsbChhLCIiKS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgocikmJnMucHVzaChlKTtpZihzLmxlbmd0aD49MSl7MSE9PXMubGVuZ3RoJiZ0JiZ3YXJuKGBYRkEgLSBUb28gbWFueSBjaG9pY2VzIHRvIGd1ZXNzIHRoZSBjb3JyZWN0IGZvbnQ6ICR7ZX1gKTt0aGlzLmNhY2hlLnNldChlLHNbMF0pO3JldHVybiBzWzBdfWlmKHQmJiF0aGlzLndhcm5lZC5oYXMoZSkpe3RoaXMud2FybmVkLmFkZChlKTt3YXJuKGBYRkEgLSBDYW5ub3QgZmluZCB0aGUgZm9udDogJHtlfWApfXJldHVybiBudWxsfX1mdW5jdGlvbiBzZWxlY3RGb250KGUsdCl7cmV0dXJuIml0YWxpYyI9PT1lLnBvc3R1cmU/ImJvbGQiPT09ZS53ZWlnaHQ/dC5ib2xkaXRhbGljOnQuaXRhbGljOiJib2xkIj09PWUud2VpZ2h0P3QuYm9sZDp0LnJlZ3VsYXJ9Y2xhc3MgRm9udEluZm97Y29uc3RydWN0b3IoZSx0LGksYSl7dGhpcy5saW5lSGVpZ2h0PWk7dGhpcy5wYXJhTWFyZ2luPXR8fHt0b3A6MCxib3R0b206MCxsZWZ0OjAscmlnaHQ6MH07aWYoIWUpe1t0aGlzLnBkZkZvbnQsdGhpcy54ZmFGb250XT10aGlzLmRlZmF1bHRGb250KGEpO3JldHVybn10aGlzLnhmYUZvbnQ9e3R5cGVmYWNlOmUudHlwZWZhY2UscG9zdHVyZTplLnBvc3R1cmUsd2VpZ2h0OmUud2VpZ2h0LHNpemU6ZS5zaXplLGxldHRlclNwYWNpbmc6ZS5sZXR0ZXJTcGFjaW5nfTtjb25zdCByPWEuZmluZChlLnR5cGVmYWNlKTtpZihyKXt0aGlzLnBkZkZvbnQ9c2VsZWN0Rm9udChlLHIpO3RoaXMucGRmRm9udHx8KFt0aGlzLnBkZkZvbnQsdGhpcy54ZmFGb250XT10aGlzLmRlZmF1bHRGb250KGEpKX1lbHNlW3RoaXMucGRmRm9udCx0aGlzLnhmYUZvbnRdPXRoaXMuZGVmYXVsdEZvbnQoYSl9ZGVmYXVsdEZvbnQoZSl7Y29uc3QgdD1lLmZpbmQoIkhlbHZldGljYSIsITEpfHxlLmZpbmQoIk15cmlhZCBQcm8iLCExKXx8ZS5maW5kKCJBcmlhbCIsITEpfHxlLmdldERlZmF1bHQoKTtpZih0Py5yZWd1bGFyKXtjb25zdCBlPXQucmVndWxhcjtyZXR1cm5bZSx7dHlwZWZhY2U6ZS5jc3NGb250SW5mby5mb250RmFtaWx5LHBvc3R1cmU6Im5vcm1hbCIsd2VpZ2h0OiJub3JtYWwiLHNpemU6MTAsbGV0dGVyU3BhY2luZzowfV19cmV0dXJuW251bGwse3R5cGVmYWNlOiJDb3VyaWVyIixwb3N0dXJlOiJub3JtYWwiLHdlaWdodDoibm9ybWFsIixzaXplOjEwLGxldHRlclNwYWNpbmc6MH1dfX1jbGFzcyBGb250U2VsZWN0b3J7Y29uc3RydWN0b3IoZSx0LGksYSl7dGhpcy5mb250RmluZGVyPWE7dGhpcy5zdGFjaz1bbmV3IEZvbnRJbmZvKGUsdCxpLGEpXX1wdXNoRGF0YShlLHQsaSl7Y29uc3QgYT10aGlzLnN0YWNrLmF0KC0xKTtmb3IoY29uc3QgdCBvZlsidHlwZWZhY2UiLCJwb3N0dXJlIiwid2VpZ2h0Iiwic2l6ZSIsImxldHRlclNwYWNpbmciXSllW3RdfHwoZVt0XT1hLnhmYUZvbnRbdF0pO2Zvcihjb25zdCBlIG9mWyJ0b3AiLCJib3R0b20iLCJsZWZ0IiwicmlnaHQiXSlpc05hTih0W2VdKSYmKHRbZV09YS5wYXJhTWFyZ2luW2VdKTtjb25zdCByPW5ldyBGb250SW5mbyhlLHQsaXx8YS5saW5lSGVpZ2h0LHRoaXMuZm9udEZpbmRlcik7ci5wZGZGb250fHwoci5wZGZGb250PWEucGRmRm9udCk7dGhpcy5zdGFjay5wdXNoKHIpfXBvcEZvbnQoKXt0aGlzLnN0YWNrLnBvcCgpfXRvcEZvbnQoKXtyZXR1cm4gdGhpcy5zdGFjay5hdCgtMSl9fWNsYXNzIFRleHRNZWFzdXJle2NvbnN0cnVjdG9yKGUsdCxpLGEpe3RoaXMuZ2x5cGhzPVtdO3RoaXMuZm9udFNlbGVjdG9yPW5ldyBGb250U2VsZWN0b3IoZSx0LGksYSk7dGhpcy5leHRyYUhlaWdodD0wfXB1c2hEYXRhKGUsdCxpKXt0aGlzLmZvbnRTZWxlY3Rvci5wdXNoRGF0YShlLHQsaSl9cG9wRm9udChlKXtyZXR1cm4gdGhpcy5mb250U2VsZWN0b3IucG9wRm9udCgpfWFkZFBhcmEoKXtjb25zdCBlPXRoaXMuZm9udFNlbGVjdG9yLnRvcEZvbnQoKTt0aGlzLmV4dHJhSGVpZ2h0Kz1lLnBhcmFNYXJnaW4udG9wK2UucGFyYU1hcmdpbi5ib3R0b219YWRkU3RyaW5nKGUpe2lmKCFlKXJldHVybjtjb25zdCB0PXRoaXMuZm9udFNlbGVjdG9yLnRvcEZvbnQoKSxpPXQueGZhRm9udC5zaXplO2lmKHQucGRmRm9udCl7Y29uc3QgYT10LnhmYUZvbnQubGV0dGVyU3BhY2luZyxyPXQucGRmRm9udCxzPXIubGluZUhlaWdodHx8MS4yLG49dC5saW5lSGVpZ2h0fHxNYXRoLm1heCgxLjIscykqaSxvPXMtKHZvaWQgMD09PXIubGluZUdhcD8uMjpyLmxpbmVHYXApLGc9TWF0aC5tYXgoMSxvKSppLGM9aS8xZTMsQz1yLmRlZmF1bHRXaWR0aHx8ci5jaGFyc1RvR2x5cGhzKCIgIilbMF0ud2lkdGg7Zm9yKGNvbnN0IHQgb2YgZS5zcGxpdCgvW1x1MjAyOVxuXS8pKXtjb25zdCBlPXIuZW5jb2RlU3RyaW5nKHQpLmpvaW4oIiIpLGk9ci5jaGFyc1RvR2x5cGhzKGUpO2Zvcihjb25zdCBlIG9mIGkpe2NvbnN0IHQ9ZS53aWR0aHx8Qzt0aGlzLmdseXBocy5wdXNoKFt0KmMrYSxuLGcsZS51bmljb2RlLCExXSl9dGhpcy5nbHlwaHMucHVzaChbMCwwLDAsIlxuIiwhMF0pfXRoaXMuZ2x5cGhzLnBvcCgpfWVsc2V7Zm9yKGNvbnN0IHQgb2YgZS5zcGxpdCgvW1x1MjAyOVxuXS8pKXtmb3IoY29uc3QgZSBvZiB0LnNwbGl0KCIiKSl0aGlzLmdseXBocy5wdXNoKFtpLDEuMippLGksZSwhMV0pO3RoaXMuZ2x5cGhzLnB1c2goWzAsMCwwLCJcbiIsITBdKX10aGlzLmdseXBocy5wb3AoKX19Y29tcHV0ZShlKXtsZXQgdD0tMSxpPTAsYT0wLHI9MCxzPTAsbj0wLG89ITEsZz0hMDtmb3IobGV0IGM9MCxDPXRoaXMuZ2x5cGhzLmxlbmd0aDtjPEM7YysrKXtjb25zdFtDLGgsbCxRLEVdPXRoaXMuZ2x5cGhzW2NdLHU9IiAiPT09USxkPWc/bDpoO2lmKEUpe2E9TWF0aC5tYXgoYSxzKTtzPTA7cis9bjtuPWQ7dD0tMTtpPTA7Zz0hMX1lbHNlIGlmKHUpaWYocytDPmUpe2E9TWF0aC5tYXgoYSxzKTtzPTA7cis9bjtuPWQ7dD0tMTtpPTA7bz0hMDtnPSExfWVsc2V7bj1NYXRoLm1heChkLG4pO2k9cztzKz1DO3Q9Y31lbHNlIGlmKHMrQz5lKXtyKz1uO249ZDtpZigtMSE9PXQpe2M9dDthPU1hdGgubWF4KGEsaSk7cz0wO3Q9LTE7aT0wfWVsc2V7YT1NYXRoLm1heChhLHMpO3M9Q31vPSEwO2c9ITF9ZWxzZXtzKz1DO249TWF0aC5tYXgoZCxuKX19YT1NYXRoLm1heChhLHMpO3IrPW4rdGhpcy5leHRyYUhlaWdodDtyZXR1cm57d2lkdGg6MS4wMiphLGhlaWdodDpyLGlzQnJva2VuOm99fX1jb25zdCB1bj0vXlteLltdKy8sZG49L15bXlxdXSsvLGZuPXtkb3Q6MCxkb3REb3Q6MSxkb3RIYXNoOjIsZG90QnJhY2tldDozLGRvdFBhcmVuOjR9LHBuPW5ldyBNYXAoW1siJGRhdGEiLChlLHQpPT5lLmRhdGFzZXRzP2UuZGF0YXNldHMuZGF0YTplXSxbIiRyZWNvcmQiLChlLHQpPT4oZS5kYXRhc2V0cz9lLmRhdGFzZXRzLmRhdGE6ZSlbbXNdKClbMF1dLFsiJHRlbXBsYXRlIiwoZSx0KT0+ZS50ZW1wbGF0ZV0sWyIkY29ubmVjdGlvblNldCIsKGUsdCk9PmUuY29ubmVjdGlvblNldF0sWyIkZm9ybSIsKGUsdCk9PmUuZm9ybV0sWyIkbGF5b3V0IiwoZSx0KT0+ZS5sYXlvdXRdLFsiJGhvc3QiLChlLHQpPT5lLmhvc3RdLFsiJGRhdGFXaW5kb3ciLChlLHQpPT5lLmRhdGFXaW5kb3ddLFsiJGV2ZW50IiwoZSx0KT0+ZS5ldmVudF0sWyIhIiwoZSx0KT0+ZS5kYXRhc2V0c10sWyIkeGZhIiwoZSx0KT0+ZV0sWyJ4ZmEiLChlLHQpPT5lXSxbIiQiLChlLHQpPT50XV0pLG1uPW5ldyBXZWFrTWFwO2Z1bmN0aW9uIHBhcnNlRXhwcmVzc2lvbihlLHQsaT0hMCl7bGV0IGE9ZS5tYXRjaCh1bik7aWYoIWEpcmV0dXJuIG51bGw7bGV0W3JdPWE7Y29uc3Qgcz1be25hbWU6cixjYWNoZU5hbWU6Ii4iK3IsaW5kZXg6MCxqczpudWxsLGZvcm1DYWxjOm51bGwsb3BlcmF0b3I6Zm4uZG90fV07bGV0IG49ci5sZW5ndGg7Zm9yKDtuPGUubGVuZ3RoOyl7Y29uc3QgZz1uO2lmKCJbIj09PWUuY2hhckF0KG4rKykpe2E9ZS5zbGljZShuKS5tYXRjaChkbik7aWYoIWEpe3dhcm4oIlhGQSAtIEludmFsaWQgaW5kZXggaW4gU09NIGV4cHJlc3Npb24iKTtyZXR1cm4gbnVsbH1zLmF0KC0xKS5pbmRleD0iKiI9PT0obz0obz1hWzBdKS50cmltKCkpPzEvMDpwYXJzZUludChvLDEwKXx8MDtuKz1hWzBdLmxlbmd0aCsxO2NvbnRpbnVlfWxldCBjO3N3aXRjaChlLmNoYXJBdChuKSl7Y2FzZSIuIjppZighdClyZXR1cm4gbnVsbDtuKys7Yz1mbi5kb3REb3Q7YnJlYWs7Y2FzZSIjIjpuKys7Yz1mbi5kb3RIYXNoO2JyZWFrO2Nhc2UiWyI6aWYoaSl7d2FybigiWEZBIC0gU09NIGV4cHJlc3Npb24gY29udGFpbnMgYSBGb3JtQ2FsYyBzdWJleHByZXNzaW9uIHdoaWNoIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIG5vdy4iKTtyZXR1cm4gbnVsbH1jPWZuLmRvdEJyYWNrZXQ7YnJlYWs7Y2FzZSIoIjppZihpKXt3YXJuKCJYRkEgLSBTT00gZXhwcmVzc2lvbiBjb250YWlucyBhIEphdmFTY3JpcHQgc3ViZXhwcmVzc2lvbiB3aGljaCBpcyBub3Qgc3VwcG9ydGVkIGZvciBub3cuIik7cmV0dXJuIG51bGx9Yz1mbi5kb3RQYXJlbjticmVhaztkZWZhdWx0OmM9Zm4uZG90fWE9ZS5zbGljZShuKS5tYXRjaCh1bik7aWYoIWEpYnJlYWs7W3JdPWE7bis9ci5sZW5ndGg7cy5wdXNoKHtuYW1lOnIsY2FjaGVOYW1lOmUuc2xpY2UoZyxuKSxvcGVyYXRvcjpjLGluZGV4OjAsanM6bnVsbCxmb3JtQ2FsYzpudWxsfSl9dmFyIG87cmV0dXJuIHN9ZnVuY3Rpb24gc2VhcmNoTm9kZShlLHQsaSxhPSEwLHI9ITApe2NvbnN0IHM9cGFyc2VFeHByZXNzaW9uKGksYSk7aWYoIXMpcmV0dXJuIG51bGw7Y29uc3Qgbj1wbi5nZXQoc1swXS5uYW1lKTtsZXQgbyxnPTA7aWYobil7bz0hMDtlPVtuKGUsdCldO2c9MX1lbHNle289bnVsbD09PXQ7ZT1bdHx8ZV19Zm9yKGxldCBpPXMubGVuZ3RoO2c8aTtnKyspe2NvbnN0e25hbWU6aSxjYWNoZU5hbWU6YSxvcGVyYXRvcjpuLGluZGV4OmN9PXNbZ10sQz1bXTtmb3IoY29uc3QgdCBvZiBlKXtpZighdC5pc1hGQU9iamVjdCljb250aW51ZTtsZXQgZSxzO2lmKHIpe3M9bW4uZ2V0KHQpO2lmKCFzKXtzPW5ldyBNYXA7bW4uc2V0KHQscyl9ZT1zLmdldChhKX1pZighZSl7c3dpdGNoKG4pe2Nhc2UgZm4uZG90OmU9dFtFc10oaSwhMSk7YnJlYWs7Y2FzZSBmbi5kb3REb3Q6ZT10W0VzXShpLCEwKTticmVhaztjYXNlIGZuLmRvdEhhc2g6ZT10W1FzXShpKTtlPWUuaXNYRkFPYmplY3RBcnJheT9lLmNoaWxkcmVuOltlXX1yJiZzLnNldChhLGUpfWUubGVuZ3RoPjAmJkMucHVzaChlKX1pZigwIT09Qy5sZW5ndGh8fG98fDAhPT1nKWU9aXNGaW5pdGUoYyk/Qy5maWx0ZXIoKGU9PmM8ZS5sZW5ndGgpKS5tYXAoKGU9PmVbY10pKTpDLmZsYXQoKTtlbHNle2NvbnN0IGk9dFtEc10oKTtpZighKHQ9aSkpcmV0dXJuIG51bGw7Zz0tMTtlPVt0XX19cmV0dXJuIDA9PT1lLmxlbmd0aD9udWxsOmV9ZnVuY3Rpb24gY3JlYXRlRGF0YU5vZGUoZSx0LGkpe2NvbnN0IGE9cGFyc2VFeHByZXNzaW9uKGkpO2lmKCFhKXJldHVybiBudWxsO2lmKGEuc29tZSgoZT0+ZS5vcGVyYXRvcj09PWZuLmRvdERvdCkpKXJldHVybiBudWxsO2NvbnN0IHI9cG4uZ2V0KGFbMF0ubmFtZSk7bGV0IHM9MDtpZihyKXtlPXIoZSx0KTtzPTF9ZWxzZSBlPXR8fGU7Zm9yKGxldCB0PWEubGVuZ3RoO3M8dDtzKyspe2NvbnN0e25hbWU6dCxvcGVyYXRvcjppLGluZGV4OnJ9PWFbc107aWYoIWlzRmluaXRlKHIpKXthW3NdLmluZGV4PTA7cmV0dXJuIGUuY3JlYXRlTm9kZXMoYS5zbGljZShzKSl9bGV0IG47c3dpdGNoKGkpe2Nhc2UgZm4uZG90Om49ZVtFc10odCwhMSk7YnJlYWs7Y2FzZSBmbi5kb3REb3Q6bj1lW0VzXSh0LCEwKTticmVhaztjYXNlIGZuLmRvdEhhc2g6bj1lW1FzXSh0KTtuPW4uaXNYRkFPYmplY3RBcnJheT9uLmNoaWxkcmVuOltuXX1pZigwPT09bi5sZW5ndGgpcmV0dXJuIGUuY3JlYXRlTm9kZXMoYS5zbGljZShzKSk7aWYoIShyPG4ubGVuZ3RoKSl7YVtzXS5pbmRleD1yLW4ubGVuZ3RoO3JldHVybiBlLmNyZWF0ZU5vZGVzKGEuc2xpY2UocykpfXtjb25zdCB0PW5bcl07aWYoIXQuaXNYRkFPYmplY3Qpe3dhcm4oIlhGQSAtIENhbm5vdCBjcmVhdGUgYSBub2RlLiIpO3JldHVybiBudWxsfWU9dH19cmV0dXJuIG51bGx9Y29uc3QgeW49U3ltYm9sKCksd249U3ltYm9sKCksYm49U3ltYm9sKCksRG49U3ltYm9sKCJfY2hpbGRyZW4iKSxGbj1TeW1ib2woKSxTbj1TeW1ib2woKSxrbj1TeW1ib2woKSxSbj1TeW1ib2woKSxObj1TeW1ib2woKSxHbj1TeW1ib2woKSx4bj1TeW1ib2woKSxVbj1TeW1ib2woKSxNbj1TeW1ib2woKSxMbj1TeW1ib2woInBhcmVudCIpLEhuPVN5bWJvbCgpLEpuPVN5bWJvbCgpLHZuPVN5bWJvbCgpO2xldCBZbj0wO2NvbnN0IFRuPUJuLmRhdGFzZXRzLmlkO2NsYXNzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlLHQsaT0hMSl7dGhpc1txc109ZTt0aGlzW09zXT10O3RoaXNbeG5dPWk7dGhpc1tMbl09bnVsbDt0aGlzW0RuXT1bXTt0aGlzW2huXT1gJHt0fSR7WW4rK31gO3RoaXNbU3NdPW51bGx9Z2V0IGlzWEZBT2JqZWN0KCl7cmV0dXJuITB9Z2V0IGlzWEZBT2JqZWN0QXJyYXkoKXtyZXR1cm4hMX1jcmVhdGVOb2RlcyhlKXtsZXQgdD10aGlzLGk9bnVsbDtmb3IoY29uc3R7bmFtZTphLGluZGV4OnJ9b2YgZSl7Zm9yKGxldCBlPTAscz1pc0Zpbml0ZShyKT9yOjA7ZTw9cztlKyspe2NvbnN0IGU9dFtxc109PT1Ubj8tMTp0W3FzXTtpPW5ldyBYbWxPYmplY3QoZSxhKTt0W0FzXShpKX10PWl9cmV0dXJuIGl9W2pzXShlKXtpZighdGhpc1t4bl18fCF0aGlzW1hzXShlKSlyZXR1cm4hMTtjb25zdCB0PWVbT3NdLGk9dGhpc1t0XTtpZighKGkgaW5zdGFuY2VvZiBYRkFPYmplY3RBcnJheSkpe251bGwhPT1pJiZ0aGlzWyRzXShpKTt0aGlzW3RdPWU7dGhpc1tBc10oZSk7cmV0dXJuITB9aWYoaS5wdXNoKGUpKXt0aGlzW0FzXShlKTtyZXR1cm4hMH1sZXQgYT0iIjt0aGlzLmlkP2E9YCAoaWQ6ICR7dGhpcy5pZH0pYDp0aGlzLm5hbWUmJihhPWAgKG5hbWU6ICR7dGhpcy5uYW1lfSAke3RoaXMuaC52YWx1ZX0pYCk7d2FybihgWEZBIC0gbm9kZSAiJHt0aGlzW09zXX0iJHthfSBoYXMgYWxyZWFkeSBlbm91Z2ggIiR7dH0iIWApO3JldHVybiExfVtYc10oZSl7cmV0dXJuIHRoaXMuaGFzT3duUHJvcGVydHkoZVtPc10pJiZlW3FzXT09PXRoaXNbcXNdfVtIc10oKXtyZXR1cm4hMX1benJdKCl7cmV0dXJuITF9W3hzXSgpe3JldHVybiExfVtVc10oKXtyZXR1cm4hMX1bX3NdKCl7dGhpcy5wYXJhJiZ0aGlzW0ZzXSgpW0lzXS5wYXJhU3RhY2sucG9wKCl9W3pzXSgpe3RoaXNbRnNdKClbSXNdLnBhcmFTdGFjay5wdXNoKHRoaXMucGFyYSl9W2FuXShlKXt0aGlzLmlkJiZ0aGlzW3FzXT09PUJuLnRlbXBsYXRlLmlkJiZlLnNldCh0aGlzLmlkLHRoaXMpfVtGc10oKXtyZXR1cm4gdGhpc1tTc10udGVtcGxhdGV9W0pzXSgpe3JldHVybiExfVt2c10oKXtyZXR1cm4hMX1bQXNdKGUpe2VbTG5dPXRoaXM7dGhpc1tEbl0ucHVzaChlKTshZVtTc10mJnRoaXNbU3NdJiYoZVtTc109dGhpc1tTc10pfVskc10oZSl7Y29uc3QgdD10aGlzW0RuXS5pbmRleE9mKGUpO3RoaXNbRG5dLnNwbGljZSh0LDEpfVtrc10oKXtyZXR1cm4gdGhpcy5oYXNPd25Qcm9wZXJ0eSgidmFsdWUiKX1bc25dKGUpe31bWnNdKGUpe31bY3NdKCl7fVt0c10oZSl7ZGVsZXRlIHRoaXNbeG5dO2lmKHRoaXNbYXNdKXtlLmNsZWFuKHRoaXNbYXNdKTtkZWxldGUgdGhpc1thc119fVtOc10oZSl7cmV0dXJuIHRoaXNbRG5dLmluZGV4T2YoZSl9W0dzXShlLHQpe3RbTG5dPXRoaXM7dGhpc1tEbl0uc3BsaWNlKGUsMCx0KTshdFtTc10mJnRoaXNbU3NdJiYodFtTc109dGhpc1tTc10pfVtZc10oKXtyZXR1cm4hdGhpcy5uYW1lfVtLc10oKXtyZXR1cm4iIn1bb25dKCl7cmV0dXJuIDA9PT10aGlzW0RuXS5sZW5ndGg/dGhpc1tuc106dGhpc1tEbl0ubWFwKChlPT5lW29uXSgpKSkuam9pbigiIil9Z2V0W2JuXSgpe2NvbnN0IGU9T2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpO2lmKCFlLl9hdHRyaWJ1dGVzKXtjb25zdCB0PWUuX2F0dHJpYnV0ZXM9bmV3IFNldDtmb3IoY29uc3QgZSBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSl7aWYobnVsbD09PXRoaXNbZV18fHRoaXNbZV1pbnN0YW5jZW9mIFhGQU9iamVjdHx8dGhpc1tlXWluc3RhbmNlb2YgWEZBT2JqZWN0QXJyYXkpYnJlYWs7dC5hZGQoZSl9fXJldHVybiBzaGFkb3codGhpcyxibixlLl9hdHRyaWJ1dGVzKX1bTHNdKGUpe2xldCB0PXRoaXM7Zm9yKDt0Oyl7aWYodD09PWUpcmV0dXJuITA7dD10W0RzXSgpfXJldHVybiExfVtEc10oKXtyZXR1cm4gdGhpc1tMbl19W2JzXSgpe3JldHVybiB0aGlzW0RzXSgpfVttc10oZT1udWxsKXtyZXR1cm4gZT90aGlzW2VdOnRoaXNbRG5dfVtnc10oKXtjb25zdCBlPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpc1tuc10mJihlLiRjb250ZW50PXRoaXNbbnNdKTtmb3IoY29uc3QgdCBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSl7Y29uc3QgaT10aGlzW3RdO251bGwhPT1pJiYoaSBpbnN0YW5jZW9mIFhGQU9iamVjdD9lW3RdPWlbZ3NdKCk6aSBpbnN0YW5jZW9mIFhGQU9iamVjdEFycmF5P2kuaXNFbXB0eSgpfHwoZVt0XT1pLmR1bXAoKSk6ZVt0XT1pKX1yZXR1cm4gZX1bQ25dKCl7cmV0dXJuIG51bGx9W0luXSgpe3JldHVybiBIVE1MUmVzdWx0LkVNUFRZfSpbeXNdKCl7Zm9yKGNvbnN0IGUgb2YgdGhpc1ttc10oKSl5aWVsZCBlfSpbUm5dKGUsdCl7Zm9yKGNvbnN0IGkgb2YgdGhpc1t5c10oKSlpZighZXx8dD09PWUuaGFzKGlbT3NdKSl7Y29uc3QgZT10aGlzW0JzXSgpLHQ9aVtJbl0oZSk7dC5zdWNjZXNzfHwodGhpc1tJc10uZmFpbGluZ05vZGU9aSk7eWllbGQgdH19W0NzXSgpe3JldHVybiBudWxsfVskcl0oZSx0KXt0aGlzW0lzXS5jaGlsZHJlbi5wdXNoKGUpfVtCc10oKXt9W2VzXSh7ZmlsdGVyOmU9bnVsbCxpbmNsdWRlOnQ9ITB9KXtpZih0aGlzW0lzXS5nZW5lcmF0b3Ipe2NvbnN0IGU9dGhpc1tCc10oKSx0PXRoaXNbSXNdLmZhaWxpbmdOb2RlW0luXShlKTtpZighdC5zdWNjZXNzKXJldHVybiB0O3QuaHRtbCYmdGhpc1skcl0odC5odG1sLHQuYmJveCk7ZGVsZXRlIHRoaXNbSXNdLmZhaWxpbmdOb2RlfWVsc2UgdGhpc1tJc10uZ2VuZXJhdG9yPXRoaXNbUm5dKGUsdCk7Zm9yKDs7KXtjb25zdCBlPXRoaXNbSXNdLmdlbmVyYXRvci5uZXh0KCk7aWYoZS5kb25lKWJyZWFrO2NvbnN0IHQ9ZS52YWx1ZTtpZighdC5zdWNjZXNzKXJldHVybiB0O3QuaHRtbCYmdGhpc1skcl0odC5odG1sLHQuYmJveCl9dGhpc1tJc10uZ2VuZXJhdG9yPW51bGw7cmV0dXJuIEhUTUxSZXN1bHQuRU1QVFl9W3JuXShlKXt0aGlzW0puXT1uZXcgU2V0KE9iamVjdC5rZXlzKGUpKX1bR25dKGUpe2NvbnN0IHQ9dGhpc1tibl0saT10aGlzW0puXTtyZXR1cm5bLi4uZV0uZmlsdGVyKChlPT50LmhhcyhlKSYmIWkuaGFzKGUpKSl9W2VuXShlLHQ9bmV3IFNldCl7Zm9yKGNvbnN0IGkgb2YgdGhpc1tEbl0paVtIbl0oZSx0KX1bSG5dKGUsdCl7Y29uc3QgaT10aGlzW05uXShlLHQpO2k/dGhpc1t5bl0oaSxlLHQpOnRoaXNbZW5dKGUsdCl9W05uXShlLHQpe2NvbnN0e3VzZTppLHVzZWhyZWY6YX09dGhpcztpZighaSYmIWEpcmV0dXJuIG51bGw7bGV0IHI9bnVsbCxzPW51bGwsbj1udWxsLG89aTtpZihhKXtvPWE7YS5zdGFydHNXaXRoKCIjc29tKCIpJiZhLmVuZHNXaXRoKCIpIik/cz1hLnNsaWNlKDUsLTEpOmEuc3RhcnRzV2l0aCgiLiNzb20oIikmJmEuZW5kc1dpdGgoIikiKT9zPWEuc2xpY2UoNiwtMSk6YS5zdGFydHNXaXRoKCIjIik/bj1hLnNsaWNlKDEpOmEuc3RhcnRzV2l0aCgiLiMiKSYmKG49YS5zbGljZSgyKSl9ZWxzZSBpLnN0YXJ0c1dpdGgoIiMiKT9uPWkuc2xpY2UoMSk6cz1pO3RoaXMudXNlPXRoaXMudXNlaHJlZj0iIjtpZihuKXI9ZS5nZXQobik7ZWxzZXtyPXNlYXJjaE5vZGUoZS5nZXQoQW4pLHRoaXMscywhMCwhMSk7ciYmKHI9clswXSl9aWYoIXIpe3dhcm4oYFhGQSAtIEludmFsaWQgcHJvdG90eXBlIHJlZmVyZW5jZTogJHtvfS5gKTtyZXR1cm4gbnVsbH1pZihyW09zXSE9PXRoaXNbT3NdKXt3YXJuKGBYRkEgLSBJbmNvbXBhdGlibGUgcHJvdG90eXBlOiAke3JbT3NdfSAhPT0gJHt0aGlzW09zXX0uYCk7cmV0dXJuIG51bGx9aWYodC5oYXMocikpe3dhcm4oIlhGQSAtIEN5Y2xlIGRldGVjdGVkIGluIHByb3RvdHlwZXMgdXNlLiIpO3JldHVybiBudWxsfXQuYWRkKHIpO2NvbnN0IGc9cltObl0oZSx0KTtnJiZyW3luXShnLGUsdCk7cltlbl0oZSx0KTt0LmRlbGV0ZShyKTtyZXR1cm4gcn1beW5dKGUsdCxpKXtpZihpLmhhcyhlKSl7d2FybigiWEZBIC0gQ3ljbGUgZGV0ZWN0ZWQgaW4gcHJvdG90eXBlcyB1c2UuIik7cmV0dXJufSF0aGlzW25zXSYmZVtuc10mJih0aGlzW25zXT1lW25zXSk7bmV3IFNldChpKS5hZGQoZSk7Zm9yKGNvbnN0IHQgb2YgdGhpc1tHbl0oZVtKbl0pKXt0aGlzW3RdPWVbdF07dGhpc1tKbl0mJnRoaXNbSm5dLmFkZCh0KX1mb3IoY29uc3QgYSBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSl7aWYodGhpc1tibl0uaGFzKGEpKWNvbnRpbnVlO2NvbnN0IHI9dGhpc1thXSxzPWVbYV07aWYociBpbnN0YW5jZW9mIFhGQU9iamVjdEFycmF5KXtmb3IoY29uc3QgZSBvZiByW0RuXSllW0huXSh0LGkpO2ZvcihsZXQgYT1yW0RuXS5sZW5ndGgsbj1zW0RuXS5sZW5ndGg7YTxuO2ErKyl7Y29uc3Qgcz1lW0RuXVthXVtyc10oKTtpZighci5wdXNoKHMpKWJyZWFrO3NbTG5dPXRoaXM7dGhpc1tEbl0ucHVzaChzKTtzW0huXSh0LGkpfX1lbHNlIGlmKG51bGw9PT1yKXtpZihudWxsIT09cyl7Y29uc3QgZT1zW3JzXSgpO2VbTG5dPXRoaXM7dGhpc1thXT1lO3RoaXNbRG5dLnB1c2goZSk7ZVtIbl0odCxpKX19ZWxzZXtyW2VuXSh0LGkpO3MmJnJbeW5dKHMsdCxpKX19fXN0YXRpY1tGbl0oZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/ZS5tYXAoKGU9PlhGQU9iamVjdFtGbl0oZSkpKToib2JqZWN0Ij09dHlwZW9mIGUmJm51bGwhPT1lP09iamVjdC5hc3NpZ24oe30sZSk6ZX1bcnNdKCl7Y29uc3QgZT1PYmplY3QuY3JlYXRlKE9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKSk7Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh0aGlzKSl0cnl7ZVt0XT10aGlzW3RdfWNhdGNoe3NoYWRvdyhlLHQsdGhpc1t0XSl9ZVtobl09YCR7ZVtPc119JHtZbisrfWA7ZVtEbl09W107Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2lmKHRoaXNbYm5dLmhhcyh0KSl7ZVt0XT1YRkFPYmplY3RbRm5dKHRoaXNbdF0pO2NvbnRpbnVlfWNvbnN0IGk9dGhpc1t0XTtlW3RdPWkgaW5zdGFuY2VvZiBYRkFPYmplY3RBcnJheT9uZXcgWEZBT2JqZWN0QXJyYXkoaVtVbl0pOm51bGx9Zm9yKGNvbnN0IHQgb2YgdGhpc1tEbl0pe2NvbnN0IGk9dFtPc10sYT10W3JzXSgpO2VbRG5dLnB1c2goYSk7YVtMbl09ZTtudWxsPT09ZVtpXT9lW2ldPWE6ZVtpXVtEbl0ucHVzaChhKX1yZXR1cm4gZX1bbXNdKGU9bnVsbCl7cmV0dXJuIGU/dGhpc1tEbl0uZmlsdGVyKCh0PT50W09zXT09PWUpKTp0aGlzW0RuXX1bUXNdKGUpe3JldHVybiB0aGlzW2VdfVtFc10oZSx0LGk9ITApe3JldHVybiBBcnJheS5mcm9tKHRoaXNbdXNdKGUsdCxpKSl9Klt1c10oZSx0LGk9ITApe2lmKCJwYXJlbnQiIT09ZSl7Zm9yKGNvbnN0IGkgb2YgdGhpc1tEbl0pe2lbT3NdPT09ZSYmKHlpZWxkIGkpO2kubmFtZT09PWUmJih5aWVsZCBpKTsodHx8aVtZc10oKSkmJih5aWVsZCppW3VzXShlLHQsITEpKX1pJiZ0aGlzW2JuXS5oYXMoZSkmJih5aWVsZCBuZXcgWEZBQXR0cmlidXRlKHRoaXMsZSx0aGlzW2VdKSl9ZWxzZSB5aWVsZCB0aGlzW0xuXX19Y2xhc3MgWEZBT2JqZWN0QXJyYXl7Y29uc3RydWN0b3IoZT0xLzApe3RoaXNbVW5dPWU7dGhpc1tEbl09W119Z2V0IGlzWEZBT2JqZWN0KCl7cmV0dXJuITF9Z2V0IGlzWEZBT2JqZWN0QXJyYXkoKXtyZXR1cm4hMH1wdXNoKGUpe2lmKHRoaXNbRG5dLmxlbmd0aDw9dGhpc1tVbl0pe3RoaXNbRG5dLnB1c2goZSk7cmV0dXJuITB9d2FybihgWEZBIC0gbm9kZSAiJHtlW09zXX0iIGFjY2VwdHMgbm8gbW9yZSB0aGFuICR7dGhpc1tVbl19IGNoaWxkcmVuYCk7cmV0dXJuITF9aXNFbXB0eSgpe3JldHVybiAwPT09dGhpc1tEbl0ubGVuZ3RofWR1bXAoKXtyZXR1cm4gMT09PXRoaXNbRG5dLmxlbmd0aD90aGlzW0RuXVswXVtnc10oKTp0aGlzW0RuXS5tYXAoKGU9PmVbZ3NdKCkpKX1bcnNdKCl7Y29uc3QgZT1uZXcgWEZBT2JqZWN0QXJyYXkodGhpc1tVbl0pO2VbRG5dPXRoaXNbRG5dLm1hcCgoZT0+ZVtyc10oKSkpO3JldHVybiBlfWdldCBjaGlsZHJlbigpe3JldHVybiB0aGlzW0RuXX1jbGVhcigpe3RoaXNbRG5dLmxlbmd0aD0wfX1jbGFzcyBYRkFBdHRyaWJ1dGV7Y29uc3RydWN0b3IoZSx0LGkpe3RoaXNbTG5dPWU7dGhpc1tPc109dDt0aGlzW25zXT1pO3RoaXNbc3NdPSExO3RoaXNbaG5dPSJhdHRyaWJ1dGUiK1luKyt9W0RzXSgpe3JldHVybiB0aGlzW0xuXX1bTXNdKCl7cmV0dXJuITB9W2RzXSgpe3JldHVybiB0aGlzW25zXS50cmltKCl9W3NuXShlKXtlPWUudmFsdWV8fCIiO3RoaXNbbnNdPWUudG9TdHJpbmcoKX1bb25dKCl7cmV0dXJuIHRoaXNbbnNdfVtMc10oZSl7cmV0dXJuIHRoaXNbTG5dPT09ZXx8dGhpc1tMbl1bTHNdKGUpfX1jbGFzcyBYbWxPYmplY3QgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSx0LGk9e30pe3N1cGVyKGUsdCk7dGhpc1tuc109IiI7dGhpc1tTbl09bnVsbDtpZigiI3RleHQiIT09dCl7Y29uc3QgZT1uZXcgTWFwO3RoaXNbd25dPWU7Zm9yKGNvbnN0W3QsYV1vZiBPYmplY3QuZW50cmllcyhpKSllLnNldCh0LG5ldyBYRkFBdHRyaWJ1dGUodGhpcyx0LGEpKTtpZihpLmhhc093blByb3BlcnR5KFdzKSl7Y29uc3QgZT1pW1dzXS54ZmEuZGF0YU5vZGU7dm9pZCAwIT09ZSYmKCJkYXRhR3JvdXAiPT09ZT90aGlzW1NuXT0hMToiZGF0YVZhbHVlIj09PWUmJih0aGlzW1NuXT0hMCkpfX10aGlzW3NzXT0hMX1bY25dKGUpe2NvbnN0IHQ9dGhpc1tPc107aWYoIiN0ZXh0Ij09PXQpe2UucHVzaChlbmNvZGVUb1htbFN0cmluZyh0aGlzW25zXSkpO3JldHVybn1jb25zdCBpPXV0ZjhTdHJpbmdUb1N0cmluZyh0KSxhPXRoaXNbcXNdPT09VG4/InhmYToiOiIiO2UucHVzaChgPCR7YX0ke2l9YCk7Zm9yKGNvbnN0W3QsaV1vZiB0aGlzW3duXS5lbnRyaWVzKCkpe2NvbnN0IGE9dXRmOFN0cmluZ1RvU3RyaW5nKHQpO2UucHVzaChgICR7YX09IiR7ZW5jb2RlVG9YbWxTdHJpbmcoaVtuc10pfSJgKX1udWxsIT09dGhpc1tTbl0mJih0aGlzW1NuXT9lLnB1c2goJyB4ZmE6ZGF0YU5vZGU9ImRhdGFWYWx1ZSInKTplLnB1c2goJyB4ZmE6ZGF0YU5vZGU9ImRhdGFHcm91cCInKSk7aWYodGhpc1tuc118fDAhPT10aGlzW0RuXS5sZW5ndGgpe2UucHVzaCgiPiIpO2lmKHRoaXNbbnNdKSJzdHJpbmciPT10eXBlb2YgdGhpc1tuc10/ZS5wdXNoKGVuY29kZVRvWG1sU3RyaW5nKHRoaXNbbnNdKSk6dGhpc1tuc11bY25dKGUpO2Vsc2UgZm9yKGNvbnN0IHQgb2YgdGhpc1tEbl0pdFtjbl0oZSk7ZS5wdXNoKGA8LyR7YX0ke2l9PmApfWVsc2UgZS5wdXNoKCIvPiIpfVtqc10oZSl7aWYodGhpc1tuc10pe2NvbnN0IGU9bmV3IFhtbE9iamVjdCh0aGlzW3FzXSwiI3RleHQiKTt0aGlzW0FzXShlKTtlW25zXT10aGlzW25zXTt0aGlzW25zXT0iIn10aGlzW0FzXShlKTtyZXR1cm4hMH1bWnNdKGUpe3RoaXNbbnNdKz1lfVtjc10oKXtpZih0aGlzW25zXSYmdGhpc1tEbl0ubGVuZ3RoPjApe2NvbnN0IGU9bmV3IFhtbE9iamVjdCh0aGlzW3FzXSwiI3RleHQiKTt0aGlzW0FzXShlKTtlW25zXT10aGlzW25zXTtkZWxldGUgdGhpc1tuc119fVtJbl0oKXtyZXR1cm4iI3RleHQiPT09dGhpc1tPc10/SFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiIjdGV4dCIsdmFsdWU6dGhpc1tuc119KTpIVE1MUmVzdWx0LkVNUFRZfVttc10oZT1udWxsKXtyZXR1cm4gZT90aGlzW0RuXS5maWx0ZXIoKHQ9PnRbT3NdPT09ZSkpOnRoaXNbRG5dfVtsc10oKXtyZXR1cm4gdGhpc1t3bl19W1FzXShlKXtjb25zdCB0PXRoaXNbd25dLmdldChlKTtyZXR1cm4gdm9pZCAwIT09dD90OnRoaXNbbXNdKGUpfSpbdXNdKGUsdCl7Y29uc3QgaT10aGlzW3duXS5nZXQoZSk7aSYmKHlpZWxkIGkpO2Zvcihjb25zdCBpIG9mIHRoaXNbRG5dKXtpW09zXT09PWUmJih5aWVsZCBpKTt0JiYoeWllbGQqaVt1c10oZSx0KSl9fSpbaHNdKGUsdCl7Y29uc3QgaT10aGlzW3duXS5nZXQoZSk7IWl8fHQmJmlbc3NdfHwoeWllbGQgaSk7Zm9yKGNvbnN0IGkgb2YgdGhpc1tEbl0peWllbGQqaVtoc10oZSx0KX0qW3BzXShlLHQsaSl7Zm9yKGNvbnN0IGEgb2YgdGhpc1tEbl0pe2FbT3NdIT09ZXx8aSYmYVtzc118fCh5aWVsZCBhKTt0JiYoeWllbGQqYVtwc10oZSx0LGkpKX19W01zXSgpe3JldHVybiBudWxsPT09dGhpc1tTbl0/MD09PXRoaXNbRG5dLmxlbmd0aHx8dGhpc1tEbl1bMF1bcXNdPT09Qm4ueGh0bWwuaWQ6dGhpc1tTbl19W2RzXSgpe3JldHVybiBudWxsPT09dGhpc1tTbl0/MD09PXRoaXNbRG5dLmxlbmd0aD90aGlzW25zXS50cmltKCk6dGhpc1tEbl1bMF1bcXNdPT09Qm4ueGh0bWwuaWQ/dGhpc1tEbl1bMF1bb25dKCkudHJpbSgpOm51bGw6dGhpc1tuc10udHJpbSgpfVtzbl0oZSl7ZT1lLnZhbHVlfHwiIjt0aGlzW25zXT1lLnRvU3RyaW5nKCl9W2dzXShlPSExKXtjb25zdCB0PU9iamVjdC5jcmVhdGUobnVsbCk7ZSYmKHQuJG5zPXRoaXNbcXNdKTt0aGlzW25zXSYmKHQuJGNvbnRlbnQ9dGhpc1tuc10pO3QuJG5hbWU9dGhpc1tPc107dC5jaGlsZHJlbj1bXTtmb3IoY29uc3QgaSBvZiB0aGlzW0RuXSl0LmNoaWxkcmVuLnB1c2goaVtnc10oZSkpO3QuYXR0cmlidXRlcz1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdFtlLGldb2YgdGhpc1t3bl0pdC5hdHRyaWJ1dGVzW2VdPWlbbnNdO3JldHVybiB0fX1jbGFzcyBDb250ZW50T2JqZWN0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSx0KTt0aGlzW25zXT0iIn1bWnNdKGUpe3RoaXNbbnNdKz1lfVtjc10oKXt9fWNsYXNzIE9wdGlvbk9iamVjdCBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSx0LGkpe3N1cGVyKGUsdCk7dGhpc1tNbl09aX1bY3NdKCl7dGhpc1tuc109Z2V0S2V5d29yZCh7ZGF0YTp0aGlzW25zXSxkZWZhdWx0VmFsdWU6dGhpc1tNbl1bMF0sdmFsaWRhdGU6ZT0+dGhpc1tNbl0uaW5jbHVkZXMoZSl9KX1bdHNdKGUpe3N1cGVyW3RzXShlKTtkZWxldGUgdGhpc1tNbl19fWNsYXNzIFN0cmluZ09iamVjdCBleHRlbmRzIENvbnRlbnRPYmplY3R7W2NzXSgpe3RoaXNbbnNdPXRoaXNbbnNdLnRyaW0oKX19Y2xhc3MgSW50ZWdlck9iamVjdCBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSx0LGksYSl7c3VwZXIoZSx0KTt0aGlzW2tuXT1pO3RoaXNbdm5dPWF9W2NzXSgpe3RoaXNbbnNdPWdldEludGVnZXIoe2RhdGE6dGhpc1tuc10sZGVmYXVsdFZhbHVlOnRoaXNba25dLHZhbGlkYXRlOnRoaXNbdm5dfSl9W3RzXShlKXtzdXBlclt0c10oZSk7ZGVsZXRlIHRoaXNba25dO2RlbGV0ZSB0aGlzW3ZuXX19Y2xhc3MgT3B0aW9uMDEgZXh0ZW5kcyBJbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSx0LDAsKGU9PjE9PT1lKSl9fWNsYXNzIE9wdGlvbjEwIGV4dGVuZHMgSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsdCwxLChlPT4wPT09ZSkpfX1mdW5jdGlvbiBtZWFzdXJlVG9TdHJpbmcoZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlPyIwcHgiOk51bWJlci5pc0ludGVnZXIoZSk/YCR7ZX1weGA6YCR7ZS50b0ZpeGVkKDIpfXB4YH1jb25zdCBLbj17YW5jaG9yVHlwZShlLHQpe2NvbnN0IGk9ZVtic10oKTtpZihpJiYoIWkubGF5b3V0fHwicG9zaXRpb24iPT09aS5sYXlvdXQpKXsidHJhbnNmb3JtImluIHR8fCh0LnRyYW5zZm9ybT0iIik7c3dpdGNoKGUuYW5jaG9yVHlwZSl7Y2FzZSJib3R0b21DZW50ZXIiOnQudHJhbnNmb3JtKz0idHJhbnNsYXRlKC01MCUsIC0xMDAlKSI7YnJlYWs7Y2FzZSJib3R0b21MZWZ0Ijp0LnRyYW5zZm9ybSs9InRyYW5zbGF0ZSgwLC0xMDAlKSI7YnJlYWs7Y2FzZSJib3R0b21SaWdodCI6dC50cmFuc2Zvcm0rPSJ0cmFuc2xhdGUoLTEwMCUsLTEwMCUpIjticmVhaztjYXNlIm1pZGRsZUNlbnRlciI6dC50cmFuc2Zvcm0rPSJ0cmFuc2xhdGUoLTUwJSwtNTAlKSI7YnJlYWs7Y2FzZSJtaWRkbGVMZWZ0Ijp0LnRyYW5zZm9ybSs9InRyYW5zbGF0ZSgwLC01MCUpIjticmVhaztjYXNlIm1pZGRsZVJpZ2h0Ijp0LnRyYW5zZm9ybSs9InRyYW5zbGF0ZSgtMTAwJSwtNTAlKSI7YnJlYWs7Y2FzZSJ0b3BDZW50ZXIiOnQudHJhbnNmb3JtKz0idHJhbnNsYXRlKC01MCUsMCkiO2JyZWFrO2Nhc2UidG9wUmlnaHQiOnQudHJhbnNmb3JtKz0idHJhbnNsYXRlKC0xMDAlLDApIn19fSxkaW1lbnNpb25zKGUsdCl7Y29uc3QgaT1lW2JzXSgpO2xldCBhPWUudztjb25zdCByPWUuaDtpZihpLmxheW91dD8uaW5jbHVkZXMoInJvdyIpKXtjb25zdCB0PWlbSXNdLHI9ZS5jb2xTcGFuO2xldCBzO2lmKC0xPT09cil7cz10LmNvbHVtbldpZHRocy5zbGljZSh0LmN1cnJlbnRDb2x1bW4pLnJlZHVjZSgoKGUsdCk9PmUrdCksMCk7dC5jdXJyZW50Q29sdW1uPTB9ZWxzZXtzPXQuY29sdW1uV2lkdGhzLnNsaWNlKHQuY3VycmVudENvbHVtbix0LmN1cnJlbnRDb2x1bW4rcikucmVkdWNlKCgoZSx0KT0+ZSt0KSwwKTt0LmN1cnJlbnRDb2x1bW49KHQuY3VycmVudENvbHVtbitlLmNvbFNwYW4pJXQuY29sdW1uV2lkdGhzLmxlbmd0aH1pc05hTihzKXx8KGE9ZS53PXMpfXQud2lkdGg9IiIhPT1hP21lYXN1cmVUb1N0cmluZyhhKToiYXV0byI7dC5oZWlnaHQ9IiIhPT1yP21lYXN1cmVUb1N0cmluZyhyKToiYXV0byJ9LHBvc2l0aW9uKGUsdCl7Y29uc3QgaT1lW2JzXSgpO2lmKCFpPy5sYXlvdXR8fCJwb3NpdGlvbiI9PT1pLmxheW91dCl7dC5wb3NpdGlvbj0iYWJzb2x1dGUiO3QubGVmdD1tZWFzdXJlVG9TdHJpbmcoZS54KTt0LnRvcD1tZWFzdXJlVG9TdHJpbmcoZS55KX19LHJvdGF0ZShlLHQpe2lmKGUucm90YXRlKXsidHJhbnNmb3JtImluIHR8fCh0LnRyYW5zZm9ybT0iIik7dC50cmFuc2Zvcm0rPWByb3RhdGUoLSR7ZS5yb3RhdGV9ZGVnKWA7dC50cmFuc2Zvcm1PcmlnaW49InRvcCBsZWZ0In19LHByZXNlbmNlKGUsdCl7c3dpdGNoKGUucHJlc2VuY2Upe2Nhc2UiaW52aXNpYmxlIjp0LnZpc2liaWxpdHk9ImhpZGRlbiI7YnJlYWs7Y2FzZSJoaWRkZW4iOmNhc2UiaW5hY3RpdmUiOnQuZGlzcGxheT0ibm9uZSJ9fSxoQWxpZ24oZSx0KXtpZigicGFyYSI9PT1lW09zXSlzd2l0Y2goZS5oQWxpZ24pe2Nhc2UianVzdGlmeUFsbCI6dC50ZXh0QWxpZ249Imp1c3RpZnktYWxsIjticmVhaztjYXNlInJhZGl4Ijp0LnRleHRBbGlnbj0ibGVmdCI7YnJlYWs7ZGVmYXVsdDp0LnRleHRBbGlnbj1lLmhBbGlnbn1lbHNlIHN3aXRjaChlLmhBbGlnbil7Y2FzZSJsZWZ0Ijp0LmFsaWduU2VsZj0ic3RhcnQiO2JyZWFrO2Nhc2UiY2VudGVyIjp0LmFsaWduU2VsZj0iY2VudGVyIjticmVhaztjYXNlInJpZ2h0Ijp0LmFsaWduU2VsZj0iZW5kIn19LG1hcmdpbihlLHQpe2UubWFyZ2luJiYodC5tYXJnaW49ZS5tYXJnaW5bQ25dKCkubWFyZ2luKX19O2Z1bmN0aW9uIHNldE1pbk1heERpbWVuc2lvbnMoZSx0KXtpZigicG9zaXRpb24iPT09ZVtic10oKS5sYXlvdXQpe2UubWluVz4wJiYodC5taW5XaWR0aD1tZWFzdXJlVG9TdHJpbmcoZS5taW5XKSk7ZS5tYXhXPjAmJih0Lm1heFdpZHRoPW1lYXN1cmVUb1N0cmluZyhlLm1heFcpKTtlLm1pbkg+MCYmKHQubWluSGVpZ2h0PW1lYXN1cmVUb1N0cmluZyhlLm1pbkgpKTtlLm1heEg+MCYmKHQubWF4SGVpZ2h0PW1lYXN1cmVUb1N0cmluZyhlLm1heEgpKX19ZnVuY3Rpb24gbGF5b3V0VGV4dChlLHQsaSxhLHIscyl7Y29uc3Qgbj1uZXcgVGV4dE1lYXN1cmUodCxpLGEscik7InN0cmluZyI9PXR5cGVvZiBlP24uYWRkU3RyaW5nKGUpOmVbVnNdKG4pO3JldHVybiBuLmNvbXB1dGUocyl9ZnVuY3Rpb24gbGF5b3V0Tm9kZShlLHQpe2xldCBpPW51bGwsYT1udWxsLHI9ITE7aWYoKCFlLnd8fCFlLmgpJiZlLnZhbHVlKXtsZXQgcz0wLG49MDtpZihlLm1hcmdpbil7cz1lLm1hcmdpbi5sZWZ0SW5zZXQrZS5tYXJnaW4ucmlnaHRJbnNldDtuPWUubWFyZ2luLnRvcEluc2V0K2UubWFyZ2luLmJvdHRvbUluc2V0fWxldCBvPW51bGwsZz1udWxsO2lmKGUucGFyYSl7Zz1PYmplY3QuY3JlYXRlKG51bGwpO289IiI9PT1lLnBhcmEubGluZUhlaWdodD9udWxsOmUucGFyYS5saW5lSGVpZ2h0O2cudG9wPSIiPT09ZS5wYXJhLnNwYWNlQWJvdmU/MDplLnBhcmEuc3BhY2VBYm92ZTtnLmJvdHRvbT0iIj09PWUucGFyYS5zcGFjZUJlbG93PzA6ZS5wYXJhLnNwYWNlQmVsb3c7Zy5sZWZ0PSIiPT09ZS5wYXJhLm1hcmdpbkxlZnQ/MDplLnBhcmEubWFyZ2luTGVmdDtnLnJpZ2h0PSIiPT09ZS5wYXJhLm1hcmdpblJpZ2h0PzA6ZS5wYXJhLm1hcmdpblJpZ2h0fWxldCBjPWUuZm9udDtpZighYyl7Y29uc3QgdD1lW0ZzXSgpO2xldCBpPWVbRHNdKCk7Zm9yKDtpJiZpIT09dDspe2lmKGkuZm9udCl7Yz1pLmZvbnQ7YnJlYWt9aT1pW0RzXSgpfX1jb25zdCBDPShlLnd8fHQud2lkdGgpLXMsaD1lW1NzXS5mb250RmluZGVyO2lmKGUudmFsdWUuZXhEYXRhJiZlLnZhbHVlLmV4RGF0YVtuc10mJiJ0ZXh0L2h0bWwiPT09ZS52YWx1ZS5leERhdGEuY29udGVudFR5cGUpe2NvbnN0IHQ9bGF5b3V0VGV4dChlLnZhbHVlLmV4RGF0YVtuc10sYyxnLG8saCxDKTthPXQud2lkdGg7aT10LmhlaWdodDtyPXQuaXNCcm9rZW59ZWxzZXtjb25zdCB0PWUudmFsdWVbb25dKCk7aWYodCl7Y29uc3QgZT1sYXlvdXRUZXh0KHQsYyxnLG8saCxDKTthPWUud2lkdGg7aT1lLmhlaWdodDtyPWUuaXNCcm9rZW59fW51bGw9PT1hfHxlLnd8fChhKz1zKTtudWxsPT09aXx8ZS5ofHwoaSs9bil9cmV0dXJue3c6YSxoOmksaXNCcm9rZW46cn19ZnVuY3Rpb24gY29tcHV0ZUJib3goZSx0LGkpe2xldCBhO2lmKCIiIT09ZS53JiYiIiE9PWUuaClhPVtlLngsZS55LGUudyxlLmhdO2Vsc2V7aWYoIWkpcmV0dXJuIG51bGw7bGV0IHI9ZS53O2lmKCIiPT09cil7aWYoMD09PWUubWF4Vyl7Y29uc3QgdD1lW2JzXSgpO3I9InBvc2l0aW9uIj09PXQubGF5b3V0JiYiIiE9PXQudz8wOmUubWluV31lbHNlIHI9TWF0aC5taW4oZS5tYXhXLGkud2lkdGgpO3QuYXR0cmlidXRlcy5zdHlsZS53aWR0aD1tZWFzdXJlVG9TdHJpbmcocil9bGV0IHM9ZS5oO2lmKCIiPT09cyl7aWYoMD09PWUubWF4SCl7Y29uc3QgdD1lW2JzXSgpO3M9InBvc2l0aW9uIj09PXQubGF5b3V0JiYiIiE9PXQuaD8wOmUubWluSH1lbHNlIHM9TWF0aC5taW4oZS5tYXhILGkuaGVpZ2h0KTt0LmF0dHJpYnV0ZXMuc3R5bGUuaGVpZ2h0PW1lYXN1cmVUb1N0cmluZyhzKX1hPVtlLngsZS55LHIsc119cmV0dXJuIGF9ZnVuY3Rpb24gZml4RGltZW5zaW9ucyhlKXtjb25zdCB0PWVbYnNdKCk7aWYodC5sYXlvdXQ/LmluY2x1ZGVzKCJyb3ciKSl7Y29uc3QgaT10W0lzXSxhPWUuY29sU3BhbjtsZXQgcjtyPS0xPT09YT9pLmNvbHVtbldpZHRocy5zbGljZShpLmN1cnJlbnRDb2x1bW4pLnJlZHVjZSgoKGUsdCk9PmUrdCksMCk6aS5jb2x1bW5XaWR0aHMuc2xpY2UoaS5jdXJyZW50Q29sdW1uLGkuY3VycmVudENvbHVtbithKS5yZWR1Y2UoKChlLHQpPT5lK3QpLDApO2lzTmFOKHIpfHwoZS53PXIpfXQubGF5b3V0JiYicG9zaXRpb24iIT09dC5sYXlvdXQmJihlLng9ZS55PTApOyJ0YWJsZSI9PT1lLmxheW91dCYmIiI9PT1lLncmJkFycmF5LmlzQXJyYXkoZS5jb2x1bW5XaWR0aHMpJiYoZS53PWUuY29sdW1uV2lkdGhzLnJlZHVjZSgoKGUsdCk9PmUrdCksMCkpfWZ1bmN0aW9uIGxheW91dENsYXNzKGUpe3N3aXRjaChlLmxheW91dCl7Y2FzZSJwb3NpdGlvbiI6ZGVmYXVsdDpyZXR1cm4ieGZhUG9zaXRpb24iO2Nhc2UibHItdGIiOnJldHVybiJ4ZmFMclRiIjtjYXNlInJsLXJvdyI6cmV0dXJuInhmYVJsUm93IjtjYXNlInJsLXRiIjpyZXR1cm4ieGZhUmxUYiI7Y2FzZSJyb3ciOnJldHVybiJ4ZmFSb3ciO2Nhc2UidGFibGUiOnJldHVybiJ4ZmFUYWJsZSI7Y2FzZSJ0YiI6cmV0dXJuInhmYVRiIn19ZnVuY3Rpb24gdG9TdHlsZShlLC4uLnQpe2NvbnN0IGk9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IoY29uc3QgYSBvZiB0KXtjb25zdCB0PWVbYV07aWYobnVsbCE9PXQpaWYoS24uaGFzT3duUHJvcGVydHkoYSkpS25bYV0oZSxpKTtlbHNlIGlmKHQgaW5zdGFuY2VvZiBYRkFPYmplY3Qpe2NvbnN0IGU9dFtDbl0oKTtlP09iamVjdC5hc3NpZ24oaSxlKTp3YXJuKGAoREVCVUcpIC0gWEZBIC0gc3R5bGUgZm9yICR7YX0gbm90IGltcGxlbWVudGVkIHlldGApfX1yZXR1cm4gaX1mdW5jdGlvbiBjcmVhdGVXcmFwcGVyKGUsdCl7Y29uc3R7YXR0cmlidXRlczppfT10LHtzdHlsZTphfT1pLHI9e25hbWU6ImRpdiIsYXR0cmlidXRlczp7Y2xhc3M6WyJ4ZmFXcmFwcGVyIl0sc3R5bGU6T2JqZWN0LmNyZWF0ZShudWxsKX0sY2hpbGRyZW46W119O2kuY2xhc3MucHVzaCgieGZhV3JhcHBlZCIpO2lmKGUuYm9yZGVyKXtjb25zdHt3aWR0aHM6aSxpbnNldHM6c309ZS5ib3JkZXJbSXNdO2xldCBuLG8sZz1zWzBdLGM9c1szXTtjb25zdCBDPXNbMF0rc1syXSxoPXNbMV0rc1szXTtzd2l0Y2goZS5ib3JkZXIuaGFuZCl7Y2FzZSJldmVuIjpnLT1pWzBdLzI7Yy09aVszXS8yO249YGNhbGMoMTAwJSArICR7KGlbMV0raVszXSkvMi1ofXB4KWA7bz1gY2FsYygxMDAlICsgJHsoaVswXStpWzJdKS8yLUN9cHgpYDticmVhaztjYXNlImxlZnQiOmctPWlbMF07Yy09aVszXTtuPWBjYWxjKDEwMCUgKyAke2lbMV0raVszXS1ofXB4KWA7bz1gY2FsYygxMDAlICsgJHtpWzBdK2lbMl0tQ31weClgO2JyZWFrO2Nhc2UicmlnaHQiOm49aD9gY2FsYygxMDAlIC0gJHtofXB4KWA6IjEwMCUiO289Qz9gY2FsYygxMDAlIC0gJHtDfXB4KWA6IjEwMCUifWNvbnN0IGw9WyJ4ZmFCb3JkZXIiXTtpc1ByaW50T25seShlLmJvcmRlcikmJmwucHVzaCgieGZhUHJpbnRPbmx5Iik7Y29uc3QgUT17bmFtZToiZGl2IixhdHRyaWJ1dGVzOntjbGFzczpsLHN0eWxlOnt0b3A6YCR7Z31weGAsbGVmdDpgJHtjfXB4YCx3aWR0aDpuLGhlaWdodDpvfX0sY2hpbGRyZW46W119O2Zvcihjb25zdCBlIG9mWyJib3JkZXIiLCJib3JkZXJXaWR0aCIsImJvcmRlckNvbG9yIiwiYm9yZGVyUmFkaXVzIiwiYm9yZGVyU3R5bGUiXSlpZih2b2lkIDAhPT1hW2VdKXtRLmF0dHJpYnV0ZXMuc3R5bGVbZV09YVtlXTtkZWxldGUgYVtlXX1yLmNoaWxkcmVuLnB1c2goUSx0KX1lbHNlIHIuY2hpbGRyZW4ucHVzaCh0KTtmb3IoY29uc3QgZSBvZlsiYmFja2dyb3VuZCIsImJhY2tncm91bmRDbGlwIiwidG9wIiwibGVmdCIsIndpZHRoIiwiaGVpZ2h0IiwibWluV2lkdGgiLCJtaW5IZWlnaHQiLCJtYXhXaWR0aCIsIm1heEhlaWdodCIsInRyYW5zZm9ybSIsInRyYW5zZm9ybU9yaWdpbiIsInZpc2liaWxpdHkiXSlpZih2b2lkIDAhPT1hW2VdKXtyLmF0dHJpYnV0ZXMuc3R5bGVbZV09YVtlXTtkZWxldGUgYVtlXX1yLmF0dHJpYnV0ZXMuc3R5bGUucG9zaXRpb249ImFic29sdXRlIj09PWEucG9zaXRpb24/ImFic29sdXRlIjoicmVsYXRpdmUiO2RlbGV0ZSBhLnBvc2l0aW9uO2lmKGEuYWxpZ25TZWxmKXtyLmF0dHJpYnV0ZXMuc3R5bGUuYWxpZ25TZWxmPWEuYWxpZ25TZWxmO2RlbGV0ZSBhLmFsaWduU2VsZn1yZXR1cm4gcn1mdW5jdGlvbiBmaXhUZXh0SW5kZW50KGUpe2NvbnN0IHQ9Z2V0TWVhc3VyZW1lbnQoZS50ZXh0SW5kZW50LCIwcHgiKTtpZih0Pj0wKXJldHVybjtjb25zdCBpPSJwYWRkaW5nIisoImxlZnQiPT09KCJyaWdodCI9PT1lLnRleHRBbGlnbj8icmlnaHQiOiJsZWZ0Iik/IkxlZnQiOiJSaWdodCIpLGE9Z2V0TWVhc3VyZW1lbnQoZVtpXSwiMHB4Iik7ZVtpXT1hLXQrInB4In1mdW5jdGlvbiBzZXRBY2Nlc3MoZSx0KXtzd2l0Y2goZS5hY2Nlc3Mpe2Nhc2Uibm9uSW50ZXJhY3RpdmUiOnQucHVzaCgieGZhTm9uSW50ZXJhY3RpdmUiKTticmVhaztjYXNlInJlYWRPbmx5Ijp0LnB1c2goInhmYVJlYWRPbmx5Iik7YnJlYWs7Y2FzZSJwcm90ZWN0ZWQiOnQucHVzaCgieGZhRGlzYWJsZWQiKX19ZnVuY3Rpb24gaXNQcmludE9ubHkoZSl7cmV0dXJuIGUucmVsZXZhbnQubGVuZ3RoPjAmJiFlLnJlbGV2YW50WzBdLmV4Y2x1ZGVkJiYicHJpbnQiPT09ZS5yZWxldmFudFswXS52aWV3bmFtZX1mdW5jdGlvbiBnZXRDdXJyZW50UGFyYShlKXtjb25zdCB0PWVbRnNdKClbSXNdLnBhcmFTdGFjaztyZXR1cm4gdC5sZW5ndGg/dC5hdCgtMSk6bnVsbH1mdW5jdGlvbiBzZXRQYXJhKGUsdCxpKXtpZihpLmF0dHJpYnV0ZXMuY2xhc3M/LmluY2x1ZGVzKCJ4ZmFSaWNoIikpe2lmKHQpeyIiPT09ZS5oJiYodC5oZWlnaHQ9ImF1dG8iKTsiIj09PWUudyYmKHQud2lkdGg9ImF1dG8iKX1jb25zdCBhPWdldEN1cnJlbnRQYXJhKGUpO2lmKGEpe2NvbnN0IGU9aS5hdHRyaWJ1dGVzLnN0eWxlO2UuZGlzcGxheT0iZmxleCI7ZS5mbGV4RGlyZWN0aW9uPSJjb2x1bW4iO3N3aXRjaChhLnZBbGlnbil7Y2FzZSJ0b3AiOmUuanVzdGlmeUNvbnRlbnQ9InN0YXJ0IjticmVhaztjYXNlImJvdHRvbSI6ZS5qdXN0aWZ5Q29udGVudD0iZW5kIjticmVhaztjYXNlIm1pZGRsZSI6ZS5qdXN0aWZ5Q29udGVudD0iY2VudGVyIn1jb25zdCB0PWFbQ25dKCk7Zm9yKGNvbnN0W2ksYV1vZiBPYmplY3QuZW50cmllcyh0KSlpIGluIGV8fChlW2ldPWEpfX19ZnVuY3Rpb24gc2V0Rm9udEZhbWlseShlLHQsaSxhKXtpZighaSl7ZGVsZXRlIGEuZm9udEZhbWlseTtyZXR1cm59Y29uc3Qgcj1zdHJpcFF1b3RlcyhlLnR5cGVmYWNlKTthLmZvbnRGYW1pbHk9YCIke3J9ImA7Y29uc3Qgcz1pLmZpbmQocik7aWYocyl7Y29uc3R7Zm9udEZhbWlseTppfT1zLnJlZ3VsYXIuY3NzRm9udEluZm87aSE9PXImJihhLmZvbnRGYW1pbHk9YCIke2l9ImApO2NvbnN0IG49Z2V0Q3VycmVudFBhcmEodCk7aWYobiYmIiIhPT1uLmxpbmVIZWlnaHQpcmV0dXJuO2lmKGEubGluZUhlaWdodClyZXR1cm47Y29uc3Qgbz1zZWxlY3RGb250KGUscyk7byYmKGEubGluZUhlaWdodD1NYXRoLm1heCgxLjIsby5saW5lSGVpZ2h0KSl9fWZ1bmN0aW9uIGZpeFVSTChlKXtjb25zdCB0PWNyZWF0ZVZhbGlkQWJzb2x1dGVVcmwoZSxudWxsLHthZGREZWZhdWx0UHJvdG9jb2w6ITAsdHJ5Q29udmVydEVuY29kaW5nOiEwfSk7cmV0dXJuIHQ/dC5ocmVmOm51bGx9ZnVuY3Rpb24gY3JlYXRlTGluZShlLHQpe3JldHVybntuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e2NsYXNzOlsibHItdGIiPT09ZS5sYXlvdXQ/InhmYUxyIjoieGZhUmwiXX0sY2hpbGRyZW46dH19ZnVuY3Rpb24gZmx1c2hIVE1MKGUpe2lmKCFlW0lzXSlyZXR1cm4gbnVsbDtjb25zdCB0PXtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6ZVtJc10uYXR0cmlidXRlcyxjaGlsZHJlbjplW0lzXS5jaGlsZHJlbn07aWYoZVtJc10uZmFpbGluZ05vZGUpe2NvbnN0IGk9ZVtJc10uZmFpbGluZ05vZGVbQ3NdKCk7aSYmKGUubGF5b3V0LmVuZHNXaXRoKCItdGIiKT90LmNoaWxkcmVuLnB1c2goY3JlYXRlTGluZShlLFtpXSkpOnQuY2hpbGRyZW4ucHVzaChpKSl9cmV0dXJuIDA9PT10LmNoaWxkcmVuLmxlbmd0aD9udWxsOnR9ZnVuY3Rpb24gYWRkSFRNTChlLHQsaSl7Y29uc3QgYT1lW0lzXSxyPWEuYXZhaWxhYmxlU3BhY2UsW3MsbixvLGddPWk7c3dpdGNoKGUubGF5b3V0KXtjYXNlInBvc2l0aW9uIjphLndpZHRoPU1hdGgubWF4KGEud2lkdGgscytvKTthLmhlaWdodD1NYXRoLm1heChhLmhlaWdodCxuK2cpO2EuY2hpbGRyZW4ucHVzaCh0KTticmVhaztjYXNlImxyLXRiIjpjYXNlInJsLXRiIjppZighYS5saW5lfHwxPT09YS5hdHRlbXB0KXthLmxpbmU9Y3JlYXRlTGluZShlLFtdKTthLmNoaWxkcmVuLnB1c2goYS5saW5lKTthLm51bWJlckluTGluZT0wfWEubnVtYmVySW5MaW5lKz0xO2EubGluZS5jaGlsZHJlbi5wdXNoKHQpO2lmKDA9PT1hLmF0dGVtcHQpe2EuY3VycmVudFdpZHRoKz1vO2EuaGVpZ2h0PU1hdGgubWF4KGEuaGVpZ2h0LGEucHJldkhlaWdodCtnKX1lbHNle2EuY3VycmVudFdpZHRoPW87YS5wcmV2SGVpZ2h0PWEuaGVpZ2h0O2EuaGVpZ2h0Kz1nO2EuYXR0ZW1wdD0wfWEud2lkdGg9TWF0aC5tYXgoYS53aWR0aCxhLmN1cnJlbnRXaWR0aCk7YnJlYWs7Y2FzZSJybC1yb3ciOmNhc2Uicm93Ijp7YS5jaGlsZHJlbi5wdXNoKHQpO2Eud2lkdGgrPW87YS5oZWlnaHQ9TWF0aC5tYXgoYS5oZWlnaHQsZyk7Y29uc3QgZT1tZWFzdXJlVG9TdHJpbmcoYS5oZWlnaHQpO2Zvcihjb25zdCB0IG9mIGEuY2hpbGRyZW4pdC5hdHRyaWJ1dGVzLnN0eWxlLmhlaWdodD1lO2JyZWFrfWNhc2UidGFibGUiOmNhc2UidGIiOmEud2lkdGg9TWF0aC5taW4oci53aWR0aCxNYXRoLm1heChhLndpZHRoLG8pKTthLmhlaWdodCs9ZzthLmNoaWxkcmVuLnB1c2godCl9fWZ1bmN0aW9uIGdldEF2YWlsYWJsZVNwYWNlKGUpe2NvbnN0IHQ9ZVtJc10uYXZhaWxhYmxlU3BhY2UsaT1lLm1hcmdpbj9lLm1hcmdpbi50b3BJbnNldCtlLm1hcmdpbi5ib3R0b21JbnNldDowLGE9ZS5tYXJnaW4/ZS5tYXJnaW4ubGVmdEluc2V0K2UubWFyZ2luLnJpZ2h0SW5zZXQ6MDtzd2l0Y2goZS5sYXlvdXQpe2Nhc2UibHItdGIiOmNhc2UicmwtdGIiOnJldHVybiAwPT09ZVtJc10uYXR0ZW1wdD97d2lkdGg6dC53aWR0aC1hLWVbSXNdLmN1cnJlbnRXaWR0aCxoZWlnaHQ6dC5oZWlnaHQtaS1lW0lzXS5wcmV2SGVpZ2h0fTp7d2lkdGg6dC53aWR0aC1hLGhlaWdodDp0LmhlaWdodC1pLWVbSXNdLmhlaWdodH07Y2FzZSJybC1yb3ciOmNhc2Uicm93IjpyZXR1cm57d2lkdGg6ZVtJc10uY29sdW1uV2lkdGhzLnNsaWNlKGVbSXNdLmN1cnJlbnRDb2x1bW4pLnJlZHVjZSgoKGUsdCk9PmUrdCkpLGhlaWdodDp0LmhlaWdodC1hfTtjYXNlInRhYmxlIjpjYXNlInRiIjpyZXR1cm57d2lkdGg6dC53aWR0aC1hLGhlaWdodDp0LmhlaWdodC1pLWVbSXNdLmhlaWdodH07ZGVmYXVsdDpyZXR1cm4gdH19ZnVuY3Rpb24gY2hlY2tEaW1lbnNpb25zKGUsdCl7aWYobnVsbD09PWVbRnNdKClbSXNdLmZpcnN0VW5zcGxpdHRhYmxlKXJldHVybiEwO2lmKDA9PT1lLnd8fDA9PT1lLmgpcmV0dXJuITA7Y29uc3QgaT1lW2JzXSgpLGE9aVtJc10/LmF0dGVtcHR8fDAsWyxyLHMsbl09ZnVuY3Rpb24gZ2V0VHJhbnNmb3JtZWRCQm94KGUpe2xldCB0LGksYT0iIj09PWUudz9OYU46ZS53LHI9IiI9PT1lLmg/TmFOOmUuaCxbcyxuXT1bMCwwXTtzd2l0Y2goZS5hbmNob3JUeXBlfHwiIil7Y2FzZSJib3R0b21DZW50ZXIiOltzLG5dPVthLzIscl07YnJlYWs7Y2FzZSJib3R0b21MZWZ0IjpbcyxuXT1bMCxyXTticmVhaztjYXNlImJvdHRvbVJpZ2h0IjpbcyxuXT1bYSxyXTticmVhaztjYXNlIm1pZGRsZUNlbnRlciI6W3Msbl09W2EvMixyLzJdO2JyZWFrO2Nhc2UibWlkZGxlTGVmdCI6W3Msbl09WzAsci8yXTticmVhaztjYXNlIm1pZGRsZVJpZ2h0IjpbcyxuXT1bYSxyLzJdO2JyZWFrO2Nhc2UidG9wQ2VudGVyIjpbcyxuXT1bYS8yLDBdO2JyZWFrO2Nhc2UidG9wUmlnaHQiOltzLG5dPVthLDBdfXN3aXRjaChlLnJvdGF0ZXx8MCl7Y2FzZSAwOlt0LGldPVstcywtbl07YnJlYWs7Y2FzZSA5MDpbdCxpXT1bLW4sc107W2Escl09W3IsLWFdO2JyZWFrO2Nhc2UgMTgwOlt0LGldPVtzLG5dO1thLHJdPVstYSwtcl07YnJlYWs7Y2FzZSAyNzA6W3QsaV09W24sLXNdO1thLHJdPVstcixhXX1yZXR1cm5bZS54K3QrTWF0aC5taW4oMCxhKSxlLnkraStNYXRoLm1pbigwLHIpLE1hdGguYWJzKGEpLE1hdGguYWJzKHIpXX0oZSk7c3dpdGNoKGkubGF5b3V0KXtjYXNlImxyLXRiIjpjYXNlInJsLXRiIjpyZXR1cm4gMD09PWE/ZVtGc10oKVtJc10ubm9MYXlvdXRGYWlsdXJlPyIiIT09ZS53P01hdGgucm91bmQocy10LndpZHRoKTw9Mjp0LndpZHRoPjI6ISgiIiE9PWUuaCYmTWF0aC5yb3VuZChuLXQuaGVpZ2h0KT4yKSYmKCIiIT09ZS53P01hdGgucm91bmQocy10LndpZHRoKTw9Mnx8MD09PWlbSXNdLm51bWJlckluTGluZSYmdC5oZWlnaHQ+Mjp0LndpZHRoPjIpOiEhZVtGc10oKVtJc10ubm9MYXlvdXRGYWlsdXJlfHwhKCIiIT09ZS5oJiZNYXRoLnJvdW5kKG4tdC5oZWlnaHQpPjIpJiYoKCIiPT09ZS53fHxNYXRoLnJvdW5kKHMtdC53aWR0aCk8PTJ8fCFpW3ZzXSgpKSYmdC5oZWlnaHQ+Mik7Y2FzZSJ0YWJsZSI6Y2FzZSJ0YiI6cmV0dXJuISFlW0ZzXSgpW0lzXS5ub0xheW91dEZhaWx1cmV8fCgiIj09PWUuaHx8ZVtKc10oKT8oIiI9PT1lLnd8fE1hdGgucm91bmQocy10LndpZHRoKTw9Mnx8IWlbdnNdKCkpJiZ0LmhlaWdodD4yOk1hdGgucm91bmQobi10LmhlaWdodCk8PTIpO2Nhc2UicG9zaXRpb24iOmlmKGVbRnNdKClbSXNdLm5vTGF5b3V0RmFpbHVyZSlyZXR1cm4hMDtpZigiIj09PWUuaHx8TWF0aC5yb3VuZChuK3ItdC5oZWlnaHQpPD0yKXJldHVybiEwO3JldHVybiBuK3I+ZVtGc10oKVtJc10uY3VycmVudENvbnRlbnRBcmVhLmg7Y2FzZSJybC1yb3ciOmNhc2Uicm93IjpyZXR1cm4hIWVbRnNdKClbSXNdLm5vTGF5b3V0RmFpbHVyZXx8KCIiPT09ZS5ofHxNYXRoLnJvdW5kKG4tdC5oZWlnaHQpPD0yKTtkZWZhdWx0OnJldHVybiEwfX1jb25zdCBxbj1Cbi50ZW1wbGF0ZS5pZCxPbj0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLFBuPS9eSChcZCspJC8sV249bmV3IFNldChbImltYWdlL2dpZiIsImltYWdlL2pwZWciLCJpbWFnZS9qcGciLCJpbWFnZS9wanBlZyIsImltYWdlL3BuZyIsImltYWdlL2FwbmciLCJpbWFnZS94LXBuZyIsImltYWdlL2JtcCIsImltYWdlL3gtbXMtYm1wIiwiaW1hZ2UvdGlmZiIsImltYWdlL3RpZiIsImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSJdKSxqbj1bW1s2Niw3N10sImltYWdlL2JtcCJdLFtbMjU1LDIxNiwyNTVdLCJpbWFnZS9qcGVnIl0sW1s3Myw3Myw0MiwwXSwiaW1hZ2UvdGlmZiJdLFtbNzcsNzcsMCw0Ml0sImltYWdlL3RpZmYiXSxbWzcxLDczLDcwLDU2LDU3LDk3XSwiaW1hZ2UvZ2lmIl0sW1sxMzcsODAsNzgsNzEsMTMsMTAsMjYsMTBdLCJpbWFnZS9wbmciXV07ZnVuY3Rpb24gZ2V0Qm9yZGVyRGltcyhlKXtpZighZXx8IWUuYm9yZGVyKXJldHVybnt3OjAsaDowfTtjb25zdCB0PWUuYm9yZGVyW2ZzXSgpO3JldHVybiB0P3t3OnQud2lkdGhzWzBdK3Qud2lkdGhzWzJdK3QuaW5zZXRzWzBdK3QuaW5zZXRzWzJdLGg6dC53aWR0aHNbMV0rdC53aWR0aHNbM10rdC5pbnNldHNbMV0rdC5pbnNldHNbM119Ont3OjAsaDowfX1mdW5jdGlvbiBoYXNNYXJnaW4oZSl7cmV0dXJuIGUubWFyZ2luJiYoZS5tYXJnaW4udG9wSW5zZXR8fGUubWFyZ2luLnJpZ2h0SW5zZXR8fGUubWFyZ2luLmJvdHRvbUluc2V0fHxlLm1hcmdpbi5sZWZ0SW5zZXQpfWZ1bmN0aW9uIF9zZXRWYWx1ZShlLHQpe2lmKCFlLnZhbHVlKXtjb25zdCB0PW5ldyBWYWx1ZSh7fSk7ZVtBc10odCk7ZS52YWx1ZT10fWUudmFsdWVbc25dKHQpfWZ1bmN0aW9uKmdldENvbnRhaW5lZENoaWxkcmVuKGUpe2Zvcihjb25zdCB0IG9mIGVbbXNdKCkpdCBpbnN0YW5jZW9mIFN1YmZvcm1TZXQ/eWllbGQqdFt5c10oKTp5aWVsZCB0fWZ1bmN0aW9uIGlzUmVxdWlyZWQoZSl7cmV0dXJuImVycm9yIj09PWUudmFsaWRhdGU/Lm51bGxUZXN0fWZ1bmN0aW9uIHNldFRhYkluZGV4KGUpe2Zvcig7ZTspe2lmKCFlLnRyYXZlcnNhbCl7ZVtubl09ZVtEc10oKVtubl07cmV0dXJufWlmKGVbbm5dKXJldHVybjtsZXQgdD1udWxsO2Zvcihjb25zdCBpIG9mIGUudHJhdmVyc2FsW21zXSgpKWlmKCJuZXh0Ij09PWkub3BlcmF0aW9uKXt0PWk7YnJlYWt9aWYoIXR8fCF0LnJlZil7ZVtubl09ZVtEc10oKVtubl07cmV0dXJufWNvbnN0IGk9ZVtGc10oKTtlW25uXT0rK2lbbm5dO2NvbnN0IGE9aVt0bl0odC5yZWYsZSk7aWYoIWEpcmV0dXJuO2U9YVswXX19ZnVuY3Rpb24gYXBwbHlBc3Npc3QoZSx0KXtjb25zdCBpPWUuYXNzaXN0O2lmKGkpe2NvbnN0IGU9aVtJbl0oKTtlJiYodC50aXRsZT1lKTtjb25zdCBhPWkucm9sZS5tYXRjaChQbik7aWYoYSl7Y29uc3QgZT0iaGVhZGluZyIsaT1hWzFdO3Qucm9sZT1lO3RbImFyaWEtbGV2ZWwiXT1pfX1pZigidGFibGUiPT09ZS5sYXlvdXQpdC5yb2xlPSJ0YWJsZSI7ZWxzZSBpZigicm93Ij09PWUubGF5b3V0KXQucm9sZT0icm93IjtlbHNle2NvbnN0IGk9ZVtEc10oKTsicm93Ij09PWkubGF5b3V0JiYodC5yb2xlPSJUSCI9PT1pLmFzc2lzdD8ucm9sZT8iY29sdW1uaGVhZGVyIjoiY2VsbCIpfX1mdW5jdGlvbiBhcmlhTGFiZWwoZSl7aWYoIWUuYXNzaXN0KXJldHVybiBudWxsO2NvbnN0IHQ9ZS5hc3Npc3Q7cmV0dXJuIHQuc3BlYWsmJiIiIT09dC5zcGVha1tuc10/dC5zcGVha1tuc106dC50b29sVGlwP3QudG9vbFRpcFtuc106bnVsbH1mdW5jdGlvbiB2YWx1ZVRvSHRtbChlKXtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhUmljaCJdLHN0eWxlOk9iamVjdC5jcmVhdGUobnVsbCl9LGNoaWxkcmVuOlt7bmFtZToic3BhbiIsYXR0cmlidXRlczp7c3R5bGU6T2JqZWN0LmNyZWF0ZShudWxsKX0sdmFsdWU6ZX1dfSl9ZnVuY3Rpb24gc2V0Rmlyc3RVbnNwbGl0dGFibGUoZSl7Y29uc3QgdD1lW0ZzXSgpO2lmKG51bGw9PT10W0lzXS5maXJzdFVuc3BsaXR0YWJsZSl7dFtJc10uZmlyc3RVbnNwbGl0dGFibGU9ZTt0W0lzXS5ub0xheW91dEZhaWx1cmU9ITB9fWZ1bmN0aW9uIHVuc2V0Rmlyc3RVbnNwbGl0dGFibGUoZSl7Y29uc3QgdD1lW0ZzXSgpO3RbSXNdLmZpcnN0VW5zcGxpdHRhYmxlPT09ZSYmKHRbSXNdLm5vTGF5b3V0RmFpbHVyZT0hMSl9ZnVuY3Rpb24gaGFuZGxlQnJlYWsoZSl7aWYoZVtJc10pcmV0dXJuITE7ZVtJc109T2JqZWN0LmNyZWF0ZShudWxsKTtpZigiYXV0byI9PT1lLnRhcmdldFR5cGUpcmV0dXJuITE7Y29uc3QgdD1lW0ZzXSgpO2xldCBpPW51bGw7aWYoZS50YXJnZXQpe2k9dFt0bl0oZS50YXJnZXQsZVtEc10oKSk7aWYoIWkpcmV0dXJuITE7aT1pWzBdfWNvbnN0e2N1cnJlbnRQYWdlQXJlYTphLGN1cnJlbnRDb250ZW50QXJlYTpyfT10W0lzXTtpZigicGFnZUFyZWEiPT09ZS50YXJnZXRUeXBlKXtpIGluc3RhbmNlb2YgUGFnZUFyZWF8fChpPW51bGwpO2lmKGUuc3RhcnROZXcpe2VbSXNdLnRhcmdldD1pfHxhO3JldHVybiEwfWlmKGkmJmkhPT1hKXtlW0lzXS50YXJnZXQ9aTtyZXR1cm4hMH1yZXR1cm4hMX1pIGluc3RhbmNlb2YgQ29udGVudEFyZWF8fChpPW51bGwpO2NvbnN0IHM9aSYmaVtEc10oKTtsZXQgbixvPXM7aWYoZS5zdGFydE5ldylpZihpKXtjb25zdCBlPXMuY29udGVudEFyZWEuY2hpbGRyZW4sdD1lLmluZGV4T2YociksYT1lLmluZGV4T2YoaSk7LTEhPT10JiZ0PGEmJihvPW51bGwpO249YS0xfWVsc2Ugbj1hLmNvbnRlbnRBcmVhLmNoaWxkcmVuLmluZGV4T2Yocik7ZWxzZXtpZighaXx8aT09PXIpcmV0dXJuITE7bj1zLmNvbnRlbnRBcmVhLmNoaWxkcmVuLmluZGV4T2YoaSktMTtvPXM9PT1hP251bGw6c31lW0lzXS50YXJnZXQ9bztlW0lzXS5pbmRleD1uO3JldHVybiEwfWZ1bmN0aW9uIGhhbmRsZU92ZXJmbG93KGUsdCxpKXtjb25zdCBhPWVbRnNdKCkscj1hW0lzXS5ub0xheW91dEZhaWx1cmUscz10W2JzXTt0W2JzXT0oKT0+ZTthW0lzXS5ub0xheW91dEZhaWx1cmU9ITA7Y29uc3Qgbj10W0luXShpKTtlWyRyXShuLmh0bWwsbi5iYm94KTthW0lzXS5ub0xheW91dEZhaWx1cmU9cjt0W2JzXT1zfWNsYXNzIEFwcGVhcmFuY2VGaWx0ZXIgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sImFwcGVhcmFuY2VGaWx0ZXIiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIEFyYyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwiYXJjIiwhMCk7dGhpcy5jaXJjdWxhcj1nZXRJbnRlZ2VyKHtkYXRhOmUuY2lyY3VsYXIsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmhhbmQ9Z2V0U3RyaW5nT3B0aW9uKGUuaGFuZCxbImV2ZW4iLCJsZWZ0IiwicmlnaHQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnN0YXJ0QW5nbGU9Z2V0RmxvYXQoe2RhdGE6ZS5zdGFydEFuZ2xlLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PiEwfSk7dGhpcy5zd2VlcEFuZ2xlPWdldEZsb2F0KHtkYXRhOmUuc3dlZXBBbmdsZSxkZWZhdWx0VmFsdWU6MzYwLHZhbGlkYXRlOmU9PiEwfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZWRnZT1udWxsO3RoaXMuZmlsbD1udWxsfVtJbl0oKXtjb25zdCBlPXRoaXMuZWRnZXx8bmV3IEVkZ2Uoe30pLHQ9ZVtDbl0oKSxpPU9iamVjdC5jcmVhdGUobnVsbCk7InZpc2libGUiPT09dGhpcy5maWxsPy5wcmVzZW5jZT9PYmplY3QuYXNzaWduKGksdGhpcy5maWxsW0NuXSgpKTppLmZpbGw9InRyYW5zcGFyZW50IjtpLnN0cm9rZVdpZHRoPW1lYXN1cmVUb1N0cmluZygidmlzaWJsZSI9PT1lLnByZXNlbmNlP2UudGhpY2tuZXNzOjApO2kuc3Ryb2tlPXQuY29sb3I7bGV0IGE7Y29uc3Qgcj17eG1sbnM6T24sc3R5bGU6e3dpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUiLG92ZXJmbG93OiJ2aXNpYmxlIn19O2lmKDM2MD09PXRoaXMuc3dlZXBBbmdsZSlhPXtuYW1lOiJlbGxpcHNlIixhdHRyaWJ1dGVzOnt4bWxuczpPbixjeDoiNTAlIixjeToiNTAlIixyeDoiNTAlIixyeToiNTAlIixzdHlsZTppfX07ZWxzZXtjb25zdCBlPXRoaXMuc3RhcnRBbmdsZSpNYXRoLlBJLzE4MCx0PXRoaXMuc3dlZXBBbmdsZSpNYXRoLlBJLzE4MCxzPXRoaXMuc3dlZXBBbmdsZT4xODA/MTowLFtuLG8sZyxjXT1bNTAqKDErTWF0aC5jb3MoZSkpLDUwKigxLU1hdGguc2luKGUpKSw1MCooMStNYXRoLmNvcyhlK3QpKSw1MCooMS1NYXRoLnNpbihlK3QpKV07YT17bmFtZToicGF0aCIsYXR0cmlidXRlczp7eG1sbnM6T24sZDpgTSAke259ICR7b30gQSA1MCA1MCAwICR7c30gMCAke2d9ICR7Y31gLHZlY3RvckVmZmVjdDoibm9uLXNjYWxpbmctc3Ryb2tlIixzdHlsZTppfX07T2JqZWN0LmFzc2lnbihyLHt2aWV3Qm94OiIwIDAgMTAwIDEwMCIscHJlc2VydmVBc3BlY3RSYXRpbzoibm9uZSJ9KX1jb25zdCBzPXtuYW1lOiJzdmciLGNoaWxkcmVuOlthXSxhdHRyaWJ1dGVzOnJ9O2lmKGhhc01hcmdpbih0aGlzW0RzXSgpW0RzXSgpKSlyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e3N0eWxlOntkaXNwbGF5OiJpbmxpbmUiLHdpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUifX0sY2hpbGRyZW46W3NdfSk7cy5hdHRyaWJ1dGVzLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSI7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhzKX19Y2xhc3MgQXJlYSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwiYXJlYSIsITApO3RoaXMuY29sU3Bhbj1nZXRJbnRlZ2VyKHtkYXRhOmUuY29sU3BhbixkZWZhdWx0VmFsdWU6MSx2YWxpZGF0ZTplPT5lPj0xfHwtMT09PWV9KTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucmVsZXZhbnQ9Z2V0UmVsZXZhbnQoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMueD1nZXRNZWFzdXJlbWVudChlLngsIjBwdCIpO3RoaXMueT1nZXRNZWFzdXJlbWVudChlLnksIjBwdCIpO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5hcmVhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRyYXc9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhPYmplY3Q9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhjbEdyb3VwPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZpZWxkPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnN1YmZvcm09bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc3ViZm9ybVNldD1uZXcgWEZBT2JqZWN0QXJyYXl9Klt5c10oKXt5aWVsZCpnZXRDb250YWluZWRDaGlsZHJlbih0aGlzKX1bWXNdKCl7cmV0dXJuITB9W1VzXSgpe3JldHVybiEwfVskcl0oZSx0KXtjb25zdFtpLGEscixzXT10O3RoaXNbSXNdLndpZHRoPU1hdGgubWF4KHRoaXNbSXNdLndpZHRoLGkrcik7dGhpc1tJc10uaGVpZ2h0PU1hdGgubWF4KHRoaXNbSXNdLmhlaWdodCxhK3MpO3RoaXNbSXNdLmNoaWxkcmVuLnB1c2goZSl9W0JzXSgpe3JldHVybiB0aGlzW0lzXS5hdmFpbGFibGVTcGFjZX1bSW5dKGUpe2NvbnN0IHQ9dG9TdHlsZSh0aGlzLCJwb3NpdGlvbiIpLGk9e3N0eWxlOnQsaWQ6dGhpc1tobl0sY2xhc3M6WyJ4ZmFBcmVhIl19O2lzUHJpbnRPbmx5KHRoaXMpJiZpLmNsYXNzLnB1c2goInhmYVByaW50T25seSIpO3RoaXMubmFtZSYmKGkueGZhTmFtZT10aGlzLm5hbWUpO2NvbnN0IGE9W107dGhpc1tJc109e2NoaWxkcmVuOmEsd2lkdGg6MCxoZWlnaHQ6MCxhdmFpbGFibGVTcGFjZTplfTtjb25zdCByPXRoaXNbZXNdKHtmaWx0ZXI6bmV3IFNldChbImFyZWEiLCJkcmF3IiwiZmllbGQiLCJleGNsR3JvdXAiLCJzdWJmb3JtIiwic3ViZm9ybVNldCJdKSxpbmNsdWRlOiEwfSk7aWYoIXIuc3VjY2Vzcyl7aWYoci5pc0JyZWFrKCkpcmV0dXJuIHI7ZGVsZXRlIHRoaXNbSXNdO3JldHVybiBIVE1MUmVzdWx0LkZBSUxVUkV9dC53aWR0aD1tZWFzdXJlVG9TdHJpbmcodGhpc1tJc10ud2lkdGgpO3QuaGVpZ2h0PW1lYXN1cmVUb1N0cmluZyh0aGlzW0lzXS5oZWlnaHQpO2NvbnN0IHM9e25hbWU6ImRpdiIsYXR0cmlidXRlczppLGNoaWxkcmVuOmF9LG49W3RoaXMueCx0aGlzLnksdGhpc1tJc10ud2lkdGgsdGhpc1tJc10uaGVpZ2h0XTtkZWxldGUgdGhpc1tJc107cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhzLG4pfX1jbGFzcyBBc3Npc3QgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sImFzc2lzdCIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5yb2xlPWUucm9sZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuc3BlYWs9bnVsbDt0aGlzLnRvb2xUaXA9bnVsbH1bSW5dKCl7cmV0dXJuIHRoaXMudG9vbFRpcD8uW25zXXx8bnVsbH19Y2xhc3MgQmFyY29kZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwiYmFyY29kZSIsITApO3RoaXMuY2hhckVuY29kaW5nPWdldEtleXdvcmQoe2RhdGE6ZS5jaGFyRW5jb2Rpbmc/ZS5jaGFyRW5jb2RpbmcudG9Mb3dlckNhc2UoKToiIixkZWZhdWx0VmFsdWU6IiIsdmFsaWRhdGU6ZT0+WyJ1dGYtOCIsImJpZy1maXZlIiwiZm9udHNwZWNpZmljIiwiZ2JrIiwiZ2ItMTgwMzAiLCJnYi0yMzEyIiwia3NjLTU2MDEiLCJub25lIiwic2hpZnQtamlzIiwidWNzLTIiLCJ1dGYtMTYiXS5pbmNsdWRlcyhlKXx8ZS5tYXRjaCgvaXNvLTg4NTktXGR7Mn0vKX0pO3RoaXMuY2hlY2tzdW09Z2V0U3RyaW5nT3B0aW9uKGUuY2hlY2tzdW0sWyJub25lIiwiMW1vZDEwIiwiMW1vZDEwXzFtb2QxMSIsIjJtb2QxMCIsImF1dG8iXSk7dGhpcy5kYXRhQ29sdW1uQ291bnQ9Z2V0SW50ZWdlcih7ZGF0YTplLmRhdGFDb2x1bW5Db3VudCxkZWZhdWx0VmFsdWU6LTEsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMuZGF0YUxlbmd0aD1nZXRJbnRlZ2VyKHtkYXRhOmUuZGF0YUxlbmd0aCxkZWZhdWx0VmFsdWU6LTEsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMuZGF0YVByZXA9Z2V0U3RyaW5nT3B0aW9uKGUuZGF0YVByZXAsWyJub25lIiwiZmxhdGVDb21wcmVzcyJdKTt0aGlzLmRhdGFSb3dDb3VudD1nZXRJbnRlZ2VyKHtkYXRhOmUuZGF0YVJvd0NvdW50LGRlZmF1bHRWYWx1ZTotMSx2YWxpZGF0ZTplPT5lPj0wfSk7dGhpcy5lbmRDaGFyPWUuZW5kQ2hhcnx8IiI7dGhpcy5lcnJvckNvcnJlY3Rpb25MZXZlbD1nZXRJbnRlZ2VyKHtkYXRhOmUuZXJyb3JDb3JyZWN0aW9uTGV2ZWwsZGVmYXVsdFZhbHVlOi0xLHZhbGlkYXRlOmU9PmU+PTAmJmU8PTh9KTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubW9kdWxlSGVpZ2h0PWdldE1lYXN1cmVtZW50KGUubW9kdWxlSGVpZ2h0LCI1bW0iKTt0aGlzLm1vZHVsZVdpZHRoPWdldE1lYXN1cmVtZW50KGUubW9kdWxlV2lkdGgsIjAuMjVtbSIpO3RoaXMucHJpbnRDaGVja0RpZ2l0PWdldEludGVnZXIoe2RhdGE6ZS5wcmludENoZWNrRGlnaXQsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLnJvd0NvbHVtblJhdGlvPWdldFJhdGlvKGUucm93Q29sdW1uUmF0aW8pO3RoaXMuc3RhcnRDaGFyPWUuc3RhcnRDaGFyfHwiIjt0aGlzLnRleHRMb2NhdGlvbj1nZXRTdHJpbmdPcHRpb24oZS50ZXh0TG9jYXRpb24sWyJiZWxvdyIsImFib3ZlIiwiYWJvdmVFbWJlZGRlZCIsImJlbG93RW1iZWRkZWQiLCJub25lIl0pO3RoaXMudHJ1bmNhdGU9Z2V0SW50ZWdlcih7ZGF0YTplLnRydW5jYXRlLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGU/ZS50eXBlLnRvTG93ZXJDYXNlKCk6IiIsWyJhenRlYyIsImNvZGFiYXIiLCJjb2RlMm9mNWluZHVzdHJpYWwiLCJjb2RlMm9mNWludGVybGVhdmVkIiwiY29kZTJvZjVtYXRyaXgiLCJjb2RlMm9mNXN0YW5kYXJkIiwiY29kZTNvZjkiLCJjb2RlM29mOWV4dGVuZGVkIiwiY29kZTExIiwiY29kZTQ5IiwiY29kZTkzIiwiY29kZTEyOCIsImNvZGUxMjhhIiwiY29kZTEyOGIiLCJjb2RlMTI4YyIsImNvZGUxMjhzc2NjIiwiZGF0YW1hdHJpeCIsImVhbjgiLCJlYW44YWRkMiIsImVhbjhhZGQ1IiwiZWFuMTMiLCJlYW4xM2FkZDIiLCJlYW4xM2FkZDUiLCJlYW4xM3B3Y2QiLCJmaW0iLCJsb2dtYXJzIiwibWF4aWNvZGUiLCJtc2kiLCJwZGY0MTciLCJwZGY0MTdtYWNybyIsInBsZXNzZXkiLCJwb3N0YXVzY3VzdDIiLCJwb3N0YXVzY3VzdDMiLCJwb3N0YXVzcmVwbHlwYWlkIiwicG9zdGF1c3N0YW5kYXJkIiwicG9zdHVrcm00c2NjIiwicG9zdHVzZHBiYyIsInBvc3R1c2ltYiIsInBvc3R1c3N0YW5kYXJkIiwicG9zdHVzNXppcCIsInFyY29kZSIsInJmaWQiLCJyc3MxNCIsInJzczE0ZXhwYW5kZWQiLCJyc3MxNGxpbWl0ZWQiLCJyc3MxNHN0YWNrZWQiLCJyc3MxNHN0YWNrZWRvbW5pIiwicnNzMTR0cnVuY2F0ZWQiLCJ0ZWxlcGVuIiwidWNjMTI4IiwidWNjMTI4cmFuZG9tIiwidWNjMTI4c3NjYyIsInVwY2EiLCJ1cGNhYWRkMiIsInVwY2FhZGQ1IiwidXBjYXB3Y2QiLCJ1cGNlIiwidXBjZWFkZDIiLCJ1cGNlYWRkNSIsInVwY2VhbjIiLCJ1cGNlYW41IiwidXBzbWF4aWNvZGUiXSk7dGhpcy51cHNNb2RlPWdldFN0cmluZ09wdGlvbihlLnVwc01vZGUsWyJ1c0NhcnJpZXIiLCJpbnRlcm5hdGlvbmFsQ2FycmllciIsInNlY3VyZVN5bWJvbCIsInN0YW5kYXJkU3ltYm9sIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLndpZGVOYXJyb3dSYXRpbz1nZXRSYXRpbyhlLndpZGVOYXJyb3dSYXRpbyk7dGhpcy5lbmNyeXB0PW51bGw7dGhpcy5leHRyYXM9bnVsbH19Y2xhc3MgQmluZCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwiYmluZCIsITApO3RoaXMubWF0Y2g9Z2V0U3RyaW5nT3B0aW9uKGUubWF0Y2gsWyJvbmNlIiwiZGF0YVJlZiIsImdsb2JhbCIsIm5vbmUiXSk7dGhpcy5yZWY9ZS5yZWZ8fCIiO3RoaXMucGljdHVyZT1udWxsfX1jbGFzcyBCaW5kSXRlbXMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sImJpbmRJdGVtcyIpO3RoaXMuY29ubmVjdGlvbj1lLmNvbm5lY3Rpb258fCIiO3RoaXMubGFiZWxSZWY9ZS5sYWJlbFJlZnx8IiI7dGhpcy5yZWY9ZS5yZWZ8fCIiO3RoaXMudmFsdWVSZWY9ZS52YWx1ZVJlZnx8IiJ9fWNsYXNzIEJvb2tlbmQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sImJvb2tlbmQiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubGVhZGVyPWUubGVhZGVyfHwiIjt0aGlzLnRyYWlsZXI9ZS50cmFpbGVyfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIEJvb2xlYW5FbGVtZW50IGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sImJvb2xlYW4iKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bSW5dKGUpe3JldHVybiB2YWx1ZVRvSHRtbCgxPT09dGhpc1tuc10/IjEiOiIwIil9fWNsYXNzIEJvcmRlciBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwiYm9yZGVyIiwhMCk7dGhpcy5icmVhaz1nZXRTdHJpbmdPcHRpb24oZS5icmVhayxbImNsb3NlIiwib3BlbiJdKTt0aGlzLmhhbmQ9Z2V0U3RyaW5nT3B0aW9uKGUuaGFuZCxbImV2ZW4iLCJsZWZ0IiwicmlnaHQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnByZXNlbmNlPWdldFN0cmluZ09wdGlvbihlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMucmVsZXZhbnQ9Z2V0UmVsZXZhbnQoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY29ybmVyPW5ldyBYRkFPYmplY3RBcnJheSg0KTt0aGlzLmVkZ2U9bmV3IFhGQU9iamVjdEFycmF5KDQpO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5maWxsPW51bGw7dGhpcy5tYXJnaW49bnVsbH1bZnNdKCl7aWYoIXRoaXNbSXNdKXtjb25zdCBlPXRoaXMuZWRnZS5jaGlsZHJlbi5zbGljZSgpO2lmKGUubGVuZ3RoPDQpe2NvbnN0IHQ9ZS5hdCgtMSl8fG5ldyBFZGdlKHt9KTtmb3IobGV0IGk9ZS5sZW5ndGg7aTw0O2krKyllLnB1c2godCl9Y29uc3QgdD1lLm1hcCgoZT0+ZS50aGlja25lc3MpKSxpPVswLDAsMCwwXTtpZih0aGlzLm1hcmdpbil7aVswXT10aGlzLm1hcmdpbi50b3BJbnNldDtpWzFdPXRoaXMubWFyZ2luLnJpZ2h0SW5zZXQ7aVsyXT10aGlzLm1hcmdpbi5ib3R0b21JbnNldDtpWzNdPXRoaXMubWFyZ2luLmxlZnRJbnNldH10aGlzW0lzXT17d2lkdGhzOnQsaW5zZXRzOmksZWRnZXM6ZX19cmV0dXJuIHRoaXNbSXNdfVtDbl0oKXtjb25zdHtlZGdlczplfT10aGlzW2ZzXSgpLHQ9ZS5tYXAoKGU9Pntjb25zdCB0PWVbQ25dKCk7dC5jb2xvcnx8PSIjMDAwMDAwIjtyZXR1cm4gdH0pKSxpPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5tYXJnaW4mJk9iamVjdC5hc3NpZ24oaSx0aGlzLm1hcmdpbltDbl0oKSk7InZpc2libGUiPT09dGhpcy5maWxsPy5wcmVzZW5jZSYmT2JqZWN0LmFzc2lnbihpLHRoaXMuZmlsbFtDbl0oKSk7aWYodGhpcy5jb3JuZXIuY2hpbGRyZW4uc29tZSgoZT0+MCE9PWUucmFkaXVzKSkpe2NvbnN0IGU9dGhpcy5jb3JuZXIuY2hpbGRyZW4ubWFwKChlPT5lW0NuXSgpKSk7aWYoMj09PWUubGVuZ3RofHwzPT09ZS5sZW5ndGgpe2NvbnN0IHQ9ZS5hdCgtMSk7Zm9yKGxldCBpPWUubGVuZ3RoO2k8NDtpKyspZS5wdXNoKHQpfWkuYm9yZGVyUmFkaXVzPWUubWFwKChlPT5lLnJhZGl1cykpLmpvaW4oIiAiKX1zd2l0Y2godGhpcy5wcmVzZW5jZSl7Y2FzZSJpbnZpc2libGUiOmNhc2UiaGlkZGVuIjppLmJvcmRlclN0eWxlPSIiO2JyZWFrO2Nhc2UiaW5hY3RpdmUiOmkuYm9yZGVyU3R5bGU9Im5vbmUiO2JyZWFrO2RlZmF1bHQ6aS5ib3JkZXJTdHlsZT10Lm1hcCgoZT0+ZS5zdHlsZSkpLmpvaW4oIiAiKX1pLmJvcmRlcldpZHRoPXQubWFwKChlPT5lLndpZHRoKSkuam9pbigiICIpO2kuYm9yZGVyQ29sb3I9dC5tYXAoKGU9PmUuY29sb3IpKS5qb2luKCIgIik7cmV0dXJuIGl9fWNsYXNzIEJyZWFrIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJicmVhayIsITApO3RoaXMuYWZ0ZXI9Z2V0U3RyaW5nT3B0aW9uKGUuYWZ0ZXIsWyJhdXRvIiwiY29udGVudEFyZWEiLCJwYWdlQXJlYSIsInBhZ2VFdmVuIiwicGFnZU9kZCJdKTt0aGlzLmFmdGVyVGFyZ2V0PWUuYWZ0ZXJUYXJnZXR8fCIiO3RoaXMuYmVmb3JlPWdldFN0cmluZ09wdGlvbihlLmJlZm9yZSxbImF1dG8iLCJjb250ZW50QXJlYSIsInBhZ2VBcmVhIiwicGFnZUV2ZW4iLCJwYWdlT2RkIl0pO3RoaXMuYmVmb3JlVGFyZ2V0PWUuYmVmb3JlVGFyZ2V0fHwiIjt0aGlzLmJvb2tlbmRMZWFkZXI9ZS5ib29rZW5kTGVhZGVyfHwiIjt0aGlzLmJvb2tlbmRUcmFpbGVyPWUuYm9va2VuZFRyYWlsZXJ8fCIiO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5vdmVyZmxvd0xlYWRlcj1lLm92ZXJmbG93TGVhZGVyfHwiIjt0aGlzLm92ZXJmbG93VGFyZ2V0PWUub3ZlcmZsb3dUYXJnZXR8fCIiO3RoaXMub3ZlcmZsb3dUcmFpbGVyPWUub3ZlcmZsb3dUcmFpbGVyfHwiIjt0aGlzLnN0YXJ0TmV3PWdldEludGVnZXIoe2RhdGE6ZS5zdGFydE5ldyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsfX1jbGFzcyBCcmVha0FmdGVyIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJicmVha0FmdGVyIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxlYWRlcj1lLmxlYWRlcnx8IiI7dGhpcy5zdGFydE5ldz1nZXRJbnRlZ2VyKHtkYXRhOmUuc3RhcnROZXcsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLnRhcmdldD1lLnRhcmdldHx8IiI7dGhpcy50YXJnZXRUeXBlPWdldFN0cmluZ09wdGlvbihlLnRhcmdldFR5cGUsWyJhdXRvIiwiY29udGVudEFyZWEiLCJwYWdlQXJlYSJdKTt0aGlzLnRyYWlsZXI9ZS50cmFpbGVyfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5zY3JpcHQ9bnVsbH19Y2xhc3MgQnJlYWtCZWZvcmUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sImJyZWFrQmVmb3JlIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxlYWRlcj1lLmxlYWRlcnx8IiI7dGhpcy5zdGFydE5ldz1nZXRJbnRlZ2VyKHtkYXRhOmUuc3RhcnROZXcsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLnRhcmdldD1lLnRhcmdldHx8IiI7dGhpcy50YXJnZXRUeXBlPWdldFN0cmluZ09wdGlvbihlLnRhcmdldFR5cGUsWyJhdXRvIiwiY29udGVudEFyZWEiLCJwYWdlQXJlYSJdKTt0aGlzLnRyYWlsZXI9ZS50cmFpbGVyfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5zY3JpcHQ9bnVsbH1bSW5dKGUpe3RoaXNbSXNdPXt9O3JldHVybiBIVE1MUmVzdWx0LkZBSUxVUkV9fWNsYXNzIEJ1dHRvbiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwiYnV0dG9uIiwhMCk7dGhpcy5oaWdobGlnaHQ9Z2V0U3RyaW5nT3B0aW9uKGUuaGlnaGxpZ2h0LFsiaW52ZXJ0ZWQiLCJub25lIiwib3V0bGluZSIsInB1c2giXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbH1bSW5dKGUpe2NvbnN0IHQ9dGhpc1tEc10oKVtEc10oKSxpPXtuYW1lOiJidXR0b24iLGF0dHJpYnV0ZXM6e2lkOnRoaXNbaG5dLGNsYXNzOlsieGZhQnV0dG9uIl0sc3R5bGU6e319LGNoaWxkcmVuOltdfTtmb3IoY29uc3QgZSBvZiB0LmV2ZW50LmNoaWxkcmVuKXtpZigiY2xpY2siIT09ZS5hY3Rpdml0eXx8IWUuc2NyaXB0KWNvbnRpbnVlO2NvbnN0IHQ9cmVjb3ZlckpzVVJMKGUuc2NyaXB0W25zXSk7aWYoIXQpY29udGludWU7Y29uc3QgYT1maXhVUkwodC51cmwpO2EmJmkuY2hpbGRyZW4ucHVzaCh7bmFtZToiYSIsYXR0cmlidXRlczp7aWQ6ImxpbmsiK3RoaXNbaG5dLGhyZWY6YSxuZXdXaW5kb3c6dC5uZXdXaW5kb3csY2xhc3M6WyJ4ZmFMaW5rIl0sc3R5bGU6e319LGNoaWxkcmVuOltdfSl9cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhpKX19Y2xhc3MgQ2FsY3VsYXRlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJjYWxjdWxhdGUiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMub3ZlcnJpZGU9Z2V0U3RyaW5nT3B0aW9uKGUub3ZlcnJpZGUsWyJkaXNhYmxlZCIsImVycm9yIiwiaWdub3JlIiwid2FybmluZyJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1lc3NhZ2U9bnVsbDt0aGlzLnNjcmlwdD1udWxsfX1jbGFzcyBDYXB0aW9uIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJjYXB0aW9uIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnBsYWNlbWVudD1nZXRTdHJpbmdPcHRpb24oZS5wbGFjZW1lbnQsWyJsZWZ0IiwiYm90dG9tIiwiaW5saW5lIiwicmlnaHQiLCJ0b3AiXSk7dGhpcy5wcmVzZW5jZT1nZXRTdHJpbmdPcHRpb24oZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKTt0aGlzLnJlc2VydmU9TWF0aC5jZWlsKGdldE1lYXN1cmVtZW50KGUucmVzZXJ2ZSkpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsO3RoaXMuZm9udD1udWxsO3RoaXMubWFyZ2luPW51bGw7dGhpcy5wYXJhPW51bGw7dGhpcy52YWx1ZT1udWxsfVtzbl0oZSl7X3NldFZhbHVlKHRoaXMsZSl9W2ZzXShlKXtpZighdGhpc1tJc10pe2xldHt3aWR0aDp0LGhlaWdodDppfT1lO3N3aXRjaCh0aGlzLnBsYWNlbWVudCl7Y2FzZSJsZWZ0IjpjYXNlInJpZ2h0IjpjYXNlImlubGluZSI6dD10aGlzLnJlc2VydmU8PTA/dDp0aGlzLnJlc2VydmU7YnJlYWs7Y2FzZSJ0b3AiOmNhc2UiYm90dG9tIjppPXRoaXMucmVzZXJ2ZTw9MD9pOnRoaXMucmVzZXJ2ZX10aGlzW0lzXT1sYXlvdXROb2RlKHRoaXMse3dpZHRoOnQsaGVpZ2h0Oml9KX1yZXR1cm4gdGhpc1tJc119W0luXShlKXtpZighdGhpcy52YWx1ZSlyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWTt0aGlzW3pzXSgpO2NvbnN0IHQ9dGhpcy52YWx1ZVtJbl0oZSkuaHRtbDtpZighdCl7dGhpc1tfc10oKTtyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWX1jb25zdCBpPXRoaXMucmVzZXJ2ZTtpZih0aGlzLnJlc2VydmU8PTApe2NvbnN0e3c6dCxoOml9PXRoaXNbZnNdKGUpO3N3aXRjaCh0aGlzLnBsYWNlbWVudCl7Y2FzZSJsZWZ0IjpjYXNlInJpZ2h0IjpjYXNlImlubGluZSI6dGhpcy5yZXNlcnZlPXQ7YnJlYWs7Y2FzZSJ0b3AiOmNhc2UiYm90dG9tIjp0aGlzLnJlc2VydmU9aX19Y29uc3QgYT1bXTsic3RyaW5nIj09dHlwZW9mIHQ/YS5wdXNoKHtuYW1lOiIjdGV4dCIsdmFsdWU6dH0pOmEucHVzaCh0KTtjb25zdCByPXRvU3R5bGUodGhpcywiZm9udCIsIm1hcmdpbiIsInZpc2liaWxpdHkiKTtzd2l0Y2godGhpcy5wbGFjZW1lbnQpe2Nhc2UibGVmdCI6Y2FzZSJyaWdodCI6dGhpcy5yZXNlcnZlPjAmJihyLndpZHRoPW1lYXN1cmVUb1N0cmluZyh0aGlzLnJlc2VydmUpKTticmVhaztjYXNlInRvcCI6Y2FzZSJib3R0b20iOnRoaXMucmVzZXJ2ZT4wJiYoci5oZWlnaHQ9bWVhc3VyZVRvU3RyaW5nKHRoaXMucmVzZXJ2ZSkpfXNldFBhcmEodGhpcyxudWxsLHQpO3RoaXNbX3NdKCk7dGhpcy5yZXNlcnZlPWk7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixhdHRyaWJ1dGVzOntzdHlsZTpyLGNsYXNzOlsieGZhQ2FwdGlvbiJdfSxjaGlsZHJlbjphfSl9fWNsYXNzIENlcnRpZmljYXRlIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJjZXJ0aWZpY2F0ZSIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBDZXJ0aWZpY2F0ZXMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sImNlcnRpZmljYXRlcyIsITApO3RoaXMuY3JlZGVudGlhbFNlcnZlclBvbGljeT1nZXRTdHJpbmdPcHRpb24oZS5jcmVkZW50aWFsU2VydmVyUG9saWN5LFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXJsPWUudXJsfHwiIjt0aGlzLnVybFBvbGljeT1lLnVybFBvbGljeXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZW5jcnlwdGlvbj1udWxsO3RoaXMuaXNzdWVycz1udWxsO3RoaXMua2V5VXNhZ2U9bnVsbDt0aGlzLm9pZHM9bnVsbDt0aGlzLnNpZ25pbmc9bnVsbDt0aGlzLnN1YmplY3RETnM9bnVsbH19Y2xhc3MgQ2hlY2tCdXR0b24gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sImNoZWNrQnV0dG9uIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm1hcms9Z2V0U3RyaW5nT3B0aW9uKGUubWFyayxbImRlZmF1bHQiLCJjaGVjayIsImNpcmNsZSIsImNyb3NzIiwiZGlhbW9uZCIsInNxdWFyZSIsInN0YXIiXSk7dGhpcy5zaGFwZT1nZXRTdHJpbmdPcHRpb24oZS5zaGFwZSxbInNxdWFyZSIsInJvdW5kIl0pO3RoaXMuc2l6ZT1nZXRNZWFzdXJlbWVudChlLnNpemUsIjEwcHQiKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWFyZ2luPW51bGx9W0luXShlKXtjb25zdCB0PXRvU3R5bGUoIm1hcmdpbiIpLGk9bWVhc3VyZVRvU3RyaW5nKHRoaXMuc2l6ZSk7dC53aWR0aD10LmhlaWdodD1pO2xldCBhLHIscztjb25zdCBuPXRoaXNbRHNdKClbRHNdKCksbz1uLml0ZW1zLmNoaWxkcmVuLmxlbmd0aCYmbi5pdGVtcy5jaGlsZHJlblswXVtJbl0oKS5odG1sfHxbXSxnPXtvbjoodm9pZCAwIT09b1swXT9vWzBdOiJvbiIpLnRvU3RyaW5nKCksb2ZmOih2b2lkIDAhPT1vWzFdP29bMV06Im9mZiIpLnRvU3RyaW5nKCl9LGM9KG4udmFsdWU/Lltvbl0oKXx8Im9mZiIpPT09Zy5vbnx8dm9pZCAwLEM9bltic10oKSxoPW5baG5dO2xldCBsO2lmKEMgaW5zdGFuY2VvZiBFeGNsR3JvdXApe3M9Q1tobl07YT0icmFkaW8iO3I9InhmYVJhZGlvIjtsPUNbb3NdPy5baG5dfHxDW2huXX1lbHNle2E9ImNoZWNrYm94IjtyPSJ4ZmFDaGVja2JveCI7bD1uW29zXT8uW2huXXx8bltobl19Y29uc3QgUT17bmFtZToiaW5wdXQiLGF0dHJpYnV0ZXM6e2NsYXNzOltyXSxzdHlsZTp0LGZpZWxkSWQ6aCxkYXRhSWQ6bCx0eXBlOmEsY2hlY2tlZDpjLHhmYU9uOmcub24seGZhT2ZmOmcub2ZmLCJhcmlhLWxhYmVsIjphcmlhTGFiZWwobiksImFyaWEtcmVxdWlyZWQiOiExfX07cyYmKFEuYXR0cmlidXRlcy5uYW1lPXMpO2lmKGlzUmVxdWlyZWQobikpe1EuYXR0cmlidXRlc1siYXJpYS1yZXF1aXJlZCJdPSEwO1EuYXR0cmlidXRlcy5yZXF1aXJlZD0hMH1yZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJsYWJlbCIsYXR0cmlidXRlczp7Y2xhc3M6WyJ4ZmFMYWJlbCJdfSxjaGlsZHJlbjpbUV19KX19Y2xhc3MgQ2hvaWNlTGlzdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwiY2hvaWNlTGlzdCIsITApO3RoaXMuY29tbWl0T249Z2V0U3RyaW5nT3B0aW9uKGUuY29tbWl0T24sWyJzZWxlY3QiLCJleGl0Il0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5vcGVuPWdldFN0cmluZ09wdGlvbihlLm9wZW4sWyJ1c2VyQ29udHJvbCIsImFsd2F5cyIsIm11bHRpU2VsZWN0Iiwib25FbnRyeSJdKTt0aGlzLnRleHRFbnRyeT1nZXRJbnRlZ2VyKHtkYXRhOmUudGV4dEVudHJ5LGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1hcmdpbj1udWxsfVtJbl0oZSl7Y29uc3QgdD10b1N0eWxlKHRoaXMsImJvcmRlciIsIm1hcmdpbiIpLGk9dGhpc1tEc10oKVtEc10oKSxhPXtmb250U2l6ZTpgY2FsYygke2kuZm9udD8uc2l6ZXx8MTB9cHggKiB2YXIoLS1zY2FsZS1mYWN0b3IpKWB9LHI9W107aWYoaS5pdGVtcy5jaGlsZHJlbi5sZW5ndGg+MCl7Y29uc3QgZT1pLml0ZW1zO2xldCB0PTAscz0wO2lmKDI9PT1lLmNoaWxkcmVuLmxlbmd0aCl7dD1lLmNoaWxkcmVuWzBdLnNhdmU7cz0xLXR9Y29uc3Qgbj1lLmNoaWxkcmVuW3RdW0luXSgpLmh0bWwsbz1lLmNoaWxkcmVuW3NdW0luXSgpLmh0bWw7bGV0IGc9ITE7Y29uc3QgYz1pLnZhbHVlPy5bb25dKCl8fCIiO2ZvcihsZXQgZT0wLHQ9bi5sZW5ndGg7ZTx0O2UrKyl7Y29uc3QgdD17bmFtZToib3B0aW9uIixhdHRyaWJ1dGVzOnt2YWx1ZTpvW2VdfHxuW2VdLHN0eWxlOmF9LHZhbHVlOm5bZV19O29bZV09PT1jJiYodC5hdHRyaWJ1dGVzLnNlbGVjdGVkPWc9ITApO3IucHVzaCh0KX1nfHxyLnNwbGljZSgwLDAse25hbWU6Im9wdGlvbiIsYXR0cmlidXRlczp7aGlkZGVuOiEwLHNlbGVjdGVkOiEwfSx2YWx1ZToiICJ9KX1jb25zdCBzPXtjbGFzczpbInhmYVNlbGVjdCJdLGZpZWxkSWQ6aVtobl0sZGF0YUlkOmlbb3NdPy5baG5dfHxpW2huXSxzdHlsZTp0LCJhcmlhLWxhYmVsIjphcmlhTGFiZWwoaSksImFyaWEtcmVxdWlyZWQiOiExfTtpZihpc1JlcXVpcmVkKGkpKXtzWyJhcmlhLXJlcXVpcmVkIl09ITA7cy5yZXF1aXJlZD0hMH0ibXVsdGlTZWxlY3QiPT09dGhpcy5vcGVuJiYocy5tdWx0aXBsZT0hMCk7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToibGFiZWwiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhTGFiZWwiXX0sY2hpbGRyZW46W3tuYW1lOiJzZWxlY3QiLGNoaWxkcmVuOnIsYXR0cmlidXRlczpzfV19KX19Y2xhc3MgQ29sb3IgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sImNvbG9yIiwhMCk7dGhpcy5jU3BhY2U9Z2V0U3RyaW5nT3B0aW9uKGUuY1NwYWNlLFsiU1JHQiJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnZhbHVlPWUudmFsdWU/ZnVuY3Rpb24gZ2V0Q29sb3IoZSx0PVswLDAsMF0pe2xldFtpLGEscl09dDtpZighZSlyZXR1cm57cjppLGc6YSxiOnJ9O2NvbnN0IHM9ZS50cmltKCkuc3BsaXQoL1xzKixccyovKS5tYXAoKGU9Pk1hdGgubWluKE1hdGgubWF4KDAscGFyc2VJbnQoZS50cmltKCksMTApKSwyNTUpKSkubWFwKChlPT5pc05hTihlKT8wOmUpKTtpZihzLmxlbmd0aDwzKXJldHVybntyOmksZzphLGI6cn07W2ksYSxyXT1zO3JldHVybntyOmksZzphLGI6cn19KGUudmFsdWUpOiIiO3RoaXMuZXh0cmFzPW51bGx9W2tzXSgpe3JldHVybiExfVtDbl0oKXtyZXR1cm4gdGhpcy52YWx1ZT9VdGlsLm1ha2VIZXhDb2xvcih0aGlzLnZhbHVlLnIsdGhpcy52YWx1ZS5nLHRoaXMudmFsdWUuYik6bnVsbH19Y2xhc3MgQ29tYiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwiY29tYiIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5udW1iZXJPZkNlbGxzPWdldEludGVnZXIoe2RhdGE6ZS5udW1iZXJPZkNlbGxzLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIENvbm5lY3QgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sImNvbm5lY3QiLCEwKTt0aGlzLmNvbm5lY3Rpb249ZS5jb25uZWN0aW9ufHwiIjt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucmVmPWUucmVmfHwiIjt0aGlzLnVzYWdlPWdldFN0cmluZ09wdGlvbihlLnVzYWdlLFsiZXhwb3J0QW5kSW1wb3J0IiwiZXhwb3J0T25seSIsImltcG9ydE9ubHkiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMucGljdHVyZT1udWxsfX1jbGFzcyBDb250ZW50QXJlYSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwiY29udGVudEFyZWEiLCEwKTt0aGlzLmg9Z2V0TWVhc3VyZW1lbnQoZS5oKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucmVsZXZhbnQ9Z2V0UmVsZXZhbnQoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudz1nZXRNZWFzdXJlbWVudChlLncpO3RoaXMueD1nZXRNZWFzdXJlbWVudChlLngsIjBwdCIpO3RoaXMueT1nZXRNZWFzdXJlbWVudChlLnksIjBwdCIpO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGx9W0luXShlKXtjb25zdCB0PXtsZWZ0Om1lYXN1cmVUb1N0cmluZyh0aGlzLngpLHRvcDptZWFzdXJlVG9TdHJpbmcodGhpcy55KSx3aWR0aDptZWFzdXJlVG9TdHJpbmcodGhpcy53KSxoZWlnaHQ6bWVhc3VyZVRvU3RyaW5nKHRoaXMuaCl9LGk9WyJ4ZmFDb250ZW50YXJlYSJdO2lzUHJpbnRPbmx5KHRoaXMpJiZpLnB1c2goInhmYVByaW50T25seSIpO3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImRpdiIsY2hpbGRyZW46W10sYXR0cmlidXRlczp7c3R5bGU6dCxjbGFzczppLGlkOnRoaXNbaG5dfX0pfX1jbGFzcyBDb3JuZXIgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sImNvcm5lciIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5pbnZlcnRlZD1nZXRJbnRlZ2VyKHtkYXRhOmUuaW52ZXJ0ZWQsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmpvaW49Z2V0U3RyaW5nT3B0aW9uKGUuam9pbixbInNxdWFyZSIsInJvdW5kIl0pO3RoaXMucHJlc2VuY2U9Z2V0U3RyaW5nT3B0aW9uKGUucHJlc2VuY2UsWyJ2aXNpYmxlIiwiaGlkZGVuIiwiaW5hY3RpdmUiLCJpbnZpc2libGUiXSk7dGhpcy5yYWRpdXM9Z2V0TWVhc3VyZW1lbnQoZS5yYWRpdXMpO3RoaXMuc3Ryb2tlPWdldFN0cmluZ09wdGlvbihlLnN0cm9rZSxbInNvbGlkIiwiZGFzaERvdCIsImRhc2hEb3REb3QiLCJkYXNoZWQiLCJkb3R0ZWQiLCJlbWJvc3NlZCIsImV0Y2hlZCIsImxvd2VyZWQiLCJyYWlzZWQiXSk7dGhpcy50aGlja25lc3M9Z2V0TWVhc3VyZW1lbnQoZS50aGlja25lc3MsIjAuNXB0Iik7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY29sb3I9bnVsbDt0aGlzLmV4dHJhcz1udWxsfVtDbl0oKXtjb25zdCBlPXRvU3R5bGUodGhpcywidmlzaWJpbGl0eSIpO2UucmFkaXVzPW1lYXN1cmVUb1N0cmluZygic3F1YXJlIj09PXRoaXMuam9pbj8wOnRoaXMucmFkaXVzKTtyZXR1cm4gZX19Y2xhc3MgRGF0ZUVsZW1lbnQgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJkYXRlIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W2NzXSgpe2NvbnN0IGU9dGhpc1tuc10udHJpbSgpO3RoaXNbbnNdPWU/bmV3IERhdGUoZSk6bnVsbH1bSW5dKGUpe3JldHVybiB2YWx1ZVRvSHRtbCh0aGlzW25zXT90aGlzW25zXS50b1N0cmluZygpOiIiKX19Y2xhc3MgRGF0ZVRpbWUgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJkYXRlVGltZSIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtjc10oKXtjb25zdCBlPXRoaXNbbnNdLnRyaW0oKTt0aGlzW25zXT1lP25ldyBEYXRlKGUpOm51bGx9W0luXShlKXtyZXR1cm4gdmFsdWVUb0h0bWwodGhpc1tuc10/dGhpc1tuc10udG9TdHJpbmcoKToiIil9fWNsYXNzIERhdGVUaW1lRWRpdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwiZGF0ZVRpbWVFZGl0IiwhMCk7dGhpcy5oU2Nyb2xsUG9saWN5PWdldFN0cmluZ09wdGlvbihlLmhTY3JvbGxQb2xpY3ksWyJhdXRvIiwib2ZmIiwib24iXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnBpY2tlcj1nZXRTdHJpbmdPcHRpb24oZS5waWNrZXIsWyJob3N0Iiwibm9uZSJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmNvbWI9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWFyZ2luPW51bGx9W0luXShlKXtjb25zdCB0PXRvU3R5bGUodGhpcywiYm9yZGVyIiwiZm9udCIsIm1hcmdpbiIpLGk9dGhpc1tEc10oKVtEc10oKSxhPXtuYW1lOiJpbnB1dCIsYXR0cmlidXRlczp7dHlwZToidGV4dCIsZmllbGRJZDppW2huXSxkYXRhSWQ6aVtvc10/Lltobl18fGlbaG5dLGNsYXNzOlsieGZhVGV4dGZpZWxkIl0sc3R5bGU6dCwiYXJpYS1sYWJlbCI6YXJpYUxhYmVsKGkpLCJhcmlhLXJlcXVpcmVkIjohMX19O2lmKGlzUmVxdWlyZWQoaSkpe2EuYXR0cmlidXRlc1siYXJpYS1yZXF1aXJlZCJdPSEwO2EuYXR0cmlidXRlcy5yZXF1aXJlZD0hMH1yZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJsYWJlbCIsYXR0cmlidXRlczp7Y2xhc3M6WyJ4ZmFMYWJlbCJdfSxjaGlsZHJlbjpbYV19KX19Y2xhc3MgRGVjaW1hbCBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sImRlY2ltYWwiKTt0aGlzLmZyYWNEaWdpdHM9Z2V0SW50ZWdlcih7ZGF0YTplLmZyYWNEaWdpdHMsZGVmYXVsdFZhbHVlOjIsdmFsaWRhdGU6ZT0+ITB9KTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubGVhZERpZ2l0cz1nZXRJbnRlZ2VyKHtkYXRhOmUubGVhZERpZ2l0cyxkZWZhdWx0VmFsdWU6LTEsdmFsaWRhdGU6ZT0+ITB9KTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W2NzXSgpe2NvbnN0IGU9cGFyc2VGbG9hdCh0aGlzW25zXS50cmltKCkpO3RoaXNbbnNdPWlzTmFOKGUpP251bGw6ZX1bSW5dKGUpe3JldHVybiB2YWx1ZVRvSHRtbChudWxsIT09dGhpc1tuc10/dGhpc1tuc10udG9TdHJpbmcoKToiIil9fWNsYXNzIERlZmF1bHRVaSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwiZGVmYXVsdFVpIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbH19Y2xhc3MgRGVzYyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwiZGVzYyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9vbGVhbj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRhdGVUaW1lPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRlY2ltYWw9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhEYXRhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZsb2F0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmltYWdlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmludGVnZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudGV4dD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50aW1lPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgRGlnZXN0TWV0aG9kIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJkaWdlc3RNZXRob2QiLFsiIiwiU0hBMSIsIlNIQTI1NiIsIlNIQTUxMiIsIlJJUEVNRDE2MCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgRGlnZXN0TWV0aG9kcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwiZGlnZXN0TWV0aG9kcyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmRpZ2VzdE1ldGhvZD1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIERyYXcgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sImRyYXciLCEwKTt0aGlzLmFuY2hvclR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUuYW5jaG9yVHlwZSxbInRvcExlZnQiLCJib3R0b21DZW50ZXIiLCJib3R0b21MZWZ0IiwiYm90dG9tUmlnaHQiLCJtaWRkbGVDZW50ZXIiLCJtaWRkbGVMZWZ0IiwibWlkZGxlUmlnaHQiLCJ0b3BDZW50ZXIiLCJ0b3BSaWdodCJdKTt0aGlzLmNvbFNwYW49Z2V0SW50ZWdlcih7ZGF0YTplLmNvbFNwYW4sZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZT0+ZT49MXx8LTE9PT1lfSk7dGhpcy5oPWUuaD9nZXRNZWFzdXJlbWVudChlLmgpOiIiO3RoaXMuaEFsaWduPWdldFN0cmluZ09wdGlvbihlLmhBbGlnbixbImxlZnQiLCJjZW50ZXIiLCJqdXN0aWZ5IiwianVzdGlmeUFsbCIsInJhZGl4IiwicmlnaHQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxvY2FsZT1lLmxvY2FsZXx8IiI7dGhpcy5tYXhIPWdldE1lYXN1cmVtZW50KGUubWF4SCwiMHB0Iik7dGhpcy5tYXhXPWdldE1lYXN1cmVtZW50KGUubWF4VywiMHB0Iik7dGhpcy5taW5IPWdldE1lYXN1cmVtZW50KGUubWluSCwiMHB0Iik7dGhpcy5taW5XPWdldE1lYXN1cmVtZW50KGUubWluVywiMHB0Iik7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5wcmVzZW5jZT1nZXRTdHJpbmdPcHRpb24oZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKTt0aGlzLnJlbGV2YW50PWdldFJlbGV2YW50KGUucmVsZXZhbnQpO3RoaXMucm90YXRlPWdldEludGVnZXIoe2RhdGE6ZS5yb3RhdGUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+ZSU5MD09MH0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnc9ZS53P2dldE1lYXN1cmVtZW50KGUudyk6IiI7dGhpcy54PWdldE1lYXN1cmVtZW50KGUueCwiMHB0Iik7dGhpcy55PWdldE1lYXN1cmVtZW50KGUueSwiMHB0Iik7dGhpcy5hc3Npc3Q9bnVsbDt0aGlzLmJvcmRlcj1udWxsO3RoaXMuY2FwdGlvbj1udWxsO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5mb250PW51bGw7dGhpcy5rZWVwPW51bGw7dGhpcy5tYXJnaW49bnVsbDt0aGlzLnBhcmE9bnVsbDt0aGlzLnRyYXZlcnNhbD1udWxsO3RoaXMudWk9bnVsbDt0aGlzLnZhbHVlPW51bGw7dGhpcy5zZXRQcm9wZXJ0eT1uZXcgWEZBT2JqZWN0QXJyYXl9W3NuXShlKXtfc2V0VmFsdWUodGhpcyxlKX1bSW5dKGUpe3NldFRhYkluZGV4KHRoaXMpO2lmKCJoaWRkZW4iPT09dGhpcy5wcmVzZW5jZXx8ImluYWN0aXZlIj09PXRoaXMucHJlc2VuY2UpcmV0dXJuIEhUTUxSZXN1bHQuRU1QVFk7Zml4RGltZW5zaW9ucyh0aGlzKTt0aGlzW3pzXSgpO2NvbnN0IHQ9dGhpcy53LGk9dGhpcy5oLHt3OmEsaDpyLGlzQnJva2VuOnN9PWxheW91dE5vZGUodGhpcyxlKTtpZihhJiYiIj09PXRoaXMudyl7aWYocyYmdGhpc1tic10oKVt2c10oKSl7dGhpc1tfc10oKTtyZXR1cm4gSFRNTFJlc3VsdC5GQUlMVVJFfXRoaXMudz1hfXImJiIiPT09dGhpcy5oJiYodGhpcy5oPXIpO3NldEZpcnN0VW5zcGxpdHRhYmxlKHRoaXMpO2lmKCFjaGVja0RpbWVuc2lvbnModGhpcyxlKSl7dGhpcy53PXQ7dGhpcy5oPWk7dGhpc1tfc10oKTtyZXR1cm4gSFRNTFJlc3VsdC5GQUlMVVJFfXVuc2V0Rmlyc3RVbnNwbGl0dGFibGUodGhpcyk7Y29uc3Qgbj10b1N0eWxlKHRoaXMsImZvbnQiLCJoQWxpZ24iLCJkaW1lbnNpb25zIiwicG9zaXRpb24iLCJwcmVzZW5jZSIsInJvdGF0ZSIsImFuY2hvclR5cGUiLCJib3JkZXIiLCJtYXJnaW4iKTtzZXRNaW5NYXhEaW1lbnNpb25zKHRoaXMsbik7aWYobi5tYXJnaW4pe24ucGFkZGluZz1uLm1hcmdpbjtkZWxldGUgbi5tYXJnaW59Y29uc3Qgbz1bInhmYURyYXciXTt0aGlzLmZvbnQmJm8ucHVzaCgieGZhRm9udCIpO2lzUHJpbnRPbmx5KHRoaXMpJiZvLnB1c2goInhmYVByaW50T25seSIpO2NvbnN0IGc9e3N0eWxlOm4saWQ6dGhpc1tobl0sY2xhc3M6b307dGhpcy5uYW1lJiYoZy54ZmFOYW1lPXRoaXMubmFtZSk7Y29uc3QgYz17bmFtZToiZGl2IixhdHRyaWJ1dGVzOmcsY2hpbGRyZW46W119O2FwcGx5QXNzaXN0KHRoaXMsZyk7Y29uc3QgQz1jb21wdXRlQmJveCh0aGlzLGMsZSksaD10aGlzLnZhbHVlP3RoaXMudmFsdWVbSW5dKGUpLmh0bWw6bnVsbDtpZihudWxsPT09aCl7dGhpcy53PXQ7dGhpcy5oPWk7dGhpc1tfc10oKTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKGNyZWF0ZVdyYXBwZXIodGhpcyxjKSxDKX1jLmNoaWxkcmVuLnB1c2goaCk7c2V0UGFyYSh0aGlzLG4saCk7dGhpcy53PXQ7dGhpcy5oPWk7dGhpc1tfc10oKTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKGNyZWF0ZVdyYXBwZXIodGhpcyxjKSxDKX19Y2xhc3MgRWRnZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwiZWRnZSIsITApO3RoaXMuY2FwPWdldFN0cmluZ09wdGlvbihlLmNhcCxbInNxdWFyZSIsImJ1dHQiLCJyb3VuZCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucHJlc2VuY2U9Z2V0U3RyaW5nT3B0aW9uKGUucHJlc2VuY2UsWyJ2aXNpYmxlIiwiaGlkZGVuIiwiaW5hY3RpdmUiLCJpbnZpc2libGUiXSk7dGhpcy5zdHJva2U9Z2V0U3RyaW5nT3B0aW9uKGUuc3Ryb2tlLFsic29saWQiLCJkYXNoRG90IiwiZGFzaERvdERvdCIsImRhc2hlZCIsImRvdHRlZCIsImVtYm9zc2VkIiwiZXRjaGVkIiwibG93ZXJlZCIsInJhaXNlZCJdKTt0aGlzLnRoaWNrbmVzcz1nZXRNZWFzdXJlbWVudChlLnRoaWNrbmVzcywiMC41cHQiKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5jb2xvcj1udWxsO3RoaXMuZXh0cmFzPW51bGx9W0NuXSgpe2NvbnN0IGU9dG9TdHlsZSh0aGlzLCJ2aXNpYmlsaXR5Iik7T2JqZWN0LmFzc2lnbihlLHtsaW5lY2FwOnRoaXMuY2FwLHdpZHRoOm1lYXN1cmVUb1N0cmluZyh0aGlzLnRoaWNrbmVzcyksY29sb3I6dGhpcy5jb2xvcj90aGlzLmNvbG9yW0NuXSgpOiIjMDAwMDAwIixzdHlsZToiIn0pO2lmKCJ2aXNpYmxlIiE9PXRoaXMucHJlc2VuY2UpZS5zdHlsZT0ibm9uZSI7ZWxzZSBzd2l0Y2godGhpcy5zdHJva2Upe2Nhc2Uic29saWQiOmUuc3R5bGU9InNvbGlkIjticmVhaztjYXNlImRhc2hEb3QiOmNhc2UiZGFzaERvdERvdCI6Y2FzZSJkYXNoZWQiOmUuc3R5bGU9ImRhc2hlZCI7YnJlYWs7Y2FzZSJkb3R0ZWQiOmUuc3R5bGU9ImRvdHRlZCI7YnJlYWs7Y2FzZSJlbWJvc3NlZCI6ZS5zdHlsZT0icmlkZ2UiO2JyZWFrO2Nhc2UiZXRjaGVkIjplLnN0eWxlPSJncm9vdmUiO2JyZWFrO2Nhc2UibG93ZXJlZCI6ZS5zdHlsZT0iaW5zZXQiO2JyZWFrO2Nhc2UicmFpc2VkIjplLnN0eWxlPSJvdXRzZXQifXJldHVybiBlfX1jbGFzcyBFbmNvZGluZyBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwiZW5jb2RpbmciLFsiYWRiZS54NTA5LnJzYV9zaGExIiwiYWRiZS5wa2NzNy5kZXRhY2hlZCIsImFkYmUucGtjczcuc2hhMSJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgRW5jb2RpbmdzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJlbmNvZGluZ3MiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5lbmNvZGluZz1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEVuY3J5cHQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sImVuY3J5cHQiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNlcnRpZmljYXRlPW51bGx9fWNsYXNzIEVuY3J5cHREYXRhIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJlbmNyeXB0RGF0YSIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5vcGVyYXRpb249Z2V0U3RyaW5nT3B0aW9uKGUub3BlcmF0aW9uLFsiZW5jcnlwdCIsImRlY3J5cHQiXSk7dGhpcy50YXJnZXQ9ZS50YXJnZXR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmZpbHRlcj1udWxsO3RoaXMubWFuaWZlc3Q9bnVsbH19Y2xhc3MgRW5jcnlwdGlvbiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwiZW5jcnlwdGlvbiIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNlcnRpZmljYXRlPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgRW5jcnlwdGlvbk1ldGhvZCBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwiZW5jcnlwdGlvbk1ldGhvZCIsWyIiLCJBRVMyNTYtQ0JDIiwiVFJJUExFREVTLUNCQyIsIkFFUzEyOC1DQkMiLCJBRVMxOTItQ0JDIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBFbmNyeXB0aW9uTWV0aG9kcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwiZW5jcnlwdGlvbk1ldGhvZHMiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5lbmNyeXB0aW9uTWV0aG9kPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgRXZlbnQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sImV2ZW50IiwhMCk7dGhpcy5hY3Rpdml0eT1nZXRTdHJpbmdPcHRpb24oZS5hY3Rpdml0eSxbImNsaWNrIiwiY2hhbmdlIiwiZG9jQ2xvc2UiLCJkb2NSZWFkeSIsImVudGVyIiwiZXhpdCIsImZ1bGwiLCJpbmRleENoYW5nZSIsImluaXRpYWxpemUiLCJtb3VzZURvd24iLCJtb3VzZUVudGVyIiwibW91c2VFeGl0IiwibW91c2VVcCIsInBvc3RFeGVjdXRlIiwicG9zdE9wZW4iLCJwb3N0UHJpbnQiLCJwb3N0U2F2ZSIsInBvc3RTaWduIiwicG9zdFN1Ym1pdCIsInByZUV4ZWN1dGUiLCJwcmVPcGVuIiwicHJlUHJpbnQiLCJwcmVTYXZlIiwicHJlU2lnbiIsInByZVN1Ym1pdCIsInJlYWR5IiwidmFsaWRhdGlvblN0YXRlIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5saXN0ZW49Z2V0U3RyaW5nT3B0aW9uKGUubGlzdGVuLFsicmVmT25seSIsInJlZkFuZERlc2NlbmRlbnRzIl0pO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucmVmPWUucmVmfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmVuY3J5cHREYXRhPW51bGw7dGhpcy5leGVjdXRlPW51bGw7dGhpcy5zY3JpcHQ9bnVsbDt0aGlzLnNpZ25EYXRhPW51bGw7dGhpcy5zdWJtaXQ9bnVsbH19Y2xhc3MgRXhEYXRhIGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwiZXhEYXRhIik7dGhpcy5jb250ZW50VHlwZT1lLmNvbnRlbnRUeXBlfHwiIjt0aGlzLmhyZWY9ZS5ocmVmfHwiIjt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubWF4TGVuZ3RoPWdldEludGVnZXIoe2RhdGE6ZS5tYXhMZW5ndGgsZGVmYXVsdFZhbHVlOi0xLHZhbGlkYXRlOmU9PmU+PS0xfSk7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5yaWQ9ZS5yaWR8fCIiO3RoaXMudHJhbnNmZXJFbmNvZGluZz1nZXRTdHJpbmdPcHRpb24oZS50cmFuc2ZlckVuY29kaW5nLFsibm9uZSIsImJhc2U2NCIsInBhY2thZ2UiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVt4c10oKXtyZXR1cm4idGV4dC9odG1sIj09PXRoaXMuY29udGVudFR5cGV9W2pzXShlKXtpZigidGV4dC9odG1sIj09PXRoaXMuY29udGVudFR5cGUmJmVbcXNdPT09Qm4ueGh0bWwuaWQpe3RoaXNbbnNdPWU7cmV0dXJuITB9aWYoInRleHQveG1sIj09PXRoaXMuY29udGVudFR5cGUpe3RoaXNbbnNdPWU7cmV0dXJuITB9cmV0dXJuITF9W0luXShlKXtyZXR1cm4idGV4dC9odG1sIj09PXRoaXMuY29udGVudFR5cGUmJnRoaXNbbnNdP3RoaXNbbnNdW0luXShlKTpIVE1MUmVzdWx0LkVNUFRZfX1jbGFzcyBFeE9iamVjdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwiZXhPYmplY3QiLCEwKTt0aGlzLmFyY2hpdmU9ZS5hcmNoaXZlfHwiIjt0aGlzLmNsYXNzSWQ9ZS5jbGFzc0lkfHwiIjt0aGlzLmNvZGVCYXNlPWUuY29kZUJhc2V8fCIiO3RoaXMuY29kZVR5cGU9ZS5jb2RlVHlwZXx8IiI7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmJvb2xlYW49bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlVGltZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kZWNpbWFsPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4RGF0YT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5leE9iamVjdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5mbG9hdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pbWFnZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pbnRlZ2VyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRleHQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudGltZT1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEV4Y2xHcm91cCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwiZXhjbEdyb3VwIiwhMCk7dGhpcy5hY2Nlc3M9Z2V0U3RyaW5nT3B0aW9uKGUuYWNjZXNzLFsib3BlbiIsIm5vbkludGVyYWN0aXZlIiwicHJvdGVjdGVkIiwicmVhZE9ubHkiXSk7dGhpcy5hY2Nlc3NLZXk9ZS5hY2Nlc3NLZXl8fCIiO3RoaXMuYW5jaG9yVHlwZT1nZXRTdHJpbmdPcHRpb24oZS5hbmNob3JUeXBlLFsidG9wTGVmdCIsImJvdHRvbUNlbnRlciIsImJvdHRvbUxlZnQiLCJib3R0b21SaWdodCIsIm1pZGRsZUNlbnRlciIsIm1pZGRsZUxlZnQiLCJtaWRkbGVSaWdodCIsInRvcENlbnRlciIsInRvcFJpZ2h0Il0pO3RoaXMuY29sU3Bhbj1nZXRJbnRlZ2VyKHtkYXRhOmUuY29sU3BhbixkZWZhdWx0VmFsdWU6MSx2YWxpZGF0ZTplPT5lPj0xfHwtMT09PWV9KTt0aGlzLmg9ZS5oP2dldE1lYXN1cmVtZW50KGUuaCk6IiI7dGhpcy5oQWxpZ249Z2V0U3RyaW5nT3B0aW9uKGUuaEFsaWduLFsibGVmdCIsImNlbnRlciIsImp1c3RpZnkiLCJqdXN0aWZ5QWxsIiwicmFkaXgiLCJyaWdodCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubGF5b3V0PWdldFN0cmluZ09wdGlvbihlLmxheW91dCxbInBvc2l0aW9uIiwibHItdGIiLCJybC1yb3ciLCJybC10YiIsInJvdyIsInRhYmxlIiwidGIiXSk7dGhpcy5tYXhIPWdldE1lYXN1cmVtZW50KGUubWF4SCwiMHB0Iik7dGhpcy5tYXhXPWdldE1lYXN1cmVtZW50KGUubWF4VywiMHB0Iik7dGhpcy5taW5IPWdldE1lYXN1cmVtZW50KGUubWluSCwiMHB0Iik7dGhpcy5taW5XPWdldE1lYXN1cmVtZW50KGUubWluVywiMHB0Iik7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5wcmVzZW5jZT1nZXRTdHJpbmdPcHRpb24oZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKTt0aGlzLnJlbGV2YW50PWdldFJlbGV2YW50KGUucmVsZXZhbnQpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnc9ZS53P2dldE1lYXN1cmVtZW50KGUudyk6IiI7dGhpcy54PWdldE1lYXN1cmVtZW50KGUueCwiMHB0Iik7dGhpcy55PWdldE1lYXN1cmVtZW50KGUueSwiMHB0Iik7dGhpcy5hc3Npc3Q9bnVsbDt0aGlzLmJpbmQ9bnVsbDt0aGlzLmJvcmRlcj1udWxsO3RoaXMuY2FsY3VsYXRlPW51bGw7dGhpcy5jYXB0aW9uPW51bGw7dGhpcy5kZXNjPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1hcmdpbj1udWxsO3RoaXMucGFyYT1udWxsO3RoaXMudHJhdmVyc2FsPW51bGw7dGhpcy52YWxpZGF0ZT1udWxsO3RoaXMuY29ubmVjdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5ldmVudD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5maWVsZD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zZXRQcm9wZXJ0eT1uZXcgWEZBT2JqZWN0QXJyYXl9W1VzXSgpe3JldHVybiEwfVtrc10oKXtyZXR1cm4hMH1bc25dKGUpe2Zvcihjb25zdCB0IG9mIHRoaXMuZmllbGQuY2hpbGRyZW4pe2lmKCF0LnZhbHVlKXtjb25zdCBlPW5ldyBWYWx1ZSh7fSk7dFtBc10oZSk7dC52YWx1ZT1lfXQudmFsdWVbc25dKGUpfX1bdnNdKCl7cmV0dXJuIHRoaXMubGF5b3V0LmVuZHNXaXRoKCItdGIiKSYmMD09PXRoaXNbSXNdLmF0dGVtcHQmJnRoaXNbSXNdLm51bWJlckluTGluZT4wfHx0aGlzW0RzXSgpW3ZzXSgpfVtKc10oKXtjb25zdCBlPXRoaXNbYnNdKCk7aWYoIWVbSnNdKCkpcmV0dXJuITE7aWYodm9pZCAwIT09dGhpc1tJc10uX2lzU3BsaXR0YWJsZSlyZXR1cm4gdGhpc1tJc10uX2lzU3BsaXR0YWJsZTtpZigicG9zaXRpb24iPT09dGhpcy5sYXlvdXR8fHRoaXMubGF5b3V0LmluY2x1ZGVzKCJyb3ciKSl7dGhpc1tJc10uX2lzU3BsaXR0YWJsZT0hMTtyZXR1cm4hMX1pZihlLmxheW91dD8uZW5kc1dpdGgoIi10YiIpJiYwIT09ZVtJc10ubnVtYmVySW5MaW5lKXJldHVybiExO3RoaXNbSXNdLl9pc1NwbGl0dGFibGU9ITA7cmV0dXJuITB9W0NzXSgpe3JldHVybiBmbHVzaEhUTUwodGhpcyl9WyRyXShlLHQpe2FkZEhUTUwodGhpcyxlLHQpfVtCc10oKXtyZXR1cm4gZ2V0QXZhaWxhYmxlU3BhY2UodGhpcyl9W0luXShlKXtzZXRUYWJJbmRleCh0aGlzKTtpZigiaGlkZGVuIj09PXRoaXMucHJlc2VuY2V8fCJpbmFjdGl2ZSI9PT10aGlzLnByZXNlbmNlfHwwPT09dGhpcy5ofHwwPT09dGhpcy53KXJldHVybiBIVE1MUmVzdWx0LkVNUFRZO2ZpeERpbWVuc2lvbnModGhpcyk7Y29uc3QgdD1bXSxpPXtpZDp0aGlzW2huXSxjbGFzczpbXX07c2V0QWNjZXNzKHRoaXMsaS5jbGFzcyk7dGhpc1tJc118fCh0aGlzW0lzXT1PYmplY3QuY3JlYXRlKG51bGwpKTtPYmplY3QuYXNzaWduKHRoaXNbSXNdLHtjaGlsZHJlbjp0LGF0dHJpYnV0ZXM6aSxhdHRlbXB0OjAsbGluZTpudWxsLG51bWJlckluTGluZTowLGF2YWlsYWJsZVNwYWNlOnt3aWR0aDpNYXRoLm1pbih0aGlzLnd8fDEvMCxlLndpZHRoKSxoZWlnaHQ6TWF0aC5taW4odGhpcy5ofHwxLzAsZS5oZWlnaHQpfSx3aWR0aDowLGhlaWdodDowLHByZXZIZWlnaHQ6MCxjdXJyZW50V2lkdGg6MH0pO2NvbnN0IGE9dGhpc1tKc10oKTthfHxzZXRGaXJzdFVuc3BsaXR0YWJsZSh0aGlzKTtpZighY2hlY2tEaW1lbnNpb25zKHRoaXMsZSkpcmV0dXJuIEhUTUxSZXN1bHQuRkFJTFVSRTtjb25zdCByPW5ldyBTZXQoWyJmaWVsZCJdKTtpZih0aGlzLmxheW91dC5pbmNsdWRlcygicm93Iikpe2NvbnN0IGU9dGhpc1tic10oKS5jb2x1bW5XaWR0aHM7aWYoQXJyYXkuaXNBcnJheShlKSYmZS5sZW5ndGg+MCl7dGhpc1tJc10uY29sdW1uV2lkdGhzPWU7dGhpc1tJc10uY3VycmVudENvbHVtbj0wfX1jb25zdCBzPXRvU3R5bGUodGhpcywiYW5jaG9yVHlwZSIsImRpbWVuc2lvbnMiLCJwb3NpdGlvbiIsInByZXNlbmNlIiwiYm9yZGVyIiwibWFyZ2luIiwiaEFsaWduIiksbj1bInhmYUV4Y2xncm91cCJdLG89bGF5b3V0Q2xhc3ModGhpcyk7byYmbi5wdXNoKG8pO2lzUHJpbnRPbmx5KHRoaXMpJiZuLnB1c2goInhmYVByaW50T25seSIpO2kuc3R5bGU9cztpLmNsYXNzPW47dGhpcy5uYW1lJiYoaS54ZmFOYW1lPXRoaXMubmFtZSk7dGhpc1t6c10oKTtjb25zdCBnPSJsci10YiI9PT10aGlzLmxheW91dHx8InJsLXRiIj09PXRoaXMubGF5b3V0LGM9Zz8yOjE7Zm9yKDt0aGlzW0lzXS5hdHRlbXB0PGM7dGhpc1tJc10uYXR0ZW1wdCsrKXtnJiYxPT09dGhpc1tJc10uYXR0ZW1wdCYmKHRoaXNbSXNdLm51bWJlckluTGluZT0wKTtjb25zdCBlPXRoaXNbZXNdKHtmaWx0ZXI6cixpbmNsdWRlOiEwfSk7aWYoZS5zdWNjZXNzKWJyZWFrO2lmKGUuaXNCcmVhaygpKXt0aGlzW19zXSgpO3JldHVybiBlfWlmKGcmJjA9PT10aGlzW0lzXS5hdHRlbXB0JiYwPT09dGhpc1tJc10ubnVtYmVySW5MaW5lJiYhdGhpc1tGc10oKVtJc10ubm9MYXlvdXRGYWlsdXJlKXt0aGlzW0lzXS5hdHRlbXB0PWM7YnJlYWt9fXRoaXNbX3NdKCk7YXx8dW5zZXRGaXJzdFVuc3BsaXR0YWJsZSh0aGlzKTtpZih0aGlzW0lzXS5hdHRlbXB0PT09Yyl7YXx8ZGVsZXRlIHRoaXNbSXNdO3JldHVybiBIVE1MUmVzdWx0LkZBSUxVUkV9bGV0IEM9MCxoPTA7aWYodGhpcy5tYXJnaW4pe0M9dGhpcy5tYXJnaW4ubGVmdEluc2V0K3RoaXMubWFyZ2luLnJpZ2h0SW5zZXQ7aD10aGlzLm1hcmdpbi50b3BJbnNldCt0aGlzLm1hcmdpbi5ib3R0b21JbnNldH1jb25zdCBsPU1hdGgubWF4KHRoaXNbSXNdLndpZHRoK0MsdGhpcy53fHwwKSxRPU1hdGgubWF4KHRoaXNbSXNdLmhlaWdodCtoLHRoaXMuaHx8MCksRT1bdGhpcy54LHRoaXMueSxsLFFdOyIiPT09dGhpcy53JiYocy53aWR0aD1tZWFzdXJlVG9TdHJpbmcobCkpOyIiPT09dGhpcy5oJiYocy5oZWlnaHQ9bWVhc3VyZVRvU3RyaW5nKFEpKTtjb25zdCB1PXtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6aSxjaGlsZHJlbjp0fTthcHBseUFzc2lzdCh0aGlzLGkpO2RlbGV0ZSB0aGlzW0lzXTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKGNyZWF0ZVdyYXBwZXIodGhpcyx1KSxFKX19Y2xhc3MgRXhlY3V0ZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwiZXhlY3V0ZSIpO3RoaXMuY29ubmVjdGlvbj1lLmNvbm5lY3Rpb258fCIiO3RoaXMuZXhlY3V0ZVR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUuZXhlY3V0ZVR5cGUsWyJpbXBvcnQiLCJyZW1lcmdlIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5ydW5BdD1nZXRTdHJpbmdPcHRpb24oZS5ydW5BdCxbImNsaWVudCIsImJvdGgiLCJzZXJ2ZXIiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBFeHRyYXMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sImV4dHJhcyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9vbGVhbj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRhdGVUaW1lPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRlY2ltYWw9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhEYXRhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4dHJhcz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5mbG9hdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pbWFnZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pbnRlZ2VyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRleHQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudGltZT1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEZpZWxkIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJmaWVsZCIsITApO3RoaXMuYWNjZXNzPWdldFN0cmluZ09wdGlvbihlLmFjY2VzcyxbIm9wZW4iLCJub25JbnRlcmFjdGl2ZSIsInByb3RlY3RlZCIsInJlYWRPbmx5Il0pO3RoaXMuYWNjZXNzS2V5PWUuYWNjZXNzS2V5fHwiIjt0aGlzLmFuY2hvclR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUuYW5jaG9yVHlwZSxbInRvcExlZnQiLCJib3R0b21DZW50ZXIiLCJib3R0b21MZWZ0IiwiYm90dG9tUmlnaHQiLCJtaWRkbGVDZW50ZXIiLCJtaWRkbGVMZWZ0IiwibWlkZGxlUmlnaHQiLCJ0b3BDZW50ZXIiLCJ0b3BSaWdodCJdKTt0aGlzLmNvbFNwYW49Z2V0SW50ZWdlcih7ZGF0YTplLmNvbFNwYW4sZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZT0+ZT49MXx8LTE9PT1lfSk7dGhpcy5oPWUuaD9nZXRNZWFzdXJlbWVudChlLmgpOiIiO3RoaXMuaEFsaWduPWdldFN0cmluZ09wdGlvbihlLmhBbGlnbixbImxlZnQiLCJjZW50ZXIiLCJqdXN0aWZ5IiwianVzdGlmeUFsbCIsInJhZGl4IiwicmlnaHQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxvY2FsZT1lLmxvY2FsZXx8IiI7dGhpcy5tYXhIPWdldE1lYXN1cmVtZW50KGUubWF4SCwiMHB0Iik7dGhpcy5tYXhXPWdldE1lYXN1cmVtZW50KGUubWF4VywiMHB0Iik7dGhpcy5taW5IPWdldE1lYXN1cmVtZW50KGUubWluSCwiMHB0Iik7dGhpcy5taW5XPWdldE1lYXN1cmVtZW50KGUubWluVywiMHB0Iik7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5wcmVzZW5jZT1nZXRTdHJpbmdPcHRpb24oZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKTt0aGlzLnJlbGV2YW50PWdldFJlbGV2YW50KGUucmVsZXZhbnQpO3RoaXMucm90YXRlPWdldEludGVnZXIoe2RhdGE6ZS5yb3RhdGUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+ZSU5MD09MH0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnc9ZS53P2dldE1lYXN1cmVtZW50KGUudyk6IiI7dGhpcy54PWdldE1lYXN1cmVtZW50KGUueCwiMHB0Iik7dGhpcy55PWdldE1lYXN1cmVtZW50KGUueSwiMHB0Iik7dGhpcy5hc3Npc3Q9bnVsbDt0aGlzLmJpbmQ9bnVsbDt0aGlzLmJvcmRlcj1udWxsO3RoaXMuY2FsY3VsYXRlPW51bGw7dGhpcy5jYXB0aW9uPW51bGw7dGhpcy5kZXNjPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmZvbnQ9bnVsbDt0aGlzLmZvcm1hdD1udWxsO3RoaXMuaXRlbXM9bmV3IFhGQU9iamVjdEFycmF5KDIpO3RoaXMua2VlcD1udWxsO3RoaXMubWFyZ2luPW51bGw7dGhpcy5wYXJhPW51bGw7dGhpcy50cmF2ZXJzYWw9bnVsbDt0aGlzLnVpPW51bGw7dGhpcy52YWxpZGF0ZT1udWxsO3RoaXMudmFsdWU9bnVsbDt0aGlzLmJpbmRJdGVtcz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5jb25uZWN0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV2ZW50PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnNldFByb3BlcnR5PW5ldyBYRkFPYmplY3RBcnJheX1bVXNdKCl7cmV0dXJuITB9W3NuXShlKXtfc2V0VmFsdWUodGhpcyxlKX1bSW5dKGUpe3NldFRhYkluZGV4KHRoaXMpO2lmKCF0aGlzLnVpKXt0aGlzLnVpPW5ldyBVaSh7fSk7dGhpcy51aVtTc109dGhpc1tTc107dGhpc1tBc10odGhpcy51aSk7bGV0IGU7c3dpdGNoKHRoaXMuaXRlbXMuY2hpbGRyZW4ubGVuZ3RoKXtjYXNlIDA6ZT1uZXcgVGV4dEVkaXQoe30pO3RoaXMudWkudGV4dEVkaXQ9ZTticmVhaztjYXNlIDE6ZT1uZXcgQ2hlY2tCdXR0b24oe30pO3RoaXMudWkuY2hlY2tCdXR0b249ZTticmVhaztjYXNlIDI6ZT1uZXcgQ2hvaWNlTGlzdCh7fSk7dGhpcy51aS5jaG9pY2VMaXN0PWV9dGhpcy51aVtBc10oZSl9aWYoIXRoaXMudWl8fCJoaWRkZW4iPT09dGhpcy5wcmVzZW5jZXx8ImluYWN0aXZlIj09PXRoaXMucHJlc2VuY2V8fDA9PT10aGlzLmh8fDA9PT10aGlzLncpcmV0dXJuIEhUTUxSZXN1bHQuRU1QVFk7dGhpcy5jYXB0aW9uJiZkZWxldGUgdGhpcy5jYXB0aW9uW0lzXTt0aGlzW3pzXSgpO2NvbnN0IHQ9dGhpcy5jYXB0aW9uP3RoaXMuY2FwdGlvbltJbl0oZSkuaHRtbDpudWxsLGk9dGhpcy53LGE9dGhpcy5oO2xldCByPTAscz0wO2lmKHRoaXMubWFyZ2luKXtyPXRoaXMubWFyZ2luLmxlZnRJbnNldCt0aGlzLm1hcmdpbi5yaWdodEluc2V0O3M9dGhpcy5tYXJnaW4udG9wSW5zZXQrdGhpcy5tYXJnaW4uYm90dG9tSW5zZXR9bGV0IG49bnVsbDtpZigiIj09PXRoaXMud3x8IiI9PT10aGlzLmgpe2xldCB0PW51bGwsaT1udWxsLGE9MCxvPTA7aWYodGhpcy51aS5jaGVja0J1dHRvbilhPW89dGhpcy51aS5jaGVja0J1dHRvbi5zaXplO2Vsc2V7Y29uc3R7dzp0LGg6aX09bGF5b3V0Tm9kZSh0aGlzLGUpO2lmKG51bGwhPT10KXthPXQ7bz1pfWVsc2Ugbz1mdW5jdGlvbiBmb250c19nZXRNZXRyaWNzKGUsdD0hMSl7bGV0IGk9bnVsbDtpZihlKXtjb25zdCB0PXN0cmlwUXVvdGVzKGUudHlwZWZhY2UpLGE9ZVtTc10uZm9udEZpbmRlci5maW5kKHQpO2k9c2VsZWN0Rm9udChlLGEpfWlmKCFpKXJldHVybntsaW5lSGVpZ2h0OjEyLGxpbmVHYXA6MixsaW5lTm9HYXA6MTB9O2NvbnN0IGE9ZS5zaXplfHwxMCxyPWkubGluZUhlaWdodD9NYXRoLm1heCh0PzA6MS4yLGkubGluZUhlaWdodCk6MS4yLHM9dm9pZCAwPT09aS5saW5lR2FwPy4yOmkubGluZUdhcDtyZXR1cm57bGluZUhlaWdodDpyKmEsbGluZUdhcDpzKmEsbGluZU5vR2FwOk1hdGgubWF4KDEsci1zKSphfX0odGhpcy5mb250LCEwKS5saW5lTm9HYXB9bj1nZXRCb3JkZXJEaW1zKHRoaXMudWlbZnNdKCkpO2ErPW4udztvKz1uLmg7aWYodGhpcy5jYXB0aW9uKXtjb25zdHt3OnIsaDpzLGlzQnJva2VuOm59PXRoaXMuY2FwdGlvbltmc10oZSk7aWYobiYmdGhpc1tic10oKVt2c10oKSl7dGhpc1tfc10oKTtyZXR1cm4gSFRNTFJlc3VsdC5GQUlMVVJFfXQ9cjtpPXM7c3dpdGNoKHRoaXMuY2FwdGlvbi5wbGFjZW1lbnQpe2Nhc2UibGVmdCI6Y2FzZSJyaWdodCI6Y2FzZSJpbmxpbmUiOnQrPWE7YnJlYWs7Y2FzZSJ0b3AiOmNhc2UiYm90dG9tIjppKz1vfX1lbHNle3Q9YTtpPW99aWYodCYmIiI9PT10aGlzLncpe3QrPXI7dGhpcy53PU1hdGgubWluKHRoaXMubWF4Vzw9MD8xLzA6dGhpcy5tYXhXLHRoaXMubWluVysxPHQ/dDp0aGlzLm1pblcpfWlmKGkmJiIiPT09dGhpcy5oKXtpKz1zO3RoaXMuaD1NYXRoLm1pbih0aGlzLm1heEg8PTA/MS8wOnRoaXMubWF4SCx0aGlzLm1pbkgrMTxpP2k6dGhpcy5taW5IKX19dGhpc1tfc10oKTtmaXhEaW1lbnNpb25zKHRoaXMpO3NldEZpcnN0VW5zcGxpdHRhYmxlKHRoaXMpO2lmKCFjaGVja0RpbWVuc2lvbnModGhpcyxlKSl7dGhpcy53PWk7dGhpcy5oPWE7dGhpc1tfc10oKTtyZXR1cm4gSFRNTFJlc3VsdC5GQUlMVVJFfXVuc2V0Rmlyc3RVbnNwbGl0dGFibGUodGhpcyk7Y29uc3Qgbz10b1N0eWxlKHRoaXMsImZvbnQiLCJkaW1lbnNpb25zIiwicG9zaXRpb24iLCJyb3RhdGUiLCJhbmNob3JUeXBlIiwicHJlc2VuY2UiLCJtYXJnaW4iLCJoQWxpZ24iKTtzZXRNaW5NYXhEaW1lbnNpb25zKHRoaXMsbyk7Y29uc3QgZz1bInhmYUZpZWxkIl07dGhpcy5mb250JiZnLnB1c2goInhmYUZvbnQiKTtpc1ByaW50T25seSh0aGlzKSYmZy5wdXNoKCJ4ZmFQcmludE9ubHkiKTtjb25zdCBjPXtzdHlsZTpvLGlkOnRoaXNbaG5dLGNsYXNzOmd9O2lmKG8ubWFyZ2luKXtvLnBhZGRpbmc9by5tYXJnaW47ZGVsZXRlIG8ubWFyZ2lufXNldEFjY2Vzcyh0aGlzLGcpO3RoaXMubmFtZSYmKGMueGZhTmFtZT10aGlzLm5hbWUpO2NvbnN0IEM9W10saD17bmFtZToiZGl2IixhdHRyaWJ1dGVzOmMsY2hpbGRyZW46Q307YXBwbHlBc3Npc3QodGhpcyxjKTtjb25zdCBsPXRoaXMuYm9yZGVyP3RoaXMuYm9yZGVyW0NuXSgpOm51bGwsUT1jb21wdXRlQmJveCh0aGlzLGgsZSksRT10aGlzLnVpW0luXSgpLmh0bWw7aWYoIUUpe09iamVjdC5hc3NpZ24obyxsKTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKGNyZWF0ZVdyYXBwZXIodGhpcyxoKSxRKX10aGlzW25uXSYmKEUuY2hpbGRyZW4/LlswXT9FLmNoaWxkcmVuWzBdLmF0dHJpYnV0ZXMudGFiaW5kZXg9dGhpc1tubl06RS5hdHRyaWJ1dGVzLnRhYmluZGV4PXRoaXNbbm5dKTtFLmF0dHJpYnV0ZXMuc3R5bGV8fChFLmF0dHJpYnV0ZXMuc3R5bGU9T2JqZWN0LmNyZWF0ZShudWxsKSk7bGV0IHU9bnVsbDtpZih0aGlzLnVpLmJ1dHRvbil7MT09PUUuY2hpbGRyZW4ubGVuZ3RoJiYoW3VdPUUuY2hpbGRyZW4uc3BsaWNlKDAsMSkpO09iamVjdC5hc3NpZ24oRS5hdHRyaWJ1dGVzLnN0eWxlLGwpfWVsc2UgT2JqZWN0LmFzc2lnbihvLGwpO0MucHVzaChFKTtpZih0aGlzLnZhbHVlKWlmKHRoaXMudWkuaW1hZ2VFZGl0KUUuY2hpbGRyZW4ucHVzaCh0aGlzLnZhbHVlW0luXSgpLmh0bWwpO2Vsc2UgaWYoIXRoaXMudWkuYnV0dG9uKXtsZXQgZT0iIjtpZih0aGlzLnZhbHVlLmV4RGF0YSllPXRoaXMudmFsdWUuZXhEYXRhW29uXSgpO2Vsc2UgaWYodGhpcy52YWx1ZS50ZXh0KWU9dGhpcy52YWx1ZS50ZXh0W2ZzXSgpO2Vsc2V7Y29uc3QgdD10aGlzLnZhbHVlW0luXSgpLmh0bWw7bnVsbCE9PXQmJihlPXQuY2hpbGRyZW5bMF0udmFsdWUpfXRoaXMudWkudGV4dEVkaXQmJnRoaXMudmFsdWUudGV4dD8ubWF4Q2hhcnMmJihFLmNoaWxkcmVuWzBdLmF0dHJpYnV0ZXMubWF4TGVuZ3RoPXRoaXMudmFsdWUudGV4dC5tYXhDaGFycyk7aWYoZSl7aWYodGhpcy51aS5udW1lcmljRWRpdCl7ZT1wYXJzZUZsb2F0KGUpO2U9aXNOYU4oZSk/IiI6ZS50b1N0cmluZygpfSJ0ZXh0YXJlYSI9PT1FLmNoaWxkcmVuWzBdLm5hbWU/RS5jaGlsZHJlblswXS5hdHRyaWJ1dGVzLnRleHRDb250ZW50PWU6RS5jaGlsZHJlblswXS5hdHRyaWJ1dGVzLnZhbHVlPWV9fWlmKCF0aGlzLnVpLmltYWdlRWRpdCYmRS5jaGlsZHJlbj8uWzBdJiZ0aGlzLmgpe249bnx8Z2V0Qm9yZGVyRGltcyh0aGlzLnVpW2ZzXSgpKTtsZXQgdD0wO2lmKHRoaXMuY2FwdGlvbiYmWyJ0b3AiLCJib3R0b20iXS5pbmNsdWRlcyh0aGlzLmNhcHRpb24ucGxhY2VtZW50KSl7dD10aGlzLmNhcHRpb24ucmVzZXJ2ZTt0PD0wJiYodD10aGlzLmNhcHRpb25bZnNdKGUpLmgpO2NvbnN0IGk9dGhpcy5oLXQtcy1uLmg7RS5jaGlsZHJlblswXS5hdHRyaWJ1dGVzLnN0eWxlLmhlaWdodD1tZWFzdXJlVG9TdHJpbmcoaSl9ZWxzZSBFLmNoaWxkcmVuWzBdLmF0dHJpYnV0ZXMuc3R5bGUuaGVpZ2h0PSIxMDAlIn11JiZFLmNoaWxkcmVuLnB1c2godSk7aWYoIXQpe0UuYXR0cmlidXRlcy5jbGFzcyYmRS5hdHRyaWJ1dGVzLmNsYXNzLnB1c2goInhmYUxlZnQiKTt0aGlzLnc9aTt0aGlzLmg9YTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKGNyZWF0ZVdyYXBwZXIodGhpcyxoKSxRKX1pZih0aGlzLnVpLmJ1dHRvbil7by5wYWRkaW5nJiZkZWxldGUgby5wYWRkaW5nOyJkaXYiPT09dC5uYW1lJiYodC5uYW1lPSJzcGFuIik7RS5jaGlsZHJlbi5wdXNoKHQpO3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3MoaCxRKX10aGlzLnVpLmNoZWNrQnV0dG9uJiYodC5hdHRyaWJ1dGVzLmNsYXNzWzBdPSJ4ZmFDYXB0aW9uRm9yQ2hlY2tCdXR0b24iKTtFLmF0dHJpYnV0ZXMuY2xhc3N8fChFLmF0dHJpYnV0ZXMuY2xhc3M9W10pO0UuY2hpbGRyZW4uc3BsaWNlKDAsMCx0KTtzd2l0Y2godGhpcy5jYXB0aW9uLnBsYWNlbWVudCl7Y2FzZSJsZWZ0IjpjYXNlImlubGluZSI6RS5hdHRyaWJ1dGVzLmNsYXNzLnB1c2goInhmYUxlZnQiKTticmVhaztjYXNlInJpZ2h0IjpFLmF0dHJpYnV0ZXMuY2xhc3MucHVzaCgieGZhUmlnaHQiKTticmVhaztjYXNlInRvcCI6RS5hdHRyaWJ1dGVzLmNsYXNzLnB1c2goInhmYVRvcCIpO2JyZWFrO2Nhc2UiYm90dG9tIjpFLmF0dHJpYnV0ZXMuY2xhc3MucHVzaCgieGZhQm90dG9tIil9dGhpcy53PWk7dGhpcy5oPWE7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhjcmVhdGVXcmFwcGVyKHRoaXMsaCksUSl9fWNsYXNzIEZpbGwgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sImZpbGwiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucHJlc2VuY2U9Z2V0U3RyaW5nT3B0aW9uKGUucHJlc2VuY2UsWyJ2aXNpYmxlIiwiaGlkZGVuIiwiaW5hY3RpdmUiLCJpbnZpc2libGUiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY29sb3I9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMubGluZWFyPW51bGw7dGhpcy5wYXR0ZXJuPW51bGw7dGhpcy5yYWRpYWw9bnVsbDt0aGlzLnNvbGlkPW51bGw7dGhpcy5zdGlwcGxlPW51bGx9W0NuXSgpe2NvbnN0IGU9dGhpc1tEc10oKSx0PWVbRHNdKClbRHNdKCksaT1PYmplY3QuY3JlYXRlKG51bGwpO2xldCBhPSJjb2xvciIscj1hO2lmKGUgaW5zdGFuY2VvZiBCb3JkZXIpe2E9ImJhY2tncm91bmQtY29sb3IiO3I9ImJhY2tncm91bmQiO3QgaW5zdGFuY2VvZiBVaSYmKGkuYmFja2dyb3VuZENvbG9yPSJ3aGl0ZSIpfWlmKGUgaW5zdGFuY2VvZiBSZWN0YW5nbGV8fGUgaW5zdGFuY2VvZiBBcmMpe2E9cj0iZmlsbCI7aS5maWxsPSJ3aGl0ZSJ9Zm9yKGNvbnN0IGUgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2lmKCJleHRyYXMiPT09ZXx8ImNvbG9yIj09PWUpY29udGludWU7Y29uc3QgdD10aGlzW2VdO2lmKCEodCBpbnN0YW5jZW9mIFhGQU9iamVjdCkpY29udGludWU7Y29uc3Qgcz10W0NuXSh0aGlzLmNvbG9yKTtzJiYoaVtzLnN0YXJ0c1dpdGgoIiMiKT9hOnJdPXMpO3JldHVybiBpfWlmKHRoaXMuY29sb3I/LnZhbHVlKXtjb25zdCBlPXRoaXMuY29sb3JbQ25dKCk7aVtlLnN0YXJ0c1dpdGgoIiMiKT9hOnJdPWV9cmV0dXJuIGl9fWNsYXNzIEZpbHRlciBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwiZmlsdGVyIiwhMCk7dGhpcy5hZGRSZXZvY2F0aW9uSW5mbz1nZXRTdHJpbmdPcHRpb24oZS5hZGRSZXZvY2F0aW9uSW5mbyxbIiIsInJlcXVpcmVkIiwib3B0aW9uYWwiLCJub25lIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudmVyc2lvbj1nZXRJbnRlZ2VyKHtkYXRhOnRoaXMudmVyc2lvbixkZWZhdWx0VmFsdWU6NSx2YWxpZGF0ZTplPT5lPj0xJiZlPD01fSk7dGhpcy5hcHBlYXJhbmNlRmlsdGVyPW51bGw7dGhpcy5jZXJ0aWZpY2F0ZXM9bnVsbDt0aGlzLmRpZ2VzdE1ldGhvZHM9bnVsbDt0aGlzLmVuY29kaW5ncz1udWxsO3RoaXMuZW5jcnlwdGlvbk1ldGhvZHM9bnVsbDt0aGlzLmhhbmRsZXI9bnVsbDt0aGlzLmxvY2tEb2N1bWVudD1udWxsO3RoaXMubWRwPW51bGw7dGhpcy5yZWFzb25zPW51bGw7dGhpcy50aW1lU3RhbXA9bnVsbH19Y2xhc3MgRmxvYXQgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJmbG9hdCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtjc10oKXtjb25zdCBlPXBhcnNlRmxvYXQodGhpc1tuc10udHJpbSgpKTt0aGlzW25zXT1pc05hTihlKT9udWxsOmV9W0luXShlKXtyZXR1cm4gdmFsdWVUb0h0bWwobnVsbCE9PXRoaXNbbnNdP3RoaXNbbnNdLnRvU3RyaW5nKCk6IiIpfX1jbGFzcyB0ZW1wbGF0ZV9Gb250IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJmb250IiwhMCk7dGhpcy5iYXNlbGluZVNoaWZ0PWdldE1lYXN1cmVtZW50KGUuYmFzZWxpbmVTaGlmdCk7dGhpcy5mb250SG9yaXpvbnRhbFNjYWxlPWdldEZsb2F0KHtkYXRhOmUuZm9udEhvcml6b250YWxTY2FsZSxkZWZhdWx0VmFsdWU6MTAwLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLmZvbnRWZXJ0aWNhbFNjYWxlPWdldEZsb2F0KHtkYXRhOmUuZm9udFZlcnRpY2FsU2NhbGUsZGVmYXVsdFZhbHVlOjEwMCx2YWxpZGF0ZTplPT5lPj0wfSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmtlcm5pbmdNb2RlPWdldFN0cmluZ09wdGlvbihlLmtlcm5pbmdNb2RlLFsibm9uZSIsInBhaXIiXSk7dGhpcy5sZXR0ZXJTcGFjaW5nPWdldE1lYXN1cmVtZW50KGUubGV0dGVyU3BhY2luZywiMCIpO3RoaXMubGluZVRocm91Z2g9Z2V0SW50ZWdlcih7ZGF0YTplLmxpbmVUaHJvdWdoLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfHwyPT09ZX0pO3RoaXMubGluZVRocm91Z2hQZXJpb2Q9Z2V0U3RyaW5nT3B0aW9uKGUubGluZVRocm91Z2hQZXJpb2QsWyJhbGwiLCJ3b3JkIl0pO3RoaXMub3ZlcmxpbmU9Z2V0SW50ZWdlcih7ZGF0YTplLm92ZXJsaW5lLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfHwyPT09ZX0pO3RoaXMub3ZlcmxpbmVQZXJpb2Q9Z2V0U3RyaW5nT3B0aW9uKGUub3ZlcmxpbmVQZXJpb2QsWyJhbGwiLCJ3b3JkIl0pO3RoaXMucG9zdHVyZT1nZXRTdHJpbmdPcHRpb24oZS5wb3N0dXJlLFsibm9ybWFsIiwiaXRhbGljIl0pO3RoaXMuc2l6ZT1nZXRNZWFzdXJlbWVudChlLnNpemUsIjEwcHQiKTt0aGlzLnR5cGVmYWNlPWUudHlwZWZhY2V8fCJDb3VyaWVyIjt0aGlzLnVuZGVybGluZT1nZXRJbnRlZ2VyKHtkYXRhOmUudW5kZXJsaW5lLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfHwyPT09ZX0pO3RoaXMudW5kZXJsaW5lUGVyaW9kPWdldFN0cmluZ09wdGlvbihlLnVuZGVybGluZVBlcmlvZCxbImFsbCIsIndvcmQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMud2VpZ2h0PWdldFN0cmluZ09wdGlvbihlLndlaWdodCxbIm5vcm1hbCIsImJvbGQiXSk7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmZpbGw9bnVsbH1bdHNdKGUpe3N1cGVyW3RzXShlKTt0aGlzW1NzXS51c2VkVHlwZWZhY2VzLmFkZCh0aGlzLnR5cGVmYWNlKX1bQ25dKCl7Y29uc3QgZT10b1N0eWxlKHRoaXMsImZpbGwiKSx0PWUuY29sb3I7aWYodClpZigiIzAwMDAwMCI9PT10KWRlbGV0ZSBlLmNvbG9yO2Vsc2UgaWYoIXQuc3RhcnRzV2l0aCgiIyIpKXtlLmJhY2tncm91bmQ9dDtlLmJhY2tncm91bmRDbGlwPSJ0ZXh0IjtlLmNvbG9yPSJ0cmFuc3BhcmVudCJ9dGhpcy5iYXNlbGluZVNoaWZ0JiYoZS52ZXJ0aWNhbEFsaWduPW1lYXN1cmVUb1N0cmluZyh0aGlzLmJhc2VsaW5lU2hpZnQpKTtlLmZvbnRLZXJuaW5nPSJub25lIj09PXRoaXMua2VybmluZ01vZGU/Im5vbmUiOiJub3JtYWwiO2UubGV0dGVyU3BhY2luZz1tZWFzdXJlVG9TdHJpbmcodGhpcy5sZXR0ZXJTcGFjaW5nKTtpZigwIT09dGhpcy5saW5lVGhyb3VnaCl7ZS50ZXh0RGVjb3JhdGlvbj0ibGluZS10aHJvdWdoIjsyPT09dGhpcy5saW5lVGhyb3VnaCYmKGUudGV4dERlY29yYXRpb25TdHlsZT0iZG91YmxlIil9aWYoMCE9PXRoaXMub3ZlcmxpbmUpe2UudGV4dERlY29yYXRpb249Im92ZXJsaW5lIjsyPT09dGhpcy5vdmVybGluZSYmKGUudGV4dERlY29yYXRpb25TdHlsZT0iZG91YmxlIil9ZS5mb250U3R5bGU9dGhpcy5wb3N0dXJlO2UuZm9udFNpemU9bWVhc3VyZVRvU3RyaW5nKC45OSp0aGlzLnNpemUpO3NldEZvbnRGYW1pbHkodGhpcyx0aGlzLHRoaXNbU3NdLmZvbnRGaW5kZXIsZSk7aWYoMCE9PXRoaXMudW5kZXJsaW5lKXtlLnRleHREZWNvcmF0aW9uPSJ1bmRlcmxpbmUiOzI9PT10aGlzLnVuZGVybGluZSYmKGUudGV4dERlY29yYXRpb25TdHlsZT0iZG91YmxlIil9ZS5mb250V2VpZ2h0PXRoaXMud2VpZ2h0O3JldHVybiBlfX1jbGFzcyBGb3JtYXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sImZvcm1hdCIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5waWN0dXJlPW51bGx9fWNsYXNzIEhhbmRsZXIgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sImhhbmRsZXIiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIEh5cGhlbmF0aW9uIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJoeXBoZW5hdGlvbiIpO3RoaXMuZXhjbHVkZUFsbENhcHM9Z2V0SW50ZWdlcih7ZGF0YTplLmV4Y2x1ZGVBbGxDYXBzLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5leGNsdWRlSW5pdGlhbENhcD1nZXRJbnRlZ2VyKHtkYXRhOmUuZXhjbHVkZUluaXRpYWxDYXAsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmh5cGhlbmF0ZT1nZXRJbnRlZ2VyKHtkYXRhOmUuaHlwaGVuYXRlLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnB1c2hDaGFyYWN0ZXJDb3VudD1nZXRJbnRlZ2VyKHtkYXRhOmUucHVzaENoYXJhY3RlckNvdW50LGRlZmF1bHRWYWx1ZTozLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLnJlbWFpbkNoYXJhY3RlckNvdW50PWdldEludGVnZXIoe2RhdGE6ZS5yZW1haW5DaGFyYWN0ZXJDb3VudCxkZWZhdWx0VmFsdWU6Myx2YWxpZGF0ZTplPT5lPj0wfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMud29yZENoYXJhY3RlckNvdW50PWdldEludGVnZXIoe2RhdGE6ZS53b3JkQ2hhcmFjdGVyQ291bnQsZGVmYXVsdFZhbHVlOjcsdmFsaWRhdGU6ZT0+ZT49MH0pfX1jbGFzcyBJbWFnZSBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwiaW1hZ2UiKTt0aGlzLmFzcGVjdD1nZXRTdHJpbmdPcHRpb24oZS5hc3BlY3QsWyJmaXQiLCJhY3R1YWwiLCJoZWlnaHQiLCJub25lIiwid2lkdGgiXSk7dGhpcy5jb250ZW50VHlwZT1lLmNvbnRlbnRUeXBlfHwiIjt0aGlzLmhyZWY9ZS5ocmVmfHwiIjt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudHJhbnNmZXJFbmNvZGluZz1nZXRTdHJpbmdPcHRpb24oZS50cmFuc2ZlckVuY29kaW5nLFsiYmFzZTY0Iiwibm9uZSIsInBhY2thZ2UiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtJbl0oKXtpZih0aGlzLmNvbnRlbnRUeXBlJiYhV24uaGFzKHRoaXMuY29udGVudFR5cGUudG9Mb3dlckNhc2UoKSkpcmV0dXJuIEhUTUxSZXN1bHQuRU1QVFk7bGV0IGU9dGhpc1tTc10uaW1hZ2VzJiZ0aGlzW1NzXS5pbWFnZXMuZ2V0KHRoaXMuaHJlZik7aWYoIWUmJih0aGlzLmhyZWZ8fCF0aGlzW25zXSkpcmV0dXJuIEhUTUxSZXN1bHQuRU1QVFk7ZXx8ImJhc2U2NCIhPT10aGlzLnRyYW5zZmVyRW5jb2Rpbmd8fChlPXN0cmluZ1RvQnl0ZXMoYXRvYih0aGlzW25zXSkpKTtpZighZSlyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWTtpZighdGhpcy5jb250ZW50VHlwZSl7Zm9yKGNvbnN0W3QsaV1vZiBqbilpZihlLmxlbmd0aD50Lmxlbmd0aCYmdC5ldmVyeSgoKHQsaSk9PnQ9PT1lW2ldKSkpe3RoaXMuY29udGVudFR5cGU9aTticmVha31pZighdGhpcy5jb250ZW50VHlwZSlyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWX1jb25zdCB0PW5ldyBCbG9iKFtlXSx7dHlwZTp0aGlzLmNvbnRlbnRUeXBlfSk7bGV0IGk7c3dpdGNoKHRoaXMuYXNwZWN0KXtjYXNlImZpdCI6Y2FzZSJhY3R1YWwiOmJyZWFrO2Nhc2UiaGVpZ2h0IjppPXtoZWlnaHQ6IjEwMCUiLG9iamVjdEZpdDoiZmlsbCJ9O2JyZWFrO2Nhc2Uibm9uZSI6aT17d2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSIsb2JqZWN0Rml0OiJmaWxsIn07YnJlYWs7Y2FzZSJ3aWR0aCI6aT17d2lkdGg6IjEwMCUiLG9iamVjdEZpdDoiZmlsbCJ9fWNvbnN0IGE9dGhpc1tEc10oKTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJpbWciLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhSW1hZ2UiXSxzdHlsZTppLHNyYzpVUkwuY3JlYXRlT2JqZWN0VVJMKHQpLGFsdDphP2FyaWFMYWJlbChhW0RzXSgpKTpudWxsfX0pfX1jbGFzcyBJbWFnZUVkaXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sImltYWdlRWRpdCIsITApO3RoaXMuZGF0YT1nZXRTdHJpbmdPcHRpb24oZS5kYXRhLFsibGluayIsImVtYmVkIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1hcmdpbj1udWxsfVtJbl0oZSl7cmV0dXJuImVtYmVkIj09PXRoaXMuZGF0YT9IVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImRpdiIsY2hpbGRyZW46W10sYXR0cmlidXRlczp7fX0pOkhUTUxSZXN1bHQuRU1QVFl9fWNsYXNzIEludGVnZXIgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJpbnRlZ2VyIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W2NzXSgpe2NvbnN0IGU9cGFyc2VJbnQodGhpc1tuc10udHJpbSgpLDEwKTt0aGlzW25zXT1pc05hTihlKT9udWxsOmV9W0luXShlKXtyZXR1cm4gdmFsdWVUb0h0bWwobnVsbCE9PXRoaXNbbnNdP3RoaXNbbnNdLnRvU3RyaW5nKCk6IiIpfX1jbGFzcyBJc3N1ZXJzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJpc3N1ZXJzIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY2VydGlmaWNhdGU9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBJdGVtcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwiaXRlbXMiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucHJlc2VuY2U9Z2V0U3RyaW5nT3B0aW9uKGUucHJlc2VuY2UsWyJ2aXNpYmxlIiwiaGlkZGVuIiwiaW5hY3RpdmUiLCJpbnZpc2libGUiXSk7dGhpcy5yZWY9ZS5yZWZ8fCIiO3RoaXMuc2F2ZT1nZXRJbnRlZ2VyKHtkYXRhOmUuc2F2ZSxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvb2xlYW49bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlVGltZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kZWNpbWFsPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4RGF0YT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5mbG9hdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pbWFnZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pbnRlZ2VyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRleHQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudGltZT1uZXcgWEZBT2JqZWN0QXJyYXl9W0luXSgpe2NvbnN0IGU9W107Zm9yKGNvbnN0IHQgb2YgdGhpc1ttc10oKSllLnB1c2godFtvbl0oKSk7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhlKX19Y2xhc3MgS2VlcCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwia2VlcCIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7Y29uc3QgdD1bIm5vbmUiLCJjb250ZW50QXJlYSIsInBhZ2VBcmVhIl07dGhpcy5pbnRhY3Q9Z2V0U3RyaW5nT3B0aW9uKGUuaW50YWN0LHQpO3RoaXMubmV4dD1nZXRTdHJpbmdPcHRpb24oZS5uZXh0LHQpO3RoaXMucHJldmlvdXM9Z2V0U3RyaW5nT3B0aW9uKGUucHJldmlvdXMsdCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGx9fWNsYXNzIEtleVVzYWdlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJrZXlVc2FnZSIpO2NvbnN0IHQ9WyIiLCJ5ZXMiLCJubyJdO3RoaXMuY3JsU2lnbj1nZXRTdHJpbmdPcHRpb24oZS5jcmxTaWduLHQpO3RoaXMuZGF0YUVuY2lwaGVybWVudD1nZXRTdHJpbmdPcHRpb24oZS5kYXRhRW5jaXBoZXJtZW50LHQpO3RoaXMuZGVjaXBoZXJPbmx5PWdldFN0cmluZ09wdGlvbihlLmRlY2lwaGVyT25seSx0KTt0aGlzLmRpZ2l0YWxTaWduYXR1cmU9Z2V0U3RyaW5nT3B0aW9uKGUuZGlnaXRhbFNpZ25hdHVyZSx0KTt0aGlzLmVuY2lwaGVyT25seT1nZXRTdHJpbmdPcHRpb24oZS5lbmNpcGhlck9ubHksdCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmtleUFncmVlbWVudD1nZXRTdHJpbmdPcHRpb24oZS5rZXlBZ3JlZW1lbnQsdCk7dGhpcy5rZXlDZXJ0U2lnbj1nZXRTdHJpbmdPcHRpb24oZS5rZXlDZXJ0U2lnbix0KTt0aGlzLmtleUVuY2lwaGVybWVudD1nZXRTdHJpbmdPcHRpb24oZS5rZXlFbmNpcGhlcm1lbnQsdCk7dGhpcy5ub25SZXB1ZGlhdGlvbj1nZXRTdHJpbmdPcHRpb24oZS5ub25SZXB1ZGlhdGlvbix0KTt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBMaW5lIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJsaW5lIiwhMCk7dGhpcy5oYW5kPWdldFN0cmluZ09wdGlvbihlLmhhbmQsWyJldmVuIiwibGVmdCIsInJpZ2h0Il0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5zbG9wZT1nZXRTdHJpbmdPcHRpb24oZS5zbG9wZSxbIlxcIiwiLyJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5lZGdlPW51bGx9W0luXSgpe2NvbnN0IGU9dGhpc1tEc10oKVtEc10oKSx0PXRoaXMuZWRnZXx8bmV3IEVkZ2Uoe30pLGk9dFtDbl0oKSxhPU9iamVjdC5jcmVhdGUobnVsbCkscj0idmlzaWJsZSI9PT10LnByZXNlbmNlP3QudGhpY2tuZXNzOjA7YS5zdHJva2VXaWR0aD1tZWFzdXJlVG9TdHJpbmcocik7YS5zdHJva2U9aS5jb2xvcjtsZXQgcyxuLG8sZyxjPSIxMDAlIixDPSIxMDAlIjtpZihlLnc8PXIpe1tzLG4sbyxnXT1bIjUwJSIsMCwiNTAlIiwiMTAwJSJdO2M9YS5zdHJva2VXaWR0aH1lbHNlIGlmKGUuaDw9cil7W3MsbixvLGddPVswLCI1MCUiLCIxMDAlIiwiNTAlIl07Qz1hLnN0cm9rZVdpZHRofWVsc2UiXFwiPT09dGhpcy5zbG9wZT9bcyxuLG8sZ109WzAsMCwiMTAwJSIsIjEwMCUiXTpbcyxuLG8sZ109WzAsIjEwMCUiLCIxMDAlIiwwXTtjb25zdCBoPXtuYW1lOiJzdmciLGNoaWxkcmVuOlt7bmFtZToibGluZSIsYXR0cmlidXRlczp7eG1sbnM6T24seDE6cyx5MTpuLHgyOm8seTI6ZyxzdHlsZTphfX1dLGF0dHJpYnV0ZXM6e3htbG5zOk9uLHdpZHRoOmMsaGVpZ2h0OkMsc3R5bGU6e292ZXJmbG93OiJ2aXNpYmxlIn19fTtpZihoYXNNYXJnaW4oZSkpcmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixhdHRyaWJ1dGVzOntzdHlsZTp7ZGlzcGxheToiaW5saW5lIix3aWR0aDoiMTAwJSIsaGVpZ2h0OiIxMDAlIn19LGNoaWxkcmVuOltoXX0pO2guYXR0cmlidXRlcy5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiO3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3MoaCl9fWNsYXNzIExpbmVhciBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwibGluZWFyIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZSxbInRvUmlnaHQiLCJ0b0JvdHRvbSIsInRvTGVmdCIsInRvVG9wIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNvbG9yPW51bGw7dGhpcy5leHRyYXM9bnVsbH1bQ25dKGUpe2U9ZT9lW0NuXSgpOiIjRkZGRkZGIjtyZXR1cm5gbGluZWFyLWdyYWRpZW50KCR7dGhpcy50eXBlLnJlcGxhY2UoLyhbUkJMVF0pLywiICQxIikudG9Mb3dlckNhc2UoKX0sICR7ZX0sICR7dGhpcy5jb2xvcj90aGlzLmNvbG9yW0NuXSgpOiIjMDAwMDAwIn0pYH19Y2xhc3MgTG9ja0RvY3VtZW50IGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwibG9ja0RvY3VtZW50Iik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtjc10oKXt0aGlzW25zXT1nZXRTdHJpbmdPcHRpb24odGhpc1tuc10sWyJhdXRvIiwiMCIsIjEiXSl9fWNsYXNzIE1hbmlmZXN0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJtYW5pZmVzdCIsITApO3RoaXMuYWN0aW9uPWdldFN0cmluZ09wdGlvbihlLmFjdGlvbixbImluY2x1ZGUiLCJhbGwiLCJleGNsdWRlIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5yZWY9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBNYXJnaW4gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sIm1hcmdpbiIsITApO3RoaXMuYm90dG9tSW5zZXQ9Z2V0TWVhc3VyZW1lbnQoZS5ib3R0b21JbnNldCwiMCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5sZWZ0SW5zZXQ9Z2V0TWVhc3VyZW1lbnQoZS5sZWZ0SW5zZXQsIjAiKTt0aGlzLnJpZ2h0SW5zZXQ9Z2V0TWVhc3VyZW1lbnQoZS5yaWdodEluc2V0LCIwIik7dGhpcy50b3BJbnNldD1nZXRNZWFzdXJlbWVudChlLnRvcEluc2V0LCIwIik7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGx9W0NuXSgpe3JldHVybnttYXJnaW46bWVhc3VyZVRvU3RyaW5nKHRoaXMudG9wSW5zZXQpKyIgIittZWFzdXJlVG9TdHJpbmcodGhpcy5yaWdodEluc2V0KSsiICIrbWVhc3VyZVRvU3RyaW5nKHRoaXMuYm90dG9tSW5zZXQpKyIgIittZWFzdXJlVG9TdHJpbmcodGhpcy5sZWZ0SW5zZXQpfX19Y2xhc3MgTWRwIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJtZHAiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucGVybWlzc2lvbnM9Z2V0SW50ZWdlcih7ZGF0YTplLnBlcm1pc3Npb25zLGRlZmF1bHRWYWx1ZToyLHZhbGlkYXRlOmU9PjE9PT1lfHwzPT09ZX0pO3RoaXMuc2lnbmF0dXJlVHlwZT1nZXRTdHJpbmdPcHRpb24oZS5zaWduYXR1cmVUeXBlLFsiZmlsbGVyIiwiYXV0aG9yIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgTWVkaXVtIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJtZWRpdW0iKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMuaW1hZ2luZ0JCb3g9ZnVuY3Rpb24gZ2V0QkJveChlKXtjb25zdCB0PS0xO2lmKCFlKXJldHVybnt4OnQseTp0LHdpZHRoOnQsaGVpZ2h0OnR9O2NvbnN0IGk9ZS50cmltKCkuc3BsaXQoL1xzKixccyovKS5tYXAoKGU9PmdldE1lYXN1cmVtZW50KGUsIi0xIikpKTtpZihpLmxlbmd0aDw0fHxpWzJdPDB8fGlbM108MClyZXR1cm57eDp0LHk6dCx3aWR0aDp0LGhlaWdodDp0fTtjb25zdFthLHIscyxuXT1pO3JldHVybnt4OmEseTpyLHdpZHRoOnMsaGVpZ2h0Om59fShlLmltYWdpbmdCQm94KTt0aGlzLmxvbmc9Z2V0TWVhc3VyZW1lbnQoZS5sb25nKTt0aGlzLm9yaWVudGF0aW9uPWdldFN0cmluZ09wdGlvbihlLm9yaWVudGF0aW9uLFsicG9ydHJhaXQiLCJsYW5kc2NhcGUiXSk7dGhpcy5zaG9ydD1nZXRNZWFzdXJlbWVudChlLnNob3J0KTt0aGlzLnN0b2NrPWUuc3RvY2t8fCIiO3RoaXMudHJheUluPWdldFN0cmluZ09wdGlvbihlLnRyYXlJbixbImF1dG8iLCJkZWxlZ2F0ZSIsInBhZ2VGcm9udCJdKTt0aGlzLnRyYXlPdXQ9Z2V0U3RyaW5nT3B0aW9uKGUudHJheU91dCxbImF1dG8iLCJkZWxlZ2F0ZSJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIE1lc3NhZ2UgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sIm1lc3NhZ2UiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnRleHQ9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBOdW1lcmljRWRpdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwibnVtZXJpY0VkaXQiLCEwKTt0aGlzLmhTY3JvbGxQb2xpY3k9Z2V0U3RyaW5nT3B0aW9uKGUuaFNjcm9sbFBvbGljeSxbImF1dG8iLCJvZmYiLCJvbiJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvcmRlcj1udWxsO3RoaXMuY29tYj1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tYXJnaW49bnVsbH1bSW5dKGUpe2NvbnN0IHQ9dG9TdHlsZSh0aGlzLCJib3JkZXIiLCJmb250IiwibWFyZ2luIiksaT10aGlzW0RzXSgpW0RzXSgpLGE9e25hbWU6ImlucHV0IixhdHRyaWJ1dGVzOnt0eXBlOiJ0ZXh0IixmaWVsZElkOmlbaG5dLGRhdGFJZDppW29zXT8uW2huXXx8aVtobl0sY2xhc3M6WyJ4ZmFUZXh0ZmllbGQiXSxzdHlsZTp0LCJhcmlhLWxhYmVsIjphcmlhTGFiZWwoaSksImFyaWEtcmVxdWlyZWQiOiExfX07aWYoaXNSZXF1aXJlZChpKSl7YS5hdHRyaWJ1dGVzWyJhcmlhLXJlcXVpcmVkIl09ITA7YS5hdHRyaWJ1dGVzLnJlcXVpcmVkPSEwfXJldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImxhYmVsIixhdHRyaWJ1dGVzOntjbGFzczpbInhmYUxhYmVsIl19LGNoaWxkcmVuOlthXX0pfX1jbGFzcyBPY2N1ciBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwib2NjdXIiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMuaW5pdGlhbD0iIiE9PWUuaW5pdGlhbD9nZXRJbnRlZ2VyKHtkYXRhOmUuaW5pdGlhbCxkZWZhdWx0VmFsdWU6IiIsdmFsaWRhdGU6ZT0+ITB9KToiIjt0aGlzLm1heD0iIiE9PWUubWF4P2dldEludGVnZXIoe2RhdGE6ZS5tYXgsZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZT0+ITB9KToiIjt0aGlzLm1pbj0iIiE9PWUubWluP2dldEludGVnZXIoe2RhdGE6ZS5taW4sZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZT0+ITB9KToiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbH1bdHNdKCl7Y29uc3QgZT10aGlzW0RzXSgpLHQ9dGhpcy5taW47IiI9PT10aGlzLm1pbiYmKHRoaXMubWluPWUgaW5zdGFuY2VvZiBQYWdlQXJlYXx8ZSBpbnN0YW5jZW9mIFBhZ2VTZXQ/MDoxKTsiIj09PXRoaXMubWF4JiYodGhpcy5tYXg9IiI9PT10P2UgaW5zdGFuY2VvZiBQYWdlQXJlYXx8ZSBpbnN0YW5jZW9mIFBhZ2VTZXQ/LTE6MTp0aGlzLm1pbik7LTEhPT10aGlzLm1heCYmdGhpcy5tYXg8dGhpcy5taW4mJih0aGlzLm1heD10aGlzLm1pbik7IiI9PT10aGlzLmluaXRpYWwmJih0aGlzLmluaXRpYWw9ZSBpbnN0YW5jZW9mIFRlbXBsYXRlPzE6dGhpcy5taW4pfX1jbGFzcyBPaWQgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sIm9pZCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBPaWRzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJvaWRzIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMub2lkPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgT3ZlcmZsb3cgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sIm92ZXJmbG93Iik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxlYWRlcj1lLmxlYWRlcnx8IiI7dGhpcy50YXJnZXQ9ZS50YXJnZXR8fCIiO3RoaXMudHJhaWxlcj1lLnRyYWlsZXJ8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bZnNdKCl7aWYoIXRoaXNbSXNdKXtjb25zdCBlPXRoaXNbRHNdKCksdD10aGlzW0ZzXSgpLGk9dFt0bl0odGhpcy50YXJnZXQsZSksYT10W3RuXSh0aGlzLmxlYWRlcixlKSxyPXRbdG5dKHRoaXMudHJhaWxlcixlKTt0aGlzW0lzXT17dGFyZ2V0Omk/LlswXXx8bnVsbCxsZWFkZXI6YT8uWzBdfHxudWxsLHRyYWlsZXI6cj8uWzBdfHxudWxsLGFkZExlYWRlcjohMSxhZGRUcmFpbGVyOiExfX1yZXR1cm4gdGhpc1tJc119fWNsYXNzIFBhZ2VBcmVhIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJwYWdlQXJlYSIsITApO3RoaXMuYmxhbmtPck5vdEJsYW5rPWdldFN0cmluZ09wdGlvbihlLmJsYW5rT3JOb3RCbGFuayxbImFueSIsImJsYW5rIiwibm90QmxhbmsiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmluaXRpYWxOdW1iZXI9Z2V0SW50ZWdlcih7ZGF0YTplLmluaXRpYWxOdW1iZXIsZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZT0+ITB9KTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLm51bWJlcmVkPWdldEludGVnZXIoe2RhdGE6ZS5udW1iZXJlZCxkZWZhdWx0VmFsdWU6MSx2YWxpZGF0ZTplPT4hMH0pO3RoaXMub2RkT3JFdmVuPWdldFN0cmluZ09wdGlvbihlLm9kZE9yRXZlbixbImFueSIsImV2ZW4iLCJvZGQiXSk7dGhpcy5wYWdlUG9zaXRpb249Z2V0U3RyaW5nT3B0aW9uKGUucGFnZVBvc2l0aW9uLFsiYW55IiwiZmlyc3QiLCJsYXN0Iiwib25seSIsInJlc3QiXSk7dGhpcy5yZWxldmFudD1nZXRSZWxldmFudChlLnJlbGV2YW50KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5kZXNjPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1lZGl1bT1udWxsO3RoaXMub2NjdXI9bnVsbDt0aGlzLmFyZWE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY29udGVudEFyZWE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZHJhdz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5leGNsR3JvdXA9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZmllbGQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc3ViZm9ybT1uZXcgWEZBT2JqZWN0QXJyYXl9W1RzXSgpe2lmKCF0aGlzW0lzXSl7dGhpc1tJc109e251bWJlck9mVXNlOjB9O3JldHVybiEwfXJldHVybiF0aGlzLm9jY3VyfHwtMT09PXRoaXMub2NjdXIubWF4fHx0aGlzW0lzXS5udW1iZXJPZlVzZTx0aGlzLm9jY3VyLm1heH1baXNdKCl7ZGVsZXRlIHRoaXNbSXNdfVt3c10oKXt0aGlzW0lzXXx8KHRoaXNbSXNdPXtudW1iZXJPZlVzZTowfSk7Y29uc3QgZT10aGlzW0RzXSgpO2lmKCJvcmRlcmVkT2NjdXJyZW5jZSI9PT1lLnJlbGF0aW9uJiZ0aGlzW1RzXSgpKXt0aGlzW0lzXS5udW1iZXJPZlVzZSs9MTtyZXR1cm4gdGhpc31yZXR1cm4gZVt3c10oKX1bQnNdKCl7cmV0dXJuIHRoaXNbSXNdLnNwYWNlfHx7d2lkdGg6MCxoZWlnaHQ6MH19W0luXSgpe3RoaXNbSXNdfHwodGhpc1tJc109e251bWJlck9mVXNlOjF9KTtjb25zdCBlPVtdO3RoaXNbSXNdLmNoaWxkcmVuPWU7Y29uc3QgdD1PYmplY3QuY3JlYXRlKG51bGwpO2lmKHRoaXMubWVkaXVtJiZ0aGlzLm1lZGl1bS5zaG9ydCYmdGhpcy5tZWRpdW0ubG9uZyl7dC53aWR0aD1tZWFzdXJlVG9TdHJpbmcodGhpcy5tZWRpdW0uc2hvcnQpO3QuaGVpZ2h0PW1lYXN1cmVUb1N0cmluZyh0aGlzLm1lZGl1bS5sb25nKTt0aGlzW0lzXS5zcGFjZT17d2lkdGg6dGhpcy5tZWRpdW0uc2hvcnQsaGVpZ2h0OnRoaXMubWVkaXVtLmxvbmd9O2lmKCJsYW5kc2NhcGUiPT09dGhpcy5tZWRpdW0ub3JpZW50YXRpb24pe2NvbnN0IGU9dC53aWR0aDt0LndpZHRoPXQuaGVpZ2h0O3QuaGVpZ2h0PWU7dGhpc1tJc10uc3BhY2U9e3dpZHRoOnRoaXMubWVkaXVtLmxvbmcsaGVpZ2h0OnRoaXMubWVkaXVtLnNob3J0fX19ZWxzZSB3YXJuKCJYRkEgLSBObyBtZWRpdW0gc3BlY2lmaWVkIGluIHBhZ2VBcmVhOiBwbGVhc2UgZmlsZSBhIGJ1Zy4iKTt0aGlzW2VzXSh7ZmlsdGVyOm5ldyBTZXQoWyJhcmVhIiwiZHJhdyIsImZpZWxkIiwic3ViZm9ybSJdKSxpbmNsdWRlOiEwfSk7dGhpc1tlc10oe2ZpbHRlcjpuZXcgU2V0KFsiY29udGVudEFyZWEiXSksaW5jbHVkZTohMH0pO3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImRpdiIsY2hpbGRyZW46ZSxhdHRyaWJ1dGVzOntjbGFzczpbInhmYVBhZ2UiXSxpZDp0aGlzW2huXSxzdHlsZTp0LHhmYU5hbWU6dGhpcy5uYW1lfX0pfX1jbGFzcyBQYWdlU2V0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJwYWdlU2V0IiwhMCk7dGhpcy5kdXBsZXhJbXBvc2l0aW9uPWdldFN0cmluZ09wdGlvbihlLmR1cGxleEltcG9zaXRpb24sWyJsb25nRWRnZSIsInNob3J0RWRnZSJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucmVsYXRpb249Z2V0U3RyaW5nT3B0aW9uKGUucmVsYXRpb24sWyJvcmRlcmVkT2NjdXJyZW5jZSIsImR1cGxleFBhZ2luYXRlZCIsInNpbXBsZXhQYWdpbmF0ZWQiXSk7dGhpcy5yZWxldmFudD1nZXRSZWxldmFudChlLnJlbGV2YW50KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm9jY3VyPW51bGw7dGhpcy5wYWdlQXJlYT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5wYWdlU2V0PW5ldyBYRkFPYmplY3RBcnJheX1baXNdKCl7Zm9yKGNvbnN0IGUgb2YgdGhpcy5wYWdlQXJlYS5jaGlsZHJlbillW2lzXSgpO2Zvcihjb25zdCBlIG9mIHRoaXMucGFnZVNldC5jaGlsZHJlbillW2lzXSgpfVtUc10oKXtyZXR1cm4hdGhpcy5vY2N1cnx8LTE9PT10aGlzLm9jY3VyLm1heHx8dGhpc1tJc10ubnVtYmVyT2ZVc2U8dGhpcy5vY2N1ci5tYXh9W3dzXSgpe3RoaXNbSXNdfHwodGhpc1tJc109e251bWJlck9mVXNlOjEscGFnZUluZGV4Oi0xLHBhZ2VTZXRJbmRleDotMX0pO2lmKCJvcmRlcmVkT2NjdXJyZW5jZSI9PT10aGlzLnJlbGF0aW9uKXtpZih0aGlzW0lzXS5wYWdlSW5kZXgrMTx0aGlzLnBhZ2VBcmVhLmNoaWxkcmVuLmxlbmd0aCl7dGhpc1tJc10ucGFnZUluZGV4Kz0xO3JldHVybiB0aGlzLnBhZ2VBcmVhLmNoaWxkcmVuW3RoaXNbSXNdLnBhZ2VJbmRleF1bd3NdKCl9aWYodGhpc1tJc10ucGFnZVNldEluZGV4KzE8dGhpcy5wYWdlU2V0LmNoaWxkcmVuLmxlbmd0aCl7dGhpc1tJc10ucGFnZVNldEluZGV4Kz0xO3JldHVybiB0aGlzLnBhZ2VTZXQuY2hpbGRyZW5bdGhpc1tJc10ucGFnZVNldEluZGV4XVt3c10oKX1pZih0aGlzW1RzXSgpKXt0aGlzW0lzXS5udW1iZXJPZlVzZSs9MTt0aGlzW0lzXS5wYWdlSW5kZXg9LTE7dGhpc1tJc10ucGFnZVNldEluZGV4PS0xO3JldHVybiB0aGlzW3dzXSgpfWNvbnN0IGU9dGhpc1tEc10oKTtpZihlIGluc3RhbmNlb2YgUGFnZVNldClyZXR1cm4gZVt3c10oKTt0aGlzW2lzXSgpO3JldHVybiB0aGlzW3dzXSgpfWNvbnN0IGU9dGhpc1tGc10oKVtJc10ucGFnZU51bWJlcix0PWUlMj09MD8iZXZlbiI6Im9kZCIsaT0wPT09ZT8iZmlyc3QiOiJyZXN0IjtsZXQgYT10aGlzLnBhZ2VBcmVhLmNoaWxkcmVuLmZpbmQoKGU9PmUub2RkT3JFdmVuPT09dCYmZS5wYWdlUG9zaXRpb249PT1pKSk7aWYoYSlyZXR1cm4gYTthPXRoaXMucGFnZUFyZWEuY2hpbGRyZW4uZmluZCgoZT0+ImFueSI9PT1lLm9kZE9yRXZlbiYmZS5wYWdlUG9zaXRpb249PT1pKSk7aWYoYSlyZXR1cm4gYTthPXRoaXMucGFnZUFyZWEuY2hpbGRyZW4uZmluZCgoZT0+ImFueSI9PT1lLm9kZE9yRXZlbiYmImFueSI9PT1lLnBhZ2VQb3NpdGlvbikpO3JldHVybiBhfHx0aGlzLnBhZ2VBcmVhLmNoaWxkcmVuWzBdfX1jbGFzcyBQYXJhIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJwYXJhIiwhMCk7dGhpcy5oQWxpZ249Z2V0U3RyaW5nT3B0aW9uKGUuaEFsaWduLFsibGVmdCIsImNlbnRlciIsImp1c3RpZnkiLCJqdXN0aWZ5QWxsIiwicmFkaXgiLCJyaWdodCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubGluZUhlaWdodD1lLmxpbmVIZWlnaHQ/Z2V0TWVhc3VyZW1lbnQoZS5saW5lSGVpZ2h0LCIwcHQiKToiIjt0aGlzLm1hcmdpbkxlZnQ9ZS5tYXJnaW5MZWZ0P2dldE1lYXN1cmVtZW50KGUubWFyZ2luTGVmdCwiMHB0Iik6IiI7dGhpcy5tYXJnaW5SaWdodD1lLm1hcmdpblJpZ2h0P2dldE1lYXN1cmVtZW50KGUubWFyZ2luUmlnaHQsIjBwdCIpOiIiO3RoaXMub3JwaGFucz1nZXRJbnRlZ2VyKHtkYXRhOmUub3JwaGFucyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT5lPj0wfSk7dGhpcy5wcmVzZXJ2ZT1lLnByZXNlcnZlfHwiIjt0aGlzLnJhZGl4T2Zmc2V0PWUucmFkaXhPZmZzZXQ/Z2V0TWVhc3VyZW1lbnQoZS5yYWRpeE9mZnNldCwiMHB0Iik6IiI7dGhpcy5zcGFjZUFib3ZlPWUuc3BhY2VBYm92ZT9nZXRNZWFzdXJlbWVudChlLnNwYWNlQWJvdmUsIjBwdCIpOiIiO3RoaXMuc3BhY2VCZWxvdz1lLnNwYWNlQmVsb3c/Z2V0TWVhc3VyZW1lbnQoZS5zcGFjZUJlbG93LCIwcHQiKToiIjt0aGlzLnRhYkRlZmF1bHQ9ZS50YWJEZWZhdWx0P2dldE1lYXN1cmVtZW50KHRoaXMudGFiRGVmYXVsdCk6IiI7dGhpcy50YWJTdG9wcz0oZS50YWJTdG9wc3x8IiIpLnRyaW0oKS5zcGxpdCgvXHMrLykubWFwKCgoZSx0KT0+dCUyPT0xP2dldE1lYXN1cmVtZW50KGUpOmUpKTt0aGlzLnRleHRJbmRlbnQ9ZS50ZXh0SW5kZW50P2dldE1lYXN1cmVtZW50KGUudGV4dEluZGVudCwiMHB0Iik6IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudkFsaWduPWdldFN0cmluZ09wdGlvbihlLnZBbGlnbixbInRvcCIsImJvdHRvbSIsIm1pZGRsZSJdKTt0aGlzLndpZG93cz1nZXRJbnRlZ2VyKHtkYXRhOmUud2lkb3dzLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLmh5cGhlbmF0aW9uPW51bGx9W0NuXSgpe2NvbnN0IGU9dG9TdHlsZSh0aGlzLCJoQWxpZ24iKTsiIiE9PXRoaXMubWFyZ2luTGVmdCYmKGUucGFkZGluZ0xlZnQ9bWVhc3VyZVRvU3RyaW5nKHRoaXMubWFyZ2luTGVmdCkpOyIiIT09dGhpcy5tYXJnaW5SaWdodCYmKGUucGFkZGluZ2lnaHQ9bWVhc3VyZVRvU3RyaW5nKHRoaXMubWFyZ2luUmlnaHQpKTsiIiE9PXRoaXMuc3BhY2VBYm92ZSYmKGUucGFkZGluZ1RvcD1tZWFzdXJlVG9TdHJpbmcodGhpcy5zcGFjZUFib3ZlKSk7IiIhPT10aGlzLnNwYWNlQmVsb3cmJihlLnBhZGRpbmdCb3R0b209bWVhc3VyZVRvU3RyaW5nKHRoaXMuc3BhY2VCZWxvdykpO2lmKCIiIT09dGhpcy50ZXh0SW5kZW50KXtlLnRleHRJbmRlbnQ9bWVhc3VyZVRvU3RyaW5nKHRoaXMudGV4dEluZGVudCk7Zml4VGV4dEluZGVudChlKX10aGlzLmxpbmVIZWlnaHQ+MCYmKGUubGluZUhlaWdodD1tZWFzdXJlVG9TdHJpbmcodGhpcy5saW5lSGVpZ2h0KSk7IiIhPT10aGlzLnRhYkRlZmF1bHQmJihlLnRhYlNpemU9bWVhc3VyZVRvU3RyaW5nKHRoaXMudGFiRGVmYXVsdCkpO3RoaXMudGFiU3RvcHMubGVuZ3RoO3RoaXMuaHlwaGVuYXRhdGlvbiYmT2JqZWN0LmFzc2lnbihlLHRoaXMuaHlwaGVuYXRhdGlvbltDbl0oKSk7cmV0dXJuIGV9fWNsYXNzIFBhc3N3b3JkRWRpdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwicGFzc3dvcmRFZGl0IiwhMCk7dGhpcy5oU2Nyb2xsUG9saWN5PWdldFN0cmluZ09wdGlvbihlLmhTY3JvbGxQb2xpY3ksWyJhdXRvIiwib2ZmIiwib24iXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnBhc3N3b3JkQ2hhcj1lLnBhc3N3b3JkQ2hhcnx8IioiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvcmRlcj1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tYXJnaW49bnVsbH19Y2xhc3MgdGVtcGxhdGVfUGF0dGVybiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwicGF0dGVybiIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJjcm9zc0hhdGNoIiwiY3Jvc3NEaWFnb25hbCIsImRpYWdvbmFsTGVmdCIsImRpYWdvbmFsUmlnaHQiLCJob3Jpem9udGFsIiwidmVydGljYWwiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY29sb3I9bnVsbDt0aGlzLmV4dHJhcz1udWxsfVtDbl0oZSl7ZT1lP2VbQ25dKCk6IiNGRkZGRkYiO2NvbnN0IHQ9dGhpcy5jb2xvcj90aGlzLmNvbG9yW0NuXSgpOiIjMDAwMDAwIixpPSJyZXBlYXRpbmctbGluZWFyLWdyYWRpZW50IixhPWAke2V9LCR7ZX0gNXB4LCR7dH0gNXB4LCR7dH0gMTBweGA7c3dpdGNoKHRoaXMudHlwZSl7Y2FzZSJjcm9zc0hhdGNoIjpyZXR1cm5gJHtpfSh0byB0b3AsJHthfSkgJHtpfSh0byByaWdodCwke2F9KWA7Y2FzZSJjcm9zc0RpYWdvbmFsIjpyZXR1cm5gJHtpfSg0NWRlZywke2F9KSAke2l9KC00NWRlZywke2F9KWA7Y2FzZSJkaWFnb25hbExlZnQiOnJldHVybmAke2l9KDQ1ZGVnLCR7YX0pYDtjYXNlImRpYWdvbmFsUmlnaHQiOnJldHVybmAke2l9KC00NWRlZywke2F9KWA7Y2FzZSJob3Jpem9udGFsIjpyZXR1cm5gJHtpfSh0byB0b3AsJHthfSlgO2Nhc2UidmVydGljYWwiOnJldHVybmAke2l9KHRvIHJpZ2h0LCR7YX0pYH1yZXR1cm4iIn19Y2xhc3MgUGljdHVyZSBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwicGljdHVyZSIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBQcm90byBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwicHJvdG8iLCEwKTt0aGlzLmFwcGVhcmFuY2VGaWx0ZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuYXJjPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmFyZWE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuYXNzaXN0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmJhcmNvZGU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuYmluZEl0ZW1zPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmJvb2tlbmQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuYm9vbGVhbj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5ib3JkZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuYnJlYWs9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuYnJlYWtBZnRlcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5icmVha0JlZm9yZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5idXR0b249bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY2FsY3VsYXRlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmNhcHRpb249bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY2VydGlmaWNhdGU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY2VydGlmaWNhdGVzPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmNoZWNrQnV0dG9uPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmNob2ljZUxpc3Q9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY29sb3I9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY29tYj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5jb25uZWN0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmNvbnRlbnRBcmVhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmNvcm5lcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRhdGVUaW1lPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRhdGVUaW1lRWRpdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kZWNpbWFsPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRlZmF1bHRVaT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kZXNjPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRpZ2VzdE1ldGhvZD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kaWdlc3RNZXRob2RzPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRyYXc9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZWRnZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5lbmNvZGluZz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5lbmNvZGluZ3M9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZW5jcnlwdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5lbmNyeXB0RGF0YT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5lbmNyeXB0aW9uPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmVuY3J5cHRpb25NZXRob2Q9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZW5jcnlwdGlvbk1ldGhvZHM9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXZlbnQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhEYXRhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4T2JqZWN0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4Y2xHcm91cD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5leGVjdXRlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4dHJhcz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5maWVsZD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5maWxsPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZpbHRlcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5mbG9hdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5mb250PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZvcm1hdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5oYW5kbGVyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmh5cGhlbmF0aW9uPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmltYWdlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmltYWdlRWRpdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pbnRlZ2VyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmlzc3VlcnM9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaXRlbXM9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMua2VlcD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5rZXlVc2FnZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5saW5lPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmxpbmVhcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5sb2NrRG9jdW1lbnQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMubWFuaWZlc3Q9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMubWFyZ2luPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLm1kcD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5tZWRpdW09bmV3IFhGQU9iamVjdEFycmF5O3RoaXMubWVzc2FnZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5udW1lcmljRWRpdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5vY2N1cj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5vaWQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMub2lkcz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5vdmVyZmxvdz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5wYWdlQXJlYT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5wYWdlU2V0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnBhcmE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucGFzc3dvcmRFZGl0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnBhdHRlcm49bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucGljdHVyZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5yYWRpYWw9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucmVhc29uPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnJlYXNvbnM9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucmVjdGFuZ2xlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnJlZj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zY3JpcHQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc2V0UHJvcGVydHk9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc2lnbkRhdGE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc2lnbmF0dXJlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnNpZ25pbmc9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc29saWQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc3BlYWs9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc3RpcHBsZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJmb3JtPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnN1YmZvcm1TZXQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc3ViamVjdEROPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnN1YmplY3RETnM9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc3VibWl0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRleHQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudGV4dEVkaXQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudGltZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50aW1lU3RhbXA9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudG9vbFRpcD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50cmF2ZXJzYWw9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudHJhdmVyc2U9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudWk9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudmFsaWRhdGU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudmFsdWU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudmFyaWFibGVzPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgUmFkaWFsIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJyYWRpYWwiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsidG9FZGdlIiwidG9DZW50ZXIiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY29sb3I9bnVsbDt0aGlzLmV4dHJhcz1udWxsfVtDbl0oZSl7ZT1lP2VbQ25dKCk6IiNGRkZGRkYiO2NvbnN0IHQ9dGhpcy5jb2xvcj90aGlzLmNvbG9yW0NuXSgpOiIjMDAwMDAwIjtyZXR1cm5gcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCBjZW50ZXIsICR7InRvRWRnZSI9PT10aGlzLnR5cGU/YCR7ZX0sJHt0fWA6YCR7dH0sJHtlfWB9KWB9fWNsYXNzIFJlYXNvbiBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwicmVhc29uIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFJlYXNvbnMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sInJlYXNvbnMiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5yZWFzb249bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBSZWN0YW5nbGUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sInJlY3RhbmdsZSIsITApO3RoaXMuaGFuZD1nZXRTdHJpbmdPcHRpb24oZS5oYW5kLFsiZXZlbiIsImxlZnQiLCJyaWdodCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNvcm5lcj1uZXcgWEZBT2JqZWN0QXJyYXkoNCk7dGhpcy5lZGdlPW5ldyBYRkFPYmplY3RBcnJheSg0KTt0aGlzLmZpbGw9bnVsbH1bSW5dKCl7Y29uc3QgZT10aGlzLmVkZ2UuY2hpbGRyZW4ubGVuZ3RoP3RoaXMuZWRnZS5jaGlsZHJlblswXTpuZXcgRWRnZSh7fSksdD1lW0NuXSgpLGk9T2JqZWN0LmNyZWF0ZShudWxsKTsidmlzaWJsZSI9PT10aGlzLmZpbGw/LnByZXNlbmNlP09iamVjdC5hc3NpZ24oaSx0aGlzLmZpbGxbQ25dKCkpOmkuZmlsbD0idHJhbnNwYXJlbnQiO2kuc3Ryb2tlV2lkdGg9bWVhc3VyZVRvU3RyaW5nKCJ2aXNpYmxlIj09PWUucHJlc2VuY2U/ZS50aGlja25lc3M6MCk7aS5zdHJva2U9dC5jb2xvcjtjb25zdCBhPSh0aGlzLmNvcm5lci5jaGlsZHJlbi5sZW5ndGg/dGhpcy5jb3JuZXIuY2hpbGRyZW5bMF06bmV3IENvcm5lcih7fSkpW0NuXSgpLHI9e25hbWU6InN2ZyIsY2hpbGRyZW46W3tuYW1lOiJyZWN0IixhdHRyaWJ1dGVzOnt4bWxuczpPbix3aWR0aDoiMTAwJSIsaGVpZ2h0OiIxMDAlIix4OjAseTowLHJ4OmEucmFkaXVzLHJ5OmEucmFkaXVzLHN0eWxlOml9fV0sYXR0cmlidXRlczp7eG1sbnM6T24sc3R5bGU6e292ZXJmbG93OiJ2aXNpYmxlIn0sd2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSJ9fTtpZihoYXNNYXJnaW4odGhpc1tEc10oKVtEc10oKSkpcmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixhdHRyaWJ1dGVzOntzdHlsZTp7ZGlzcGxheToiaW5saW5lIix3aWR0aDoiMTAwJSIsaGVpZ2h0OiIxMDAlIn19LGNoaWxkcmVuOltyXX0pO3IuYXR0cmlidXRlcy5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiO3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Mocil9fWNsYXNzIFJlZkVsZW1lbnQgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sInJlZiIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBTY3JpcHQgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sInNjcmlwdCIpO3RoaXMuYmluZGluZz1lLmJpbmRpbmd8fCIiO3RoaXMuY29udGVudFR5cGU9ZS5jb250ZW50VHlwZXx8IiI7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnJ1bkF0PWdldFN0cmluZ09wdGlvbihlLnJ1bkF0LFsiY2xpZW50IiwiYm90aCIsInNlcnZlciJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFNldFByb3BlcnR5IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJzZXRQcm9wZXJ0eSIpO3RoaXMuY29ubmVjdGlvbj1lLmNvbm5lY3Rpb258fCIiO3RoaXMucmVmPWUucmVmfHwiIjt0aGlzLnRhcmdldD1lLnRhcmdldHx8IiJ9fWNsYXNzIFNpZ25EYXRhIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJzaWduRGF0YSIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5vcGVyYXRpb249Z2V0U3RyaW5nT3B0aW9uKGUub3BlcmF0aW9uLFsic2lnbiIsImNsZWFyIiwidmVyaWZ5Il0pO3RoaXMucmVmPWUucmVmfHwiIjt0aGlzLnRhcmdldD1lLnRhcmdldHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZmlsdGVyPW51bGw7dGhpcy5tYW5pZmVzdD1udWxsfX1jbGFzcyBTaWduYXR1cmUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sInNpZ25hdHVyZSIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJQREYxLjMiLCJQREYxLjYiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmZpbHRlcj1udWxsO3RoaXMubWFuaWZlc3Q9bnVsbDt0aGlzLm1hcmdpbj1udWxsfX1jbGFzcyBTaWduaW5nIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJzaWduaW5nIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY2VydGlmaWNhdGU9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBTb2xpZCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwic29saWQiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsfVtDbl0oZSl7cmV0dXJuIGU/ZVtDbl0oKToiI0ZGRkZGRiJ9fWNsYXNzIFNwZWFrIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJzcGVhayIpO3RoaXMuZGlzYWJsZT1nZXRJbnRlZ2VyKHtkYXRhOmUuZGlzYWJsZSxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5wcmlvcml0eT1nZXRTdHJpbmdPcHRpb24oZS5wcmlvcml0eSxbImN1c3RvbSIsImNhcHRpb24iLCJuYW1lIiwidG9vbFRpcCJdKTt0aGlzLnJpZD1lLnJpZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBTdGlwcGxlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJzdGlwcGxlIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnJhdGU9Z2V0SW50ZWdlcih7ZGF0YTplLnJhdGUsZGVmYXVsdFZhbHVlOjUwLHZhbGlkYXRlOmU9PmU+PTAmJmU8PTEwMH0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNvbG9yPW51bGw7dGhpcy5leHRyYXM9bnVsbH1bQ25dKGUpe2NvbnN0IHQ9dGhpcy5yYXRlLzEwMDtyZXR1cm4gVXRpbC5tYWtlSGV4Q29sb3IoTWF0aC5yb3VuZChlLnZhbHVlLnIqKDEtdCkrdGhpcy52YWx1ZS5yKnQpLE1hdGgucm91bmQoZS52YWx1ZS5nKigxLXQpK3RoaXMudmFsdWUuZyp0KSxNYXRoLnJvdW5kKGUudmFsdWUuYiooMS10KSt0aGlzLnZhbHVlLmIqdCkpfX1jbGFzcyBTdWJmb3JtIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJzdWJmb3JtIiwhMCk7dGhpcy5hY2Nlc3M9Z2V0U3RyaW5nT3B0aW9uKGUuYWNjZXNzLFsib3BlbiIsIm5vbkludGVyYWN0aXZlIiwicHJvdGVjdGVkIiwicmVhZE9ubHkiXSk7dGhpcy5hbGxvd01hY3JvPWdldEludGVnZXIoe2RhdGE6ZS5hbGxvd01hY3JvLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5hbmNob3JUeXBlPWdldFN0cmluZ09wdGlvbihlLmFuY2hvclR5cGUsWyJ0b3BMZWZ0IiwiYm90dG9tQ2VudGVyIiwiYm90dG9tTGVmdCIsImJvdHRvbVJpZ2h0IiwibWlkZGxlQ2VudGVyIiwibWlkZGxlTGVmdCIsIm1pZGRsZVJpZ2h0IiwidG9wQ2VudGVyIiwidG9wUmlnaHQiXSk7dGhpcy5jb2xTcGFuPWdldEludGVnZXIoe2RhdGE6ZS5jb2xTcGFuLGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PmU+PTF8fC0xPT09ZX0pO3RoaXMuY29sdW1uV2lkdGhzPShlLmNvbHVtbldpZHRoc3x8IiIpLnRyaW0oKS5zcGxpdCgvXHMrLykubWFwKChlPT4iLTEiPT09ZT8tMTpnZXRNZWFzdXJlbWVudChlKSkpO3RoaXMuaD1lLmg/Z2V0TWVhc3VyZW1lbnQoZS5oKToiIjt0aGlzLmhBbGlnbj1nZXRTdHJpbmdPcHRpb24oZS5oQWxpZ24sWyJsZWZ0IiwiY2VudGVyIiwianVzdGlmeSIsImp1c3RpZnlBbGwiLCJyYWRpeCIsInJpZ2h0Il0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5sYXlvdXQ9Z2V0U3RyaW5nT3B0aW9uKGUubGF5b3V0LFsicG9zaXRpb24iLCJsci10YiIsInJsLXJvdyIsInJsLXRiIiwicm93IiwidGFibGUiLCJ0YiJdKTt0aGlzLmxvY2FsZT1lLmxvY2FsZXx8IiI7dGhpcy5tYXhIPWdldE1lYXN1cmVtZW50KGUubWF4SCwiMHB0Iik7dGhpcy5tYXhXPWdldE1lYXN1cmVtZW50KGUubWF4VywiMHB0Iik7dGhpcy5tZXJnZU1vZGU9Z2V0U3RyaW5nT3B0aW9uKGUubWVyZ2VNb2RlLFsiY29uc3VtZURhdGEiLCJtYXRjaFRlbXBsYXRlIl0pO3RoaXMubWluSD1nZXRNZWFzdXJlbWVudChlLm1pbkgsIjBwdCIpO3RoaXMubWluVz1nZXRNZWFzdXJlbWVudChlLm1pblcsIjBwdCIpO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucHJlc2VuY2U9Z2V0U3RyaW5nT3B0aW9uKGUucHJlc2VuY2UsWyJ2aXNpYmxlIiwiaGlkZGVuIiwiaW5hY3RpdmUiLCJpbnZpc2libGUiXSk7dGhpcy5yZWxldmFudD1nZXRSZWxldmFudChlLnJlbGV2YW50KTt0aGlzLnJlc3RvcmVTdGF0ZT1nZXRTdHJpbmdPcHRpb24oZS5yZXN0b3JlU3RhdGUsWyJtYW51YWwiLCJhdXRvIl0pO3RoaXMuc2NvcGU9Z2V0U3RyaW5nT3B0aW9uKGUuc2NvcGUsWyJuYW1lIiwibm9uZSJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy53PWUudz9nZXRNZWFzdXJlbWVudChlLncpOiIiO3RoaXMueD1nZXRNZWFzdXJlbWVudChlLngsIjBwdCIpO3RoaXMueT1nZXRNZWFzdXJlbWVudChlLnksIjBwdCIpO3RoaXMuYXNzaXN0PW51bGw7dGhpcy5iaW5kPW51bGw7dGhpcy5ib29rZW5kPW51bGw7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmJyZWFrPW51bGw7dGhpcy5jYWxjdWxhdGU9bnVsbDt0aGlzLmRlc2M9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMua2VlcD1udWxsO3RoaXMubWFyZ2luPW51bGw7dGhpcy5vY2N1cj1udWxsO3RoaXMub3ZlcmZsb3c9bnVsbDt0aGlzLnBhZ2VTZXQ9bnVsbDt0aGlzLnBhcmE9bnVsbDt0aGlzLnRyYXZlcnNhbD1udWxsO3RoaXMudmFsaWRhdGU9bnVsbDt0aGlzLnZhcmlhYmxlcz1udWxsO3RoaXMuYXJlYT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5icmVha0FmdGVyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmJyZWFrQmVmb3JlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmNvbm5lY3Q9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZHJhdz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5ldmVudD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5leE9iamVjdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5leGNsR3JvdXA9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZmllbGQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucHJvdG89bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc2V0UHJvcGVydHk9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc3ViZm9ybT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJmb3JtU2V0PW5ldyBYRkFPYmplY3RBcnJheX1bYnNdKCl7Y29uc3QgZT10aGlzW0RzXSgpO3JldHVybiBlIGluc3RhbmNlb2YgU3ViZm9ybVNldD9lW2JzXSgpOmV9W1VzXSgpe3JldHVybiEwfVt2c10oKXtyZXR1cm4gdGhpcy5sYXlvdXQuZW5kc1dpdGgoIi10YiIpJiYwPT09dGhpc1tJc10uYXR0ZW1wdCYmdGhpc1tJc10ubnVtYmVySW5MaW5lPjB8fHRoaXNbRHNdKClbdnNdKCl9Klt5c10oKXt5aWVsZCpnZXRDb250YWluZWRDaGlsZHJlbih0aGlzKX1bQ3NdKCl7cmV0dXJuIGZsdXNoSFRNTCh0aGlzKX1bJHJdKGUsdCl7YWRkSFRNTCh0aGlzLGUsdCl9W0JzXSgpe3JldHVybiBnZXRBdmFpbGFibGVTcGFjZSh0aGlzKX1bSnNdKCl7Y29uc3QgZT10aGlzW2JzXSgpO2lmKCFlW0pzXSgpKXJldHVybiExO2lmKHZvaWQgMCE9PXRoaXNbSXNdLl9pc1NwbGl0dGFibGUpcmV0dXJuIHRoaXNbSXNdLl9pc1NwbGl0dGFibGU7aWYoInBvc2l0aW9uIj09PXRoaXMubGF5b3V0fHx0aGlzLmxheW91dC5pbmNsdWRlcygicm93Iikpe3RoaXNbSXNdLl9pc1NwbGl0dGFibGU9ITE7cmV0dXJuITF9aWYodGhpcy5rZWVwJiYibm9uZSIhPT10aGlzLmtlZXAuaW50YWN0KXt0aGlzW0lzXS5faXNTcGxpdHRhYmxlPSExO3JldHVybiExfWlmKGUubGF5b3V0Py5lbmRzV2l0aCgiLXRiIikmJjAhPT1lW0lzXS5udW1iZXJJbkxpbmUpcmV0dXJuITE7dGhpc1tJc10uX2lzU3BsaXR0YWJsZT0hMDtyZXR1cm4hMH1bSW5dKGUpe3NldFRhYkluZGV4KHRoaXMpO2lmKHRoaXMuYnJlYWspe2lmKCJhdXRvIiE9PXRoaXMuYnJlYWsuYWZ0ZXJ8fCIiIT09dGhpcy5icmVhay5hZnRlclRhcmdldCl7Y29uc3QgZT1uZXcgQnJlYWtBZnRlcih7dGFyZ2V0VHlwZTp0aGlzLmJyZWFrLmFmdGVyLHRhcmdldDp0aGlzLmJyZWFrLmFmdGVyVGFyZ2V0LHN0YXJ0TmV3OnRoaXMuYnJlYWsuc3RhcnROZXcudG9TdHJpbmcoKX0pO2VbU3NdPXRoaXNbU3NdO3RoaXNbQXNdKGUpO3RoaXMuYnJlYWtBZnRlci5wdXNoKGUpfWlmKCJhdXRvIiE9PXRoaXMuYnJlYWsuYmVmb3JlfHwiIiE9PXRoaXMuYnJlYWsuYmVmb3JlVGFyZ2V0KXtjb25zdCBlPW5ldyBCcmVha0JlZm9yZSh7dGFyZ2V0VHlwZTp0aGlzLmJyZWFrLmJlZm9yZSx0YXJnZXQ6dGhpcy5icmVhay5iZWZvcmVUYXJnZXQsc3RhcnROZXc6dGhpcy5icmVhay5zdGFydE5ldy50b1N0cmluZygpfSk7ZVtTc109dGhpc1tTc107dGhpc1tBc10oZSk7dGhpcy5icmVha0JlZm9yZS5wdXNoKGUpfWlmKCIiIT09dGhpcy5icmVhay5vdmVyZmxvd1RhcmdldCl7Y29uc3QgZT1uZXcgT3ZlcmZsb3coe3RhcmdldDp0aGlzLmJyZWFrLm92ZXJmbG93VGFyZ2V0LGxlYWRlcjp0aGlzLmJyZWFrLm92ZXJmbG93TGVhZGVyLHRyYWlsZXI6dGhpcy5icmVhay5vdmVyZmxvd1RyYWlsZXJ9KTtlW1NzXT10aGlzW1NzXTt0aGlzW0FzXShlKTt0aGlzLm92ZXJmbG93LnB1c2goZSl9dGhpc1skc10odGhpcy5icmVhayk7dGhpcy5icmVhaz1udWxsfWlmKCJoaWRkZW4iPT09dGhpcy5wcmVzZW5jZXx8ImluYWN0aXZlIj09PXRoaXMucHJlc2VuY2UpcmV0dXJuIEhUTUxSZXN1bHQuRU1QVFk7KHRoaXMuYnJlYWtCZWZvcmUuY2hpbGRyZW4ubGVuZ3RoPjF8fHRoaXMuYnJlYWtBZnRlci5jaGlsZHJlbi5sZW5ndGg+MSkmJndhcm4oIlhGQSAtIFNldmVyYWwgYnJlYWtCZWZvcmUgb3IgYnJlYWtBZnRlciBpbiBzdWJmb3JtczogcGxlYXNlIGZpbGUgYSBidWcuIik7aWYodGhpcy5icmVha0JlZm9yZS5jaGlsZHJlbi5sZW5ndGg+PTEpe2NvbnN0IGU9dGhpcy5icmVha0JlZm9yZS5jaGlsZHJlblswXTtpZihoYW5kbGVCcmVhayhlKSlyZXR1cm4gSFRNTFJlc3VsdC5icmVha05vZGUoZSl9aWYodGhpc1tJc10/LmFmdGVyQnJlYWtBZnRlcilyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWTtmaXhEaW1lbnNpb25zKHRoaXMpO2NvbnN0IHQ9W10saT17aWQ6dGhpc1tobl0sY2xhc3M6W119O3NldEFjY2Vzcyh0aGlzLGkuY2xhc3MpO3RoaXNbSXNdfHwodGhpc1tJc109T2JqZWN0LmNyZWF0ZShudWxsKSk7T2JqZWN0LmFzc2lnbih0aGlzW0lzXSx7Y2hpbGRyZW46dCxsaW5lOm51bGwsYXR0cmlidXRlczppLGF0dGVtcHQ6MCxudW1iZXJJbkxpbmU6MCxhdmFpbGFibGVTcGFjZTp7d2lkdGg6TWF0aC5taW4odGhpcy53fHwxLzAsZS53aWR0aCksaGVpZ2h0Ok1hdGgubWluKHRoaXMuaHx8MS8wLGUuaGVpZ2h0KX0sd2lkdGg6MCxoZWlnaHQ6MCxwcmV2SGVpZ2h0OjAsY3VycmVudFdpZHRoOjB9KTtjb25zdCBhPXRoaXNbRnNdKCkscj1hW0lzXS5ub0xheW91dEZhaWx1cmUscz10aGlzW0pzXSgpO3N8fHNldEZpcnN0VW5zcGxpdHRhYmxlKHRoaXMpO2lmKCFjaGVja0RpbWVuc2lvbnModGhpcyxlKSlyZXR1cm4gSFRNTFJlc3VsdC5GQUlMVVJFO2NvbnN0IG49bmV3IFNldChbImFyZWEiLCJkcmF3IiwiZXhjbEdyb3VwIiwiZmllbGQiLCJzdWJmb3JtIiwic3ViZm9ybVNldCJdKTtpZih0aGlzLmxheW91dC5pbmNsdWRlcygicm93Iikpe2NvbnN0IGU9dGhpc1tic10oKS5jb2x1bW5XaWR0aHM7aWYoQXJyYXkuaXNBcnJheShlKSYmZS5sZW5ndGg+MCl7dGhpc1tJc10uY29sdW1uV2lkdGhzPWU7dGhpc1tJc10uY3VycmVudENvbHVtbj0wfX1jb25zdCBvPXRvU3R5bGUodGhpcywiYW5jaG9yVHlwZSIsImRpbWVuc2lvbnMiLCJwb3NpdGlvbiIsInByZXNlbmNlIiwiYm9yZGVyIiwibWFyZ2luIiwiaEFsaWduIiksZz1bInhmYVN1YmZvcm0iXSxjPWxheW91dENsYXNzKHRoaXMpO2MmJmcucHVzaChjKTtpLnN0eWxlPW87aS5jbGFzcz1nO3RoaXMubmFtZSYmKGkueGZhTmFtZT10aGlzLm5hbWUpO2lmKHRoaXMub3ZlcmZsb3cpe2NvbnN0IHQ9dGhpcy5vdmVyZmxvd1tmc10oKTtpZih0LmFkZExlYWRlcil7dC5hZGRMZWFkZXI9ITE7aGFuZGxlT3ZlcmZsb3codGhpcyx0LmxlYWRlcixlKX19dGhpc1t6c10oKTtjb25zdCBDPSJsci10YiI9PT10aGlzLmxheW91dHx8InJsLXRiIj09PXRoaXMubGF5b3V0LGg9Qz8yOjE7Zm9yKDt0aGlzW0lzXS5hdHRlbXB0PGg7dGhpc1tJc10uYXR0ZW1wdCsrKXtDJiYxPT09dGhpc1tJc10uYXR0ZW1wdCYmKHRoaXNbSXNdLm51bWJlckluTGluZT0wKTtjb25zdCBlPXRoaXNbZXNdKHtmaWx0ZXI6bixpbmNsdWRlOiEwfSk7aWYoZS5zdWNjZXNzKWJyZWFrO2lmKGUuaXNCcmVhaygpKXt0aGlzW19zXSgpO3JldHVybiBlfWlmKEMmJjA9PT10aGlzW0lzXS5hdHRlbXB0JiYwPT09dGhpc1tJc10ubnVtYmVySW5MaW5lJiYhYVtJc10ubm9MYXlvdXRGYWlsdXJlKXt0aGlzW0lzXS5hdHRlbXB0PWg7YnJlYWt9fXRoaXNbX3NdKCk7c3x8dW5zZXRGaXJzdFVuc3BsaXR0YWJsZSh0aGlzKTthW0lzXS5ub0xheW91dEZhaWx1cmU9cjtpZih0aGlzW0lzXS5hdHRlbXB0PT09aCl7dGhpcy5vdmVyZmxvdyYmKHRoaXNbRnNdKClbSXNdLm92ZXJmbG93Tm9kZT10aGlzLm92ZXJmbG93KTtzfHxkZWxldGUgdGhpc1tJc107cmV0dXJuIEhUTUxSZXN1bHQuRkFJTFVSRX1pZih0aGlzLm92ZXJmbG93KXtjb25zdCB0PXRoaXMub3ZlcmZsb3dbZnNdKCk7aWYodC5hZGRUcmFpbGVyKXt0LmFkZFRyYWlsZXI9ITE7aGFuZGxlT3ZlcmZsb3codGhpcyx0LnRyYWlsZXIsZSl9fWxldCBsPTAsUT0wO2lmKHRoaXMubWFyZ2luKXtsPXRoaXMubWFyZ2luLmxlZnRJbnNldCt0aGlzLm1hcmdpbi5yaWdodEluc2V0O1E9dGhpcy5tYXJnaW4udG9wSW5zZXQrdGhpcy5tYXJnaW4uYm90dG9tSW5zZXR9Y29uc3QgRT1NYXRoLm1heCh0aGlzW0lzXS53aWR0aCtsLHRoaXMud3x8MCksdT1NYXRoLm1heCh0aGlzW0lzXS5oZWlnaHQrUSx0aGlzLmh8fDApLGQ9W3RoaXMueCx0aGlzLnksRSx1XTsiIj09PXRoaXMudyYmKG8ud2lkdGg9bWVhc3VyZVRvU3RyaW5nKEUpKTsiIj09PXRoaXMuaCYmKG8uaGVpZ2h0PW1lYXN1cmVUb1N0cmluZyh1KSk7aWYoKCIwcHgiPT09by53aWR0aHx8IjBweCI9PT1vLmhlaWdodCkmJjA9PT10Lmxlbmd0aClyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWTtjb25zdCBmPXtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6aSxjaGlsZHJlbjp0fTthcHBseUFzc2lzdCh0aGlzLGkpO2NvbnN0IHA9SFRNTFJlc3VsdC5zdWNjZXNzKGNyZWF0ZVdyYXBwZXIodGhpcyxmKSxkKTtpZih0aGlzLmJyZWFrQWZ0ZXIuY2hpbGRyZW4ubGVuZ3RoPj0xKXtjb25zdCBlPXRoaXMuYnJlYWtBZnRlci5jaGlsZHJlblswXTtpZihoYW5kbGVCcmVhayhlKSl7dGhpc1tJc10uYWZ0ZXJCcmVha0FmdGVyPXA7cmV0dXJuIEhUTUxSZXN1bHQuYnJlYWtOb2RlKGUpfX1kZWxldGUgdGhpc1tJc107cmV0dXJuIHB9fWNsYXNzIFN1YmZvcm1TZXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sInN1YmZvcm1TZXQiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucmVsYXRpb249Z2V0U3RyaW5nT3B0aW9uKGUucmVsYXRpb24sWyJvcmRlcmVkIiwiY2hvaWNlIiwidW5vcmRlcmVkIl0pO3RoaXMucmVsZXZhbnQ9Z2V0UmVsZXZhbnQoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9va2VuZD1udWxsO3RoaXMuYnJlYWs9bnVsbDt0aGlzLmRlc2M9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMub2NjdXI9bnVsbDt0aGlzLm92ZXJmbG93PW51bGw7dGhpcy5icmVha0FmdGVyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmJyZWFrQmVmb3JlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnN1YmZvcm09bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc3ViZm9ybVNldD1uZXcgWEZBT2JqZWN0QXJyYXl9Klt5c10oKXt5aWVsZCpnZXRDb250YWluZWRDaGlsZHJlbih0aGlzKX1bYnNdKCl7bGV0IGU9dGhpc1tEc10oKTtmb3IoOyEoZSBpbnN0YW5jZW9mIFN1YmZvcm0pOyllPWVbRHNdKCk7cmV0dXJuIGV9W1VzXSgpe3JldHVybiEwfX1jbGFzcyBTdWJqZWN0RE4gZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJzdWJqZWN0RE4iKTt0aGlzLmRlbGltaXRlcj1lLmRlbGltaXRlcnx8IiwiO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtjc10oKXt0aGlzW25zXT1uZXcgTWFwKHRoaXNbbnNdLnNwbGl0KHRoaXMuZGVsaW1pdGVyKS5tYXAoKGU9PnsoZT1lLnNwbGl0KCI9IiwyKSlbMF09ZVswXS50cmltKCk7cmV0dXJuIGV9KSkpfX1jbGFzcyBTdWJqZWN0RE5zIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJzdWJqZWN0RE5zIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuc3ViamVjdEROPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgU3VibWl0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJzdWJtaXQiLCEwKTt0aGlzLmVtYmVkUERGPWdldEludGVnZXIoe2RhdGE6ZS5lbWJlZFBERixkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMuZm9ybWF0PWdldFN0cmluZ09wdGlvbihlLmZvcm1hdCxbInhkcCIsImZvcm1kYXRhIiwicGRmIiwidXJsZW5jb2RlZCIsInhmZCIsInhtbCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudGFyZ2V0PWUudGFyZ2V0fHwiIjt0aGlzLnRleHRFbmNvZGluZz1nZXRLZXl3b3JkKHtkYXRhOmUudGV4dEVuY29kaW5nP2UudGV4dEVuY29kaW5nLnRvTG93ZXJDYXNlKCk6IiIsZGVmYXVsdFZhbHVlOiIiLHZhbGlkYXRlOmU9PlsidXRmLTgiLCJiaWctZml2ZSIsImZvbnRzcGVjaWZpYyIsImdiayIsImdiLTE4MDMwIiwiZ2ItMjMxMiIsImtzYy01NjAxIiwibm9uZSIsInNoaWZ0LWppcyIsInVjcy0yIiwidXRmLTE2Il0uaW5jbHVkZXMoZSl8fGUubWF0Y2goL2lzby04ODU5LVxkezJ9Lyl9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy54ZHBDb250ZW50PWUueGRwQ29udGVudHx8IiI7dGhpcy5lbmNyeXB0PW51bGw7dGhpcy5lbmNyeXB0RGF0YT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zaWduRGF0YT1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIFRlbXBsYXRlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJ0ZW1wbGF0ZSIsITApO3RoaXMuYmFzZVByb2ZpbGU9Z2V0U3RyaW5nT3B0aW9uKGUuYmFzZVByb2ZpbGUsWyJmdWxsIiwiaW50ZXJhY3RpdmVGb3JtcyJdKTt0aGlzLmV4dHJhcz1udWxsO3RoaXMuc3ViZm9ybT1uZXcgWEZBT2JqZWN0QXJyYXl9W2NzXSgpezA9PT10aGlzLnN1YmZvcm0uY2hpbGRyZW4ubGVuZ3RoJiZ3YXJuKCJYRkEgLSBObyBzdWJmb3JtcyBpbiB0ZW1wbGF0ZSBub2RlLiIpO3RoaXMuc3ViZm9ybS5jaGlsZHJlbi5sZW5ndGg+PTImJndhcm4oIlhGQSAtIFNldmVyYWwgc3ViZm9ybXMgaW4gdGVtcGxhdGUgbm9kZTogcGxlYXNlIGZpbGUgYSBidWcuIik7dGhpc1tubl09NWUzfVtKc10oKXtyZXR1cm4hMH1bdG5dKGUsdCl7cmV0dXJuIGUuc3RhcnRzV2l0aCgiIyIpP1t0aGlzW1JzXS5nZXQoZS5zbGljZSgxKSldOnNlYXJjaE5vZGUodGhpcyx0LGUsITAsITApfSpbZ25dKCl7aWYoIXRoaXMuc3ViZm9ybS5jaGlsZHJlbi5sZW5ndGgpcmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixjaGlsZHJlbjpbXX0pO3RoaXNbSXNdPXtvdmVyZmxvd05vZGU6bnVsbCxmaXJzdFVuc3BsaXR0YWJsZTpudWxsLGN1cnJlbnRDb250ZW50QXJlYTpudWxsLGN1cnJlbnRQYWdlQXJlYTpudWxsLG5vTGF5b3V0RmFpbHVyZTohMSxwYWdlTnVtYmVyOjEscGFnZVBvc2l0aW9uOiJmaXJzdCIsb2RkT3JFdmVuOiJvZGQiLGJsYW5rT3JOb3RCbGFuazoibm9uQmxhbmsiLHBhcmFTdGFjazpbXX07Y29uc3QgZT10aGlzLnN1YmZvcm0uY2hpbGRyZW5bMF07ZS5wYWdlU2V0W2lzXSgpO2NvbnN0IHQ9ZS5wYWdlU2V0LnBhZ2VBcmVhLmNoaWxkcmVuLGk9e25hbWU6ImRpdiIsY2hpbGRyZW46W119O2xldCBhPW51bGwscj1udWxsLHM9bnVsbDtpZihlLmJyZWFrQmVmb3JlLmNoaWxkcmVuLmxlbmd0aD49MSl7cj1lLmJyZWFrQmVmb3JlLmNoaWxkcmVuWzBdO3M9ci50YXJnZXR9ZWxzZSBpZihlLnN1YmZvcm0uY2hpbGRyZW4ubGVuZ3RoPj0xJiZlLnN1YmZvcm0uY2hpbGRyZW5bMF0uYnJlYWtCZWZvcmUuY2hpbGRyZW4ubGVuZ3RoPj0xKXtyPWUuc3ViZm9ybS5jaGlsZHJlblswXS5icmVha0JlZm9yZS5jaGlsZHJlblswXTtzPXIudGFyZ2V0fWVsc2UgaWYoZS5icmVhaz8uYmVmb3JlVGFyZ2V0KXtyPWUuYnJlYWs7cz1yLmJlZm9yZVRhcmdldH1lbHNlIGlmKGUuc3ViZm9ybS5jaGlsZHJlbi5sZW5ndGg+PTEmJmUuc3ViZm9ybS5jaGlsZHJlblswXS5icmVhaz8uYmVmb3JlVGFyZ2V0KXtyPWUuc3ViZm9ybS5jaGlsZHJlblswXS5icmVhaztzPXIuYmVmb3JlVGFyZ2V0fWlmKHIpe2NvbnN0IGU9dGhpc1t0bl0ocyxyW0RzXSgpKTtpZihlIGluc3RhbmNlb2YgUGFnZUFyZWEpe2E9ZTtyW0lzXT17fX19YXx8KGE9dFswXSk7YVtJc109e251bWJlck9mVXNlOjF9O2NvbnN0IG49YVtEc10oKTtuW0lzXT17bnVtYmVyT2ZVc2U6MSxwYWdlSW5kZXg6bi5wYWdlQXJlYS5jaGlsZHJlbi5pbmRleE9mKGEpLHBhZ2VTZXRJbmRleDowfTtsZXQgbyxnPW51bGwsYz1udWxsLEM9ITAsaD0wLGw9MDtmb3IoOzspe2lmKEMpaD0wO2Vsc2V7aS5jaGlsZHJlbi5wb3AoKTtpZigzPT0rK2gpe3dhcm4oIlhGQSAtIFNvbWV0aGluZyBnb2VzIHdyb25nOiBwbGVhc2UgZmlsZSBhIGJ1Zy4iKTtyZXR1cm4gaX19bz1udWxsO3RoaXNbSXNdLmN1cnJlbnRQYWdlQXJlYT1hO2NvbnN0IHQ9YVtJbl0oKS5odG1sO2kuY2hpbGRyZW4ucHVzaCh0KTtpZihnKXt0aGlzW0lzXS5ub0xheW91dEZhaWx1cmU9ITA7dC5jaGlsZHJlbi5wdXNoKGdbSW5dKGFbSXNdLnNwYWNlKS5odG1sKTtnPW51bGx9aWYoYyl7dGhpc1tJc10ubm9MYXlvdXRGYWlsdXJlPSEwO3QuY2hpbGRyZW4ucHVzaChjW0luXShhW0lzXS5zcGFjZSkuaHRtbCk7Yz1udWxsfWNvbnN0IHI9YS5jb250ZW50QXJlYS5jaGlsZHJlbixzPXQuY2hpbGRyZW4uZmlsdGVyKChlPT5lLmF0dHJpYnV0ZXMuY2xhc3MuaW5jbHVkZXMoInhmYUNvbnRlbnRhcmVhIikpKTtDPSExO3RoaXNbSXNdLmZpcnN0VW5zcGxpdHRhYmxlPW51bGw7dGhpc1tJc10ubm9MYXlvdXRGYWlsdXJlPSExO2NvbnN0IGZsdXNoPXQ9Pntjb25zdCBpPWVbQ3NdKCk7aWYoaSl7Q3x8PWkuY2hpbGRyZW4/Lmxlbmd0aD4wO3NbdF0uY2hpbGRyZW4ucHVzaChpKX19O2ZvcihsZXQgdD1sLGE9ci5sZW5ndGg7dDxhO3QrKyl7Y29uc3QgYT10aGlzW0lzXS5jdXJyZW50Q29udGVudEFyZWE9clt0XSxuPXt3aWR0aDphLncsaGVpZ2h0OmEuaH07bD0wO2lmKGcpe3NbdF0uY2hpbGRyZW4ucHVzaChnW0luXShuKS5odG1sKTtnPW51bGx9aWYoYyl7c1t0XS5jaGlsZHJlbi5wdXNoKGNbSW5dKG4pLmh0bWwpO2M9bnVsbH1jb25zdCBoPWVbSW5dKG4pO2lmKGguc3VjY2Vzcyl7aWYoaC5odG1sKXtDfHw9aC5odG1sLmNoaWxkcmVuPy5sZW5ndGg+MDtzW3RdLmNoaWxkcmVuLnB1c2goaC5odG1sKX1lbHNlIUMmJmkuY2hpbGRyZW4ubGVuZ3RoPjEmJmkuY2hpbGRyZW4ucG9wKCk7cmV0dXJuIGl9aWYoaC5pc0JyZWFrKCkpe2NvbnN0IGU9aC5icmVha05vZGU7Zmx1c2godCk7aWYoImF1dG8iPT09ZS50YXJnZXRUeXBlKWNvbnRpbnVlO2lmKGUubGVhZGVyKXtnPXRoaXNbdG5dKGUubGVhZGVyLGVbRHNdKCkpO2c9Zz9nWzBdOm51bGx9aWYoZS50cmFpbGVyKXtjPXRoaXNbdG5dKGUudHJhaWxlcixlW0RzXSgpKTtjPWM/Y1swXTpudWxsfWlmKCJwYWdlQXJlYSI9PT1lLnRhcmdldFR5cGUpe289ZVtJc10udGFyZ2V0O3Q9MS8wfWVsc2UgaWYoZVtJc10udGFyZ2V0KXtvPWVbSXNdLnRhcmdldDtsPWVbSXNdLmluZGV4KzE7dD0xLzB9ZWxzZSB0PWVbSXNdLmluZGV4fWVsc2UgaWYodGhpc1tJc10ub3ZlcmZsb3dOb2RlKXtjb25zdCBlPXRoaXNbSXNdLm92ZXJmbG93Tm9kZTt0aGlzW0lzXS5vdmVyZmxvd05vZGU9bnVsbDtjb25zdCBpPWVbZnNdKCksYT1pLnRhcmdldDtpLmFkZExlYWRlcj1udWxsIT09aS5sZWFkZXI7aS5hZGRUcmFpbGVyPW51bGwhPT1pLnRyYWlsZXI7Zmx1c2godCk7Y29uc3Qgcz10O3Q9MS8wO2lmKGEgaW5zdGFuY2VvZiBQYWdlQXJlYSlvPWE7ZWxzZSBpZihhIGluc3RhbmNlb2YgQ29udGVudEFyZWEpe2NvbnN0IGU9ci5pbmRleE9mKGEpO2lmKC0xIT09ZSllPnM/dD1lLTE6bD1lO2Vsc2V7bz1hW0RzXSgpO2w9by5jb250ZW50QXJlYS5jaGlsZHJlbi5pbmRleE9mKGEpfX19ZWxzZSBmbHVzaCh0KX10aGlzW0lzXS5wYWdlTnVtYmVyKz0xO28mJihvW1RzXSgpP29bSXNdLm51bWJlck9mVXNlKz0xOm89bnVsbCk7YT1vfHxhW3dzXSgpO3lpZWxkIG51bGx9fX1jbGFzcyBUZXh0IGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwidGV4dCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5tYXhDaGFycz1nZXRJbnRlZ2VyKHtkYXRhOmUubWF4Q2hhcnMsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucmlkPWUucmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W3pyXSgpe3JldHVybiEwfVtqc10oZSl7aWYoZVtxc109PT1Cbi54aHRtbC5pZCl7dGhpc1tuc109ZTtyZXR1cm4hMH13YXJuKGBYRkEgLSBJbnZhbGlkIGNvbnRlbnQgaW4gVGV4dDogJHtlW09zXX0uYCk7cmV0dXJuITF9W1pzXShlKXt0aGlzW25zXWluc3RhbmNlb2YgWEZBT2JqZWN0fHxzdXBlcltac10oZSl9W2NzXSgpeyJzdHJpbmciPT10eXBlb2YgdGhpc1tuc10mJih0aGlzW25zXT10aGlzW25zXS5yZXBsYWNlQWxsKCJcclxuIiwiXG4iKSl9W2ZzXSgpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdGhpc1tuc10/dGhpc1tuc10uc3BsaXQoL1tcdTIwMjlcdTIwMjhcbl0vKS5yZWR1Y2UoKChlLHQpPT57dCYmZS5wdXNoKHQpO3JldHVybiBlfSksW10pLmpvaW4oIlxuIik6dGhpc1tuc11bb25dKCl9W0luXShlKXtpZigic3RyaW5nIj09dHlwZW9mIHRoaXNbbnNdKXtjb25zdCBlPXZhbHVlVG9IdG1sKHRoaXNbbnNdKS5odG1sO2lmKHRoaXNbbnNdLmluY2x1ZGVzKCJcdTIwMjkiKSl7ZS5uYW1lPSJkaXYiO2UuY2hpbGRyZW49W107dGhpc1tuc10uc3BsaXQoIlx1MjAyOSIpLm1hcCgoZT0+ZS5zcGxpdCgvW1x1MjAyOFxuXS8pLnJlZHVjZSgoKGUsdCk9PntlLnB1c2goe25hbWU6InNwYW4iLHZhbHVlOnR9LHtuYW1lOiJiciJ9KTtyZXR1cm4gZX0pLFtdKSkpLmZvckVhY2goKHQ9PntlLmNoaWxkcmVuLnB1c2goe25hbWU6InAiLGNoaWxkcmVuOnR9KX0pKX1lbHNlIGlmKC9bXHUyMDI4XG5dLy50ZXN0KHRoaXNbbnNdKSl7ZS5uYW1lPSJkaXYiO2UuY2hpbGRyZW49W107dGhpc1tuc10uc3BsaXQoL1tcdTIwMjhcbl0vKS5mb3JFYWNoKCh0PT57ZS5jaGlsZHJlbi5wdXNoKHtuYW1lOiJzcGFuIix2YWx1ZTp0fSx7bmFtZToiYnIifSl9KSl9cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhlKX1yZXR1cm4gdGhpc1tuc11bSW5dKGUpfX1jbGFzcyBUZXh0RWRpdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwidGV4dEVkaXQiLCEwKTt0aGlzLmFsbG93UmljaFRleHQ9Z2V0SW50ZWdlcih7ZGF0YTplLmFsbG93UmljaFRleHQsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmhTY3JvbGxQb2xpY3k9Z2V0U3RyaW5nT3B0aW9uKGUuaFNjcm9sbFBvbGljeSxbImF1dG8iLCJvZmYiLCJvbiJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubXVsdGlMaW5lPWdldEludGVnZXIoe2RhdGE6ZS5tdWx0aUxpbmUsZGVmYXVsdFZhbHVlOiIiLHZhbGlkYXRlOmU9PjA9PT1lfHwxPT09ZX0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnZTY3JvbGxQb2xpY3k9Z2V0U3RyaW5nT3B0aW9uKGUudlNjcm9sbFBvbGljeSxbImF1dG8iLCJvZmYiLCJvbiJdKTt0aGlzLmJvcmRlcj1udWxsO3RoaXMuY29tYj1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tYXJnaW49bnVsbH1bSW5dKGUpe2NvbnN0IHQ9dG9TdHlsZSh0aGlzLCJib3JkZXIiLCJmb250IiwibWFyZ2luIik7bGV0IGk7Y29uc3QgYT10aGlzW0RzXSgpW0RzXSgpOyIiPT09dGhpcy5tdWx0aUxpbmUmJih0aGlzLm11bHRpTGluZT1hIGluc3RhbmNlb2YgRHJhdz8xOjApO2k9MT09PXRoaXMubXVsdGlMaW5lP3tuYW1lOiJ0ZXh0YXJlYSIsYXR0cmlidXRlczp7ZGF0YUlkOmFbb3NdPy5baG5dfHxhW2huXSxmaWVsZElkOmFbaG5dLGNsYXNzOlsieGZhVGV4dGZpZWxkIl0sc3R5bGU6dCwiYXJpYS1sYWJlbCI6YXJpYUxhYmVsKGEpLCJhcmlhLXJlcXVpcmVkIjohMX19OntuYW1lOiJpbnB1dCIsYXR0cmlidXRlczp7dHlwZToidGV4dCIsZGF0YUlkOmFbb3NdPy5baG5dfHxhW2huXSxmaWVsZElkOmFbaG5dLGNsYXNzOlsieGZhVGV4dGZpZWxkIl0sc3R5bGU6dCwiYXJpYS1sYWJlbCI6YXJpYUxhYmVsKGEpLCJhcmlhLXJlcXVpcmVkIjohMX19O2lmKGlzUmVxdWlyZWQoYSkpe2kuYXR0cmlidXRlc1siYXJpYS1yZXF1aXJlZCJdPSEwO2kuYXR0cmlidXRlcy5yZXF1aXJlZD0hMH1yZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJsYWJlbCIsYXR0cmlidXRlczp7Y2xhc3M6WyJ4ZmFMYWJlbCJdfSxjaGlsZHJlbjpbaV19KX19Y2xhc3MgVGltZSBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwidGltZSIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtjc10oKXtjb25zdCBlPXRoaXNbbnNdLnRyaW0oKTt0aGlzW25zXT1lP25ldyBEYXRlKGUpOm51bGx9W0luXShlKXtyZXR1cm4gdmFsdWVUb0h0bWwodGhpc1tuc10/dGhpc1tuc10udG9TdHJpbmcoKToiIil9fWNsYXNzIFRpbWVTdGFtcCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwidGltZVN0YW1wIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnNlcnZlcj1lLnNlcnZlcnx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgVG9vbFRpcCBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwidG9vbFRpcCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5yaWQ9ZS5yaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgVHJhdmVyc2FsIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJ0cmF2ZXJzYWwiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsO3RoaXMudHJhdmVyc2U9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBUcmF2ZXJzZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwidHJhdmVyc2UiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMub3BlcmF0aW9uPWdldFN0cmluZ09wdGlvbihlLm9wZXJhdGlvbixbIm5leHQiLCJiYWNrIiwiZG93biIsImZpcnN0IiwibGVmdCIsInJpZ2h0IiwidXAiXSk7dGhpcy5yZWY9ZS5yZWZ8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsO3RoaXMuc2NyaXB0PW51bGx9Z2V0IG5hbWUoKXtyZXR1cm4gdGhpcy5vcGVyYXRpb259W1lzXSgpe3JldHVybiExfX1jbGFzcyBVaSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwidWkiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsO3RoaXMucGljdHVyZT1udWxsO3RoaXMuYmFyY29kZT1udWxsO3RoaXMuYnV0dG9uPW51bGw7dGhpcy5jaGVja0J1dHRvbj1udWxsO3RoaXMuY2hvaWNlTGlzdD1udWxsO3RoaXMuZGF0ZVRpbWVFZGl0PW51bGw7dGhpcy5kZWZhdWx0VWk9bnVsbDt0aGlzLmltYWdlRWRpdD1udWxsO3RoaXMubnVtZXJpY0VkaXQ9bnVsbDt0aGlzLnBhc3N3b3JkRWRpdD1udWxsO3RoaXMuc2lnbmF0dXJlPW51bGw7dGhpcy50ZXh0RWRpdD1udWxsfVtmc10oKXtpZih2b2lkIDA9PT10aGlzW0lzXSl7Zm9yKGNvbnN0IGUgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2lmKCJleHRyYXMiPT09ZXx8InBpY3R1cmUiPT09ZSljb250aW51ZTtjb25zdCB0PXRoaXNbZV07aWYodCBpbnN0YW5jZW9mIFhGQU9iamVjdCl7dGhpc1tJc109dDtyZXR1cm4gdH19dGhpc1tJc109bnVsbH1yZXR1cm4gdGhpc1tJc119W0luXShlKXtjb25zdCB0PXRoaXNbZnNdKCk7cmV0dXJuIHQ/dFtJbl0oZSk6SFRNTFJlc3VsdC5FTVBUWX19Y2xhc3MgVmFsaWRhdGUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sInZhbGlkYXRlIiwhMCk7dGhpcy5mb3JtYXRUZXN0PWdldFN0cmluZ09wdGlvbihlLmZvcm1hdFRlc3QsWyJ3YXJuaW5nIiwiZGlzYWJsZWQiLCJlcnJvciJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubnVsbFRlc3Q9Z2V0U3RyaW5nT3B0aW9uKGUubnVsbFRlc3QsWyJkaXNhYmxlZCIsImVycm9yIiwid2FybmluZyJdKTt0aGlzLnNjcmlwdFRlc3Q9Z2V0U3RyaW5nT3B0aW9uKGUuc2NyaXB0VGVzdCxbImVycm9yIiwiZGlzYWJsZWQiLCJ3YXJuaW5nIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWVzc2FnZT1udWxsO3RoaXMucGljdHVyZT1udWxsO3RoaXMuc2NyaXB0PW51bGx9fWNsYXNzIFZhbHVlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJ2YWx1ZSIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5vdmVycmlkZT1nZXRJbnRlZ2VyKHtkYXRhOmUub3ZlcnJpZGUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLnJlbGV2YW50PWdldFJlbGV2YW50KGUucmVsZXZhbnQpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmFyYz1udWxsO3RoaXMuYm9vbGVhbj1udWxsO3RoaXMuZGF0ZT1udWxsO3RoaXMuZGF0ZVRpbWU9bnVsbDt0aGlzLmRlY2ltYWw9bnVsbDt0aGlzLmV4RGF0YT1udWxsO3RoaXMuZmxvYXQ9bnVsbDt0aGlzLmltYWdlPW51bGw7dGhpcy5pbnRlZ2VyPW51bGw7dGhpcy5saW5lPW51bGw7dGhpcy5yZWN0YW5nbGU9bnVsbDt0aGlzLnRleHQ9bnVsbDt0aGlzLnRpbWU9bnVsbH1bc25dKGUpe2NvbnN0IHQ9dGhpc1tEc10oKTtpZih0IGluc3RhbmNlb2YgRmllbGQmJnQudWk/LmltYWdlRWRpdCl7aWYoIXRoaXMuaW1hZ2Upe3RoaXMuaW1hZ2U9bmV3IEltYWdlKHt9KTt0aGlzW0FzXSh0aGlzLmltYWdlKX10aGlzLmltYWdlW25zXT1lW25zXTtyZXR1cm59Y29uc3QgaT1lW09zXTtpZihudWxsPT09dGhpc1tpXSl7Zm9yKGNvbnN0IGUgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2NvbnN0IHQ9dGhpc1tlXTtpZih0IGluc3RhbmNlb2YgWEZBT2JqZWN0KXt0aGlzW2VdPW51bGw7dGhpc1skc10odCl9fXRoaXNbZVtPc11dPWU7dGhpc1tBc10oZSl9ZWxzZSB0aGlzW2ldW25zXT1lW25zXX1bb25dKCl7aWYodGhpcy5leERhdGEpcmV0dXJuInN0cmluZyI9PXR5cGVvZiB0aGlzLmV4RGF0YVtuc10/dGhpcy5leERhdGFbbnNdLnRyaW0oKTp0aGlzLmV4RGF0YVtuc11bb25dKCkudHJpbSgpO2Zvcihjb25zdCBlIG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMpKXtpZigiaW1hZ2UiPT09ZSljb250aW51ZTtjb25zdCB0PXRoaXNbZV07aWYodCBpbnN0YW5jZW9mIFhGQU9iamVjdClyZXR1cm4odFtuc118fCIiKS50b1N0cmluZygpLnRyaW0oKX1yZXR1cm4gbnVsbH1bSW5dKGUpe2Zvcihjb25zdCB0IG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMpKXtjb25zdCBpPXRoaXNbdF07aWYoaSBpbnN0YW5jZW9mIFhGQU9iamVjdClyZXR1cm4gaVtJbl0oZSl9cmV0dXJuIEhUTUxSZXN1bHQuRU1QVFl9fWNsYXNzIFZhcmlhYmxlcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwidmFyaWFibGVzIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib29sZWFuPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRhdGU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZVRpbWU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGVjaW1hbD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5leERhdGE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZmxvYXQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaW1hZ2U9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaW50ZWdlcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5tYW5pZmVzdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zY3JpcHQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudGV4dD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50aW1lPW5ldyBYRkFPYmplY3RBcnJheX1bWXNdKCl7cmV0dXJuITB9fWNsYXNzIFRlbXBsYXRlTmFtZXNwYWNle3N0YXRpY1tsbl0oZSx0KXtpZihUZW1wbGF0ZU5hbWVzcGFjZS5oYXNPd25Qcm9wZXJ0eShlKSl7Y29uc3QgaT1UZW1wbGF0ZU5hbWVzcGFjZVtlXSh0KTtpW3JuXSh0KTtyZXR1cm4gaX19c3RhdGljIGFwcGVhcmFuY2VGaWx0ZXIoZSl7cmV0dXJuIG5ldyBBcHBlYXJhbmNlRmlsdGVyKGUpfXN0YXRpYyBhcmMoZSl7cmV0dXJuIG5ldyBBcmMoZSl9c3RhdGljIGFyZWEoZSl7cmV0dXJuIG5ldyBBcmVhKGUpfXN0YXRpYyBhc3Npc3QoZSl7cmV0dXJuIG5ldyBBc3Npc3QoZSl9c3RhdGljIGJhcmNvZGUoZSl7cmV0dXJuIG5ldyBCYXJjb2RlKGUpfXN0YXRpYyBiaW5kKGUpe3JldHVybiBuZXcgQmluZChlKX1zdGF0aWMgYmluZEl0ZW1zKGUpe3JldHVybiBuZXcgQmluZEl0ZW1zKGUpfXN0YXRpYyBib29rZW5kKGUpe3JldHVybiBuZXcgQm9va2VuZChlKX1zdGF0aWMgYm9vbGVhbihlKXtyZXR1cm4gbmV3IEJvb2xlYW5FbGVtZW50KGUpfXN0YXRpYyBib3JkZXIoZSl7cmV0dXJuIG5ldyBCb3JkZXIoZSl9c3RhdGljIGJyZWFrKGUpe3JldHVybiBuZXcgQnJlYWsoZSl9c3RhdGljIGJyZWFrQWZ0ZXIoZSl7cmV0dXJuIG5ldyBCcmVha0FmdGVyKGUpfXN0YXRpYyBicmVha0JlZm9yZShlKXtyZXR1cm4gbmV3IEJyZWFrQmVmb3JlKGUpfXN0YXRpYyBidXR0b24oZSl7cmV0dXJuIG5ldyBCdXR0b24oZSl9c3RhdGljIGNhbGN1bGF0ZShlKXtyZXR1cm4gbmV3IENhbGN1bGF0ZShlKX1zdGF0aWMgY2FwdGlvbihlKXtyZXR1cm4gbmV3IENhcHRpb24oZSl9c3RhdGljIGNlcnRpZmljYXRlKGUpe3JldHVybiBuZXcgQ2VydGlmaWNhdGUoZSl9c3RhdGljIGNlcnRpZmljYXRlcyhlKXtyZXR1cm4gbmV3IENlcnRpZmljYXRlcyhlKX1zdGF0aWMgY2hlY2tCdXR0b24oZSl7cmV0dXJuIG5ldyBDaGVja0J1dHRvbihlKX1zdGF0aWMgY2hvaWNlTGlzdChlKXtyZXR1cm4gbmV3IENob2ljZUxpc3QoZSl9c3RhdGljIGNvbG9yKGUpe3JldHVybiBuZXcgQ29sb3IoZSl9c3RhdGljIGNvbWIoZSl7cmV0dXJuIG5ldyBDb21iKGUpfXN0YXRpYyBjb25uZWN0KGUpe3JldHVybiBuZXcgQ29ubmVjdChlKX1zdGF0aWMgY29udGVudEFyZWEoZSl7cmV0dXJuIG5ldyBDb250ZW50QXJlYShlKX1zdGF0aWMgY29ybmVyKGUpe3JldHVybiBuZXcgQ29ybmVyKGUpfXN0YXRpYyBkYXRlKGUpe3JldHVybiBuZXcgRGF0ZUVsZW1lbnQoZSl9c3RhdGljIGRhdGVUaW1lKGUpe3JldHVybiBuZXcgRGF0ZVRpbWUoZSl9c3RhdGljIGRhdGVUaW1lRWRpdChlKXtyZXR1cm4gbmV3IERhdGVUaW1lRWRpdChlKX1zdGF0aWMgZGVjaW1hbChlKXtyZXR1cm4gbmV3IERlY2ltYWwoZSl9c3RhdGljIGRlZmF1bHRVaShlKXtyZXR1cm4gbmV3IERlZmF1bHRVaShlKX1zdGF0aWMgZGVzYyhlKXtyZXR1cm4gbmV3IERlc2MoZSl9c3RhdGljIGRpZ2VzdE1ldGhvZChlKXtyZXR1cm4gbmV3IERpZ2VzdE1ldGhvZChlKX1zdGF0aWMgZGlnZXN0TWV0aG9kcyhlKXtyZXR1cm4gbmV3IERpZ2VzdE1ldGhvZHMoZSl9c3RhdGljIGRyYXcoZSl7cmV0dXJuIG5ldyBEcmF3KGUpfXN0YXRpYyBlZGdlKGUpe3JldHVybiBuZXcgRWRnZShlKX1zdGF0aWMgZW5jb2RpbmcoZSl7cmV0dXJuIG5ldyBFbmNvZGluZyhlKX1zdGF0aWMgZW5jb2RpbmdzKGUpe3JldHVybiBuZXcgRW5jb2RpbmdzKGUpfXN0YXRpYyBlbmNyeXB0KGUpe3JldHVybiBuZXcgRW5jcnlwdChlKX1zdGF0aWMgZW5jcnlwdERhdGEoZSl7cmV0dXJuIG5ldyBFbmNyeXB0RGF0YShlKX1zdGF0aWMgZW5jcnlwdGlvbihlKXtyZXR1cm4gbmV3IEVuY3J5cHRpb24oZSl9c3RhdGljIGVuY3J5cHRpb25NZXRob2QoZSl7cmV0dXJuIG5ldyBFbmNyeXB0aW9uTWV0aG9kKGUpfXN0YXRpYyBlbmNyeXB0aW9uTWV0aG9kcyhlKXtyZXR1cm4gbmV3IEVuY3J5cHRpb25NZXRob2RzKGUpfXN0YXRpYyBldmVudChlKXtyZXR1cm4gbmV3IEV2ZW50KGUpfXN0YXRpYyBleERhdGEoZSl7cmV0dXJuIG5ldyBFeERhdGEoZSl9c3RhdGljIGV4T2JqZWN0KGUpe3JldHVybiBuZXcgRXhPYmplY3QoZSl9c3RhdGljIGV4Y2xHcm91cChlKXtyZXR1cm4gbmV3IEV4Y2xHcm91cChlKX1zdGF0aWMgZXhlY3V0ZShlKXtyZXR1cm4gbmV3IEV4ZWN1dGUoZSl9c3RhdGljIGV4dHJhcyhlKXtyZXR1cm4gbmV3IEV4dHJhcyhlKX1zdGF0aWMgZmllbGQoZSl7cmV0dXJuIG5ldyBGaWVsZChlKX1zdGF0aWMgZmlsbChlKXtyZXR1cm4gbmV3IEZpbGwoZSl9c3RhdGljIGZpbHRlcihlKXtyZXR1cm4gbmV3IEZpbHRlcihlKX1zdGF0aWMgZmxvYXQoZSl7cmV0dXJuIG5ldyBGbG9hdChlKX1zdGF0aWMgZm9udChlKXtyZXR1cm4gbmV3IHRlbXBsYXRlX0ZvbnQoZSl9c3RhdGljIGZvcm1hdChlKXtyZXR1cm4gbmV3IEZvcm1hdChlKX1zdGF0aWMgaGFuZGxlcihlKXtyZXR1cm4gbmV3IEhhbmRsZXIoZSl9c3RhdGljIGh5cGhlbmF0aW9uKGUpe3JldHVybiBuZXcgSHlwaGVuYXRpb24oZSl9c3RhdGljIGltYWdlKGUpe3JldHVybiBuZXcgSW1hZ2UoZSl9c3RhdGljIGltYWdlRWRpdChlKXtyZXR1cm4gbmV3IEltYWdlRWRpdChlKX1zdGF0aWMgaW50ZWdlcihlKXtyZXR1cm4gbmV3IEludGVnZXIoZSl9c3RhdGljIGlzc3VlcnMoZSl7cmV0dXJuIG5ldyBJc3N1ZXJzKGUpfXN0YXRpYyBpdGVtcyhlKXtyZXR1cm4gbmV3IEl0ZW1zKGUpfXN0YXRpYyBrZWVwKGUpe3JldHVybiBuZXcgS2VlcChlKX1zdGF0aWMga2V5VXNhZ2UoZSl7cmV0dXJuIG5ldyBLZXlVc2FnZShlKX1zdGF0aWMgbGluZShlKXtyZXR1cm4gbmV3IExpbmUoZSl9c3RhdGljIGxpbmVhcihlKXtyZXR1cm4gbmV3IExpbmVhcihlKX1zdGF0aWMgbG9ja0RvY3VtZW50KGUpe3JldHVybiBuZXcgTG9ja0RvY3VtZW50KGUpfXN0YXRpYyBtYW5pZmVzdChlKXtyZXR1cm4gbmV3IE1hbmlmZXN0KGUpfXN0YXRpYyBtYXJnaW4oZSl7cmV0dXJuIG5ldyBNYXJnaW4oZSl9c3RhdGljIG1kcChlKXtyZXR1cm4gbmV3IE1kcChlKX1zdGF0aWMgbWVkaXVtKGUpe3JldHVybiBuZXcgTWVkaXVtKGUpfXN0YXRpYyBtZXNzYWdlKGUpe3JldHVybiBuZXcgTWVzc2FnZShlKX1zdGF0aWMgbnVtZXJpY0VkaXQoZSl7cmV0dXJuIG5ldyBOdW1lcmljRWRpdChlKX1zdGF0aWMgb2NjdXIoZSl7cmV0dXJuIG5ldyBPY2N1cihlKX1zdGF0aWMgb2lkKGUpe3JldHVybiBuZXcgT2lkKGUpfXN0YXRpYyBvaWRzKGUpe3JldHVybiBuZXcgT2lkcyhlKX1zdGF0aWMgb3ZlcmZsb3coZSl7cmV0dXJuIG5ldyBPdmVyZmxvdyhlKX1zdGF0aWMgcGFnZUFyZWEoZSl7cmV0dXJuIG5ldyBQYWdlQXJlYShlKX1zdGF0aWMgcGFnZVNldChlKXtyZXR1cm4gbmV3IFBhZ2VTZXQoZSl9c3RhdGljIHBhcmEoZSl7cmV0dXJuIG5ldyBQYXJhKGUpfXN0YXRpYyBwYXNzd29yZEVkaXQoZSl7cmV0dXJuIG5ldyBQYXNzd29yZEVkaXQoZSl9c3RhdGljIHBhdHRlcm4oZSl7cmV0dXJuIG5ldyB0ZW1wbGF0ZV9QYXR0ZXJuKGUpfXN0YXRpYyBwaWN0dXJlKGUpe3JldHVybiBuZXcgUGljdHVyZShlKX1zdGF0aWMgcHJvdG8oZSl7cmV0dXJuIG5ldyBQcm90byhlKX1zdGF0aWMgcmFkaWFsKGUpe3JldHVybiBuZXcgUmFkaWFsKGUpfXN0YXRpYyByZWFzb24oZSl7cmV0dXJuIG5ldyBSZWFzb24oZSl9c3RhdGljIHJlYXNvbnMoZSl7cmV0dXJuIG5ldyBSZWFzb25zKGUpfXN0YXRpYyByZWN0YW5nbGUoZSl7cmV0dXJuIG5ldyBSZWN0YW5nbGUoZSl9c3RhdGljIHJlZihlKXtyZXR1cm4gbmV3IFJlZkVsZW1lbnQoZSl9c3RhdGljIHNjcmlwdChlKXtyZXR1cm4gbmV3IFNjcmlwdChlKX1zdGF0aWMgc2V0UHJvcGVydHkoZSl7cmV0dXJuIG5ldyBTZXRQcm9wZXJ0eShlKX1zdGF0aWMgc2lnbkRhdGEoZSl7cmV0dXJuIG5ldyBTaWduRGF0YShlKX1zdGF0aWMgc2lnbmF0dXJlKGUpe3JldHVybiBuZXcgU2lnbmF0dXJlKGUpfXN0YXRpYyBzaWduaW5nKGUpe3JldHVybiBuZXcgU2lnbmluZyhlKX1zdGF0aWMgc29saWQoZSl7cmV0dXJuIG5ldyBTb2xpZChlKX1zdGF0aWMgc3BlYWsoZSl7cmV0dXJuIG5ldyBTcGVhayhlKX1zdGF0aWMgc3RpcHBsZShlKXtyZXR1cm4gbmV3IFN0aXBwbGUoZSl9c3RhdGljIHN1YmZvcm0oZSl7cmV0dXJuIG5ldyBTdWJmb3JtKGUpfXN0YXRpYyBzdWJmb3JtU2V0KGUpe3JldHVybiBuZXcgU3ViZm9ybVNldChlKX1zdGF0aWMgc3ViamVjdEROKGUpe3JldHVybiBuZXcgU3ViamVjdEROKGUpfXN0YXRpYyBzdWJqZWN0RE5zKGUpe3JldHVybiBuZXcgU3ViamVjdEROcyhlKX1zdGF0aWMgc3VibWl0KGUpe3JldHVybiBuZXcgU3VibWl0KGUpfXN0YXRpYyB0ZW1wbGF0ZShlKXtyZXR1cm4gbmV3IFRlbXBsYXRlKGUpfXN0YXRpYyB0ZXh0KGUpe3JldHVybiBuZXcgVGV4dChlKX1zdGF0aWMgdGV4dEVkaXQoZSl7cmV0dXJuIG5ldyBUZXh0RWRpdChlKX1zdGF0aWMgdGltZShlKXtyZXR1cm4gbmV3IFRpbWUoZSl9c3RhdGljIHRpbWVTdGFtcChlKXtyZXR1cm4gbmV3IFRpbWVTdGFtcChlKX1zdGF0aWMgdG9vbFRpcChlKXtyZXR1cm4gbmV3IFRvb2xUaXAoZSl9c3RhdGljIHRyYXZlcnNhbChlKXtyZXR1cm4gbmV3IFRyYXZlcnNhbChlKX1zdGF0aWMgdHJhdmVyc2UoZSl7cmV0dXJuIG5ldyBUcmF2ZXJzZShlKX1zdGF0aWMgdWkoZSl7cmV0dXJuIG5ldyBVaShlKX1zdGF0aWMgdmFsaWRhdGUoZSl7cmV0dXJuIG5ldyBWYWxpZGF0ZShlKX1zdGF0aWMgdmFsdWUoZSl7cmV0dXJuIG5ldyBWYWx1ZShlKX1zdGF0aWMgdmFyaWFibGVzKGUpe3JldHVybiBuZXcgVmFyaWFibGVzKGUpfX1jb25zdCBYbj1Cbi5kYXRhc2V0cy5pZDtmdW5jdGlvbiBjcmVhdGVUZXh0KGUpe2NvbnN0IHQ9bmV3IFRleHQoe30pO3RbbnNdPWU7cmV0dXJuIHR9Y2xhc3MgQmluZGVye2NvbnN0cnVjdG9yKGUpe3RoaXMucm9vdD1lO3RoaXMuZGF0YXNldHM9ZS5kYXRhc2V0czt0aGlzLmRhdGE9ZS5kYXRhc2V0cz8uZGF0YXx8bmV3IFhtbE9iamVjdChCbi5kYXRhc2V0cy5pZCwiZGF0YSIpO3RoaXMuZW1wdHlNZXJnZT0wPT09dGhpcy5kYXRhW21zXSgpLmxlbmd0aDt0aGlzLnJvb3QuZm9ybT10aGlzLmZvcm09ZS50ZW1wbGF0ZVtyc10oKX1faXNDb25zdW1lRGF0YSgpe3JldHVybiF0aGlzLmVtcHR5TWVyZ2UmJnRoaXMuX21lcmdlTW9kZX1faXNNYXRjaFRlbXBsYXRlKCl7cmV0dXJuIXRoaXMuX2lzQ29uc3VtZURhdGEoKX1iaW5kKCl7dGhpcy5fYmluZEVsZW1lbnQodGhpcy5mb3JtLHRoaXMuZGF0YSk7cmV0dXJuIHRoaXMuZm9ybX1nZXREYXRhKCl7cmV0dXJuIHRoaXMuZGF0YX1fYmluZFZhbHVlKGUsdCxpKXtlW29zXT10O2lmKGVba3NdKCkpaWYodFtNc10oKSl7Y29uc3QgaT10W2RzXSgpO2Vbc25dKGNyZWF0ZVRleHQoaSkpfWVsc2UgaWYoZSBpbnN0YW5jZW9mIEZpZWxkJiYibXVsdGlTZWxlY3QiPT09ZS51aT8uY2hvaWNlTGlzdD8ub3Blbil7Y29uc3QgaT10W21zXSgpLm1hcCgoZT0+ZVtuc10udHJpbSgpKSkuam9pbigiXG4iKTtlW3NuXShjcmVhdGVUZXh0KGkpKX1lbHNlIHRoaXMuX2lzQ29uc3VtZURhdGEoKSYmd2FybigiWEZBIC0gTm9kZXMgaGF2ZW4ndCB0aGUgc2FtZSB0eXBlLiIpO2Vsc2UhdFtNc10oKXx8dGhpcy5faXNNYXRjaFRlbXBsYXRlKCk/dGhpcy5fYmluZEVsZW1lbnQoZSx0KTp3YXJuKCJYRkEgLSBOb2RlcyBoYXZlbid0IHRoZSBzYW1lIHR5cGUuIil9X2ZpbmREYXRhQnlOYW1lVG9Db25zdW1lKGUsdCxpLGEpe2lmKCFlKXJldHVybiBudWxsO2xldCByLHM7Zm9yKGxldCBhPTA7YTwzO2ErKyl7cj1pW3BzXShlLCExLCEwKTtmb3IoOzspe3M9ci5uZXh0KCkudmFsdWU7aWYoIXMpYnJlYWs7aWYodD09PXNbTXNdKCkpcmV0dXJuIHN9aWYoaVtxc109PT1Cbi5kYXRhc2V0cy5pZCYmImRhdGEiPT09aVtPc10pYnJlYWs7aT1pW0RzXSgpfWlmKCFhKXJldHVybiBudWxsO3I9dGhpcy5kYXRhW3BzXShlLCEwLCExKTtzPXIubmV4dCgpLnZhbHVlO2lmKHMpcmV0dXJuIHM7cj10aGlzLmRhdGFbaHNdKGUsITApO3M9ci5uZXh0KCkudmFsdWU7cmV0dXJuIHM/LltNc10oKT9zOm51bGx9X3NldFByb3BlcnRpZXMoZSx0KXtpZihlLmhhc093blByb3BlcnR5KCJzZXRQcm9wZXJ0eSIpKWZvcihjb25zdHtyZWY6aSx0YXJnZXQ6YSxjb25uZWN0aW9uOnJ9b2YgZS5zZXRQcm9wZXJ0eS5jaGlsZHJlbil7aWYociljb250aW51ZTtpZighaSljb250aW51ZTtjb25zdCBzPXNlYXJjaE5vZGUodGhpcy5yb290LHQsaSwhMSwhMSk7aWYoIXMpe3dhcm4oYFhGQSAtIEludmFsaWQgcmVmZXJlbmNlOiAke2l9LmApO2NvbnRpbnVlfWNvbnN0W25dPXM7aWYoIW5bTHNdKHRoaXMuZGF0YSkpe3dhcm4oIlhGQSAtIEludmFsaWQgbm9kZTogbXVzdCBiZSBhIGRhdGEgbm9kZS4iKTtjb250aW51ZX1jb25zdCBvPXNlYXJjaE5vZGUodGhpcy5yb290LGUsYSwhMSwhMSk7aWYoIW8pe3dhcm4oYFhGQSAtIEludmFsaWQgdGFyZ2V0OiAke2F9LmApO2NvbnRpbnVlfWNvbnN0W2ddPW87aWYoIWdbTHNdKGUpKXt3YXJuKCJYRkEgLSBJbnZhbGlkIHRhcmdldDogbXVzdCBiZSBhIHByb3BlcnR5IG9yIHN1YnByb3BlcnR5LiIpO2NvbnRpbnVlfWNvbnN0IGM9Z1tEc10oKTtpZihnIGluc3RhbmNlb2YgU2V0UHJvcGVydHl8fGMgaW5zdGFuY2VvZiBTZXRQcm9wZXJ0eSl7d2FybigiWEZBIC0gSW52YWxpZCB0YXJnZXQ6IGNhbm5vdCBiZSBhIHNldFByb3BlcnR5IG9yIG9uZSBvZiBpdHMgcHJvcGVydGllcy4iKTtjb250aW51ZX1pZihnIGluc3RhbmNlb2YgQmluZEl0ZW1zfHxjIGluc3RhbmNlb2YgQmluZEl0ZW1zKXt3YXJuKCJYRkEgLSBJbnZhbGlkIHRhcmdldDogY2Fubm90IGJlIGEgYmluZEl0ZW1zIG9yIG9uZSBvZiBpdHMgcHJvcGVydGllcy4iKTtjb250aW51ZX1jb25zdCBDPW5bb25dKCksaD1nW09zXTtpZihnIGluc3RhbmNlb2YgWEZBQXR0cmlidXRlKXtjb25zdCBlPU9iamVjdC5jcmVhdGUobnVsbCk7ZVtoXT1DO2NvbnN0IHQ9UmVmbGVjdC5jb25zdHJ1Y3QoT2JqZWN0LmdldFByb3RvdHlwZU9mKGMpLmNvbnN0cnVjdG9yLFtlXSk7Y1toXT10W2hdfWVsc2UgaWYoZy5oYXNPd25Qcm9wZXJ0eShucykpe2dbb3NdPW47Z1tuc109QztnW2NzXSgpfWVsc2Ugd2FybigiWEZBIC0gSW52YWxpZCBub2RlIHRvIHVzZSBpbiBzZXRQcm9wZXJ0eSIpfX1fYmluZEl0ZW1zKGUsdCl7aWYoIWUuaGFzT3duUHJvcGVydHkoIml0ZW1zIil8fCFlLmhhc093blByb3BlcnR5KCJiaW5kSXRlbXMiKXx8ZS5iaW5kSXRlbXMuaXNFbXB0eSgpKXJldHVybjtmb3IoY29uc3QgdCBvZiBlLml0ZW1zLmNoaWxkcmVuKWVbJHNdKHQpO2UuaXRlbXMuY2xlYXIoKTtjb25zdCBpPW5ldyBJdGVtcyh7fSksYT1uZXcgSXRlbXMoe30pO2VbQXNdKGkpO2UuaXRlbXMucHVzaChpKTtlW0FzXShhKTtlLml0ZW1zLnB1c2goYSk7Zm9yKGNvbnN0e3JlZjpyLGxhYmVsUmVmOnMsdmFsdWVSZWY6bixjb25uZWN0aW9uOm99b2YgZS5iaW5kSXRlbXMuY2hpbGRyZW4pe2lmKG8pY29udGludWU7aWYoIXIpY29udGludWU7Y29uc3QgZT1zZWFyY2hOb2RlKHRoaXMucm9vdCx0LHIsITEsITEpO2lmKGUpZm9yKGNvbnN0IHQgb2YgZSl7aWYoIXRbTHNdKHRoaXMuZGF0YXNldHMpKXt3YXJuKGBYRkEgLSBJbnZhbGlkIHJlZiAoJHtyfSk6IG11c3QgYmUgYSBkYXRhc2V0cyBjaGlsZC5gKTtjb250aW51ZX1jb25zdCBlPXNlYXJjaE5vZGUodGhpcy5yb290LHQscywhMCwhMSk7aWYoIWUpe3dhcm4oYFhGQSAtIEludmFsaWQgbGFiZWw6ICR7c30uYCk7Y29udGludWV9Y29uc3Rbb109ZTtpZighb1tMc10odGhpcy5kYXRhc2V0cykpe3dhcm4oIlhGQSAtIEludmFsaWQgbGFiZWw6IG11c3QgYmUgYSBkYXRhc2V0cyBjaGlsZC4iKTtjb250aW51ZX1jb25zdCBnPXNlYXJjaE5vZGUodGhpcy5yb290LHQsbiwhMCwhMSk7aWYoIWcpe3dhcm4oYFhGQSAtIEludmFsaWQgdmFsdWU6ICR7bn0uYCk7Y29udGludWV9Y29uc3RbY109ZztpZighY1tMc10odGhpcy5kYXRhc2V0cykpe3dhcm4oIlhGQSAtIEludmFsaWQgdmFsdWU6IG11c3QgYmUgYSBkYXRhc2V0cyBjaGlsZC4iKTtjb250aW51ZX1jb25zdCBDPWNyZWF0ZVRleHQob1tvbl0oKSksaD1jcmVhdGVUZXh0KGNbb25dKCkpO2lbQXNdKEMpO2kudGV4dC5wdXNoKEMpO2FbQXNdKGgpO2EudGV4dC5wdXNoKGgpfWVsc2Ugd2FybihgWEZBIC0gSW52YWxpZCByZWZlcmVuY2U6ICR7cn0uYCl9fV9iaW5kT2NjdXJyZW5jZXMoZSx0LGkpe2xldCBhO2lmKHQubGVuZ3RoPjEpe2E9ZVtyc10oKTthWyRzXShhLm9jY3VyKTthLm9jY3VyPW51bGx9dGhpcy5fYmluZFZhbHVlKGUsdFswXSxpKTt0aGlzLl9zZXRQcm9wZXJ0aWVzKGUsdFswXSk7dGhpcy5fYmluZEl0ZW1zKGUsdFswXSk7aWYoMT09PXQubGVuZ3RoKXJldHVybjtjb25zdCByPWVbRHNdKCkscz1lW09zXSxuPXJbTnNdKGUpO2ZvcihsZXQgZT0xLG89dC5sZW5ndGg7ZTxvO2UrKyl7Y29uc3Qgbz10W2VdLGc9YVtyc10oKTtyW3NdLnB1c2goZyk7cltHc10obitlLGcpO3RoaXMuX2JpbmRWYWx1ZShnLG8saSk7dGhpcy5fc2V0UHJvcGVydGllcyhnLG8pO3RoaXMuX2JpbmRJdGVtcyhnLG8pfX1fY3JlYXRlT2NjdXJyZW5jZXMoZSl7aWYoIXRoaXMuZW1wdHlNZXJnZSlyZXR1cm47Y29uc3R7b2NjdXI6dH09ZTtpZighdHx8dC5pbml0aWFsPD0xKXJldHVybjtjb25zdCBpPWVbRHNdKCksYT1lW09zXTtpZighKGlbYV1pbnN0YW5jZW9mIFhGQU9iamVjdEFycmF5KSlyZXR1cm47bGV0IHI7cj1lLm5hbWU/aVthXS5jaGlsZHJlbi5maWx0ZXIoKHQ9PnQubmFtZT09PWUubmFtZSkpLmxlbmd0aDppW2FdLmNoaWxkcmVuLmxlbmd0aDtjb25zdCBzPWlbTnNdKGUpKzEsbj10LmluaXRpYWwtcjtpZihuKXtjb25zdCB0PWVbcnNdKCk7dFskc10odC5vY2N1cik7dC5vY2N1cj1udWxsO2lbYV0ucHVzaCh0KTtpW0dzXShzLHQpO2ZvcihsZXQgZT0xO2U8bjtlKyspe2NvbnN0IHI9dFtyc10oKTtpW2FdLnB1c2gocik7aVtHc10ocytlLHIpfX19X2dldE9jY3VySW5mbyhlKXtjb25zdHtuYW1lOnQsb2NjdXI6aX09ZTtpZighaXx8IXQpcmV0dXJuWzEsMV07Y29uc3QgYT0tMT09PWkubWF4PzEvMDppLm1heDtyZXR1cm5baS5taW4sYV19X3NldEFuZEJpbmQoZSx0KXt0aGlzLl9zZXRQcm9wZXJ0aWVzKGUsdCk7dGhpcy5fYmluZEl0ZW1zKGUsdCk7dGhpcy5fYmluZEVsZW1lbnQoZSx0KX1fYmluZEVsZW1lbnQoZSx0KXtjb25zdCBpPVtdO3RoaXMuX2NyZWF0ZU9jY3VycmVuY2VzKGUpO2Zvcihjb25zdCBhIG9mIGVbbXNdKCkpe2lmKGFbb3NdKWNvbnRpbnVlO2lmKHZvaWQgMD09PXRoaXMuX21lcmdlTW9kZSYmInN1YmZvcm0iPT09YVtPc10pe3RoaXMuX21lcmdlTW9kZT0iY29uc3VtZURhdGEiPT09YS5tZXJnZU1vZGU7Y29uc3QgZT10W21zXSgpO2lmKGUubGVuZ3RoPjApdGhpcy5fYmluZE9jY3VycmVuY2VzKGEsW2VbMF1dLG51bGwpO2Vsc2UgaWYodGhpcy5lbXB0eU1lcmdlKXtjb25zdCBlPXRbcXNdPT09WG4/LTE6dFtxc10saT1hW29zXT1uZXcgWG1sT2JqZWN0KGUsYS5uYW1lfHwicm9vdCIpO3RbQXNdKGkpO3RoaXMuX2JpbmRFbGVtZW50KGEsaSl9Y29udGludWV9aWYoIWFbVXNdKCkpY29udGludWU7bGV0IGU9ITEscj1udWxsLHM9bnVsbCxuPW51bGw7aWYoYS5iaW5kKXtzd2l0Y2goYS5iaW5kLm1hdGNoKXtjYXNlIm5vbmUiOnRoaXMuX3NldEFuZEJpbmQoYSx0KTtjb250aW51ZTtjYXNlImdsb2JhbCI6ZT0hMDticmVhaztjYXNlImRhdGFSZWYiOmlmKCFhLmJpbmQucmVmKXt3YXJuKGBYRkEgLSByZWYgaXMgZW1wdHkgaW4gbm9kZSAke2FbT3NdfS5gKTt0aGlzLl9zZXRBbmRCaW5kKGEsdCk7Y29udGludWV9cz1hLmJpbmQucmVmfWEuYmluZC5waWN0dXJlJiYocj1hLmJpbmQucGljdHVyZVtuc10pfWNvbnN0W28sZ109dGhpcy5fZ2V0T2NjdXJJbmZvKGEpO2lmKHMpe249c2VhcmNoTm9kZSh0aGlzLnJvb3QsdCxzLCEwLCExKTtpZihudWxsPT09bil7bj1jcmVhdGVEYXRhTm9kZSh0aGlzLmRhdGEsdCxzKTtpZighbiljb250aW51ZTt0aGlzLl9pc0NvbnN1bWVEYXRhKCkmJihuW3NzXT0hMCk7dGhpcy5fc2V0QW5kQmluZChhLG4pO2NvbnRpbnVlfXRoaXMuX2lzQ29uc3VtZURhdGEoKSYmKG49bi5maWx0ZXIoKGU9PiFlW3NzXSkpKTtuLmxlbmd0aD5nP249bi5zbGljZSgwLGcpOjA9PT1uLmxlbmd0aCYmKG49bnVsbCk7biYmdGhpcy5faXNDb25zdW1lRGF0YSgpJiZuLmZvckVhY2goKGU9PntlW3NzXT0hMH0pKX1lbHNle2lmKCFhLm5hbWUpe3RoaXMuX3NldEFuZEJpbmQoYSx0KTtjb250aW51ZX1pZih0aGlzLl9pc0NvbnN1bWVEYXRhKCkpe2NvbnN0IGk9W107Zm9yKDtpLmxlbmd0aDxnOyl7Y29uc3Qgcj10aGlzLl9maW5kRGF0YUJ5TmFtZVRvQ29uc3VtZShhLm5hbWUsYVtrc10oKSx0LGUpO2lmKCFyKWJyZWFrO3Jbc3NdPSEwO2kucHVzaChyKX1uPWkubGVuZ3RoPjA/aTpudWxsfWVsc2V7bj10W3BzXShhLm5hbWUsITEsdGhpcy5lbXB0eU1lcmdlKS5uZXh0KCkudmFsdWU7aWYoIW4pe2lmKDA9PT1vKXtpLnB1c2goYSk7Y29udGludWV9Y29uc3QgZT10W3FzXT09PVhuPy0xOnRbcXNdO249YVtvc109bmV3IFhtbE9iamVjdChlLGEubmFtZSk7dGhpcy5lbXB0eU1lcmdlJiYobltzc109ITApO3RbQXNdKG4pO3RoaXMuX3NldEFuZEJpbmQoYSxuKTtjb250aW51ZX10aGlzLmVtcHR5TWVyZ2UmJihuW3NzXT0hMCk7bj1bbl19fW4/dGhpcy5fYmluZE9jY3VycmVuY2VzKGEsbixyKTpvPjA/dGhpcy5fc2V0QW5kQmluZChhLHQpOmkucHVzaChhKX1pLmZvckVhY2goKGU9PmVbRHNdKClbJHNdKGUpKSl9fWNsYXNzIERhdGFIYW5kbGVye2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5kYXRhPXQ7dGhpcy5kYXRhc2V0PWUuZGF0YXNldHN8fG51bGx9c2VyaWFsaXplKGUpe2NvbnN0IHQ9W1stMSx0aGlzLmRhdGFbbXNdKCldXTtmb3IoO3QubGVuZ3RoPjA7KXtjb25zdCBpPXQuYXQoLTEpLFthLHJdPWk7aWYoYSsxPT09ci5sZW5ndGgpe3QucG9wKCk7Y29udGludWV9Y29uc3Qgcz1yWysraVswXV0sbj1lLmdldChzW2huXSk7aWYobilzW3NuXShuKTtlbHNle2NvbnN0IHQ9c1tsc10oKTtmb3IoY29uc3QgaSBvZiB0LnZhbHVlcygpKXtjb25zdCB0PWUuZ2V0KGlbaG5dKTtpZih0KXtpW3NuXSh0KTticmVha319fWNvbnN0IG89c1ttc10oKTtvLmxlbmd0aD4wJiZ0LnB1c2goWy0xLG9dKX1jb25zdCBpPVsnPHhmYTpkYXRhc2V0cyB4bWxuczp4ZmE9Imh0dHA6Ly93d3cueGZhLm9yZy9zY2hlbWEveGZhLWRhdGEvMS4wLyI+J107aWYodGhpcy5kYXRhc2V0KWZvcihjb25zdCBlIG9mIHRoaXMuZGF0YXNldFttc10oKSkiZGF0YSIhPT1lW09zXSYmZVtjbl0oaSk7dGhpcy5kYXRhW2NuXShpKTtpLnB1c2goIjwveGZhOmRhdGFzZXRzPiIpO3JldHVybiBpLmpvaW4oIiIpfX1jb25zdCBabj1Cbi5jb25maWcuaWQ7Y2xhc3MgQWNyb2JhdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihabiwiYWNyb2JhdCIsITApO3RoaXMuYWNyb2JhdDc9bnVsbDt0aGlzLmF1dG9TYXZlPW51bGw7dGhpcy5jb21tb249bnVsbDt0aGlzLnZhbGlkYXRlPW51bGw7dGhpcy52YWxpZGF0ZUFwcHJvdmFsU2lnbmF0dXJlcz1udWxsO3RoaXMuc3VibWl0VXJsPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgQWNyb2JhdDcgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWm4sImFjcm9iYXQ3IiwhMCk7dGhpcy5keW5hbWljUmVuZGVyPW51bGx9fWNsYXNzIEFEQkVfSlNDb25zb2xlIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpuLCJBREJFX0pTQ29uc29sZSIsWyJkZWxlZ2F0ZSIsIkVuYWJsZSIsIkRpc2FibGUiXSl9fWNsYXNzIEFEQkVfSlNEZWJ1Z2dlciBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihabiwiQURCRV9KU0RlYnVnZ2VyIixbImRlbGVnYXRlIiwiRW5hYmxlIiwiRGlzYWJsZSJdKX19Y2xhc3MgQWRkU2lsZW50UHJpbnQgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihabiwiYWRkU2lsZW50UHJpbnQiKX19Y2xhc3MgQWRkVmlld2VyUHJlZmVyZW5jZXMgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihabiwiYWRkVmlld2VyUHJlZmVyZW5jZXMiKX19Y2xhc3MgQWRqdXN0RGF0YSBleHRlbmRzIE9wdGlvbjEwe2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpuLCJhZGp1c3REYXRhIil9fWNsYXNzIEFkb2JlRXh0ZW5zaW9uTGV2ZWwgZXh0ZW5kcyBJbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpuLCJhZG9iZUV4dGVuc2lvbkxldmVsIiwwLChlPT5lPj0xJiZlPD04KSl9fWNsYXNzIEFnZW50IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpuLCJhZ2VudCIsITApO3RoaXMubmFtZT1lLm5hbWU/ZS5uYW1lLnRyaW0oKToiIjt0aGlzLmNvbW1vbj1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEFsd2F5c0VtYmVkIGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihabiwiYWx3YXlzRW1iZWQiKX19Y2xhc3MgQW1kIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpuLCJhbWQiKX19Y2xhc3MgY29uZmlnX0FyZWEgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWm4sImFyZWEiKTt0aGlzLmxldmVsPWdldEludGVnZXIoe2RhdGE6ZS5sZXZlbCxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT5lPj0xJiZlPD0zfSk7dGhpcy5uYW1lPWdldFN0cmluZ09wdGlvbihlLm5hbWUsWyIiLCJiYXJjb2RlIiwiY29yZWluaXQiLCJkZXZpY2VEcml2ZXIiLCJmb250IiwiZ2VuZXJhbCIsImxheW91dCIsIm1lcmdlIiwic2NyaXB0Iiwic2lnbmF0dXJlIiwic291cmNlU2V0IiwidGVtcGxhdGVDYWNoZSJdKX19Y2xhc3MgQXR0cmlidXRlcyBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihabiwiYXR0cmlidXRlcyIsWyJwcmVzZXJ2ZSIsImRlbGVnYXRlIiwiaWdub3JlIl0pfX1jbGFzcyBBdXRvU2F2ZSBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihabiwiYXV0b1NhdmUiLFsiZGlzYWJsZWQiLCJlbmFibGVkIl0pfX1jbGFzcyBCYXNlIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpuLCJiYXNlIil9fWNsYXNzIEJhdGNoT3V0cHV0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpuLCJiYXRjaE91dHB1dCIpO3RoaXMuZm9ybWF0PWdldFN0cmluZ09wdGlvbihlLmZvcm1hdCxbIm5vbmUiLCJjb25jYXQiLCJ6aXAiLCJ6aXBDb21wcmVzcyJdKX19Y2xhc3MgQmVoYXZpb3JPdmVycmlkZSBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWm4sImJlaGF2aW9yT3ZlcnJpZGUiKX1bY3NdKCl7dGhpc1tuc109bmV3IE1hcCh0aGlzW25zXS50cmltKCkuc3BsaXQoL1xzKy8pLmZpbHRlcigoZT0+ZS5pbmNsdWRlcygiOiIpKSkubWFwKChlPT5lLnNwbGl0KCI6IiwyKSkpKX19Y2xhc3MgQ2FjaGUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWm4sImNhY2hlIiwhMCk7dGhpcy50ZW1wbGF0ZUNhY2hlPW51bGx9fWNsYXNzIENoYW5nZSBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpuLCJjaGFuZ2UiKX19Y2xhc3MgQ29tbW9uIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpuLCJjb21tb24iLCEwKTt0aGlzLmRhdGE9bnVsbDt0aGlzLmxvY2FsZT1udWxsO3RoaXMubG9jYWxlU2V0PW51bGw7dGhpcy5tZXNzYWdpbmc9bnVsbDt0aGlzLnN1cHByZXNzQmFubmVyPW51bGw7dGhpcy50ZW1wbGF0ZT1udWxsO3RoaXMudmFsaWRhdGlvbk1lc3NhZ2luZz1udWxsO3RoaXMudmVyc2lvbkNvbnRyb2w9bnVsbDt0aGlzLmxvZz1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIENvbXByZXNzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpuLCJjb21wcmVzcyIpO3RoaXMuc2NvcGU9Z2V0U3RyaW5nT3B0aW9uKGUuc2NvcGUsWyJpbWFnZU9ubHkiLCJkb2N1bWVudCJdKX19Y2xhc3MgQ29tcHJlc3NMb2dpY2FsU3RydWN0dXJlIGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIoWm4sImNvbXByZXNzTG9naWNhbFN0cnVjdHVyZSIpfX1jbGFzcyBDb21wcmVzc09iamVjdFN0cmVhbSBleHRlbmRzIE9wdGlvbjEwe2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpuLCJjb21wcmVzc09iamVjdFN0cmVhbSIpfX1jbGFzcyBDb21wcmVzc2lvbiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihabiwiY29tcHJlc3Npb24iLCEwKTt0aGlzLmNvbXByZXNzTG9naWNhbFN0cnVjdHVyZT1udWxsO3RoaXMuY29tcHJlc3NPYmplY3RTdHJlYW09bnVsbDt0aGlzLmxldmVsPW51bGw7dGhpcy50eXBlPW51bGx9fWNsYXNzIENvbmZpZyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihabiwiY29uZmlnIiwhMCk7dGhpcy5hY3JvYmF0PW51bGw7dGhpcy5wcmVzZW50PW51bGw7dGhpcy50cmFjZT1udWxsO3RoaXMuYWdlbnQ9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBDb25mb3JtYW5jZSBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihabiwiY29uZm9ybWFuY2UiLFsiQSIsIkIiXSl9fWNsYXNzIENvbnRlbnRDb3B5IGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIoWm4sImNvbnRlbnRDb3B5Iil9fWNsYXNzIENvcGllcyBleHRlbmRzIEludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWm4sImNvcGllcyIsMSwoZT0+ZT49MSkpfX1jbGFzcyBDcmVhdG9yIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpuLCJjcmVhdG9yIil9fWNsYXNzIEN1cnJlbnRQYWdlIGV4dGVuZHMgSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihabiwiY3VycmVudFBhZ2UiLDAsKGU9PmU+PTApKX19Y2xhc3MgRGF0YSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihabiwiZGF0YSIsITApO3RoaXMuYWRqdXN0RGF0YT1udWxsO3RoaXMuYXR0cmlidXRlcz1udWxsO3RoaXMuaW5jcmVtZW50YWxMb2FkPW51bGw7dGhpcy5vdXRwdXRYU0w9bnVsbDt0aGlzLnJhbmdlPW51bGw7dGhpcy5yZWNvcmQ9bnVsbDt0aGlzLnN0YXJ0Tm9kZT1udWxsO3RoaXMudXJpPW51bGw7dGhpcy53aW5kb3c9bnVsbDt0aGlzLnhzbD1udWxsO3RoaXMuZXhjbHVkZU5TPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRyYW5zZm9ybT1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIERlYnVnIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpuLCJkZWJ1ZyIsITApO3RoaXMudXJpPW51bGx9fWNsYXNzIERlZmF1bHRUeXBlZmFjZSBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWm4sImRlZmF1bHRUeXBlZmFjZSIpO3RoaXMud3JpdGluZ1NjcmlwdD1nZXRTdHJpbmdPcHRpb24oZS53cml0aW5nU2NyaXB0LFsiKiIsIkFyYWJpYyIsIkN5cmlsbGljIiwiRWFzdEV1cm9wZWFuUm9tYW4iLCJHcmVlayIsIkhlYnJldyIsIkphcGFuZXNlIiwiS29yZWFuIiwiUm9tYW4iLCJTaW1wbGlmaWVkQ2hpbmVzZSIsIlRoYWkiLCJUcmFkaXRpb25hbENoaW5lc2UiLCJWaWV0bmFtZXNlIl0pfX1jbGFzcyBEZXN0aW5hdGlvbiBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihabiwiZGVzdGluYXRpb24iLFsicGRmIiwicGNsIiwicHMiLCJ3ZWJDbGllbnQiLCJ6cGwiXSl9fWNsYXNzIERvY3VtZW50QXNzZW1ibHkgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihabiwiZG9jdW1lbnRBc3NlbWJseSIpfX1jbGFzcyBEcml2ZXIgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWm4sImRyaXZlciIsITApO3RoaXMubmFtZT1lLm5hbWU/ZS5uYW1lLnRyaW0oKToiIjt0aGlzLmZvbnRJbmZvPW51bGw7dGhpcy54ZGM9bnVsbH19Y2xhc3MgRHVwbGV4T3B0aW9uIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpuLCJkdXBsZXhPcHRpb24iLFsic2ltcGxleCIsImR1cGxleEZsaXBMb25nRWRnZSIsImR1cGxleEZsaXBTaG9ydEVkZ2UiXSl9fWNsYXNzIER5bmFtaWNSZW5kZXIgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWm4sImR5bmFtaWNSZW5kZXIiLFsiZm9yYmlkZGVuIiwicmVxdWlyZWQiXSl9fWNsYXNzIEVtYmVkIGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIoWm4sImVtYmVkIil9fWNsYXNzIGNvbmZpZ19FbmNyeXB0IGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIoWm4sImVuY3J5cHQiKX19Y2xhc3MgY29uZmlnX0VuY3J5cHRpb24gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWm4sImVuY3J5cHRpb24iLCEwKTt0aGlzLmVuY3J5cHQ9bnVsbDt0aGlzLmVuY3J5cHRpb25MZXZlbD1udWxsO3RoaXMucGVybWlzc2lvbnM9bnVsbH19Y2xhc3MgRW5jcnlwdGlvbkxldmVsIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpuLCJlbmNyeXB0aW9uTGV2ZWwiLFsiNDBiaXQiLCIxMjhiaXQiXSl9fWNsYXNzIEVuZm9yY2UgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWm4sImVuZm9yY2UiKX19Y2xhc3MgRXF1YXRlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpuLCJlcXVhdGUiKTt0aGlzLmZvcmNlPWdldEludGVnZXIoe2RhdGE6ZS5mb3JjZSxkZWZhdWx0VmFsdWU6MSx2YWxpZGF0ZTplPT4wPT09ZX0pO3RoaXMuZnJvbT1lLmZyb218fCIiO3RoaXMudG89ZS50b3x8IiJ9fWNsYXNzIEVxdWF0ZVJhbmdlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpuLCJlcXVhdGVSYW5nZSIpO3RoaXMuZnJvbT1lLmZyb218fCIiO3RoaXMudG89ZS50b3x8IiI7dGhpcy5fdW5pY29kZVJhbmdlPWUudW5pY29kZVJhbmdlfHwiIn1nZXQgdW5pY29kZVJhbmdlKCl7Y29uc3QgZT1bXSx0PS9VXCsoWzAtOWEtZkEtRl0rKS8saT10aGlzLl91bmljb2RlUmFuZ2U7Zm9yKGxldCBhIG9mIGkuc3BsaXQoIiwiKS5tYXAoKGU9PmUudHJpbSgpKSkuZmlsdGVyKChlPT4hIWUpKSl7YT1hLnNwbGl0KCItIiwyKS5tYXAoKGU9Pntjb25zdCBpPWUubWF0Y2godCk7cmV0dXJuIGk/cGFyc2VJbnQoaVsxXSwxNik6MH0pKTsxPT09YS5sZW5ndGgmJmEucHVzaChhWzBdKTtlLnB1c2goYSl9cmV0dXJuIHNoYWRvdyh0aGlzLCJ1bmljb2RlUmFuZ2UiLGUpfX1jbGFzcyBFeGNsdWRlIGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihabiwiZXhjbHVkZSIpfVtjc10oKXt0aGlzW25zXT10aGlzW25zXS50cmltKCkuc3BsaXQoL1xzKy8pLmZpbHRlcigoZT0+ZSYmWyJjYWxjdWxhdGUiLCJjbG9zZSIsImVudGVyIiwiZXhpdCIsImluaXRpYWxpemUiLCJyZWFkeSIsInZhbGlkYXRlIl0uaW5jbHVkZXMoZSkpKX19Y2xhc3MgRXhjbHVkZU5TIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpuLCJleGNsdWRlTlMiKX19Y2xhc3MgRmxpcExhYmVsIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpuLCJmbGlwTGFiZWwiLFsidXNlUHJpbnRlclNldHRpbmciLCJvbiIsIm9mZiJdKX19Y2xhc3MgY29uZmlnX0ZvbnRJbmZvIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpuLCJmb250SW5mbyIsITApO3RoaXMuZW1iZWQ9bnVsbDt0aGlzLm1hcD1udWxsO3RoaXMuc3Vic2V0QmVsb3c9bnVsbDt0aGlzLmFsd2F5c0VtYmVkPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRlZmF1bHRUeXBlZmFjZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5uZXZlckVtYmVkPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgRm9ybUZpZWxkRmlsbGluZyBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpuLCJmb3JtRmllbGRGaWxsaW5nIil9fWNsYXNzIEdyb3VwUGFyZW50IGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpuLCJncm91cFBhcmVudCIpfX1jbGFzcyBJZkVtcHR5IGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpuLCJpZkVtcHR5IixbImRhdGFWYWx1ZSIsImRhdGFHcm91cCIsImlnbm9yZSIsInJlbW92ZSJdKX19Y2xhc3MgSW5jbHVkZVhEUENvbnRlbnQgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWm4sImluY2x1ZGVYRFBDb250ZW50Iil9fWNsYXNzIEluY3JlbWVudGFsTG9hZCBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihabiwiaW5jcmVtZW50YWxMb2FkIixbIm5vbmUiLCJmb3J3YXJkT25seSJdKX19Y2xhc3MgSW5jcmVtZW50YWxNZXJnZSBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpuLCJpbmNyZW1lbnRhbE1lcmdlIil9fWNsYXNzIEludGVyYWN0aXZlIGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIoWm4sImludGVyYWN0aXZlIil9fWNsYXNzIEpvZyBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihabiwiam9nIixbInVzZVByaW50ZXJTZXR0aW5nIiwibm9uZSIsInBhZ2VTZXQiXSl9fWNsYXNzIExhYmVsUHJpbnRlciBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihabiwibGFiZWxQcmludGVyIiwhMCk7dGhpcy5uYW1lPWdldFN0cmluZ09wdGlvbihlLm5hbWUsWyJ6cGwiLCJkcGwiLCJpcGwiLCJ0Y3BsIl0pO3RoaXMuYmF0Y2hPdXRwdXQ9bnVsbDt0aGlzLmZsaXBMYWJlbD1udWxsO3RoaXMuZm9udEluZm89bnVsbDt0aGlzLnhkYz1udWxsfX1jbGFzcyBMYXlvdXQgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWm4sImxheW91dCIsWyJwYWdpbmF0ZSIsInBhbmVsIl0pfX1jbGFzcyBMZXZlbCBleHRlbmRzIEludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWm4sImxldmVsIiwwLChlPT5lPjApKX19Y2xhc3MgTGluZWFyaXplZCBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpuLCJsaW5lYXJpemVkIil9fWNsYXNzIExvY2FsZSBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihabiwibG9jYWxlIil9fWNsYXNzIExvY2FsZVNldCBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihabiwibG9jYWxlU2V0Iil9fWNsYXNzIExvZyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihabiwibG9nIiwhMCk7dGhpcy5tb2RlPW51bGw7dGhpcy50aHJlc2hvbGQ9bnVsbDt0aGlzLnRvPW51bGw7dGhpcy51cmk9bnVsbH19Y2xhc3MgTWFwRWxlbWVudCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihabiwibWFwIiwhMCk7dGhpcy5lcXVhdGU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXF1YXRlUmFuZ2U9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBNZWRpdW1JbmZvIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpuLCJtZWRpdW1JbmZvIiwhMCk7dGhpcy5tYXA9bnVsbH19Y2xhc3MgY29uZmlnX01lc3NhZ2UgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWm4sIm1lc3NhZ2UiLCEwKTt0aGlzLm1zZ0lkPW51bGw7dGhpcy5zZXZlcml0eT1udWxsfX1jbGFzcyBNZXNzYWdpbmcgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWm4sIm1lc3NhZ2luZyIsITApO3RoaXMubWVzc2FnZT1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIE1vZGUgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWm4sIm1vZGUiLFsiYXBwZW5kIiwib3ZlcndyaXRlIl0pfX1jbGFzcyBNb2RpZnlBbm5vdHMgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihabiwibW9kaWZ5QW5ub3RzIil9fWNsYXNzIE1zZ0lkIGV4dGVuZHMgSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihabiwibXNnSWQiLDEsKGU9PmU+PTEpKX19Y2xhc3MgTmFtZUF0dHIgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWm4sIm5hbWVBdHRyIil9fWNsYXNzIE5ldmVyRW1iZWQgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpuLCJuZXZlckVtYmVkIil9fWNsYXNzIE51bWJlck9mQ29waWVzIGV4dGVuZHMgSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihabiwibnVtYmVyT2ZDb3BpZXMiLG51bGwsKGU9PmU+PTImJmU8PTUpKX19Y2xhc3MgT3BlbkFjdGlvbiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihabiwib3BlbkFjdGlvbiIsITApO3RoaXMuZGVzdGluYXRpb249bnVsbH19Y2xhc3MgT3V0cHV0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpuLCJvdXRwdXQiLCEwKTt0aGlzLnRvPW51bGw7dGhpcy50eXBlPW51bGw7dGhpcy51cmk9bnVsbH19Y2xhc3MgT3V0cHV0QmluIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpuLCJvdXRwdXRCaW4iKX19Y2xhc3MgT3V0cHV0WFNMIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpuLCJvdXRwdXRYU0wiLCEwKTt0aGlzLnVyaT1udWxsfX1jbGFzcyBPdmVycHJpbnQgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWm4sIm92ZXJwcmludCIsWyJub25lIiwiYm90aCIsImRyYXciLCJmaWVsZCJdKX19Y2xhc3MgUGFja2V0cyBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihabiwicGFja2V0cyIpfVtjc10oKXsiKiIhPT10aGlzW25zXSYmKHRoaXNbbnNdPXRoaXNbbnNdLnRyaW0oKS5zcGxpdCgvXHMrLykuZmlsdGVyKChlPT5bImNvbmZpZyIsImRhdGFzZXRzIiwidGVtcGxhdGUiLCJ4ZmRmIiwieHNsdCJdLmluY2x1ZGVzKGUpKSkpfX1jbGFzcyBQYWdlT2Zmc2V0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpuLCJwYWdlT2Zmc2V0Iik7dGhpcy54PWdldEludGVnZXIoe2RhdGE6ZS54LGRlZmF1bHRWYWx1ZToidXNlWERDU2V0dGluZyIsdmFsaWRhdGU6ZT0+ITB9KTt0aGlzLnk9Z2V0SW50ZWdlcih7ZGF0YTplLnksZGVmYXVsdFZhbHVlOiJ1c2VYRENTZXR0aW5nIix2YWxpZGF0ZTplPT4hMH0pfX1jbGFzcyBQYWdlUmFuZ2UgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWm4sInBhZ2VSYW5nZSIpfVtjc10oKXtjb25zdCBlPXRoaXNbbnNdLnRyaW0oKS5zcGxpdCgvXHMrLykubWFwKChlPT5wYXJzZUludChlLDEwKSkpLHQ9W107Zm9yKGxldCBpPTAsYT1lLmxlbmd0aDtpPGE7aSs9Mil0LnB1c2goZS5zbGljZShpLGkrMikpO3RoaXNbbnNdPXR9fWNsYXNzIFBhZ2luYXRpb24gZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWm4sInBhZ2luYXRpb24iLFsic2ltcGxleCIsImR1cGxleFNob3J0RWRnZSIsImR1cGxleExvbmdFZGdlIl0pfX1jbGFzcyBQYWdpbmF0aW9uT3ZlcnJpZGUgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWm4sInBhZ2luYXRpb25PdmVycmlkZSIsWyJub25lIiwiZm9yY2VEdXBsZXgiLCJmb3JjZUR1cGxleExvbmdFZGdlIiwiZm9yY2VEdXBsZXhTaG9ydEVkZ2UiLCJmb3JjZVNpbXBsZXgiXSl9fWNsYXNzIFBhcnQgZXh0ZW5kcyBJbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpuLCJwYXJ0IiwxLChlPT4hMSkpfX1jbGFzcyBQY2wgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWm4sInBjbCIsITApO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMuYmF0Y2hPdXRwdXQ9bnVsbDt0aGlzLmZvbnRJbmZvPW51bGw7dGhpcy5qb2c9bnVsbDt0aGlzLm1lZGl1bUluZm89bnVsbDt0aGlzLm91dHB1dEJpbj1udWxsO3RoaXMucGFnZU9mZnNldD1udWxsO3RoaXMuc3RhcGxlPW51bGw7dGhpcy54ZGM9bnVsbH19Y2xhc3MgUGRmIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpuLCJwZGYiLCEwKTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLmFkb2JlRXh0ZW5zaW9uTGV2ZWw9bnVsbDt0aGlzLmJhdGNoT3V0cHV0PW51bGw7dGhpcy5jb21wcmVzc2lvbj1udWxsO3RoaXMuY3JlYXRvcj1udWxsO3RoaXMuZW5jcnlwdGlvbj1udWxsO3RoaXMuZm9udEluZm89bnVsbDt0aGlzLmludGVyYWN0aXZlPW51bGw7dGhpcy5saW5lYXJpemVkPW51bGw7dGhpcy5vcGVuQWN0aW9uPW51bGw7dGhpcy5wZGZhPW51bGw7dGhpcy5wcm9kdWNlcj1udWxsO3RoaXMucmVuZGVyUG9saWN5PW51bGw7dGhpcy5zY3JpcHRNb2RlbD1udWxsO3RoaXMuc2lsZW50UHJpbnQ9bnVsbDt0aGlzLnN1Ym1pdEZvcm1hdD1udWxsO3RoaXMudGFnZ2VkPW51bGw7dGhpcy52ZXJzaW9uPW51bGw7dGhpcy52aWV3ZXJQcmVmZXJlbmNlcz1udWxsO3RoaXMueGRjPW51bGx9fWNsYXNzIFBkZmEgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWm4sInBkZmEiLCEwKTt0aGlzLmFtZD1udWxsO3RoaXMuY29uZm9ybWFuY2U9bnVsbDt0aGlzLmluY2x1ZGVYRFBDb250ZW50PW51bGw7dGhpcy5wYXJ0PW51bGx9fWNsYXNzIFBlcm1pc3Npb25zIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpuLCJwZXJtaXNzaW9ucyIsITApO3RoaXMuYWNjZXNzaWJsZUNvbnRlbnQ9bnVsbDt0aGlzLmNoYW5nZT1udWxsO3RoaXMuY29udGVudENvcHk9bnVsbDt0aGlzLmRvY3VtZW50QXNzZW1ibHk9bnVsbDt0aGlzLmZvcm1GaWVsZEZpbGxpbmc9bnVsbDt0aGlzLm1vZGlmeUFubm90cz1udWxsO3RoaXMucGxhaW50ZXh0TWV0YWRhdGE9bnVsbDt0aGlzLnByaW50PW51bGw7dGhpcy5wcmludEhpZ2hRdWFsaXR5PW51bGx9fWNsYXNzIFBpY2tUcmF5QnlQREZTaXplIGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIoWm4sInBpY2tUcmF5QnlQREZTaXplIil9fWNsYXNzIGNvbmZpZ19QaWN0dXJlIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpuLCJwaWN0dXJlIil9fWNsYXNzIFBsYWludGV4dE1ldGFkYXRhIGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIoWm4sInBsYWludGV4dE1ldGFkYXRhIil9fWNsYXNzIFByZXNlbmNlIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpuLCJwcmVzZW5jZSIsWyJwcmVzZXJ2ZSIsImRpc3NvbHZlIiwiZGlzc29sdmVTdHJ1Y3R1cmUiLCJpZ25vcmUiLCJyZW1vdmUiXSl9fWNsYXNzIFByZXNlbnQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWm4sInByZXNlbnQiLCEwKTt0aGlzLmJlaGF2aW9yT3ZlcnJpZGU9bnVsbDt0aGlzLmNhY2hlPW51bGw7dGhpcy5jb21tb249bnVsbDt0aGlzLmNvcGllcz1udWxsO3RoaXMuZGVzdGluYXRpb249bnVsbDt0aGlzLmluY3JlbWVudGFsTWVyZ2U9bnVsbDt0aGlzLmxheW91dD1udWxsO3RoaXMub3V0cHV0PW51bGw7dGhpcy5vdmVycHJpbnQ9bnVsbDt0aGlzLnBhZ2luYXRpb249bnVsbDt0aGlzLnBhZ2luYXRpb25PdmVycmlkZT1udWxsO3RoaXMuc2NyaXB0PW51bGw7dGhpcy52YWxpZGF0ZT1udWxsO3RoaXMueGRwPW51bGw7dGhpcy5kcml2ZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMubGFiZWxQcmludGVyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnBjbD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5wZGY9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucHM9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc3VibWl0VXJsPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLndlYkNsaWVudD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy56cGw9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBQcmludCBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpuLCJwcmludCIpfX1jbGFzcyBQcmludEhpZ2hRdWFsaXR5IGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIoWm4sInByaW50SGlnaFF1YWxpdHkiKX19Y2xhc3MgUHJpbnRTY2FsaW5nIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpuLCJwcmludFNjYWxpbmciLFsiYXBwZGVmYXVsdCIsIm5vU2NhbGluZyJdKX19Y2xhc3MgUHJpbnRlck5hbWUgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWm4sInByaW50ZXJOYW1lIil9fWNsYXNzIFByb2R1Y2VyIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpuLCJwcm9kdWNlciIpfX1jbGFzcyBQcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihabiwicHMiLCEwKTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLmJhdGNoT3V0cHV0PW51bGw7dGhpcy5mb250SW5mbz1udWxsO3RoaXMuam9nPW51bGw7dGhpcy5tZWRpdW1JbmZvPW51bGw7dGhpcy5vdXRwdXRCaW49bnVsbDt0aGlzLnN0YXBsZT1udWxsO3RoaXMueGRjPW51bGx9fWNsYXNzIFJhbmdlIGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihabiwicmFuZ2UiKX1bY3NdKCl7dGhpc1tuc109dGhpc1tuc10udHJpbSgpLnNwbGl0KC9ccyosXHMqLywyKS5tYXAoKGU9PmUuc3BsaXQoIi0iKS5tYXAoKGU9PnBhcnNlSW50KGUudHJpbSgpLDEwKSkpKSkuZmlsdGVyKChlPT5lLmV2ZXJ5KChlPT4haXNOYU4oZSkpKSkpLm1hcCgoZT0+ezE9PT1lLmxlbmd0aCYmZS5wdXNoKGVbMF0pO3JldHVybiBlfSkpfX1jbGFzcyBSZWNvcmQgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpuLCJyZWNvcmQiKX1bY3NdKCl7dGhpc1tuc109dGhpc1tuc10udHJpbSgpO2NvbnN0IGU9cGFyc2VJbnQodGhpc1tuc10sMTApOyFpc05hTihlKSYmZT49MCYmKHRoaXNbbnNdPWUpfX1jbGFzcyBSZWxldmFudCBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWm4sInJlbGV2YW50Iil9W2NzXSgpe3RoaXNbbnNdPXRoaXNbbnNdLnRyaW0oKS5zcGxpdCgvXHMrLyl9fWNsYXNzIFJlbmFtZSBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWm4sInJlbmFtZSIpfVtjc10oKXt0aGlzW25zXT10aGlzW25zXS50cmltKCk7KHRoaXNbbnNdLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aCgieG1sIil8fG5ldyBSZWdFeHAoIltcXHB7TH1fXVtcXHB7TH1cXGQuX1xccHtNfS1dKiIsInUiKS50ZXN0KHRoaXNbbnNdKSkmJndhcm4oIlhGQSAtIFJlbmFtZTogaW52YWxpZCBYRkEgbmFtZSIpfX1jbGFzcyBSZW5kZXJQb2xpY3kgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWm4sInJlbmRlclBvbGljeSIsWyJzZXJ2ZXIiLCJjbGllbnQiXSl9fWNsYXNzIFJ1blNjcmlwdHMgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWm4sInJ1blNjcmlwdHMiLFsiYm90aCIsImNsaWVudCIsIm5vbmUiLCJzZXJ2ZXIiXSl9fWNsYXNzIGNvbmZpZ19TY3JpcHQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWm4sInNjcmlwdCIsITApO3RoaXMuY3VycmVudFBhZ2U9bnVsbDt0aGlzLmV4Y2x1ZGU9bnVsbDt0aGlzLnJ1blNjcmlwdHM9bnVsbH19Y2xhc3MgU2NyaXB0TW9kZWwgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWm4sInNjcmlwdE1vZGVsIixbIlhGQSIsIm5vbmUiXSl9fWNsYXNzIFNldmVyaXR5IGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpuLCJzZXZlcml0eSIsWyJpZ25vcmUiLCJlcnJvciIsImluZm9ybWF0aW9uIiwidHJhY2UiLCJ3YXJuaW5nIl0pfX1jbGFzcyBTaWxlbnRQcmludCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihabiwic2lsZW50UHJpbnQiLCEwKTt0aGlzLmFkZFNpbGVudFByaW50PW51bGw7dGhpcy5wcmludGVyTmFtZT1udWxsfX1jbGFzcyBTdGFwbGUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWm4sInN0YXBsZSIpO3RoaXMubW9kZT1nZXRTdHJpbmdPcHRpb24oZS5tb2RlLFsidXNlUHJpbnRlclNldHRpbmciLCJvbiIsIm9mZiJdKX19Y2xhc3MgU3RhcnROb2RlIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpuLCJzdGFydE5vZGUiKX19Y2xhc3MgU3RhcnRQYWdlIGV4dGVuZHMgSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihabiwic3RhcnRQYWdlIiwwLChlPT4hMCkpfX1jbGFzcyBTdWJtaXRGb3JtYXQgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWm4sInN1Ym1pdEZvcm1hdCIsWyJodG1sIiwiZGVsZWdhdGUiLCJmZGYiLCJ4bWwiLCJwZGYiXSl9fWNsYXNzIFN1Ym1pdFVybCBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihabiwic3VibWl0VXJsIil9fWNsYXNzIFN1YnNldEJlbG93IGV4dGVuZHMgSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihabiwic3Vic2V0QmVsb3ciLDEwMCwoZT0+ZT49MCYmZTw9MTAwKSl9fWNsYXNzIFN1cHByZXNzQmFubmVyIGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIoWm4sInN1cHByZXNzQmFubmVyIil9fWNsYXNzIFRhZ2dlZCBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpuLCJ0YWdnZWQiKX19Y2xhc3MgY29uZmlnX1RlbXBsYXRlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpuLCJ0ZW1wbGF0ZSIsITApO3RoaXMuYmFzZT1udWxsO3RoaXMucmVsZXZhbnQ9bnVsbDt0aGlzLnN0YXJ0UGFnZT1udWxsO3RoaXMudXJpPW51bGw7dGhpcy54c2w9bnVsbH19Y2xhc3MgVGhyZXNob2xkIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpuLCJ0aHJlc2hvbGQiLFsidHJhY2UiLCJlcnJvciIsImluZm9ybWF0aW9uIiwid2FybmluZyJdKX19Y2xhc3MgVG8gZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWm4sInRvIixbIm51bGwiLCJtZW1vcnkiLCJzdGRlcnIiLCJzdGRvdXQiLCJzeXN0ZW0iLCJ1cmkiXSl9fWNsYXNzIFRlbXBsYXRlQ2FjaGUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWm4sInRlbXBsYXRlQ2FjaGUiKTt0aGlzLm1heEVudHJpZXM9Z2V0SW50ZWdlcih7ZGF0YTplLm1heEVudHJpZXMsZGVmYXVsdFZhbHVlOjUsdmFsaWRhdGU6ZT0+ZT49MH0pfX1jbGFzcyBUcmFjZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihabiwidHJhY2UiLCEwKTt0aGlzLmFyZWE9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBUcmFuc2Zvcm0gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWm4sInRyYW5zZm9ybSIsITApO3RoaXMuZ3JvdXBQYXJlbnQ9bnVsbDt0aGlzLmlmRW1wdHk9bnVsbDt0aGlzLm5hbWVBdHRyPW51bGw7dGhpcy5waWN0dXJlPW51bGw7dGhpcy5wcmVzZW5jZT1udWxsO3RoaXMucmVuYW1lPW51bGw7dGhpcy53aGl0ZXNwYWNlPW51bGx9fWNsYXNzIFR5cGUgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWm4sInR5cGUiLFsibm9uZSIsImFzY2lpODUiLCJhc2NpaUhleCIsImNjaXR0ZmF4IiwiZmxhdGUiLCJsenciLCJydW5MZW5ndGgiLCJuYXRpdmUiLCJ4ZHAiLCJtZXJnZWRYRFAiXSl9fWNsYXNzIFVyaSBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihabiwidXJpIil9fWNsYXNzIGNvbmZpZ19WYWxpZGF0ZSBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihabiwidmFsaWRhdGUiLFsicHJlU3VibWl0IiwicHJlUHJpbnQiLCJwcmVFeGVjdXRlIiwicHJlU2F2ZSJdKX19Y2xhc3MgVmFsaWRhdGVBcHByb3ZhbFNpZ25hdHVyZXMgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpuLCJ2YWxpZGF0ZUFwcHJvdmFsU2lnbmF0dXJlcyIpfVtjc10oKXt0aGlzW25zXT10aGlzW25zXS50cmltKCkuc3BsaXQoL1xzKy8pLmZpbHRlcigoZT0+WyJkb2NSZWFkeSIsInBvc3RTaWduIl0uaW5jbHVkZXMoZSkpKX19Y2xhc3MgVmFsaWRhdGlvbk1lc3NhZ2luZyBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihabiwidmFsaWRhdGlvbk1lc3NhZ2luZyIsWyJhbGxNZXNzYWdlc0luZGl2aWR1YWxseSIsImFsbE1lc3NhZ2VzVG9nZXRoZXIiLCJmaXJzdE1lc3NhZ2VPbmx5Iiwibm9NZXNzYWdlcyJdKX19Y2xhc3MgVmVyc2lvbiBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihabiwidmVyc2lvbiIsWyIxLjciLCIxLjYiLCIxLjUiLCIxLjQiLCIxLjMiLCIxLjIiXSl9fWNsYXNzIFZlcnNpb25Db250cm9sIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpuLCJWZXJzaW9uQ29udHJvbCIpO3RoaXMub3V0cHV0QmVsb3c9Z2V0U3RyaW5nT3B0aW9uKGUub3V0cHV0QmVsb3csWyJ3YXJuIiwiZXJyb3IiLCJ1cGRhdGUiXSk7dGhpcy5zb3VyY2VBYm92ZT1nZXRTdHJpbmdPcHRpb24oZS5zb3VyY2VBYm92ZSxbIndhcm4iLCJlcnJvciJdKTt0aGlzLnNvdXJjZUJlbG93PWdldFN0cmluZ09wdGlvbihlLnNvdXJjZUJlbG93LFsidXBkYXRlIiwibWFpbnRhaW4iXSl9fWNsYXNzIFZpZXdlclByZWZlcmVuY2VzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpuLCJ2aWV3ZXJQcmVmZXJlbmNlcyIsITApO3RoaXMuQURCRV9KU0NvbnNvbGU9bnVsbDt0aGlzLkFEQkVfSlNEZWJ1Z2dlcj1udWxsO3RoaXMuYWRkVmlld2VyUHJlZmVyZW5jZXM9bnVsbDt0aGlzLmR1cGxleE9wdGlvbj1udWxsO3RoaXMuZW5mb3JjZT1udWxsO3RoaXMubnVtYmVyT2ZDb3BpZXM9bnVsbDt0aGlzLnBhZ2VSYW5nZT1udWxsO3RoaXMucGlja1RyYXlCeVBERlNpemU9bnVsbDt0aGlzLnByaW50U2NhbGluZz1udWxsfX1jbGFzcyBXZWJDbGllbnQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWm4sIndlYkNsaWVudCIsITApO3RoaXMubmFtZT1lLm5hbWU/ZS5uYW1lLnRyaW0oKToiIjt0aGlzLmZvbnRJbmZvPW51bGw7dGhpcy54ZGM9bnVsbH19Y2xhc3MgV2hpdGVzcGFjZSBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihabiwid2hpdGVzcGFjZSIsWyJwcmVzZXJ2ZSIsImx0cmltIiwibm9ybWFsaXplIiwicnRyaW0iLCJ0cmltIl0pfX1jbGFzcyBXaW5kb3cgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpuLCJ3aW5kb3ciKX1bY3NdKCl7Y29uc3QgZT10aGlzW25zXS50cmltKCkuc3BsaXQoL1xzKixccyovLDIpLm1hcCgoZT0+cGFyc2VJbnQoZSwxMCkpKTtpZihlLnNvbWUoKGU9PmlzTmFOKGUpKSkpdGhpc1tuc109WzAsMF07ZWxzZXsxPT09ZS5sZW5ndGgmJmUucHVzaChlWzBdKTt0aGlzW25zXT1lfX19Y2xhc3MgWGRjIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpuLCJ4ZGMiLCEwKTt0aGlzLnVyaT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy54c2w9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBYZHAgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWm4sInhkcCIsITApO3RoaXMucGFja2V0cz1udWxsfX1jbGFzcyBYc2wgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWm4sInhzbCIsITApO3RoaXMuZGVidWc9bnVsbDt0aGlzLnVyaT1udWxsfX1jbGFzcyBacGwgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWm4sInpwbCIsITApO3RoaXMubmFtZT1lLm5hbWU/ZS5uYW1lLnRyaW0oKToiIjt0aGlzLmJhdGNoT3V0cHV0PW51bGw7dGhpcy5mbGlwTGFiZWw9bnVsbDt0aGlzLmZvbnRJbmZvPW51bGw7dGhpcy54ZGM9bnVsbH19Y2xhc3MgQ29uZmlnTmFtZXNwYWNle3N0YXRpY1tsbl0oZSx0KXtpZihDb25maWdOYW1lc3BhY2UuaGFzT3duUHJvcGVydHkoZSkpcmV0dXJuIENvbmZpZ05hbWVzcGFjZVtlXSh0KX1zdGF0aWMgYWNyb2JhdChlKXtyZXR1cm4gbmV3IEFjcm9iYXQoZSl9c3RhdGljIGFjcm9iYXQ3KGUpe3JldHVybiBuZXcgQWNyb2JhdDcoZSl9c3RhdGljIEFEQkVfSlNDb25zb2xlKGUpe3JldHVybiBuZXcgQURCRV9KU0NvbnNvbGUoZSl9c3RhdGljIEFEQkVfSlNEZWJ1Z2dlcihlKXtyZXR1cm4gbmV3IEFEQkVfSlNEZWJ1Z2dlcihlKX1zdGF0aWMgYWRkU2lsZW50UHJpbnQoZSl7cmV0dXJuIG5ldyBBZGRTaWxlbnRQcmludChlKX1zdGF0aWMgYWRkVmlld2VyUHJlZmVyZW5jZXMoZSl7cmV0dXJuIG5ldyBBZGRWaWV3ZXJQcmVmZXJlbmNlcyhlKX1zdGF0aWMgYWRqdXN0RGF0YShlKXtyZXR1cm4gbmV3IEFkanVzdERhdGEoZSl9c3RhdGljIGFkb2JlRXh0ZW5zaW9uTGV2ZWwoZSl7cmV0dXJuIG5ldyBBZG9iZUV4dGVuc2lvbkxldmVsKGUpfXN0YXRpYyBhZ2VudChlKXtyZXR1cm4gbmV3IEFnZW50KGUpfXN0YXRpYyBhbHdheXNFbWJlZChlKXtyZXR1cm4gbmV3IEFsd2F5c0VtYmVkKGUpfXN0YXRpYyBhbWQoZSl7cmV0dXJuIG5ldyBBbWQoZSl9c3RhdGljIGFyZWEoZSl7cmV0dXJuIG5ldyBjb25maWdfQXJlYShlKX1zdGF0aWMgYXR0cmlidXRlcyhlKXtyZXR1cm4gbmV3IEF0dHJpYnV0ZXMoZSl9c3RhdGljIGF1dG9TYXZlKGUpe3JldHVybiBuZXcgQXV0b1NhdmUoZSl9c3RhdGljIGJhc2UoZSl7cmV0dXJuIG5ldyBCYXNlKGUpfXN0YXRpYyBiYXRjaE91dHB1dChlKXtyZXR1cm4gbmV3IEJhdGNoT3V0cHV0KGUpfXN0YXRpYyBiZWhhdmlvck92ZXJyaWRlKGUpe3JldHVybiBuZXcgQmVoYXZpb3JPdmVycmlkZShlKX1zdGF0aWMgY2FjaGUoZSl7cmV0dXJuIG5ldyBDYWNoZShlKX1zdGF0aWMgY2hhbmdlKGUpe3JldHVybiBuZXcgQ2hhbmdlKGUpfXN0YXRpYyBjb21tb24oZSl7cmV0dXJuIG5ldyBDb21tb24oZSl9c3RhdGljIGNvbXByZXNzKGUpe3JldHVybiBuZXcgQ29tcHJlc3MoZSl9c3RhdGljIGNvbXByZXNzTG9naWNhbFN0cnVjdHVyZShlKXtyZXR1cm4gbmV3IENvbXByZXNzTG9naWNhbFN0cnVjdHVyZShlKX1zdGF0aWMgY29tcHJlc3NPYmplY3RTdHJlYW0oZSl7cmV0dXJuIG5ldyBDb21wcmVzc09iamVjdFN0cmVhbShlKX1zdGF0aWMgY29tcHJlc3Npb24oZSl7cmV0dXJuIG5ldyBDb21wcmVzc2lvbihlKX1zdGF0aWMgY29uZmlnKGUpe3JldHVybiBuZXcgQ29uZmlnKGUpfXN0YXRpYyBjb25mb3JtYW5jZShlKXtyZXR1cm4gbmV3IENvbmZvcm1hbmNlKGUpfXN0YXRpYyBjb250ZW50Q29weShlKXtyZXR1cm4gbmV3IENvbnRlbnRDb3B5KGUpfXN0YXRpYyBjb3BpZXMoZSl7cmV0dXJuIG5ldyBDb3BpZXMoZSl9c3RhdGljIGNyZWF0b3IoZSl7cmV0dXJuIG5ldyBDcmVhdG9yKGUpfXN0YXRpYyBjdXJyZW50UGFnZShlKXtyZXR1cm4gbmV3IEN1cnJlbnRQYWdlKGUpfXN0YXRpYyBkYXRhKGUpe3JldHVybiBuZXcgRGF0YShlKX1zdGF0aWMgZGVidWcoZSl7cmV0dXJuIG5ldyBEZWJ1ZyhlKX1zdGF0aWMgZGVmYXVsdFR5cGVmYWNlKGUpe3JldHVybiBuZXcgRGVmYXVsdFR5cGVmYWNlKGUpfXN0YXRpYyBkZXN0aW5hdGlvbihlKXtyZXR1cm4gbmV3IERlc3RpbmF0aW9uKGUpfXN0YXRpYyBkb2N1bWVudEFzc2VtYmx5KGUpe3JldHVybiBuZXcgRG9jdW1lbnRBc3NlbWJseShlKX1zdGF0aWMgZHJpdmVyKGUpe3JldHVybiBuZXcgRHJpdmVyKGUpfXN0YXRpYyBkdXBsZXhPcHRpb24oZSl7cmV0dXJuIG5ldyBEdXBsZXhPcHRpb24oZSl9c3RhdGljIGR5bmFtaWNSZW5kZXIoZSl7cmV0dXJuIG5ldyBEeW5hbWljUmVuZGVyKGUpfXN0YXRpYyBlbWJlZChlKXtyZXR1cm4gbmV3IEVtYmVkKGUpfXN0YXRpYyBlbmNyeXB0KGUpe3JldHVybiBuZXcgY29uZmlnX0VuY3J5cHQoZSl9c3RhdGljIGVuY3J5cHRpb24oZSl7cmV0dXJuIG5ldyBjb25maWdfRW5jcnlwdGlvbihlKX1zdGF0aWMgZW5jcnlwdGlvbkxldmVsKGUpe3JldHVybiBuZXcgRW5jcnlwdGlvbkxldmVsKGUpfXN0YXRpYyBlbmZvcmNlKGUpe3JldHVybiBuZXcgRW5mb3JjZShlKX1zdGF0aWMgZXF1YXRlKGUpe3JldHVybiBuZXcgRXF1YXRlKGUpfXN0YXRpYyBlcXVhdGVSYW5nZShlKXtyZXR1cm4gbmV3IEVxdWF0ZVJhbmdlKGUpfXN0YXRpYyBleGNsdWRlKGUpe3JldHVybiBuZXcgRXhjbHVkZShlKX1zdGF0aWMgZXhjbHVkZU5TKGUpe3JldHVybiBuZXcgRXhjbHVkZU5TKGUpfXN0YXRpYyBmbGlwTGFiZWwoZSl7cmV0dXJuIG5ldyBGbGlwTGFiZWwoZSl9c3RhdGljIGZvbnRJbmZvKGUpe3JldHVybiBuZXcgY29uZmlnX0ZvbnRJbmZvKGUpfXN0YXRpYyBmb3JtRmllbGRGaWxsaW5nKGUpe3JldHVybiBuZXcgRm9ybUZpZWxkRmlsbGluZyhlKX1zdGF0aWMgZ3JvdXBQYXJlbnQoZSl7cmV0dXJuIG5ldyBHcm91cFBhcmVudChlKX1zdGF0aWMgaWZFbXB0eShlKXtyZXR1cm4gbmV3IElmRW1wdHkoZSl9c3RhdGljIGluY2x1ZGVYRFBDb250ZW50KGUpe3JldHVybiBuZXcgSW5jbHVkZVhEUENvbnRlbnQoZSl9c3RhdGljIGluY3JlbWVudGFsTG9hZChlKXtyZXR1cm4gbmV3IEluY3JlbWVudGFsTG9hZChlKX1zdGF0aWMgaW5jcmVtZW50YWxNZXJnZShlKXtyZXR1cm4gbmV3IEluY3JlbWVudGFsTWVyZ2UoZSl9c3RhdGljIGludGVyYWN0aXZlKGUpe3JldHVybiBuZXcgSW50ZXJhY3RpdmUoZSl9c3RhdGljIGpvZyhlKXtyZXR1cm4gbmV3IEpvZyhlKX1zdGF0aWMgbGFiZWxQcmludGVyKGUpe3JldHVybiBuZXcgTGFiZWxQcmludGVyKGUpfXN0YXRpYyBsYXlvdXQoZSl7cmV0dXJuIG5ldyBMYXlvdXQoZSl9c3RhdGljIGxldmVsKGUpe3JldHVybiBuZXcgTGV2ZWwoZSl9c3RhdGljIGxpbmVhcml6ZWQoZSl7cmV0dXJuIG5ldyBMaW5lYXJpemVkKGUpfXN0YXRpYyBsb2NhbGUoZSl7cmV0dXJuIG5ldyBMb2NhbGUoZSl9c3RhdGljIGxvY2FsZVNldChlKXtyZXR1cm4gbmV3IExvY2FsZVNldChlKX1zdGF0aWMgbG9nKGUpe3JldHVybiBuZXcgTG9nKGUpfXN0YXRpYyBtYXAoZSl7cmV0dXJuIG5ldyBNYXBFbGVtZW50KGUpfXN0YXRpYyBtZWRpdW1JbmZvKGUpe3JldHVybiBuZXcgTWVkaXVtSW5mbyhlKX1zdGF0aWMgbWVzc2FnZShlKXtyZXR1cm4gbmV3IGNvbmZpZ19NZXNzYWdlKGUpfXN0YXRpYyBtZXNzYWdpbmcoZSl7cmV0dXJuIG5ldyBNZXNzYWdpbmcoZSl9c3RhdGljIG1vZGUoZSl7cmV0dXJuIG5ldyBNb2RlKGUpfXN0YXRpYyBtb2RpZnlBbm5vdHMoZSl7cmV0dXJuIG5ldyBNb2RpZnlBbm5vdHMoZSl9c3RhdGljIG1zZ0lkKGUpe3JldHVybiBuZXcgTXNnSWQoZSl9c3RhdGljIG5hbWVBdHRyKGUpe3JldHVybiBuZXcgTmFtZUF0dHIoZSl9c3RhdGljIG5ldmVyRW1iZWQoZSl7cmV0dXJuIG5ldyBOZXZlckVtYmVkKGUpfXN0YXRpYyBudW1iZXJPZkNvcGllcyhlKXtyZXR1cm4gbmV3IE51bWJlck9mQ29waWVzKGUpfXN0YXRpYyBvcGVuQWN0aW9uKGUpe3JldHVybiBuZXcgT3BlbkFjdGlvbihlKX1zdGF0aWMgb3V0cHV0KGUpe3JldHVybiBuZXcgT3V0cHV0KGUpfXN0YXRpYyBvdXRwdXRCaW4oZSl7cmV0dXJuIG5ldyBPdXRwdXRCaW4oZSl9c3RhdGljIG91dHB1dFhTTChlKXtyZXR1cm4gbmV3IE91dHB1dFhTTChlKX1zdGF0aWMgb3ZlcnByaW50KGUpe3JldHVybiBuZXcgT3ZlcnByaW50KGUpfXN0YXRpYyBwYWNrZXRzKGUpe3JldHVybiBuZXcgUGFja2V0cyhlKX1zdGF0aWMgcGFnZU9mZnNldChlKXtyZXR1cm4gbmV3IFBhZ2VPZmZzZXQoZSl9c3RhdGljIHBhZ2VSYW5nZShlKXtyZXR1cm4gbmV3IFBhZ2VSYW5nZShlKX1zdGF0aWMgcGFnaW5hdGlvbihlKXtyZXR1cm4gbmV3IFBhZ2luYXRpb24oZSl9c3RhdGljIHBhZ2luYXRpb25PdmVycmlkZShlKXtyZXR1cm4gbmV3IFBhZ2luYXRpb25PdmVycmlkZShlKX1zdGF0aWMgcGFydChlKXtyZXR1cm4gbmV3IFBhcnQoZSl9c3RhdGljIHBjbChlKXtyZXR1cm4gbmV3IFBjbChlKX1zdGF0aWMgcGRmKGUpe3JldHVybiBuZXcgUGRmKGUpfXN0YXRpYyBwZGZhKGUpe3JldHVybiBuZXcgUGRmYShlKX1zdGF0aWMgcGVybWlzc2lvbnMoZSl7cmV0dXJuIG5ldyBQZXJtaXNzaW9ucyhlKX1zdGF0aWMgcGlja1RyYXlCeVBERlNpemUoZSl7cmV0dXJuIG5ldyBQaWNrVHJheUJ5UERGU2l6ZShlKX1zdGF0aWMgcGljdHVyZShlKXtyZXR1cm4gbmV3IGNvbmZpZ19QaWN0dXJlKGUpfXN0YXRpYyBwbGFpbnRleHRNZXRhZGF0YShlKXtyZXR1cm4gbmV3IFBsYWludGV4dE1ldGFkYXRhKGUpfXN0YXRpYyBwcmVzZW5jZShlKXtyZXR1cm4gbmV3IFByZXNlbmNlKGUpfXN0YXRpYyBwcmVzZW50KGUpe3JldHVybiBuZXcgUHJlc2VudChlKX1zdGF0aWMgcHJpbnQoZSl7cmV0dXJuIG5ldyBQcmludChlKX1zdGF0aWMgcHJpbnRIaWdoUXVhbGl0eShlKXtyZXR1cm4gbmV3IFByaW50SGlnaFF1YWxpdHkoZSl9c3RhdGljIHByaW50U2NhbGluZyhlKXtyZXR1cm4gbmV3IFByaW50U2NhbGluZyhlKX1zdGF0aWMgcHJpbnRlck5hbWUoZSl7cmV0dXJuIG5ldyBQcmludGVyTmFtZShlKX1zdGF0aWMgcHJvZHVjZXIoZSl7cmV0dXJuIG5ldyBQcm9kdWNlcihlKX1zdGF0aWMgcHMoZSl7cmV0dXJuIG5ldyBQcyhlKX1zdGF0aWMgcmFuZ2UoZSl7cmV0dXJuIG5ldyBSYW5nZShlKX1zdGF0aWMgcmVjb3JkKGUpe3JldHVybiBuZXcgUmVjb3JkKGUpfXN0YXRpYyByZWxldmFudChlKXtyZXR1cm4gbmV3IFJlbGV2YW50KGUpfXN0YXRpYyByZW5hbWUoZSl7cmV0dXJuIG5ldyBSZW5hbWUoZSl9c3RhdGljIHJlbmRlclBvbGljeShlKXtyZXR1cm4gbmV3IFJlbmRlclBvbGljeShlKX1zdGF0aWMgcnVuU2NyaXB0cyhlKXtyZXR1cm4gbmV3IFJ1blNjcmlwdHMoZSl9c3RhdGljIHNjcmlwdChlKXtyZXR1cm4gbmV3IGNvbmZpZ19TY3JpcHQoZSl9c3RhdGljIHNjcmlwdE1vZGVsKGUpe3JldHVybiBuZXcgU2NyaXB0TW9kZWwoZSl9c3RhdGljIHNldmVyaXR5KGUpe3JldHVybiBuZXcgU2V2ZXJpdHkoZSl9c3RhdGljIHNpbGVudFByaW50KGUpe3JldHVybiBuZXcgU2lsZW50UHJpbnQoZSl9c3RhdGljIHN0YXBsZShlKXtyZXR1cm4gbmV3IFN0YXBsZShlKX1zdGF0aWMgc3RhcnROb2RlKGUpe3JldHVybiBuZXcgU3RhcnROb2RlKGUpfXN0YXRpYyBzdGFydFBhZ2UoZSl7cmV0dXJuIG5ldyBTdGFydFBhZ2UoZSl9c3RhdGljIHN1Ym1pdEZvcm1hdChlKXtyZXR1cm4gbmV3IFN1Ym1pdEZvcm1hdChlKX1zdGF0aWMgc3VibWl0VXJsKGUpe3JldHVybiBuZXcgU3VibWl0VXJsKGUpfXN0YXRpYyBzdWJzZXRCZWxvdyhlKXtyZXR1cm4gbmV3IFN1YnNldEJlbG93KGUpfXN0YXRpYyBzdXBwcmVzc0Jhbm5lcihlKXtyZXR1cm4gbmV3IFN1cHByZXNzQmFubmVyKGUpfXN0YXRpYyB0YWdnZWQoZSl7cmV0dXJuIG5ldyBUYWdnZWQoZSl9c3RhdGljIHRlbXBsYXRlKGUpe3JldHVybiBuZXcgY29uZmlnX1RlbXBsYXRlKGUpfXN0YXRpYyB0ZW1wbGF0ZUNhY2hlKGUpe3JldHVybiBuZXcgVGVtcGxhdGVDYWNoZShlKX1zdGF0aWMgdGhyZXNob2xkKGUpe3JldHVybiBuZXcgVGhyZXNob2xkKGUpfXN0YXRpYyB0byhlKXtyZXR1cm4gbmV3IFRvKGUpfXN0YXRpYyB0cmFjZShlKXtyZXR1cm4gbmV3IFRyYWNlKGUpfXN0YXRpYyB0cmFuc2Zvcm0oZSl7cmV0dXJuIG5ldyBUcmFuc2Zvcm0oZSl9c3RhdGljIHR5cGUoZSl7cmV0dXJuIG5ldyBUeXBlKGUpfXN0YXRpYyB1cmkoZSl7cmV0dXJuIG5ldyBVcmkoZSl9c3RhdGljIHZhbGlkYXRlKGUpe3JldHVybiBuZXcgY29uZmlnX1ZhbGlkYXRlKGUpfXN0YXRpYyB2YWxpZGF0ZUFwcHJvdmFsU2lnbmF0dXJlcyhlKXtyZXR1cm4gbmV3IFZhbGlkYXRlQXBwcm92YWxTaWduYXR1cmVzKGUpfXN0YXRpYyB2YWxpZGF0aW9uTWVzc2FnaW5nKGUpe3JldHVybiBuZXcgVmFsaWRhdGlvbk1lc3NhZ2luZyhlKX1zdGF0aWMgdmVyc2lvbihlKXtyZXR1cm4gbmV3IFZlcnNpb24oZSl9c3RhdGljIHZlcnNpb25Db250cm9sKGUpe3JldHVybiBuZXcgVmVyc2lvbkNvbnRyb2woZSl9c3RhdGljIHZpZXdlclByZWZlcmVuY2VzKGUpe3JldHVybiBuZXcgVmlld2VyUHJlZmVyZW5jZXMoZSl9c3RhdGljIHdlYkNsaWVudChlKXtyZXR1cm4gbmV3IFdlYkNsaWVudChlKX1zdGF0aWMgd2hpdGVzcGFjZShlKXtyZXR1cm4gbmV3IFdoaXRlc3BhY2UoZSl9c3RhdGljIHdpbmRvdyhlKXtyZXR1cm4gbmV3IFdpbmRvdyhlKX1zdGF0aWMgeGRjKGUpe3JldHVybiBuZXcgWGRjKGUpfXN0YXRpYyB4ZHAoZSl7cmV0dXJuIG5ldyBYZHAoZSl9c3RhdGljIHhzbChlKXtyZXR1cm4gbmV3IFhzbChlKX1zdGF0aWMgenBsKGUpe3JldHVybiBuZXcgWnBsKGUpfX1jb25zdCBWbj1Cbi5jb25uZWN0aW9uU2V0LmlkO2NsYXNzIENvbm5lY3Rpb25TZXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoVm4sImNvbm5lY3Rpb25TZXQiLCEwKTt0aGlzLndzZGxDb25uZWN0aW9uPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnhtbENvbm5lY3Rpb249bmV3IFhGQU9iamVjdEFycmF5O3RoaXMueHNkQ29ubmVjdGlvbj1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEVmZmVjdGl2ZUlucHV0UG9saWN5IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFZuLCJlZmZlY3RpdmVJbnB1dFBvbGljeSIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBFZmZlY3RpdmVPdXRwdXRQb2xpY3kgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoVm4sImVmZmVjdGl2ZU91dHB1dFBvbGljeSIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBPcGVyYXRpb24gZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoVm4sIm9wZXJhdGlvbiIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5pbnB1dD1lLmlucHV0fHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLm91dHB1dD1lLm91dHB1dHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBSb290RWxlbWVudCBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihWbiwicm9vdEVsZW1lbnQiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgU29hcEFjdGlvbiBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihWbiwic29hcEFjdGlvbiIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBTb2FwQWRkcmVzcyBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihWbiwic29hcEFkZHJlc3MiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgY29ubmVjdGlvbl9zZXRfVXJpIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFZuLCJ1cmkiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgV3NkbEFkZHJlc3MgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoVm4sIndzZGxBZGRyZXNzIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFdzZGxDb25uZWN0aW9uIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFZuLCJ3c2RsQ29ubmVjdGlvbiIsITApO3RoaXMuZGF0YURlc2NyaXB0aW9uPWUuZGF0YURlc2NyaXB0aW9ufHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLmVmZmVjdGl2ZUlucHV0UG9saWN5PW51bGw7dGhpcy5lZmZlY3RpdmVPdXRwdXRQb2xpY3k9bnVsbDt0aGlzLm9wZXJhdGlvbj1udWxsO3RoaXMuc29hcEFjdGlvbj1udWxsO3RoaXMuc29hcEFkZHJlc3M9bnVsbDt0aGlzLndzZGxBZGRyZXNzPW51bGx9fWNsYXNzIFhtbENvbm5lY3Rpb24gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoVm4sInhtbENvbm5lY3Rpb24iLCEwKTt0aGlzLmRhdGFEZXNjcmlwdGlvbj1lLmRhdGFEZXNjcmlwdGlvbnx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51cmk9bnVsbH19Y2xhc3MgWHNkQ29ubmVjdGlvbiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihWbiwieHNkQ29ubmVjdGlvbiIsITApO3RoaXMuZGF0YURlc2NyaXB0aW9uPWUuZGF0YURlc2NyaXB0aW9ufHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnJvb3RFbGVtZW50PW51bGw7dGhpcy51cmk9bnVsbH19Y2xhc3MgQ29ubmVjdGlvblNldE5hbWVzcGFjZXtzdGF0aWNbbG5dKGUsdCl7aWYoQ29ubmVjdGlvblNldE5hbWVzcGFjZS5oYXNPd25Qcm9wZXJ0eShlKSlyZXR1cm4gQ29ubmVjdGlvblNldE5hbWVzcGFjZVtlXSh0KX1zdGF0aWMgY29ubmVjdGlvblNldChlKXtyZXR1cm4gbmV3IENvbm5lY3Rpb25TZXQoZSl9c3RhdGljIGVmZmVjdGl2ZUlucHV0UG9saWN5KGUpe3JldHVybiBuZXcgRWZmZWN0aXZlSW5wdXRQb2xpY3koZSl9c3RhdGljIGVmZmVjdGl2ZU91dHB1dFBvbGljeShlKXtyZXR1cm4gbmV3IEVmZmVjdGl2ZU91dHB1dFBvbGljeShlKX1zdGF0aWMgb3BlcmF0aW9uKGUpe3JldHVybiBuZXcgT3BlcmF0aW9uKGUpfXN0YXRpYyByb290RWxlbWVudChlKXtyZXR1cm4gbmV3IFJvb3RFbGVtZW50KGUpfXN0YXRpYyBzb2FwQWN0aW9uKGUpe3JldHVybiBuZXcgU29hcEFjdGlvbihlKX1zdGF0aWMgc29hcEFkZHJlc3MoZSl7cmV0dXJuIG5ldyBTb2FwQWRkcmVzcyhlKX1zdGF0aWMgdXJpKGUpe3JldHVybiBuZXcgY29ubmVjdGlvbl9zZXRfVXJpKGUpfXN0YXRpYyB3c2RsQWRkcmVzcyhlKXtyZXR1cm4gbmV3IFdzZGxBZGRyZXNzKGUpfXN0YXRpYyB3c2RsQ29ubmVjdGlvbihlKXtyZXR1cm4gbmV3IFdzZGxDb25uZWN0aW9uKGUpfXN0YXRpYyB4bWxDb25uZWN0aW9uKGUpe3JldHVybiBuZXcgWG1sQ29ubmVjdGlvbihlKX1zdGF0aWMgeHNkQ29ubmVjdGlvbihlKXtyZXR1cm4gbmV3IFhzZENvbm5lY3Rpb24oZSl9fWNvbnN0IF9uPUJuLmRhdGFzZXRzLmlkO2NsYXNzIGRhdGFzZXRzX0RhdGEgZXh0ZW5kcyBYbWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoX24sImRhdGEiLGUpfVtIc10oKXtyZXR1cm4hMH19Y2xhc3MgRGF0YXNldHMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoX24sImRhdGFzZXRzIiwhMCk7dGhpcy5kYXRhPW51bGw7dGhpcy5TaWduYXR1cmU9bnVsbH1banNdKGUpe2NvbnN0IHQ9ZVtPc107KCJkYXRhIj09PXQmJmVbcXNdPT09X258fCJTaWduYXR1cmUiPT09dCYmZVtxc109PT1Cbi5zaWduYXR1cmUuaWQpJiYodGhpc1t0XT1lKTt0aGlzW0FzXShlKX19Y2xhc3MgRGF0YXNldHNOYW1lc3BhY2V7c3RhdGljW2xuXShlLHQpe2lmKERhdGFzZXRzTmFtZXNwYWNlLmhhc093blByb3BlcnR5KGUpKXJldHVybiBEYXRhc2V0c05hbWVzcGFjZVtlXSh0KX1zdGF0aWMgZGF0YXNldHMoZSl7cmV0dXJuIG5ldyBEYXRhc2V0cyhlKX1zdGF0aWMgZGF0YShlKXtyZXR1cm4gbmV3IGRhdGFzZXRzX0RhdGEoZSl9fWNvbnN0IHpuPUJuLmxvY2FsZVNldC5pZDtjbGFzcyBDYWxlbmRhclN5bWJvbHMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoem4sImNhbGVuZGFyU3ltYm9scyIsITApO3RoaXMubmFtZT0iZ3JlZ29yaWFuIjt0aGlzLmRheU5hbWVzPW5ldyBYRkFPYmplY3RBcnJheSgyKTt0aGlzLmVyYU5hbWVzPW51bGw7dGhpcy5tZXJpZGllbU5hbWVzPW51bGw7dGhpcy5tb250aE5hbWVzPW5ldyBYRkFPYmplY3RBcnJheSgyKX19Y2xhc3MgQ3VycmVuY3lTeW1ib2wgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoem4sImN1cnJlbmN5U3ltYm9sIik7dGhpcy5uYW1lPWdldFN0cmluZ09wdGlvbihlLm5hbWUsWyJzeW1ib2wiLCJpc29uYW1lIiwiZGVjaW1hbCJdKX19Y2xhc3MgQ3VycmVuY3lTeW1ib2xzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHpuLCJjdXJyZW5jeVN5bWJvbHMiLCEwKTt0aGlzLmN1cnJlbmN5U3ltYm9sPW5ldyBYRkFPYmplY3RBcnJheSgzKX19Y2xhc3MgRGF0ZVBhdHRlcm4gZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoem4sImRhdGVQYXR0ZXJuIik7dGhpcy5uYW1lPWdldFN0cmluZ09wdGlvbihlLm5hbWUsWyJmdWxsIiwibG9uZyIsIm1lZCIsInNob3J0Il0pfX1jbGFzcyBEYXRlUGF0dGVybnMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoem4sImRhdGVQYXR0ZXJucyIsITApO3RoaXMuZGF0ZVBhdHRlcm49bmV3IFhGQU9iamVjdEFycmF5KDQpfX1jbGFzcyBEYXRlVGltZVN5bWJvbHMgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHpuLCJkYXRlVGltZVN5bWJvbHMiKX19Y2xhc3MgRGF5IGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHpuLCJkYXkiKX19Y2xhc3MgRGF5TmFtZXMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoem4sImRheU5hbWVzIiwhMCk7dGhpcy5hYmJyPWdldEludGVnZXIoe2RhdGE6ZS5hYmJyLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5kYXk9bmV3IFhGQU9iamVjdEFycmF5KDcpfX1jbGFzcyBFcmEgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoem4sImVyYSIpfX1jbGFzcyBFcmFOYW1lcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih6biwiZXJhTmFtZXMiLCEwKTt0aGlzLmVyYT1uZXcgWEZBT2JqZWN0QXJyYXkoMil9fWNsYXNzIGxvY2FsZV9zZXRfTG9jYWxlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHpuLCJsb2NhbGUiLCEwKTt0aGlzLmRlc2M9ZS5kZXNjfHwiIjt0aGlzLm5hbWU9Imlzb25hbWUiO3RoaXMuY2FsZW5kYXJTeW1ib2xzPW51bGw7dGhpcy5jdXJyZW5jeVN5bWJvbHM9bnVsbDt0aGlzLmRhdGVQYXR0ZXJucz1udWxsO3RoaXMuZGF0ZVRpbWVTeW1ib2xzPW51bGw7dGhpcy5udW1iZXJQYXR0ZXJucz1udWxsO3RoaXMubnVtYmVyU3ltYm9scz1udWxsO3RoaXMudGltZVBhdHRlcm5zPW51bGw7dGhpcy50eXBlRmFjZXM9bnVsbH19Y2xhc3MgbG9jYWxlX3NldF9Mb2NhbGVTZXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoem4sImxvY2FsZVNldCIsITApO3RoaXMubG9jYWxlPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgTWVyaWRpZW0gZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoem4sIm1lcmlkaWVtIil9fWNsYXNzIE1lcmlkaWVtTmFtZXMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoem4sIm1lcmlkaWVtTmFtZXMiLCEwKTt0aGlzLm1lcmlkaWVtPW5ldyBYRkFPYmplY3RBcnJheSgyKX19Y2xhc3MgTW9udGggZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoem4sIm1vbnRoIil9fWNsYXNzIE1vbnRoTmFtZXMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoem4sIm1vbnRoTmFtZXMiLCEwKTt0aGlzLmFiYnI9Z2V0SW50ZWdlcih7ZGF0YTplLmFiYnIsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLm1vbnRoPW5ldyBYRkFPYmplY3RBcnJheSgxMil9fWNsYXNzIE51bWJlclBhdHRlcm4gZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoem4sIm51bWJlclBhdHRlcm4iKTt0aGlzLm5hbWU9Z2V0U3RyaW5nT3B0aW9uKGUubmFtZSxbImZ1bGwiLCJsb25nIiwibWVkIiwic2hvcnQiXSl9fWNsYXNzIE51bWJlclBhdHRlcm5zIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHpuLCJudW1iZXJQYXR0ZXJucyIsITApO3RoaXMubnVtYmVyUGF0dGVybj1uZXcgWEZBT2JqZWN0QXJyYXkoNCl9fWNsYXNzIE51bWJlclN5bWJvbCBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih6biwibnVtYmVyU3ltYm9sIik7dGhpcy5uYW1lPWdldFN0cmluZ09wdGlvbihlLm5hbWUsWyJkZWNpbWFsIiwiZ3JvdXBpbmciLCJwZXJjZW50IiwibWludXMiLCJ6ZXJvIl0pfX1jbGFzcyBOdW1iZXJTeW1ib2xzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHpuLCJudW1iZXJTeW1ib2xzIiwhMCk7dGhpcy5udW1iZXJTeW1ib2w9bmV3IFhGQU9iamVjdEFycmF5KDUpfX1jbGFzcyBUaW1lUGF0dGVybiBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih6biwidGltZVBhdHRlcm4iKTt0aGlzLm5hbWU9Z2V0U3RyaW5nT3B0aW9uKGUubmFtZSxbImZ1bGwiLCJsb25nIiwibWVkIiwic2hvcnQiXSl9fWNsYXNzIFRpbWVQYXR0ZXJucyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih6biwidGltZVBhdHRlcm5zIiwhMCk7dGhpcy50aW1lUGF0dGVybj1uZXcgWEZBT2JqZWN0QXJyYXkoNCl9fWNsYXNzIFR5cGVGYWNlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHpuLCJ0eXBlRmFjZSIsITApO3RoaXMubmFtZT0iInxlLm5hbWV9fWNsYXNzIFR5cGVGYWNlcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih6biwidHlwZUZhY2VzIiwhMCk7dGhpcy50eXBlRmFjZT1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIExvY2FsZVNldE5hbWVzcGFjZXtzdGF0aWNbbG5dKGUsdCl7aWYoTG9jYWxlU2V0TmFtZXNwYWNlLmhhc093blByb3BlcnR5KGUpKXJldHVybiBMb2NhbGVTZXROYW1lc3BhY2VbZV0odCl9c3RhdGljIGNhbGVuZGFyU3ltYm9scyhlKXtyZXR1cm4gbmV3IENhbGVuZGFyU3ltYm9scyhlKX1zdGF0aWMgY3VycmVuY3lTeW1ib2woZSl7cmV0dXJuIG5ldyBDdXJyZW5jeVN5bWJvbChlKX1zdGF0aWMgY3VycmVuY3lTeW1ib2xzKGUpe3JldHVybiBuZXcgQ3VycmVuY3lTeW1ib2xzKGUpfXN0YXRpYyBkYXRlUGF0dGVybihlKXtyZXR1cm4gbmV3IERhdGVQYXR0ZXJuKGUpfXN0YXRpYyBkYXRlUGF0dGVybnMoZSl7cmV0dXJuIG5ldyBEYXRlUGF0dGVybnMoZSl9c3RhdGljIGRhdGVUaW1lU3ltYm9scyhlKXtyZXR1cm4gbmV3IERhdGVUaW1lU3ltYm9scyhlKX1zdGF0aWMgZGF5KGUpe3JldHVybiBuZXcgRGF5KGUpfXN0YXRpYyBkYXlOYW1lcyhlKXtyZXR1cm4gbmV3IERheU5hbWVzKGUpfXN0YXRpYyBlcmEoZSl7cmV0dXJuIG5ldyBFcmEoZSl9c3RhdGljIGVyYU5hbWVzKGUpe3JldHVybiBuZXcgRXJhTmFtZXMoZSl9c3RhdGljIGxvY2FsZShlKXtyZXR1cm4gbmV3IGxvY2FsZV9zZXRfTG9jYWxlKGUpfXN0YXRpYyBsb2NhbGVTZXQoZSl7cmV0dXJuIG5ldyBsb2NhbGVfc2V0X0xvY2FsZVNldChlKX1zdGF0aWMgbWVyaWRpZW0oZSl7cmV0dXJuIG5ldyBNZXJpZGllbShlKX1zdGF0aWMgbWVyaWRpZW1OYW1lcyhlKXtyZXR1cm4gbmV3IE1lcmlkaWVtTmFtZXMoZSl9c3RhdGljIG1vbnRoKGUpe3JldHVybiBuZXcgTW9udGgoZSl9c3RhdGljIG1vbnRoTmFtZXMoZSl7cmV0dXJuIG5ldyBNb250aE5hbWVzKGUpfXN0YXRpYyBudW1iZXJQYXR0ZXJuKGUpe3JldHVybiBuZXcgTnVtYmVyUGF0dGVybihlKX1zdGF0aWMgbnVtYmVyUGF0dGVybnMoZSl7cmV0dXJuIG5ldyBOdW1iZXJQYXR0ZXJucyhlKX1zdGF0aWMgbnVtYmVyU3ltYm9sKGUpe3JldHVybiBuZXcgTnVtYmVyU3ltYm9sKGUpfXN0YXRpYyBudW1iZXJTeW1ib2xzKGUpe3JldHVybiBuZXcgTnVtYmVyU3ltYm9scyhlKX1zdGF0aWMgdGltZVBhdHRlcm4oZSl7cmV0dXJuIG5ldyBUaW1lUGF0dGVybihlKX1zdGF0aWMgdGltZVBhdHRlcm5zKGUpe3JldHVybiBuZXcgVGltZVBhdHRlcm5zKGUpfXN0YXRpYyB0eXBlRmFjZShlKXtyZXR1cm4gbmV3IFR5cGVGYWNlKGUpfXN0YXRpYyB0eXBlRmFjZXMoZSl7cmV0dXJuIG5ldyBUeXBlRmFjZXMoZSl9fWNvbnN0ICRuPUJuLnNpZ25hdHVyZS5pZDtjbGFzcyBzaWduYXR1cmVfU2lnbmF0dXJlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKCRuLCJzaWduYXR1cmUiLCEwKX19Y2xhc3MgU2lnbmF0dXJlTmFtZXNwYWNle3N0YXRpY1tsbl0oZSx0KXtpZihTaWduYXR1cmVOYW1lc3BhY2UuaGFzT3duUHJvcGVydHkoZSkpcmV0dXJuIFNpZ25hdHVyZU5hbWVzcGFjZVtlXSh0KX1zdGF0aWMgc2lnbmF0dXJlKGUpe3JldHVybiBuZXcgc2lnbmF0dXJlX1NpZ25hdHVyZShlKX19Y29uc3QgQW89Qm4uc3R5bGVzaGVldC5pZDtjbGFzcyBTdHlsZXNoZWV0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEFvLCJzdHlsZXNoZWV0IiwhMCl9fWNsYXNzIFN0eWxlc2hlZXROYW1lc3BhY2V7c3RhdGljW2xuXShlLHQpe2lmKFN0eWxlc2hlZXROYW1lc3BhY2UuaGFzT3duUHJvcGVydHkoZSkpcmV0dXJuIFN0eWxlc2hlZXROYW1lc3BhY2VbZV0odCl9c3RhdGljIHN0eWxlc2hlZXQoZSl7cmV0dXJuIG5ldyBTdHlsZXNoZWV0KGUpfX1jb25zdCBlbz1Cbi54ZHAuaWQ7Y2xhc3MgeGRwX1hkcCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlbywieGRwIiwhMCk7dGhpcy51dWlkPWUudXVpZHx8IiI7dGhpcy50aW1lU3RhbXA9ZS50aW1lU3RhbXB8fCIiO3RoaXMuY29uZmlnPW51bGw7dGhpcy5jb25uZWN0aW9uU2V0PW51bGw7dGhpcy5kYXRhc2V0cz1udWxsO3RoaXMubG9jYWxlU2V0PW51bGw7dGhpcy5zdHlsZXNoZWV0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRlbXBsYXRlPW51bGx9W1hzXShlKXtjb25zdCB0PUJuW2VbT3NdXTtyZXR1cm4gdCYmZVtxc109PT10LmlkfX1jbGFzcyBYZHBOYW1lc3BhY2V7c3RhdGljW2xuXShlLHQpe2lmKFhkcE5hbWVzcGFjZS5oYXNPd25Qcm9wZXJ0eShlKSlyZXR1cm4gWGRwTmFtZXNwYWNlW2VdKHQpfXN0YXRpYyB4ZHAoZSl7cmV0dXJuIG5ldyB4ZHBfWGRwKGUpfX1jb25zdCB0bz1Cbi54aHRtbC5pZCxpbz1TeW1ib2woKSxhbz1uZXcgU2V0KFsiY29sb3IiLCJmb250IiwiZm9udC1mYW1pbHkiLCJmb250LXNpemUiLCJmb250LXN0cmV0Y2giLCJmb250LXN0eWxlIiwiZm9udC13ZWlnaHQiLCJtYXJnaW4iLCJtYXJnaW4tYm90dG9tIiwibWFyZ2luLWxlZnQiLCJtYXJnaW4tcmlnaHQiLCJtYXJnaW4tdG9wIiwibGV0dGVyLXNwYWNpbmciLCJsaW5lLWhlaWdodCIsIm9ycGhhbnMiLCJwYWdlLWJyZWFrLWFmdGVyIiwicGFnZS1icmVhay1iZWZvcmUiLCJwYWdlLWJyZWFrLWluc2lkZSIsInRhYi1pbnRlcnZhbCIsInRhYi1zdG9wIiwidGV4dC1hbGlnbiIsInRleHQtZGVjb3JhdGlvbiIsInRleHQtaW5kZW50IiwidmVydGljYWwtYWxpZ24iLCJ3aWRvd3MiLCJrZXJuaW5nLW1vZGUiLCJ4ZmEtZm9udC1ob3Jpem9udGFsLXNjYWxlIiwieGZhLWZvbnQtdmVydGljYWwtc2NhbGUiLCJ4ZmEtc3BhY2VydW4iLCJ4ZmEtdGFiLXN0b3BzIl0pLHJvPW5ldyBNYXAoW1sicGFnZS1icmVhay1hZnRlciIsImJyZWFrQWZ0ZXIiXSxbInBhZ2UtYnJlYWstYmVmb3JlIiwiYnJlYWtCZWZvcmUiXSxbInBhZ2UtYnJlYWstaW5zaWRlIiwiYnJlYWtJbnNpZGUiXSxbImtlcm5pbmctbW9kZSIsZT0+Im5vbmUiPT09ZT8ibm9uZSI6Im5vcm1hbCJdLFsieGZhLWZvbnQtaG9yaXpvbnRhbC1zY2FsZSIsZT0+YHNjYWxlWCgke01hdGgubWF4KDAsTWF0aC5taW4ocGFyc2VJbnQoZSkvMTAwKSkudG9GaXhlZCgyKX0pYF0sWyJ4ZmEtZm9udC12ZXJ0aWNhbC1zY2FsZSIsZT0+YHNjYWxlWSgke01hdGgubWF4KDAsTWF0aC5taW4ocGFyc2VJbnQoZSkvMTAwKSkudG9GaXhlZCgyKX0pYF0sWyJ4ZmEtc3BhY2VydW4iLCIiXSxbInhmYS10YWItc3RvcHMiLCIiXSxbImZvbnQtc2l6ZSIsKGUsdCk9Pm1lYXN1cmVUb1N0cmluZyguOTkqKGU9dC5mb250U2l6ZT1nZXRNZWFzdXJlbWVudChlKSkpXSxbImxldHRlci1zcGFjaW5nIixlPT5tZWFzdXJlVG9TdHJpbmcoZ2V0TWVhc3VyZW1lbnQoZSkpXSxbImxpbmUtaGVpZ2h0IixlPT5tZWFzdXJlVG9TdHJpbmcoZ2V0TWVhc3VyZW1lbnQoZSkpXSxbIm1hcmdpbiIsZT0+bWVhc3VyZVRvU3RyaW5nKGdldE1lYXN1cmVtZW50KGUpKV0sWyJtYXJnaW4tYm90dG9tIixlPT5tZWFzdXJlVG9TdHJpbmcoZ2V0TWVhc3VyZW1lbnQoZSkpXSxbIm1hcmdpbi1sZWZ0IixlPT5tZWFzdXJlVG9TdHJpbmcoZ2V0TWVhc3VyZW1lbnQoZSkpXSxbIm1hcmdpbi1yaWdodCIsZT0+bWVhc3VyZVRvU3RyaW5nKGdldE1lYXN1cmVtZW50KGUpKV0sWyJtYXJnaW4tdG9wIixlPT5tZWFzdXJlVG9TdHJpbmcoZ2V0TWVhc3VyZW1lbnQoZSkpXSxbInRleHQtaW5kZW50IixlPT5tZWFzdXJlVG9TdHJpbmcoZ2V0TWVhc3VyZW1lbnQoZSkpXSxbImZvbnQtZmFtaWx5IixlPT5lXSxbInZlcnRpY2FsLWFsaWduIixlPT5tZWFzdXJlVG9TdHJpbmcoZ2V0TWVhc3VyZW1lbnQoZSkpXV0pLHNvPS9ccysvZyxubz0vW1xyXG5dKy9nLG9vPS9cclxuPy9nO2Z1bmN0aW9uIG1hcFN0eWxlKGUsdCxpKXtjb25zdCBhPU9iamVjdC5jcmVhdGUobnVsbCk7aWYoIWUpcmV0dXJuIGE7Y29uc3Qgcj1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdFt0LGldb2YgZS5zcGxpdCgiOyIpLm1hcCgoZT0+ZS5zcGxpdCgiOiIsMikpKSl7Y29uc3QgZT1yby5nZXQodCk7aWYoIiI9PT1lKWNvbnRpbnVlO2xldCBzPWk7ZSYmKHM9InN0cmluZyI9PXR5cGVvZiBlP2U6ZShpLHIpKTt0LmVuZHNXaXRoKCJzY2FsZSIpP2EudHJhbnNmb3JtPWEudHJhbnNmb3JtP2Ake2FbdF19ICR7c31gOnM6YVt0LnJlcGxhY2VBbGwoLy0oW2EtekEtWl0pL2csKChlLHQpPT50LnRvVXBwZXJDYXNlKCkpKV09c31hLmZvbnRGYW1pbHkmJnNldEZvbnRGYW1pbHkoe3R5cGVmYWNlOmEuZm9udEZhbWlseSx3ZWlnaHQ6YS5mb250V2VpZ2h0fHwibm9ybWFsIixwb3N0dXJlOmEuZm9udFN0eWxlfHwibm9ybWFsIixzaXplOnIuZm9udFNpemV8fDB9LHQsdFtTc10uZm9udEZpbmRlcixhKTtpZihpJiZhLnZlcnRpY2FsQWxpZ24mJiIwcHgiIT09YS52ZXJ0aWNhbEFsaWduJiZhLmZvbnRTaXplKXtjb25zdCBlPS41ODMsdD0uMzMzLGk9Z2V0TWVhc3VyZW1lbnQoYS5mb250U2l6ZSk7YS5mb250U2l6ZT1tZWFzdXJlVG9TdHJpbmcoaSplKTthLnZlcnRpY2FsQWxpZ249bWVhc3VyZVRvU3RyaW5nKE1hdGguc2lnbihnZXRNZWFzdXJlbWVudChhLnZlcnRpY2FsQWxpZ24pKSppKnQpfWkmJmEuZm9udFNpemUmJihhLmZvbnRTaXplPWBjYWxjKCR7YS5mb250U2l6ZX0gKiB2YXIoLS1zY2FsZS1mYWN0b3IpKWApO2ZpeFRleHRJbmRlbnQoYSk7cmV0dXJuIGF9Y29uc3QgZ289bmV3IFNldChbImJvZHkiLCJodG1sIl0pO2NsYXNzIFhodG1sT2JqZWN0IGV4dGVuZHMgWG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIodG8sdCk7dGhpc1tpb109ITE7dGhpcy5zdHlsZT1lLnN0eWxlfHwiIn1bdHNdKGUpe3N1cGVyW3RzXShlKTt0aGlzLnN0eWxlPWZ1bmN0aW9uIGNoZWNrU3R5bGUoZSl7cmV0dXJuIGUuc3R5bGU/ZS5zdHlsZS50cmltKCkuc3BsaXQoL1xzKjtccyovKS5maWx0ZXIoKGU9PiEhZSkpLm1hcCgoZT0+ZS5zcGxpdCgvXHMqOlxzKi8sMikpKS5maWx0ZXIoKChbdCxpXSk9PnsiZm9udC1mYW1pbHkiPT09dCYmZVtTc10udXNlZFR5cGVmYWNlcy5hZGQoaSk7cmV0dXJuIGFvLmhhcyh0KX0pKS5tYXAoKGU9PmUuam9pbigiOiIpKSkuam9pbigiOyIpOiIifSh0aGlzKX1benJdKCl7cmV0dXJuIWdvLmhhcyh0aGlzW09zXSl9W1pzXShlLHQ9ITEpe2lmKHQpdGhpc1tpb109ITA7ZWxzZXtlPWUucmVwbGFjZUFsbChubywiIik7dGhpcy5zdHlsZS5pbmNsdWRlcygieGZhLXNwYWNlcnVuOnllcyIpfHwoZT1lLnJlcGxhY2VBbGwoc28sIiAiKSl9ZSYmKHRoaXNbbnNdKz1lKX1bVnNdKGUsdD0hMCl7Y29uc3QgaT1PYmplY3QuY3JlYXRlKG51bGwpLGE9e3RvcDpOYU4sYm90dG9tOk5hTixsZWZ0Ok5hTixyaWdodDpOYU59O2xldCByPW51bGw7Zm9yKGNvbnN0W2UsdF1vZiB0aGlzLnN0eWxlLnNwbGl0KCI7IikubWFwKChlPT5lLnNwbGl0KCI6IiwyKSkpKXN3aXRjaChlKXtjYXNlImZvbnQtZmFtaWx5IjppLnR5cGVmYWNlPXN0cmlwUXVvdGVzKHQpO2JyZWFrO2Nhc2UiZm9udC1zaXplIjppLnNpemU9Z2V0TWVhc3VyZW1lbnQodCk7YnJlYWs7Y2FzZSJmb250LXdlaWdodCI6aS53ZWlnaHQ9dDticmVhaztjYXNlImZvbnQtc3R5bGUiOmkucG9zdHVyZT10O2JyZWFrO2Nhc2UibGV0dGVyLXNwYWNpbmciOmkubGV0dGVyU3BhY2luZz1nZXRNZWFzdXJlbWVudCh0KTticmVhaztjYXNlIm1hcmdpbiI6Y29uc3QgZT10LnNwbGl0KC8gXHQvKS5tYXAoKGU9PmdldE1lYXN1cmVtZW50KGUpKSk7c3dpdGNoKGUubGVuZ3RoKXtjYXNlIDE6YS50b3A9YS5ib3R0b209YS5sZWZ0PWEucmlnaHQ9ZVswXTticmVhaztjYXNlIDI6YS50b3A9YS5ib3R0b209ZVswXTthLmxlZnQ9YS5yaWdodD1lWzFdO2JyZWFrO2Nhc2UgMzphLnRvcD1lWzBdO2EuYm90dG9tPWVbMl07YS5sZWZ0PWEucmlnaHQ9ZVsxXTticmVhaztjYXNlIDQ6YS50b3A9ZVswXTthLmxlZnQ9ZVsxXTthLmJvdHRvbT1lWzJdO2EucmlnaHQ9ZVszXX1icmVhaztjYXNlIm1hcmdpbi10b3AiOmEudG9wPWdldE1lYXN1cmVtZW50KHQpO2JyZWFrO2Nhc2UibWFyZ2luLWJvdHRvbSI6YS5ib3R0b209Z2V0TWVhc3VyZW1lbnQodCk7YnJlYWs7Y2FzZSJtYXJnaW4tbGVmdCI6YS5sZWZ0PWdldE1lYXN1cmVtZW50KHQpO2JyZWFrO2Nhc2UibWFyZ2luLXJpZ2h0IjphLnJpZ2h0PWdldE1lYXN1cmVtZW50KHQpO2JyZWFrO2Nhc2UibGluZS1oZWlnaHQiOnI9Z2V0TWVhc3VyZW1lbnQodCl9ZS5wdXNoRGF0YShpLGEscik7aWYodGhpc1tuc10pZS5hZGRTdHJpbmcodGhpc1tuc10pO2Vsc2UgZm9yKGNvbnN0IHQgb2YgdGhpc1ttc10oKSkiI3RleHQiIT09dFtPc10/dFtWc10oZSk6ZS5hZGRTdHJpbmcodFtuc10pO3QmJmUucG9wRm9udCgpfVtJbl0oZSl7Y29uc3QgdD1bXTt0aGlzW0lzXT17Y2hpbGRyZW46dH07dGhpc1tlc10oe30pO2lmKDA9PT10Lmxlbmd0aCYmIXRoaXNbbnNdKXJldHVybiBIVE1MUmVzdWx0LkVNUFRZO2xldCBpO2k9dGhpc1tpb10/dGhpc1tuc10/dGhpc1tuc10ucmVwbGFjZUFsbChvbywiXG4iKTp2b2lkIDA6dGhpc1tuc118fHZvaWQgMDtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOnRoaXNbT3NdLGF0dHJpYnV0ZXM6e2hyZWY6dGhpcy5ocmVmLHN0eWxlOm1hcFN0eWxlKHRoaXMuc3R5bGUsdGhpcyx0aGlzW2lvXSl9LGNoaWxkcmVuOnQsdmFsdWU6aX0pfX1jbGFzcyBBIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiYSIpO3RoaXMuaHJlZj1maXhVUkwoZS5ocmVmKXx8IiJ9fWNsYXNzIEIgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJiIil9W1ZzXShlKXtlLnB1c2hGb250KHt3ZWlnaHQ6ImJvbGQifSk7c3VwZXJbVnNdKGUpO2UucG9wRm9udCgpfX1jbGFzcyBCb2R5IGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiYm9keSIpfVtJbl0oZSl7Y29uc3QgdD1zdXBlcltJbl0oZSkse2h0bWw6aX09dDtpZighaSlyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWTtpLm5hbWU9ImRpdiI7aS5hdHRyaWJ1dGVzLmNsYXNzPVsieGZhUmljaCJdO3JldHVybiB0fX1jbGFzcyBCciBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsImJyIil9W29uXSgpe3JldHVybiJcbiJ9W1ZzXShlKXtlLmFkZFN0cmluZygiXG4iKX1bSW5dKGUpe3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImJyIn0pfX1jbGFzcyBIdG1sIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiaHRtbCIpfVtJbl0oZSl7Y29uc3QgdD1bXTt0aGlzW0lzXT17Y2hpbGRyZW46dH07dGhpc1tlc10oe30pO2lmKDA9PT10Lmxlbmd0aClyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhUmljaCJdLHN0eWxlOnt9fSx2YWx1ZTp0aGlzW25zXXx8IiJ9KTtpZigxPT09dC5sZW5ndGgpe2NvbnN0IGU9dFswXTtpZihlLmF0dHJpYnV0ZXM/LmNsYXNzLmluY2x1ZGVzKCJ4ZmFSaWNoIikpcmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhlKX1yZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhUmljaCJdLHN0eWxlOnt9fSxjaGlsZHJlbjp0fSl9fWNsYXNzIEkgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJpIil9W1ZzXShlKXtlLnB1c2hGb250KHtwb3N0dXJlOiJpdGFsaWMifSk7c3VwZXJbVnNdKGUpO2UucG9wRm9udCgpfX1jbGFzcyBMaSBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsImxpIil9fWNsYXNzIE9sIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwib2wiKX19Y2xhc3MgUCBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsInAiKX1bVnNdKGUpe3N1cGVyW1ZzXShlLCExKTtlLmFkZFN0cmluZygiXG4iKTtlLmFkZFBhcmEoKTtlLnBvcEZvbnQoKX1bb25dKCl7cmV0dXJuIHRoaXNbRHNdKClbbXNdKCkuYXQoLTEpPT09dGhpcz9zdXBlcltvbl0oKTpzdXBlcltvbl0oKSsiXG4ifX1jbGFzcyBTcGFuIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwic3BhbiIpfX1jbGFzcyBTdWIgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJzdWIiKX19Y2xhc3MgU3VwIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwic3VwIil9fWNsYXNzIFVsIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwidWwiKX19Y2xhc3MgWGh0bWxOYW1lc3BhY2V7c3RhdGljW2xuXShlLHQpe2lmKFhodG1sTmFtZXNwYWNlLmhhc093blByb3BlcnR5KGUpKXJldHVybiBYaHRtbE5hbWVzcGFjZVtlXSh0KX1zdGF0aWMgYShlKXtyZXR1cm4gbmV3IEEoZSl9c3RhdGljIGIoZSl7cmV0dXJuIG5ldyBCKGUpfXN0YXRpYyBib2R5KGUpe3JldHVybiBuZXcgQm9keShlKX1zdGF0aWMgYnIoZSl7cmV0dXJuIG5ldyBCcihlKX1zdGF0aWMgaHRtbChlKXtyZXR1cm4gbmV3IEh0bWwoZSl9c3RhdGljIGkoZSl7cmV0dXJuIG5ldyBJKGUpfXN0YXRpYyBsaShlKXtyZXR1cm4gbmV3IExpKGUpfXN0YXRpYyBvbChlKXtyZXR1cm4gbmV3IE9sKGUpfXN0YXRpYyBwKGUpe3JldHVybiBuZXcgUChlKX1zdGF0aWMgc3BhbihlKXtyZXR1cm4gbmV3IFNwYW4oZSl9c3RhdGljIHN1YihlKXtyZXR1cm4gbmV3IFN1YihlKX1zdGF0aWMgc3VwKGUpe3JldHVybiBuZXcgU3VwKGUpfXN0YXRpYyB1bChlKXtyZXR1cm4gbmV3IFVsKGUpfX1jb25zdCBJbz17Y29uZmlnOkNvbmZpZ05hbWVzcGFjZSxjb25uZWN0aW9uOkNvbm5lY3Rpb25TZXROYW1lc3BhY2UsZGF0YXNldHM6RGF0YXNldHNOYW1lc3BhY2UsbG9jYWxlU2V0OkxvY2FsZVNldE5hbWVzcGFjZSxzaWduYXR1cmU6U2lnbmF0dXJlTmFtZXNwYWNlLHN0eWxlc2hlZXQ6U3R5bGVzaGVldE5hbWVzcGFjZSx0ZW1wbGF0ZTpUZW1wbGF0ZU5hbWVzcGFjZSx4ZHA6WGRwTmFtZXNwYWNlLHhodG1sOlhodG1sTmFtZXNwYWNlfTtjbGFzcyBVbmtub3duTmFtZXNwYWNle2NvbnN0cnVjdG9yKGUpe3RoaXMubmFtZXNwYWNlSWQ9ZX1bbG5dKGUsdCl7cmV0dXJuIG5ldyBYbWxPYmplY3QodGhpcy5uYW1lc3BhY2VJZCxlLHQpfX1jbGFzcyBSb290IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKC0xLCJyb290IixPYmplY3QuY3JlYXRlKG51bGwpKTt0aGlzLmVsZW1lbnQ9bnVsbDt0aGlzW1JzXT1lfVtqc10oZSl7dGhpcy5lbGVtZW50PWU7cmV0dXJuITB9W2NzXSgpe3N1cGVyW2NzXSgpO2lmKHRoaXMuZWxlbWVudC50ZW1wbGF0ZSBpbnN0YW5jZW9mIFRlbXBsYXRlKXt0aGlzW1JzXS5zZXQoQW4sdGhpcy5lbGVtZW50KTt0aGlzLmVsZW1lbnQudGVtcGxhdGVbZW5dKHRoaXNbUnNdKTt0aGlzLmVsZW1lbnQudGVtcGxhdGVbUnNdPXRoaXNbUnNdfX19Y2xhc3MgRW1wdHkgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoKXtzdXBlcigtMSwiIixPYmplY3QuY3JlYXRlKG51bGwpKX1banNdKGUpe3JldHVybiExfX1jbGFzcyBCdWlsZGVye2NvbnN0cnVjdG9yKGU9bnVsbCl7dGhpcy5fbmFtZXNwYWNlU3RhY2s9W107dGhpcy5fbnNBZ25vc3RpY0xldmVsPTA7dGhpcy5fbmFtZXNwYWNlUHJlZml4ZXM9bmV3IE1hcDt0aGlzLl9uYW1lc3BhY2VzPW5ldyBNYXA7dGhpcy5fbmV4dE5zSWQ9TWF0aC5tYXgoLi4uT2JqZWN0LnZhbHVlcyhCbikubWFwKCgoe2lkOmV9KT0+ZSkpKTt0aGlzLl9jdXJyZW50TmFtZXNwYWNlPWV8fG5ldyBVbmtub3duTmFtZXNwYWNlKCsrdGhpcy5fbmV4dE5zSWQpfWJ1aWxkUm9vdChlKXtyZXR1cm4gbmV3IFJvb3QoZSl9YnVpbGQoe25zUHJlZml4OmUsbmFtZTp0LGF0dHJpYnV0ZXM6aSxuYW1lc3BhY2U6YSxwcmVmaXhlczpyfSl7Y29uc3Qgcz1udWxsIT09YTtpZihzKXt0aGlzLl9uYW1lc3BhY2VTdGFjay5wdXNoKHRoaXMuX2N1cnJlbnROYW1lc3BhY2UpO3RoaXMuX2N1cnJlbnROYW1lc3BhY2U9dGhpcy5fc2VhcmNoTmFtZXNwYWNlKGEpfXImJnRoaXMuX2FkZE5hbWVzcGFjZVByZWZpeChyKTtpZihpLmhhc093blByb3BlcnR5KFdzKSl7Y29uc3QgZT1Jby5kYXRhc2V0cyx0PWlbV3NdO2xldCBhPW51bGw7Zm9yKGNvbnN0W2kscl1vZiBPYmplY3QuZW50cmllcyh0KSl7aWYodGhpcy5fZ2V0TmFtZXNwYWNlVG9Vc2UoaSk9PT1lKXthPXt4ZmE6cn07YnJlYWt9fWE/aVtXc109YTpkZWxldGUgaVtXc119Y29uc3Qgbj10aGlzLl9nZXROYW1lc3BhY2VUb1VzZShlKSxvPW4/Lltsbl0odCxpKXx8bmV3IEVtcHR5O29bSHNdKCkmJnRoaXMuX25zQWdub3N0aWNMZXZlbCsrOyhzfHxyfHxvW0hzXSgpKSYmKG9bYXNdPXtoYXNOYW1lc3BhY2U6cyxwcmVmaXhlczpyLG5zQWdub3N0aWM6b1tIc10oKX0pO3JldHVybiBvfWlzTnNBZ25vc3RpYygpe3JldHVybiB0aGlzLl9uc0Fnbm9zdGljTGV2ZWw+MH1fc2VhcmNoTmFtZXNwYWNlKGUpe2xldCB0PXRoaXMuX25hbWVzcGFjZXMuZ2V0KGUpO2lmKHQpcmV0dXJuIHQ7Zm9yKGNvbnN0W2kse2NoZWNrOmF9XW9mIE9iamVjdC5lbnRyaWVzKEJuKSlpZihhKGUpKXt0PUlvW2ldO2lmKHQpe3RoaXMuX25hbWVzcGFjZXMuc2V0KGUsdCk7cmV0dXJuIHR9YnJlYWt9dD1uZXcgVW5rbm93bk5hbWVzcGFjZSgrK3RoaXMuX25leHROc0lkKTt0aGlzLl9uYW1lc3BhY2VzLnNldChlLHQpO3JldHVybiB0fV9hZGROYW1lc3BhY2VQcmVmaXgoZSl7Zm9yKGNvbnN0e3ByZWZpeDp0LHZhbHVlOml9b2YgZSl7Y29uc3QgZT10aGlzLl9zZWFyY2hOYW1lc3BhY2UoaSk7bGV0IGE9dGhpcy5fbmFtZXNwYWNlUHJlZml4ZXMuZ2V0KHQpO2lmKCFhKXthPVtdO3RoaXMuX25hbWVzcGFjZVByZWZpeGVzLnNldCh0LGEpfWEucHVzaChlKX19X2dldE5hbWVzcGFjZVRvVXNlKGUpe2lmKCFlKXJldHVybiB0aGlzLl9jdXJyZW50TmFtZXNwYWNlO2NvbnN0IHQ9dGhpcy5fbmFtZXNwYWNlUHJlZml4ZXMuZ2V0KGUpO2lmKHQ/Lmxlbmd0aD4wKXJldHVybiB0LmF0KC0xKTt3YXJuKGBVbmtub3duIG5hbWVzcGFjZSBwcmVmaXg6ICR7ZX0uYCk7cmV0dXJuIG51bGx9Y2xlYW4oZSl7Y29uc3R7aGFzTmFtZXNwYWNlOnQscHJlZml4ZXM6aSxuc0Fnbm9zdGljOmF9PWU7dCYmKHRoaXMuX2N1cnJlbnROYW1lc3BhY2U9dGhpcy5fbmFtZXNwYWNlU3RhY2sucG9wKCkpO2kmJmkuZm9yRWFjaCgoKHtwcmVmaXg6ZX0pPT57dGhpcy5fbmFtZXNwYWNlUHJlZml4ZXMuZ2V0KGUpLnBvcCgpfSkpO2EmJnRoaXMuX25zQWdub3N0aWNMZXZlbC0tfX1jbGFzcyBYRkFQYXJzZXIgZXh0ZW5kcyBYTUxQYXJzZXJCYXNle2NvbnN0cnVjdG9yKGU9bnVsbCx0PSExKXtzdXBlcigpO3RoaXMuX2J1aWxkZXI9bmV3IEJ1aWxkZXIoZSk7dGhpcy5fc3RhY2s9W107dGhpcy5fZ2xvYmFsRGF0YT17dXNlZFR5cGVmYWNlczpuZXcgU2V0fTt0aGlzLl9pZHM9bmV3IE1hcDt0aGlzLl9jdXJyZW50PXRoaXMuX2J1aWxkZXIuYnVpbGRSb290KHRoaXMuX2lkcyk7dGhpcy5fZXJyb3JDb2RlPUhyO3RoaXMuX3doaXRlUmVnZXg9L15ccyskLzt0aGlzLl9uYnNwcz0vXHhhMCsvZzt0aGlzLl9yaWNoVGV4dD10fXBhcnNlKGUpe3RoaXMucGFyc2VYbWwoZSk7aWYodGhpcy5fZXJyb3JDb2RlPT09SHIpe3RoaXMuX2N1cnJlbnRbY3NdKCk7cmV0dXJuIHRoaXMuX2N1cnJlbnQuZWxlbWVudH19b25UZXh0KGUpe2U9ZS5yZXBsYWNlKHRoaXMuX25ic3BzLChlPT5lLnNsaWNlKDEpKyIgIikpO3RoaXMuX3JpY2hUZXh0fHx0aGlzLl9jdXJyZW50W3pyXSgpP3RoaXMuX2N1cnJlbnRbWnNdKGUsdGhpcy5fcmljaFRleHQpOnRoaXMuX3doaXRlUmVnZXgudGVzdChlKXx8dGhpcy5fY3VycmVudFtac10oZS50cmltKCkpfW9uQ2RhdGEoZSl7dGhpcy5fY3VycmVudFtac10oZSl9X21rQXR0cmlidXRlcyhlLHQpe2xldCBpPW51bGwsYT1udWxsO2NvbnN0IHI9T2JqZWN0LmNyZWF0ZSh7fSk7Zm9yKGNvbnN0e25hbWU6cyx2YWx1ZTpufW9mIGUpaWYoInhtbG5zIj09PXMpaT93YXJuKGBYRkEgLSBtdWx0aXBsZSBuYW1lc3BhY2UgZGVmaW5pdGlvbiBpbiA8JHt0fT5gKTppPW47ZWxzZSBpZihzLnN0YXJ0c1dpdGgoInhtbG5zOiIpKXtjb25zdCBlPXMuc3Vic3RyaW5nKDYpO2F8fChhPVtdKTthLnB1c2goe3ByZWZpeDplLHZhbHVlOm59KX1lbHNle2NvbnN0IGU9cy5pbmRleE9mKCI6Iik7aWYoLTE9PT1lKXJbc109bjtlbHNle2xldCB0PXJbV3NdO3R8fCh0PXJbV3NdPU9iamVjdC5jcmVhdGUobnVsbCkpO2NvbnN0W2ksYV09W3Muc2xpY2UoMCxlKSxzLnNsaWNlKGUrMSldOyh0W2ldfHw9T2JqZWN0LmNyZWF0ZShudWxsKSlbYV09bn19cmV0dXJuW2ksYSxyXX1fZ2V0TmFtZUFuZFByZWZpeChlLHQpe2NvbnN0IGk9ZS5pbmRleE9mKCI6Iik7cmV0dXJuLTE9PT1pP1tlLG51bGxdOltlLnN1YnN0cmluZyhpKzEpLHQ/IiI6ZS5zdWJzdHJpbmcoMCxpKV19b25CZWdpbkVsZW1lbnQoZSx0LGkpe2NvbnN0W2EscixzXT10aGlzLl9ta0F0dHJpYnV0ZXModCxlKSxbbixvXT10aGlzLl9nZXROYW1lQW5kUHJlZml4KGUsdGhpcy5fYnVpbGRlci5pc05zQWdub3N0aWMoKSksZz10aGlzLl9idWlsZGVyLmJ1aWxkKHtuc1ByZWZpeDpvLG5hbWU6bixhdHRyaWJ1dGVzOnMsbmFtZXNwYWNlOmEscHJlZml4ZXM6cn0pO2dbU3NdPXRoaXMuX2dsb2JhbERhdGE7aWYoaSl7Z1tjc10oKTt0aGlzLl9jdXJyZW50W2pzXShnKSYmZ1thbl0odGhpcy5faWRzKTtnW3RzXSh0aGlzLl9idWlsZGVyKX1lbHNle3RoaXMuX3N0YWNrLnB1c2godGhpcy5fY3VycmVudCk7dGhpcy5fY3VycmVudD1nfX1vbkVuZEVsZW1lbnQoZSl7Y29uc3QgdD10aGlzLl9jdXJyZW50O2lmKHRbeHNdKCkmJiJzdHJpbmciPT10eXBlb2YgdFtuc10pe2NvbnN0IGU9bmV3IFhGQVBhcnNlcjtlLl9nbG9iYWxEYXRhPXRoaXMuX2dsb2JhbERhdGE7Y29uc3QgaT1lLnBhcnNlKHRbbnNdKTt0W25zXT1udWxsO3RbanNdKGkpfXRbY3NdKCk7dGhpcy5fY3VycmVudD10aGlzLl9zdGFjay5wb3AoKTt0aGlzLl9jdXJyZW50W2pzXSh0KSYmdFthbl0odGhpcy5faWRzKTt0W3RzXSh0aGlzLl9idWlsZGVyKX1vbkVycm9yKGUpe3RoaXMuX2Vycm9yQ29kZT1lfX1jbGFzcyBYRkFGYWN0b3J5e2NvbnN0cnVjdG9yKGUpe3RyeXt0aGlzLnJvb3Q9KG5ldyBYRkFQYXJzZXIpLnBhcnNlKFhGQUZhY3RvcnkuX2NyZWF0ZURvY3VtZW50KGUpKTtjb25zdCB0PW5ldyBCaW5kZXIodGhpcy5yb290KTt0aGlzLmZvcm09dC5iaW5kKCk7dGhpcy5kYXRhSGFuZGxlcj1uZXcgRGF0YUhhbmRsZXIodGhpcy5yb290LHQuZ2V0RGF0YSgpKTt0aGlzLmZvcm1bU3NdLnRlbXBsYXRlPXRoaXMuZm9ybX1jYXRjaChlKXt3YXJuKGBYRkEgLSBhbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgcGFyc2luZyBhbmQgYmluZGluZzogJHtlfWApfX1pc1ZhbGlkKCl7cmV0dXJuIHRoaXMucm9vdCYmdGhpcy5mb3JtfV9jcmVhdGVQYWdlc0hlbHBlcigpe2NvbnN0IGU9dGhpcy5mb3JtW2duXSgpO3JldHVybiBuZXcgUHJvbWlzZSgoKHQsaSk9Pntjb25zdCBuZXh0SXRlcmF0aW9uPSgpPT57dHJ5e2NvbnN0IGk9ZS5uZXh0KCk7aS5kb25lP3QoaS52YWx1ZSk6c2V0VGltZW91dChuZXh0SXRlcmF0aW9uLDApfWNhdGNoKGUpe2koZSl9fTtzZXRUaW1lb3V0KG5leHRJdGVyYXRpb24sMCl9KSl9YXN5bmMgX2NyZWF0ZVBhZ2VzKCl7dHJ5e3RoaXMucGFnZXM9YXdhaXQgdGhpcy5fY3JlYXRlUGFnZXNIZWxwZXIoKTt0aGlzLmRpbXM9dGhpcy5wYWdlcy5jaGlsZHJlbi5tYXAoKGU9Pntjb25zdHt3aWR0aDp0LGhlaWdodDppfT1lLmF0dHJpYnV0ZXMuc3R5bGU7cmV0dXJuWzAsMCxwYXJzZUludCh0KSxwYXJzZUludChpKV19KSl9Y2F0Y2goZSl7d2FybihgWEZBIC0gYW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGxheW91dDogJHtlfWApfX1nZXRCb3VuZGluZ0JveChlKXtyZXR1cm4gdGhpcy5kaW1zW2VdfWFzeW5jIGdldE51bVBhZ2VzKCl7dGhpcy5wYWdlc3x8YXdhaXQgdGhpcy5fY3JlYXRlUGFnZXMoKTtyZXR1cm4gdGhpcy5kaW1zLmxlbmd0aH1zZXRJbWFnZXMoZSl7dGhpcy5mb3JtW1NzXS5pbWFnZXM9ZX1zZXRGb250cyhlKXt0aGlzLmZvcm1bU3NdLmZvbnRGaW5kZXI9bmV3IEZvbnRGaW5kZXIoZSk7Y29uc3QgdD1bXTtmb3IobGV0IGUgb2YgdGhpcy5mb3JtW1NzXS51c2VkVHlwZWZhY2VzKXtlPXN0cmlwUXVvdGVzKGUpO3RoaXMuZm9ybVtTc10uZm9udEZpbmRlci5maW5kKGUpfHx0LnB1c2goZSl9cmV0dXJuIHQubGVuZ3RoPjA/dDpudWxsfWFwcGVuZEZvbnRzKGUsdCl7dGhpcy5mb3JtW1NzXS5mb250RmluZGVyLmFkZChlLHQpfWFzeW5jIGdldFBhZ2VzKCl7dGhpcy5wYWdlc3x8YXdhaXQgdGhpcy5fY3JlYXRlUGFnZXMoKTtjb25zdCBlPXRoaXMucGFnZXM7dGhpcy5wYWdlcz1udWxsO3JldHVybiBlfXNlcmlhbGl6ZURhdGEoZSl7cmV0dXJuIHRoaXMuZGF0YUhhbmRsZXIuc2VyaWFsaXplKGUpfXN0YXRpYyBfY3JlYXRlRG9jdW1lbnQoZSl7cmV0dXJuIGVbIi94ZHA6eGRwIl0/T2JqZWN0LnZhbHVlcyhlKS5qb2luKCIiKTplWyJ4ZHA6eGRwIl19c3RhdGljIGdldFJpY2hUZXh0QXNIdG1sKGUpe2lmKCFlfHwic3RyaW5nIiE9dHlwZW9mIGUpcmV0dXJuIG51bGw7dHJ5e2xldCB0PW5ldyBYRkFQYXJzZXIoWGh0bWxOYW1lc3BhY2UsITApLnBhcnNlKGUpO2lmKCFbImJvZHkiLCJ4aHRtbCJdLmluY2x1ZGVzKHRbT3NdKSl7Y29uc3QgZT1YaHRtbE5hbWVzcGFjZS5ib2R5KHt9KTtlW0FzXSh0KTt0PWV9Y29uc3QgaT10W0luXSgpO2lmKCFpLnN1Y2Nlc3MpcmV0dXJuIG51bGw7Y29uc3R7aHRtbDphfT1pLHthdHRyaWJ1dGVzOnJ9PWE7aWYocil7ci5jbGFzcyYmKHIuY2xhc3M9ci5jbGFzcy5maWx0ZXIoKGU9PiFlLnN0YXJ0c1dpdGgoInhmYSIpKSkpO3IuZGlyPSJhdXRvIn1yZXR1cm57aHRtbDphLHN0cjp0W29uXSgpfX1jYXRjaChlKXt3YXJuKGBYRkEgLSBhbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgcGFyc2luZyBvZiByaWNoIHRleHQ6ICR7ZX1gKX1yZXR1cm4gbnVsbH19Y2xhc3MgQW5ub3RhdGlvbkZhY3Rvcnl7c3RhdGljIGNyZWF0ZUdsb2JhbHMoZSl7cmV0dXJuIFByb21pc2UuYWxsKFtlLmVuc3VyZUNhdGFsb2coImFjcm9Gb3JtIiksZS5lbnN1cmVEb2MoInhmYURhdGFzZXRzIiksZS5lbnN1cmVDYXRhbG9nKCJzdHJ1Y3RUcmVlUm9vdCIpLGUuZW5zdXJlQ2F0YWxvZygiYmFzZVVybCIpLGUuZW5zdXJlQ2F0YWxvZygiYXR0YWNobWVudHMiKV0pLnRoZW4oKChbdCxpLGEscixzXSk9Pih7cGRmTWFuYWdlcjplLGFjcm9Gb3JtOnQgaW5zdGFuY2VvZiBEaWN0P3Q6RGljdC5lbXB0eSx4ZmFEYXRhc2V0czppLHN0cnVjdFRyZWVSb290OmEsYmFzZVVybDpyLGF0dGFjaG1lbnRzOnN9KSksKGU9Pnt3YXJuKGBjcmVhdGVHbG9iYWxzOiAiJHtlfSIuYCk7cmV0dXJuIG51bGx9KSl9c3RhdGljIGFzeW5jIGNyZWF0ZShlLHQsaSxhLHIscyxuKXtjb25zdCBvPXI/YXdhaXQgdGhpcy5fZ2V0UGFnZUluZGV4KGUsdCxpLnBkZk1hbmFnZXIpOm51bGw7cmV0dXJuIGkucGRmTWFuYWdlci5lbnN1cmUodGhpcywiX2NyZWF0ZSIsW2UsdCxpLGEscixzLG8sbl0pfXN0YXRpYyBfY3JlYXRlKGUsdCxpLGEscj0hMSxzPW51bGwsbj1udWxsLG89bnVsbCl7Y29uc3QgZz1lLmZldGNoSWZSZWYodCk7aWYoIShnIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuO2NvbnN0e2Fjcm9Gb3JtOmMscGRmTWFuYWdlcjpDfT1pLGg9dCBpbnN0YW5jZW9mIFJlZj90LnRvU3RyaW5nKCk6YGFubm90XyR7YS5jcmVhdGVPYmpJZCgpfWA7bGV0IGw9Zy5nZXQoIlN1YnR5cGUiKTtsPWwgaW5zdGFuY2VvZiBOYW1lP2wubmFtZTpudWxsO2NvbnN0IFE9e3hyZWY6ZSxyZWY6dCxkaWN0Omcsc3VidHlwZTpsLGlkOmgsYW5ub3RhdGlvbkdsb2JhbHM6aSxjb2xsZWN0RmllbGRzOnIsb3JwaGFuRmllbGRzOnMsbmVlZEFwcGVhcmFuY2VzOiFyJiYhMD09PWMuZ2V0KCJOZWVkQXBwZWFyYW5jZXMiKSxwYWdlSW5kZXg6bixldmFsdWF0b3JPcHRpb25zOkMuZXZhbHVhdG9yT3B0aW9ucyxwYWdlUmVmOm99O3N3aXRjaChsKXtjYXNlIkxpbmsiOnJldHVybiBuZXcgTGlua0Fubm90YXRpb24oUSk7Y2FzZSJUZXh0IjpyZXR1cm4gbmV3IFRleHRBbm5vdGF0aW9uKFEpO2Nhc2UiV2lkZ2V0IjpsZXQgZT1nZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0Omcsa2V5OiJGVCJ9KTtlPWUgaW5zdGFuY2VvZiBOYW1lP2UubmFtZTpudWxsO3N3aXRjaChlKXtjYXNlIlR4IjpyZXR1cm4gbmV3IFRleHRXaWRnZXRBbm5vdGF0aW9uKFEpO2Nhc2UiQnRuIjpyZXR1cm4gbmV3IEJ1dHRvbldpZGdldEFubm90YXRpb24oUSk7Y2FzZSJDaCI6cmV0dXJuIG5ldyBDaG9pY2VXaWRnZXRBbm5vdGF0aW9uKFEpO2Nhc2UiU2lnIjpyZXR1cm4gbmV3IFNpZ25hdHVyZVdpZGdldEFubm90YXRpb24oUSl9d2FybihgVW5pbXBsZW1lbnRlZCB3aWRnZXQgZmllbGQgdHlwZSAiJHtlfSIsIGZhbGxpbmcgYmFjayB0byBiYXNlIGZpZWxkIHR5cGUuYCk7cmV0dXJuIG5ldyBXaWRnZXRBbm5vdGF0aW9uKFEpO2Nhc2UiUG9wdXAiOnJldHVybiBuZXcgUG9wdXBBbm5vdGF0aW9uKFEpO2Nhc2UiRnJlZVRleHQiOnJldHVybiBuZXcgRnJlZVRleHRBbm5vdGF0aW9uKFEpO2Nhc2UiTGluZSI6cmV0dXJuIG5ldyBMaW5lQW5ub3RhdGlvbihRKTtjYXNlIlNxdWFyZSI6cmV0dXJuIG5ldyBTcXVhcmVBbm5vdGF0aW9uKFEpO2Nhc2UiQ2lyY2xlIjpyZXR1cm4gbmV3IENpcmNsZUFubm90YXRpb24oUSk7Y2FzZSJQb2x5TGluZSI6cmV0dXJuIG5ldyBQb2x5bGluZUFubm90YXRpb24oUSk7Y2FzZSJQb2x5Z29uIjpyZXR1cm4gbmV3IFBvbHlnb25Bbm5vdGF0aW9uKFEpO2Nhc2UiQ2FyZXQiOnJldHVybiBuZXcgQ2FyZXRBbm5vdGF0aW9uKFEpO2Nhc2UiSW5rIjpyZXR1cm4gbmV3IElua0Fubm90YXRpb24oUSk7Y2FzZSJIaWdobGlnaHQiOnJldHVybiBuZXcgSGlnaGxpZ2h0QW5ub3RhdGlvbihRKTtjYXNlIlVuZGVybGluZSI6cmV0dXJuIG5ldyBVbmRlcmxpbmVBbm5vdGF0aW9uKFEpO2Nhc2UiU3F1aWdnbHkiOnJldHVybiBuZXcgU3F1aWdnbHlBbm5vdGF0aW9uKFEpO2Nhc2UiU3RyaWtlT3V0IjpyZXR1cm4gbmV3IFN0cmlrZU91dEFubm90YXRpb24oUSk7Y2FzZSJTdGFtcCI6cmV0dXJuIG5ldyBTdGFtcEFubm90YXRpb24oUSk7Y2FzZSJGaWxlQXR0YWNobWVudCI6cmV0dXJuIG5ldyBGaWxlQXR0YWNobWVudEFubm90YXRpb24oUSk7ZGVmYXVsdDpyfHx3YXJuKGw/YFVuaW1wbGVtZW50ZWQgYW5ub3RhdGlvbiB0eXBlICIke2x9IiwgZmFsbGluZyBiYWNrIHRvIGJhc2UgYW5ub3RhdGlvbi5gOiJBbm5vdGF0aW9uIGlzIG1pc3NpbmcgdGhlIHJlcXVpcmVkIC9TdWJ0eXBlLiIpO3JldHVybiBuZXcgQW5ub3RhdGlvbihRKX19c3RhdGljIGFzeW5jIF9nZXRQYWdlSW5kZXgoZSx0LGkpe3RyeXtjb25zdCBhPWF3YWl0IGUuZmV0Y2hJZlJlZkFzeW5jKHQpO2lmKCEoYSBpbnN0YW5jZW9mIERpY3QpKXJldHVybi0xO2NvbnN0IHI9YS5nZXRSYXcoIlAiKTtpZihyIGluc3RhbmNlb2YgUmVmKXRyeXtyZXR1cm4gYXdhaXQgaS5lbnN1cmVDYXRhbG9nKCJnZXRQYWdlSW5kZXgiLFtyXSl9Y2F0Y2goZSl7aW5mbyhgX2dldFBhZ2VJbmRleCAtLSBub3QgYSB2YWxpZCBwYWdlIHJlZmVyZW5jZTogIiR7ZX0iLmApfWlmKGEuaGFzKCJLaWRzIikpcmV0dXJuLTE7Y29uc3Qgcz1hd2FpdCBpLmVuc3VyZURvYygibnVtUGFnZXMiKTtmb3IobGV0IGU9MDtlPHM7ZSsrKXtjb25zdCBhPWF3YWl0IGkuZ2V0UGFnZShlKSxyPWF3YWl0IGkuZW5zdXJlKGEsImFubm90YXRpb25zIik7Zm9yKGNvbnN0IGkgb2YgcilpZihpIGluc3RhbmNlb2YgUmVmJiZpc1JlZnNFcXVhbChpLHQpKXJldHVybiBlfX1jYXRjaChlKXt3YXJuKGBfZ2V0UGFnZUluZGV4OiAiJHtlfSIuYCl9cmV0dXJuLTF9c3RhdGljIGdlbmVyYXRlSW1hZ2VzKGUsdCxpKXtpZighaSl7d2FybigiZ2VuZXJhdGVJbWFnZXM6IE9mZnNjcmVlbkNhbnZhcyBpcyBub3Qgc3VwcG9ydGVkLCBjYW5ub3Qgc2F2ZSBvciBwcmludCBzb21lIGFubm90YXRpb25zIHdpdGggaW1hZ2VzLiIpO3JldHVybiBudWxsfWxldCBhO2Zvcihjb25zdHtiaXRtYXBJZDppLGJpdG1hcDpyfW9mIGUpaWYocil7YXx8PW5ldyBNYXA7YS5zZXQoaSxTdGFtcEFubm90YXRpb24uY3JlYXRlSW1hZ2Uocix0KSl9cmV0dXJuIGF9c3RhdGljIGFzeW5jIHNhdmVOZXdBbm5vdGF0aW9ucyhlLHQsaSxhKXtjb25zdCByPWUueHJlZjtsZXQgcztjb25zdCBuPVtdLG89W10se2lzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkOmd9PWUub3B0aW9ucztmb3IoY29uc3QgYyBvZiBpKWlmKCFjLmRlbGV0ZWQpc3dpdGNoKGMuYW5ub3RhdGlvblR5cGUpe2Nhc2UgZjppZighcyl7Y29uc3QgZT1uZXcgRGljdChyKTtlLnNldCgiQmFzZUZvbnQiLE5hbWUuZ2V0KCJIZWx2ZXRpY2EiKSk7ZS5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJGb250IikpO2Uuc2V0KCJTdWJ0eXBlIixOYW1lLmdldCgiVHlwZTEiKSk7ZS5zZXQoIkVuY29kaW5nIixOYW1lLmdldCgiV2luQW5zaUVuY29kaW5nIikpO2NvbnN0IHQ9W107cz1yLmdldE5ld1RlbXBvcmFyeVJlZigpO2F3YWl0IHdyaXRlT2JqZWN0KHMsZSx0LHIpO24ucHVzaCh7cmVmOnMsZGF0YTp0LmpvaW4oIiIpfSl9by5wdXNoKEZyZWVUZXh0QW5ub3RhdGlvbi5jcmVhdGVOZXdBbm5vdGF0aW9uKHIsYyxuLHtldmFsdWF0b3I6ZSx0YXNrOnQsYmFzZUZvbnRSZWY6c30pKTticmVhaztjYXNlIHA6Yy5xdWFkUG9pbnRzP28ucHVzaChIaWdobGlnaHRBbm5vdGF0aW9uLmNyZWF0ZU5ld0Fubm90YXRpb24ocixjLG4pKTpvLnB1c2goSW5rQW5ub3RhdGlvbi5jcmVhdGVOZXdBbm5vdGF0aW9uKHIsYyxuKSk7YnJlYWs7Y2FzZSB5Om8ucHVzaChJbmtBbm5vdGF0aW9uLmNyZWF0ZU5ld0Fubm90YXRpb24ocixjLG4pKTticmVhaztjYXNlIG06Y29uc3QgaT1nP2F3YWl0KGE/LmdldChjLmJpdG1hcElkKSk6bnVsbDtpZihpPy5pbWFnZVN0cmVhbSl7Y29uc3R7aW1hZ2VTdHJlYW06ZSxzbWFza1N0cmVhbTp0fT1pLGE9W107aWYodCl7Y29uc3QgaT1yLmdldE5ld1RlbXBvcmFyeVJlZigpO2F3YWl0IHdyaXRlT2JqZWN0KGksdCxhLHIpO24ucHVzaCh7cmVmOmksZGF0YTphLmpvaW4oIiIpfSk7ZS5kaWN0LnNldCgiU01hc2siLGkpO2EubGVuZ3RoPTB9Y29uc3Qgcz1pLmltYWdlUmVmPXIuZ2V0TmV3VGVtcG9yYXJ5UmVmKCk7YXdhaXQgd3JpdGVPYmplY3QocyxlLGEscik7bi5wdXNoKHtyZWY6cyxkYXRhOmEuam9pbigiIil9KTtpLmltYWdlU3RyZWFtPWkuc21hc2tTdHJlYW09bnVsbH1vLnB1c2goU3RhbXBBbm5vdGF0aW9uLmNyZWF0ZU5ld0Fubm90YXRpb24ocixjLG4se2ltYWdlOml9KSl9cmV0dXJue2Fubm90YXRpb25zOmF3YWl0IFByb21pc2UuYWxsKG8pLGRlcGVuZGVuY2llczpufX1zdGF0aWMgYXN5bmMgcHJpbnROZXdBbm5vdGF0aW9ucyhlLHQsaSxhLHIpe2lmKCFhKXJldHVybiBudWxsO2NvbnN0e29wdGlvbnM6cyx4cmVmOm59PXQsbz1bXTtmb3IoY29uc3QgZyBvZiBhKWlmKCFnLmRlbGV0ZWQpc3dpdGNoKGcuYW5ub3RhdGlvblR5cGUpe2Nhc2UgZjpvLnB1c2goRnJlZVRleHRBbm5vdGF0aW9uLmNyZWF0ZU5ld1ByaW50QW5ub3RhdGlvbihlLG4sZyx7ZXZhbHVhdG9yOnQsdGFzazppLGV2YWx1YXRvck9wdGlvbnM6c30pKTticmVhaztjYXNlIHA6Zy5xdWFkUG9pbnRzP28ucHVzaChIaWdobGlnaHRBbm5vdGF0aW9uLmNyZWF0ZU5ld1ByaW50QW5ub3RhdGlvbihlLG4sZyx7ZXZhbHVhdG9yT3B0aW9uczpzfSkpOm8ucHVzaChJbmtBbm5vdGF0aW9uLmNyZWF0ZU5ld1ByaW50QW5ub3RhdGlvbihlLG4sZyx7ZXZhbHVhdG9yT3B0aW9uczpzfSkpO2JyZWFrO2Nhc2UgeTpvLnB1c2goSW5rQW5ub3RhdGlvbi5jcmVhdGVOZXdQcmludEFubm90YXRpb24oZSxuLGcse2V2YWx1YXRvck9wdGlvbnM6c30pKTticmVhaztjYXNlIG06Y29uc3QgYT1zLmlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkP2F3YWl0KHI/LmdldChnLmJpdG1hcElkKSk6bnVsbDtpZihhPy5pbWFnZVN0cmVhbSl7Y29uc3R7aW1hZ2VTdHJlYW06ZSxzbWFza1N0cmVhbTp0fT1hO3QmJmUuZGljdC5zZXQoIlNNYXNrIix0KTthLmltYWdlUmVmPW5ldyBKcGVnU3RyZWFtKGUsZS5sZW5ndGgpO2EuaW1hZ2VTdHJlYW09YS5zbWFza1N0cmVhbT1udWxsfW8ucHVzaChTdGFtcEFubm90YXRpb24uY3JlYXRlTmV3UHJpbnRBbm5vdGF0aW9uKGUsbixnLHtpbWFnZTphLGV2YWx1YXRvck9wdGlvbnM6c30pKX1yZXR1cm4gUHJvbWlzZS5hbGwobyl9fWZ1bmN0aW9uIGdldFJnYkNvbG9yKGUsdD1uZXcgVWludDhDbGFtcGVkQXJyYXkoMykpe2lmKCFBcnJheS5pc0FycmF5KGUpKXJldHVybiB0O2NvbnN0IGk9dHx8bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDMpO3N3aXRjaChlLmxlbmd0aCl7Y2FzZSAwOnJldHVybiBudWxsO2Nhc2UgMTpDb2xvclNwYWNlLnNpbmdsZXRvbnMuZ3JheS5nZXRSZ2JJdGVtKGUsMCxpLDApO3JldHVybiBpO2Nhc2UgMzpDb2xvclNwYWNlLnNpbmdsZXRvbnMucmdiLmdldFJnYkl0ZW0oZSwwLGksMCk7cmV0dXJuIGk7Y2FzZSA0OkNvbG9yU3BhY2Uuc2luZ2xldG9ucy5jbXlrLmdldFJnYkl0ZW0oZSwwLGksMCk7cmV0dXJuIGk7ZGVmYXVsdDpyZXR1cm4gdH19ZnVuY3Rpb24gZ2V0UGRmQ29sb3JBcnJheShlKXtyZXR1cm4gQXJyYXkuZnJvbShlLChlPT5lLzI1NSkpfWZ1bmN0aW9uIGdldFF1YWRQb2ludHMoZSx0KXtjb25zdCBpPWUuZ2V0QXJyYXkoIlF1YWRQb2ludHMiKTtpZighaXNOdW1iZXJBcnJheShpLG51bGwpfHwwPT09aS5sZW5ndGh8fGkubGVuZ3RoJTg+MClyZXR1cm4gbnVsbDtjb25zdCBhPW5ldyBGbG9hdDMyQXJyYXkoaS5sZW5ndGgpO2ZvcihsZXQgZT0wLHI9aS5sZW5ndGg7ZTxyO2UrPTgpe2NvbnN0W3IscyxuLG8sZyxjLEMsaF09aS5zbGljZShlLGUrOCksbD1NYXRoLm1pbihyLG4sZyxDKSxRPU1hdGgubWF4KHIsbixnLEMpLEU9TWF0aC5taW4ocyxvLGMsaCksdT1NYXRoLm1heChzLG8sYyxoKTtpZihudWxsIT09dCYmKGw8dFswXXx8UT50WzJdfHxFPHRbMV18fHU+dFszXSkpcmV0dXJuIG51bGw7YS5zZXQoW2wsdSxRLHUsbCxFLFEsRV0sZSl9cmV0dXJuIGF9ZnVuY3Rpb24gZ2V0VHJhbnNmb3JtTWF0cml4KGUsdCxpKXtjb25zdFthLHIscyxuXT1VdGlsLmdldEF4aWFsQWxpZ25lZEJvdW5kaW5nQm94KHQsaSk7aWYoYT09PXN8fHI9PT1uKXJldHVyblsxLDAsMCwxLGVbMF0sZVsxXV07Y29uc3Qgbz0oZVsyXS1lWzBdKS8ocy1hKSxnPShlWzNdLWVbMV0pLyhuLXIpO3JldHVybltvLDAsMCxnLGVbMF0tYSpvLGVbMV0tcipnXX1jbGFzcyBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe2NvbnN0e2RpY3Q6dCx4cmVmOmksYW5ub3RhdGlvbkdsb2JhbHM6YSxyZWY6cixvcnBoYW5GaWVsZHM6c309ZSxuPXM/LmdldChyKTtuJiZ0LnNldCgiUGFyZW50IixuKTt0aGlzLnNldFRpdGxlKHQuZ2V0KCJUIikpO3RoaXMuc2V0Q29udGVudHModC5nZXQoIkNvbnRlbnRzIikpO3RoaXMuc2V0TW9kaWZpY2F0aW9uRGF0ZSh0LmdldCgiTSIpKTt0aGlzLnNldEZsYWdzKHQuZ2V0KCJGIikpO3RoaXMuc2V0UmVjdGFuZ2xlKHQuZ2V0QXJyYXkoIlJlY3QiKSk7dGhpcy5zZXRDb2xvcih0LmdldEFycmF5KCJDIikpO3RoaXMuc2V0Qm9yZGVyU3R5bGUodCk7dGhpcy5zZXRBcHBlYXJhbmNlKHQpO3RoaXMuc2V0T3B0aW9uYWxDb250ZW50KHQpO2NvbnN0IG89dC5nZXQoIk1LIik7dGhpcy5zZXRCb3JkZXJBbmRCYWNrZ3JvdW5kQ29sb3JzKG8pO3RoaXMuc2V0Um90YXRpb24obyx0KTt0aGlzLnJlZj1lLnJlZiBpbnN0YW5jZW9mIFJlZj9lLnJlZjpudWxsO3RoaXMuX3N0cmVhbXM9W107dGhpcy5hcHBlYXJhbmNlJiZ0aGlzLl9zdHJlYW1zLnB1c2godGhpcy5hcHBlYXJhbmNlKTtjb25zdCBnPSEhKHRoaXMuZmxhZ3MmaUEpLGM9ISEodGhpcy5mbGFncyZhQSk7dGhpcy5kYXRhPXthbm5vdGF0aW9uRmxhZ3M6dGhpcy5mbGFncyxib3JkZXJTdHlsZTp0aGlzLmJvcmRlclN0eWxlLGNvbG9yOnRoaXMuY29sb3IsYmFja2dyb3VuZENvbG9yOnRoaXMuYmFja2dyb3VuZENvbG9yLGJvcmRlckNvbG9yOnRoaXMuYm9yZGVyQ29sb3Iscm90YXRpb246dGhpcy5yb3RhdGlvbixjb250ZW50c09iajp0aGlzLl9jb250ZW50cyxoYXNBcHBlYXJhbmNlOiEhdGhpcy5hcHBlYXJhbmNlLGlkOmUuaWQsbW9kaWZpY2F0aW9uRGF0ZTp0aGlzLm1vZGlmaWNhdGlvbkRhdGUscmVjdDp0aGlzLnJlY3RhbmdsZSxzdWJ0eXBlOmUuc3VidHlwZSxoYXNPd25DYW52YXM6ITEsbm9Sb3RhdGU6ISEodGhpcy5mbGFncyZlQSksbm9IVE1MOmcmJmMsaXNFZGl0YWJsZTohMSxzdHJ1Y3RQYXJlbnQ6LTF9O2lmKGEuc3RydWN0VHJlZVJvb3Qpe2xldCBpPXQuZ2V0KCJTdHJ1Y3RQYXJlbnQiKTt0aGlzLmRhdGEuc3RydWN0UGFyZW50PWk9TnVtYmVyLmlzSW50ZWdlcihpKSYmaT49MD9pOi0xO2Euc3RydWN0VHJlZVJvb3QuYWRkQW5ub3RhdGlvbklkVG9QYWdlKGUucGFnZVJlZixpKX1pZihlLmNvbGxlY3RGaWVsZHMpe2NvbnN0IGE9dC5nZXQoIktpZHMiKTtpZihBcnJheS5pc0FycmF5KGEpKXtjb25zdCBlPVtdO2Zvcihjb25zdCB0IG9mIGEpdCBpbnN0YW5jZW9mIFJlZiYmZS5wdXNoKHQudG9TdHJpbmcoKSk7MCE9PWUubGVuZ3RoJiYodGhpcy5kYXRhLmtpZElkcz1lKX10aGlzLmRhdGEuYWN0aW9ucz1jb2xsZWN0QWN0aW9ucyhpLHQscEEpO3RoaXMuZGF0YS5maWVsZE5hbWU9dGhpcy5fY29uc3RydWN0RmllbGROYW1lKHQpO3RoaXMuZGF0YS5wYWdlSW5kZXg9ZS5wYWdlSW5kZXh9Y29uc3QgQz10LmdldCgiSVQiKTtDIGluc3RhbmNlb2YgTmFtZSYmKHRoaXMuZGF0YS5pdD1DLm5hbWUpO3RoaXMuX2lzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkPWUuZXZhbHVhdG9yT3B0aW9ucy5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDt0aGlzLl9mYWxsYmFja0ZvbnREaWN0PW51bGw7dGhpcy5fbmVlZEFwcGVhcmFuY2VzPSExfV9oYXNGbGFnKGUsdCl7cmV0dXJuISEoZSZ0KX1fYnVpbGRGbGFncyhlLHQpe2xldHtmbGFnczppfT10aGlzO2lmKHZvaWQgMD09PWUpe2lmKHZvaWQgMD09PXQpcmV0dXJuO3JldHVybiB0P2kmfkFBOmkmfiR8QUF9aWYoZSl7aXw9QUE7cmV0dXJuIHQ/aSZ+dEF8JDppJn4kfHRBfWkmPX4oJHx0QSk7cmV0dXJuIHQ/aSZ+QUE6aXxBQX1faXNWaWV3YWJsZShlKXtyZXR1cm4hdGhpcy5faGFzRmxhZyhlLHopJiYhdGhpcy5faGFzRmxhZyhlLHRBKX1faXNQcmludGFibGUoZSl7cmV0dXJuIHRoaXMuX2hhc0ZsYWcoZSxBQSkmJiF0aGlzLl9oYXNGbGFnKGUsJCkmJiF0aGlzLl9oYXNGbGFnKGUseil9bXVzdEJlVmlld2VkKGUsdCl7Y29uc3QgaT1lPy5nZXQodGhpcy5kYXRhLmlkKT8ubm9WaWV3O3JldHVybiB2b2lkIDAhPT1pPyFpOnRoaXMudmlld2FibGUmJiF0aGlzLl9oYXNGbGFnKHRoaXMuZmxhZ3MsJCl9bXVzdEJlUHJpbnRlZChlKXtjb25zdCB0PWU/LmdldCh0aGlzLmRhdGEuaWQpPy5ub1ByaW50O3JldHVybiB2b2lkIDAhPT10PyF0OnRoaXMucHJpbnRhYmxlfW11c3RCZVZpZXdlZFdoZW5FZGl0aW5nKGUsdD1udWxsKXtyZXR1cm4gZT8hdGhpcy5kYXRhLmlzRWRpdGFibGU6IXQ/Lmhhcyh0aGlzLmRhdGEuaWQpfWdldCB2aWV3YWJsZSgpe3JldHVybiBudWxsIT09dGhpcy5kYXRhLnF1YWRQb2ludHMmJigwPT09dGhpcy5mbGFnc3x8dGhpcy5faXNWaWV3YWJsZSh0aGlzLmZsYWdzKSl9Z2V0IHByaW50YWJsZSgpe3JldHVybiBudWxsIT09dGhpcy5kYXRhLnF1YWRQb2ludHMmJigwIT09dGhpcy5mbGFncyYmdGhpcy5faXNQcmludGFibGUodGhpcy5mbGFncykpfV9wYXJzZVN0cmluZ0hlbHBlcihlKXtjb25zdCB0PSJzdHJpbmciPT10eXBlb2YgZT9zdHJpbmdUb1BERlN0cmluZyhlKToiIjtyZXR1cm57c3RyOnQsZGlyOnQmJiJydGwiPT09YmlkaSh0KS5kaXI/InJ0bCI6Imx0ciJ9fXNldERlZmF1bHRBcHBlYXJhbmNlKGUpe2NvbnN0e2RpY3Q6dCxhbm5vdGF0aW9uR2xvYmFsczppfT1lLGE9Z2V0SW5oZXJpdGFibGVQcm9wZXJ0eSh7ZGljdDp0LGtleToiREEifSl8fGkuYWNyb0Zvcm0uZ2V0KCJEQSIpO3RoaXMuX2RlZmF1bHRBcHBlYXJhbmNlPSJzdHJpbmciPT10eXBlb2YgYT9hOiIiO3RoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGE9cGFyc2VEZWZhdWx0QXBwZWFyYW5jZSh0aGlzLl9kZWZhdWx0QXBwZWFyYW5jZSl9c2V0VGl0bGUoZSl7dGhpcy5fdGl0bGU9dGhpcy5fcGFyc2VTdHJpbmdIZWxwZXIoZSl9c2V0Q29udGVudHMoZSl7dGhpcy5fY29udGVudHM9dGhpcy5fcGFyc2VTdHJpbmdIZWxwZXIoZSl9c2V0TW9kaWZpY2F0aW9uRGF0ZShlKXt0aGlzLm1vZGlmaWNhdGlvbkRhdGU9InN0cmluZyI9PXR5cGVvZiBlP2U6bnVsbH1zZXRGbGFncyhlKXt0aGlzLmZsYWdzPU51bWJlci5pc0ludGVnZXIoZSkmJmU+MD9lOjA7dGhpcy5mbGFncyZ6JiYiQW5ub3RhdGlvbiIhPT10aGlzLmNvbnN0cnVjdG9yLm5hbWUmJih0aGlzLmZsYWdzXj16KX1oYXNGbGFnKGUpe3JldHVybiB0aGlzLl9oYXNGbGFnKHRoaXMuZmxhZ3MsZSl9c2V0UmVjdGFuZ2xlKGUpe3RoaXMucmVjdGFuZ2xlPWxvb2t1cE5vcm1hbFJlY3QoZSxbMCwwLDAsMF0pfXNldENvbG9yKGUpe3RoaXMuY29sb3I9Z2V0UmdiQ29sb3IoZSl9c2V0TGluZUVuZGluZ3MoZSl7dGhpcy5saW5lRW5kaW5ncz1bIk5vbmUiLCJOb25lIl07aWYoQXJyYXkuaXNBcnJheShlKSYmMj09PWUubGVuZ3RoKWZvcihsZXQgdD0wO3Q8Mjt0Kyspe2NvbnN0IGk9ZVt0XTtpZihpIGluc3RhbmNlb2YgTmFtZSlzd2l0Y2goaS5uYW1lKXtjYXNlIk5vbmUiOmNvbnRpbnVlO2Nhc2UiU3F1YXJlIjpjYXNlIkNpcmNsZSI6Y2FzZSJEaWFtb25kIjpjYXNlIk9wZW5BcnJvdyI6Y2FzZSJDbG9zZWRBcnJvdyI6Y2FzZSJCdXR0IjpjYXNlIlJPcGVuQXJyb3ciOmNhc2UiUkNsb3NlZEFycm93IjpjYXNlIlNsYXNoIjp0aGlzLmxpbmVFbmRpbmdzW3RdPWkubmFtZTtjb250aW51ZX13YXJuKGBJZ25vcmluZyBpbnZhbGlkIGxpbmVFbmRpbmc6ICR7aX1gKX19c2V0Um90YXRpb24oZSx0KXt0aGlzLnJvdGF0aW9uPTA7bGV0IGk9ZSBpbnN0YW5jZW9mIERpY3Q/ZS5nZXQoIlIiKXx8MDp0LmdldCgiUm90YXRlIil8fDA7aWYoTnVtYmVyLmlzSW50ZWdlcihpKSYmMCE9PWkpe2klPTM2MDtpPDAmJihpKz0zNjApO2klOTA9PTAmJih0aGlzLnJvdGF0aW9uPWkpfX1zZXRCb3JkZXJBbmRCYWNrZ3JvdW5kQ29sb3JzKGUpe2lmKGUgaW5zdGFuY2VvZiBEaWN0KXt0aGlzLmJvcmRlckNvbG9yPWdldFJnYkNvbG9yKGUuZ2V0QXJyYXkoIkJDIiksbnVsbCk7dGhpcy5iYWNrZ3JvdW5kQ29sb3I9Z2V0UmdiQ29sb3IoZS5nZXRBcnJheSgiQkciKSxudWxsKX1lbHNlIHRoaXMuYm9yZGVyQ29sb3I9dGhpcy5iYWNrZ3JvdW5kQ29sb3I9bnVsbH1zZXRCb3JkZXJTdHlsZShlKXt0aGlzLmJvcmRlclN0eWxlPW5ldyBBbm5vdGF0aW9uQm9yZGVyU3R5bGU7aWYoZSBpbnN0YW5jZW9mIERpY3QpaWYoZS5oYXMoIkJTIikpe2NvbnN0IHQ9ZS5nZXQoIkJTIik7aWYodCBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IGU9dC5nZXQoIlR5cGUiKTtpZighZXx8aXNOYW1lKGUsIkJvcmRlciIpKXt0aGlzLmJvcmRlclN0eWxlLnNldFdpZHRoKHQuZ2V0KCJXIiksdGhpcy5yZWN0YW5nbGUpO3RoaXMuYm9yZGVyU3R5bGUuc2V0U3R5bGUodC5nZXQoIlMiKSk7dGhpcy5ib3JkZXJTdHlsZS5zZXREYXNoQXJyYXkodC5nZXRBcnJheSgiRCIpKX19fWVsc2UgaWYoZS5oYXMoIkJvcmRlciIpKXtjb25zdCB0PWUuZ2V0QXJyYXkoIkJvcmRlciIpO2lmKEFycmF5LmlzQXJyYXkodCkmJnQubGVuZ3RoPj0zKXt0aGlzLmJvcmRlclN0eWxlLnNldEhvcml6b250YWxDb3JuZXJSYWRpdXModFswXSk7dGhpcy5ib3JkZXJTdHlsZS5zZXRWZXJ0aWNhbENvcm5lclJhZGl1cyh0WzFdKTt0aGlzLmJvcmRlclN0eWxlLnNldFdpZHRoKHRbMl0sdGhpcy5yZWN0YW5nbGUpOzQ9PT10Lmxlbmd0aCYmdGhpcy5ib3JkZXJTdHlsZS5zZXREYXNoQXJyYXkodFszXSwhMCl9fWVsc2UgdGhpcy5ib3JkZXJTdHlsZS5zZXRXaWR0aCgwKX1zZXRBcHBlYXJhbmNlKGUpe3RoaXMuYXBwZWFyYW5jZT1udWxsO2NvbnN0IHQ9ZS5nZXQoIkFQIik7aWYoISh0IGluc3RhbmNlb2YgRGljdCkpcmV0dXJuO2NvbnN0IGk9dC5nZXQoIk4iKTtpZihpIGluc3RhbmNlb2YgQmFzZVN0cmVhbSl7dGhpcy5hcHBlYXJhbmNlPWk7cmV0dXJufWlmKCEoaSBpbnN0YW5jZW9mIERpY3QpKXJldHVybjtjb25zdCBhPWUuZ2V0KCJBUyIpO2lmKCEoYSBpbnN0YW5jZW9mIE5hbWUmJmkuaGFzKGEubmFtZSkpKXJldHVybjtjb25zdCByPWkuZ2V0KGEubmFtZSk7ciBpbnN0YW5jZW9mIEJhc2VTdHJlYW0mJih0aGlzLmFwcGVhcmFuY2U9cil9c2V0T3B0aW9uYWxDb250ZW50KGUpe3RoaXMub2M9bnVsbDtjb25zdCB0PWUuZ2V0KCJPQyIpO3QgaW5zdGFuY2VvZiBOYW1lP3dhcm4oInNldE9wdGlvbmFsQ29udGVudDogU3VwcG9ydCBmb3IgL05hbWUtZW50cnkgaXMgbm90IGltcGxlbWVudGVkLiIpOnQgaW5zdGFuY2VvZiBEaWN0JiYodGhpcy5vYz10KX1sb2FkUmVzb3VyY2VzKGUsdCl7cmV0dXJuIHQuZGljdC5nZXRBc3luYygiUmVzb3VyY2VzIikudGhlbigodD0+e2lmKCF0KXJldHVybjtyZXR1cm4gbmV3IE9iamVjdExvYWRlcih0LGUsdC54cmVmKS5sb2FkKCkudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gdH0pKX0pKX1hc3luYyBnZXRPcGVyYXRvckxpc3QoZSx0LGkscil7Y29uc3R7aGFzT3duQ2FudmFzOnMsaWQ6bixyZWN0Om99PXRoaXMuZGF0YTtsZXQgZz10aGlzLmFwcGVhcmFuY2U7Y29uc3QgQz0hIShzJiZpJmMpO2lmKEMmJihvWzBdPT09b1syXXx8b1sxXT09PW9bM10pKXt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPSExO3JldHVybntvcExpc3Q6bmV3IE9wZXJhdG9yTGlzdCxzZXBhcmF0ZUZvcm06ITEsc2VwYXJhdGVDYW52YXM6ITF9fWlmKCFnKXtpZighQylyZXR1cm57b3BMaXN0Om5ldyBPcGVyYXRvckxpc3Qsc2VwYXJhdGVGb3JtOiExLHNlcGFyYXRlQ2FudmFzOiExfTtnPW5ldyBTdHJpbmdTdHJlYW0oIiIpO2cuZGljdD1uZXcgRGljdH1jb25zdCBoPWcuZGljdCxsPWF3YWl0IHRoaXMubG9hZFJlc291cmNlcyhbIkV4dEdTdGF0ZSIsIkNvbG9yU3BhY2UiLCJQYXR0ZXJuIiwiU2hhZGluZyIsIlhPYmplY3QiLCJGb250Il0sZyksUT1sb29rdXBSZWN0KGguZ2V0QXJyYXkoIkJCb3giKSxbMCwwLDEsMV0pLEU9bG9va3VwTWF0cml4KGguZ2V0QXJyYXkoIk1hdHJpeCIpLGEpLHU9Z2V0VHJhbnNmb3JtTWF0cml4KG8sUSxFKSxkPW5ldyBPcGVyYXRvckxpc3Q7bGV0IGY7dGhpcy5vYyYmKGY9YXdhaXQgZS5wYXJzZU1hcmtlZENvbnRlbnRQcm9wcyh0aGlzLm9jLG51bGwpKTt2b2lkIDAhPT1mJiZkLmFkZE9wKFRlLFsiT0MiLGZdKTtkLmFkZE9wKFplLFtuLG8sdSxFLENdKTthd2FpdCBlLmdldE9wZXJhdG9yTGlzdCh7c3RyZWFtOmcsdGFzazp0LHJlc291cmNlczpsLG9wZXJhdG9yTGlzdDpkLGZhbGxiYWNrRm9udERpY3Q6dGhpcy5fZmFsbGJhY2tGb250RGljdH0pO2QuYWRkT3AoVmUsW10pO3ZvaWQgMCE9PWYmJmQuYWRkT3AoS2UsW10pO3RoaXMucmVzZXQoKTtyZXR1cm57b3BMaXN0OmQsc2VwYXJhdGVGb3JtOiExLHNlcGFyYXRlQ2FudmFzOkN9fWFzeW5jIHNhdmUoZSx0LGkpe3JldHVybiBudWxsfWdldCBoYXNUZXh0Q29udGVudCgpe3JldHVybiExfWFzeW5jIGV4dHJhY3RUZXh0Q29udGVudChlLHQsaSl7aWYoIXRoaXMuYXBwZWFyYW5jZSlyZXR1cm47Y29uc3QgYT1hd2FpdCB0aGlzLmxvYWRSZXNvdXJjZXMoWyJFeHRHU3RhdGUiLCJGb250IiwiUHJvcGVydGllcyIsIlhPYmplY3QiXSx0aGlzLmFwcGVhcmFuY2UpLHI9W10scz1bXTtsZXQgbj1udWxsO2NvbnN0IG89e2Rlc2lyZWRTaXplOk1hdGguSW5maW5pdHkscmVhZHk6ITAsZW5xdWV1ZShlLHQpe2Zvcihjb25zdCB0IG9mIGUuaXRlbXMpaWYodm9pZCAwIT09dC5zdHIpe258fD10LnRyYW5zZm9ybS5zbGljZSgtMik7cy5wdXNoKHQuc3RyKTtpZih0Lmhhc0VPTCl7ci5wdXNoKHMuam9pbigiIikudHJpbUVuZCgpKTtzLmxlbmd0aD0wfX19fTthd2FpdCBlLmdldFRleHRDb250ZW50KHtzdHJlYW06dGhpcy5hcHBlYXJhbmNlLHRhc2s6dCxyZXNvdXJjZXM6YSxpbmNsdWRlTWFya2VkQ29udGVudDohMCxrZWVwV2hpdGVTcGFjZTohMCxzaW5rOm8sdmlld0JveDppfSk7dGhpcy5yZXNldCgpO3MubGVuZ3RoJiZyLnB1c2gocy5qb2luKCIiKS50cmltRW5kKCkpO2lmKHIubGVuZ3RoPjF8fHJbMF0pe2NvbnN0IGU9dGhpcy5hcHBlYXJhbmNlLmRpY3QsdD1sb29rdXBSZWN0KGUuZ2V0QXJyYXkoIkJCb3giKSxudWxsKSxpPWxvb2t1cE1hdHJpeChlLmdldEFycmF5KCJNYXRyaXgiKSxudWxsKTt0aGlzLmRhdGEudGV4dFBvc2l0aW9uPXRoaXMuX3RyYW5zZm9ybVBvaW50KG4sdCxpKTt0aGlzLmRhdGEudGV4dENvbnRlbnQ9cn19X3RyYW5zZm9ybVBvaW50KGUsdCxpKXtjb25zdHtyZWN0OmF9PXRoaXMuZGF0YTt0fHw9WzAsMCwxLDFdO2l8fD1bMSwwLDAsMSwwLDBdO2NvbnN0IHI9Z2V0VHJhbnNmb3JtTWF0cml4KGEsdCxpKTtyWzRdLT1hWzBdO3JbNV0tPWFbMV07ZT1VdGlsLmFwcGx5VHJhbnNmb3JtKGUscik7cmV0dXJuIFV0aWwuYXBwbHlUcmFuc2Zvcm0oZSxpKX1nZXRGaWVsZE9iamVjdCgpe3JldHVybiB0aGlzLmRhdGEua2lkSWRzP3tpZDp0aGlzLmRhdGEuaWQsYWN0aW9uczp0aGlzLmRhdGEuYWN0aW9ucyxuYW1lOnRoaXMuZGF0YS5maWVsZE5hbWUsc3Ryb2tlQ29sb3I6dGhpcy5kYXRhLmJvcmRlckNvbG9yLGZpbGxDb2xvcjp0aGlzLmRhdGEuYmFja2dyb3VuZENvbG9yLHR5cGU6IiIsa2lkSWRzOnRoaXMuZGF0YS5raWRJZHMscGFnZTp0aGlzLmRhdGEucGFnZUluZGV4LHJvdGF0aW9uOnRoaXMucm90YXRpb259Om51bGx9cmVzZXQoKXtmb3IoY29uc3QgZSBvZiB0aGlzLl9zdHJlYW1zKWUucmVzZXQoKX1fY29uc3RydWN0RmllbGROYW1lKGUpe2lmKCFlLmhhcygiVCIpJiYhZS5oYXMoIlBhcmVudCIpKXt3YXJuKCJVbmtub3duIGZpZWxkIG5hbWUsIGZhbGxpbmcgYmFjayB0byBlbXB0eSBmaWVsZCBuYW1lLiIpO3JldHVybiIifWlmKCFlLmhhcygiUGFyZW50IikpcmV0dXJuIHN0cmluZ1RvUERGU3RyaW5nKGUuZ2V0KCJUIikpO2NvbnN0IHQ9W107ZS5oYXMoIlQiKSYmdC51bnNoaWZ0KHN0cmluZ1RvUERGU3RyaW5nKGUuZ2V0KCJUIikpKTtsZXQgaT1lO2NvbnN0IGE9bmV3IFJlZlNldDtlLm9iaklkJiZhLnB1dChlLm9iaklkKTtmb3IoO2kuaGFzKCJQYXJlbnQiKTspe2k9aS5nZXQoIlBhcmVudCIpO2lmKCEoaSBpbnN0YW5jZW9mIERpY3QpfHxpLm9iaklkJiZhLmhhcyhpLm9iaklkKSlicmVhaztpLm9iaklkJiZhLnB1dChpLm9iaklkKTtpLmhhcygiVCIpJiZ0LnVuc2hpZnQoc3RyaW5nVG9QREZTdHJpbmcoaS5nZXQoIlQiKSkpfXJldHVybiB0LmpvaW4oIi4iKX19Y2xhc3MgQW5ub3RhdGlvbkJvcmRlclN0eWxle2NvbnN0cnVjdG9yKCl7dGhpcy53aWR0aD0xO3RoaXMucmF3V2lkdGg9MTt0aGlzLnN0eWxlPVFBO3RoaXMuZGFzaEFycmF5PVszXTt0aGlzLmhvcml6b250YWxDb3JuZXJSYWRpdXM9MDt0aGlzLnZlcnRpY2FsQ29ybmVyUmFkaXVzPTB9c2V0V2lkdGgoZSx0PVswLDAsMCwwXSl7aWYoZSBpbnN0YW5jZW9mIE5hbWUpdGhpcy53aWR0aD0wO2Vsc2UgaWYoIm51bWJlciI9PXR5cGVvZiBlKXtpZihlPjApe3RoaXMucmF3V2lkdGg9ZTtjb25zdCBpPSh0WzJdLXRbMF0pLzIsYT0odFszXS10WzFdKS8yO2lmKGk+MCYmYT4wJiYoZT5pfHxlPmEpKXt3YXJuKGBBbm5vdGF0aW9uQm9yZGVyU3R5bGUuc2V0V2lkdGggLSBpZ25vcmluZyB3aWR0aDogJHtlfWApO2U9MX19dGhpcy53aWR0aD1lfX1zZXRTdHlsZShlKXtpZihlIGluc3RhbmNlb2YgTmFtZSlzd2l0Y2goZS5uYW1lKXtjYXNlIlMiOnRoaXMuc3R5bGU9UUE7YnJlYWs7Y2FzZSJEIjp0aGlzLnN0eWxlPUVBO2JyZWFrO2Nhc2UiQiI6dGhpcy5zdHlsZT11QTticmVhaztjYXNlIkkiOnRoaXMuc3R5bGU9ZEE7YnJlYWs7Y2FzZSJVIjp0aGlzLnN0eWxlPWZBfX1zZXREYXNoQXJyYXkoZSx0PSExKXtpZihBcnJheS5pc0FycmF5KGUpKXtsZXQgaT0hMCxhPSEwO2Zvcihjb25zdCB0IG9mIGUpe2lmKCEoK3Q+PTApKXtpPSExO2JyZWFrfXQ+MCYmKGE9ITEpfWlmKDA9PT1lLmxlbmd0aHx8aSYmIWEpe3RoaXMuZGFzaEFycmF5PWU7dCYmdGhpcy5zZXRTdHlsZShOYW1lLmdldCgiRCIpKX1lbHNlIHRoaXMud2lkdGg9MH1lbHNlIGUmJih0aGlzLndpZHRoPTApfXNldEhvcml6b250YWxDb3JuZXJSYWRpdXMoZSl7TnVtYmVyLmlzSW50ZWdlcihlKSYmKHRoaXMuaG9yaXpvbnRhbENvcm5lclJhZGl1cz1lKX1zZXRWZXJ0aWNhbENvcm5lclJhZGl1cyhlKXtOdW1iZXIuaXNJbnRlZ2VyKGUpJiYodGhpcy52ZXJ0aWNhbENvcm5lclJhZGl1cz1lKX19Y2xhc3MgTWFya3VwQW5ub3RhdGlvbiBleHRlbmRzIEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0fT1lO2lmKHQuaGFzKCJJUlQiKSl7Y29uc3QgZT10LmdldFJhdygiSVJUIik7dGhpcy5kYXRhLmluUmVwbHlUbz1lIGluc3RhbmNlb2YgUmVmP2UudG9TdHJpbmcoKTpudWxsO2NvbnN0IGk9dC5nZXQoIlJUIik7dGhpcy5kYXRhLnJlcGx5VHlwZT1pIGluc3RhbmNlb2YgTmFtZT9pLm5hbWU6X31sZXQgaT1udWxsO2lmKHRoaXMuZGF0YS5yZXBseVR5cGU9PT1WKXtjb25zdCBlPXQuZ2V0KCJJUlQiKTt0aGlzLnNldFRpdGxlKGUuZ2V0KCJUIikpO3RoaXMuZGF0YS50aXRsZU9iaj10aGlzLl90aXRsZTt0aGlzLnNldENvbnRlbnRzKGUuZ2V0KCJDb250ZW50cyIpKTt0aGlzLmRhdGEuY29udGVudHNPYmo9dGhpcy5fY29udGVudHM7aWYoZS5oYXMoIkNyZWF0aW9uRGF0ZSIpKXt0aGlzLnNldENyZWF0aW9uRGF0ZShlLmdldCgiQ3JlYXRpb25EYXRlIikpO3RoaXMuZGF0YS5jcmVhdGlvbkRhdGU9dGhpcy5jcmVhdGlvbkRhdGV9ZWxzZSB0aGlzLmRhdGEuY3JlYXRpb25EYXRlPW51bGw7aWYoZS5oYXMoIk0iKSl7dGhpcy5zZXRNb2RpZmljYXRpb25EYXRlKGUuZ2V0KCJNIikpO3RoaXMuZGF0YS5tb2RpZmljYXRpb25EYXRlPXRoaXMubW9kaWZpY2F0aW9uRGF0ZX1lbHNlIHRoaXMuZGF0YS5tb2RpZmljYXRpb25EYXRlPW51bGw7aT1lLmdldFJhdygiUG9wdXAiKTtpZihlLmhhcygiQyIpKXt0aGlzLnNldENvbG9yKGUuZ2V0QXJyYXkoIkMiKSk7dGhpcy5kYXRhLmNvbG9yPXRoaXMuY29sb3J9ZWxzZSB0aGlzLmRhdGEuY29sb3I9bnVsbH1lbHNle3RoaXMuZGF0YS50aXRsZU9iaj10aGlzLl90aXRsZTt0aGlzLnNldENyZWF0aW9uRGF0ZSh0LmdldCgiQ3JlYXRpb25EYXRlIikpO3RoaXMuZGF0YS5jcmVhdGlvbkRhdGU9dGhpcy5jcmVhdGlvbkRhdGU7aT10LmdldFJhdygiUG9wdXAiKTt0LmhhcygiQyIpfHwodGhpcy5kYXRhLmNvbG9yPW51bGwpfXRoaXMuZGF0YS5wb3B1cFJlZj1pIGluc3RhbmNlb2YgUmVmP2kudG9TdHJpbmcoKTpudWxsO3QuaGFzKCJSQyIpJiYodGhpcy5kYXRhLnJpY2hUZXh0PVhGQUZhY3RvcnkuZ2V0UmljaFRleHRBc0h0bWwodC5nZXQoIlJDIikpKX1zZXRDcmVhdGlvbkRhdGUoZSl7dGhpcy5jcmVhdGlvbkRhdGU9InN0cmluZyI9PXR5cGVvZiBlP2U6bnVsbH1fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6ZSxleHRyYTp0LHN0cm9rZUNvbG9yOmksZmlsbENvbG9yOmEsYmxlbmRNb2RlOnIsc3Ryb2tlQWxwaGE6cyxmaWxsQWxwaGE6bixwb2ludHNDYWxsYmFjazpvfSl7bGV0IGc9TnVtYmVyLk1BWF9WQUxVRSxjPU51bWJlci5NQVhfVkFMVUUsQz1OdW1iZXIuTUlOX1ZBTFVFLGg9TnVtYmVyLk1JTl9WQUxVRTtjb25zdCBsPVsicSJdO3QmJmwucHVzaCh0KTtpJiZsLnB1c2goYCR7aVswXX0gJHtpWzFdfSAke2lbMl19IFJHYCk7YSYmbC5wdXNoKGAke2FbMF19ICR7YVsxXX0gJHthWzJdfSByZ2ApO2xldCBRPXRoaXMuZGF0YS5xdWFkUG9pbnRzO1F8fChRPUZsb2F0MzJBcnJheS5mcm9tKFt0aGlzLnJlY3RhbmdsZVswXSx0aGlzLnJlY3RhbmdsZVszXSx0aGlzLnJlY3RhbmdsZVsyXSx0aGlzLnJlY3RhbmdsZVszXSx0aGlzLnJlY3RhbmdsZVswXSx0aGlzLnJlY3RhbmdsZVsxXSx0aGlzLnJlY3RhbmdsZVsyXSx0aGlzLnJlY3RhbmdsZVsxXV0pKTtmb3IobGV0IGU9MCx0PVEubGVuZ3RoO2U8dDtlKz04KXtjb25zdFt0LGksYSxyXT1vKGwsUS5zdWJhcnJheShlLGUrOCkpO2c9TWF0aC5taW4oZyx0KTtDPU1hdGgubWF4KEMsaSk7Yz1NYXRoLm1pbihjLGEpO2g9TWF0aC5tYXgoaCxyKX1sLnB1c2goIlEiKTtjb25zdCBFPW5ldyBEaWN0KGUpLHU9bmV3IERpY3QoZSk7dS5zZXQoIlN1YnR5cGUiLE5hbWUuZ2V0KCJGb3JtIikpO2NvbnN0IGQ9bmV3IFN0cmluZ1N0cmVhbShsLmpvaW4oIiAiKSk7ZC5kaWN0PXU7RS5zZXQoIkZtMCIsZCk7Y29uc3QgZj1uZXcgRGljdChlKTtyJiZmLnNldCgiQk0iLE5hbWUuZ2V0KHIpKTsibnVtYmVyIj09dHlwZW9mIHMmJmYuc2V0KCJDQSIscyk7Im51bWJlciI9PXR5cGVvZiBuJiZmLnNldCgiY2EiLG4pO2NvbnN0IHA9bmV3IERpY3QoZSk7cC5zZXQoIkdTMCIsZik7Y29uc3QgbT1uZXcgRGljdChlKTttLnNldCgiRXh0R1N0YXRlIixwKTttLnNldCgiWE9iamVjdCIsRSk7Y29uc3QgeT1uZXcgRGljdChlKTt5LnNldCgiUmVzb3VyY2VzIixtKTtjb25zdCB3PXRoaXMuZGF0YS5yZWN0PVtnLGMsQyxoXTt5LnNldCgiQkJveCIsdyk7dGhpcy5hcHBlYXJhbmNlPW5ldyBTdHJpbmdTdHJlYW0oIi9HUzAgZ3MgL0ZtMCBEbyIpO3RoaXMuYXBwZWFyYW5jZS5kaWN0PXk7dGhpcy5fc3RyZWFtcy5wdXNoKHRoaXMuYXBwZWFyYW5jZSxkKX1zdGF0aWMgYXN5bmMgY3JlYXRlTmV3QW5ub3RhdGlvbihlLHQsaSxhKXt0LnJlZnx8KHQucmVmPWUuZ2V0TmV3VGVtcG9yYXJ5UmVmKCkpO2NvbnN0IHI9dC5yZWYscz1hd2FpdCB0aGlzLmNyZWF0ZU5ld0FwcGVhcmFuY2VTdHJlYW0odCxlLGEpLG49W107bGV0IG87aWYocyl7Y29uc3QgYT1lLmdldE5ld1RlbXBvcmFyeVJlZigpO289dGhpcy5jcmVhdGVOZXdEaWN0KHQsZSx7YXBSZWY6YX0pO2F3YWl0IHdyaXRlT2JqZWN0KGEscyxuLGUpO2kucHVzaCh7cmVmOmEsZGF0YTpuLmpvaW4oIiIpfSl9ZWxzZSBvPXRoaXMuY3JlYXRlTmV3RGljdCh0LGUse30pO051bWJlci5pc0ludGVnZXIodC5wYXJlbnRUcmVlSWQpJiZvLnNldCgiU3RydWN0UGFyZW50Iix0LnBhcmVudFRyZWVJZCk7bi5sZW5ndGg9MDthd2FpdCB3cml0ZU9iamVjdChyLG8sbixlKTtyZXR1cm57cmVmOnIsZGF0YTpuLmpvaW4oIiIpfX1zdGF0aWMgYXN5bmMgY3JlYXRlTmV3UHJpbnRBbm5vdGF0aW9uKGUsdCxpLGEpe2NvbnN0IHI9YXdhaXQgdGhpcy5jcmVhdGVOZXdBcHBlYXJhbmNlU3RyZWFtKGksdCxhKSxzPXRoaXMuY3JlYXRlTmV3RGljdChpLHQscj97YXA6cn06e30pLG49bmV3IHRoaXMucHJvdG90eXBlLmNvbnN0cnVjdG9yKHtkaWN0OnMseHJlZjp0LGFubm90YXRpb25HbG9iYWxzOmUsZXZhbHVhdG9yT3B0aW9uczphLmV2YWx1YXRvck9wdGlvbnN9KTtpLnJlZiYmKG4ucmVmPW4ucmVmVG9SZXBsYWNlPWkucmVmKTtyZXR1cm4gbn19Y2xhc3MgV2lkZ2V0QW5ub3RhdGlvbiBleHRlbmRzIEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0LHhyZWY6aSxhbm5vdGF0aW9uR2xvYmFsczphfT1lLHI9dGhpcy5kYXRhO3RoaXMuX25lZWRBcHBlYXJhbmNlcz1lLm5lZWRBcHBlYXJhbmNlcztyLmFubm90YXRpb25UeXBlPVo7dm9pZCAwPT09ci5maWVsZE5hbWUmJihyLmZpZWxkTmFtZT10aGlzLl9jb25zdHJ1Y3RGaWVsZE5hbWUodCkpO3ZvaWQgMD09PXIuYWN0aW9ucyYmKHIuYWN0aW9ucz1jb2xsZWN0QWN0aW9ucyhpLHQscEEpKTtsZXQgcz1nZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0OnQsa2V5OiJWIixnZXRBcnJheTohMH0pO3IuZmllbGRWYWx1ZT10aGlzLl9kZWNvZGVGb3JtVmFsdWUocyk7Y29uc3Qgbj1nZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0OnQsa2V5OiJEViIsZ2V0QXJyYXk6ITB9KTtyLmRlZmF1bHRGaWVsZFZhbHVlPXRoaXMuX2RlY29kZUZvcm1WYWx1ZShuKTtpZih2b2lkIDA9PT1zJiZhLnhmYURhdGFzZXRzKXtjb25zdCBlPXRoaXMuX3RpdGxlLnN0cjtpZihlKXt0aGlzLl9oYXNWYWx1ZUZyb21YRkE9ITA7ci5maWVsZFZhbHVlPXM9YS54ZmFEYXRhc2V0cy5nZXRWYWx1ZShlKX19dm9pZCAwPT09cyYmbnVsbCE9PXIuZGVmYXVsdEZpZWxkVmFsdWUmJihyLmZpZWxkVmFsdWU9ci5kZWZhdWx0RmllbGRWYWx1ZSk7ci5hbHRlcm5hdGl2ZVRleHQ9c3RyaW5nVG9QREZTdHJpbmcodC5nZXQoIlRVIil8fCIiKTt0aGlzLnNldERlZmF1bHRBcHBlYXJhbmNlKGUpO3IuaGFzQXBwZWFyYW5jZXx8PXRoaXMuX25lZWRBcHBlYXJhbmNlcyYmdm9pZCAwIT09ci5maWVsZFZhbHVlJiZudWxsIT09ci5maWVsZFZhbHVlO2NvbnN0IG89Z2V0SW5oZXJpdGFibGVQcm9wZXJ0eSh7ZGljdDp0LGtleToiRlQifSk7ci5maWVsZFR5cGU9byBpbnN0YW5jZW9mIE5hbWU/by5uYW1lOm51bGw7Y29uc3QgZz1nZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0OnQsa2V5OiJEUiJ9KSxjPWEuYWNyb0Zvcm0uZ2V0KCJEUiIpLEM9dGhpcy5hcHBlYXJhbmNlPy5kaWN0LmdldCgiUmVzb3VyY2VzIik7dGhpcy5fZmllbGRSZXNvdXJjZXM9e2xvY2FsUmVzb3VyY2VzOmcsYWNyb0Zvcm1SZXNvdXJjZXM6YyxhcHBlYXJhbmNlUmVzb3VyY2VzOkMsbWVyZ2VkUmVzb3VyY2VzOkRpY3QubWVyZ2Uoe3hyZWY6aSxkaWN0QXJyYXk6W2csQyxjXSxtZXJnZVN1YkRpY3RzOiEwfSl9O3IuZmllbGRGbGFncz1nZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0OnQsa2V5OiJGZiJ9KTsoIU51bWJlci5pc0ludGVnZXIoci5maWVsZEZsYWdzKXx8ci5maWVsZEZsYWdzPDApJiYoci5maWVsZEZsYWdzPTApO3IucmVhZE9ubHk9dGhpcy5oYXNGaWVsZEZsYWcockEpO3IucmVxdWlyZWQ9dGhpcy5oYXNGaWVsZEZsYWcoc0EpO3IuaGlkZGVuPXRoaXMuX2hhc0ZsYWcoci5hbm5vdGF0aW9uRmxhZ3MsJCl8fHRoaXMuX2hhc0ZsYWcoci5hbm5vdGF0aW9uRmxhZ3MsdEEpfV9kZWNvZGVGb3JtVmFsdWUoZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/ZS5maWx0ZXIoKGU9PiJzdHJpbmciPT10eXBlb2YgZSkpLm1hcCgoZT0+c3RyaW5nVG9QREZTdHJpbmcoZSkpKTplIGluc3RhbmNlb2YgTmFtZT9zdHJpbmdUb1BERlN0cmluZyhlLm5hbWUpOiJzdHJpbmciPT10eXBlb2YgZT9zdHJpbmdUb1BERlN0cmluZyhlKTpudWxsfWhhc0ZpZWxkRmxhZyhlKXtyZXR1cm4hISh0aGlzLmRhdGEuZmllbGRGbGFncyZlKX1faXNWaWV3YWJsZShlKXtyZXR1cm4hMH1tdXN0QmVWaWV3ZWQoZSx0KXtyZXR1cm4gdD90aGlzLnZpZXdhYmxlOnN1cGVyLm11c3RCZVZpZXdlZChlLHQpJiYhdGhpcy5faGFzRmxhZyh0aGlzLmZsYWdzLHRBKX1nZXRSb3RhdGlvbk1hdHJpeChlKXtsZXQgdD1lPy5nZXQodGhpcy5kYXRhLmlkKT8ucm90YXRpb247dm9pZCAwPT09dCYmKHQ9dGhpcy5yb3RhdGlvbik7aWYoMD09PXQpcmV0dXJuIGE7cmV0dXJuIGdldFJvdGF0aW9uTWF0cml4KHQsdGhpcy5kYXRhLnJlY3RbMl0tdGhpcy5kYXRhLnJlY3RbMF0sdGhpcy5kYXRhLnJlY3RbM10tdGhpcy5kYXRhLnJlY3RbMV0pfWdldEJvcmRlckFuZEJhY2tncm91bmRBcHBlYXJhbmNlcyhlKXtsZXQgdD1lPy5nZXQodGhpcy5kYXRhLmlkKT8ucm90YXRpb247dm9pZCAwPT09dCYmKHQ9dGhpcy5yb3RhdGlvbik7aWYoIXRoaXMuYmFja2dyb3VuZENvbG9yJiYhdGhpcy5ib3JkZXJDb2xvcilyZXR1cm4iIjtjb25zdCBpPXRoaXMuZGF0YS5yZWN0WzJdLXRoaXMuZGF0YS5yZWN0WzBdLGE9dGhpcy5kYXRhLnJlY3RbM10tdGhpcy5kYXRhLnJlY3RbMV0scj0wPT09dHx8MTgwPT09dD9gMCAwICR7aX0gJHthfSByZWA6YDAgMCAke2F9ICR7aX0gcmVgO2xldCBzPSIiO3RoaXMuYmFja2dyb3VuZENvbG9yJiYocz1gJHtnZXRQZGZDb2xvcih0aGlzLmJhY2tncm91bmRDb2xvciwhMCl9ICR7cn0gZiBgKTtpZih0aGlzLmJvcmRlckNvbG9yKXtzKz1gJHt0aGlzLmJvcmRlclN0eWxlLndpZHRofHwxfSB3ICR7Z2V0UGRmQ29sb3IodGhpcy5ib3JkZXJDb2xvciwhMSl9ICR7cn0gUyBgfXJldHVybiBzfWFzeW5jIGdldE9wZXJhdG9yTGlzdChlLHQsaSxhKXtpZihpJmwmJiEodGhpcyBpbnN0YW5jZW9mIFNpZ25hdHVyZVdpZGdldEFubm90YXRpb24pJiYhdGhpcy5kYXRhLm5vSFRNTCYmIXRoaXMuZGF0YS5oYXNPd25DYW52YXMpcmV0dXJue29wTGlzdDpuZXcgT3BlcmF0b3JMaXN0LHNlcGFyYXRlRm9ybTohMCxzZXBhcmF0ZUNhbnZhczohMX07aWYoIXRoaXMuX2hhc1RleHQpcmV0dXJuIHN1cGVyLmdldE9wZXJhdG9yTGlzdChlLHQsaSxhKTtjb25zdCByPWF3YWl0IHRoaXMuX2dldEFwcGVhcmFuY2UoZSx0LGksYSk7aWYodGhpcy5hcHBlYXJhbmNlJiZudWxsPT09cilyZXR1cm4gc3VwZXIuZ2V0T3BlcmF0b3JMaXN0KGUsdCxpLGEpO2NvbnN0IHM9bmV3IE9wZXJhdG9yTGlzdDtpZighdGhpcy5fZGVmYXVsdEFwcGVhcmFuY2V8fG51bGw9PT1yKXJldHVybntvcExpc3Q6cyxzZXBhcmF0ZUZvcm06ITEsc2VwYXJhdGVDYW52YXM6ITF9O2NvbnN0IG49ISEodGhpcy5kYXRhLmhhc093bkNhbnZhcyYmaSZjKSxvPVswLDAsdGhpcy5kYXRhLnJlY3RbMl0tdGhpcy5kYXRhLnJlY3RbMF0sdGhpcy5kYXRhLnJlY3RbM10tdGhpcy5kYXRhLnJlY3RbMV1dLGc9Z2V0VHJhbnNmb3JtTWF0cml4KHRoaXMuZGF0YS5yZWN0LG8sWzEsMCwwLDEsMCwwXSk7bGV0IEM7dGhpcy5vYyYmKEM9YXdhaXQgZS5wYXJzZU1hcmtlZENvbnRlbnRQcm9wcyh0aGlzLm9jLG51bGwpKTt2b2lkIDAhPT1DJiZzLmFkZE9wKFRlLFsiT0MiLENdKTtzLmFkZE9wKFplLFt0aGlzLmRhdGEuaWQsdGhpcy5kYXRhLnJlY3QsZyx0aGlzLmdldFJvdGF0aW9uTWF0cml4KGEpLG5dKTtjb25zdCBoPW5ldyBTdHJpbmdTdHJlYW0ocik7YXdhaXQgZS5nZXRPcGVyYXRvckxpc3Qoe3N0cmVhbTpoLHRhc2s6dCxyZXNvdXJjZXM6dGhpcy5fZmllbGRSZXNvdXJjZXMubWVyZ2VkUmVzb3VyY2VzLG9wZXJhdG9yTGlzdDpzfSk7cy5hZGRPcChWZSxbXSk7dm9pZCAwIT09QyYmcy5hZGRPcChLZSxbXSk7cmV0dXJue29wTGlzdDpzLHNlcGFyYXRlRm9ybTohMSxzZXBhcmF0ZUNhbnZhczpufX1fZ2V0TUtEaWN0KGUpe2NvbnN0IHQ9bmV3IERpY3QobnVsbCk7ZSYmdC5zZXQoIlIiLGUpO3RoaXMuYm9yZGVyQ29sb3ImJnQuc2V0KCJCQyIsZ2V0UGRmQ29sb3JBcnJheSh0aGlzLmJvcmRlckNvbG9yKSk7dGhpcy5iYWNrZ3JvdW5kQ29sb3ImJnQuc2V0KCJCRyIsZ2V0UGRmQ29sb3JBcnJheSh0aGlzLmJhY2tncm91bmRDb2xvcikpO3JldHVybiB0LnNpemU+MD90Om51bGx9YW1lbmRTYXZlZERpY3QoZSx0KXt9YXN5bmMgc2F2ZShlLHQsaSl7Y29uc3Qgcj1pPy5nZXQodGhpcy5kYXRhLmlkKSxzPXRoaXMuX2J1aWxkRmxhZ3Mocj8ubm9WaWV3LHI/Lm5vUHJpbnQpO2xldCBuPXI/LnZhbHVlLG89cj8ucm90YXRpb247aWYobj09PXRoaXMuZGF0YS5maWVsZFZhbHVlfHx2b2lkIDA9PT1uKXtpZighdGhpcy5faGFzVmFsdWVGcm9tWEZBJiZ2b2lkIDA9PT1vJiZ2b2lkIDA9PT1zKXJldHVybiBudWxsO258fD10aGlzLmRhdGEuZmllbGRWYWx1ZX1pZih2b2lkIDA9PT1vJiYhdGhpcy5faGFzVmFsdWVGcm9tWEZBJiZBcnJheS5pc0FycmF5KG4pJiZBcnJheS5pc0FycmF5KHRoaXMuZGF0YS5maWVsZFZhbHVlKSYmaXNBcnJheUVxdWFsKG4sdGhpcy5kYXRhLmZpZWxkVmFsdWUpJiZ2b2lkIDA9PT1zKXJldHVybiBudWxsO3ZvaWQgMD09PW8mJihvPXRoaXMucm90YXRpb24pO2xldCBnPW51bGw7aWYoIXRoaXMuX25lZWRBcHBlYXJhbmNlcyl7Zz1hd2FpdCB0aGlzLl9nZXRBcHBlYXJhbmNlKGUsdCxoLGkpO2lmKG51bGw9PT1nJiZ2b2lkIDA9PT1zKXJldHVybiBudWxsfWxldCBjPSExO2lmKGc/Lm5lZWRBcHBlYXJhbmNlcyl7Yz0hMDtnPW51bGx9Y29uc3R7eHJlZjpDfT1lLGw9Qy5mZXRjaElmUmVmKHRoaXMucmVmKTtpZighKGwgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm4gbnVsbDtjb25zdCBRPW5ldyBEaWN0KEMpO2Zvcihjb25zdCBlIG9mIGwuZ2V0S2V5cygpKSJBUCIhPT1lJiZRLnNldChlLGwuZ2V0UmF3KGUpKTtpZih2b2lkIDAhPT1zKXtRLnNldCgiRiIscyk7aWYobnVsbD09PWcmJiFjKXtjb25zdCBlPWwuZ2V0UmF3KCJBUCIpO2UmJlEuc2V0KCJBUCIsZSl9fWNvbnN0IEU9e3BhdGg6dGhpcy5kYXRhLmZpZWxkTmFtZSx2YWx1ZTpufTtRLnNldCgiViIsQXJyYXkuaXNBcnJheShuKT9uLm1hcChzdHJpbmdUb0FzY2lpT3JVVEYxNkJFKTpzdHJpbmdUb0FzY2lpT3JVVEYxNkJFKG4pKTt0aGlzLmFtZW5kU2F2ZWREaWN0KGksUSk7Y29uc3QgdT10aGlzLl9nZXRNS0RpY3Qobyk7dSYmUS5zZXQoIk1LIix1KTtjb25zdCBkPVtdLGY9W3tyZWY6dGhpcy5yZWYsZGF0YToiIix4ZmE6RSxuZWVkQXBwZWFyYW5jZXM6Y31dO2lmKG51bGwhPT1nKXtjb25zdCBlPUMuZ2V0TmV3VGVtcG9yYXJ5UmVmKCksdD1uZXcgRGljdChDKTtRLnNldCgiQVAiLHQpO3Quc2V0KCJOIixlKTtjb25zdCByPXRoaXMuX2dldFNhdmVGaWVsZFJlc291cmNlcyhDKSxzPW5ldyBTdHJpbmdTdHJlYW0oZyksbj1zLmRpY3Q9bmV3IERpY3QoQyk7bi5zZXQoIlN1YnR5cGUiLE5hbWUuZ2V0KCJGb3JtIikpO24uc2V0KCJSZXNvdXJjZXMiLHIpO24uc2V0KCJCQm94IixbMCwwLHRoaXMuZGF0YS5yZWN0WzJdLXRoaXMuZGF0YS5yZWN0WzBdLHRoaXMuZGF0YS5yZWN0WzNdLXRoaXMuZGF0YS5yZWN0WzFdXSk7Y29uc3Qgbz10aGlzLmdldFJvdGF0aW9uTWF0cml4KGkpO28hPT1hJiZuLnNldCgiTWF0cml4IixvKTthd2FpdCB3cml0ZU9iamVjdChlLHMsZCxDKTtmLnB1c2goe3JlZjplLGRhdGE6ZC5qb2luKCIiKSx4ZmE6bnVsbCxuZWVkQXBwZWFyYW5jZXM6ITF9KTtkLmxlbmd0aD0wfVEuc2V0KCJNIixgRDoke2dldE1vZGlmaWNhdGlvbkRhdGUoKX1gKTthd2FpdCB3cml0ZU9iamVjdCh0aGlzLnJlZixRLGQsQyk7ZlswXS5kYXRhPWQuam9pbigiIik7cmV0dXJuIGZ9YXN5bmMgX2dldEFwcGVhcmFuY2UoZSx0LGksYSl7aWYodGhpcy5oYXNGaWVsZEZsYWcob0EpKXJldHVybiBudWxsO2NvbnN0IHI9YT8uZ2V0KHRoaXMuZGF0YS5pZCk7bGV0IHMsbjtpZihyKXtzPXIuZm9ybWF0dGVkVmFsdWV8fHIudmFsdWU7bj1yLnJvdGF0aW9ufWlmKHZvaWQgMD09PW4mJnZvaWQgMD09PXMmJiF0aGlzLl9uZWVkQXBwZWFyYW5jZXMmJighdGhpcy5faGFzVmFsdWVGcm9tWEZBfHx0aGlzLmFwcGVhcmFuY2UpKXJldHVybiBudWxsO2NvbnN0IGc9dGhpcy5nZXRCb3JkZXJBbmRCYWNrZ3JvdW5kQXBwZWFyYW5jZXMoYSk7aWYodm9pZCAwPT09cyl7cz10aGlzLmRhdGEuZmllbGRWYWx1ZTtpZighcylyZXR1cm5gL1R4IEJNQyBxICR7Z31RIEVNQ2B9QXJyYXkuaXNBcnJheShzKSYmMT09PXMubGVuZ3RoJiYocz1zWzBdKTthc3NlcnQoInN0cmluZyI9PXR5cGVvZiBzLCJFeHBlY3RlZCBgdmFsdWVgIHRvIGJlIGEgc3RyaW5nLiIpO3M9cy50cmltRW5kKCk7aWYodGhpcy5kYXRhLmNvbWJvKXtjb25zdCBlPXRoaXMuZGF0YS5vcHRpb25zLmZpbmQoKCh7ZXhwb3J0VmFsdWU6ZX0pPT5zPT09ZSkpO3M9ZT8uZGlzcGxheVZhbHVlfHxzfWlmKCIiPT09cylyZXR1cm5gL1R4IEJNQyBxICR7Z31RIEVNQ2A7dm9pZCAwPT09biYmKG49dGhpcy5yb3RhdGlvbik7bGV0IGMsQz0tMTtpZih0aGlzLmRhdGEubXVsdGlMaW5lKXtjPXMuc3BsaXQoL1xyXG4/fFxuLykubWFwKChlPT5lLm5vcm1hbGl6ZSgiTkZDIikpKTtDPWMubGVuZ3RofWVsc2UgYz1bcy5yZXBsYWNlKC9cclxuP3xcbi8sIiIpLm5vcm1hbGl6ZSgiTkZDIildO2xldCBsPXRoaXMuZGF0YS5yZWN0WzNdLXRoaXMuZGF0YS5yZWN0WzFdLFE9dGhpcy5kYXRhLnJlY3RbMl0tdGhpcy5kYXRhLnJlY3RbMF07OTAhPT1uJiYyNzAhPT1ufHwoW1EsbF09W2wsUV0pO3RoaXMuX2RlZmF1bHRBcHBlYXJhbmNlfHwodGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YT1wYXJzZURlZmF1bHRBcHBlYXJhbmNlKHRoaXMuX2RlZmF1bHRBcHBlYXJhbmNlPSIvSGVsdmV0aWNhIDAgVGYgMCBnIikpO2xldCBFLHUsZCxmPWF3YWl0IFdpZGdldEFubm90YXRpb24uX2dldEZvbnREYXRhKGUsdCx0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhLHRoaXMuX2ZpZWxkUmVzb3VyY2VzLm1lcmdlZFJlc291cmNlcyk7Y29uc3QgcD1bXTtsZXQgbT0hMTtmb3IoY29uc3QgZSBvZiBjKXtjb25zdCB0PWYuZW5jb2RlU3RyaW5nKGUpO3QubGVuZ3RoPjEmJihtPSEwKTtwLnB1c2godC5qb2luKCIiKSl9aWYobSYmaSZoKXJldHVybntuZWVkQXBwZWFyYW5jZXM6ITB9O2lmKG0mJnRoaXMuX2lzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkKXtjb25zdCBpPXRoaXMuZGF0YS5jb21iPyJtb25vc3BhY2UiOiJzYW5zLXNlcmlmIixhPW5ldyBGYWtlVW5pY29kZUZvbnQoZS54cmVmLGkpLHI9YS5jcmVhdGVGb250UmVzb3VyY2VzKGMuam9pbigiIikpLG49ci5nZXRSYXcoIkZvbnQiKTtpZih0aGlzLl9maWVsZFJlc291cmNlcy5tZXJnZWRSZXNvdXJjZXMuaGFzKCJGb250Iikpe2NvbnN0IGU9dGhpcy5fZmllbGRSZXNvdXJjZXMubWVyZ2VkUmVzb3VyY2VzLmdldCgiRm9udCIpO2Zvcihjb25zdCB0IG9mIG4uZ2V0S2V5cygpKWUuc2V0KHQsbi5nZXRSYXcodCkpfWVsc2UgdGhpcy5fZmllbGRSZXNvdXJjZXMubWVyZ2VkUmVzb3VyY2VzLnNldCgiRm9udCIsbik7Y29uc3Qgbz1hLmZvbnROYW1lLm5hbWU7Zj1hd2FpdCBXaWRnZXRBbm5vdGF0aW9uLl9nZXRGb250RGF0YShlLHQse2ZvbnROYW1lOm8sZm9udFNpemU6MH0scik7Zm9yKGxldCBlPTAsdD1wLmxlbmd0aDtlPHQ7ZSsrKXBbZV09c3RyaW5nVG9VVEYxNlN0cmluZyhjW2VdKTtjb25zdCBnPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhKTt0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhLmZvbnRTaXplPTA7dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YS5mb250TmFtZT1vO1tFLHUsZF09dGhpcy5fY29tcHV0ZUZvbnRTaXplKGwtMixRLTQscyxmLEMpO3RoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGE9Z31lbHNle3RoaXMuX2lzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkfHx3YXJuKCJfZ2V0QXBwZWFyYW5jZTogT2Zmc2NyZWVuQ2FudmFzIGlzIG5vdCBzdXBwb3J0ZWQsIGFubm90YXRpb24gbWF5IG5vdCByZW5kZXIgY29ycmVjdGx5LiIpO1tFLHUsZF09dGhpcy5fY29tcHV0ZUZvbnRTaXplKGwtMixRLTQscyxmLEMpfWxldCB5PWYuZGVzY2VudDt5PWlzTmFOKHkpP28qZDpNYXRoLm1heChvKmQsTWF0aC5hYnMoeSkqdSk7Y29uc3Qgdz1NYXRoLm1pbihNYXRoLmZsb29yKChsLXUpLzIpLDEpLGI9dGhpcy5kYXRhLnRleHRBbGlnbm1lbnQ7aWYodGhpcy5kYXRhLm11bHRpTGluZSlyZXR1cm4gdGhpcy5fZ2V0TXVsdGlsaW5lQXBwZWFyYW5jZShFLHAsZix1LFEsbCxiLDIsdyx5LGQsYSk7aWYodGhpcy5kYXRhLmNvbWIpcmV0dXJuIHRoaXMuX2dldENvbWJBcHBlYXJhbmNlKEUsZixwWzBdLHUsUSxsLDIsdyx5LGQsYSk7Y29uc3QgRD13K3k7aWYoMD09PWJ8fGI+MilyZXR1cm5gL1R4IEJNQyBxICR7Z31CVCBgK0UrYCAxIDAgMCAxICR7bnVtYmVyVG9TdHJpbmcoMil9ICR7bnVtYmVyVG9TdHJpbmcoRCl9IFRtICgke2VzY2FwZVN0cmluZyhwWzBdKX0pIFRqIEVUIFEgRU1DYDtyZXR1cm5gL1R4IEJNQyBxICR7Z31CVCBgK0UrYCAxIDAgMCAxIDAgMCBUbSAke3RoaXMuX3JlbmRlclRleHQocFswXSxmLHUsUSxiLHtzaGlmdDowfSwyLEQpfSBFVCBRIEVNQ2B9c3RhdGljIGFzeW5jIF9nZXRGb250RGF0YShlLHQsaSxhKXtjb25zdCByPW5ldyBPcGVyYXRvckxpc3Qscz17Zm9udDpudWxsLGNsb25lKCl7cmV0dXJuIHRoaXN9fSx7Zm9udE5hbWU6bixmb250U2l6ZTpvfT1pO2F3YWl0IGUuaGFuZGxlU2V0Rm9udChhLFtuJiZOYW1lLmdldChuKSxvXSxudWxsLHIsdCxzLG51bGwpO3JldHVybiBzLmZvbnR9X2dldFRleHRXaWR0aChlLHQpe3JldHVybiB0LmNoYXJzVG9HbHlwaHMoZSkucmVkdWNlKCgoZSx0KT0+ZSt0LndpZHRoKSwwKS8xZTN9X2NvbXB1dGVGb250U2l6ZShlLHQsaSxhLHIpe2xldHtmb250U2l6ZTpufT10aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhLG89KG58fDEyKSpzLGc9TWF0aC5yb3VuZChlL28pO2lmKCFuKXtjb25zdCByb3VuZFdpdGhUd29EaWdpdHM9ZT0+TWF0aC5mbG9vcigxMDAqZSkvMTAwO2lmKC0xPT09cil7Y29uc3Qgcj10aGlzLl9nZXRUZXh0V2lkdGgoaSxhKTtuPXJvdW5kV2l0aFR3b0RpZ2l0cyhNYXRoLm1pbihlL3MsdC9yKSk7Zz0xfWVsc2V7Y29uc3QgYz1pLnNwbGl0KC9cclxuP3xcbi8pLEM9W107Zm9yKGNvbnN0IGUgb2YgYyl7Y29uc3QgdD1hLmVuY29kZVN0cmluZyhlKS5qb2luKCIiKSxpPWEuY2hhcnNUb0dseXBocyh0KSxyPWEuZ2V0Q2hhclBvc2l0aW9ucyh0KTtDLnB1c2goe2xpbmU6dCxnbHlwaHM6aSxwb3NpdGlvbnM6cn0pfWNvbnN0IGlzVG9vQmlnPWk9PntsZXQgcj0wO2Zvcihjb25zdCBzIG9mIEMpe3IrPXRoaXMuX3NwbGl0TGluZShudWxsLGEsaSx0LHMpLmxlbmd0aCppO2lmKHI+ZSlyZXR1cm4hMH1yZXR1cm4hMX07Zz1NYXRoLm1heChnLHIpO2Zvcig7Oyl7bz1lL2c7bj1yb3VuZFdpdGhUd29EaWdpdHMoby9zKTtpZighaXNUb29CaWcobikpYnJlYWs7ZysrfX1jb25zdHtmb250TmFtZTpjLGZvbnRDb2xvcjpDfT10aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhO3RoaXMuX2RlZmF1bHRBcHBlYXJhbmNlPWZ1bmN0aW9uIGNyZWF0ZURlZmF1bHRBcHBlYXJhbmNlKHtmb250U2l6ZTplLGZvbnROYW1lOnQsZm9udENvbG9yOml9KXtyZXR1cm5gLyR7ZXNjYXBlUERGTmFtZSh0KX0gJHtlfSBUZiAke2dldFBkZkNvbG9yKGksITApfWB9KHtmb250U2l6ZTpuLGZvbnROYW1lOmMsZm9udENvbG9yOkN9KX1yZXR1cm5bdGhpcy5fZGVmYXVsdEFwcGVhcmFuY2UsbixlL2ddfV9yZW5kZXJUZXh0KGUsdCxpLGEscixzLG4sbyl7bGV0IGc7aWYoMT09PXIpe2c9KGEtdGhpcy5fZ2V0VGV4dFdpZHRoKGUsdCkqaSkvMn1lbHNlIGlmKDI9PT1yKXtnPWEtdGhpcy5fZ2V0VGV4dFdpZHRoKGUsdCkqaS1ufWVsc2UgZz1uO2NvbnN0IGM9bnVtYmVyVG9TdHJpbmcoZy1zLnNoaWZ0KTtzLnNoaWZ0PWc7cmV0dXJuYCR7Y30gJHtvPW51bWJlclRvU3RyaW5nKG8pfSBUZCAoJHtlc2NhcGVTdHJpbmcoZSl9KSBUamB9X2dldFNhdmVGaWVsZFJlc291cmNlcyhlKXtjb25zdHtsb2NhbFJlc291cmNlczp0LGFwcGVhcmFuY2VSZXNvdXJjZXM6aSxhY3JvRm9ybVJlc291cmNlczphfT10aGlzLl9maWVsZFJlc291cmNlcyxyPXRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGE/LmZvbnROYW1lO2lmKCFyKXJldHVybiB0fHxEaWN0LmVtcHR5O2Zvcihjb25zdCBlIG9mW3QsaV0paWYoZSBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IHQ9ZS5nZXQoIkZvbnQiKTtpZih0IGluc3RhbmNlb2YgRGljdCYmdC5oYXMocikpcmV0dXJuIGV9aWYoYSBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IGk9YS5nZXQoIkZvbnQiKTtpZihpIGluc3RhbmNlb2YgRGljdCYmaS5oYXMocikpe2NvbnN0IGE9bmV3IERpY3QoZSk7YS5zZXQocixpLmdldFJhdyhyKSk7Y29uc3Qgcz1uZXcgRGljdChlKTtzLnNldCgiRm9udCIsYSk7cmV0dXJuIERpY3QubWVyZ2Uoe3hyZWY6ZSxkaWN0QXJyYXk6W3MsdF0sbWVyZ2VTdWJEaWN0czohMH0pfX1yZXR1cm4gdHx8RGljdC5lbXB0eX1nZXRGaWVsZE9iamVjdCgpe3JldHVybiBudWxsfX1jbGFzcyBUZXh0V2lkZ2V0QW5ub3RhdGlvbiBleHRlbmRzIFdpZGdldEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0fT1lO2lmKHQuaGFzKCJQTUQiKSl7dGhpcy5mbGFnc3w9JDt0aGlzLmRhdGEuaGlkZGVuPSEwO3dhcm4oIkJhcmNvZGVzIGFyZSBub3Qgc3VwcG9ydGVkIil9dGhpcy5kYXRhLmhhc093bkNhbnZhcz10aGlzLmRhdGEucmVhZE9ubHkmJiF0aGlzLmRhdGEubm9IVE1MO3RoaXMuX2hhc1RleHQ9ITA7InN0cmluZyIhPXR5cGVvZiB0aGlzLmRhdGEuZmllbGRWYWx1ZSYmKHRoaXMuZGF0YS5maWVsZFZhbHVlPSIiKTtsZXQgaT1nZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0OnQsa2V5OiJRIn0pOyghTnVtYmVyLmlzSW50ZWdlcihpKXx8aTwwfHxpPjIpJiYoaT1udWxsKTt0aGlzLmRhdGEudGV4dEFsaWdubWVudD1pO2xldCBhPWdldEluaGVyaXRhYmxlUHJvcGVydHkoe2RpY3Q6dCxrZXk6Ik1heExlbiJ9KTsoIU51bWJlci5pc0ludGVnZXIoYSl8fGE8MCkmJihhPTApO3RoaXMuZGF0YS5tYXhMZW49YTt0aGlzLmRhdGEubXVsdGlMaW5lPXRoaXMuaGFzRmllbGRGbGFnKG5BKTt0aGlzLmRhdGEuY29tYj10aGlzLmhhc0ZpZWxkRmxhZyhCQSkmJiF0aGlzLmhhc0ZpZWxkRmxhZyhuQSkmJiF0aGlzLmhhc0ZpZWxkRmxhZyhvQSkmJiF0aGlzLmhhc0ZpZWxkRmxhZyhDQSkmJjAhPT10aGlzLmRhdGEubWF4TGVuO3RoaXMuZGF0YS5kb05vdFNjcm9sbD10aGlzLmhhc0ZpZWxkRmxhZyhsQSl9Z2V0IGhhc1RleHRDb250ZW50KCl7cmV0dXJuISF0aGlzLmFwcGVhcmFuY2UmJiF0aGlzLl9uZWVkQXBwZWFyYW5jZXN9X2dldENvbWJBcHBlYXJhbmNlKGUsdCxpLGEscixzLG4sbyxnLGMsQyl7Y29uc3QgaD1yL3RoaXMuZGF0YS5tYXhMZW4sbD10aGlzLmdldEJvcmRlckFuZEJhY2tncm91bmRBcHBlYXJhbmNlcyhDKSxRPVtdLEU9dC5nZXRDaGFyUG9zaXRpb25zKGkpO2Zvcihjb25zdFtlLHRdb2YgRSlRLnB1c2goYCgke2VzY2FwZVN0cmluZyhpLnN1YnN0cmluZyhlLHQpKX0pIFRqYCk7Y29uc3QgdT1RLmpvaW4oYCAke251bWJlclRvU3RyaW5nKGgpfSAwIFRkIGApO3JldHVybmAvVHggQk1DIHEgJHtsfUJUIGArZStgIDEgMCAwIDEgJHtudW1iZXJUb1N0cmluZyhuKX0gJHtudW1iZXJUb1N0cmluZyhvK2cpfSBUbSAke3V9IEVUIFEgRU1DYH1fZ2V0TXVsdGlsaW5lQXBwZWFyYW5jZShlLHQsaSxhLHIscyxuLG8sZyxjLEMsaCl7Y29uc3QgbD1bXSxRPXItMipvLEU9e3NoaWZ0OjB9O2ZvcihsZXQgZT0wLHM9dC5sZW5ndGg7ZTxzO2UrKyl7Y29uc3Qgcz10W2VdLGg9dGhpcy5fc3BsaXRMaW5lKHMsaSxhLFEpO2ZvcihsZXQgdD0wLHM9aC5sZW5ndGg7dDxzO3QrKyl7Y29uc3Qgcz1oW3RdLFE9MD09PWUmJjA9PT10Py1nLShDLWMpOi1DO2wucHVzaCh0aGlzLl9yZW5kZXJUZXh0KHMsaSxhLHIsbixFLG8sUSkpfX1jb25zdCB1PXRoaXMuZ2V0Qm9yZGVyQW5kQmFja2dyb3VuZEFwcGVhcmFuY2VzKGgpLGQ9bC5qb2luKCJcbiIpO3JldHVybmAvVHggQk1DIHEgJHt1fUJUIGArZStgIDEgMCAwIDEgMCAke251bWJlclRvU3RyaW5nKHMpfSBUbSAke2R9IEVUIFEgRU1DYH1fc3BsaXRMaW5lKGUsdCxpLGEscj17fSl7ZT1yLmxpbmV8fGU7Y29uc3Qgcz1yLmdseXBoc3x8dC5jaGFyc1RvR2x5cGhzKGUpO2lmKHMubGVuZ3RoPD0xKXJldHVybltlXTtjb25zdCBuPXIucG9zaXRpb25zfHx0LmdldENoYXJQb3NpdGlvbnMoZSksbz1pLzFlMyxnPVtdO2xldCBjPS0xLEM9LTEsaD0tMSxsPTAsUT0wO2ZvcihsZXQgdD0wLGk9cy5sZW5ndGg7dDxpO3QrKyl7Y29uc3RbaSxyXT1uW3RdLEU9c1t0XSx1PUUud2lkdGgqbztpZigiICI9PT1FLnVuaWNvZGUpaWYoUSt1PmEpe2cucHVzaChlLnN1YnN0cmluZyhsLGkpKTtsPWk7UT11O2M9LTE7aD0tMX1lbHNle1ErPXU7Yz1pO0M9cjtoPXR9ZWxzZSBpZihRK3U+YSlpZigtMSE9PWMpe2cucHVzaChlLnN1YnN0cmluZyhsLEMpKTtsPUM7dD1oKzE7Yz0tMTtRPTB9ZWxzZXtnLnB1c2goZS5zdWJzdHJpbmcobCxpKSk7bD1pO1E9dX1lbHNlIFErPXV9bDxlLmxlbmd0aCYmZy5wdXNoKGUuc3Vic3RyaW5nKGwsZS5sZW5ndGgpKTtyZXR1cm4gZ31hc3luYyBleHRyYWN0VGV4dENvbnRlbnQoZSx0LGkpe2F3YWl0IHN1cGVyLmV4dHJhY3RUZXh0Q29udGVudChlLHQsaSk7Y29uc3QgYT10aGlzLmRhdGEudGV4dENvbnRlbnQ7aWYoIWEpcmV0dXJuO2NvbnN0IHI9YS5qb2luKCJcbiIpO2lmKHI9PT10aGlzLmRhdGEuZmllbGRWYWx1ZSlyZXR1cm47Y29uc3Qgcz1yLnJlcGxhY2VBbGwoLyhbLiorP14ke30oKXxbXF1cXF0pfChccyspL2csKChlLHQpPT50P2BcXCR7dH1gOiJcXHMrIikpO25ldyBSZWdFeHAoYF5cXHMqJHtzfVxccyokYCkudGVzdCh0aGlzLmRhdGEuZmllbGRWYWx1ZSkmJih0aGlzLmRhdGEudGV4dENvbnRlbnQ9dGhpcy5kYXRhLmZpZWxkVmFsdWUuc3BsaXQoIlxuIikpfWdldEZpZWxkT2JqZWN0KCl7cmV0dXJue2lkOnRoaXMuZGF0YS5pZCx2YWx1ZTp0aGlzLmRhdGEuZmllbGRWYWx1ZSxkZWZhdWx0VmFsdWU6dGhpcy5kYXRhLmRlZmF1bHRGaWVsZFZhbHVlfHwiIixtdWx0aWxpbmU6dGhpcy5kYXRhLm11bHRpTGluZSxwYXNzd29yZDp0aGlzLmhhc0ZpZWxkRmxhZyhvQSksY2hhckxpbWl0OnRoaXMuZGF0YS5tYXhMZW4sY29tYjp0aGlzLmRhdGEuY29tYixlZGl0YWJsZTohdGhpcy5kYXRhLnJlYWRPbmx5LGhpZGRlbjp0aGlzLmRhdGEuaGlkZGVuLG5hbWU6dGhpcy5kYXRhLmZpZWxkTmFtZSxyZWN0OnRoaXMuZGF0YS5yZWN0LGFjdGlvbnM6dGhpcy5kYXRhLmFjdGlvbnMscGFnZTp0aGlzLmRhdGEucGFnZUluZGV4LHN0cm9rZUNvbG9yOnRoaXMuZGF0YS5ib3JkZXJDb2xvcixmaWxsQ29sb3I6dGhpcy5kYXRhLmJhY2tncm91bmRDb2xvcixyb3RhdGlvbjp0aGlzLnJvdGF0aW9uLHR5cGU6InRleHQifX19Y2xhc3MgQnV0dG9uV2lkZ2V0QW5ub3RhdGlvbiBleHRlbmRzIFdpZGdldEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5jaGVja2VkQXBwZWFyYW5jZT1udWxsO3RoaXMudW5jaGVja2VkQXBwZWFyYW5jZT1udWxsO3RoaXMuZGF0YS5jaGVja0JveD0hdGhpcy5oYXNGaWVsZEZsYWcoZ0EpJiYhdGhpcy5oYXNGaWVsZEZsYWcoSUEpO3RoaXMuZGF0YS5yYWRpb0J1dHRvbj10aGlzLmhhc0ZpZWxkRmxhZyhnQSkmJiF0aGlzLmhhc0ZpZWxkRmxhZyhJQSk7dGhpcy5kYXRhLnB1c2hCdXR0b249dGhpcy5oYXNGaWVsZEZsYWcoSUEpO3RoaXMuZGF0YS5pc1Rvb2x0aXBPbmx5PSExO2lmKHRoaXMuZGF0YS5jaGVja0JveCl0aGlzLl9wcm9jZXNzQ2hlY2tCb3goZSk7ZWxzZSBpZih0aGlzLmRhdGEucmFkaW9CdXR0b24pdGhpcy5fcHJvY2Vzc1JhZGlvQnV0dG9uKGUpO2Vsc2UgaWYodGhpcy5kYXRhLnB1c2hCdXR0b24pe3RoaXMuZGF0YS5oYXNPd25DYW52YXM9ITA7dGhpcy5kYXRhLm5vSFRNTD0hMTt0aGlzLl9wcm9jZXNzUHVzaEJ1dHRvbihlKX1lbHNlIHdhcm4oIkludmFsaWQgZmllbGQgZmxhZ3MgZm9yIGJ1dHRvbiB3aWRnZXQgYW5ub3RhdGlvbiIpfWFzeW5jIGdldE9wZXJhdG9yTGlzdChlLHQsaSxyKXtpZih0aGlzLmRhdGEucHVzaEJ1dHRvbilyZXR1cm4gc3VwZXIuZ2V0T3BlcmF0b3JMaXN0KGUsdCxpLCExLHIpO2xldCBzPW51bGwsbj1udWxsO2lmKHIpe2NvbnN0IGU9ci5nZXQodGhpcy5kYXRhLmlkKTtzPWU/ZS52YWx1ZTpudWxsO249ZT9lLnJvdGF0aW9uOm51bGx9aWYobnVsbD09PXMmJnRoaXMuYXBwZWFyYW5jZSlyZXR1cm4gc3VwZXIuZ2V0T3BlcmF0b3JMaXN0KGUsdCxpLHIpO251bGw9PXMmJihzPXRoaXMuZGF0YS5jaGVja0JveD90aGlzLmRhdGEuZmllbGRWYWx1ZT09PXRoaXMuZGF0YS5leHBvcnRWYWx1ZTp0aGlzLmRhdGEuZmllbGRWYWx1ZT09PXRoaXMuZGF0YS5idXR0b25WYWx1ZSk7Y29uc3Qgbz1zP3RoaXMuY2hlY2tlZEFwcGVhcmFuY2U6dGhpcy51bmNoZWNrZWRBcHBlYXJhbmNlO2lmKG8pe2NvbnN0IHM9dGhpcy5hcHBlYXJhbmNlLGc9bG9va3VwTWF0cml4KG8uZGljdC5nZXRBcnJheSgiTWF0cml4IiksYSk7biYmby5kaWN0LnNldCgiTWF0cml4Iix0aGlzLmdldFJvdGF0aW9uTWF0cml4KHIpKTt0aGlzLmFwcGVhcmFuY2U9bztjb25zdCBjPXN1cGVyLmdldE9wZXJhdG9yTGlzdChlLHQsaSxyKTt0aGlzLmFwcGVhcmFuY2U9cztvLmRpY3Quc2V0KCJNYXRyaXgiLGcpO3JldHVybiBjfXJldHVybntvcExpc3Q6bmV3IE9wZXJhdG9yTGlzdCxzZXBhcmF0ZUZvcm06ITEsc2VwYXJhdGVDYW52YXM6ITF9fWFzeW5jIHNhdmUoZSx0LGkpe3JldHVybiB0aGlzLmRhdGEuY2hlY2tCb3g/dGhpcy5fc2F2ZUNoZWNrYm94KGUsdCxpKTp0aGlzLmRhdGEucmFkaW9CdXR0b24/dGhpcy5fc2F2ZVJhZGlvQnV0dG9uKGUsdCxpKTpudWxsfWFzeW5jIF9zYXZlQ2hlY2tib3goZSx0LGkpe2lmKCFpKXJldHVybiBudWxsO2NvbnN0IGE9aS5nZXQodGhpcy5kYXRhLmlkKSxyPXRoaXMuX2J1aWxkRmxhZ3MoYT8ubm9WaWV3LGE/Lm5vUHJpbnQpO2xldCBzPWE/LnJvdGF0aW9uLG49YT8udmFsdWU7aWYodm9pZCAwPT09cyYmdm9pZCAwPT09cil7aWYodm9pZCAwPT09bilyZXR1cm4gbnVsbDtpZih0aGlzLmRhdGEuZmllbGRWYWx1ZT09PXRoaXMuZGF0YS5leHBvcnRWYWx1ZT09PW4pcmV0dXJuIG51bGx9bGV0IG89ZS54cmVmLmZldGNoSWZSZWYodGhpcy5yZWYpO2lmKCEobyBpbnN0YW5jZW9mIERpY3QpKXJldHVybiBudWxsO289by5jbG9uZSgpO3ZvaWQgMD09PXMmJihzPXRoaXMucm90YXRpb24pO3ZvaWQgMD09PW4mJihuPXRoaXMuZGF0YS5maWVsZFZhbHVlPT09dGhpcy5kYXRhLmV4cG9ydFZhbHVlKTtjb25zdCBnPXtwYXRoOnRoaXMuZGF0YS5maWVsZE5hbWUsdmFsdWU6bj90aGlzLmRhdGEuZXhwb3J0VmFsdWU6IiJ9LGM9TmFtZS5nZXQobj90aGlzLmRhdGEuZXhwb3J0VmFsdWU6Ik9mZiIpO28uc2V0KCJWIixjKTtvLnNldCgiQVMiLGMpO28uc2V0KCJNIixgRDoke2dldE1vZGlmaWNhdGlvbkRhdGUoKX1gKTt2b2lkIDAhPT1yJiZvLnNldCgiRiIscik7Y29uc3QgQz10aGlzLl9nZXRNS0RpY3Qocyk7QyYmby5zZXQoIk1LIixDKTtjb25zdCBoPVtdO2F3YWl0IHdyaXRlT2JqZWN0KHRoaXMucmVmLG8saCxlLnhyZWYpO3JldHVyblt7cmVmOnRoaXMucmVmLGRhdGE6aC5qb2luKCIiKSx4ZmE6Z31dfWFzeW5jIF9zYXZlUmFkaW9CdXR0b24oZSx0LGkpe2lmKCFpKXJldHVybiBudWxsO2NvbnN0IGE9aS5nZXQodGhpcy5kYXRhLmlkKSxyPXRoaXMuX2J1aWxkRmxhZ3MoYT8ubm9WaWV3LGE/Lm5vUHJpbnQpO2xldCBzPWE/LnJvdGF0aW9uLG49YT8udmFsdWU7aWYodm9pZCAwPT09cyYmdm9pZCAwPT09cil7aWYodm9pZCAwPT09bilyZXR1cm4gbnVsbDtpZih0aGlzLmRhdGEuZmllbGRWYWx1ZT09PXRoaXMuZGF0YS5idXR0b25WYWx1ZT09PW4pcmV0dXJuIG51bGx9bGV0IG89ZS54cmVmLmZldGNoSWZSZWYodGhpcy5yZWYpO2lmKCEobyBpbnN0YW5jZW9mIERpY3QpKXJldHVybiBudWxsO289by5jbG9uZSgpO3ZvaWQgMD09PW4mJihuPXRoaXMuZGF0YS5maWVsZFZhbHVlPT09dGhpcy5kYXRhLmJ1dHRvblZhbHVlKTt2b2lkIDA9PT1zJiYocz10aGlzLnJvdGF0aW9uKTtjb25zdCBnPXtwYXRoOnRoaXMuZGF0YS5maWVsZE5hbWUsdmFsdWU6bj90aGlzLmRhdGEuYnV0dG9uVmFsdWU6IiJ9LGM9TmFtZS5nZXQobj90aGlzLmRhdGEuYnV0dG9uVmFsdWU6Ik9mZiIpLEM9W107bGV0IGg9bnVsbDtpZihuKWlmKHRoaXMucGFyZW50IGluc3RhbmNlb2YgUmVmKXtjb25zdCB0PWUueHJlZi5mZXRjaCh0aGlzLnBhcmVudCk7dC5zZXQoIlYiLGMpO2F3YWl0IHdyaXRlT2JqZWN0KHRoaXMucGFyZW50LHQsQyxlLnhyZWYpO2g9Qy5qb2luKCIiKTtDLmxlbmd0aD0wfWVsc2UgdGhpcy5wYXJlbnQgaW5zdGFuY2VvZiBEaWN0JiZ0aGlzLnBhcmVudC5zZXQoIlYiLGMpO3RoaXMucGFyZW50fHxvLnNldCgiViIsYyk7by5zZXQoIkFTIixjKTtvLnNldCgiTSIsYEQ6JHtnZXRNb2RpZmljYXRpb25EYXRlKCl9YCk7dm9pZCAwIT09ciYmby5zZXQoIkYiLHIpO2NvbnN0IGw9dGhpcy5fZ2V0TUtEaWN0KHMpO2wmJm8uc2V0KCJNSyIsbCk7YXdhaXQgd3JpdGVPYmplY3QodGhpcy5yZWYsbyxDLGUueHJlZik7Y29uc3QgUT1be3JlZjp0aGlzLnJlZixkYXRhOkMuam9pbigiIikseGZhOmd9XTtoJiZRLnB1c2goe3JlZjp0aGlzLnBhcmVudCxkYXRhOmgseGZhOm51bGx9KTtyZXR1cm4gUX1fZ2V0RGVmYXVsdENoZWNrZWRBcHBlYXJhbmNlKGUsdCl7Y29uc3QgaT10aGlzLmRhdGEucmVjdFsyXS10aGlzLmRhdGEucmVjdFswXSxhPXRoaXMuZGF0YS5yZWN0WzNdLXRoaXMuZGF0YS5yZWN0WzFdLHI9WzAsMCxpLGFdLHM9LjgqTWF0aC5taW4oaSxhKTtsZXQgbixvO2lmKCJjaGVjayI9PT10KXtuPXt3aWR0aDouNzU1KnMsaGVpZ2h0Oi43MDUqc307bz0iMyJ9ZWxzZSBpZigiZGlzYyI9PT10KXtuPXt3aWR0aDouNzkxKnMsaGVpZ2h0Oi43MDUqc307bz0ibCJ9ZWxzZSB1bnJlYWNoYWJsZShgX2dldERlZmF1bHRDaGVja2VkQXBwZWFyYW5jZSAtIHVuc3VwcG9ydGVkIHR5cGU6ICR7dH1gKTtjb25zdCBnPWBxIEJUIC9QZGZKc1phRGIgJHtzfSBUZiAwIGcgJHtudW1iZXJUb1N0cmluZygoaS1uLndpZHRoKS8yKX0gJHtudW1iZXJUb1N0cmluZygoYS1uLmhlaWdodCkvMil9IFRkICgke299KSBUaiBFVCBRYCxjPW5ldyBEaWN0KGUueHJlZik7Yy5zZXQoIkZvcm1UeXBlIiwxKTtjLnNldCgiU3VidHlwZSIsTmFtZS5nZXQoIkZvcm0iKSk7Yy5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJYT2JqZWN0IikpO2Muc2V0KCJCQm94IixyKTtjLnNldCgiTWF0cml4IixbMSwwLDAsMSwwLDBdKTtjLnNldCgiTGVuZ3RoIixnLmxlbmd0aCk7Y29uc3QgQz1uZXcgRGljdChlLnhyZWYpLGg9bmV3IERpY3QoZS54cmVmKTtoLnNldCgiUGRmSnNaYURiIix0aGlzLmZhbGxiYWNrRm9udERpY3QpO0Muc2V0KCJGb250IixoKTtjLnNldCgiUmVzb3VyY2VzIixDKTt0aGlzLmNoZWNrZWRBcHBlYXJhbmNlPW5ldyBTdHJpbmdTdHJlYW0oZyk7dGhpcy5jaGVja2VkQXBwZWFyYW5jZS5kaWN0PWM7dGhpcy5fc3RyZWFtcy5wdXNoKHRoaXMuY2hlY2tlZEFwcGVhcmFuY2UpfV9wcm9jZXNzQ2hlY2tCb3goZSl7Y29uc3QgdD1lLmRpY3QuZ2V0KCJBUCIpO2lmKCEodCBpbnN0YW5jZW9mIERpY3QpKXJldHVybjtjb25zdCBpPXQuZ2V0KCJOIik7aWYoIShpIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuO2NvbnN0IGE9dGhpcy5fZGVjb2RlRm9ybVZhbHVlKGUuZGljdC5nZXQoIkFTIikpOyJzdHJpbmciPT10eXBlb2YgYSYmKHRoaXMuZGF0YS5maWVsZFZhbHVlPWEpO2NvbnN0IHI9bnVsbCE9PXRoaXMuZGF0YS5maWVsZFZhbHVlJiYiT2ZmIiE9PXRoaXMuZGF0YS5maWVsZFZhbHVlP3RoaXMuZGF0YS5maWVsZFZhbHVlOiJZZXMiLHM9aS5nZXRLZXlzKCk7aWYoMD09PXMubGVuZ3RoKXMucHVzaCgiT2ZmIixyKTtlbHNlIGlmKDE9PT1zLmxlbmd0aCkiT2ZmIj09PXNbMF0/cy5wdXNoKHIpOnMudW5zaGlmdCgiT2ZmIik7ZWxzZSBpZihzLmluY2x1ZGVzKHIpKXtzLmxlbmd0aD0wO3MucHVzaCgiT2ZmIixyKX1lbHNle2NvbnN0IGU9cy5maW5kKChlPT4iT2ZmIiE9PWUpKTtzLmxlbmd0aD0wO3MucHVzaCgiT2ZmIixlKX1zLmluY2x1ZGVzKHRoaXMuZGF0YS5maWVsZFZhbHVlKXx8KHRoaXMuZGF0YS5maWVsZFZhbHVlPSJPZmYiKTt0aGlzLmRhdGEuZXhwb3J0VmFsdWU9c1sxXTtjb25zdCBuPWkuZ2V0KHRoaXMuZGF0YS5leHBvcnRWYWx1ZSk7dGhpcy5jaGVja2VkQXBwZWFyYW5jZT1uIGluc3RhbmNlb2YgQmFzZVN0cmVhbT9uOm51bGw7Y29uc3Qgbz1pLmdldCgiT2ZmIik7dGhpcy51bmNoZWNrZWRBcHBlYXJhbmNlPW8gaW5zdGFuY2VvZiBCYXNlU3RyZWFtP286bnVsbDt0aGlzLmNoZWNrZWRBcHBlYXJhbmNlP3RoaXMuX3N0cmVhbXMucHVzaCh0aGlzLmNoZWNrZWRBcHBlYXJhbmNlKTp0aGlzLl9nZXREZWZhdWx0Q2hlY2tlZEFwcGVhcmFuY2UoZSwiY2hlY2siKTt0aGlzLnVuY2hlY2tlZEFwcGVhcmFuY2UmJnRoaXMuX3N0cmVhbXMucHVzaCh0aGlzLnVuY2hlY2tlZEFwcGVhcmFuY2UpO3RoaXMuX2ZhbGxiYWNrRm9udERpY3Q9dGhpcy5mYWxsYmFja0ZvbnREaWN0O251bGw9PT10aGlzLmRhdGEuZGVmYXVsdEZpZWxkVmFsdWUmJih0aGlzLmRhdGEuZGVmYXVsdEZpZWxkVmFsdWU9Ik9mZiIpfV9wcm9jZXNzUmFkaW9CdXR0b24oZSl7dGhpcy5kYXRhLmJ1dHRvblZhbHVlPW51bGw7Y29uc3QgdD1lLmRpY3QuZ2V0KCJQYXJlbnQiKTtpZih0IGluc3RhbmNlb2YgRGljdCl7dGhpcy5wYXJlbnQ9ZS5kaWN0LmdldFJhdygiUGFyZW50Iik7Y29uc3QgaT10LmdldCgiViIpO2kgaW5zdGFuY2VvZiBOYW1lJiYodGhpcy5kYXRhLmZpZWxkVmFsdWU9dGhpcy5fZGVjb2RlRm9ybVZhbHVlKGkpKX1jb25zdCBpPWUuZGljdC5nZXQoIkFQIik7aWYoIShpIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuO2NvbnN0IGE9aS5nZXQoIk4iKTtpZighKGEgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm47Zm9yKGNvbnN0IGUgb2YgYS5nZXRLZXlzKCkpaWYoIk9mZiIhPT1lKXt0aGlzLmRhdGEuYnV0dG9uVmFsdWU9dGhpcy5fZGVjb2RlRm9ybVZhbHVlKGUpO2JyZWFrfWNvbnN0IHI9YS5nZXQodGhpcy5kYXRhLmJ1dHRvblZhbHVlKTt0aGlzLmNoZWNrZWRBcHBlYXJhbmNlPXIgaW5zdGFuY2VvZiBCYXNlU3RyZWFtP3I6bnVsbDtjb25zdCBzPWEuZ2V0KCJPZmYiKTt0aGlzLnVuY2hlY2tlZEFwcGVhcmFuY2U9cyBpbnN0YW5jZW9mIEJhc2VTdHJlYW0/czpudWxsO3RoaXMuY2hlY2tlZEFwcGVhcmFuY2U/dGhpcy5fc3RyZWFtcy5wdXNoKHRoaXMuY2hlY2tlZEFwcGVhcmFuY2UpOnRoaXMuX2dldERlZmF1bHRDaGVja2VkQXBwZWFyYW5jZShlLCJkaXNjIik7dGhpcy51bmNoZWNrZWRBcHBlYXJhbmNlJiZ0aGlzLl9zdHJlYW1zLnB1c2godGhpcy51bmNoZWNrZWRBcHBlYXJhbmNlKTt0aGlzLl9mYWxsYmFja0ZvbnREaWN0PXRoaXMuZmFsbGJhY2tGb250RGljdDtudWxsPT09dGhpcy5kYXRhLmRlZmF1bHRGaWVsZFZhbHVlJiYodGhpcy5kYXRhLmRlZmF1bHRGaWVsZFZhbHVlPSJPZmYiKX1fcHJvY2Vzc1B1c2hCdXR0b24oZSl7Y29uc3R7ZGljdDp0LGFubm90YXRpb25HbG9iYWxzOml9PWU7aWYodC5oYXMoIkEiKXx8dC5oYXMoIkFBIil8fHRoaXMuZGF0YS5hbHRlcm5hdGl2ZVRleHQpe3RoaXMuZGF0YS5pc1Rvb2x0aXBPbmx5PSF0LmhhcygiQSIpJiYhdC5oYXMoIkFBIik7Q2F0YWxvZy5wYXJzZURlc3REaWN0aW9uYXJ5KHtkZXN0RGljdDp0LHJlc3VsdE9iajp0aGlzLmRhdGEsZG9jQmFzZVVybDppLmJhc2VVcmwsZG9jQXR0YWNobWVudHM6aS5hdHRhY2htZW50c30pfWVsc2Ugd2FybigiUHVzaCBidXR0b25zIHdpdGhvdXQgYWN0aW9uIGRpY3Rpb25hcmllcyBhcmUgbm90IHN1cHBvcnRlZCIpfWdldEZpZWxkT2JqZWN0KCl7bGV0IGUsdD0iYnV0dG9uIjtpZih0aGlzLmRhdGEuY2hlY2tCb3gpe3Q9ImNoZWNrYm94IjtlPXRoaXMuZGF0YS5leHBvcnRWYWx1ZX1lbHNlIGlmKHRoaXMuZGF0YS5yYWRpb0J1dHRvbil7dD0icmFkaW9idXR0b24iO2U9dGhpcy5kYXRhLmJ1dHRvblZhbHVlfXJldHVybntpZDp0aGlzLmRhdGEuaWQsdmFsdWU6dGhpcy5kYXRhLmZpZWxkVmFsdWV8fCJPZmYiLGRlZmF1bHRWYWx1ZTp0aGlzLmRhdGEuZGVmYXVsdEZpZWxkVmFsdWUsZXhwb3J0VmFsdWVzOmUsZWRpdGFibGU6IXRoaXMuZGF0YS5yZWFkT25seSxuYW1lOnRoaXMuZGF0YS5maWVsZE5hbWUscmVjdDp0aGlzLmRhdGEucmVjdCxoaWRkZW46dGhpcy5kYXRhLmhpZGRlbixhY3Rpb25zOnRoaXMuZGF0YS5hY3Rpb25zLHBhZ2U6dGhpcy5kYXRhLnBhZ2VJbmRleCxzdHJva2VDb2xvcjp0aGlzLmRhdGEuYm9yZGVyQ29sb3IsZmlsbENvbG9yOnRoaXMuZGF0YS5iYWNrZ3JvdW5kQ29sb3Iscm90YXRpb246dGhpcy5yb3RhdGlvbix0eXBlOnR9fWdldCBmYWxsYmFja0ZvbnREaWN0KCl7Y29uc3QgZT1uZXcgRGljdDtlLnNldCgiQmFzZUZvbnQiLE5hbWUuZ2V0KCJaYXBmRGluZ2JhdHMiKSk7ZS5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJGYWxsYmFja1R5cGUiKSk7ZS5zZXQoIlN1YnR5cGUiLE5hbWUuZ2V0KCJGYWxsYmFja1R5cGUiKSk7ZS5zZXQoIkVuY29kaW5nIixOYW1lLmdldCgiWmFwZkRpbmdiYXRzRW5jb2RpbmciKSk7cmV0dXJuIHNoYWRvdyh0aGlzLCJmYWxsYmFja0ZvbnREaWN0IixlKX19Y2xhc3MgQ2hvaWNlV2lkZ2V0QW5ub3RhdGlvbiBleHRlbmRzIFdpZGdldEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0LHhyZWY6aX09ZTt0aGlzLmluZGljZXM9dC5nZXRBcnJheSgiSSIpO3RoaXMuaGFzSW5kaWNlcz1BcnJheS5pc0FycmF5KHRoaXMuaW5kaWNlcykmJnRoaXMuaW5kaWNlcy5sZW5ndGg+MDt0aGlzLmRhdGEub3B0aW9ucz1bXTtjb25zdCBhPWdldEluaGVyaXRhYmxlUHJvcGVydHkoe2RpY3Q6dCxrZXk6Ik9wdCJ9KTtpZihBcnJheS5pc0FycmF5KGEpKWZvcihsZXQgZT0wLHQ9YS5sZW5ndGg7ZTx0O2UrKyl7Y29uc3QgdD1pLmZldGNoSWZSZWYoYVtlXSkscj1BcnJheS5pc0FycmF5KHQpO3RoaXMuZGF0YS5vcHRpb25zW2VdPXtleHBvcnRWYWx1ZTp0aGlzLl9kZWNvZGVGb3JtVmFsdWUocj9pLmZldGNoSWZSZWYodFswXSk6dCksZGlzcGxheVZhbHVlOnRoaXMuX2RlY29kZUZvcm1WYWx1ZShyP2kuZmV0Y2hJZlJlZih0WzFdKTp0KX19aWYodGhpcy5oYXNJbmRpY2VzKXt0aGlzLmRhdGEuZmllbGRWYWx1ZT1bXTtjb25zdCBlPXRoaXMuZGF0YS5vcHRpb25zLmxlbmd0aDtmb3IoY29uc3QgdCBvZiB0aGlzLmluZGljZXMpTnVtYmVyLmlzSW50ZWdlcih0KSYmdD49MCYmdDxlJiZ0aGlzLmRhdGEuZmllbGRWYWx1ZS5wdXNoKHRoaXMuZGF0YS5vcHRpb25zW3RdLmV4cG9ydFZhbHVlKX1lbHNlInN0cmluZyI9PXR5cGVvZiB0aGlzLmRhdGEuZmllbGRWYWx1ZT90aGlzLmRhdGEuZmllbGRWYWx1ZT1bdGhpcy5kYXRhLmZpZWxkVmFsdWVdOnRoaXMuZGF0YS5maWVsZFZhbHVlfHwodGhpcy5kYXRhLmZpZWxkVmFsdWU9W10pO3RoaXMuZGF0YS5jb21ibz10aGlzLmhhc0ZpZWxkRmxhZyhjQSk7dGhpcy5kYXRhLm11bHRpU2VsZWN0PXRoaXMuaGFzRmllbGRGbGFnKGhBKTt0aGlzLl9oYXNUZXh0PSEwfWdldEZpZWxkT2JqZWN0KCl7Y29uc3QgZT10aGlzLmRhdGEuY29tYm8/ImNvbWJvYm94IjoibGlzdGJveCIsdD10aGlzLmRhdGEuZmllbGRWYWx1ZS5sZW5ndGg+MD90aGlzLmRhdGEuZmllbGRWYWx1ZVswXTpudWxsO3JldHVybntpZDp0aGlzLmRhdGEuaWQsdmFsdWU6dCxkZWZhdWx0VmFsdWU6dGhpcy5kYXRhLmRlZmF1bHRGaWVsZFZhbHVlLGVkaXRhYmxlOiF0aGlzLmRhdGEucmVhZE9ubHksbmFtZTp0aGlzLmRhdGEuZmllbGROYW1lLHJlY3Q6dGhpcy5kYXRhLnJlY3QsbnVtSXRlbXM6dGhpcy5kYXRhLmZpZWxkVmFsdWUubGVuZ3RoLG11bHRpcGxlU2VsZWN0aW9uOnRoaXMuZGF0YS5tdWx0aVNlbGVjdCxoaWRkZW46dGhpcy5kYXRhLmhpZGRlbixhY3Rpb25zOnRoaXMuZGF0YS5hY3Rpb25zLGl0ZW1zOnRoaXMuZGF0YS5vcHRpb25zLHBhZ2U6dGhpcy5kYXRhLnBhZ2VJbmRleCxzdHJva2VDb2xvcjp0aGlzLmRhdGEuYm9yZGVyQ29sb3IsZmlsbENvbG9yOnRoaXMuZGF0YS5iYWNrZ3JvdW5kQ29sb3Iscm90YXRpb246dGhpcy5yb3RhdGlvbix0eXBlOmV9fWFtZW5kU2F2ZWREaWN0KGUsdCl7aWYoIXRoaXMuaGFzSW5kaWNlcylyZXR1cm47bGV0IGk9ZT8uZ2V0KHRoaXMuZGF0YS5pZCk/LnZhbHVlO0FycmF5LmlzQXJyYXkoaSl8fChpPVtpXSk7Y29uc3QgYT1bXSx7b3B0aW9uczpyfT10aGlzLmRhdGE7Zm9yKGxldCBlPTAsdD0wLHM9ci5sZW5ndGg7ZTxzO2UrKylpZihyW2VdLmV4cG9ydFZhbHVlPT09aVt0XSl7YS5wdXNoKGUpO3QrPTF9dC5zZXQoIkkiLGEpfWFzeW5jIF9nZXRBcHBlYXJhbmNlKGUsdCxpLGEpe2lmKHRoaXMuZGF0YS5jb21ibylyZXR1cm4gc3VwZXIuX2dldEFwcGVhcmFuY2UoZSx0LGksYSk7bGV0IHIsbjtjb25zdCBvPWE/LmdldCh0aGlzLmRhdGEuaWQpO2lmKG8pe249by5yb3RhdGlvbjtyPW8udmFsdWV9aWYodm9pZCAwPT09biYmdm9pZCAwPT09ciYmIXRoaXMuX25lZWRBcHBlYXJhbmNlcylyZXR1cm4gbnVsbDt2b2lkIDA9PT1yP3I9dGhpcy5kYXRhLmZpZWxkVmFsdWU6QXJyYXkuaXNBcnJheShyKXx8KHI9W3JdKTtsZXQgZz10aGlzLmRhdGEucmVjdFszXS10aGlzLmRhdGEucmVjdFsxXSxjPXRoaXMuZGF0YS5yZWN0WzJdLXRoaXMuZGF0YS5yZWN0WzBdOzkwIT09biYmMjcwIT09bnx8KFtjLGddPVtnLGNdKTtjb25zdCBDPXRoaXMuZGF0YS5vcHRpb25zLmxlbmd0aCxoPVtdO2ZvcihsZXQgZT0wO2U8QztlKyspe2NvbnN0e2V4cG9ydFZhbHVlOnR9PXRoaXMuZGF0YS5vcHRpb25zW2VdO3IuaW5jbHVkZXModCkmJmgucHVzaChlKX10aGlzLl9kZWZhdWx0QXBwZWFyYW5jZXx8KHRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGE9cGFyc2VEZWZhdWx0QXBwZWFyYW5jZSh0aGlzLl9kZWZhdWx0QXBwZWFyYW5jZT0iL0hlbHZldGljYSAwIFRmIDAgZyIpKTtjb25zdCBsPWF3YWl0IFdpZGdldEFubm90YXRpb24uX2dldEZvbnREYXRhKGUsdCx0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhLHRoaXMuX2ZpZWxkUmVzb3VyY2VzLm1lcmdlZFJlc291cmNlcyk7bGV0IFEse2ZvbnRTaXplOkV9PXRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGE7aWYoRSlRPXRoaXMuX2RlZmF1bHRBcHBlYXJhbmNlO2Vsc2V7Y29uc3QgZT0oZy0xKS9DO2xldCB0LGk9LTE7Zm9yKGNvbnN0e2Rpc3BsYXlWYWx1ZTplfW9mIHRoaXMuZGF0YS5vcHRpb25zKXtjb25zdCBhPXRoaXMuX2dldFRleHRXaWR0aChlLGwpO2lmKGE+aSl7aT1hO3Q9ZX19W1EsRV09dGhpcy5fY29tcHV0ZUZvbnRTaXplKGUsYy00LHQsbCwtMSl9Y29uc3QgdT1FKnMsZD0odS1FKS8yLGY9TWF0aC5mbG9vcihnL3UpO2xldCBwPTA7aWYoaC5sZW5ndGg+MCl7Y29uc3QgZT1NYXRoLm1pbiguLi5oKSx0PU1hdGgubWF4KC4uLmgpO3A9TWF0aC5tYXgoMCx0LWYrMSk7cD5lJiYocD1lKX1jb25zdCBtPU1hdGgubWluKHArZisxLEMpLHk9WyIvVHggQk1DIHEiLGAxIDEgJHtjfSAke2d9IHJlIFcgbmBdO2lmKGgubGVuZ3RoKXt5LnB1c2goIjAuNjAwMDA2IDAuNzU2ODY2IDAuODU0OTA0IHJnIik7Zm9yKGNvbnN0IGUgb2YgaClwPD1lJiZlPG0mJnkucHVzaChgMSAke2ctKGUtcCsxKSp1fSAke2N9ICR7dX0gcmUgZmApfXkucHVzaCgiQlQiLFEsYDEgMCAwIDEgMCAke2d9IFRtYCk7Y29uc3Qgdz17c2hpZnQ6MH07Zm9yKGxldCBlPXA7ZTxtO2UrKyl7Y29uc3R7ZGlzcGxheVZhbHVlOnR9PXRoaXMuZGF0YS5vcHRpb25zW2VdLGk9ZT09PXA/ZDowO3kucHVzaCh0aGlzLl9yZW5kZXJUZXh0KHQsbCxFLGMsMCx3LDIsLXUraSkpfXkucHVzaCgiRVQgUSBFTUMiKTtyZXR1cm4geS5qb2luKCJcbiIpfX1jbGFzcyBTaWduYXR1cmVXaWRnZXRBbm5vdGF0aW9uIGV4dGVuZHMgV2lkZ2V0QW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLmRhdGEuZmllbGRWYWx1ZT1udWxsO3RoaXMuZGF0YS5oYXNPd25DYW52YXM9dGhpcy5kYXRhLm5vUm90YXRlO3RoaXMuZGF0YS5ub0hUTUw9IXRoaXMuZGF0YS5oYXNPd25DYW52YXN9Z2V0RmllbGRPYmplY3QoKXtyZXR1cm57aWQ6dGhpcy5kYXRhLmlkLHZhbHVlOm51bGwscGFnZTp0aGlzLmRhdGEucGFnZUluZGV4LHR5cGU6InNpZ25hdHVyZSJ9fX1jbGFzcyBUZXh0QW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5kYXRhLm5vUm90YXRlPSEwO3RoaXMuZGF0YS5oYXNPd25DYW52YXM9dGhpcy5kYXRhLm5vUm90YXRlO3RoaXMuZGF0YS5ub0hUTUw9ITE7Y29uc3R7ZGljdDp0fT1lO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1OO2lmKHRoaXMuZGF0YS5oYXNBcHBlYXJhbmNlKXRoaXMuZGF0YS5uYW1lPSJOb0ljb24iO2Vsc2V7dGhpcy5kYXRhLnJlY3RbMV09dGhpcy5kYXRhLnJlY3RbM10tMjI7dGhpcy5kYXRhLnJlY3RbMl09dGhpcy5kYXRhLnJlY3RbMF0rMjI7dGhpcy5kYXRhLm5hbWU9dC5oYXMoIk5hbWUiKT90LmdldCgiTmFtZSIpLm5hbWU6Ik5vdGUifWlmKHQuaGFzKCJTdGF0ZSIpKXt0aGlzLmRhdGEuc3RhdGU9dC5nZXQoIlN0YXRlIil8fG51bGw7dGhpcy5kYXRhLnN0YXRlTW9kZWw9dC5nZXQoIlN0YXRlTW9kZWwiKXx8bnVsbH1lbHNle3RoaXMuZGF0YS5zdGF0ZT1udWxsO3RoaXMuZGF0YS5zdGF0ZU1vZGVsPW51bGx9fX1jbGFzcyBMaW5rQW5ub3RhdGlvbiBleHRlbmRzIEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0LGFubm90YXRpb25HbG9iYWxzOml9PWU7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPUc7dGhpcy5kYXRhLm5vSFRNTD0hMTtjb25zdCBhPWdldFF1YWRQb2ludHModCx0aGlzLnJlY3RhbmdsZSk7YSYmKHRoaXMuZGF0YS5xdWFkUG9pbnRzPWEpO3RoaXMuZGF0YS5ib3JkZXJDb2xvcnx8PXRoaXMuZGF0YS5jb2xvcjtDYXRhbG9nLnBhcnNlRGVzdERpY3Rpb25hcnkoe2Rlc3REaWN0OnQscmVzdWx0T2JqOnRoaXMuZGF0YSxkb2NCYXNlVXJsOmkuYmFzZVVybCxkb2NBdHRhY2htZW50czppLmF0dGFjaG1lbnRzfSl9fWNsYXNzIFBvcHVwQW5ub3RhdGlvbiBleHRlbmRzIEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0fT1lO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1qO3RoaXMuZGF0YS5ub0hUTUw9ITE7dGhpcy5kYXRhLnJlY3RbMF0hPT10aGlzLmRhdGEucmVjdFsyXSYmdGhpcy5kYXRhLnJlY3RbMV0hPT10aGlzLmRhdGEucmVjdFszXXx8KHRoaXMuZGF0YS5yZWN0PW51bGwpO2xldCBpPXQuZ2V0KCJQYXJlbnQiKTtpZighaSl7d2FybigiUG9wdXAgYW5ub3RhdGlvbiBoYXMgYSBtaXNzaW5nIG9yIGludmFsaWQgcGFyZW50IGFubm90YXRpb24uIik7cmV0dXJufXRoaXMuZGF0YS5wYXJlbnRSZWN0PWxvb2t1cE5vcm1hbFJlY3QoaS5nZXRBcnJheSgiUmVjdCIpLG51bGwpO2lzTmFtZShpLmdldCgiUlQiKSxWKSYmKGk9aS5nZXQoIklSVCIpKTtpZihpLmhhcygiTSIpKXt0aGlzLnNldE1vZGlmaWNhdGlvbkRhdGUoaS5nZXQoIk0iKSk7dGhpcy5kYXRhLm1vZGlmaWNhdGlvbkRhdGU9dGhpcy5tb2RpZmljYXRpb25EYXRlfWVsc2UgdGhpcy5kYXRhLm1vZGlmaWNhdGlvbkRhdGU9bnVsbDtpZihpLmhhcygiQyIpKXt0aGlzLnNldENvbG9yKGkuZ2V0QXJyYXkoIkMiKSk7dGhpcy5kYXRhLmNvbG9yPXRoaXMuY29sb3J9ZWxzZSB0aGlzLmRhdGEuY29sb3I9bnVsbDtpZighdGhpcy52aWV3YWJsZSl7Y29uc3QgZT1pLmdldCgiRiIpO3RoaXMuX2lzVmlld2FibGUoZSkmJnRoaXMuc2V0RmxhZ3MoZSl9dGhpcy5zZXRUaXRsZShpLmdldCgiVCIpKTt0aGlzLmRhdGEudGl0bGVPYmo9dGhpcy5fdGl0bGU7dGhpcy5zZXRDb250ZW50cyhpLmdldCgiQ29udGVudHMiKSk7dGhpcy5kYXRhLmNvbnRlbnRzT2JqPXRoaXMuX2NvbnRlbnRzO2kuaGFzKCJSQyIpJiYodGhpcy5kYXRhLnJpY2hUZXh0PVhGQUZhY3RvcnkuZ2V0UmljaFRleHRBc0h0bWwoaS5nZXQoIlJDIikpKTt0aGlzLmRhdGEub3Blbj0hIXQuZ2V0KCJPcGVuIil9fWNsYXNzIEZyZWVUZXh0QW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5kYXRhLmhhc093bkNhbnZhcz10aGlzLmRhdGEubm9Sb3RhdGU7dGhpcy5kYXRhLmlzRWRpdGFibGU9IXRoaXMuZGF0YS5ub0hUTUw7dGhpcy5kYXRhLm5vSFRNTD0hMTtjb25zdHtldmFsdWF0b3JPcHRpb25zOnQseHJlZjppfT1lO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT14O3RoaXMuc2V0RGVmYXVsdEFwcGVhcmFuY2UoZSk7dGhpcy5faGFzQXBwZWFyYW5jZT0hIXRoaXMuYXBwZWFyYW5jZTtpZih0aGlzLl9oYXNBcHBlYXJhbmNlKXtjb25zdHtmb250Q29sb3I6ZSxmb250U2l6ZTphfT1mdW5jdGlvbiBwYXJzZUFwcGVhcmFuY2VTdHJlYW0oZSx0LGkpe3JldHVybiBuZXcgQXBwZWFyYW5jZVN0cmVhbUV2YWx1YXRvcihlLHQsaSkucGFyc2UoKX0odGhpcy5hcHBlYXJhbmNlLHQsaSk7dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YS5mb250Q29sb3I9ZTt0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhLmZvbnRTaXplPWF8fDEwfWVsc2V7dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YS5mb250U2l6ZXx8PTEwO2NvbnN0e2ZvbnRDb2xvcjp0LGZvbnRTaXplOmF9PXRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGE7aWYodGhpcy5fY29udGVudHMuc3RyKXt0aGlzLmRhdGEudGV4dENvbnRlbnQ9dGhpcy5fY29udGVudHMuc3RyLnNwbGl0KC9cclxuP3xcbi8pLm1hcCgoZT0+ZS50cmltRW5kKCkpKTtjb25zdHtjb29yZHM6ZSxiYm94OnQsbWF0cml4Oml9PUZha2VVbmljb2RlRm9udC5nZXRGaXJzdFBvc2l0aW9uSW5mbyh0aGlzLnJlY3RhbmdsZSx0aGlzLnJvdGF0aW9uLGEpO3RoaXMuZGF0YS50ZXh0UG9zaXRpb249dGhpcy5fdHJhbnNmb3JtUG9pbnQoZSx0LGkpfWlmKHRoaXMuX2lzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkKXtjb25zdCByPWUuZGljdC5nZXQoIkNBIikscz1uZXcgRmFrZVVuaWNvZGVGb250KGksInNhbnMtc2VyaWYiKTt0aGlzLmFwcGVhcmFuY2U9cy5jcmVhdGVBcHBlYXJhbmNlKHRoaXMuX2NvbnRlbnRzLnN0cix0aGlzLnJlY3RhbmdsZSx0aGlzLnJvdGF0aW9uLGEsdCxyKTt0aGlzLl9zdHJlYW1zLnB1c2godGhpcy5hcHBlYXJhbmNlKX1lbHNlIHdhcm4oIkZyZWVUZXh0QW5ub3RhdGlvbjogT2Zmc2NyZWVuQ2FudmFzIGlzIG5vdCBzdXBwb3J0ZWQsIGFubm90YXRpb24gbWF5IG5vdCByZW5kZXIgY29ycmVjdGx5LiIpfX1nZXQgaGFzVGV4dENvbnRlbnQoKXtyZXR1cm4gdGhpcy5faGFzQXBwZWFyYW5jZX1zdGF0aWMgY3JlYXRlTmV3RGljdChlLHQse2FwUmVmOmksYXA6YX0pe2NvbnN0e2NvbG9yOnIsZm9udFNpemU6cyxvbGRBbm5vdGF0aW9uOm4scmVjdDpvLHJvdGF0aW9uOmcsdXNlcjpjLHZhbHVlOkN9PWUsaD1ufHxuZXcgRGljdCh0KTtoLnNldCgiVHlwZSIsTmFtZS5nZXQoIkFubm90IikpO2guc2V0KCJTdWJ0eXBlIixOYW1lLmdldCgiRnJlZVRleHQiKSk7aWYobil7aC5zZXQoIk0iLGBEOiR7Z2V0TW9kaWZpY2F0aW9uRGF0ZSgpfWApO2guZGVsZXRlKCJSQyIpfWVsc2UgaC5zZXQoIkNyZWF0aW9uRGF0ZSIsYEQ6JHtnZXRNb2RpZmljYXRpb25EYXRlKCl9YCk7aC5zZXQoIlJlY3QiLG8pO2NvbnN0IGw9YC9IZWx2ICR7c30gVGYgJHtnZXRQZGZDb2xvcihyLCEwKX1gO2guc2V0KCJEQSIsbCk7aC5zZXQoIkNvbnRlbnRzIixzdHJpbmdUb0FzY2lpT3JVVEYxNkJFKEMpKTtoLnNldCgiRiIsNCk7aC5zZXQoIkJvcmRlciIsWzAsMCwwXSk7aC5zZXQoIlJvdGF0ZSIsZyk7YyYmaC5zZXQoIlQiLHN0cmluZ1RvQXNjaWlPclVURjE2QkUoYykpO2lmKGl8fGEpe2NvbnN0IGU9bmV3IERpY3QodCk7aC5zZXQoIkFQIixlKTtpP2Uuc2V0KCJOIixpKTplLnNldCgiTiIsYSl9cmV0dXJuIGh9c3RhdGljIGFzeW5jIGNyZWF0ZU5ld0FwcGVhcmFuY2VTdHJlYW0oZSx0LGkpe2NvbnN0e2Jhc2VGb250UmVmOmEsZXZhbHVhdG9yOnIsdGFzazpufT1pLHtjb2xvcjpvLGZvbnRTaXplOmcscmVjdDpjLHJvdGF0aW9uOkMsdmFsdWU6aH09ZSxsPW5ldyBEaWN0KHQpLFE9bmV3IERpY3QodCk7aWYoYSlRLnNldCgiSGVsdiIsYSk7ZWxzZXtjb25zdCBlPW5ldyBEaWN0KHQpO2Uuc2V0KCJCYXNlRm9udCIsTmFtZS5nZXQoIkhlbHZldGljYSIpKTtlLnNldCgiVHlwZSIsTmFtZS5nZXQoIkZvbnQiKSk7ZS5zZXQoIlN1YnR5cGUiLE5hbWUuZ2V0KCJUeXBlMSIpKTtlLnNldCgiRW5jb2RpbmciLE5hbWUuZ2V0KCJXaW5BbnNpRW5jb2RpbmciKSk7US5zZXQoIkhlbHYiLGUpfWwuc2V0KCJGb250IixRKTtjb25zdCBFPWF3YWl0IFdpZGdldEFubm90YXRpb24uX2dldEZvbnREYXRhKHIsbix7Zm9udE5hbWU6IkhlbHYiLGZvbnRTaXplOmd9LGwpLFt1LGQsZixwXT1jO2xldCBtPWYtdSx5PXAtZDtDJTE4MCE9MCYmKFttLHldPVt5LG1dKTtjb25zdCB3PWguc3BsaXQoIlxuIiksYj1nLzFlMztsZXQgRD0tMS8wO2NvbnN0IFM9W107Zm9yKGxldCBlIG9mIHcpe2NvbnN0IHQ9RS5lbmNvZGVTdHJpbmcoZSk7aWYodC5sZW5ndGg+MSlyZXR1cm4gbnVsbDtlPXQuam9pbigiIik7Uy5wdXNoKGUpO2xldCBpPTA7Y29uc3QgYT1FLmNoYXJzVG9HbHlwaHMoZSk7Zm9yKGNvbnN0IGUgb2YgYSlpKz1lLndpZHRoKmI7RD1NYXRoLm1heChELGkpfWxldCBrPTE7RD5tJiYoaz1tL0QpO2xldCBSPTE7Y29uc3QgTj1zKmcsRz0xKmcseD1OKncubGVuZ3RoO3g+eSYmKFI9eS94KTtjb25zdCBVPWcqTWF0aC5taW4oayxSKTtsZXQgTSxMLEg7c3dpdGNoKEMpe2Nhc2UgMDpIPVsxLDAsMCwxXTtMPVtjWzBdLGNbMV0sbSx5XTtNPVtjWzBdLGNbM10tR107YnJlYWs7Y2FzZSA5MDpIPVswLDEsLTEsMF07TD1bY1sxXSwtY1syXSxtLHldO009W2NbMV0sLWNbMF0tR107YnJlYWs7Y2FzZSAxODA6SD1bLTEsMCwwLC0xXTtMPVstY1syXSwtY1szXSxtLHldO009Wy1jWzJdLC1jWzFdLUddO2JyZWFrO2Nhc2UgMjcwOkg9WzAsLTEsMSwwXTtMPVstY1szXSxjWzBdLG0seV07TT1bLWNbM10sY1syXS1HXX1jb25zdCBKPVsicSIsYCR7SC5qb2luKCIgIil9IDAgMCBjbWAsYCR7TC5qb2luKCIgIil9IHJlIFcgbmAsIkJUIixgJHtnZXRQZGZDb2xvcihvLCEwKX1gLGAwIFRjIC9IZWx2ICR7bnVtYmVyVG9TdHJpbmcoVSl9IFRmYF07Si5wdXNoKGAke00uam9pbigiICIpfSBUZCAoJHtlc2NhcGVTdHJpbmcoU1swXSl9KSBUamApO2NvbnN0IHY9bnVtYmVyVG9TdHJpbmcoTik7Zm9yKGxldCBlPTEsdD1TLmxlbmd0aDtlPHQ7ZSsrKXtjb25zdCB0PVNbZV07Si5wdXNoKGAwIC0ke3Z9IFRkICgke2VzY2FwZVN0cmluZyh0KX0pIFRqYCl9Si5wdXNoKCJFVCIsIlEiKTtjb25zdCBZPUouam9pbigiXG4iKSxUPW5ldyBEaWN0KHQpO1Quc2V0KCJGb3JtVHlwZSIsMSk7VC5zZXQoIlN1YnR5cGUiLE5hbWUuZ2V0KCJGb3JtIikpO1Quc2V0KCJUeXBlIixOYW1lLmdldCgiWE9iamVjdCIpKTtULnNldCgiQkJveCIsYyk7VC5zZXQoIlJlc291cmNlcyIsbCk7VC5zZXQoIk1hdHJpeCIsWzEsMCwwLDEsLWNbMF0sLWNbMV1dKTtjb25zdCBLPW5ldyBTdHJpbmdTdHJlYW0oWSk7Sy5kaWN0PVQ7cmV0dXJuIEt9fWNsYXNzIExpbmVBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnQseHJlZjppfT1lO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1VO3RoaXMuZGF0YS5oYXNPd25DYW52YXM9dGhpcy5kYXRhLm5vUm90YXRlO3RoaXMuZGF0YS5ub0hUTUw9ITE7Y29uc3QgYT1sb29rdXBSZWN0KHQuZ2V0QXJyYXkoIkwiKSxbMCwwLDAsMF0pO3RoaXMuZGF0YS5saW5lQ29vcmRpbmF0ZXM9VXRpbC5ub3JtYWxpemVSZWN0KGEpO3RoaXMuc2V0TGluZUVuZGluZ3ModC5nZXRBcnJheSgiTEUiKSk7dGhpcy5kYXRhLmxpbmVFbmRpbmdzPXRoaXMubGluZUVuZGluZ3M7aWYoIXRoaXMuYXBwZWFyYW5jZSl7Y29uc3QgZT10aGlzLmNvbG9yP2dldFBkZkNvbG9yQXJyYXkodGhpcy5jb2xvcik6WzAsMCwwXSxyPXQuZ2V0KCJDQSIpLHM9Z2V0UmdiQ29sb3IodC5nZXRBcnJheSgiSUMiKSxudWxsKSxuPXM/Z2V0UGRmQ29sb3JBcnJheShzKTpudWxsLG89bj9yOm51bGwsZz10aGlzLmJvcmRlclN0eWxlLndpZHRofHwxLGM9MipnLEM9W3RoaXMuZGF0YS5saW5lQ29vcmRpbmF0ZXNbMF0tYyx0aGlzLmRhdGEubGluZUNvb3JkaW5hdGVzWzFdLWMsdGhpcy5kYXRhLmxpbmVDb29yZGluYXRlc1syXStjLHRoaXMuZGF0YS5saW5lQ29vcmRpbmF0ZXNbM10rY107VXRpbC5pbnRlcnNlY3QodGhpcy5yZWN0YW5nbGUsQyl8fCh0aGlzLnJlY3RhbmdsZT1DKTt0aGlzLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjppLGV4dHJhOmAke2d9IHdgLHN0cm9rZUNvbG9yOmUsZmlsbENvbG9yOm4sc3Ryb2tlQWxwaGE6cixmaWxsQWxwaGE6byxwb2ludHNDYWxsYmFjazooZSx0KT0+e2UucHVzaChgJHthWzBdfSAke2FbMV19IG1gLGAke2FbMl19ICR7YVszXX0gbGAsIlMiKTtyZXR1cm5bdFswXS1nLHRbMl0rZyx0WzddLWcsdFszXStnXX19KX19fWNsYXNzIFNxdWFyZUFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dCx4cmVmOml9PWU7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPU07dGhpcy5kYXRhLmhhc093bkNhbnZhcz10aGlzLmRhdGEubm9Sb3RhdGU7dGhpcy5kYXRhLm5vSFRNTD0hMTtpZighdGhpcy5hcHBlYXJhbmNlKXtjb25zdCBlPXRoaXMuY29sb3I/Z2V0UGRmQ29sb3JBcnJheSh0aGlzLmNvbG9yKTpbMCwwLDBdLGE9dC5nZXQoIkNBIikscj1nZXRSZ2JDb2xvcih0LmdldEFycmF5KCJJQyIpLG51bGwpLHM9cj9nZXRQZGZDb2xvckFycmF5KHIpOm51bGwsbj1zP2E6bnVsbDtpZigwPT09dGhpcy5ib3JkZXJTdHlsZS53aWR0aCYmIXMpcmV0dXJuO3RoaXMuX3NldERlZmF1bHRBcHBlYXJhbmNlKHt4cmVmOmksZXh0cmE6YCR7dGhpcy5ib3JkZXJTdHlsZS53aWR0aH0gd2Asc3Ryb2tlQ29sb3I6ZSxmaWxsQ29sb3I6cyxzdHJva2VBbHBoYTphLGZpbGxBbHBoYTpuLHBvaW50c0NhbGxiYWNrOihlLHQpPT57Y29uc3QgaT10WzRdK3RoaXMuYm9yZGVyU3R5bGUud2lkdGgvMixhPXRbNV0rdGhpcy5ib3JkZXJTdHlsZS53aWR0aC8yLHI9dFs2XS10WzRdLXRoaXMuYm9yZGVyU3R5bGUud2lkdGgsbj10WzNdLXRbN10tdGhpcy5ib3JkZXJTdHlsZS53aWR0aDtlLnB1c2goYCR7aX0gJHthfSAke3J9ICR7bn0gcmVgKTtzP2UucHVzaCgiQiIpOmUucHVzaCgiUyIpO3JldHVyblt0WzBdLHRbMl0sdFs3XSx0WzNdXX19KX19fWNsYXNzIENpcmNsZUFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dCx4cmVmOml9PWU7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPUw7aWYoIXRoaXMuYXBwZWFyYW5jZSl7Y29uc3QgZT10aGlzLmNvbG9yP2dldFBkZkNvbG9yQXJyYXkodGhpcy5jb2xvcik6WzAsMCwwXSxhPXQuZ2V0KCJDQSIpLHI9Z2V0UmdiQ29sb3IodC5nZXRBcnJheSgiSUMiKSxudWxsKSxzPXI/Z2V0UGRmQ29sb3JBcnJheShyKTpudWxsLG49cz9hOm51bGw7aWYoMD09PXRoaXMuYm9yZGVyU3R5bGUud2lkdGgmJiFzKXJldHVybjtjb25zdCBvPTQvMypNYXRoLnRhbihNYXRoLlBJLzgpO3RoaXMuX3NldERlZmF1bHRBcHBlYXJhbmNlKHt4cmVmOmksZXh0cmE6YCR7dGhpcy5ib3JkZXJTdHlsZS53aWR0aH0gd2Asc3Ryb2tlQ29sb3I6ZSxmaWxsQ29sb3I6cyxzdHJva2VBbHBoYTphLGZpbGxBbHBoYTpuLHBvaW50c0NhbGxiYWNrOihlLHQpPT57Y29uc3QgaT10WzBdK3RoaXMuYm9yZGVyU3R5bGUud2lkdGgvMixhPXRbMV0tdGhpcy5ib3JkZXJTdHlsZS53aWR0aC8yLHI9dFs2XS10aGlzLmJvcmRlclN0eWxlLndpZHRoLzIsbj10WzddK3RoaXMuYm9yZGVyU3R5bGUud2lkdGgvMixnPWkrKHItaSkvMixjPWErKG4tYSkvMixDPShyLWkpLzIqbyxoPShuLWEpLzIqbztlLnB1c2goYCR7Z30gJHtufSBtYCxgJHtnK0N9ICR7bn0gJHtyfSAke2MraH0gJHtyfSAke2N9IGNgLGAke3J9ICR7Yy1ofSAke2crQ30gJHthfSAke2d9ICR7YX0gY2AsYCR7Zy1DfSAke2F9ICR7aX0gJHtjLWh9ICR7aX0gJHtjfSBjYCxgJHtpfSAke2MraH0gJHtnLUN9ICR7bn0gJHtnfSAke259IGNgLCJoIik7cz9lLnB1c2goIkIiKTplLnB1c2goIlMiKTtyZXR1cm5bdFswXSx0WzJdLHRbN10sdFszXV19fSl9fX1jbGFzcyBQb2x5bGluZUFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dCx4cmVmOml9PWU7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPUo7dGhpcy5kYXRhLmhhc093bkNhbnZhcz10aGlzLmRhdGEubm9Sb3RhdGU7dGhpcy5kYXRhLm5vSFRNTD0hMTt0aGlzLmRhdGEudmVydGljZXM9bnVsbDtpZighKHRoaXMgaW5zdGFuY2VvZiBQb2x5Z29uQW5ub3RhdGlvbikpe3RoaXMuc2V0TGluZUVuZGluZ3ModC5nZXRBcnJheSgiTEUiKSk7dGhpcy5kYXRhLmxpbmVFbmRpbmdzPXRoaXMubGluZUVuZGluZ3N9Y29uc3QgYT10LmdldEFycmF5KCJWZXJ0aWNlcyIpO2lmKCFpc051bWJlckFycmF5KGEsbnVsbCkpcmV0dXJuO2NvbnN0IHI9dGhpcy5kYXRhLnZlcnRpY2VzPUZsb2F0MzJBcnJheS5mcm9tKGEpO2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IGU9dGhpcy5jb2xvcj9nZXRQZGZDb2xvckFycmF5KHRoaXMuY29sb3IpOlswLDAsMF0sYT10LmdldCgiQ0EiKSxzPXRoaXMuYm9yZGVyU3R5bGUud2lkdGh8fDEsbj0yKnMsbz1bMS8wLDEvMCwtMS8wLC0xLzBdO2ZvcihsZXQgZT0wLHQ9ci5sZW5ndGg7ZTx0O2UrPTIpe29bMF09TWF0aC5taW4ob1swXSxyW2VdLW4pO29bMV09TWF0aC5taW4ob1sxXSxyW2UrMV0tbik7b1syXT1NYXRoLm1heChvWzJdLHJbZV0rbik7b1szXT1NYXRoLm1heChvWzNdLHJbZSsxXStuKX1VdGlsLmludGVyc2VjdCh0aGlzLnJlY3RhbmdsZSxvKXx8KHRoaXMucmVjdGFuZ2xlPW8pO3RoaXMuX3NldERlZmF1bHRBcHBlYXJhbmNlKHt4cmVmOmksZXh0cmE6YCR7c30gd2Asc3Ryb2tlQ29sb3I6ZSxzdHJva2VBbHBoYTphLHBvaW50c0NhbGxiYWNrOihlLHQpPT57Zm9yKGxldCB0PTAsaT1yLmxlbmd0aDt0PGk7dCs9MillLnB1c2goYCR7clt0XX0gJHtyW3QrMV19ICR7MD09PXQ/Im0iOiJsIn1gKTtlLnB1c2goIlMiKTtyZXR1cm5bdFswXSx0WzJdLHRbN10sdFszXV19fSl9fX1jbGFzcyBQb2x5Z29uQW5ub3RhdGlvbiBleHRlbmRzIFBvbHlsaW5lQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9SH19Y2xhc3MgQ2FyZXRBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9T319Y2xhc3MgSW5rQW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5kYXRhLmhhc093bkNhbnZhcz10aGlzLmRhdGEubm9Sb3RhdGU7dGhpcy5kYXRhLm5vSFRNTD0hMTtjb25zdHtkaWN0OnQseHJlZjppfT1lO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1XO3RoaXMuZGF0YS5pbmtMaXN0cz1bXTt0aGlzLmRhdGEuaXNFZGl0YWJsZT0hdGhpcy5kYXRhLm5vSFRNTCYmIklua0hpZ2hsaWdodCI9PT10aGlzLmRhdGEuaXQ7dGhpcy5kYXRhLm5vSFRNTD0hMTt0aGlzLmRhdGEub3BhY2l0eT10LmdldCgiQ0EiKXx8MTtjb25zdCBhPXQuZ2V0QXJyYXkoIklua0xpc3QiKTtpZihBcnJheS5pc0FycmF5KGEpKXtmb3IobGV0IGU9MCx0PWEubGVuZ3RoO2U8dDsrK2Upe2lmKCFBcnJheS5pc0FycmF5KGFbZV0pKWNvbnRpbnVlO2NvbnN0IHQ9bmV3IEZsb2F0MzJBcnJheShhW2VdLmxlbmd0aCk7dGhpcy5kYXRhLmlua0xpc3RzLnB1c2godCk7Zm9yKGxldCByPTAscz1hW2VdLmxlbmd0aDtyPHM7cis9Mil7Y29uc3Qgcz1pLmZldGNoSWZSZWYoYVtlXVtyXSksbj1pLmZldGNoSWZSZWYoYVtlXVtyKzFdKTtpZigibnVtYmVyIj09dHlwZW9mIHMmJiJudW1iZXIiPT10eXBlb2Ygbil7dFtyXT1zO3RbcisxXT1ufX19aWYoIXRoaXMuYXBwZWFyYW5jZSl7Y29uc3QgZT10aGlzLmNvbG9yP2dldFBkZkNvbG9yQXJyYXkodGhpcy5jb2xvcik6WzAsMCwwXSxhPXQuZ2V0KCJDQSIpLHI9dGhpcy5ib3JkZXJTdHlsZS53aWR0aHx8MSxzPTIqcixuPVsxLzAsMS8wLC0xLzAsLTEvMF07Zm9yKGNvbnN0IGUgb2YgdGhpcy5kYXRhLmlua0xpc3RzKWZvcihsZXQgdD0wLGk9ZS5sZW5ndGg7dDxpO3QrPTIpe25bMF09TWF0aC5taW4oblswXSxlW3RdLXMpO25bMV09TWF0aC5taW4oblsxXSxlW3QrMV0tcyk7blsyXT1NYXRoLm1heChuWzJdLGVbdF0rcyk7blszXT1NYXRoLm1heChuWzNdLGVbdCsxXStzKX1VdGlsLmludGVyc2VjdCh0aGlzLnJlY3RhbmdsZSxuKXx8KHRoaXMucmVjdGFuZ2xlPW4pO3RoaXMuX3NldERlZmF1bHRBcHBlYXJhbmNlKHt4cmVmOmksZXh0cmE6YCR7cn0gd2Asc3Ryb2tlQ29sb3I6ZSxzdHJva2VBbHBoYTphLHBvaW50c0NhbGxiYWNrOihlLHQpPT57Zm9yKGNvbnN0IHQgb2YgdGhpcy5kYXRhLmlua0xpc3RzKXtmb3IobGV0IGk9MCxhPXQubGVuZ3RoO2k8YTtpKz0yKWUucHVzaChgJHt0W2ldfSAke3RbaSsxXX0gJHswPT09aT8ibSI6ImwifWApO2UucHVzaCgiUyIpfXJldHVyblt0WzBdLHRbMl0sdFs3XSx0WzNdXX19KX19fXN0YXRpYyBjcmVhdGVOZXdEaWN0KGUsdCx7YXBSZWY6aSxhcDphfSl7Y29uc3R7Y29sb3I6cixvcGFjaXR5OnMscGF0aHM6bixvdXRsaW5lczpvLHJlY3Q6Zyxyb3RhdGlvbjpjLHRoaWNrbmVzczpDfT1lLGg9bmV3IERpY3QodCk7aC5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJBbm5vdCIpKTtoLnNldCgiU3VidHlwZSIsTmFtZS5nZXQoIkluayIpKTtoLnNldCgiQ3JlYXRpb25EYXRlIixgRDoke2dldE1vZGlmaWNhdGlvbkRhdGUoKX1gKTtoLnNldCgiUmVjdCIsZyk7aC5zZXQoIklua0xpc3QiLG8/LnBvaW50c3x8bi5tYXAoKGU9PmUucG9pbnRzKSkpO2guc2V0KCJGIiw0KTtoLnNldCgiUm90YXRlIixjKTtvJiZoLnNldCgiSVQiLE5hbWUuZ2V0KCJJbmtIaWdobGlnaHQiKSk7Y29uc3QgbD1uZXcgRGljdCh0KTtoLnNldCgiQlMiLGwpO2wuc2V0KCJXIixDKTtoLnNldCgiQyIsQXJyYXkuZnJvbShyLChlPT5lLzI1NSkpKTtoLnNldCgiQ0EiLHMpO2NvbnN0IFE9bmV3IERpY3QodCk7aC5zZXQoIkFQIixRKTtpP1Euc2V0KCJOIixpKTpRLnNldCgiTiIsYSk7cmV0dXJuIGh9c3RhdGljIGFzeW5jIGNyZWF0ZU5ld0FwcGVhcmFuY2VTdHJlYW0oZSx0LGkpe2lmKGUub3V0bGluZXMpcmV0dXJuIHRoaXMuY3JlYXRlTmV3QXBwZWFyYW5jZVN0cmVhbUZvckhpZ2hsaWdodChlLHQsaSk7Y29uc3R7Y29sb3I6YSxyZWN0OnIscGF0aHM6cyx0aGlja25lc3M6bixvcGFjaXR5Om99PWUsZz1bYCR7bn0gdyAxIEogMSBqYCxgJHtnZXRQZGZDb2xvcihhLCExKX1gXTsxIT09byYmZy5wdXNoKCIvUjAgZ3MiKTtjb25zdCBjPVtdO2Zvcihjb25zdHtiZXppZXI6ZX1vZiBzKXtjLmxlbmd0aD0wO2MucHVzaChgJHtudW1iZXJUb1N0cmluZyhlWzBdKX0gJHtudW1iZXJUb1N0cmluZyhlWzFdKX0gbWApO2lmKDI9PT1lLmxlbmd0aCljLnB1c2goYCR7bnVtYmVyVG9TdHJpbmcoZVswXSl9ICR7bnVtYmVyVG9TdHJpbmcoZVsxXSl9IGwgU2ApO2Vsc2V7Zm9yKGxldCB0PTIsaT1lLmxlbmd0aDt0PGk7dCs9Nil7Y29uc3QgaT1lLnNsaWNlKHQsdCs2KS5tYXAobnVtYmVyVG9TdHJpbmcpLmpvaW4oIiAiKTtjLnB1c2goYCR7aX0gY2ApfWMucHVzaCgiUyIpfWcucHVzaChjLmpvaW4oIlxuIikpfWNvbnN0IEM9Zy5qb2luKCJcbiIpLGg9bmV3IERpY3QodCk7aC5zZXQoIkZvcm1UeXBlIiwxKTtoLnNldCgiU3VidHlwZSIsTmFtZS5nZXQoIkZvcm0iKSk7aC5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJYT2JqZWN0IikpO2guc2V0KCJCQm94IixyKTtoLnNldCgiTGVuZ3RoIixDLmxlbmd0aCk7aWYoMSE9PW8pe2NvbnN0IGU9bmV3IERpY3QodCksaT1uZXcgRGljdCh0KSxhPW5ldyBEaWN0KHQpO2Euc2V0KCJDQSIsbyk7YS5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJFeHRHU3RhdGUiKSk7aS5zZXQoIlIwIixhKTtlLnNldCgiRXh0R1N0YXRlIixpKTtoLnNldCgiUmVzb3VyY2VzIixlKX1jb25zdCBsPW5ldyBTdHJpbmdTdHJlYW0oQyk7bC5kaWN0PWg7cmV0dXJuIGx9c3RhdGljIGFzeW5jIGNyZWF0ZU5ld0FwcGVhcmFuY2VTdHJlYW1Gb3JIaWdobGlnaHQoZSx0LGkpe2NvbnN0e2NvbG9yOmEscmVjdDpyLG91dGxpbmVzOntvdXRsaW5lOnN9LG9wYWNpdHk6bn09ZSxvPVtgJHtnZXRQZGZDb2xvcihhLCEwKX1gLCIvUjAgZ3MiXTtvLnB1c2goYCR7bnVtYmVyVG9TdHJpbmcoc1s0XSl9ICR7bnVtYmVyVG9TdHJpbmcoc1s1XSl9IG1gKTtmb3IobGV0IGU9Nix0PXMubGVuZ3RoO2U8dDtlKz02KWlmKGlzTmFOKHNbZV0pfHxudWxsPT09c1tlXSlvLnB1c2goYCR7bnVtYmVyVG9TdHJpbmcoc1tlKzRdKX0gJHtudW1iZXJUb1N0cmluZyhzW2UrNV0pfSBsYCk7ZWxzZXtjb25zdCB0PXMuc2xpY2UoZSxlKzYpLm1hcChudW1iZXJUb1N0cmluZykuam9pbigiICIpO28ucHVzaChgJHt0fSBjYCl9by5wdXNoKCJoIGYiKTtjb25zdCBnPW8uam9pbigiXG4iKSxjPW5ldyBEaWN0KHQpO2Muc2V0KCJGb3JtVHlwZSIsMSk7Yy5zZXQoIlN1YnR5cGUiLE5hbWUuZ2V0KCJGb3JtIikpO2Muc2V0KCJUeXBlIixOYW1lLmdldCgiWE9iamVjdCIpKTtjLnNldCgiQkJveCIscik7Yy5zZXQoIkxlbmd0aCIsZy5sZW5ndGgpO2NvbnN0IEM9bmV3IERpY3QodCksaD1uZXcgRGljdCh0KTtDLnNldCgiRXh0R1N0YXRlIixoKTtjLnNldCgiUmVzb3VyY2VzIixDKTtjb25zdCBsPW5ldyBEaWN0KHQpO2guc2V0KCJSMCIsbCk7bC5zZXQoIkJNIixOYW1lLmdldCgiTXVsdGlwbHkiKSk7aWYoMSE9PW4pe2wuc2V0KCJjYSIsbik7bC5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJFeHRHU3RhdGUiKSl9Y29uc3QgUT1uZXcgU3RyaW5nU3RyZWFtKGcpO1EuZGljdD1jO3JldHVybiBRfX1jbGFzcyBIaWdobGlnaHRBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnQseHJlZjppfT1lO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT12O3RoaXMuZGF0YS5pc0VkaXRhYmxlPSF0aGlzLmRhdGEubm9IVE1MO3RoaXMuZGF0YS5ub0hUTUw9ITE7dGhpcy5kYXRhLm9wYWNpdHk9dC5nZXQoIkNBIil8fDE7aWYodGhpcy5kYXRhLnF1YWRQb2ludHM9Z2V0UXVhZFBvaW50cyh0LG51bGwpKXtjb25zdCBlPXRoaXMuYXBwZWFyYW5jZT8uZGljdC5nZXQoIlJlc291cmNlcyIpO2lmKCF0aGlzLmFwcGVhcmFuY2V8fCFlPy5oYXMoIkV4dEdTdGF0ZSIpKXt0aGlzLmFwcGVhcmFuY2UmJndhcm4oIkhpZ2hsaWdodEFubm90YXRpb24gLSBpZ25vcmluZyBidWlsdC1pbiBhcHBlYXJhbmNlIHN0cmVhbS4iKTtjb25zdCBlPXRoaXMuY29sb3I/Z2V0UGRmQ29sb3JBcnJheSh0aGlzLmNvbG9yKTpbMSwxLDBdLGE9dC5nZXQoIkNBIik7dGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6aSxmaWxsQ29sb3I6ZSxibGVuZE1vZGU6Ik11bHRpcGx5IixmaWxsQWxwaGE6YSxwb2ludHNDYWxsYmFjazooZSx0KT0+e2UucHVzaChgJHt0WzBdfSAke3RbMV19IG1gLGAke3RbMl19ICR7dFszXX0gbGAsYCR7dFs2XX0gJHt0WzddfSBsYCxgJHt0WzRdfSAke3RbNV19IGxgLCJmIik7cmV0dXJuW3RbMF0sdFsyXSx0WzddLHRbM11dfX0pfX1lbHNlIHRoaXMuZGF0YS5wb3B1cFJlZj1udWxsfXN0YXRpYyBjcmVhdGVOZXdEaWN0KGUsdCx7YXBSZWY6aSxhcDphfSl7Y29uc3R7Y29sb3I6cixvbGRBbm5vdGF0aW9uOnMsb3BhY2l0eTpuLHJlY3Q6byxyb3RhdGlvbjpnLHVzZXI6YyxxdWFkUG9pbnRzOkN9PWUsaD1zfHxuZXcgRGljdCh0KTtoLnNldCgiVHlwZSIsTmFtZS5nZXQoIkFubm90IikpO2guc2V0KCJTdWJ0eXBlIixOYW1lLmdldCgiSGlnaGxpZ2h0IikpO2guc2V0KHM/Ik0iOiJDcmVhdGlvbkRhdGUiLGBEOiR7Z2V0TW9kaWZpY2F0aW9uRGF0ZSgpfWApO2guc2V0KCJDcmVhdGlvbkRhdGUiLGBEOiR7Z2V0TW9kaWZpY2F0aW9uRGF0ZSgpfWApO2guc2V0KCJSZWN0IixvKTtoLnNldCgiRiIsNCk7aC5zZXQoIkJvcmRlciIsWzAsMCwwXSk7aC5zZXQoIlJvdGF0ZSIsZyk7aC5zZXQoIlF1YWRQb2ludHMiLEMpO2guc2V0KCJDIixBcnJheS5mcm9tKHIsKGU9PmUvMjU1KSkpO2guc2V0KCJDQSIsbik7YyYmaC5zZXQoIlQiLHN0cmluZ1RvQXNjaWlPclVURjE2QkUoYykpO2lmKGl8fGEpe2NvbnN0IGU9bmV3IERpY3QodCk7aC5zZXQoIkFQIixlKTtlLnNldCgiTiIsaXx8YSl9cmV0dXJuIGh9c3RhdGljIGFzeW5jIGNyZWF0ZU5ld0FwcGVhcmFuY2VTdHJlYW0oZSx0LGkpe2NvbnN0e2NvbG9yOmEscmVjdDpyLG91dGxpbmVzOnMsb3BhY2l0eTpufT1lLG89W2Ake2dldFBkZkNvbG9yKGEsITApfWAsIi9SMCBncyJdLGc9W107Zm9yKGNvbnN0IGUgb2Ygcyl7Zy5sZW5ndGg9MDtnLnB1c2goYCR7bnVtYmVyVG9TdHJpbmcoZVswXSl9ICR7bnVtYmVyVG9TdHJpbmcoZVsxXSl9IG1gKTtmb3IobGV0IHQ9MixpPWUubGVuZ3RoO3Q8aTt0Kz0yKWcucHVzaChgJHtudW1iZXJUb1N0cmluZyhlW3RdKX0gJHtudW1iZXJUb1N0cmluZyhlW3QrMV0pfSBsYCk7Zy5wdXNoKCJoIik7by5wdXNoKGcuam9pbigiXG4iKSl9by5wdXNoKCJmKiIpO2NvbnN0IGM9by5qb2luKCJcbiIpLEM9bmV3IERpY3QodCk7Qy5zZXQoIkZvcm1UeXBlIiwxKTtDLnNldCgiU3VidHlwZSIsTmFtZS5nZXQoIkZvcm0iKSk7Qy5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJYT2JqZWN0IikpO0Muc2V0KCJCQm94IixyKTtDLnNldCgiTGVuZ3RoIixjLmxlbmd0aCk7Y29uc3QgaD1uZXcgRGljdCh0KSxsPW5ldyBEaWN0KHQpO2guc2V0KCJFeHRHU3RhdGUiLGwpO0Muc2V0KCJSZXNvdXJjZXMiLGgpO2NvbnN0IFE9bmV3IERpY3QodCk7bC5zZXQoIlIwIixRKTtRLnNldCgiQk0iLE5hbWUuZ2V0KCJNdWx0aXBseSIpKTtpZigxIT09bil7US5zZXQoImNhIixuKTtRLnNldCgiVHlwZSIsTmFtZS5nZXQoIkV4dEdTdGF0ZSIpKX1jb25zdCBFPW5ldyBTdHJpbmdTdHJlYW0oYyk7RS5kaWN0PUM7cmV0dXJuIEV9fWNsYXNzIFVuZGVybGluZUFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dCx4cmVmOml9PWU7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPVk7aWYodGhpcy5kYXRhLnF1YWRQb2ludHM9Z2V0UXVhZFBvaW50cyh0LG51bGwpKXtpZighdGhpcy5hcHBlYXJhbmNlKXtjb25zdCBlPXRoaXMuY29sb3I/Z2V0UGRmQ29sb3JBcnJheSh0aGlzLmNvbG9yKTpbMCwwLDBdLGE9dC5nZXQoIkNBIik7dGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6aSxleHRyYToiW10gMCBkIDAuNTcxIHciLHN0cm9rZUNvbG9yOmUsc3Ryb2tlQWxwaGE6YSxwb2ludHNDYWxsYmFjazooZSx0KT0+e2UucHVzaChgJHt0WzRdfSAke3RbNV0rMS4zfSBtYCxgJHt0WzZdfSAke3RbN10rMS4zfSBsYCwiUyIpO3JldHVyblt0WzBdLHRbMl0sdFs3XSx0WzNdXX19KX19ZWxzZSB0aGlzLmRhdGEucG9wdXBSZWY9bnVsbH19Y2xhc3MgU3F1aWdnbHlBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnQseHJlZjppfT1lO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1UO2lmKHRoaXMuZGF0YS5xdWFkUG9pbnRzPWdldFF1YWRQb2ludHModCxudWxsKSl7aWYoIXRoaXMuYXBwZWFyYW5jZSl7Y29uc3QgZT10aGlzLmNvbG9yP2dldFBkZkNvbG9yQXJyYXkodGhpcy5jb2xvcik6WzAsMCwwXSxhPXQuZ2V0KCJDQSIpO3RoaXMuX3NldERlZmF1bHRBcHBlYXJhbmNlKHt4cmVmOmksZXh0cmE6IltdIDAgZCAxIHciLHN0cm9rZUNvbG9yOmUsc3Ryb2tlQWxwaGE6YSxwb2ludHNDYWxsYmFjazooZSx0KT0+e2NvbnN0IGk9KHRbMV0tdFs1XSkvNjtsZXQgYT1pLHI9dFs0XTtjb25zdCBzPXRbNV0sbj10WzZdO2UucHVzaChgJHtyfSAke3MrYX0gbWApO2Rve3IrPTI7YT0wPT09YT9pOjA7ZS5wdXNoKGAke3J9ICR7cythfSBsYCl9d2hpbGUocjxuKTtlLnB1c2goIlMiKTtyZXR1cm5bdFs0XSxuLHMtMippLHMrMippXX19KX19ZWxzZSB0aGlzLmRhdGEucG9wdXBSZWY9bnVsbH19Y2xhc3MgU3RyaWtlT3V0QW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0LHhyZWY6aX09ZTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9SztpZih0aGlzLmRhdGEucXVhZFBvaW50cz1nZXRRdWFkUG9pbnRzKHQsbnVsbCkpe2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IGU9dGhpcy5jb2xvcj9nZXRQZGZDb2xvckFycmF5KHRoaXMuY29sb3IpOlswLDAsMF0sYT10LmdldCgiQ0EiKTt0aGlzLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjppLGV4dHJhOiJbXSAwIGQgMSB3IixzdHJva2VDb2xvcjplLHN0cm9rZUFscGhhOmEscG9pbnRzQ2FsbGJhY2s6KGUsdCk9PntlLnB1c2goKHRbMF0rdFs0XSkvMisiICIrKHRbMV0rdFs1XSkvMisiIG0iLCh0WzJdK3RbNl0pLzIrIiAiKyh0WzNdK3RbN10pLzIrIiBsIiwiUyIpO3JldHVyblt0WzBdLHRbMl0sdFs3XSx0WzNdXX19KX19ZWxzZSB0aGlzLmRhdGEucG9wdXBSZWY9bnVsbH19Y2xhc3MgU3RhbXBBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbnsjSztjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9cTt0aGlzLiNLPXRoaXMuZGF0YS5oYXNPd25DYW52YXM9dGhpcy5kYXRhLm5vUm90YXRlO3RoaXMuZGF0YS5pc0VkaXRhYmxlPSF0aGlzLmRhdGEubm9IVE1MO3RoaXMuZGF0YS5ub0hUTUw9ITF9bXVzdEJlVmlld2VkV2hlbkVkaXRpbmcoZSx0PW51bGwpe2lmKGUpe2lmKCF0aGlzLmRhdGEuaXNFZGl0YWJsZSlyZXR1cm4hMTt0aGlzLiNLPXRoaXMuZGF0YS5oYXNPd25DYW52YXM7dGhpcy5kYXRhLmhhc093bkNhbnZhcz0hMDtyZXR1cm4hMH10aGlzLmRhdGEuaGFzT3duQ2FudmFzPXRoaXMuI0s7cmV0dXJuIXQ/Lmhhcyh0aGlzLmRhdGEuaWQpfXN0YXRpYyBhc3luYyBjcmVhdGVJbWFnZShlLHQpe2NvbnN0e3dpZHRoOmksaGVpZ2h0OmF9PWUscj1uZXcgT2Zmc2NyZWVuQ2FudmFzKGksYSkscz1yLmdldENvbnRleHQoIjJkIix7YWxwaGE6ITB9KTtzLmRyYXdJbWFnZShlLDAsMCk7Y29uc3Qgbj1zLmdldEltYWdlRGF0YSgwLDAsaSxhKS5kYXRhLG89bmV3IFVpbnQzMkFycmF5KG4uYnVmZmVyKSxnPW8uc29tZShGZWF0dXJlVGVzdC5pc0xpdHRsZUVuZGlhbj9lPT5lPj4+MjQhPTI1NTplPT4yNTUhPSgyNTUmZSkpO2lmKGcpe3MuZmlsbFN0eWxlPSJ3aGl0ZSI7cy5maWxsUmVjdCgwLDAsaSxhKTtzLmRyYXdJbWFnZShlLDAsMCl9Y29uc3QgYz1yLmNvbnZlcnRUb0Jsb2Ioe3R5cGU6ImltYWdlL2pwZWciLHF1YWxpdHk6MX0pLnRoZW4oKGU9PmUuYXJyYXlCdWZmZXIoKSkpLEM9TmFtZS5nZXQoIlhPYmplY3QiKSxoPU5hbWUuZ2V0KCJJbWFnZSIpLGw9bmV3IERpY3QodCk7bC5zZXQoIlR5cGUiLEMpO2wuc2V0KCJTdWJ0eXBlIixoKTtsLnNldCgiQml0c1BlckNvbXBvbmVudCIsOCk7bC5zZXQoIkNvbG9yU3BhY2UiLE5hbWUuZ2V0KCJEZXZpY2VSR0IiKSk7bC5zZXQoIkZpbHRlciIsTmFtZS5nZXQoIkRDVERlY29kZSIpKTtsLnNldCgiQkJveCIsWzAsMCxpLGFdKTtsLnNldCgiV2lkdGgiLGkpO2wuc2V0KCJIZWlnaHQiLGEpO2xldCBRPW51bGw7aWYoZyl7Y29uc3QgZT1uZXcgVWludDhBcnJheShvLmxlbmd0aCk7aWYoRmVhdHVyZVRlc3QuaXNMaXR0bGVFbmRpYW4pZm9yKGxldCB0PTAsaT1vLmxlbmd0aDt0PGk7dCsrKWVbdF09b1t0XT4+PjI0O2Vsc2UgZm9yKGxldCB0PTAsaT1vLmxlbmd0aDt0PGk7dCsrKWVbdF09MjU1Jm9bdF07Y29uc3Qgcj1uZXcgRGljdCh0KTtyLnNldCgiVHlwZSIsQyk7ci5zZXQoIlN1YnR5cGUiLGgpO3Iuc2V0KCJCaXRzUGVyQ29tcG9uZW50Iiw4KTtyLnNldCgiQ29sb3JTcGFjZSIsTmFtZS5nZXQoIkRldmljZUdyYXkiKSk7ci5zZXQoIldpZHRoIixpKTtyLnNldCgiSGVpZ2h0IixhKTtRPW5ldyBTdHJlYW0oZSwwLDAscil9cmV0dXJue2ltYWdlU3RyZWFtOm5ldyBTdHJlYW0oYXdhaXQgYywwLDAsbCksc21hc2tTdHJlYW06USx3aWR0aDppLGhlaWdodDphfX1zdGF0aWMgY3JlYXRlTmV3RGljdChlLHQse2FwUmVmOmksYXA6YX0pe2NvbnN0e29sZEFubm90YXRpb246cixyZWN0OnMscm90YXRpb246bix1c2VyOm99PWUsZz1yfHxuZXcgRGljdCh0KTtnLnNldCgiVHlwZSIsTmFtZS5nZXQoIkFubm90IikpO2cuc2V0KCJTdWJ0eXBlIixOYW1lLmdldCgiU3RhbXAiKSk7Zy5zZXQocj8iTSI6IkNyZWF0aW9uRGF0ZSIsYEQ6JHtnZXRNb2RpZmljYXRpb25EYXRlKCl9YCk7Zy5zZXQoIkNyZWF0aW9uRGF0ZSIsYEQ6JHtnZXRNb2RpZmljYXRpb25EYXRlKCl9YCk7Zy5zZXQoIlJlY3QiLHMpO2cuc2V0KCJGIiw0KTtnLnNldCgiQm9yZGVyIixbMCwwLDBdKTtnLnNldCgiUm90YXRlIixuKTtvJiZnLnNldCgiVCIsc3RyaW5nVG9Bc2NpaU9yVVRGMTZCRShvKSk7aWYoaXx8YSl7Y29uc3QgZT1uZXcgRGljdCh0KTtnLnNldCgiQVAiLGUpO2k/ZS5zZXQoIk4iLGkpOmUuc2V0KCJOIixhKX1yZXR1cm4gZ31zdGF0aWMgYXN5bmMgY3JlYXRlTmV3QXBwZWFyYW5jZVN0cmVhbShlLHQsaSl7aWYoZS5vbGRBbm5vdGF0aW9uKXJldHVybiBudWxsO2NvbnN0e3JvdGF0aW9uOmF9PWUse2ltYWdlUmVmOnIsd2lkdGg6cyxoZWlnaHQ6bn09aS5pbWFnZSxvPW5ldyBEaWN0KHQpLGc9bmV3IERpY3QodCk7by5zZXQoIlhPYmplY3QiLGcpO2cuc2V0KCJJbTAiLHIpO2NvbnN0IGM9YHEgJHtzfSAwIDAgJHtufSAwIDAgY20gL0ltMCBEbyBRYCxDPW5ldyBEaWN0KHQpO0Muc2V0KCJGb3JtVHlwZSIsMSk7Qy5zZXQoIlN1YnR5cGUiLE5hbWUuZ2V0KCJGb3JtIikpO0Muc2V0KCJUeXBlIixOYW1lLmdldCgiWE9iamVjdCIpKTtDLnNldCgiQkJveCIsWzAsMCxzLG5dKTtDLnNldCgiUmVzb3VyY2VzIixvKTtpZihhKXtjb25zdCBlPWdldFJvdGF0aW9uTWF0cml4KGEscyxuKTtDLnNldCgiTWF0cml4IixlKX1jb25zdCBoPW5ldyBTdHJpbmdTdHJlYW0oYyk7aC5kaWN0PUM7cmV0dXJuIGh9fWNsYXNzIEZpbGVBdHRhY2htZW50QW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0LHhyZWY6aX09ZSxhPW5ldyBGaWxlU3BlYyh0LmdldCgiRlMiKSxpKTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9WDt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPXRoaXMuZGF0YS5ub1JvdGF0ZTt0aGlzLmRhdGEubm9IVE1MPSExO3RoaXMuZGF0YS5maWxlPWEuc2VyaWFsaXphYmxlO2NvbnN0IHI9dC5nZXQoIk5hbWUiKTt0aGlzLmRhdGEubmFtZT1yIGluc3RhbmNlb2YgTmFtZT9zdHJpbmdUb1BERlN0cmluZyhyLm5hbWUpOiJQdXNoUGluIjtjb25zdCBzPXQuZ2V0KCJjYSIpO3RoaXMuZGF0YS5maWxsQWxwaGE9Im51bWJlciI9PXR5cGVvZiBzJiZzPj0wJiZzPD0xP3M6bnVsbH19ZnVuY3Rpb24gZGVjb2RlU3RyaW5nKGUpe3RyeXtyZXR1cm4gc3RyaW5nVG9VVEY4U3RyaW5nKGUpfWNhdGNoKHQpe3dhcm4oYFVURi04IGRlY29kaW5nIGZhaWxlZDogIiR7dH0iLmApO3JldHVybiBlfX1jbGFzcyBEYXRhc2V0WE1MUGFyc2VyIGV4dGVuZHMgU2ltcGxlWE1MUGFyc2Vye2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMubm9kZT1udWxsfW9uRW5kRWxlbWVudChlKXtjb25zdCB0PXN1cGVyLm9uRW5kRWxlbWVudChlKTtpZih0JiYieGZhOmRhdGFzZXRzIj09PWUpe3RoaXMubm9kZT10O3Rocm93IG5ldyBFcnJvcigiQWJvcnRpbmcgRGF0YXNldFhNTFBhcnNlci4iKX19fWNsYXNzIERhdGFzZXRSZWFkZXJ7Y29uc3RydWN0b3IoZSl7aWYoZS5kYXRhc2V0cyl0aGlzLm5vZGU9bmV3IFNpbXBsZVhNTFBhcnNlcih7aGFzQXR0cmlidXRlczohMH0pLnBhcnNlRnJvbVN0cmluZyhlLmRhdGFzZXRzKS5kb2N1bWVudEVsZW1lbnQ7ZWxzZXtjb25zdCB0PW5ldyBEYXRhc2V0WE1MUGFyc2VyKHtoYXNBdHRyaWJ1dGVzOiEwfSk7dHJ5e3QucGFyc2VGcm9tU3RyaW5nKGVbInhkcDp4ZHAiXSl9Y2F0Y2h7fXRoaXMubm9kZT10Lm5vZGV9fWdldFZhbHVlKGUpe2lmKCF0aGlzLm5vZGV8fCFlKXJldHVybiIiO2NvbnN0IHQ9dGhpcy5ub2RlLnNlYXJjaE5vZGUocGFyc2VYRkFQYXRoKGUpLDApO2lmKCF0KXJldHVybiIiO2NvbnN0IGk9dC5maXJzdENoaWxkO3JldHVybiJ2YWx1ZSI9PT1pPy5ub2RlTmFtZT90LmNoaWxkcmVuLm1hcCgoZT0+ZGVjb2RlU3RyaW5nKGUudGV4dENvbnRlbnQpKSk6ZGVjb2RlU3RyaW5nKHQudGV4dENvbnRlbnQpfX1jbGFzcyBYUmVmeyNxPW51bGw7Y29uc3RydWN0b3IoZSx0KXt0aGlzLnN0cmVhbT1lO3RoaXMucGRmTWFuYWdlcj10O3RoaXMuZW50cmllcz1bXTt0aGlzLl94cmVmU3Rtcz1uZXcgU2V0O3RoaXMuX2NhY2hlTWFwPW5ldyBNYXA7dGhpcy5fcGVuZGluZ1JlZnM9bmV3IFJlZlNldDt0aGlzLl9uZXdQZXJzaXN0ZW50UmVmTnVtPW51bGw7dGhpcy5fbmV3VGVtcG9yYXJ5UmVmTnVtPW51bGw7dGhpcy5fcGVyc2lzdGVudFJlZnNDYWNoZT1udWxsfWdldE5ld1BlcnNpc3RlbnRSZWYoZSl7bnVsbD09PXRoaXMuX25ld1BlcnNpc3RlbnRSZWZOdW0mJih0aGlzLl9uZXdQZXJzaXN0ZW50UmVmTnVtPXRoaXMuZW50cmllcy5sZW5ndGh8fDEpO2NvbnN0IHQ9dGhpcy5fbmV3UGVyc2lzdGVudFJlZk51bSsrO3RoaXMuX2NhY2hlTWFwLnNldCh0LGUpO3JldHVybiBSZWYuZ2V0KHQsMCl9Z2V0TmV3VGVtcG9yYXJ5UmVmKCl7aWYobnVsbD09PXRoaXMuX25ld1RlbXBvcmFyeVJlZk51bSl7dGhpcy5fbmV3VGVtcG9yYXJ5UmVmTnVtPXRoaXMuZW50cmllcy5sZW5ndGh8fDE7aWYodGhpcy5fbmV3UGVyc2lzdGVudFJlZk51bSl7dGhpcy5fcGVyc2lzdGVudFJlZnNDYWNoZT1uZXcgTWFwO2ZvcihsZXQgZT10aGlzLl9uZXdUZW1wb3JhcnlSZWZOdW07ZTx0aGlzLl9uZXdQZXJzaXN0ZW50UmVmTnVtO2UrKyl7dGhpcy5fcGVyc2lzdGVudFJlZnNDYWNoZS5zZXQoZSx0aGlzLl9jYWNoZU1hcC5nZXQoZSkpO3RoaXMuX2NhY2hlTWFwLmRlbGV0ZShlKX19fXJldHVybiBSZWYuZ2V0KHRoaXMuX25ld1RlbXBvcmFyeVJlZk51bSsrLDApfXJlc2V0TmV3VGVtcG9yYXJ5UmVmKCl7dGhpcy5fbmV3VGVtcG9yYXJ5UmVmTnVtPW51bGw7aWYodGhpcy5fcGVyc2lzdGVudFJlZnNDYWNoZSlmb3IoY29uc3RbZSx0XW9mIHRoaXMuX3BlcnNpc3RlbnRSZWZzQ2FjaGUpdGhpcy5fY2FjaGVNYXAuc2V0KGUsdCk7dGhpcy5fcGVyc2lzdGVudFJlZnNDYWNoZT1udWxsfXNldFN0YXJ0WFJlZihlKXt0aGlzLnN0YXJ0WFJlZlF1ZXVlPVtlXX1wYXJzZShlPSExKXtsZXQgdCxpLGE7aWYoZSl7d2FybigiSW5kZXhpbmcgYWxsIFBERiBvYmplY3RzIik7dD10aGlzLmluZGV4T2JqZWN0cygpfWVsc2UgdD10aGlzLnJlYWRYUmVmKCk7dC5hc3NpZ25YcmVmKHRoaXMpO3RoaXMudHJhaWxlcj10O3RyeXtpPXQuZ2V0KCJFbmNyeXB0Iil9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7d2FybihgWFJlZi5wYXJzZSAtIEludmFsaWQgIkVuY3J5cHQiIHJlZmVyZW5jZTogIiR7ZX0iLmApfWlmKGkgaW5zdGFuY2VvZiBEaWN0KXtjb25zdCBlPXQuZ2V0KCJJRCIpLGE9ZT8ubGVuZ3RoP2VbMF06IiI7aS5zdXBwcmVzc0VuY3J5cHRpb249ITA7dGhpcy5lbmNyeXB0PW5ldyBDaXBoZXJUcmFuc2Zvcm1GYWN0b3J5KGksYSx0aGlzLnBkZk1hbmFnZXIucGFzc3dvcmQpfXRyeXthPXQuZ2V0KCJSb290Iil9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7d2FybihgWFJlZi5wYXJzZSAtIEludmFsaWQgIlJvb3QiIHJlZmVyZW5jZTogIiR7ZX0iLmApfWlmKGEgaW5zdGFuY2VvZiBEaWN0KXRyeXtpZihhLmdldCgiUGFnZXMiKWluc3RhbmNlb2YgRGljdCl7dGhpcy5yb290PWE7cmV0dXJufX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTt3YXJuKGBYUmVmLnBhcnNlIC0gSW52YWxpZCAiUGFnZXMiIHJlZmVyZW5jZTogIiR7ZX0iLmApfWlmKCFlKXRocm93IG5ldyBYUmVmUGFyc2VFeGNlcHRpb247dGhyb3cgbmV3IEludmFsaWRQREZFeGNlcHRpb24oIkludmFsaWQgUm9vdCByZWZlcmVuY2UuIil9cHJvY2Vzc1hSZWZUYWJsZShlKXsidGFibGVTdGF0ZSJpbiB0aGlzfHwodGhpcy50YWJsZVN0YXRlPXtlbnRyeU51bTowLHN0cmVhbVBvczplLmxleGVyLnN0cmVhbS5wb3MscGFyc2VyQnVmMTplLmJ1ZjEscGFyc2VyQnVmMjplLmJ1ZjJ9KTtpZighaXNDbWQodGhpcy5yZWFkWFJlZlRhYmxlKGUpLCJ0cmFpbGVyIikpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgdGFibGU6IGNvdWxkIG5vdCBmaW5kIHRyYWlsZXIgZGljdGlvbmFyeSIpO2xldCB0PWUuZ2V0T2JqKCk7dCBpbnN0YW5jZW9mIERpY3R8fCF0LmRpY3R8fCh0PXQuZGljdCk7aWYoISh0IGluc3RhbmNlb2YgRGljdCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgdGFibGU6IGNvdWxkIG5vdCBwYXJzZSB0cmFpbGVyIGRpY3Rpb25hcnkiKTtkZWxldGUgdGhpcy50YWJsZVN0YXRlO3JldHVybiB0fXJlYWRYUmVmVGFibGUoZSl7Y29uc3QgdD1lLmxleGVyLnN0cmVhbSxpPXRoaXMudGFibGVTdGF0ZTt0LnBvcz1pLnN0cmVhbVBvcztlLmJ1ZjE9aS5wYXJzZXJCdWYxO2UuYnVmMj1pLnBhcnNlckJ1ZjI7bGV0IGE7Zm9yKDs7KXtpZighKCJmaXJzdEVudHJ5TnVtImluIGkpfHwhKCJlbnRyeUNvdW50ImluIGkpKXtpZihpc0NtZChhPWUuZ2V0T2JqKCksInRyYWlsZXIiKSlicmVhaztpLmZpcnN0RW50cnlOdW09YTtpLmVudHJ5Q291bnQ9ZS5nZXRPYmooKX1sZXQgcj1pLmZpcnN0RW50cnlOdW07Y29uc3Qgcz1pLmVudHJ5Q291bnQ7aWYoIU51bWJlci5pc0ludGVnZXIocil8fCFOdW1iZXIuaXNJbnRlZ2VyKHMpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBYUmVmIHRhYmxlOiB3cm9uZyB0eXBlcyBpbiBzdWJzZWN0aW9uIGhlYWRlciIpO2ZvcihsZXQgYT1pLmVudHJ5TnVtO2E8czthKyspe2kuc3RyZWFtUG9zPXQucG9zO2kuZW50cnlOdW09YTtpLnBhcnNlckJ1ZjE9ZS5idWYxO2kucGFyc2VyQnVmMj1lLmJ1ZjI7Y29uc3Qgbj17fTtuLm9mZnNldD1lLmdldE9iaigpO24uZ2VuPWUuZ2V0T2JqKCk7Y29uc3Qgbz1lLmdldE9iaigpO2lmKG8gaW5zdGFuY2VvZiBDbWQpc3dpdGNoKG8uY21kKXtjYXNlImYiOm4uZnJlZT0hMDticmVhaztjYXNlIm4iOm4udW5jb21wcmVzc2VkPSEwfWlmKCFOdW1iZXIuaXNJbnRlZ2VyKG4ub2Zmc2V0KXx8IU51bWJlci5pc0ludGVnZXIobi5nZW4pfHwhbi5mcmVlJiYhbi51bmNvbXByZXNzZWQpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkIGVudHJ5IGluIFhSZWYgc3Vic2VjdGlvbjogJHtyfSwgJHtzfWApOzA9PT1hJiZuLmZyZWUmJjE9PT1yJiYocj0wKTt0aGlzLmVudHJpZXNbYStyXXx8KHRoaXMuZW50cmllc1thK3JdPW4pfWkuZW50cnlOdW09MDtpLnN0cmVhbVBvcz10LnBvcztpLnBhcnNlckJ1ZjE9ZS5idWYxO2kucGFyc2VyQnVmMj1lLmJ1ZjI7ZGVsZXRlIGkuZmlyc3RFbnRyeU51bTtkZWxldGUgaS5lbnRyeUNvdW50fWlmKHRoaXMuZW50cmllc1swXSYmIXRoaXMuZW50cmllc1swXS5mcmVlKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBYUmVmIHRhYmxlOiB1bmV4cGVjdGVkIGZpcnN0IG9iamVjdCIpO3JldHVybiBhfXByb2Nlc3NYUmVmU3RyZWFtKGUpe2lmKCEoInN0cmVhbVN0YXRlImluIHRoaXMpKXtjb25zdCB0PWUuZGljdCxpPXQuZ2V0KCJXIik7bGV0IGE9dC5nZXQoIkluZGV4Iik7YXx8KGE9WzAsdC5nZXQoIlNpemUiKV0pO3RoaXMuc3RyZWFtU3RhdGU9e2VudHJ5UmFuZ2VzOmEsYnl0ZVdpZHRoczppLGVudHJ5TnVtOjAsc3RyZWFtUG9zOmUucG9zfX10aGlzLnJlYWRYUmVmU3RyZWFtKGUpO2RlbGV0ZSB0aGlzLnN0cmVhbVN0YXRlO3JldHVybiBlLmRpY3R9cmVhZFhSZWZTdHJlYW0oZSl7Y29uc3QgdD10aGlzLnN0cmVhbVN0YXRlO2UucG9zPXQuc3RyZWFtUG9zO2NvbnN0W2ksYSxyXT10LmJ5dGVXaWR0aHMscz10LmVudHJ5UmFuZ2VzO2Zvcig7cy5sZW5ndGg+MDspe2NvbnN0W24sb109cztpZighTnVtYmVyLmlzSW50ZWdlcihuKXx8IU51bWJlci5pc0ludGVnZXIobykpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkIFhSZWYgcmFuZ2UgZmllbGRzOiAke259LCAke299YCk7aWYoIU51bWJlci5pc0ludGVnZXIoaSl8fCFOdW1iZXIuaXNJbnRlZ2VyKGEpfHwhTnVtYmVyLmlzSW50ZWdlcihyKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEludmFsaWQgWFJlZiBlbnRyeSBmaWVsZHMgbGVuZ3RoOiAke259LCAke299YCk7Zm9yKGxldCBzPXQuZW50cnlOdW07czxvOysrcyl7dC5lbnRyeU51bT1zO3Quc3RyZWFtUG9zPWUucG9zO2xldCBvPTAsZz0wLGM9MDtmb3IobGV0IHQ9MDt0PGk7Kyt0KXtjb25zdCB0PWUuZ2V0Qnl0ZSgpO2lmKC0xPT09dCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgWFJlZiBieXRlV2lkdGhzICd0eXBlJy4iKTtvPW88PDh8dH0wPT09aSYmKG89MSk7Zm9yKGxldCB0PTA7dDxhOysrdCl7Y29uc3QgdD1lLmdldEJ5dGUoKTtpZigtMT09PXQpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgYnl0ZVdpZHRocyAnb2Zmc2V0Jy4iKTtnPWc8PDh8dH1mb3IobGV0IHQ9MDt0PHI7Kyt0KXtjb25zdCB0PWUuZ2V0Qnl0ZSgpO2lmKC0xPT09dCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgWFJlZiBieXRlV2lkdGhzICdnZW5lcmF0aW9uJy4iKTtjPWM8PDh8dH1jb25zdCBDPXt9O0Mub2Zmc2V0PWc7Qy5nZW49Yztzd2l0Y2gobyl7Y2FzZSAwOkMuZnJlZT0hMDticmVhaztjYXNlIDE6Qy51bmNvbXByZXNzZWQ9ITA7YnJlYWs7Y2FzZSAyOmJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkIFhSZWYgZW50cnkgdHlwZTogJHtvfWApfXRoaXMuZW50cmllc1tuK3NdfHwodGhpcy5lbnRyaWVzW24rc109Qyl9dC5lbnRyeU51bT0wO3Quc3RyZWFtUG9zPWUucG9zO3Muc3BsaWNlKDAsMil9fWluZGV4T2JqZWN0cygpe2Z1bmN0aW9uIHJlYWRUb2tlbihlLHQpe2xldCBpPSIiLGE9ZVt0XTtmb3IoOzEwIT09YSYmMTMhPT1hJiY2MCE9PWEmJiEoKyt0Pj1lLmxlbmd0aCk7KXtpKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGEpO2E9ZVt0XX1yZXR1cm4gaX1mdW5jdGlvbiBza2lwVW50aWwoZSx0LGkpe2NvbnN0IGE9aS5sZW5ndGgscj1lLmxlbmd0aDtsZXQgcz0wO2Zvcig7dDxyOyl7bGV0IHI9MDtmb3IoO3I8YSYmZVt0K3JdPT09aVtyXTspKytyO2lmKHI+PWEpYnJlYWs7dCsrO3MrK31yZXR1cm4gc31jb25zdCBlPS9cYihlbmRvYmp8XGQrXHMrXGQrXHMrb2JqfHhyZWZ8dHJhaWxlclxzKjw8KVxiL2csdD0vXGIoc3RhcnR4cmVmfFxkK1xzK1xkK1xzK29iailcYi9nLGk9L14oXGQrKVxzKyhcZCspXHMrb2JqXGIvLGE9bmV3IFVpbnQ4QXJyYXkoWzExNiwxMTQsOTcsMTA1LDEwOCwxMDEsMTE0XSkscj1uZXcgVWludDhBcnJheShbMTE1LDExNiw5NywxMTQsMTE2LDEyMCwxMTQsMTAxLDEwMl0pLHM9bmV3IFVpbnQ4QXJyYXkoWzQ3LDg4LDgyLDEwMSwxMDJdKTt0aGlzLmVudHJpZXMubGVuZ3RoPTA7dGhpcy5fY2FjaGVNYXAuY2xlYXIoKTtjb25zdCBuPXRoaXMuc3RyZWFtO24ucG9zPTA7Y29uc3Qgbz1uLmdldEJ5dGVzKCksZz1ieXRlc1RvU3RyaW5nKG8pLGM9by5sZW5ndGg7bGV0IEM9bi5zdGFydDtjb25zdCBoPVtdLGw9W107Zm9yKDtDPGM7KXtsZXQgUT1vW0NdO2lmKDk9PT1RfHwxMD09PVF8fDEzPT09UXx8MzI9PT1RKXsrK0M7Y29udGludWV9aWYoMzc9PT1RKXtkb3srK0M7aWYoQz49YylicmVhaztRPW9bQ119d2hpbGUoMTAhPT1RJiYxMyE9PVEpO2NvbnRpbnVlfWNvbnN0IEU9cmVhZFRva2VuKG8sQyk7bGV0IHU7aWYoRS5zdGFydHNXaXRoKCJ4cmVmIikmJig0PT09RS5sZW5ndGh8fC9ccy8udGVzdChFWzRdKSkpe0MrPXNraXBVbnRpbChvLEMsYSk7aC5wdXNoKEMpO0MrPXNraXBVbnRpbChvLEMscil9ZWxzZSBpZih1PWkuZXhlYyhFKSl7Y29uc3QgdD0wfHVbMV0saT0wfHVbMl0sYT1DK0UubGVuZ3RoO2xldCByLGg9ITE7aWYodGhpcy5lbnRyaWVzW3RdKXtpZih0aGlzLmVudHJpZXNbdF0uZ2VuPT09aSl0cnl7bmV3IFBhcnNlcih7bGV4ZXI6bmV3IExleGVyKG4ubWFrZVN1YlN0cmVhbShhKSl9KS5nZXRPYmooKTtoPSEwfWNhdGNoKGUpe2UgaW5zdGFuY2VvZiBQYXJzZXJFT0ZFeGNlcHRpb24/d2FybihgaW5kZXhPYmplY3RzIC0tIGNoZWNraW5nIG9iamVjdCAoJHtFfSk6ICIke2V9Ii5gKTpoPSEwfX1lbHNlIGg9ITA7aCYmKHRoaXMuZW50cmllc1t0XT17b2Zmc2V0OkMtbi5zdGFydCxnZW46aSx1bmNvbXByZXNzZWQ6ITB9KTtlLmxhc3RJbmRleD1hO2NvbnN0IFE9ZS5leGVjKGcpO2lmKFEpe3I9ZS5sYXN0SW5kZXgrMS1DO2lmKCJlbmRvYmoiIT09UVsxXSl7d2FybihgaW5kZXhPYmplY3RzOiBGb3VuZCAiJHtRWzFdfSIgaW5zaWRlIG9mIGFub3RoZXIgIm9iaiIsIGNhdXNlZCBieSBtaXNzaW5nICJlbmRvYmoiIC0tIHRyeWluZyB0byByZWNvdmVyLmApO3ItPVFbMV0ubGVuZ3RoKzF9fWVsc2Ugcj1jLUM7Y29uc3QgZD1vLnN1YmFycmF5KEMsQytyKSxmPXNraXBVbnRpbChkLDAscyk7aWYoZjxyJiZkW2YrNV08NjQpe2wucHVzaChDLW4uc3RhcnQpO3RoaXMuX3hyZWZTdG1zLmFkZChDLW4uc3RhcnQpfUMrPXJ9ZWxzZSBpZihFLnN0YXJ0c1dpdGgoInRyYWlsZXIiKSYmKDc9PT1FLmxlbmd0aHx8L1xzLy50ZXN0KEVbN10pKSl7aC5wdXNoKEMpO2NvbnN0IGU9QytFLmxlbmd0aDtsZXQgaTt0Lmxhc3RJbmRleD1lO2NvbnN0IGE9dC5leGVjKGcpO2lmKGEpe2k9dC5sYXN0SW5kZXgrMS1DO2lmKCJzdGFydHhyZWYiIT09YVsxXSl7d2FybihgaW5kZXhPYmplY3RzOiBGb3VuZCAiJHthWzFdfSIgYWZ0ZXIgInRyYWlsZXIiLCBjYXVzZWQgYnkgbWlzc2luZyAic3RhcnR4cmVmIiAtLSB0cnlpbmcgdG8gcmVjb3Zlci5gKTtpLT1hWzFdLmxlbmd0aCsxfX1lbHNlIGk9Yy1DO0MrPWl9ZWxzZSBDKz1FLmxlbmd0aCsxfWZvcihjb25zdCBlIG9mIGwpe3RoaXMuc3RhcnRYUmVmUXVldWUucHVzaChlKTt0aGlzLnJlYWRYUmVmKCEwKX1jb25zdCBRPVtdO2xldCBFLHUsZD0hMTtmb3IoY29uc3QgZSBvZiBoKXtuLnBvcz1lO2NvbnN0IHQ9bmV3IFBhcnNlcih7bGV4ZXI6bmV3IExleGVyKG4pLHhyZWY6dGhpcyxhbGxvd1N0cmVhbXM6ITAscmVjb3ZlcnlNb2RlOiEwfSk7aWYoIWlzQ21kKHQuZ2V0T2JqKCksInRyYWlsZXIiKSljb250aW51ZTtjb25zdCBpPXQuZ2V0T2JqKCk7aWYoaSBpbnN0YW5jZW9mIERpY3Qpe1EucHVzaChpKTtpLmhhcygiRW5jcnlwdCIpJiYoZD0hMCl9fWZvcihjb25zdCBlIG9mWy4uLlEsImdlbkZhbGxiYWNrIiwuLi5RXSl7aWYoImdlbkZhbGxiYWNrIj09PWUpe2lmKCF1KWJyZWFrO3RoaXMuX2dlbmVyYXRpb25GYWxsYmFjaz0hMDtjb250aW51ZX1sZXQgdD0hMTt0cnl7Y29uc3QgaT1lLmdldCgiUm9vdCIpO2lmKCEoaSBpbnN0YW5jZW9mIERpY3QpKWNvbnRpbnVlO2NvbnN0IGE9aS5nZXQoIlBhZ2VzIik7aWYoIShhIGluc3RhbmNlb2YgRGljdCkpY29udGludWU7Y29uc3Qgcj1hLmdldCgiQ291bnQiKTtOdW1iZXIuaXNJbnRlZ2VyKHIpJiYodD0hMCl9Y2F0Y2goZSl7dT1lO2NvbnRpbnVlfWlmKHQmJighZHx8ZS5oYXMoIkVuY3J5cHQiKSkmJmUuaGFzKCJJRCIpKXJldHVybiBlO0U9ZX1pZihFKXJldHVybiBFO2lmKHRoaXMudG9wRGljdClyZXR1cm4gdGhpcy50b3BEaWN0O3Rocm93IG5ldyBJbnZhbGlkUERGRXhjZXB0aW9uKCJJbnZhbGlkIFBERiBzdHJ1Y3R1cmUuIil9cmVhZFhSZWYoZT0hMSl7Y29uc3QgdD10aGlzLnN0cmVhbSxpPW5ldyBTZXQ7Zm9yKDt0aGlzLnN0YXJ0WFJlZlF1ZXVlLmxlbmd0aDspe3RyeXtjb25zdCBlPXRoaXMuc3RhcnRYUmVmUXVldWVbMF07aWYoaS5oYXMoZSkpe3dhcm4oInJlYWRYUmVmIC0gc2tpcHBpbmcgWFJlZiB0YWJsZSBzaW5jZSBpdCB3YXMgYWxyZWFkeSBwYXJzZWQuIik7dGhpcy5zdGFydFhSZWZRdWV1ZS5zaGlmdCgpO2NvbnRpbnVlfWkuYWRkKGUpO3QucG9zPWUrdC5zdGFydDtjb25zdCBhPW5ldyBQYXJzZXIoe2xleGVyOm5ldyBMZXhlcih0KSx4cmVmOnRoaXMsYWxsb3dTdHJlYW1zOiEwfSk7bGV0IHIscz1hLmdldE9iaigpO2lmKGlzQ21kKHMsInhyZWYiKSl7cj10aGlzLnByb2Nlc3NYUmVmVGFibGUoYSk7dGhpcy50b3BEaWN0fHwodGhpcy50b3BEaWN0PXIpO3M9ci5nZXQoIlhSZWZTdG0iKTtpZihOdW1iZXIuaXNJbnRlZ2VyKHMpJiYhdGhpcy5feHJlZlN0bXMuaGFzKHMpKXt0aGlzLl94cmVmU3Rtcy5hZGQocyk7dGhpcy5zdGFydFhSZWZRdWV1ZS5wdXNoKHMpO3RoaXMuI3E/Pz1zfX1lbHNle2lmKCFOdW1iZXIuaXNJbnRlZ2VyKHMpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBYUmVmIHN0cmVhbSBoZWFkZXIiKTtpZighKE51bWJlci5pc0ludGVnZXIoYS5nZXRPYmooKSkmJmlzQ21kKGEuZ2V0T2JqKCksIm9iaiIpJiYocz1hLmdldE9iaigpKWluc3RhbmNlb2YgQmFzZVN0cmVhbSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgc3RyZWFtIik7cj10aGlzLnByb2Nlc3NYUmVmU3RyZWFtKHMpO3RoaXMudG9wRGljdHx8KHRoaXMudG9wRGljdD1yKTtpZighcil0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkZhaWxlZCB0byByZWFkIFhSZWYgc3RyZWFtIil9cz1yLmdldCgiUHJldiIpO051bWJlci5pc0ludGVnZXIocyk/dGhpcy5zdGFydFhSZWZRdWV1ZS5wdXNoKHMpOnMgaW5zdGFuY2VvZiBSZWYmJnRoaXMuc3RhcnRYUmVmUXVldWUucHVzaChzLm51bSl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7aW5mbygiKHdoaWxlIHJlYWRpbmcgWFJlZik6ICIrZSl9dGhpcy5zdGFydFhSZWZRdWV1ZS5zaGlmdCgpfWlmKHRoaXMudG9wRGljdClyZXR1cm4gdGhpcy50b3BEaWN0O2lmKCFlKXRocm93IG5ldyBYUmVmUGFyc2VFeGNlcHRpb259Z2V0IGxhc3RYUmVmU3RyZWFtUG9zKCl7cmV0dXJuIHRoaXMuI3E/Pyh0aGlzLl94cmVmU3Rtcy5zaXplPjA/TWF0aC5tYXgoLi4udGhpcy5feHJlZlN0bXMpOm51bGwpfWdldEVudHJ5KGUpe2NvbnN0IHQ9dGhpcy5lbnRyaWVzW2VdO3JldHVybiB0JiYhdC5mcmVlJiZ0Lm9mZnNldD90Om51bGx9ZmV0Y2hJZlJlZihlLHQ9ITEpe3JldHVybiBlIGluc3RhbmNlb2YgUmVmP3RoaXMuZmV0Y2goZSx0KTplfWZldGNoKGUsdD0hMSl7aWYoIShlIGluc3RhbmNlb2YgUmVmKSl0aHJvdyBuZXcgRXJyb3IoInJlZiBvYmplY3QgaXMgbm90IGEgcmVmZXJlbmNlIik7Y29uc3QgaT1lLm51bSxhPXRoaXMuX2NhY2hlTWFwLmdldChpKTtpZih2b2lkIDAhPT1hKXthIGluc3RhbmNlb2YgRGljdCYmIWEub2JqSWQmJihhLm9iaklkPWUudG9TdHJpbmcoKSk7cmV0dXJuIGF9bGV0IHI9dGhpcy5nZXRFbnRyeShpKTtpZihudWxsPT09cil7dGhpcy5fY2FjaGVNYXAuc2V0KGkscik7cmV0dXJuIHJ9aWYodGhpcy5fcGVuZGluZ1JlZnMuaGFzKGUpKXt0aGlzLl9wZW5kaW5nUmVmcy5yZW1vdmUoZSk7d2FybihgSWdub3JpbmcgY2lyY3VsYXIgcmVmZXJlbmNlOiAke2V9LmApO3JldHVybiBidH10aGlzLl9wZW5kaW5nUmVmcy5wdXQoZSk7dHJ5e3I9ci51bmNvbXByZXNzZWQ/dGhpcy5mZXRjaFVuY29tcHJlc3NlZChlLHIsdCk6dGhpcy5mZXRjaENvbXByZXNzZWQoZSxyLHQpO3RoaXMuX3BlbmRpbmdSZWZzLnJlbW92ZShlKX1jYXRjaCh0KXt0aGlzLl9wZW5kaW5nUmVmcy5yZW1vdmUoZSk7dGhyb3cgdH1yIGluc3RhbmNlb2YgRGljdD9yLm9iaklkPWUudG9TdHJpbmcoKTpyIGluc3RhbmNlb2YgQmFzZVN0cmVhbSYmKHIuZGljdC5vYmpJZD1lLnRvU3RyaW5nKCkpO3JldHVybiByfWZldGNoVW5jb21wcmVzc2VkKGUsdCxpPSExKXtjb25zdCBhPWUuZ2VuO2xldCByPWUubnVtO2lmKHQuZ2VuIT09YSl7Y29uc3Qgcz1gSW5jb25zaXN0ZW50IGdlbmVyYXRpb24gaW4gWFJlZjogJHtlfWA7aWYodGhpcy5fZ2VuZXJhdGlvbkZhbGxiYWNrJiZ0LmdlbjxhKXt3YXJuKHMpO3JldHVybiB0aGlzLmZldGNoVW5jb21wcmVzc2VkKFJlZi5nZXQocix0LmdlbiksdCxpKX10aHJvdyBuZXcgWFJlZkVudHJ5RXhjZXB0aW9uKHMpfWNvbnN0IHM9dGhpcy5zdHJlYW0ubWFrZVN1YlN0cmVhbSh0Lm9mZnNldCt0aGlzLnN0cmVhbS5zdGFydCksbj1uZXcgUGFyc2VyKHtsZXhlcjpuZXcgTGV4ZXIocykseHJlZjp0aGlzLGFsbG93U3RyZWFtczohMH0pLG89bi5nZXRPYmooKSxnPW4uZ2V0T2JqKCksYz1uLmdldE9iaigpO2lmKG8hPT1yfHxnIT09YXx8IShjIGluc3RhbmNlb2YgQ21kKSl0aHJvdyBuZXcgWFJlZkVudHJ5RXhjZXB0aW9uKGBCYWQgKHVuY29tcHJlc3NlZCkgWFJlZiBlbnRyeTogJHtlfWApO2lmKCJvYmoiIT09Yy5jbWQpe2lmKGMuY21kLnN0YXJ0c1dpdGgoIm9iaiIpKXtyPXBhcnNlSW50KGMuY21kLnN1YnN0cmluZygzKSwxMCk7aWYoIU51bWJlci5pc05hTihyKSlyZXR1cm4gcn10aHJvdyBuZXcgWFJlZkVudHJ5RXhjZXB0aW9uKGBCYWQgKHVuY29tcHJlc3NlZCkgWFJlZiBlbnRyeTogJHtlfWApfSh0PXRoaXMuZW5jcnlwdCYmIWk/bi5nZXRPYmoodGhpcy5lbmNyeXB0LmNyZWF0ZUNpcGhlclRyYW5zZm9ybShyLGEpKTpuLmdldE9iaigpKWluc3RhbmNlb2YgQmFzZVN0cmVhbXx8dGhpcy5fY2FjaGVNYXAuc2V0KHIsdCk7cmV0dXJuIHR9ZmV0Y2hDb21wcmVzc2VkKGUsdCxpPSExKXtjb25zdCBhPXQub2Zmc2V0LHI9dGhpcy5mZXRjaChSZWYuZ2V0KGEsMCkpO2lmKCEociBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pKXRocm93IG5ldyBGb3JtYXRFcnJvcigiYmFkIE9ialN0bSBzdHJlYW0iKTtjb25zdCBzPXIuZGljdC5nZXQoIkZpcnN0Iiksbj1yLmRpY3QuZ2V0KCJOIik7aWYoIU51bWJlci5pc0ludGVnZXIocyl8fCFOdW1iZXIuaXNJbnRlZ2VyKG4pKXRocm93IG5ldyBGb3JtYXRFcnJvcigiaW52YWxpZCBmaXJzdCBhbmQgbiBwYXJhbWV0ZXJzIGZvciBPYmpTdG0gc3RyZWFtIik7bGV0IG89bmV3IFBhcnNlcih7bGV4ZXI6bmV3IExleGVyKHIpLHhyZWY6dGhpcyxhbGxvd1N0cmVhbXM6ITB9KTtjb25zdCBnPW5ldyBBcnJheShuKSxjPW5ldyBBcnJheShuKTtmb3IobGV0IGU9MDtlPG47KytlKXtjb25zdCB0PW8uZ2V0T2JqKCk7aWYoIU51bWJlci5pc0ludGVnZXIodCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBpbnZhbGlkIG9iamVjdCBudW1iZXIgaW4gdGhlIE9ialN0bSBzdHJlYW06ICR7dH1gKTtjb25zdCBpPW8uZ2V0T2JqKCk7aWYoIU51bWJlci5pc0ludGVnZXIoaSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBpbnZhbGlkIG9iamVjdCBvZmZzZXQgaW4gdGhlIE9ialN0bSBzdHJlYW06ICR7aX1gKTtnW2VdPXQ7Y1tlXT1pfWNvbnN0IEM9KHIuc3RhcnR8fDApK3MsaD1uZXcgQXJyYXkobik7Zm9yKGxldCBlPTA7ZTxuOysrZSl7Y29uc3QgdD1lPG4tMT9jW2UrMV0tY1tlXTp2b2lkIDA7aWYodDwwKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBvZmZzZXQgaW4gdGhlIE9ialN0bSBzdHJlYW0uIik7bz1uZXcgUGFyc2VyKHtsZXhlcjpuZXcgTGV4ZXIoci5tYWtlU3ViU3RyZWFtKEMrY1tlXSx0LHIuZGljdCkpLHhyZWY6dGhpcyxhbGxvd1N0cmVhbXM6ITB9KTtjb25zdCBpPW8uZ2V0T2JqKCk7aFtlXT1pO2lmKGkgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKWNvbnRpbnVlO2NvbnN0IHM9Z1tlXSxsPXRoaXMuZW50cmllc1tzXTtsJiZsLm9mZnNldD09PWEmJmwuZ2VuPT09ZSYmdGhpcy5fY2FjaGVNYXAuc2V0KHMsaSl9aWYodm9pZCAwPT09KHQ9aFt0Lmdlbl0pKXRocm93IG5ldyBYUmVmRW50cnlFeGNlcHRpb24oYEJhZCAoY29tcHJlc3NlZCkgWFJlZiBlbnRyeTogJHtlfWApO3JldHVybiB0fWFzeW5jIGZldGNoSWZSZWZBc3luYyhlLHQpe3JldHVybiBlIGluc3RhbmNlb2YgUmVmP3RoaXMuZmV0Y2hBc3luYyhlLHQpOmV9YXN5bmMgZmV0Y2hBc3luYyhlLHQpe3RyeXtyZXR1cm4gdGhpcy5mZXRjaChlLHQpfWNhdGNoKGkpe2lmKCEoaSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKSl0aHJvdyBpO2F3YWl0IHRoaXMucGRmTWFuYWdlci5yZXF1ZXN0UmFuZ2UoaS5iZWdpbixpLmVuZCk7cmV0dXJuIHRoaXMuZmV0Y2hBc3luYyhlLHQpfX1nZXRDYXRhbG9nT2JqKCl7cmV0dXJuIHRoaXMucm9vdH19Y29uc3QgY289WzAsMCw2MTIsNzkyXTtjbGFzcyBQYWdle2NvbnN0cnVjdG9yKHtwZGZNYW5hZ2VyOmUseHJlZjp0LHBhZ2VJbmRleDppLHBhZ2VEaWN0OmEscmVmOnIsZ2xvYmFsSWRGYWN0b3J5OnMsZm9udENhY2hlOm4sYnVpbHRJbkNNYXBDYWNoZTpvLHN0YW5kYXJkRm9udERhdGFDYWNoZTpnLGdsb2JhbEltYWdlQ2FjaGU6YyxzeXN0ZW1Gb250Q2FjaGU6Qyxub25CbGVuZE1vZGVzU2V0OmgseGZhRmFjdG9yeTpsfSl7dGhpcy5wZGZNYW5hZ2VyPWU7dGhpcy5wYWdlSW5kZXg9aTt0aGlzLnBhZ2VEaWN0PWE7dGhpcy54cmVmPXQ7dGhpcy5yZWY9cjt0aGlzLmZvbnRDYWNoZT1uO3RoaXMuYnVpbHRJbkNNYXBDYWNoZT1vO3RoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlPWc7dGhpcy5nbG9iYWxJbWFnZUNhY2hlPWM7dGhpcy5zeXN0ZW1Gb250Q2FjaGU9Qzt0aGlzLm5vbkJsZW5kTW9kZXNTZXQ9aDt0aGlzLmV2YWx1YXRvck9wdGlvbnM9ZS5ldmFsdWF0b3JPcHRpb25zO3RoaXMucmVzb3VyY2VzUHJvbWlzZT1udWxsO3RoaXMueGZhRmFjdG9yeT1sO2NvbnN0IFE9e29iajowfTt0aGlzLl9sb2NhbElkRmFjdG9yeT1jbGFzcyBleHRlbmRzIHN7c3RhdGljIGNyZWF0ZU9iaklkKCl7cmV0dXJuYHAke2l9XyR7KytRLm9ian1gfXN0YXRpYyBnZXRQYWdlT2JqSWQoKXtyZXR1cm5gcCR7ci50b1N0cmluZygpfWB9fX1fZ2V0SW5oZXJpdGFibGVQcm9wZXJ0eShlLHQ9ITEpe2NvbnN0IGk9Z2V0SW5oZXJpdGFibGVQcm9wZXJ0eSh7ZGljdDp0aGlzLnBhZ2VEaWN0LGtleTplLGdldEFycmF5OnQsc3RvcFdoZW5Gb3VuZDohMX0pO3JldHVybiBBcnJheS5pc0FycmF5KGkpPzEhPT1pLmxlbmd0aCYmaVswXWluc3RhbmNlb2YgRGljdD9EaWN0Lm1lcmdlKHt4cmVmOnRoaXMueHJlZixkaWN0QXJyYXk6aX0pOmlbMF06aX1nZXQgY29udGVudCgpe3JldHVybiB0aGlzLnBhZ2VEaWN0LmdldEFycmF5KCJDb250ZW50cyIpfWdldCByZXNvdXJjZXMoKXtjb25zdCBlPXRoaXMuX2dldEluaGVyaXRhYmxlUHJvcGVydHkoIlJlc291cmNlcyIpO3JldHVybiBzaGFkb3codGhpcywicmVzb3VyY2VzIixlIGluc3RhbmNlb2YgRGljdD9lOkRpY3QuZW1wdHkpfV9nZXRCb3VuZGluZ0JveChlKXtpZih0aGlzLnhmYURhdGEpcmV0dXJuIHRoaXMueGZhRGF0YS5iYm94O2NvbnN0IHQ9bG9va3VwTm9ybWFsUmVjdCh0aGlzLl9nZXRJbmhlcml0YWJsZVByb3BlcnR5KGUsITApLG51bGwpO2lmKHQpe2lmKHRbMl0tdFswXT4wJiZ0WzNdLXRbMV0+MClyZXR1cm4gdDt3YXJuKGBFbXB0eSwgb3IgaW52YWxpZCwgLyR7ZX0gZW50cnkuYCl9cmV0dXJuIG51bGx9Z2V0IG1lZGlhQm94KCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJtZWRpYUJveCIsdGhpcy5fZ2V0Qm91bmRpbmdCb3goIk1lZGlhQm94Iil8fGNvKX1nZXQgY3JvcEJveCgpe3JldHVybiBzaGFkb3codGhpcywiY3JvcEJveCIsdGhpcy5fZ2V0Qm91bmRpbmdCb3goIkNyb3BCb3giKXx8dGhpcy5tZWRpYUJveCl9Z2V0IHVzZXJVbml0KCl7bGV0IGU9dGhpcy5wYWdlRGljdC5nZXQoIlVzZXJVbml0Iik7KCJudW1iZXIiIT10eXBlb2YgZXx8ZTw9MCkmJihlPTEpO3JldHVybiBzaGFkb3codGhpcywidXNlclVuaXQiLGUpfWdldCB2aWV3KCl7Y29uc3R7Y3JvcEJveDplLG1lZGlhQm94OnR9PXRoaXM7aWYoZSE9PXQmJiFpc0FycmF5RXF1YWwoZSx0KSl7Y29uc3QgaT1VdGlsLmludGVyc2VjdChlLHQpO2lmKGkmJmlbMl0taVswXT4wJiZpWzNdLWlbMV0+MClyZXR1cm4gc2hhZG93KHRoaXMsInZpZXciLGkpO3dhcm4oIkVtcHR5IC9Dcm9wQm94IGFuZCAvTWVkaWFCb3ggaW50ZXJzZWN0aW9uLiIpfXJldHVybiBzaGFkb3codGhpcywidmlldyIsdCl9Z2V0IHJvdGF0ZSgpe2xldCBlPXRoaXMuX2dldEluaGVyaXRhYmxlUHJvcGVydHkoIlJvdGF0ZSIpfHwwO2UlOTAhPTA/ZT0wOmU+PTM2MD9lJT0zNjA6ZTwwJiYoZT0oZSUzNjArMzYwKSUzNjApO3JldHVybiBzaGFkb3codGhpcywicm90YXRlIixlKX1fb25TdWJTdHJlYW1FcnJvcihlLHQpe2lmKCF0aGlzLmV2YWx1YXRvck9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IGU7d2FybihgZ2V0Q29udGVudFN0cmVhbSAtIGlnbm9yaW5nIHN1Yi1zdHJlYW0gKCR7dH0pOiAiJHtlfSIuYCl9Z2V0Q29udGVudFN0cmVhbSgpe3JldHVybiB0aGlzLnBkZk1hbmFnZXIuZW5zdXJlKHRoaXMsImNvbnRlbnQiKS50aGVuKChlPT5lIGluc3RhbmNlb2YgQmFzZVN0cmVhbT9lOkFycmF5LmlzQXJyYXkoZSk/bmV3IFN0cmVhbXNTZXF1ZW5jZVN0cmVhbShlLHRoaXMuX29uU3ViU3RyZWFtRXJyb3IuYmluZCh0aGlzKSk6bmV3IE51bGxTdHJlYW0pKX1nZXQgeGZhRGF0YSgpe3JldHVybiBzaGFkb3codGhpcywieGZhRGF0YSIsdGhpcy54ZmFGYWN0b3J5P3tiYm94OnRoaXMueGZhRmFjdG9yeS5nZXRCb3VuZGluZ0JveCh0aGlzLnBhZ2VJbmRleCl9Om51bGwpfWFzeW5jI08oZSx0LGkpe2NvbnN0IGE9W107Zm9yKGNvbnN0IHIgb2YgZSlpZihyLmlkKXtjb25zdCBlPVJlZi5mcm9tU3RyaW5nKHIuaWQpO2lmKCFlKXt3YXJuKGBBIG5vbi1saW5rZWQgYW5ub3RhdGlvbiBjYW5ub3QgYmUgbW9kaWZpZWQ6ICR7ci5pZH1gKTtjb250aW51ZX1pZihyLmRlbGV0ZWQpe3QucHV0KGUsZSk7aWYoci5wb3B1cFJlZil7Y29uc3QgZT1SZWYuZnJvbVN0cmluZyhyLnBvcHVwUmVmKTtlJiZ0LnB1dChlLGUpfWNvbnRpbnVlfWk/LnB1dChlKTtyLnJlZj1lO2EucHVzaCh0aGlzLnhyZWYuZmV0Y2hBc3luYyhlKS50aGVuKChlPT57ZSBpbnN0YW5jZW9mIERpY3QmJihyLm9sZEFubm90YXRpb249ZS5jbG9uZSgpKX0pLCgoKT0+e3dhcm4oYENhbm5vdCBmZXRjaCBcYG9sZEFubm90YXRpb25cYCBmb3I6ICR7ZX0uYCl9KSkpO2RlbGV0ZSByLmlkfWF3YWl0IFByb21pc2UuYWxsKGEpfWFzeW5jIHNhdmVOZXdBbm5vdGF0aW9ucyhlLHQsaSxhKXtpZih0aGlzLnhmYUZhY3RvcnkpdGhyb3cgbmV3IEVycm9yKCJYRkE6IENhbm5vdCBzYXZlIG5ldyBhbm5vdGF0aW9ucy4iKTtjb25zdCByPW5ldyBQYXJ0aWFsRXZhbHVhdG9yKHt4cmVmOnRoaXMueHJlZixoYW5kbGVyOmUscGFnZUluZGV4OnRoaXMucGFnZUluZGV4LGlkRmFjdG9yeTp0aGlzLl9sb2NhbElkRmFjdG9yeSxmb250Q2FjaGU6dGhpcy5mb250Q2FjaGUsYnVpbHRJbkNNYXBDYWNoZTp0aGlzLmJ1aWx0SW5DTWFwQ2FjaGUsc3RhbmRhcmRGb250RGF0YUNhY2hlOnRoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLGdsb2JhbEltYWdlQ2FjaGU6dGhpcy5nbG9iYWxJbWFnZUNhY2hlLHN5c3RlbUZvbnRDYWNoZTp0aGlzLnN5c3RlbUZvbnRDYWNoZSxvcHRpb25zOnRoaXMuZXZhbHVhdG9yT3B0aW9uc30pLHM9bmV3IFJlZlNldENhY2hlLG49bmV3IFJlZlNldDthd2FpdCB0aGlzLiNPKGkscyxuKTtjb25zdCBvPXRoaXMucGFnZURpY3QsZz10aGlzLmFubm90YXRpb25zLmZpbHRlcigoZT0+IShlIGluc3RhbmNlb2YgUmVmJiZzLmhhcyhlKSkpKSxjPWF3YWl0IEFubm90YXRpb25GYWN0b3J5LnNhdmVOZXdBbm5vdGF0aW9ucyhyLHQsaSxhKTtmb3IoY29uc3R7cmVmOmV9b2YgYy5hbm5vdGF0aW9ucyllIGluc3RhbmNlb2YgUmVmJiYhbi5oYXMoZSkmJmcucHVzaChlKTtjb25zdCBDPW8uZ2V0KCJBbm5vdHMiKTtvLnNldCgiQW5ub3RzIixnKTtjb25zdCBoPVtdO2F3YWl0IHdyaXRlT2JqZWN0KHRoaXMucmVmLG8saCx0aGlzLnhyZWYpO0MmJm8uc2V0KCJBbm5vdHMiLEMpO2NvbnN0IGw9Yy5kZXBlbmRlbmNpZXM7bC5wdXNoKHtyZWY6dGhpcy5yZWYsZGF0YTpoLmpvaW4oIiIpfSwuLi5jLmFubm90YXRpb25zKTtmb3IoY29uc3QgZSBvZiBzKWwucHVzaCh7cmVmOmUsZGF0YTpudWxsfSk7cmV0dXJuIGx9c2F2ZShlLHQsaSl7Y29uc3QgYT1uZXcgUGFydGlhbEV2YWx1YXRvcih7eHJlZjp0aGlzLnhyZWYsaGFuZGxlcjplLHBhZ2VJbmRleDp0aGlzLnBhZ2VJbmRleCxpZEZhY3Rvcnk6dGhpcy5fbG9jYWxJZEZhY3RvcnksZm9udENhY2hlOnRoaXMuZm9udENhY2hlLGJ1aWx0SW5DTWFwQ2FjaGU6dGhpcy5idWlsdEluQ01hcENhY2hlLHN0YW5kYXJkRm9udERhdGFDYWNoZTp0aGlzLnN0YW5kYXJkRm9udERhdGFDYWNoZSxnbG9iYWxJbWFnZUNhY2hlOnRoaXMuZ2xvYmFsSW1hZ2VDYWNoZSxzeXN0ZW1Gb250Q2FjaGU6dGhpcy5zeXN0ZW1Gb250Q2FjaGUsb3B0aW9uczp0aGlzLmV2YWx1YXRvck9wdGlvbnN9KTtyZXR1cm4gdGhpcy5fcGFyc2VkQW5ub3RhdGlvbnMudGhlbigoZnVuY3Rpb24oZSl7Y29uc3Qgcj1bXTtmb3IoY29uc3QgcyBvZiBlKXIucHVzaChzLnNhdmUoYSx0LGkpLmNhdGNoKChmdW5jdGlvbihlKXt3YXJuKGBzYXZlIC0gaWdub3JpbmcgYW5ub3RhdGlvbiBkYXRhIGR1cmluZyAiJHt0Lm5hbWV9IiB0YXNrOiAiJHtlfSIuYCk7cmV0dXJuIG51bGx9KSkpO3JldHVybiBQcm9taXNlLmFsbChyKS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gZS5maWx0ZXIoKGU9PiEhZSkpfSkpfSkpfWxvYWRSZXNvdXJjZXMoZSl7dGhpcy5yZXNvdXJjZXNQcm9taXNlfHw9dGhpcy5wZGZNYW5hZ2VyLmVuc3VyZSh0aGlzLCJyZXNvdXJjZXMiKTtyZXR1cm4gdGhpcy5yZXNvdXJjZXNQcm9taXNlLnRoZW4oKCgpPT5uZXcgT2JqZWN0TG9hZGVyKHRoaXMucmVzb3VyY2VzLGUsdGhpcy54cmVmKS5sb2FkKCkpKX1nZXRPcGVyYXRvckxpc3Qoe2hhbmRsZXI6ZSxzaW5rOnQsdGFzazppLGludGVudDphLGNhY2hlS2V5OnIsYW5ub3RhdGlvblN0b3JhZ2U6cz1udWxsLG1vZGlmaWVkSWRzOm49bnVsbH0pe2NvbnN0IG89dGhpcy5nZXRDb250ZW50U3RyZWFtKCksaD10aGlzLmxvYWRSZXNvdXJjZXMoWyJDb2xvclNwYWNlIiwiRXh0R1N0YXRlIiwiRm9udCIsIlBhdHRlcm4iLCJQcm9wZXJ0aWVzIiwiU2hhZGluZyIsIlhPYmplY3QiXSksdT1uZXcgUGFydGlhbEV2YWx1YXRvcih7eHJlZjp0aGlzLnhyZWYsaGFuZGxlcjplLHBhZ2VJbmRleDp0aGlzLnBhZ2VJbmRleCxpZEZhY3Rvcnk6dGhpcy5fbG9jYWxJZEZhY3RvcnksZm9udENhY2hlOnRoaXMuZm9udENhY2hlLGJ1aWx0SW5DTWFwQ2FjaGU6dGhpcy5idWlsdEluQ01hcENhY2hlLHN0YW5kYXJkRm9udERhdGFDYWNoZTp0aGlzLnN0YW5kYXJkRm9udERhdGFDYWNoZSxnbG9iYWxJbWFnZUNhY2hlOnRoaXMuZ2xvYmFsSW1hZ2VDYWNoZSxzeXN0ZW1Gb250Q2FjaGU6dGhpcy5zeXN0ZW1Gb250Q2FjaGUsb3B0aW9uczp0aGlzLmV2YWx1YXRvck9wdGlvbnN9KSxmPXRoaXMueGZhRmFjdG9yeT9udWxsOmdldE5ld0Fubm90YXRpb25zTWFwKHMpLHA9Zj8uZ2V0KHRoaXMucGFnZUluZGV4KTtsZXQgbT1Qcm9taXNlLnJlc29sdmUobnVsbCkseT1udWxsO2lmKHApe2NvbnN0IGU9dGhpcy5wZGZNYW5hZ2VyLmVuc3VyZURvYygiYW5ub3RhdGlvbkdsb2JhbHMiKTtsZXQgdDtjb25zdCBhPW5ldyBTZXQ7Zm9yKGNvbnN0e2JpdG1hcElkOmUsYml0bWFwOnR9b2YgcCkhZXx8dHx8YS5oYXMoZSl8fGEuYWRkKGUpO2NvbnN0e2lzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkOnJ9PXRoaXMuZXZhbHVhdG9yT3B0aW9ucztpZihhLnNpemU+MCl7Y29uc3QgZT1wLnNsaWNlKCk7Zm9yKGNvbnN0W3QsaV1vZiBzKXQuc3RhcnRzV2l0aChkKSYmaS5iaXRtYXAmJmEuaGFzKGkuYml0bWFwSWQpJiZlLnB1c2goaSk7dD1Bbm5vdGF0aW9uRmFjdG9yeS5nZW5lcmF0ZUltYWdlcyhlLHRoaXMueHJlZixyKX1lbHNlIHQ9QW5ub3RhdGlvbkZhY3RvcnkuZ2VuZXJhdGVJbWFnZXMocCx0aGlzLnhyZWYscik7eT1uZXcgUmVmU2V0O209UHJvbWlzZS5hbGwoW2UsdGhpcy4jTyhwLHksbnVsbCldKS50aGVuKCgoW2VdKT0+ZT9Bbm5vdGF0aW9uRmFjdG9yeS5wcmludE5ld0Fubm90YXRpb25zKGUsdSxpLHAsdCk6bnVsbCkpfWNvbnN0IHc9UHJvbWlzZS5hbGwoW28saF0pLnRoZW4oKChbc10pPT57Y29uc3Qgbj1uZXcgT3BlcmF0b3JMaXN0KGEsdCk7ZS5zZW5kKCJTdGFydFJlbmRlclBhZ2UiLHt0cmFuc3BhcmVuY3k6dS5oYXNCbGVuZE1vZGVzKHRoaXMucmVzb3VyY2VzLHRoaXMubm9uQmxlbmRNb2Rlc1NldCkscGFnZUluZGV4OnRoaXMucGFnZUluZGV4LGNhY2hlS2V5OnJ9KTtyZXR1cm4gdS5nZXRPcGVyYXRvckxpc3Qoe3N0cmVhbTpzLHRhc2s6aSxyZXNvdXJjZXM6dGhpcy5yZXNvdXJjZXMsb3BlcmF0b3JMaXN0Om59KS50aGVuKChmdW5jdGlvbigpe3JldHVybiBufSkpfSkpO3JldHVybiBQcm9taXNlLmFsbChbdyx0aGlzLl9wYXJzZWRBbm5vdGF0aW9ucyxtXSkudGhlbigoZnVuY3Rpb24oW2UsdCxyXSl7aWYocil7dD10LmZpbHRlcigoZT0+IShlLnJlZiYmeS5oYXMoZS5yZWYpKSkpO2ZvcihsZXQgZT0wLGk9ci5sZW5ndGg7ZTxpO2UrKyl7Y29uc3QgYT1yW2VdO2lmKGEucmVmVG9SZXBsYWNlKXtjb25zdCBzPXQuZmluZEluZGV4KChlPT5lLnJlZiYmaXNSZWZzRXF1YWwoZS5yZWYsYS5yZWZUb1JlcGxhY2UpKSk7aWYocz49MCl7dC5zcGxpY2UocywxLGEpO3Iuc3BsaWNlKGUtLSwxKTtpLS19fX10PXQuY29uY2F0KHIpfWlmKDA9PT10Lmxlbmd0aHx8YSZRKXtlLmZsdXNoKCEwKTtyZXR1cm57bGVuZ3RoOmUudG90YWxMZW5ndGh9fWNvbnN0IG89ISEoYSZsKSxoPSEhKGEmRSksZD0hIShhJmcpLGY9ISEoYSZjKSxwPSEhKGEmQyksbT1bXTtmb3IoY29uc3QgZSBvZiB0KShkfHxmJiZlLm11c3RCZVZpZXdlZChzLG8pJiZlLm11c3RCZVZpZXdlZFdoZW5FZGl0aW5nKGgsbil8fHAmJmUubXVzdEJlUHJpbnRlZChzKSkmJm0ucHVzaChlLmdldE9wZXJhdG9yTGlzdCh1LGksYSxzKS5jYXRjaCgoZnVuY3Rpb24oZSl7d2FybihgZ2V0T3BlcmF0b3JMaXN0IC0gaWdub3JpbmcgYW5ub3RhdGlvbiBkYXRhIGR1cmluZyAiJHtpLm5hbWV9IiB0YXNrOiAiJHtlfSIuYCk7cmV0dXJue29wTGlzdDpudWxsLHNlcGFyYXRlRm9ybTohMSxzZXBhcmF0ZUNhbnZhczohMX19KSkpO3JldHVybiBQcm9taXNlLmFsbChtKS50aGVuKChmdW5jdGlvbih0KXtsZXQgaT0hMSxhPSExO2Zvcihjb25zdHtvcExpc3Q6cixzZXBhcmF0ZUZvcm06cyxzZXBhcmF0ZUNhbnZhczpufW9mIHQpe2UuYWRkT3BMaXN0KHIpO2l8fD1zO2F8fD1ufWUuZmx1c2goITAse2Zvcm06aSxjYW52YXM6YX0pO3JldHVybntsZW5ndGg6ZS50b3RhbExlbmd0aH19KSl9KSl9YXN5bmMgZXh0cmFjdFRleHRDb250ZW50KHtoYW5kbGVyOmUsdGFzazp0LGluY2x1ZGVNYXJrZWRDb250ZW50OmksZGlzYWJsZU5vcm1hbGl6YXRpb246YSxzaW5rOnJ9KXtjb25zdCBzPXRoaXMuZ2V0Q29udGVudFN0cmVhbSgpLG49dGhpcy5sb2FkUmVzb3VyY2VzKFsiRXh0R1N0YXRlIiwiRm9udCIsIlByb3BlcnRpZXMiLCJYT2JqZWN0Il0pLG89dGhpcy5wZGZNYW5hZ2VyLmVuc3VyZUNhdGFsb2coImxhbmciKSxbZywsY109YXdhaXQgUHJvbWlzZS5hbGwoW3MsbixvXSk7cmV0dXJuIG5ldyBQYXJ0aWFsRXZhbHVhdG9yKHt4cmVmOnRoaXMueHJlZixoYW5kbGVyOmUscGFnZUluZGV4OnRoaXMucGFnZUluZGV4LGlkRmFjdG9yeTp0aGlzLl9sb2NhbElkRmFjdG9yeSxmb250Q2FjaGU6dGhpcy5mb250Q2FjaGUsYnVpbHRJbkNNYXBDYWNoZTp0aGlzLmJ1aWx0SW5DTWFwQ2FjaGUsc3RhbmRhcmRGb250RGF0YUNhY2hlOnRoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLGdsb2JhbEltYWdlQ2FjaGU6dGhpcy5nbG9iYWxJbWFnZUNhY2hlLHN5c3RlbUZvbnRDYWNoZTp0aGlzLnN5c3RlbUZvbnRDYWNoZSxvcHRpb25zOnRoaXMuZXZhbHVhdG9yT3B0aW9uc30pLmdldFRleHRDb250ZW50KHtzdHJlYW06Zyx0YXNrOnQscmVzb3VyY2VzOnRoaXMucmVzb3VyY2VzLGluY2x1ZGVNYXJrZWRDb250ZW50OmksZGlzYWJsZU5vcm1hbGl6YXRpb246YSxzaW5rOnIsdmlld0JveDp0aGlzLnZpZXcsbGFuZzpjfSl9YXN5bmMgZ2V0U3RydWN0VHJlZSgpe2NvbnN0IGU9YXdhaXQgdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZUNhdGFsb2coInN0cnVjdFRyZWVSb290Iik7aWYoIWUpcmV0dXJuIG51bGw7YXdhaXQgdGhpcy5fcGFyc2VkQW5ub3RhdGlvbnM7cmV0dXJuKGF3YWl0IHRoaXMucGRmTWFuYWdlci5lbnN1cmUodGhpcywiX3BhcnNlU3RydWN0VHJlZSIsW2VdKSkuc2VyaWFsaXphYmxlfV9wYXJzZVN0cnVjdFRyZWUoZSl7Y29uc3QgdD1uZXcgU3RydWN0VHJlZVBhZ2UoZSx0aGlzLnBhZ2VEaWN0KTt0LnBhcnNlKHRoaXMucmVmKTtyZXR1cm4gdH1hc3luYyBnZXRBbm5vdGF0aW9uc0RhdGEoZSx0LGkpe2NvbnN0IGE9YXdhaXQgdGhpcy5fcGFyc2VkQW5ub3RhdGlvbnM7aWYoMD09PWEubGVuZ3RoKXJldHVybiBhO2NvbnN0IHI9W10scz1bXTtsZXQgbjtjb25zdCBvPSEhKGkmZyksaD0hIShpJmMpLGw9ISEoaSZDKTtmb3IoY29uc3QgaSBvZiBhKXtjb25zdCBhPW98fGgmJmkudmlld2FibGU7KGF8fGwmJmkucHJpbnRhYmxlKSYmci5wdXNoKGkuZGF0YSk7aWYoaS5oYXNUZXh0Q29udGVudCYmYSl7bnx8PW5ldyBQYXJ0aWFsRXZhbHVhdG9yKHt4cmVmOnRoaXMueHJlZixoYW5kbGVyOmUscGFnZUluZGV4OnRoaXMucGFnZUluZGV4LGlkRmFjdG9yeTp0aGlzLl9sb2NhbElkRmFjdG9yeSxmb250Q2FjaGU6dGhpcy5mb250Q2FjaGUsYnVpbHRJbkNNYXBDYWNoZTp0aGlzLmJ1aWx0SW5DTWFwQ2FjaGUsc3RhbmRhcmRGb250RGF0YUNhY2hlOnRoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLGdsb2JhbEltYWdlQ2FjaGU6dGhpcy5nbG9iYWxJbWFnZUNhY2hlLHN5c3RlbUZvbnRDYWNoZTp0aGlzLnN5c3RlbUZvbnRDYWNoZSxvcHRpb25zOnRoaXMuZXZhbHVhdG9yT3B0aW9uc30pO3MucHVzaChpLmV4dHJhY3RUZXh0Q29udGVudChuLHQsWy0xLzAsLTEvMCwxLzAsMS8wXSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3dhcm4oYGdldEFubm90YXRpb25zRGF0YSAtIGlnbm9yaW5nIHRleHRDb250ZW50IGR1cmluZyAiJHt0Lm5hbWV9IiB0YXNrOiAiJHtlfSIuYCl9KSkpfX1hd2FpdCBQcm9taXNlLmFsbChzKTtyZXR1cm4gcn1nZXQgYW5ub3RhdGlvbnMoKXtjb25zdCBlPXRoaXMuX2dldEluaGVyaXRhYmxlUHJvcGVydHkoIkFubm90cyIpO3JldHVybiBzaGFkb3codGhpcywiYW5ub3RhdGlvbnMiLEFycmF5LmlzQXJyYXkoZSk/ZTpbXSl9Z2V0IF9wYXJzZWRBbm5vdGF0aW9ucygpe3JldHVybiBzaGFkb3codGhpcywiX3BhcnNlZEFubm90YXRpb25zIix0aGlzLnBkZk1hbmFnZXIuZW5zdXJlKHRoaXMsImFubm90YXRpb25zIikudGhlbigoYXN5bmMgZT0+e2lmKDA9PT1lLmxlbmd0aClyZXR1cm4gZTtjb25zdFt0LGldPWF3YWl0IFByb21pc2UuYWxsKFt0aGlzLnBkZk1hbmFnZXIuZW5zdXJlRG9jKCJhbm5vdGF0aW9uR2xvYmFscyIpLHRoaXMucGRmTWFuYWdlci5lbnN1cmVEb2MoImZpZWxkT2JqZWN0cyIpXSk7aWYoIXQpcmV0dXJuW107Y29uc3QgYT1pPy5vcnBoYW5GaWVsZHMscj1bXTtmb3IoY29uc3QgaSBvZiBlKXIucHVzaChBbm5vdGF0aW9uRmFjdG9yeS5jcmVhdGUodGhpcy54cmVmLGksdCx0aGlzLl9sb2NhbElkRmFjdG9yeSwhMSxhLHRoaXMucmVmKS5jYXRjaCgoZnVuY3Rpb24oZSl7d2FybihgX3BhcnNlZEFubm90YXRpb25zOiAiJHtlfSIuYCk7cmV0dXJuIG51bGx9KSkpO2NvbnN0IHM9W107bGV0IG4sbztmb3IoY29uc3QgZSBvZiBhd2FpdCBQcm9taXNlLmFsbChyKSllJiYoZSBpbnN0YW5jZW9mIFdpZGdldEFubm90YXRpb24/KG98fD1bXSkucHVzaChlKTplIGluc3RhbmNlb2YgUG9wdXBBbm5vdGF0aW9uPyhufHw9W10pLnB1c2goZSk6cy5wdXNoKGUpKTtvJiZzLnB1c2goLi4ubyk7biYmcy5wdXNoKC4uLm4pO3JldHVybiBzfSkpKX1nZXQganNBY3Rpb25zKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJqc0FjdGlvbnMiLGNvbGxlY3RBY3Rpb25zKHRoaXMueHJlZix0aGlzLnBhZ2VEaWN0LHlBKSl9fWNvbnN0IENvPW5ldyBVaW50OEFycmF5KFszNyw4MCw2OCw3MCw0NV0pLGhvPW5ldyBVaW50OEFycmF5KFsxMTUsMTE2LDk3LDExNCwxMTYsMTIwLDExNCwxMDEsMTAyXSksbG89bmV3IFVpbnQ4QXJyYXkoWzEwMSwxMTAsMTAwLDExMSw5OCwxMDZdKTtmdW5jdGlvbiBmaW5kKGUsdCxpPTEwMjQsYT0hMSl7Y29uc3Qgcj10Lmxlbmd0aCxzPWUucGVla0J5dGVzKGkpLG49cy5sZW5ndGgtcjtpZihuPD0wKXJldHVybiExO2lmKGEpe2NvbnN0IGk9ci0xO2xldCBhPXMubGVuZ3RoLTE7Zm9yKDthPj1pOyl7bGV0IG49MDtmb3IoO248ciYmc1thLW5dPT09dFtpLW5dOyluKys7aWYobj49cil7ZS5wb3MrPWEtaTtyZXR1cm4hMH1hLS19fWVsc2V7bGV0IGk9MDtmb3IoO2k8PW47KXtsZXQgYT0wO2Zvcig7YTxyJiZzW2krYV09PT10W2FdOylhKys7aWYoYT49cil7ZS5wb3MrPWk7cmV0dXJuITB9aSsrfX1yZXR1cm4hMX1jbGFzcyBQREZEb2N1bWVudHtjb25zdHJ1Y3RvcihlLHQpe2lmKHQubGVuZ3RoPD0wKXRocm93IG5ldyBJbnZhbGlkUERGRXhjZXB0aW9uKCJUaGUgUERGIGZpbGUgaXMgZW1wdHksIGkuZS4gaXRzIHNpemUgaXMgemVybyBieXRlcy4iKTt0aGlzLnBkZk1hbmFnZXI9ZTt0aGlzLnN0cmVhbT10O3RoaXMueHJlZj1uZXcgWFJlZih0LGUpO3RoaXMuX3BhZ2VQcm9taXNlcz1uZXcgTWFwO3RoaXMuX3ZlcnNpb249bnVsbDtjb25zdCBpPXtmb250OjB9O3RoaXMuX2dsb2JhbElkRmFjdG9yeT1jbGFzc3tzdGF0aWMgZ2V0RG9jSWQoKXtyZXR1cm5gZ18ke2UuZG9jSWR9YH1zdGF0aWMgY3JlYXRlRm9udElkKCl7cmV0dXJuImYiKyArK2kuZm9udH1zdGF0aWMgY3JlYXRlT2JqSWQoKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGBjcmVhdGVPYmpJZGAgY2FsbGVkLiIpfXN0YXRpYyBnZXRQYWdlT2JqSWQoKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGBnZXRQYWdlT2JqSWRgIGNhbGxlZC4iKX19fXBhcnNlKGUpe3RoaXMueHJlZi5wYXJzZShlKTt0aGlzLmNhdGFsb2c9bmV3IENhdGFsb2codGhpcy5wZGZNYW5hZ2VyLHRoaXMueHJlZil9Z2V0IGxpbmVhcml6YXRpb24oKXtsZXQgZT1udWxsO3RyeXtlPUxpbmVhcml6YXRpb24uY3JlYXRlKHRoaXMuc3RyZWFtKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTtpbmZvKGUpfXJldHVybiBzaGFkb3codGhpcywibGluZWFyaXphdGlvbiIsZSl9Z2V0IHN0YXJ0WFJlZigpe2NvbnN0IGU9dGhpcy5zdHJlYW07bGV0IHQ9MDtpZih0aGlzLmxpbmVhcml6YXRpb24pe2UucmVzZXQoKTtpZihmaW5kKGUsbG8pKXtlLnNraXAoNik7bGV0IGk9ZS5wZWVrQnl0ZSgpO2Zvcig7aXNXaGl0ZVNwYWNlKGkpOyl7ZS5wb3MrKztpPWUucGVla0J5dGUoKX10PWUucG9zLWUuc3RhcnR9fWVsc2V7Y29uc3QgaT0xMDI0LGE9aG8ubGVuZ3RoO2xldCByPSExLHM9ZS5lbmQ7Zm9yKDshciYmcz4wOyl7cy09aS1hO3M8MCYmKHM9MCk7ZS5wb3M9cztyPWZpbmQoZSxobyxpLCEwKX1pZihyKXtlLnNraXAoOSk7bGV0IGk7ZG97aT1lLmdldEJ5dGUoKX13aGlsZShpc1doaXRlU3BhY2UoaSkpO2xldCBhPSIiO2Zvcig7aT49MzImJmk8PTU3Oyl7YSs9U3RyaW5nLmZyb21DaGFyQ29kZShpKTtpPWUuZ2V0Qnl0ZSgpfXQ9cGFyc2VJbnQoYSwxMCk7aXNOYU4odCkmJih0PTApfX1yZXR1cm4gc2hhZG93KHRoaXMsInN0YXJ0WFJlZiIsdCl9Y2hlY2tIZWFkZXIoKXtjb25zdCBlPXRoaXMuc3RyZWFtO2UucmVzZXQoKTtpZighZmluZChlLENvKSlyZXR1cm47ZS5tb3ZlU3RhcnQoKTtlLnNraXAoQ28ubGVuZ3RoKTtsZXQgdCxpPSIiO2Zvcig7KHQ9ZS5nZXRCeXRlKCkpPjMyJiZpLmxlbmd0aDw3OylpKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHQpO050LnRlc3QoaSk/dGhpcy5fdmVyc2lvbj1pOndhcm4oYEludmFsaWQgUERGIGhlYWRlciB2ZXJzaW9uOiAke2l9YCl9cGFyc2VTdGFydFhSZWYoKXt0aGlzLnhyZWYuc2V0U3RhcnRYUmVmKHRoaXMuc3RhcnRYUmVmKX1nZXQgbnVtUGFnZXMoKXtsZXQgZT0wO2U9dGhpcy5jYXRhbG9nLmhhc0FjdHVhbE51bVBhZ2VzP3RoaXMuY2F0YWxvZy5udW1QYWdlczp0aGlzLnhmYUZhY3Rvcnk/dGhpcy54ZmFGYWN0b3J5LmdldE51bVBhZ2VzKCk6dGhpcy5saW5lYXJpemF0aW9uP3RoaXMubGluZWFyaXphdGlvbi5udW1QYWdlczp0aGlzLmNhdGFsb2cubnVtUGFnZXM7cmV0dXJuIHNoYWRvdyh0aGlzLCJudW1QYWdlcyIsZSl9X2hhc09ubHlEb2N1bWVudFNpZ25hdHVyZXMoZSx0PTApe3JldHVybiEhQXJyYXkuaXNBcnJheShlKSYmZS5ldmVyeSgoZT0+e2lmKCEoKGU9dGhpcy54cmVmLmZldGNoSWZSZWYoZSkpaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm4hMTtpZihlLmhhcygiS2lkcyIpKXtpZigrK3Q+MTApe3dhcm4oIl9oYXNPbmx5RG9jdW1lbnRTaWduYXR1cmVzOiBtYXhpbXVtIHJlY3Vyc2lvbiBkZXB0aCByZWFjaGVkIik7cmV0dXJuITF9cmV0dXJuIHRoaXMuX2hhc09ubHlEb2N1bWVudFNpZ25hdHVyZXMoZS5nZXQoIktpZHMiKSx0KX1jb25zdCBpPWlzTmFtZShlLmdldCgiRlQiKSwiU2lnIiksYT1lLmdldCgiUmVjdCIpLHI9QXJyYXkuaXNBcnJheShhKSYmYS5ldmVyeSgoZT0+MD09PWUpKTtyZXR1cm4gaSYmcn0pKX1nZXQgX3hmYVN0cmVhbXMoKXtjb25zdCBlPXRoaXMuY2F0YWxvZy5hY3JvRm9ybTtpZighZSlyZXR1cm4gbnVsbDtjb25zdCB0PWUuZ2V0KCJYRkEiKSxpPXsieGRwOnhkcCI6IiIsdGVtcGxhdGU6IiIsZGF0YXNldHM6IiIsY29uZmlnOiIiLGNvbm5lY3Rpb25TZXQ6IiIsbG9jYWxlU2V0OiIiLHN0eWxlc2hlZXQ6IiIsIi94ZHA6eGRwIjoiIn07aWYodCBpbnN0YW5jZW9mIEJhc2VTdHJlYW0mJiF0LmlzRW1wdHkpe2lbInhkcDp4ZHAiXT10O3JldHVybiBpfWlmKCFBcnJheS5pc0FycmF5KHQpfHwwPT09dC5sZW5ndGgpcmV0dXJuIG51bGw7Zm9yKGxldCBlPTAsYT10Lmxlbmd0aDtlPGE7ZSs9Mil7bGV0IHI7cj0wPT09ZT8ieGRwOnhkcCI6ZT09PWEtMj8iL3hkcDp4ZHAiOnRbZV07aWYoIWkuaGFzT3duUHJvcGVydHkocikpY29udGludWU7Y29uc3Qgcz10aGlzLnhyZWYuZmV0Y2hJZlJlZih0W2UrMV0pO3MgaW5zdGFuY2VvZiBCYXNlU3RyZWFtJiYhcy5pc0VtcHR5JiYoaVtyXT1zKX1yZXR1cm4gaX1nZXQgeGZhRGF0YXNldHMoKXtjb25zdCBlPXRoaXMuX3hmYVN0cmVhbXM7aWYoIWUpcmV0dXJuIHNoYWRvdyh0aGlzLCJ4ZmFEYXRhc2V0cyIsbnVsbCk7Zm9yKGNvbnN0IHQgb2ZbImRhdGFzZXRzIiwieGRwOnhkcCJdKXtjb25zdCBpPWVbdF07aWYoaSl0cnl7Y29uc3QgZT1zdHJpbmdUb1VURjhTdHJpbmcoaS5nZXRTdHJpbmcoKSk7cmV0dXJuIHNoYWRvdyh0aGlzLCJ4ZmFEYXRhc2V0cyIsbmV3IERhdGFzZXRSZWFkZXIoe1t0XTplfSkpfWNhdGNoe3dhcm4oIlhGQSAtIEludmFsaWQgdXRmLTggc3RyaW5nLiIpO2JyZWFrfX1yZXR1cm4gc2hhZG93KHRoaXMsInhmYURhdGFzZXRzIixudWxsKX1nZXQgeGZhRGF0YSgpe2NvbnN0IGU9dGhpcy5feGZhU3RyZWFtcztpZighZSlyZXR1cm4gbnVsbDtjb25zdCB0PU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGNvbnN0W2ksYV1vZiBPYmplY3QuZW50cmllcyhlKSlpZihhKXRyeXt0W2ldPXN0cmluZ1RvVVRGOFN0cmluZyhhLmdldFN0cmluZygpKX1jYXRjaHt3YXJuKCJYRkEgLSBJbnZhbGlkIHV0Zi04IHN0cmluZy4iKTtyZXR1cm4gbnVsbH1yZXR1cm4gdH1nZXQgeGZhRmFjdG9yeSgpe2xldCBlO3RoaXMucGRmTWFuYWdlci5lbmFibGVYZmEmJnRoaXMuY2F0YWxvZy5uZWVkc1JlbmRlcmluZyYmdGhpcy5mb3JtSW5mby5oYXNYZmEmJiF0aGlzLmZvcm1JbmZvLmhhc0Fjcm9Gb3JtJiYoZT10aGlzLnhmYURhdGEpO3JldHVybiBzaGFkb3codGhpcywieGZhRmFjdG9yeSIsZT9uZXcgWEZBRmFjdG9yeShlKTpudWxsKX1nZXQgaXNQdXJlWGZhKCl7cmV0dXJuISF0aGlzLnhmYUZhY3RvcnkmJnRoaXMueGZhRmFjdG9yeS5pc1ZhbGlkKCl9Z2V0IGh0bWxGb3JYZmEoKXtyZXR1cm4gdGhpcy54ZmFGYWN0b3J5P3RoaXMueGZhRmFjdG9yeS5nZXRQYWdlcygpOm51bGx9YXN5bmMgbG9hZFhmYUltYWdlcygpe2NvbnN0IGU9YXdhaXQgdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZUNhdGFsb2coInhmYUltYWdlcyIpO2lmKCFlKXJldHVybjtjb25zdCB0PWUuZ2V0S2V5cygpLGk9bmV3IE9iamVjdExvYWRlcihlLHQsdGhpcy54cmVmKTthd2FpdCBpLmxvYWQoKTtjb25zdCBhPW5ldyBNYXA7Zm9yKGNvbnN0IGkgb2YgdCl7Y29uc3QgdD1lLmdldChpKTt0IGluc3RhbmNlb2YgQmFzZVN0cmVhbSYmYS5zZXQoaSx0LmdldEJ5dGVzKCkpfXRoaXMueGZhRmFjdG9yeS5zZXRJbWFnZXMoYSl9YXN5bmMgbG9hZFhmYUZvbnRzKGUsdCl7Y29uc3QgaT1hd2FpdCB0aGlzLnBkZk1hbmFnZXIuZW5zdXJlQ2F0YWxvZygiYWNyb0Zvcm0iKTtpZighaSlyZXR1cm47Y29uc3QgYT1hd2FpdCBpLmdldEFzeW5jKCJEUiIpO2lmKCEoYSBpbnN0YW5jZW9mIERpY3QpKXJldHVybjtjb25zdCByPW5ldyBPYmplY3RMb2FkZXIoYSxbIkZvbnQiXSx0aGlzLnhyZWYpO2F3YWl0IHIubG9hZCgpO2NvbnN0IHM9YS5nZXQoIkZvbnQiKTtpZighKHMgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm47Y29uc3Qgbj1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5wZGZNYW5hZ2VyLmV2YWx1YXRvck9wdGlvbnMpO24udXNlU3lzdGVtRm9udHM9ITE7Y29uc3Qgbz1uZXcgUGFydGlhbEV2YWx1YXRvcih7eHJlZjp0aGlzLnhyZWYsaGFuZGxlcjplLHBhZ2VJbmRleDotMSxpZEZhY3Rvcnk6dGhpcy5fZ2xvYmFsSWRGYWN0b3J5LGZvbnRDYWNoZTp0aGlzLmNhdGFsb2cuZm9udENhY2hlLGJ1aWx0SW5DTWFwQ2FjaGU6dGhpcy5jYXRhbG9nLmJ1aWx0SW5DTWFwQ2FjaGUsc3RhbmRhcmRGb250RGF0YUNhY2hlOnRoaXMuY2F0YWxvZy5zdGFuZGFyZEZvbnREYXRhQ2FjaGUsb3B0aW9uczpufSksZz1uZXcgT3BlcmF0b3JMaXN0LGM9W10sQz17Z2V0IGZvbnQoKXtyZXR1cm4gYy5hdCgtMSl9LHNldCBmb250KGUpe2MucHVzaChlKX0sY2xvbmUoKXtyZXR1cm4gdGhpc319LGg9bmV3IE1hcDtzLmZvckVhY2goKChlLHQpPT57aC5zZXQoZSx0KX0pKTtjb25zdCBsPVtdO2Zvcihjb25zdFtlLGldb2YgaCl7Y29uc3Qgcj1pLmdldCgiRm9udERlc2NyaXB0b3IiKTtpZighKHIgaW5zdGFuY2VvZiBEaWN0KSljb250aW51ZTtsZXQgcz1yLmdldCgiRm9udEZhbWlseSIpO3M9cy5yZXBsYWNlQWxsKC9bIF0rKFxkKS9nLCIkMSIpO2NvbnN0IG49e2ZvbnRGYW1pbHk6cyxmb250V2VpZ2h0OnIuZ2V0KCJGb250V2VpZ2h0IiksaXRhbGljQW5nbGU6LXIuZ2V0KCJJdGFsaWNBbmdsZSIpfTt2YWxpZGF0ZUNTU0ZvbnQobikmJmwucHVzaChvLmhhbmRsZVNldEZvbnQoYSxbTmFtZS5nZXQoZSksMV0sbnVsbCxnLHQsQyxudWxsLG4pLmNhdGNoKChmdW5jdGlvbihlKXt3YXJuKGBsb2FkWGZhRm9udHM6ICIke2V9Ii5gKTtyZXR1cm4gbnVsbH0pKSl9YXdhaXQgUHJvbWlzZS5hbGwobCk7Y29uc3QgUT10aGlzLnhmYUZhY3Rvcnkuc2V0Rm9udHMoYyk7aWYoIVEpcmV0dXJuO24uaWdub3JlRXJyb3JzPSEwO2wubGVuZ3RoPTA7Yy5sZW5ndGg9MDtjb25zdCBFPW5ldyBTZXQ7Zm9yKGNvbnN0IGUgb2YgUSlnZXRYZmFGb250TmFtZShgJHtlfS1SZWd1bGFyYCl8fEUuYWRkKGUpO0Uuc2l6ZSYmUS5wdXNoKCJQZGZKUy1GYWxsYmFjayIpO2Zvcihjb25zdCBlIG9mIFEpaWYoIUUuaGFzKGUpKWZvcihjb25zdCBpIG9mW3tuYW1lOiJSZWd1bGFyIixmb250V2VpZ2h0OjQwMCxpdGFsaWNBbmdsZTowfSx7bmFtZToiQm9sZCIsZm9udFdlaWdodDo3MDAsaXRhbGljQW5nbGU6MH0se25hbWU6Ikl0YWxpYyIsZm9udFdlaWdodDo0MDAsaXRhbGljQW5nbGU6MTJ9LHtuYW1lOiJCb2xkSXRhbGljIixmb250V2VpZ2h0OjcwMCxpdGFsaWNBbmdsZToxMn1dKXtjb25zdCByPWAke2V9LSR7aS5uYW1lfWAscz1nZXRYZmFGb250RGljdChyKTtsLnB1c2goby5oYW5kbGVTZXRGb250KGEsW05hbWUuZ2V0KHIpLDFdLG51bGwsZyx0LEMscyx7Zm9udEZhbWlseTplLGZvbnRXZWlnaHQ6aS5mb250V2VpZ2h0LGl0YWxpY0FuZ2xlOmkuaXRhbGljQW5nbGV9KS5jYXRjaCgoZnVuY3Rpb24oZSl7d2FybihgbG9hZFhmYUZvbnRzOiAiJHtlfSIuYCk7cmV0dXJuIG51bGx9KSkpfWF3YWl0IFByb21pc2UuYWxsKGwpO3RoaXMueGZhRmFjdG9yeS5hcHBlbmRGb250cyhjLEUpfWFzeW5jIHNlcmlhbGl6ZVhmYURhdGEoZSl7cmV0dXJuIHRoaXMueGZhRmFjdG9yeT90aGlzLnhmYUZhY3Rvcnkuc2VyaWFsaXplRGF0YShlKTpudWxsfWdldCB2ZXJzaW9uKCl7cmV0dXJuIHRoaXMuY2F0YWxvZy52ZXJzaW9ufHx0aGlzLl92ZXJzaW9ufWdldCBmb3JtSW5mbygpe2NvbnN0IGU9e2hhc0ZpZWxkczohMSxoYXNBY3JvRm9ybTohMSxoYXNYZmE6ITEsaGFzU2lnbmF0dXJlczohMX0sdD10aGlzLmNhdGFsb2cuYWNyb0Zvcm07aWYoIXQpcmV0dXJuIHNoYWRvdyh0aGlzLCJmb3JtSW5mbyIsZSk7dHJ5e2NvbnN0IGk9dC5nZXQoIkZpZWxkcyIpLGE9QXJyYXkuaXNBcnJheShpKSYmaS5sZW5ndGg+MDtlLmhhc0ZpZWxkcz1hO2NvbnN0IHI9dC5nZXQoIlhGQSIpO2UuaGFzWGZhPUFycmF5LmlzQXJyYXkocikmJnIubGVuZ3RoPjB8fHIgaW5zdGFuY2VvZiBCYXNlU3RyZWFtJiYhci5pc0VtcHR5O2NvbnN0IHM9ISEoMSZ0LmdldCgiU2lnRmxhZ3MiKSksbj1zJiZ0aGlzLl9oYXNPbmx5RG9jdW1lbnRTaWduYXR1cmVzKGkpO2UuaGFzQWNyb0Zvcm09YSYmIW47ZS5oYXNTaWduYXR1cmVzPXN9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7d2FybihgQ2Fubm90IGZldGNoIGZvcm0gaW5mb3JtYXRpb246ICIke2V9Ii5gKX1yZXR1cm4gc2hhZG93KHRoaXMsImZvcm1JbmZvIixlKX1nZXQgZG9jdW1lbnRJbmZvKCl7Y29uc3QgZT17UERGRm9ybWF0VmVyc2lvbjp0aGlzLnZlcnNpb24sTGFuZ3VhZ2U6dGhpcy5jYXRhbG9nLmxhbmcsRW5jcnlwdEZpbHRlck5hbWU6dGhpcy54cmVmLmVuY3J5cHQ/dGhpcy54cmVmLmVuY3J5cHQuZmlsdGVyTmFtZTpudWxsLElzTGluZWFyaXplZDohIXRoaXMubGluZWFyaXphdGlvbixJc0Fjcm9Gb3JtUHJlc2VudDp0aGlzLmZvcm1JbmZvLmhhc0Fjcm9Gb3JtLElzWEZBUHJlc2VudDp0aGlzLmZvcm1JbmZvLmhhc1hmYSxJc0NvbGxlY3Rpb25QcmVzZW50OiEhdGhpcy5jYXRhbG9nLmNvbGxlY3Rpb24sSXNTaWduYXR1cmVzUHJlc2VudDp0aGlzLmZvcm1JbmZvLmhhc1NpZ25hdHVyZXN9O2xldCB0O3RyeXt0PXRoaXMueHJlZi50cmFpbGVyLmdldCgiSW5mbyIpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO2luZm8oIlRoZSBkb2N1bWVudCBpbmZvcm1hdGlvbiBkaWN0aW9uYXJ5IGlzIGludmFsaWQuIil9aWYoISh0IGluc3RhbmNlb2YgRGljdCkpcmV0dXJuIHNoYWRvdyh0aGlzLCJkb2N1bWVudEluZm8iLGUpO2Zvcihjb25zdCBpIG9mIHQuZ2V0S2V5cygpKXtjb25zdCBhPXQuZ2V0KGkpO3N3aXRjaChpKXtjYXNlIlRpdGxlIjpjYXNlIkF1dGhvciI6Y2FzZSJTdWJqZWN0IjpjYXNlIktleXdvcmRzIjpjYXNlIkNyZWF0b3IiOmNhc2UiUHJvZHVjZXIiOmNhc2UiQ3JlYXRpb25EYXRlIjpjYXNlIk1vZERhdGUiOmlmKCJzdHJpbmciPT10eXBlb2YgYSl7ZVtpXT1zdHJpbmdUb1BERlN0cmluZyhhKTtjb250aW51ZX1icmVhaztjYXNlIlRyYXBwZWQiOmlmKGEgaW5zdGFuY2VvZiBOYW1lKXtlW2ldPWE7Y29udGludWV9YnJlYWs7ZGVmYXVsdDpsZXQgdDtzd2l0Y2godHlwZW9mIGEpe2Nhc2Uic3RyaW5nIjp0PXN0cmluZ1RvUERGU3RyaW5nKGEpO2JyZWFrO2Nhc2UibnVtYmVyIjpjYXNlImJvb2xlYW4iOnQ9YTticmVhaztkZWZhdWx0OmEgaW5zdGFuY2VvZiBOYW1lJiYodD1hKX1pZih2b2lkIDA9PT10KXt3YXJuKGBCYWQgdmFsdWUsIGZvciBjdXN0b20ga2V5ICIke2l9IiwgaW4gSW5mbzogJHthfS5gKTtjb250aW51ZX1lLkN1c3RvbXx8KGUuQ3VzdG9tPU9iamVjdC5jcmVhdGUobnVsbCkpO2UuQ3VzdG9tW2ldPXQ7Y29udGludWV9d2FybihgQmFkIHZhbHVlLCBmb3Iga2V5ICIke2l9IiwgaW4gSW5mbzogJHthfS5gKX1yZXR1cm4gc2hhZG93KHRoaXMsImRvY3VtZW50SW5mbyIsZSl9Z2V0IGZpbmdlcnByaW50cygpe2Z1bmN0aW9uIHZhbGlkYXRlKGUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZSYmZS5sZW5ndGg+MCYmIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIiE9PWV9ZnVuY3Rpb24gaGV4U3RyaW5nKGUpe2NvbnN0IHQ9W107Zm9yKGNvbnN0IGkgb2YgZSl7Y29uc3QgZT1pLnRvU3RyaW5nKDE2KTt0LnB1c2goZS5wYWRTdGFydCgyLCIwIikpfXJldHVybiB0LmpvaW4oIiIpfWNvbnN0IGU9dGhpcy54cmVmLnRyYWlsZXIuZ2V0KCJJRCIpO2xldCB0LGk7aWYoQXJyYXkuaXNBcnJheShlKSYmdmFsaWRhdGUoZVswXSkpe3Q9c3RyaW5nVG9CeXRlcyhlWzBdKTtlWzFdIT09ZVswXSYmdmFsaWRhdGUoZVsxXSkmJihpPXN0cmluZ1RvQnl0ZXMoZVsxXSkpfWVsc2UgdD1Pcih0aGlzLnN0cmVhbS5nZXRCeXRlUmFuZ2UoMCwxMDI0KSwwLDEwMjQpO3JldHVybiBzaGFkb3codGhpcywiZmluZ2VycHJpbnRzIixbaGV4U3RyaW5nKHQpLGk/aGV4U3RyaW5nKGkpOm51bGxdKX1hc3luYyBfZ2V0TGluZWFyaXphdGlvblBhZ2UoZSl7Y29uc3R7Y2F0YWxvZzp0LGxpbmVhcml6YXRpb246aSx4cmVmOmF9PXRoaXMscj1SZWYuZ2V0KGkub2JqZWN0TnVtYmVyRmlyc3QsMCk7dHJ5e2NvbnN0IGU9YXdhaXQgYS5mZXRjaEFzeW5jKHIpO2lmKGUgaW5zdGFuY2VvZiBEaWN0KXtsZXQgaT1lLmdldFJhdygiVHlwZSIpO2kgaW5zdGFuY2VvZiBSZWYmJihpPWF3YWl0IGEuZmV0Y2hBc3luYyhpKSk7aWYoaXNOYW1lKGksIlBhZ2UiKXx8IWUuaGFzKCJUeXBlIikmJiFlLmhhcygiS2lkcyIpJiZlLmhhcygiQ29udGVudHMiKSl7dC5wYWdlS2lkc0NvdW50Q2FjaGUuaGFzKHIpfHx0LnBhZ2VLaWRzQ291bnRDYWNoZS5wdXQociwxKTt0LnBhZ2VJbmRleENhY2hlLmhhcyhyKXx8dC5wYWdlSW5kZXhDYWNoZS5wdXQociwwKTtyZXR1cm5bZSxyXX19dGhyb3cgbmV3IEZvcm1hdEVycm9yKCJUaGUgTGluZWFyaXphdGlvbiBkaWN0aW9uYXJ5IGRvZXNuJ3QgcG9pbnQgdG8gYSB2YWxpZCBQYWdlIGRpY3Rpb25hcnkuIil9Y2F0Y2goaSl7d2FybihgX2dldExpbmVhcml6YXRpb25QYWdlOiAiJHtpLm1lc3NhZ2V9Ii5gKTtyZXR1cm4gdC5nZXRQYWdlRGljdChlKX19Z2V0UGFnZShlKXtjb25zdCB0PXRoaXMuX3BhZ2VQcm9taXNlcy5nZXQoZSk7aWYodClyZXR1cm4gdDtjb25zdHtjYXRhbG9nOmksbGluZWFyaXphdGlvbjphLHhmYUZhY3Rvcnk6cn09dGhpcztsZXQgcztzPXI/UHJvbWlzZS5yZXNvbHZlKFtEaWN0LmVtcHR5LG51bGxdKTphPy5wYWdlRmlyc3Q9PT1lP3RoaXMuX2dldExpbmVhcml6YXRpb25QYWdlKGUpOmkuZ2V0UGFnZURpY3QoZSk7cz1zLnRoZW4oKChbdCxhXSk9Pm5ldyBQYWdlKHtwZGZNYW5hZ2VyOnRoaXMucGRmTWFuYWdlcix4cmVmOnRoaXMueHJlZixwYWdlSW5kZXg6ZSxwYWdlRGljdDp0LHJlZjphLGdsb2JhbElkRmFjdG9yeTp0aGlzLl9nbG9iYWxJZEZhY3RvcnksZm9udENhY2hlOmkuZm9udENhY2hlLGJ1aWx0SW5DTWFwQ2FjaGU6aS5idWlsdEluQ01hcENhY2hlLHN0YW5kYXJkRm9udERhdGFDYWNoZTppLnN0YW5kYXJkRm9udERhdGFDYWNoZSxnbG9iYWxJbWFnZUNhY2hlOmkuZ2xvYmFsSW1hZ2VDYWNoZSxzeXN0ZW1Gb250Q2FjaGU6aS5zeXN0ZW1Gb250Q2FjaGUsbm9uQmxlbmRNb2Rlc1NldDppLm5vbkJsZW5kTW9kZXNTZXQseGZhRmFjdG9yeTpyfSkpKTt0aGlzLl9wYWdlUHJvbWlzZXMuc2V0KGUscyk7cmV0dXJuIHN9YXN5bmMgY2hlY2tGaXJzdFBhZ2UoZT0hMSl7aWYoIWUpdHJ5e2F3YWl0IHRoaXMuZ2V0UGFnZSgwKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgWFJlZkVudHJ5RXhjZXB0aW9uKXt0aGlzLl9wYWdlUHJvbWlzZXMuZGVsZXRlKDApO2F3YWl0IHRoaXMuY2xlYW51cCgpO3Rocm93IG5ldyBYUmVmUGFyc2VFeGNlcHRpb259fX1hc3luYyBjaGVja0xhc3RQYWdlKGU9ITEpe2NvbnN0e2NhdGFsb2c6dCxwZGZNYW5hZ2VyOml9PXRoaXM7dC5zZXRBY3R1YWxOdW1QYWdlcygpO2xldCBhO3RyeXthd2FpdCBQcm9taXNlLmFsbChbaS5lbnN1cmVEb2MoInhmYUZhY3RvcnkiKSxpLmVuc3VyZURvYygibGluZWFyaXphdGlvbiIpLGkuZW5zdXJlQ2F0YWxvZygibnVtUGFnZXMiKV0pO2lmKHRoaXMueGZhRmFjdG9yeSlyZXR1cm47YT10aGlzLmxpbmVhcml6YXRpb24/dGhpcy5saW5lYXJpemF0aW9uLm51bVBhZ2VzOnQubnVtUGFnZXM7aWYoIU51bWJlci5pc0ludGVnZXIoYSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJQYWdlIGNvdW50IGlzIG5vdCBhbiBpbnRlZ2VyLiIpO2lmKGE8PTEpcmV0dXJuO2F3YWl0IHRoaXMuZ2V0UGFnZShhLTEpfWNhdGNoKHIpe3RoaXMuX3BhZ2VQcm9taXNlcy5kZWxldGUoYS0xKTthd2FpdCB0aGlzLmNsZWFudXAoKTtpZihyIGluc3RhbmNlb2YgWFJlZkVudHJ5RXhjZXB0aW9uJiYhZSl0aHJvdyBuZXcgWFJlZlBhcnNlRXhjZXB0aW9uO3dhcm4oYGNoZWNrTGFzdFBhZ2UgLSBpbnZhbGlkIC9QYWdlcyB0cmVlIC9Db3VudDogJHthfS5gKTtsZXQgczt0cnl7cz1hd2FpdCB0LmdldEFsbFBhZ2VEaWN0cyhlKX1jYXRjaChpKXtpZihpIGluc3RhbmNlb2YgWFJlZkVudHJ5RXhjZXB0aW9uJiYhZSl0aHJvdyBuZXcgWFJlZlBhcnNlRXhjZXB0aW9uO3Quc2V0QWN0dWFsTnVtUGFnZXMoMSk7cmV0dXJufWZvcihjb25zdFtlLFthLHJdXW9mIHMpe2xldCBzO2lmKGEgaW5zdGFuY2VvZiBFcnJvcil7cz1Qcm9taXNlLnJlamVjdChhKTtzLmNhdGNoKCgoKT0+e30pKX1lbHNlIHM9UHJvbWlzZS5yZXNvbHZlKG5ldyBQYWdlKHtwZGZNYW5hZ2VyOmkseHJlZjp0aGlzLnhyZWYscGFnZUluZGV4OmUscGFnZURpY3Q6YSxyZWY6cixnbG9iYWxJZEZhY3Rvcnk6dGhpcy5fZ2xvYmFsSWRGYWN0b3J5LGZvbnRDYWNoZTp0LmZvbnRDYWNoZSxidWlsdEluQ01hcENhY2hlOnQuYnVpbHRJbkNNYXBDYWNoZSxzdGFuZGFyZEZvbnREYXRhQ2FjaGU6dC5zdGFuZGFyZEZvbnREYXRhQ2FjaGUsZ2xvYmFsSW1hZ2VDYWNoZTp0Lmdsb2JhbEltYWdlQ2FjaGUsc3lzdGVtRm9udENhY2hlOnQuc3lzdGVtRm9udENhY2hlLG5vbkJsZW5kTW9kZXNTZXQ6dC5ub25CbGVuZE1vZGVzU2V0LHhmYUZhY3Rvcnk6bnVsbH0pKTt0aGlzLl9wYWdlUHJvbWlzZXMuc2V0KGUscyl9dC5zZXRBY3R1YWxOdW1QYWdlcyhzLnNpemUpfX1mb250RmFsbGJhY2soZSx0KXtyZXR1cm4gdGhpcy5jYXRhbG9nLmZvbnRGYWxsYmFjayhlLHQpfWFzeW5jIGNsZWFudXAoZT0hMSl7cmV0dXJuIHRoaXMuY2F0YWxvZz90aGlzLmNhdGFsb2cuY2xlYW51cChlKTpjbGVhckdsb2JhbENhY2hlcygpfWFzeW5jI1AoZSx0LGksYSxyLHMsbil7Y29uc3R7eHJlZjpvfT10aGlzO2lmKCEoaSBpbnN0YW5jZW9mIFJlZil8fHMuaGFzKGkpKXJldHVybjtzLnB1dChpKTtjb25zdCBnPWF3YWl0IG8uZmV0Y2hBc3luYyhpKTtpZighKGcgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm47aWYoZy5oYXMoIlQiKSl7Y29uc3QgdD1zdHJpbmdUb1BERlN0cmluZyhhd2FpdCBnLmdldEFzeW5jKCJUIikpO2U9IiI9PT1lP3Q6YCR7ZX0uJHt0fWB9ZWxzZXtsZXQgaT1nO2Zvcig7Oyl7aT1pLmdldFJhdygiUGFyZW50Iil8fHQ7aWYoaSBpbnN0YW5jZW9mIFJlZil7aWYocy5oYXMoaSkpYnJlYWs7aT1hd2FpdCBvLmZldGNoQXN5bmMoaSl9aWYoIShpIGluc3RhbmNlb2YgRGljdCkpYnJlYWs7aWYoaS5oYXMoIlQiKSl7Y29uc3QgdD1zdHJpbmdUb1BERlN0cmluZyhhd2FpdCBpLmdldEFzeW5jKCJUIikpO2U9IiI9PT1lP3Q6YCR7ZX0uJHt0fWA7YnJlYWt9fX10JiYhZy5oYXMoIlBhcmVudCIpJiZpc05hbWUoZy5nZXQoIlN1YnR5cGUiKSwiV2lkZ2V0IikmJm4ucHV0KGksdCk7YS5oYXMoZSl8fGEuc2V0KGUsW10pO2EuZ2V0KGUpLnB1c2goQW5ub3RhdGlvbkZhY3RvcnkuY3JlYXRlKG8saSxyLG51bGwsITAsbixudWxsKS50aGVuKChlPT5lPy5nZXRGaWVsZE9iamVjdCgpKSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3dhcm4oYCNjb2xsZWN0RmllbGRPYmplY3RzOiAiJHtlfSIuYCk7cmV0dXJuIG51bGx9KSkpO2lmKCFnLmhhcygiS2lkcyIpKXJldHVybjtjb25zdCBjPWF3YWl0IGcuZ2V0QXN5bmMoIktpZHMiKTtpZihBcnJheS5pc0FycmF5KGMpKWZvcihjb25zdCB0IG9mIGMpYXdhaXQgdGhpcy4jUChlLGksdCxhLHIscyxuKX1nZXQgZmllbGRPYmplY3RzKCl7aWYoIXRoaXMuZm9ybUluZm8uaGFzRmllbGRzKXJldHVybiBzaGFkb3codGhpcywiZmllbGRPYmplY3RzIixQcm9taXNlLnJlc29sdmUobnVsbCkpO3JldHVybiBzaGFkb3codGhpcywiZmllbGRPYmplY3RzIixQcm9taXNlLmFsbChbdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZURvYygiYW5ub3RhdGlvbkdsb2JhbHMiKSx0aGlzLnBkZk1hbmFnZXIuZW5zdXJlQ2F0YWxvZygiYWNyb0Zvcm0iKV0pLnRoZW4oKGFzeW5jKFtlLHRdKT0+e2lmKCFlKXJldHVybiBudWxsO2NvbnN0IGk9bmV3IFJlZlNldCxhPU9iamVjdC5jcmVhdGUobnVsbCkscj1uZXcgTWFwLHM9bmV3IFJlZlNldENhY2hlO2Zvcihjb25zdCBhIG9mIGF3YWl0IHQuZ2V0QXN5bmMoIkZpZWxkcyIpKWF3YWl0IHRoaXMuI1AoIiIsbnVsbCxhLHIsZSxpLHMpO2NvbnN0IG49W107Zm9yKGNvbnN0W2UsdF1vZiByKW4ucHVzaChQcm9taXNlLmFsbCh0KS50aGVuKCh0PT57KHQ9dC5maWx0ZXIoKGU9PiEhZSkpKS5sZW5ndGg+MCYmKGFbZV09dCl9KSkpO2F3YWl0IFByb21pc2UuYWxsKG4pO3JldHVybnthbGxGaWVsZHM6YSxvcnBoYW5GaWVsZHM6c319KSkpfWdldCBoYXNKU0FjdGlvbnMoKXtyZXR1cm4gc2hhZG93KHRoaXMsImhhc0pTQWN0aW9ucyIsdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZURvYygiX3BhcnNlSGFzSlNBY3Rpb25zIikpfWFzeW5jIF9wYXJzZUhhc0pTQWN0aW9ucygpe2NvbnN0W2UsdF09YXdhaXQgUHJvbWlzZS5hbGwoW3RoaXMucGRmTWFuYWdlci5lbnN1cmVDYXRhbG9nKCJqc0FjdGlvbnMiKSx0aGlzLnBkZk1hbmFnZXIuZW5zdXJlRG9jKCJmaWVsZE9iamVjdHMiKV0pO3JldHVybiEhZXx8ISF0JiZPYmplY3QudmFsdWVzKHQuYWxsRmllbGRzKS5zb21lKChlPT5lLnNvbWUoKGU9Pm51bGwhPT1lLmFjdGlvbnMpKSkpfWdldCBjYWxjdWxhdGlvbk9yZGVySWRzKCl7Y29uc3QgZT10aGlzLmNhdGFsb2cuYWNyb0Zvcm07aWYoIWU/LmhhcygiQ08iKSlyZXR1cm4gc2hhZG93KHRoaXMsImNhbGN1bGF0aW9uT3JkZXJJZHMiLG51bGwpO2NvbnN0IHQ9ZS5nZXQoIkNPIik7aWYoIUFycmF5LmlzQXJyYXkodCl8fDA9PT10Lmxlbmd0aClyZXR1cm4gc2hhZG93KHRoaXMsImNhbGN1bGF0aW9uT3JkZXJJZHMiLG51bGwpO2NvbnN0IGk9W107Zm9yKGNvbnN0IGUgb2YgdCllIGluc3RhbmNlb2YgUmVmJiZpLnB1c2goZS50b1N0cmluZygpKTtyZXR1cm4gMD09PWkubGVuZ3RoP3NoYWRvdyh0aGlzLCJjYWxjdWxhdGlvbk9yZGVySWRzIixudWxsKTpzaGFkb3codGhpcywiY2FsY3VsYXRpb25PcmRlcklkcyIsaSl9Z2V0IGFubm90YXRpb25HbG9iYWxzKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJhbm5vdGF0aW9uR2xvYmFscyIsQW5ub3RhdGlvbkZhY3RvcnkuY3JlYXRlR2xvYmFscyh0aGlzLnBkZk1hbmFnZXIpKX19Y2xhc3MgQmFzZVBkZk1hbmFnZXJ7Y29uc3RydWN0b3IoZSl7dGhpcy5fZG9jQmFzZVVybD1mdW5jdGlvbiBwYXJzZURvY0Jhc2VVcmwoZSl7aWYoZSl7Y29uc3QgdD1jcmVhdGVWYWxpZEFic29sdXRlVXJsKGUpO2lmKHQpcmV0dXJuIHQuaHJlZjt3YXJuKGBJbnZhbGlkIGFic29sdXRlIGRvY0Jhc2VVcmw6ICIke2V9Ii5gKX1yZXR1cm4gbnVsbH0oZS5kb2NCYXNlVXJsKTt0aGlzLl9kb2NJZD1lLmRvY0lkO3RoaXMuX3Bhc3N3b3JkPWUucGFzc3dvcmQ7dGhpcy5lbmFibGVYZmE9ZS5lbmFibGVYZmE7ZS5ldmFsdWF0b3JPcHRpb25zLmlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkJiY9RmVhdHVyZVRlc3QuaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ7dGhpcy5ldmFsdWF0b3JPcHRpb25zPU9iamVjdC5mcmVlemUoZS5ldmFsdWF0b3JPcHRpb25zKX1nZXQgZG9jSWQoKXtyZXR1cm4gdGhpcy5fZG9jSWR9Z2V0IHBhc3N3b3JkKCl7cmV0dXJuIHRoaXMuX3Bhc3N3b3JkfWdldCBkb2NCYXNlVXJsKCl7cmV0dXJuIHRoaXMuX2RvY0Jhc2VVcmx9Z2V0IGNhdGFsb2coKXtyZXR1cm4gdGhpcy5wZGZEb2N1bWVudC5jYXRhbG9nfWVuc3VyZURvYyhlLHQpe3JldHVybiB0aGlzLmVuc3VyZSh0aGlzLnBkZkRvY3VtZW50LGUsdCl9ZW5zdXJlWFJlZihlLHQpe3JldHVybiB0aGlzLmVuc3VyZSh0aGlzLnBkZkRvY3VtZW50LnhyZWYsZSx0KX1lbnN1cmVDYXRhbG9nKGUsdCl7cmV0dXJuIHRoaXMuZW5zdXJlKHRoaXMucGRmRG9jdW1lbnQuY2F0YWxvZyxlLHQpfWdldFBhZ2UoZSl7cmV0dXJuIHRoaXMucGRmRG9jdW1lbnQuZ2V0UGFnZShlKX1mb250RmFsbGJhY2soZSx0KXtyZXR1cm4gdGhpcy5wZGZEb2N1bWVudC5mb250RmFsbGJhY2soZSx0KX1sb2FkWGZhRm9udHMoZSx0KXtyZXR1cm4gdGhpcy5wZGZEb2N1bWVudC5sb2FkWGZhRm9udHMoZSx0KX1sb2FkWGZhSW1hZ2VzKCl7cmV0dXJuIHRoaXMucGRmRG9jdW1lbnQubG9hZFhmYUltYWdlcygpfXNlcmlhbGl6ZVhmYURhdGEoZSl7cmV0dXJuIHRoaXMucGRmRG9jdW1lbnQuc2VyaWFsaXplWGZhRGF0YShlKX1jbGVhbnVwKGU9ITEpe3JldHVybiB0aGlzLnBkZkRvY3VtZW50LmNsZWFudXAoZSl9YXN5bmMgZW5zdXJlKGUsdCxpKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGBlbnN1cmVgIGNhbGxlZCIpfXJlcXVlc3RSYW5nZShlLHQpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYHJlcXVlc3RSYW5nZWAgY2FsbGVkIil9cmVxdWVzdExvYWRlZFN0cmVhbShlPSExKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGByZXF1ZXN0TG9hZGVkU3RyZWFtYCBjYWxsZWQiKX1zZW5kUHJvZ3Jlc3NpdmVEYXRhKGUpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYHNlbmRQcm9ncmVzc2l2ZURhdGFgIGNhbGxlZCIpfXVwZGF0ZVBhc3N3b3JkKGUpe3RoaXMuX3Bhc3N3b3JkPWV9dGVybWluYXRlKGUpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYHRlcm1pbmF0ZWAgY2FsbGVkIil9fWNsYXNzIExvY2FsUGRmTWFuYWdlciBleHRlbmRzIEJhc2VQZGZNYW5hZ2Vye2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0IHQ9bmV3IFN0cmVhbShlLnNvdXJjZSk7dGhpcy5wZGZEb2N1bWVudD1uZXcgUERGRG9jdW1lbnQodGhpcyx0KTt0aGlzLl9sb2FkZWRTdHJlYW1Qcm9taXNlPVByb21pc2UucmVzb2x2ZSh0KX1hc3luYyBlbnN1cmUoZSx0LGkpe2NvbnN0IGE9ZVt0XTtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgYT9hLmFwcGx5KGUsaSk6YX1yZXF1ZXN0UmFuZ2UoZSx0KXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCl9cmVxdWVzdExvYWRlZFN0cmVhbShlPSExKXtyZXR1cm4gdGhpcy5fbG9hZGVkU3RyZWFtUHJvbWlzZX10ZXJtaW5hdGUoZSl7fX1jbGFzcyBOZXR3b3JrUGRmTWFuYWdlciBleHRlbmRzIEJhc2VQZGZNYW5hZ2Vye2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuc3RyZWFtTWFuYWdlcj1uZXcgQ2h1bmtlZFN0cmVhbU1hbmFnZXIoZS5zb3VyY2Use21zZ0hhbmRsZXI6ZS5oYW5kbGVyLGxlbmd0aDplLmxlbmd0aCxkaXNhYmxlQXV0b0ZldGNoOmUuZGlzYWJsZUF1dG9GZXRjaCxyYW5nZUNodW5rU2l6ZTplLnJhbmdlQ2h1bmtTaXplfSk7dGhpcy5wZGZEb2N1bWVudD1uZXcgUERGRG9jdW1lbnQodGhpcyx0aGlzLnN0cmVhbU1hbmFnZXIuZ2V0U3RyZWFtKCkpfWFzeW5jIGVuc3VyZShlLHQsaSl7dHJ5e2NvbnN0IGE9ZVt0XTtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgYT9hLmFwcGx5KGUsaSk6YX1jYXRjaChhKXtpZighKGEgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbikpdGhyb3cgYTthd2FpdCB0aGlzLnJlcXVlc3RSYW5nZShhLmJlZ2luLGEuZW5kKTtyZXR1cm4gdGhpcy5lbnN1cmUoZSx0LGkpfX1yZXF1ZXN0UmFuZ2UoZSx0KXtyZXR1cm4gdGhpcy5zdHJlYW1NYW5hZ2VyLnJlcXVlc3RSYW5nZShlLHQpfXJlcXVlc3RMb2FkZWRTdHJlYW0oZT0hMSl7cmV0dXJuIHRoaXMuc3RyZWFtTWFuYWdlci5yZXF1ZXN0QWxsQ2h1bmtzKGUpfXNlbmRQcm9ncmVzc2l2ZURhdGEoZSl7dGhpcy5zdHJlYW1NYW5hZ2VyLm9uUmVjZWl2ZURhdGEoe2NodW5rOmV9KX10ZXJtaW5hdGUoZSl7dGhpcy5zdHJlYW1NYW5hZ2VyLmFib3J0KGUpfX1jb25zdCBCbz0xLFFvPTIsRW89MSx1bz0yLGZvPTMscG89NCxtbz01LHlvPTYsd289Nyxibz04O2Z1bmN0aW9uIHdyYXBSZWFzb24oZSl7ZSBpbnN0YW5jZW9mIEVycm9yfHwib2JqZWN0Ij09dHlwZW9mIGUmJm51bGwhPT1lfHx1bnJlYWNoYWJsZSgnd3JhcFJlYXNvbjogRXhwZWN0ZWQgInJlYXNvbiIgdG8gYmUgYSAocG9zc2libHkgY2xvbmVkKSBFcnJvci4nKTtzd2l0Y2goZS5uYW1lKXtjYXNlIkFib3J0RXhjZXB0aW9uIjpyZXR1cm4gbmV3IEFib3J0RXhjZXB0aW9uKGUubWVzc2FnZSk7Y2FzZSJNaXNzaW5nUERGRXhjZXB0aW9uIjpyZXR1cm4gbmV3IE1pc3NpbmdQREZFeGNlcHRpb24oZS5tZXNzYWdlKTtjYXNlIlBhc3N3b3JkRXhjZXB0aW9uIjpyZXR1cm4gbmV3IFBhc3N3b3JkRXhjZXB0aW9uKGUubWVzc2FnZSxlLmNvZGUpO2Nhc2UiVW5leHBlY3RlZFJlc3BvbnNlRXhjZXB0aW9uIjpyZXR1cm4gbmV3IFVuZXhwZWN0ZWRSZXNwb25zZUV4Y2VwdGlvbihlLm1lc3NhZ2UsZS5zdGF0dXMpO2Nhc2UiVW5rbm93bkVycm9yRXhjZXB0aW9uIjpyZXR1cm4gbmV3IFVua25vd25FcnJvckV4Y2VwdGlvbihlLm1lc3NhZ2UsZS5kZXRhaWxzKTtkZWZhdWx0OnJldHVybiBuZXcgVW5rbm93bkVycm9yRXhjZXB0aW9uKGUubWVzc2FnZSxlLnRvU3RyaW5nKCkpfX1jbGFzcyBNZXNzYWdlSGFuZGxlcntjb25zdHJ1Y3RvcihlLHQsaSl7dGhpcy5zb3VyY2VOYW1lPWU7dGhpcy50YXJnZXROYW1lPXQ7dGhpcy5jb21PYmo9aTt0aGlzLmNhbGxiYWNrSWQ9MTt0aGlzLnN0cmVhbUlkPTE7dGhpcy5zdHJlYW1TaW5rcz1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXMuc3RyZWFtQ29udHJvbGxlcnM9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLmNhbGxiYWNrQ2FwYWJpbGl0aWVzPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5hY3Rpb25IYW5kbGVyPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5fb25Db21PYmpPbk1lc3NhZ2U9ZT0+e2NvbnN0IHQ9ZS5kYXRhO2lmKHQudGFyZ2V0TmFtZSE9PXRoaXMuc291cmNlTmFtZSlyZXR1cm47aWYodC5zdHJlYW0pe3RoaXMuI1codCk7cmV0dXJufWlmKHQuY2FsbGJhY2spe2NvbnN0IGU9dC5jYWxsYmFja0lkLGk9dGhpcy5jYWxsYmFja0NhcGFiaWxpdGllc1tlXTtpZighaSl0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCByZXNvbHZlIGNhbGxiYWNrICR7ZX1gKTtkZWxldGUgdGhpcy5jYWxsYmFja0NhcGFiaWxpdGllc1tlXTtpZih0LmNhbGxiYWNrPT09Qm8paS5yZXNvbHZlKHQuZGF0YSk7ZWxzZXtpZih0LmNhbGxiYWNrIT09UW8pdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIGNhbGxiYWNrIGNhc2UiKTtpLnJlamVjdCh3cmFwUmVhc29uKHQucmVhc29uKSl9cmV0dXJufWNvbnN0IGE9dGhpcy5hY3Rpb25IYW5kbGVyW3QuYWN0aW9uXTtpZighYSl0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gYWN0aW9uIGZyb20gd29ya2VyOiAke3QuYWN0aW9ufWApO2lmKHQuY2FsbGJhY2tJZCl7Y29uc3QgZT10aGlzLnNvdXJjZU5hbWUscj10LnNvdXJjZU5hbWU7bmV3IFByb21pc2UoKGZ1bmN0aW9uKGUpe2UoYSh0LmRhdGEpKX0pKS50aGVuKChmdW5jdGlvbihhKXtpLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmUsdGFyZ2V0TmFtZTpyLGNhbGxiYWNrOkJvLGNhbGxiYWNrSWQ6dC5jYWxsYmFja0lkLGRhdGE6YX0pfSksKGZ1bmN0aW9uKGEpe2kucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6ZSx0YXJnZXROYW1lOnIsY2FsbGJhY2s6UW8sY2FsbGJhY2tJZDp0LmNhbGxiYWNrSWQscmVhc29uOndyYXBSZWFzb24oYSl9KX0pKX1lbHNlIHQuc3RyZWFtSWQ/dGhpcy4jaih0KTphKHQuZGF0YSl9O2kuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsdGhpcy5fb25Db21PYmpPbk1lc3NhZ2UpfW9uKGUsdCl7Y29uc3QgaT10aGlzLmFjdGlvbkhhbmRsZXI7aWYoaVtlXSl0aHJvdyBuZXcgRXJyb3IoYFRoZXJlIGlzIGFscmVhZHkgYW4gYWN0aW9uTmFtZSBjYWxsZWQgIiR7ZX0iYCk7aVtlXT10fXNlbmQoZSx0LGkpe3RoaXMuY29tT2JqLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOnRoaXMuc291cmNlTmFtZSx0YXJnZXROYW1lOnRoaXMudGFyZ2V0TmFtZSxhY3Rpb246ZSxkYXRhOnR9LGkpfXNlbmRXaXRoUHJvbWlzZShlLHQsaSl7Y29uc3QgYT10aGlzLmNhbGxiYWNrSWQrKyxyPVByb21pc2Uud2l0aFJlc29sdmVycygpO3RoaXMuY2FsbGJhY2tDYXBhYmlsaXRpZXNbYV09cjt0cnl7dGhpcy5jb21PYmoucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6dGhpcy5zb3VyY2VOYW1lLHRhcmdldE5hbWU6dGhpcy50YXJnZXROYW1lLGFjdGlvbjplLGNhbGxiYWNrSWQ6YSxkYXRhOnR9LGkpfWNhdGNoKGUpe3IucmVqZWN0KGUpfXJldHVybiByLnByb21pc2V9c2VuZFdpdGhTdHJlYW0oZSx0LGksYSl7Y29uc3Qgcj10aGlzLnN0cmVhbUlkKysscz10aGlzLnNvdXJjZU5hbWUsbj10aGlzLnRhcmdldE5hbWUsbz10aGlzLmNvbU9iajtyZXR1cm4gbmV3IFJlYWRhYmxlU3RyZWFtKHtzdGFydDppPT57Y29uc3QgZz1Qcm9taXNlLndpdGhSZXNvbHZlcnMoKTt0aGlzLnN0cmVhbUNvbnRyb2xsZXJzW3JdPXtjb250cm9sbGVyOmksc3RhcnRDYWxsOmcscHVsbENhbGw6bnVsbCxjYW5jZWxDYWxsOm51bGwsaXNDbG9zZWQ6ITF9O28ucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6cyx0YXJnZXROYW1lOm4sYWN0aW9uOmUsc3RyZWFtSWQ6cixkYXRhOnQsZGVzaXJlZFNpemU6aS5kZXNpcmVkU2l6ZX0sYSk7cmV0dXJuIGcucHJvbWlzZX0scHVsbDplPT57Y29uc3QgdD1Qcm9taXNlLndpdGhSZXNvbHZlcnMoKTt0aGlzLnN0cmVhbUNvbnRyb2xsZXJzW3JdLnB1bGxDYWxsPXQ7by5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpzLHRhcmdldE5hbWU6bixzdHJlYW06eW8sc3RyZWFtSWQ6cixkZXNpcmVkU2l6ZTplLmRlc2lyZWRTaXplfSk7cmV0dXJuIHQucHJvbWlzZX0sY2FuY2VsOmU9Pnthc3NlcnQoZSBpbnN0YW5jZW9mIEVycm9yLCJjYW5jZWwgbXVzdCBoYXZlIGEgdmFsaWQgcmVhc29uIik7Y29uc3QgdD1Qcm9taXNlLndpdGhSZXNvbHZlcnMoKTt0aGlzLnN0cmVhbUNvbnRyb2xsZXJzW3JdLmNhbmNlbENhbGw9dDt0aGlzLnN0cmVhbUNvbnRyb2xsZXJzW3JdLmlzQ2xvc2VkPSEwO28ucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6cyx0YXJnZXROYW1lOm4sc3RyZWFtOkVvLHN0cmVhbUlkOnIscmVhc29uOndyYXBSZWFzb24oZSl9KTtyZXR1cm4gdC5wcm9taXNlfX0saSl9I2ooZSl7Y29uc3QgdD1lLnN0cmVhbUlkLGk9dGhpcy5zb3VyY2VOYW1lLGE9ZS5zb3VyY2VOYW1lLHI9dGhpcy5jb21PYmoscz10aGlzLG49dGhpcy5hY3Rpb25IYW5kbGVyW2UuYWN0aW9uXSxvPXtlbnF1ZXVlKGUscz0xLG4pe2lmKHRoaXMuaXNDYW5jZWxsZWQpcmV0dXJuO2NvbnN0IG89dGhpcy5kZXNpcmVkU2l6ZTt0aGlzLmRlc2lyZWRTaXplLT1zO2lmKG8+MCYmdGhpcy5kZXNpcmVkU2l6ZTw9MCl7dGhpcy5zaW5rQ2FwYWJpbGl0eT1Qcm9taXNlLndpdGhSZXNvbHZlcnMoKTt0aGlzLnJlYWR5PXRoaXMuc2lua0NhcGFiaWxpdHkucHJvbWlzZX1yLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmksdGFyZ2V0TmFtZTphLHN0cmVhbTpwbyxzdHJlYW1JZDp0LGNodW5rOmV9LG4pfSxjbG9zZSgpe2lmKCF0aGlzLmlzQ2FuY2VsbGVkKXt0aGlzLmlzQ2FuY2VsbGVkPSEwO3IucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6aSx0YXJnZXROYW1lOmEsc3RyZWFtOmZvLHN0cmVhbUlkOnR9KTtkZWxldGUgcy5zdHJlYW1TaW5rc1t0XX19LGVycm9yKGUpe2Fzc2VydChlIGluc3RhbmNlb2YgRXJyb3IsImVycm9yIG11c3QgaGF2ZSBhIHZhbGlkIHJlYXNvbiIpO2lmKCF0aGlzLmlzQ2FuY2VsbGVkKXt0aGlzLmlzQ2FuY2VsbGVkPSEwO3IucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6aSx0YXJnZXROYW1lOmEsc3RyZWFtOm1vLHN0cmVhbUlkOnQscmVhc29uOndyYXBSZWFzb24oZSl9KX19LHNpbmtDYXBhYmlsaXR5OlByb21pc2Uud2l0aFJlc29sdmVycygpLG9uUHVsbDpudWxsLG9uQ2FuY2VsOm51bGwsaXNDYW5jZWxsZWQ6ITEsZGVzaXJlZFNpemU6ZS5kZXNpcmVkU2l6ZSxyZWFkeTpudWxsfTtvLnNpbmtDYXBhYmlsaXR5LnJlc29sdmUoKTtvLnJlYWR5PW8uc2lua0NhcGFiaWxpdHkucHJvbWlzZTt0aGlzLnN0cmVhbVNpbmtzW3RdPW87bmV3IFByb21pc2UoKGZ1bmN0aW9uKHQpe3QobihlLmRhdGEsbykpfSkpLnRoZW4oKGZ1bmN0aW9uKCl7ci5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTppLHRhcmdldE5hbWU6YSxzdHJlYW06Ym8sc3RyZWFtSWQ6dCxzdWNjZXNzOiEwfSl9KSwoZnVuY3Rpb24oZSl7ci5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTppLHRhcmdldE5hbWU6YSxzdHJlYW06Ym8sc3RyZWFtSWQ6dCxyZWFzb246d3JhcFJlYXNvbihlKX0pfSkpfSNXKGUpe2NvbnN0IHQ9ZS5zdHJlYW1JZCxpPXRoaXMuc291cmNlTmFtZSxhPWUuc291cmNlTmFtZSxyPXRoaXMuY29tT2JqLHM9dGhpcy5zdHJlYW1Db250cm9sbGVyc1t0XSxuPXRoaXMuc3RyZWFtU2lua3NbdF07c3dpdGNoKGUuc3RyZWFtKXtjYXNlIGJvOmUuc3VjY2Vzcz9zLnN0YXJ0Q2FsbC5yZXNvbHZlKCk6cy5zdGFydENhbGwucmVqZWN0KHdyYXBSZWFzb24oZS5yZWFzb24pKTticmVhaztjYXNlIHdvOmUuc3VjY2Vzcz9zLnB1bGxDYWxsLnJlc29sdmUoKTpzLnB1bGxDYWxsLnJlamVjdCh3cmFwUmVhc29uKGUucmVhc29uKSk7YnJlYWs7Y2FzZSB5bzppZighbil7ci5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTppLHRhcmdldE5hbWU6YSxzdHJlYW06d28sc3RyZWFtSWQ6dCxzdWNjZXNzOiEwfSk7YnJlYWt9bi5kZXNpcmVkU2l6ZTw9MCYmZS5kZXNpcmVkU2l6ZT4wJiZuLnNpbmtDYXBhYmlsaXR5LnJlc29sdmUoKTtuLmRlc2lyZWRTaXplPWUuZGVzaXJlZFNpemU7bmV3IFByb21pc2UoKGZ1bmN0aW9uKGUpe2Uobi5vblB1bGw/LigpKX0pKS50aGVuKChmdW5jdGlvbigpe3IucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6aSx0YXJnZXROYW1lOmEsc3RyZWFtOndvLHN0cmVhbUlkOnQsc3VjY2VzczohMH0pfSksKGZ1bmN0aW9uKGUpe3IucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6aSx0YXJnZXROYW1lOmEsc3RyZWFtOndvLHN0cmVhbUlkOnQscmVhc29uOndyYXBSZWFzb24oZSl9KX0pKTticmVhaztjYXNlIHBvOmFzc2VydChzLCJlbnF1ZXVlIHNob3VsZCBoYXZlIHN0cmVhbSBjb250cm9sbGVyIik7aWYocy5pc0Nsb3NlZClicmVhaztzLmNvbnRyb2xsZXIuZW5xdWV1ZShlLmNodW5rKTticmVhaztjYXNlIGZvOmFzc2VydChzLCJjbG9zZSBzaG91bGQgaGF2ZSBzdHJlYW0gY29udHJvbGxlciIpO2lmKHMuaXNDbG9zZWQpYnJlYWs7cy5pc0Nsb3NlZD0hMDtzLmNvbnRyb2xsZXIuY2xvc2UoKTt0aGlzLiNYKHMsdCk7YnJlYWs7Y2FzZSBtbzphc3NlcnQocywiZXJyb3Igc2hvdWxkIGhhdmUgc3RyZWFtIGNvbnRyb2xsZXIiKTtzLmNvbnRyb2xsZXIuZXJyb3Iod3JhcFJlYXNvbihlLnJlYXNvbikpO3RoaXMuI1gocyx0KTticmVhaztjYXNlIHVvOmUuc3VjY2Vzcz9zLmNhbmNlbENhbGwucmVzb2x2ZSgpOnMuY2FuY2VsQ2FsbC5yZWplY3Qod3JhcFJlYXNvbihlLnJlYXNvbikpO3RoaXMuI1gocyx0KTticmVhaztjYXNlIEVvOmlmKCFuKWJyZWFrO25ldyBQcm9taXNlKChmdW5jdGlvbih0KXt0KG4ub25DYW5jZWw/Lih3cmFwUmVhc29uKGUucmVhc29uKSkpfSkpLnRoZW4oKGZ1bmN0aW9uKCl7ci5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTppLHRhcmdldE5hbWU6YSxzdHJlYW06dW8sc3RyZWFtSWQ6dCxzdWNjZXNzOiEwfSl9KSwoZnVuY3Rpb24oZSl7ci5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTppLHRhcmdldE5hbWU6YSxzdHJlYW06dW8sc3RyZWFtSWQ6dCxyZWFzb246d3JhcFJlYXNvbihlKX0pfSkpO24uc2lua0NhcGFiaWxpdHkucmVqZWN0KHdyYXBSZWFzb24oZS5yZWFzb24pKTtuLmlzQ2FuY2VsbGVkPSEwO2RlbGV0ZSB0aGlzLnN0cmVhbVNpbmtzW3RdO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIHN0cmVhbSBjYXNlIil9fWFzeW5jI1goZSx0KXthd2FpdCBQcm9taXNlLmFsbFNldHRsZWQoW2Uuc3RhcnRDYWxsPy5wcm9taXNlLGUucHVsbENhbGw/LnByb21pc2UsZS5jYW5jZWxDYWxsPy5wcm9taXNlXSk7ZGVsZXRlIHRoaXMuc3RyZWFtQ29udHJvbGxlcnNbdF19ZGVzdHJveSgpe3RoaXMuY29tT2JqLnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLHRoaXMuX29uQ29tT2JqT25NZXNzYWdlKX19Y2xhc3MgUERGV29ya2VyU3RyZWFte2NvbnN0cnVjdG9yKGUpe3RoaXMuX21zZ0hhbmRsZXI9ZTt0aGlzLl9jb250ZW50TGVuZ3RoPW51bGw7dGhpcy5fZnVsbFJlcXVlc3RSZWFkZXI9bnVsbDt0aGlzLl9yYW5nZVJlcXVlc3RSZWFkZXJzPVtdfWdldEZ1bGxSZWFkZXIoKXthc3NlcnQoIXRoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyLCJQREZXb3JrZXJTdHJlYW0uZ2V0RnVsbFJlYWRlciBjYW4gb25seSBiZSBjYWxsZWQgb25jZS4iKTt0aGlzLl9mdWxsUmVxdWVzdFJlYWRlcj1uZXcgUERGV29ya2VyU3RyZWFtUmVhZGVyKHRoaXMuX21zZ0hhbmRsZXIpO3JldHVybiB0aGlzLl9mdWxsUmVxdWVzdFJlYWRlcn1nZXRSYW5nZVJlYWRlcihlLHQpe2NvbnN0IGk9bmV3IFBERldvcmtlclN0cmVhbVJhbmdlUmVhZGVyKGUsdCx0aGlzLl9tc2dIYW5kbGVyKTt0aGlzLl9yYW5nZVJlcXVlc3RSZWFkZXJzLnB1c2goaSk7cmV0dXJuIGl9Y2FuY2VsQWxsUmVxdWVzdHMoZSl7dGhpcy5fZnVsbFJlcXVlc3RSZWFkZXI/LmNhbmNlbChlKTtmb3IoY29uc3QgdCBvZiB0aGlzLl9yYW5nZVJlcXVlc3RSZWFkZXJzLnNsaWNlKDApKXQuY2FuY2VsKGUpfX1jbGFzcyBQREZXb3JrZXJTdHJlYW1SZWFkZXJ7Y29uc3RydWN0b3IoZSl7dGhpcy5fbXNnSGFuZGxlcj1lO3RoaXMub25Qcm9ncmVzcz1udWxsO3RoaXMuX2NvbnRlbnRMZW5ndGg9bnVsbDt0aGlzLl9pc1JhbmdlU3VwcG9ydGVkPSExO3RoaXMuX2lzU3RyZWFtaW5nU3VwcG9ydGVkPSExO2NvbnN0IHQ9dGhpcy5fbXNnSGFuZGxlci5zZW5kV2l0aFN0cmVhbSgiR2V0UmVhZGVyIik7dGhpcy5fcmVhZGVyPXQuZ2V0UmVhZGVyKCk7dGhpcy5faGVhZGVyc1JlYWR5PXRoaXMuX21zZ0hhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJSZWFkZXJIZWFkZXJzUmVhZHkiKS50aGVuKChlPT57dGhpcy5faXNTdHJlYW1pbmdTdXBwb3J0ZWQ9ZS5pc1N0cmVhbWluZ1N1cHBvcnRlZDt0aGlzLl9pc1JhbmdlU3VwcG9ydGVkPWUuaXNSYW5nZVN1cHBvcnRlZDt0aGlzLl9jb250ZW50TGVuZ3RoPWUuY29udGVudExlbmd0aH0pKX1nZXQgaGVhZGVyc1JlYWR5KCl7cmV0dXJuIHRoaXMuX2hlYWRlcnNSZWFkeX1nZXQgY29udGVudExlbmd0aCgpe3JldHVybiB0aGlzLl9jb250ZW50TGVuZ3RofWdldCBpc1N0cmVhbWluZ1N1cHBvcnRlZCgpe3JldHVybiB0aGlzLl9pc1N0cmVhbWluZ1N1cHBvcnRlZH1nZXQgaXNSYW5nZVN1cHBvcnRlZCgpe3JldHVybiB0aGlzLl9pc1JhbmdlU3VwcG9ydGVkfWFzeW5jIHJlYWQoKXtjb25zdHt2YWx1ZTplLGRvbmU6dH09YXdhaXQgdGhpcy5fcmVhZGVyLnJlYWQoKTtyZXR1cm4gdD97dmFsdWU6dm9pZCAwLGRvbmU6ITB9Ont2YWx1ZTplLmJ1ZmZlcixkb25lOiExfX1jYW5jZWwoZSl7dGhpcy5fcmVhZGVyLmNhbmNlbChlKX19Y2xhc3MgUERGV29ya2VyU3RyZWFtUmFuZ2VSZWFkZXJ7Y29uc3RydWN0b3IoZSx0LGkpe3RoaXMuX21zZ0hhbmRsZXI9aTt0aGlzLm9uUHJvZ3Jlc3M9bnVsbDtjb25zdCBhPXRoaXMuX21zZ0hhbmRsZXIuc2VuZFdpdGhTdHJlYW0oIkdldFJhbmdlUmVhZGVyIix7YmVnaW46ZSxlbmQ6dH0pO3RoaXMuX3JlYWRlcj1hLmdldFJlYWRlcigpfWdldCBpc1N0cmVhbWluZ1N1cHBvcnRlZCgpe3JldHVybiExfWFzeW5jIHJlYWQoKXtjb25zdHt2YWx1ZTplLGRvbmU6dH09YXdhaXQgdGhpcy5fcmVhZGVyLnJlYWQoKTtyZXR1cm4gdD97dmFsdWU6dm9pZCAwLGRvbmU6ITB9Ont2YWx1ZTplLmJ1ZmZlcixkb25lOiExfX1jYW5jZWwoZSl7dGhpcy5fcmVhZGVyLmNhbmNlbChlKX19Y2xhc3MgV29ya2VyVGFza3tjb25zdHJ1Y3RvcihlKXt0aGlzLm5hbWU9ZTt0aGlzLnRlcm1pbmF0ZWQ9ITE7dGhpcy5fY2FwYWJpbGl0eT1Qcm9taXNlLndpdGhSZXNvbHZlcnMoKX1nZXQgZmluaXNoZWQoKXtyZXR1cm4gdGhpcy5fY2FwYWJpbGl0eS5wcm9taXNlfWZpbmlzaCgpe3RoaXMuX2NhcGFiaWxpdHkucmVzb2x2ZSgpfXRlcm1pbmF0ZSgpe3RoaXMudGVybWluYXRlZD0hMH1lbnN1cmVOb3RUZXJtaW5hdGVkKCl7aWYodGhpcy50ZXJtaW5hdGVkKXRocm93IG5ldyBFcnJvcigiV29ya2VyIHRhc2sgd2FzIHRlcm1pbmF0ZWQiKX19Y2xhc3MgV29ya2VyTWVzc2FnZUhhbmRsZXJ7c3RhdGljIHNldHVwKGUsdCl7bGV0IGk9ITE7ZS5vbigidGVzdCIsKGZ1bmN0aW9uKHQpe2lmKCFpKXtpPSEwO2Uuc2VuZCgidGVzdCIsdCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpfX0pKTtlLm9uKCJjb25maWd1cmUiLChmdW5jdGlvbihlKXshZnVuY3Rpb24gc2V0VmVyYm9zaXR5TGV2ZWwoZSl7TnVtYmVyLmlzSW50ZWdlcihlKSYmKEl0PWUpfShlLnZlcmJvc2l0eSl9KSk7ZS5vbigiR2V0RG9jUmVxdWVzdCIsKGZ1bmN0aW9uKGUpe3JldHVybiBXb3JrZXJNZXNzYWdlSGFuZGxlci5jcmVhdGVEb2N1bWVudEhhbmRsZXIoZSx0KX0pKX1zdGF0aWMgY3JlYXRlRG9jdW1lbnRIYW5kbGVyKGUsdCl7bGV0IGksYT0hMSxyPW51bGw7Y29uc3Qgcz1uZXcgU2V0LG49Z2V0VmVyYm9zaXR5TGV2ZWwoKSx7ZG9jSWQ6byxhcGlWZXJzaW9uOmd9PWUsYz0iNC43Ljc2IjtpZihnIT09Yyl0aHJvdyBuZXcgRXJyb3IoYFRoZSBBUEkgdmVyc2lvbiAiJHtnfSIgZG9lcyBub3QgbWF0Y2ggdGhlIFdvcmtlciB2ZXJzaW9uICIke2N9Ii5gKTtjb25zdCBDPVtdO2Zvcihjb25zdCBlIGluW10pQy5wdXNoKGUpO2lmKEMubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiVGhlIGBBcnJheS5wcm90b3R5cGVgIGNvbnRhaW5zIHVuZXhwZWN0ZWQgZW51bWVyYWJsZSBwcm9wZXJ0aWVzOiAiK0Muam9pbigiLCAiKSsiOyB0aHVzIGJyZWFraW5nIGUuZy4gYGZvci4uLmluYCBpdGVyYXRpb24gb2YgYEFycmF5YHMuIik7Y29uc3QgaD1vKyJfd29ya2VyIjtsZXQgbD1uZXcgTWVzc2FnZUhhbmRsZXIoaCxvLHQpO2Z1bmN0aW9uIGVuc3VyZU5vdFRlcm1pbmF0ZWQoKXtpZihhKXRocm93IG5ldyBFcnJvcigiV29ya2VyIHdhcyB0ZXJtaW5hdGVkIil9ZnVuY3Rpb24gc3RhcnRXb3JrZXJUYXNrKGUpe3MuYWRkKGUpfWZ1bmN0aW9uIGZpbmlzaFdvcmtlclRhc2soZSl7ZS5maW5pc2goKTtzLmRlbGV0ZShlKX1hc3luYyBmdW5jdGlvbiBsb2FkRG9jdW1lbnQoZSl7YXdhaXQgaS5lbnN1cmVEb2MoImNoZWNrSGVhZGVyIik7YXdhaXQgaS5lbnN1cmVEb2MoInBhcnNlU3RhcnRYUmVmIik7YXdhaXQgaS5lbnN1cmVEb2MoInBhcnNlIixbZV0pO2F3YWl0IGkuZW5zdXJlRG9jKCJjaGVja0ZpcnN0UGFnZSIsW2VdKTthd2FpdCBpLmVuc3VyZURvYygiY2hlY2tMYXN0UGFnZSIsW2VdKTtjb25zdCB0PWF3YWl0IGkuZW5zdXJlRG9jKCJpc1B1cmVYZmEiKTtpZih0KXtjb25zdCBlPW5ldyBXb3JrZXJUYXNrKCJsb2FkWGZhRm9udHMiKTtzdGFydFdvcmtlclRhc2soZSk7YXdhaXQgUHJvbWlzZS5hbGwoW2kubG9hZFhmYUZvbnRzKGwsZSkuY2F0Y2goKGU9Pnt9KSkudGhlbigoKCk9PmZpbmlzaFdvcmtlclRhc2soZSkpKSxpLmxvYWRYZmFJbWFnZXMoKV0pfWNvbnN0W2Escl09YXdhaXQgUHJvbWlzZS5hbGwoW2kuZW5zdXJlRG9jKCJudW1QYWdlcyIpLGkuZW5zdXJlRG9jKCJmaW5nZXJwcmludHMiKV0pO3JldHVybntudW1QYWdlczphLGZpbmdlcnByaW50czpyLGh0bWxGb3JYZmE6dD9hd2FpdCBpLmVuc3VyZURvYygiaHRtbEZvclhmYSIpOm51bGx9fWZ1bmN0aW9uIGdldFBkZk1hbmFnZXIoe2RhdGE6ZSxwYXNzd29yZDp0LGRpc2FibGVBdXRvRmV0Y2g6aSxyYW5nZUNodW5rU2l6ZTphLGxlbmd0aDpzLGRvY0Jhc2VVcmw6bixlbmFibGVYZmE6ZyxldmFsdWF0b3JPcHRpb25zOmN9KXtjb25zdCBDPXtzb3VyY2U6bnVsbCxkaXNhYmxlQXV0b0ZldGNoOmksZG9jQmFzZVVybDpuLGRvY0lkOm8sZW5hYmxlWGZhOmcsZXZhbHVhdG9yT3B0aW9uczpjLGhhbmRsZXI6bCxsZW5ndGg6cyxwYXNzd29yZDp0LHJhbmdlQ2h1bmtTaXplOmF9LGg9UHJvbWlzZS53aXRoUmVzb2x2ZXJzKCk7bGV0IFE7aWYoZSl7dHJ5e0Muc291cmNlPWU7UT1uZXcgTG9jYWxQZGZNYW5hZ2VyKEMpO2gucmVzb2x2ZShRKX1jYXRjaChlKXtoLnJlamVjdChlKX1yZXR1cm4gaC5wcm9taXNlfWxldCBFLHU9W107dHJ5e0U9bmV3IFBERldvcmtlclN0cmVhbShsKX1jYXRjaChlKXtoLnJlamVjdChlKTtyZXR1cm4gaC5wcm9taXNlfWNvbnN0IGQ9RS5nZXRGdWxsUmVhZGVyKCk7ZC5oZWFkZXJzUmVhZHkudGhlbigoZnVuY3Rpb24oKXtpZihkLmlzUmFuZ2VTdXBwb3J0ZWQpe0Muc291cmNlPUU7Qy5sZW5ndGg9ZC5jb250ZW50TGVuZ3RoO0MuZGlzYWJsZUF1dG9GZXRjaHx8PWQuaXNTdHJlYW1pbmdTdXBwb3J0ZWQ7UT1uZXcgTmV0d29ya1BkZk1hbmFnZXIoQyk7Zm9yKGNvbnN0IGUgb2YgdSlRLnNlbmRQcm9ncmVzc2l2ZURhdGEoZSk7dT1bXTtoLnJlc29sdmUoUSk7cj1udWxsfX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7aC5yZWplY3QoZSk7cj1udWxsfSkpO2xldCBmPTA7bmV3IFByb21pc2UoKGZ1bmN0aW9uKGUsdCl7Y29uc3QgcmVhZENodW5rPWZ1bmN0aW9uKHt2YWx1ZTplLGRvbmU6aX0pe3RyeXtlbnN1cmVOb3RUZXJtaW5hdGVkKCk7aWYoaSl7UXx8ZnVuY3Rpb24oKXtjb25zdCBlPWFycmF5QnVmZmVyc1RvQnl0ZXModSk7cyYmZS5sZW5ndGghPT1zJiZ3YXJuKCJyZXBvcnRlZCBIVFRQIGxlbmd0aCBpcyBkaWZmZXJlbnQgZnJvbSBhY3R1YWwiKTt0cnl7Qy5zb3VyY2U9ZTtRPW5ldyBMb2NhbFBkZk1hbmFnZXIoQyk7aC5yZXNvbHZlKFEpfWNhdGNoKGUpe2gucmVqZWN0KGUpfXU9W119KCk7cj1udWxsO3JldHVybn1mKz1lLmJ5dGVMZW5ndGg7ZC5pc1N0cmVhbWluZ1N1cHBvcnRlZHx8bC5zZW5kKCJEb2NQcm9ncmVzcyIse2xvYWRlZDpmLHRvdGFsOk1hdGgubWF4KGYsZC5jb250ZW50TGVuZ3RofHwwKX0pO1E/US5zZW5kUHJvZ3Jlc3NpdmVEYXRhKGUpOnUucHVzaChlKTtkLnJlYWQoKS50aGVuKHJlYWRDaHVuayx0KX1jYXRjaChlKXt0KGUpfX07ZC5yZWFkKCkudGhlbihyZWFkQ2h1bmssdCl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe2gucmVqZWN0KGUpO3I9bnVsbH0pKTtyPWZ1bmN0aW9uKGUpe0UuY2FuY2VsQWxsUmVxdWVzdHMoZSl9O3JldHVybiBoLnByb21pc2V9bC5vbigiR2V0UGFnZSIsKGZ1bmN0aW9uKGUpe3JldHVybiBpLmdldFBhZ2UoZS5wYWdlSW5kZXgpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLmFsbChbaS5lbnN1cmUoZSwicm90YXRlIiksaS5lbnN1cmUoZSwicmVmIiksaS5lbnN1cmUoZSwidXNlclVuaXQiKSxpLmVuc3VyZShlLCJ2aWV3IildKS50aGVuKChmdW5jdGlvbihbZSx0LGksYV0pe3JldHVybntyb3RhdGU6ZSxyZWY6dCxyZWZTdHI6dD8udG9TdHJpbmcoKT8/bnVsbCx1c2VyVW5pdDppLHZpZXc6YX19KSl9KSl9KSk7bC5vbigiR2V0UGFnZUluZGV4IiwoZnVuY3Rpb24oZSl7Y29uc3QgdD1SZWYuZ2V0KGUubnVtLGUuZ2VuKTtyZXR1cm4gaS5lbnN1cmVDYXRhbG9nKCJnZXRQYWdlSW5kZXgiLFt0XSl9KSk7bC5vbigiR2V0RGVzdGluYXRpb25zIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGkuZW5zdXJlQ2F0YWxvZygiZGVzdGluYXRpb25zIil9KSk7bC5vbigiR2V0RGVzdGluYXRpb24iLChmdW5jdGlvbihlKXtyZXR1cm4gaS5lbnN1cmVDYXRhbG9nKCJnZXREZXN0aW5hdGlvbiIsW2UuaWRdKX0pKTtsLm9uKCJHZXRQYWdlTGFiZWxzIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGkuZW5zdXJlQ2F0YWxvZygicGFnZUxhYmVscyIpfSkpO2wub24oIkdldFBhZ2VMYXlvdXQiLChmdW5jdGlvbihlKXtyZXR1cm4gaS5lbnN1cmVDYXRhbG9nKCJwYWdlTGF5b3V0Iil9KSk7bC5vbigiR2V0UGFnZU1vZGUiLChmdW5jdGlvbihlKXtyZXR1cm4gaS5lbnN1cmVDYXRhbG9nKCJwYWdlTW9kZSIpfSkpO2wub24oIkdldFZpZXdlclByZWZlcmVuY2VzIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGkuZW5zdXJlQ2F0YWxvZygidmlld2VyUHJlZmVyZW5jZXMiKX0pKTtsLm9uKCJHZXRPcGVuQWN0aW9uIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGkuZW5zdXJlQ2F0YWxvZygib3BlbkFjdGlvbiIpfSkpO2wub24oIkdldEF0dGFjaG1lbnRzIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGkuZW5zdXJlQ2F0YWxvZygiYXR0YWNobWVudHMiKX0pKTtsLm9uKCJHZXREb2NKU0FjdGlvbnMiLChmdW5jdGlvbihlKXtyZXR1cm4gaS5lbnN1cmVDYXRhbG9nKCJqc0FjdGlvbnMiKX0pKTtsLm9uKCJHZXRQYWdlSlNBY3Rpb25zIiwoZnVuY3Rpb24oe3BhZ2VJbmRleDplfSl7cmV0dXJuIGkuZ2V0UGFnZShlKS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gaS5lbnN1cmUoZSwianNBY3Rpb25zIil9KSl9KSk7bC5vbigiR2V0T3V0bGluZSIsKGZ1bmN0aW9uKGUpe3JldHVybiBpLmVuc3VyZUNhdGFsb2coImRvY3VtZW50T3V0bGluZSIpfSkpO2wub24oIkdldE9wdGlvbmFsQ29udGVudENvbmZpZyIsKGZ1bmN0aW9uKGUpe3JldHVybiBpLmVuc3VyZUNhdGFsb2coIm9wdGlvbmFsQ29udGVudENvbmZpZyIpfSkpO2wub24oIkdldFBlcm1pc3Npb25zIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGkuZW5zdXJlQ2F0YWxvZygicGVybWlzc2lvbnMiKX0pKTtsLm9uKCJHZXRNZXRhZGF0YSIsKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLmFsbChbaS5lbnN1cmVEb2MoImRvY3VtZW50SW5mbyIpLGkuZW5zdXJlQ2F0YWxvZygibWV0YWRhdGEiKV0pfSkpO2wub24oIkdldE1hcmtJbmZvIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGkuZW5zdXJlQ2F0YWxvZygibWFya0luZm8iKX0pKTtsLm9uKCJHZXREYXRhIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGkucmVxdWVzdExvYWRlZFN0cmVhbSgpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBlLmJ5dGVzfSkpfSkpO2wub24oIkdldEFubm90YXRpb25zIiwoZnVuY3Rpb24oe3BhZ2VJbmRleDplLGludGVudDp0fSl7cmV0dXJuIGkuZ2V0UGFnZShlKS50aGVuKChmdW5jdGlvbihpKXtjb25zdCBhPW5ldyBXb3JrZXJUYXNrKGBHZXRBbm5vdGF0aW9uczogcGFnZSAke2V9YCk7c3RhcnRXb3JrZXJUYXNrKGEpO3JldHVybiBpLmdldEFubm90YXRpb25zRGF0YShsLGEsdCkudGhlbigoZT0+e2ZpbmlzaFdvcmtlclRhc2soYSk7cmV0dXJuIGV9KSwoZT0+e2ZpbmlzaFdvcmtlclRhc2soYSk7dGhyb3cgZX0pKX0pKX0pKTtsLm9uKCJHZXRGaWVsZE9iamVjdHMiLChmdW5jdGlvbihlKXtyZXR1cm4gaS5lbnN1cmVEb2MoImZpZWxkT2JqZWN0cyIpLnRoZW4oKGU9PmU/LmFsbEZpZWxkc3x8bnVsbCkpfSkpO2wub24oIkhhc0pTQWN0aW9ucyIsKGZ1bmN0aW9uKGUpe3JldHVybiBpLmVuc3VyZURvYygiaGFzSlNBY3Rpb25zIil9KSk7bC5vbigiR2V0Q2FsY3VsYXRpb25PcmRlcklkcyIsKGZ1bmN0aW9uKGUpe3JldHVybiBpLmVuc3VyZURvYygiY2FsY3VsYXRpb25PcmRlcklkcyIpfSkpO2wub24oIlNhdmVEb2N1bWVudCIsKGFzeW5jIGZ1bmN0aW9uKHtpc1B1cmVYZmE6ZSxudW1QYWdlczp0LGFubm90YXRpb25TdG9yYWdlOmEsZmlsZW5hbWU6cn0pe2NvbnN0IHM9W2kucmVxdWVzdExvYWRlZFN0cmVhbSgpLGkuZW5zdXJlQ2F0YWxvZygiYWNyb0Zvcm0iKSxpLmVuc3VyZUNhdGFsb2coImFjcm9Gb3JtUmVmIiksaS5lbnN1cmVEb2MoInN0YXJ0WFJlZiIpLGkuZW5zdXJlRG9jKCJ4cmVmIiksaS5lbnN1cmVEb2MoImxpbmVhcml6YXRpb24iKSxpLmVuc3VyZUNhdGFsb2coInN0cnVjdFRyZWVSb290IildLG49W10sbz1lP251bGw6Z2V0TmV3QW5ub3RhdGlvbnNNYXAoYSksW2csYyxDLGgsUSxFLHVdPWF3YWl0IFByb21pc2UuYWxsKHMpLGQ9US50cmFpbGVyLmdldFJhdygiUm9vdCIpfHxudWxsO2xldCBmO2lmKG8pe3U/YXdhaXQgdS5jYW5VcGRhdGVTdHJ1Y3RUcmVlKHtwZGZNYW5hZ2VyOmkseHJlZjpRLG5ld0Fubm90YXRpb25zQnlQYWdlOm99KSYmKGY9dSk6YXdhaXQgU3RydWN0VHJlZVJvb3QuY2FuQ3JlYXRlU3RydWN0dXJlVHJlZSh7Y2F0YWxvZ1JlZjpkLHBkZk1hbmFnZXI6aSxuZXdBbm5vdGF0aW9uc0J5UGFnZTpvfSkmJihmPW51bGwpO2NvbnN0IGU9QW5ub3RhdGlvbkZhY3RvcnkuZ2VuZXJhdGVJbWFnZXMoYS52YWx1ZXMoKSxRLGkuZXZhbHVhdG9yT3B0aW9ucy5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZCksdD12b2lkIDA9PT1mP246W107Zm9yKGNvbnN0W2Escl1vZiBvKXQucHVzaChpLmdldFBhZ2UoYSkudGhlbigodD0+e2NvbnN0IGk9bmV3IFdvcmtlclRhc2soYFNhdmUgKGVkaXRvcik6IHBhZ2UgJHthfWApO3JldHVybiB0LnNhdmVOZXdBbm5vdGF0aW9ucyhsLGkscixlKS5maW5hbGx5KChmdW5jdGlvbigpe2ZpbmlzaFdvcmtlclRhc2soaSl9KSl9KSkpO251bGw9PT1mP24ucHVzaChQcm9taXNlLmFsbCh0KS50aGVuKChhc3luYyBlPT57YXdhaXQgU3RydWN0VHJlZVJvb3QuY3JlYXRlU3RydWN0dXJlVHJlZSh7bmV3QW5ub3RhdGlvbnNCeVBhZ2U6byx4cmVmOlEsY2F0YWxvZ1JlZjpkLHBkZk1hbmFnZXI6aSxuZXdSZWZzOmV9KTtyZXR1cm4gZX0pKSk6ZiYmbi5wdXNoKFByb21pc2UuYWxsKHQpLnRoZW4oKGFzeW5jIGU9Pnthd2FpdCBmLnVwZGF0ZVN0cnVjdHVyZVRyZWUoe25ld0Fubm90YXRpb25zQnlQYWdlOm8scGRmTWFuYWdlcjppLG5ld1JlZnM6ZX0pO3JldHVybiBlfSkpKX1pZihlKW4ucHVzaChpLnNlcmlhbGl6ZVhmYURhdGEoYSkpO2Vsc2UgZm9yKGxldCBlPTA7ZTx0O2UrKyluLnB1c2goaS5nZXRQYWdlKGUpLnRoZW4oKGZ1bmN0aW9uKHQpe2NvbnN0IGk9bmV3IFdvcmtlclRhc2soYFNhdmU6IHBhZ2UgJHtlfWApO3JldHVybiB0LnNhdmUobCxpLGEpLmZpbmFsbHkoKGZ1bmN0aW9uKCl7ZmluaXNoV29ya2VyVGFzayhpKX0pKX0pKSk7Y29uc3QgcD1hd2FpdCBQcm9taXNlLmFsbChuKTtsZXQgbT1bXSx5PW51bGw7aWYoZSl7eT1wWzBdO2lmKCF5KXJldHVybiBnLmJ5dGVzfWVsc2V7bT1wLmZsYXQoMik7aWYoMD09PW0ubGVuZ3RoKXJldHVybiBnLmJ5dGVzfWNvbnN0IHc9QyYmYyBpbnN0YW5jZW9mIERpY3QmJm0uc29tZSgoZT0+ZS5uZWVkQXBwZWFyYW5jZXMpKSxiPWMgaW5zdGFuY2VvZiBEaWN0JiZjLmdldCgiWEZBIil8fG51bGw7bGV0IEQ9bnVsbCxTPSExO2lmKEFycmF5LmlzQXJyYXkoYikpe2ZvcihsZXQgZT0wLHQ9Yi5sZW5ndGg7ZTx0O2UrPTIpaWYoImRhdGFzZXRzIj09PWJbZV0pe0Q9YltlKzFdO1M9ITB9bnVsbD09PUQmJihEPVEuZ2V0TmV3VGVtcG9yYXJ5UmVmKCkpfWVsc2UgYiYmd2FybigiVW5zdXBwb3J0ZWQgWEZBIHR5cGUuIik7bGV0IGs9T2JqZWN0LmNyZWF0ZShudWxsKTtpZihRLnRyYWlsZXIpe2NvbnN0IGU9T2JqZWN0LmNyZWF0ZShudWxsKSx0PVEudHJhaWxlci5nZXQoIkluZm8iKXx8bnVsbDt0IGluc3RhbmNlb2YgRGljdCYmdC5mb3JFYWNoKCgodCxpKT0+eyJzdHJpbmciPT10eXBlb2YgaSYmKGVbdF09c3RyaW5nVG9QREZTdHJpbmcoaSkpfSkpO2s9e3Jvb3RSZWY6ZCxlbmNyeXB0UmVmOlEudHJhaWxlci5nZXRSYXcoIkVuY3J5cHQiKXx8bnVsbCxuZXdSZWY6US5nZXROZXdUZW1wb3JhcnlSZWYoKSxpbmZvUmVmOlEudHJhaWxlci5nZXRSYXcoIkluZm8iKXx8bnVsbCxpbmZvOmUsZmlsZUlkczpRLnRyYWlsZXIuZ2V0KCJJRCIpfHxudWxsLHN0YXJ0WFJlZjpFP2g6US5sYXN0WFJlZlN0cmVhbVBvcz8/aCxmaWxlbmFtZTpyfX1yZXR1cm4gaW5jcmVtZW50YWxVcGRhdGUoe29yaWdpbmFsRGF0YTpnLmJ5dGVzLHhyZWZJbmZvOmssbmV3UmVmczptLHhyZWY6USxoYXNYZmE6ISFiLHhmYURhdGFzZXRzUmVmOkQsaGFzWGZhRGF0YXNldHNFbnRyeTpTLG5lZWRBcHBlYXJhbmNlczp3LGFjcm9Gb3JtUmVmOkMsYWNyb0Zvcm06Yyx4ZmFEYXRhOnksdXNlWHJlZlN0cmVhbTppc0RpY3QoUS50b3BEaWN0LCJYUmVmIil9KS5maW5hbGx5KCgoKT0+e1EucmVzZXROZXdUZW1wb3JhcnlSZWYoKX0pKX0pKTtsLm9uKCJHZXRPcGVyYXRvckxpc3QiLChmdW5jdGlvbihlLHQpe2NvbnN0IGE9ZS5wYWdlSW5kZXg7aS5nZXRQYWdlKGEpLnRoZW4oKGZ1bmN0aW9uKGkpe2NvbnN0IHI9bmV3IFdvcmtlclRhc2soYEdldE9wZXJhdG9yTGlzdDogcGFnZSAke2F9YCk7c3RhcnRXb3JrZXJUYXNrKHIpO2NvbnN0IHM9bj49d0EuSU5GT1M/RGF0ZS5ub3coKTowO2kuZ2V0T3BlcmF0b3JMaXN0KHtoYW5kbGVyOmwsc2luazp0LHRhc2s6cixpbnRlbnQ6ZS5pbnRlbnQsY2FjaGVLZXk6ZS5jYWNoZUtleSxhbm5vdGF0aW9uU3RvcmFnZTplLmFubm90YXRpb25TdG9yYWdlLG1vZGlmaWVkSWRzOmUubW9kaWZpZWRJZHN9KS50aGVuKChmdW5jdGlvbihlKXtmaW5pc2hXb3JrZXJUYXNrKHIpO3MmJmluZm8oYHBhZ2U9JHthKzF9IC0gZ2V0T3BlcmF0b3JMaXN0OiB0aW1lPSR7RGF0ZS5ub3coKS1zfW1zLCBsZW49JHtlLmxlbmd0aH1gKTt0LmNsb3NlKCl9KSwoZnVuY3Rpb24oZSl7ZmluaXNoV29ya2VyVGFzayhyKTtyLnRlcm1pbmF0ZWR8fHQuZXJyb3IoZSl9KSl9KSl9KSk7bC5vbigiR2V0VGV4dENvbnRlbnQiLChmdW5jdGlvbihlLHQpe2NvbnN0e3BhZ2VJbmRleDphLGluY2x1ZGVNYXJrZWRDb250ZW50OnIsZGlzYWJsZU5vcm1hbGl6YXRpb246c309ZTtpLmdldFBhZ2UoYSkudGhlbigoZnVuY3Rpb24oZSl7Y29uc3QgaT1uZXcgV29ya2VyVGFzaygiR2V0VGV4dENvbnRlbnQ6IHBhZ2UgIithKTtzdGFydFdvcmtlclRhc2soaSk7Y29uc3Qgbz1uPj13QS5JTkZPUz9EYXRlLm5vdygpOjA7ZS5leHRyYWN0VGV4dENvbnRlbnQoe2hhbmRsZXI6bCx0YXNrOmksc2luazp0LGluY2x1ZGVNYXJrZWRDb250ZW50OnIsZGlzYWJsZU5vcm1hbGl6YXRpb246c30pLnRoZW4oKGZ1bmN0aW9uKCl7ZmluaXNoV29ya2VyVGFzayhpKTtvJiZpbmZvKGBwYWdlPSR7YSsxfSAtIGdldFRleHRDb250ZW50OiB0aW1lPWArKERhdGUubm93KCktbykrIm1zIik7dC5jbG9zZSgpfSksKGZ1bmN0aW9uKGUpe2ZpbmlzaFdvcmtlclRhc2soaSk7aS50ZXJtaW5hdGVkfHx0LmVycm9yKGUpfSkpfSkpfSkpO2wub24oIkdldFN0cnVjdFRyZWUiLChmdW5jdGlvbihlKXtyZXR1cm4gaS5nZXRQYWdlKGUucGFnZUluZGV4KS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gaS5lbnN1cmUoZSwiZ2V0U3RydWN0VHJlZSIpfSkpfSkpO2wub24oIkZvbnRGYWxsYmFjayIsKGZ1bmN0aW9uKGUpe3JldHVybiBpLmZvbnRGYWxsYmFjayhlLmlkLGwpfSkpO2wub24oIkNsZWFudXAiLChmdW5jdGlvbihlKXtyZXR1cm4gaS5jbGVhbnVwKCEwKX0pKTtsLm9uKCJUZXJtaW5hdGUiLChmdW5jdGlvbihlKXthPSEwO2NvbnN0IHQ9W107aWYoaSl7aS50ZXJtaW5hdGUobmV3IEFib3J0RXhjZXB0aW9uKCJXb3JrZXIgd2FzIHRlcm1pbmF0ZWQuIikpO2NvbnN0IGU9aS5jbGVhbnVwKCk7dC5wdXNoKGUpO2k9bnVsbH1lbHNlIGNsZWFyR2xvYmFsQ2FjaGVzKCk7ciYmcihuZXcgQWJvcnRFeGNlcHRpb24oIldvcmtlciB3YXMgdGVybWluYXRlZC4iKSk7Zm9yKGNvbnN0IGUgb2Ygcyl7dC5wdXNoKGUuZmluaXNoZWQpO2UudGVybWluYXRlKCl9cmV0dXJuIFByb21pc2UuYWxsKHQpLnRoZW4oKGZ1bmN0aW9uKCl7bC5kZXN0cm95KCk7bD1udWxsfSkpfSkpO2wub24oIlJlYWR5IiwoZnVuY3Rpb24odCl7IWZ1bmN0aW9uIHNldHVwRG9jKGUpe2Z1bmN0aW9uIG9uU3VjY2VzcyhlKXtlbnN1cmVOb3RUZXJtaW5hdGVkKCk7bC5zZW5kKCJHZXREb2MiLHtwZGZJbmZvOmV9KX1mdW5jdGlvbiBvbkZhaWx1cmUoZSl7ZW5zdXJlTm90VGVybWluYXRlZCgpO2lmKGUgaW5zdGFuY2VvZiBQYXNzd29yZEV4Y2VwdGlvbil7Y29uc3QgdD1uZXcgV29ya2VyVGFzayhgUGFzc3dvcmRFeGNlcHRpb246IHJlc3BvbnNlICR7ZS5jb2RlfWApO3N0YXJ0V29ya2VyVGFzayh0KTtsLnNlbmRXaXRoUHJvbWlzZSgiUGFzc3dvcmRSZXF1ZXN0IixlKS50aGVuKChmdW5jdGlvbih7cGFzc3dvcmQ6ZX0pe2ZpbmlzaFdvcmtlclRhc2sodCk7aS51cGRhdGVQYXNzd29yZChlKTtwZGZNYW5hZ2VyUmVhZHkoKX0pKS5jYXRjaCgoZnVuY3Rpb24oKXtmaW5pc2hXb3JrZXJUYXNrKHQpO2wuc2VuZCgiRG9jRXhjZXB0aW9uIixlKX0pKX1lbHNlIGUgaW5zdGFuY2VvZiBJbnZhbGlkUERGRXhjZXB0aW9ufHxlIGluc3RhbmNlb2YgTWlzc2luZ1BERkV4Y2VwdGlvbnx8ZSBpbnN0YW5jZW9mIFVuZXhwZWN0ZWRSZXNwb25zZUV4Y2VwdGlvbnx8ZSBpbnN0YW5jZW9mIFVua25vd25FcnJvckV4Y2VwdGlvbj9sLnNlbmQoIkRvY0V4Y2VwdGlvbiIsZSk6bC5zZW5kKCJEb2NFeGNlcHRpb24iLG5ldyBVbmtub3duRXJyb3JFeGNlcHRpb24oZS5tZXNzYWdlLGUudG9TdHJpbmcoKSkpfWZ1bmN0aW9uIHBkZk1hbmFnZXJSZWFkeSgpe2Vuc3VyZU5vdFRlcm1pbmF0ZWQoKTtsb2FkRG9jdW1lbnQoITEpLnRoZW4ob25TdWNjZXNzLChmdW5jdGlvbihlKXtlbnN1cmVOb3RUZXJtaW5hdGVkKCk7ZSBpbnN0YW5jZW9mIFhSZWZQYXJzZUV4Y2VwdGlvbj9pLnJlcXVlc3RMb2FkZWRTdHJlYW0oKS50aGVuKChmdW5jdGlvbigpe2Vuc3VyZU5vdFRlcm1pbmF0ZWQoKTtsb2FkRG9jdW1lbnQoITApLnRoZW4ob25TdWNjZXNzLG9uRmFpbHVyZSl9KSk6b25GYWlsdXJlKGUpfSkpfWVuc3VyZU5vdFRlcm1pbmF0ZWQoKTtnZXRQZGZNYW5hZ2VyKGUpLnRoZW4oKGZ1bmN0aW9uKGUpe2lmKGEpe2UudGVybWluYXRlKG5ldyBBYm9ydEV4Y2VwdGlvbigiV29ya2VyIHdhcyB0ZXJtaW5hdGVkLiIpKTt0aHJvdyBuZXcgRXJyb3IoIldvcmtlciB3YXMgdGVybWluYXRlZCIpfWk9ZTtpLnJlcXVlc3RMb2FkZWRTdHJlYW0oITApLnRoZW4oKGU9PntsLnNlbmQoIkRhdGFMb2FkZWQiLHtsZW5ndGg6ZS5ieXRlcy5ieXRlTGVuZ3RofSl9KSl9KSkudGhlbihwZGZNYW5hZ2VyUmVhZHksb25GYWlsdXJlKX0oZSk7ZT1udWxsfSkpO3JldHVybiBofXN0YXRpYyBpbml0aWFsaXplRnJvbVBvcnQoZSl7Y29uc3QgdD1uZXcgTWVzc2FnZUhhbmRsZXIoIndvcmtlciIsIm1haW4iLGUpO1dvcmtlck1lc3NhZ2VIYW5kbGVyLnNldHVwKHQsZSk7dC5zZW5kKCJyZWFkeSIsbnVsbCl9fSJ1bmRlZmluZWQiPT10eXBlb2Ygd2luZG93JiYhaSYmInVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmJiZmdW5jdGlvbiBpc01lc3NhZ2VQb3J0KGUpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBlLnBvc3RNZXNzYWdlJiYib25tZXNzYWdlImluIGV9KHNlbGYpJiZXb3JrZXJNZXNzYWdlSGFuZGxlci5pbml0aWFsaXplRnJvbVBvcnQoc2VsZik7dmFyIERvPV9fd2VicGFja19leHBvcnRzX18uV29ya2VyTWVzc2FnZUhhbmRsZXI7ZXhwb3J0e0RvIGFzIFdvcmtlck1lc3NhZ2VIYW5kbGVyfTs=";function RM(U,l,d){const Z=U.contentWindow.document.createElement("style");Z.textContent=`
|
||
@page {
|
||
margin: 3mm;
|
||
size: ${l}pt ${d}pt;
|
||
}
|
||
body {
|
||
margin: 0;
|
||
}
|
||
canvas {
|
||
width: 100%;
|
||
page-break-after: always;
|
||
page-break-before: avoid;
|
||
page-break-inside: avoid;
|
||
}
|
||
`,U.contentWindow.document.head.appendChild(Z),U.contentWindow.document.body.style.width="100%"}function NM(U){return new Promise(l=>{const d=document.createElement("iframe");d.width="0",d.height="0",d.style.position="absolute",d.style.top="0",d.style.left="0",d.style.border="none",d.style.overflow="hidden",d.onload=()=>l(d),U.appendChild(d)})}function hM(U,l){const d=URL.createObjectURL(new Blob([U],{type:"application/pdf"})),Z=document.createElement("a");Z.href=d,Z.download=l,Z.style.display="none",document.body.append(Z),Z.click(),setTimeout(()=>{URL.revokeObjectURL(d),document.body.removeChild(Z)},1e3)}function RN(U){for(;U!=null&&U.firstChild;)U.removeChild(U.firstChild)}function $V(U){U==null||U.querySelectorAll("canvas").forEach(l=>{var d;l.width=1,l.height=1,(d=l.getContext("2d"))==null||d.clearRect(0,0,1,1)})}function NN(U){return Object.prototype.hasOwnProperty.call(U,"_pdfInfo")}function xb({onError:U,onPasswordRequest:l,onProgress:d,source:Z}){const t=Sn(null),F=Sn(null);return rm(()=>z(this,null,function*(){const c=cR(Z);if(c){if(NN(c)){t.value=c;return}try{F.value=sM(c),l&&(F.value.onPassword=(a,W)=>{l({callback:a,isWrongPassword:W===nM.INCORRECT_PASSWORD})}),d&&(F.value.onProgress=d),t.value=yield F.value.promise}catch(a){if(t.value=null,U)U(a);else throw a}}})),bs(t,(c,a)=>{a==null||a.destroy()}),ch(()=>{var c,a,W,n;(c=F.value)!=null&&c.onPassword&&(F.value.onPassword=null),(a=F.value)!=null&&a.onProgress&&(F.value.onProgress=null),(W=F.value)==null||W.destroy(),NN(cR(Z))||(n=t.value)==null||n.destroy()}),{doc:t}}var yQ={};yQ.d=(U,l)=>{for(var d in l)yQ.o(l,d)&&!yQ.o(U,d)&&Object.defineProperty(U,d,{enumerable:!0,get:l[d]})};yQ.o=(U,l)=>Object.prototype.hasOwnProperty.call(U,l);var Sl=globalThis.pdfjsViewer={};yQ.d(Sl,{AnnotationLayerBuilder:()=>lm,DownloadManager:()=>VJ,EventBus:()=>Um,FindState:()=>oZ,GenericL10n:()=>sV,LinkTarget:()=>Et,PDFFindController:()=>_M,PDFHistory:()=>WG,PDFLinkService:()=>$b,PDFPageView:()=>Jm,PDFScriptingManager:()=>TG,PDFSinglePageViewer:()=>pG,PDFViewer:()=>ym,ProgressBar:()=>uM,RenderingStates:()=>pl,ScrollMode:()=>cl,SimpleLinkService:()=>lR,SpreadMode:()=>nd,StructTreeLayerBuilder:()=>Rm,TextLayerBuilder:()=>em,XfaLayerBuilder:()=>Mm,parseQueryString:()=>nV});const bM="auto",rb=1,hN=1.1,mM=.1,eM=10,ls=0,MM=1.25,jb=40,Ob=5,pl={INITIAL:0,RUNNING:1,PAUSED:2,FINISHED:3},E0={UNKNOWN:0,NORMAL:1,CHANGING:2,FULLSCREEN:3},oU={DISABLE:0,ENABLE:1,ENABLE_PERMISSIONS:2},cl={UNKNOWN:-1,VERTICAL:0,HORIZONTAL:1,WRAPPED:2,PAGE:3},nd={UNKNOWN:-1,NONE:0,ODD:1,EVEN:2};function gb(U,l,d=!1){let Z=U.offsetParent;if(!Z){console.error("offsetParent is not set -- cannot scroll");return}let t=U.offsetTop+U.clientTop,F=U.offsetLeft+U.clientLeft;for(;Z.clientHeight===Z.scrollHeight&&Z.clientWidth===Z.scrollWidth||d&&(Z.classList.contains("markedContent")||getComputedStyle(Z).overflow==="hidden");)if(t+=Z.offsetTop,F+=Z.offsetLeft,Z=Z.offsetParent,!Z)return;l&&(l.top!==void 0&&(t+=l.top),l.left!==void 0&&(F+=l.left,Z.scrollLeft=F)),Z.scrollTop=t}function JM(U,l,d=void 0){const Z=function(c){F||(F=window.requestAnimationFrame(function(){F=null;const a=U.scrollLeft,W=t.lastX;a!==W&&(t.right=a>W),t.lastX=a;const n=U.scrollTop,V=t.lastY;n!==V&&(t.down=n>V),t.lastY=n,l(t)}))},t={right:!0,down:!0,lastX:U.scrollLeft,lastY:U.scrollTop,_eventHandler:Z};let F=null;return U.addEventListener("scroll",Z,{useCapture:!0,signal:d}),d==null||d.addEventListener("abort",()=>window.cancelAnimationFrame(F),{once:!0}),t}function nV(U){const l=new Map;for(const[d,Z]of new URLSearchParams(U))l.set(d.toLowerCase(),Z);return l}const bN=/[\x00-\x1F]/g;function kQ(U,l=!1){return bN.test(U)?l?U.replaceAll(bN,d=>d==="\0"?"":" "):U.replaceAll("\0",""):U}function vQ(U,l,d=0){let Z=d,t=U.length-1;if(t<0||!l(U[t]))return U.length;if(l(U[Z]))return Z;for(;Z<t;){const F=Z+t>>1,c=U[F];l(c)?t=F:Z=F+1}return Z}function mN(U){if(Math.floor(U)===U)return[U,1];const l=1/U,d=8;if(l>d)return[1,d];if(Math.floor(l)===l)return[1,l];const Z=U>1?l:U;let t=0,F=1,c=1,a=1;for(;;){const n=t+c,V=F+a;if(V>d)break;Z<=n/V?(c=n,a=V):(t=n,F=V)}let W;return Z-t/F<c/a-Z?W=Z===U?[t,F]:[F,t]:W=Z===U?[c,a]:[a,c],W}function ja(U,l){return U-U%l}function GM(U,l,d){if(U<2)return U;let Z=l[U].div,t=Z.offsetTop+Z.clientTop;t>=d&&(Z=l[U-1].div,t=Z.offsetTop+Z.clientTop);for(let F=U-2;F>=0&&(Z=l[F].div,!(Z.offsetTop+Z.clientTop+Z.clientHeight<=t));--F)U=F;return U}function TM({scrollEl:U,views:l,sortByVisibility:d=!1,horizontal:Z=!1,rtl:t=!1}){const F=U.scrollTop,c=F+U.clientHeight,a=U.scrollLeft,W=a+U.clientWidth;function n(T){const G=T.div;return G.offsetTop+G.clientTop+G.clientHeight>F}function V(T){const G=T.div,X=G.offsetLeft+G.clientLeft,Y=X+G.clientWidth;return t?X<W:Y>a}const s=[],i=new Set,R=l.length;let h=vQ(l,Z?V:n);h>0&&h<R&&!Z&&(h=GM(h,l,F));let m=Z?W:-1;for(let T=h;T<R;T++){const G=l[T],X=G.div,Y=X.offsetLeft+X.clientLeft,p=X.offsetTop+X.clientTop,o=X.clientWidth,k=X.clientHeight,S=Y+o,B=p+k;if(m===-1)B>=c&&(m=B);else if((Z?Y:p)>m)break;if(B<=F||p>=c||S<=a||Y>=W)continue;const y=Math.max(0,F-p)+Math.max(0,B-c),D=Math.max(0,a-Y)+Math.max(0,S-W),E=(k-y)/k,r=(o-D)/o,w=E*r*100|0;s.push({id:G.id,x:Y,y:p,view:G,percent:w,widthPercent:r*100|0}),i.add(G.id)}const M=s[0],J=s.at(-1);return d&&s.sort(function(T,G){const X=T.percent-G.percent;return Math.abs(X)>.001?-X:T.id-G.id}),{first:M,last:J,views:s,ids:i}}function Kb(U){return Number.isInteger(U)&&U%90===0}function SM(U){return Number.isInteger(U)&&Object.values(cl).includes(U)&&U!==cl.UNKNOWN}function XM(U){return Number.isInteger(U)&&Object.values(nd).includes(U)&&U!==nd.UNKNOWN}function vb(U){return U.width<=U.height}new Promise(function(U){window.requestAnimationFrame(U)});const YM=document.documentElement.style;function pM(U,l,d){return Math.min(Math.max(U,l),d)}var It,l0,Dt,ZQ,d0;class uM{constructor(l){e(this,It,null),e(this,l0,null),e(this,Dt,0),e(this,ZQ,null),e(this,d0,!0),b(this,It,l.classList),b(this,ZQ,l.style)}get percent(){return Q(this,Dt)}set percent(l){if(b(this,Dt,pM(l,0,100)),isNaN(l)){Q(this,It).add("indeterminate");return}Q(this,It).remove("indeterminate"),Q(this,ZQ).setProperty("--progressBar-percent",`${Q(this,Dt)}%`)}setWidth(l){if(!l)return;const d=l.parentNode.offsetWidth-l.offsetWidth;d>0&&Q(this,ZQ).setProperty("--progressBar-end-offset",`${d}px`)}setDisableAutoFetch(l=5e3){Q(this,Dt)===100||isNaN(Q(this,Dt))||(Q(this,l0)&&clearTimeout(Q(this,l0)),this.show(),b(this,l0,setTimeout(()=>{b(this,l0,null),this.hide()},l)))}hide(){Q(this,d0)&&(b(this,d0,!1),Q(this,It).add("hidden"))}show(){Q(this,d0)||(b(this,d0,!0),Q(this,It).remove("hidden"))}}It=new WeakMap,l0=new WeakMap,Dt=new WeakMap,ZQ=new WeakMap,d0=new WeakMap;function oM(U){let l=cl.VERTICAL,d=nd.NONE;switch(U){case"SinglePage":l=cl.PAGE;break;case"OneColumn":break;case"TwoPageLeft":l=cl.PAGE;case"TwoColumnLeft":d=nd.ODD;break;case"TwoPageRight":l=cl.PAGE;case"TwoColumnRight":d=nd.EVEN;break}return{scrollMode:l,spreadMode:d}}const Oa=function(){const U=document.createElement("div");return U.style.width="round(down, calc(1.6666666666666665 * 792px), 1px)",U.style.width==="calc(1320px)"?Math.fround:l=>l}(),qd={SPACE:0,ALPHA_LETTER:1,PUNCT:2,HAN_LETTER:3,KATAKANA_LETTER:4,HIRAGANA_LETTER:5,HALFWIDTH_KATAKANA_LETTER:6,THAI_LETTER:7};function BM(U){return U<11904}function yM(U){return(U&65408)===0}function kM(U){return U>=97&&U<=122||U>=65&&U<=90}function LM(U){return U>=48&&U<=57}function zM(U){return U===32||U===9||U===13||U===10}function IM(U){return U>=13312&&U<=40959||U>=63744&&U<=64255}function DM(U){return U>=12448&&U<=12543}function EM(U){return U>=12352&&U<=12447}function wM(U){return U>=65376&&U<=65439}function CM(U){return(U&65408)===3584}function ga(U){return BM(U)?yM(U)?zM(U)?qd.SPACE:kM(U)||LM(U)||U===95?qd.ALPHA_LETTER:qd.PUNCT:CM(U)?qd.THAI_LETTER:U===160?qd.SPACE:qd.ALPHA_LETTER:IM(U)?qd.HAN_LETTER:DM(U)?qd.KATAKANA_LETTER:EM(U)?qd.HIRAGANA_LETTER:wM(U)?qd.HALFWIDTH_KATAKANA_LETTER:qd.ALPHA_LETTER}let ds;function xM(){return ds||(ds=" ¨ª¯²-µ¸-º¼-¾IJ-ijĿ-ŀʼnſDŽ-njDZ-dzʰ-ʸ˘-˝ˠ-ˤʹͺ;΄-΅·ϐ-ϖϰ-ϲϴ-ϵϹևٵ-ٸक़-य़ড়-ঢ়য়ਲ਼ਸ਼ਖ਼-ਜ਼ਫ਼ଡ଼-ଢ଼ำຳໜ-ໝ༌གྷཌྷདྷབྷཛྷཀྵჼᴬ-ᴮᴰ-ᴺᴼ-ᵍᵏ-ᵪᵸᶛ-ᶿẚ-ẛάέήίόύώΆ᾽-῁ΈΉ῍-῏ΐΊ῝-῟ΰΎ῭-`ΌΏ´-῾ - ‑‗․-… ″-‴‶-‷‼‾⁇-⁉⁗ ⁰-ⁱ⁴-₎ₐ-ₜ₨℀-℃℅-ℇ℉-ℓℕ-№ℙ-ℝ℠-™ℤΩℨK-ℭℯ-ℱℳ-ℹ℻-⅀ⅅ-ⅉ⅐-ⅿ↉∬-∭∯-∰〈-〉①-⓪⨌⩴-⩶⫝̸ⱼ-ⱽⵯ⺟⻳⼀-⿕ 〶〸-〺゛-゜ゟヿㄱ-ㆎ㆒-㆟㈀-㈞㈠-㉇㉐-㉾㊀-㏿ꚜ-ꚝꝰꟲ-ꟴꟸ-ꟹꭜ-ꭟꭩ豈-嗀塚晴凞-羽蘒諸逸-都飯-舘並-龎ff-stﬓ-ﬗיִײַ-זּטּ-לּמּנּ-סּףּ-פּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-﷼︐-︙︰-﹄﹇-﹒﹔-﹦﹨-﹫ﹰ-ﹲﹴﹶ-ﻼ!-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ¢-₩"),ds}const oZ={FOUND:0,NOT_FOUND:1,WRAPPED:2,PENDING:3},rM=250,jM=-50,OM=-400,eN={"‐":"-","‘":"'","’":"'","‚":"'","‛":"'","“":'"',"”":'"',"„":'"',"‟":'"',"¼":"1/4","½":"1/2","¾":"3/4"},MN=new Set([12441,12442,2381,2509,2637,2765,2893,3021,3149,3277,3387,3388,3405,3530,3642,3770,3972,4153,4154,5908,5940,6098,6752,6980,7082,7083,7154,7155,11647,43014,43052,43204,43347,43456,43766,44013,3158,3953,3954,3962,3963,3964,3965,3968,3956]);let Us;const gM=new RegExp("\\p{M}+","gu"),KM=new RegExp("([.*+?^${}()|[\\]\\\\])|(\\p{P})|(\\s+)|(\\p{M})|(\\p{L})","gu"),vM=new RegExp("([^\\p{M}])\\p{M}*$","u"),HM=new RegExp("^\\p{M}*([^\\p{M}])","u"),PM=/[\uAC00-\uD7AF\uFA6C\uFACF-\uFAD1\uFAD5-\uFAD7]+/g,JN=new Map,fM="[\\u1100-\\u1112\\ud7a4-\\ud7af\\ud84a\\ud84c\\ud850\\ud854\\ud857\\ud85f]",GN=new Map;let Zs=null,ts=null;function Fs(U){const l=[];let d;for(;(d=PM.exec(U))!==null;){let{index:R}=d;for(const h of d[0]){let m=JN.get(h);m||(m=h.normalize("NFD").length,JN.set(h,m)),l.push([m,R++])}}let Z;if(l.length===0&&Zs)Z=Zs;else if(l.length>0&&ts)Z=ts;else{const R=Object.keys(eN).join(""),h=xM(),m=`([${R}])|([${h}])|((?:゙|゚)\\n)|(\\p{M}+(?:-\\n)?)|(\\p{Ll}-\\n\\p{Lu})|(\\S-\\n)|((?:\\p{Ideographic}|[-ヿ])\\n)|(\\n)`;l.length===0?Z=Zs=new RegExp(m+"|(\\u0000)","gum"):Z=ts=new RegExp(m+`|(${fM})`,"gum")}const t=[];for(;(d=gM.exec(U))!==null;)t.push([d[0].length,d.index]);let F=U.normalize("NFD");const c=[[0,0]];let a=0,W=0,n=0,V=0,s=0,i=!1;return F=F.replace(Z,(R,h,m,M,J,T,G,X,Y,p,o)=>{var k,S,B;if(o-=V,h){const y=eN[h],D=y.length;for(let E=1;E<D;E++)c.push([o-n+E,n-E]);return n-=D-1,y}if(m){let y=GN.get(m);y||(y=m.normalize("NFKC"),GN.set(m,y));const D=y.length;for(let E=1;E<D;E++)c.push([o-n+E,n-E]);return n-=D-1,y}if(M)return i=!0,o+s===((k=t[a])==null?void 0:k[1])?++a:(c.push([o-1-n+1,n-1]),n-=1,V+=1),c.push([o-n+1,n]),V+=1,s+=1,M.charAt(0);if(J){const y=J.endsWith(`
|
||
`),D=y?J.length-2:J.length;i=!0;let E=D;o+s===((S=t[a])==null?void 0:S[1])&&(E-=t[a][0],++a);for(let r=1;r<=E;r++)c.push([o-1-n+r,n-r]);return n-=E,V+=E,y?(o+=D-1,c.push([o-n+1,1+n]),n+=1,V+=1,s+=1,J.slice(0,D)):J}if(T)return c.push([o-n+3,1+n]),n+=1,V+=1,s+=1,T.replace(`
|
||
`,"");if(G){const y=G.length-2;return c.push([o-n+y,1+n]),n+=1,V+=1,s+=1,G.slice(0,-2)}if(X){const y=X.length-1;return c.push([o-n+y,n]),V+=1,s+=1,X.slice(0,-1)}if(Y)return c.push([o-n+1,n-1]),n-=1,V+=1,s+=1," ";if(o+s===((B=l[W])==null?void 0:B[1])){const y=l[W][0]-1;++W;for(let D=1;D<=y;D++)c.push([o-(n-D),n-D]);n-=y,V+=y}return p}),c.push([F.length,n]),[F,c,i]}function AM(U,l,d){if(!U)return[l,d];const Z=l,t=l+d-1;let F=vQ(U,n=>n[0]>=Z);U[F][0]>Z&&--F;let c=vQ(U,n=>n[0]>=t,F);U[c][0]>t&&--c;const a=Z+U[F][1],W=t+U[c][1]+1-a;return[a,W]}var Zd,LQ,U0,$,Hb,Ri,cs,TN,Pb,Ni,SN,XN,Ka,Mc,kF,YN,Qs,as,va,fb,Ws,ns,Jc;class _M{constructor({linkService:l,eventBus:d,updateMatchesCountOnProgress:Z=!0}){e(this,$),e(this,Zd,null),e(this,LQ,!0),e(this,U0,0),this._linkService=l,this._eventBus=d,b(this,LQ,Z),this.onIsPageVisible=null,N(this,$,Ri).call(this),d._on("find",N(this,$,Hb).bind(this)),d._on("findbarclose",N(this,$,fb).bind(this))}get highlightMatches(){return this._highlightMatches}get pageMatches(){return this._pageMatches}get pageMatchesLength(){return this._pageMatchesLength}get selected(){return this._selected}get state(){return Q(this,Zd)}setDocument(l){this._pdfDocument&&N(this,$,Ri).call(this),l&&(this._pdfDocument=l,this._firstPageCapability.resolve())}scrollMatchIntoView({element:l=null,selectedLeft:d=0,pageIndex:Z=-1,matchIndex:t=-1}){if(!this._scrollMatches||!l||t===-1||t!==this._selected.matchIdx||Z===-1||Z!==this._selected.pageIdx)return;this._scrollMatches=!1;const F={top:jM,left:d+OM};gb(l,F,!0)}match(l,d,Z){const t=this._hasDiacritics[Z];let F=!1;if(typeof l=="string"?[F,l]=N(this,$,Ni).call(this,l,t):l=l.sort().reverse().map(s=>{const[i,R]=N(this,$,Ni).call(this,s,t);return F||(F=i),`(${R})`}).join("|"),!l)return;const{caseSensitive:c,entireWord:a}=Q(this,Zd),W=`g${F?"u":""}${c?"":"i"}`;l=new RegExp(l,W);const n=[];let V;for(;(V=l.exec(d))!==null;)a&&!N(this,$,Pb).call(this,d,V.index,V[0].length)||n.push({index:V.index,length:V[0].length});return n}}Zd=new WeakMap,LQ=new WeakMap,U0=new WeakMap,$=new WeakSet,Hb=function(U){if(!U)return;const l=this._pdfDocument,{type:d}=U;(Q(this,Zd)===null||N(this,$,TN).call(this,U))&&(this._dirtyMatch=!0),b(this,Zd,U),d!=="highlightallchange"&&N(this,$,Jc).call(this,oZ.PENDING),this._firstPageCapability.promise.then(()=>{if(!this._pdfDocument||l&&this._pdfDocument!==l)return;N(this,$,XN).call(this);const Z=!this._highlightMatches,t=!!this._findTimeout;this._findTimeout&&(clearTimeout(this._findTimeout),this._findTimeout=null),d?this._dirtyMatch?N(this,$,kF).call(this):d==="again"?(N(this,$,kF).call(this),Z&&Q(this,Zd).highlightAll&&N(this,$,Mc).call(this)):d==="highlightallchange"?(t?N(this,$,kF).call(this):this._highlightMatches=!0,N(this,$,Mc).call(this)):N(this,$,kF).call(this):this._findTimeout=setTimeout(()=>{N(this,$,kF).call(this),this._findTimeout=null},rM)})},Ri=function(){this._highlightMatches=!1,this._scrollMatches=!1,this._pdfDocument=null,this._pageMatches=[],this._pageMatchesLength=[],b(this,U0,0),b(this,Zd,null),this._selected={pageIdx:-1,matchIdx:-1},this._offset={pageIdx:null,matchIdx:null,wrapped:!1},this._extractTextPromises=[],this._pageContents=[],this._pageDiffs=[],this._hasDiacritics=[],this._matchesCountTotal=0,this._pagesToSearch=null,this._pendingFindMatches=new Set,this._resumePageIdx=null,this._dirtyMatch=!1,clearTimeout(this._findTimeout),this._findTimeout=null,this._firstPageCapability=Promise.withResolvers()},cs=function(){const{query:U}=Q(this,Zd);return typeof U=="string"?(U!==this._rawQuery&&(this._rawQuery=U,[this._normalizedQuery]=Fs(U)),this._normalizedQuery):(U||[]).filter(l=>!!l).map(l=>Fs(l)[0])},TN=function(U){var F;var l;const d=U.query,Z=Q(this,Zd).query,t=typeof d;if(t!==typeof Z)return!0;if(t==="string"){if(d!==Z)return!0}else if(JSON.stringify(d)!==JSON.stringify(Z))return!0;switch(U.type){case"again":const c=this._selected.pageIdx+1,a=this._linkService;return c>=1&&c<=a.pagesCount&&c!==a.page&&!((F=(l=this.onIsPageVisible)==null?void 0:l.call(this,c))==null||F);case"highlightallchange":return!1}return!0},Pb=function(U,l,d){let Z=U.slice(0,l).match(vM);if(Z){const t=U.charCodeAt(l),F=Z[1].charCodeAt(0);if(ga(t)===ga(F))return!1}if(Z=U.slice(l+d).match(HM),Z){const t=U.charCodeAt(l+d-1),F=Z[1].charCodeAt(0);if(ga(t)===ga(F))return!1}return!0},Ni=function(U,l){const{matchDiacritics:d}=Q(this,Zd);let Z=!1;U=U.replaceAll(KM,(F,c,a,W,n,V)=>c?`[ ]*\\${c}[ ]*`:a?`[ ]*${a}[ ]*`:W?"[ ]+":d?n||V:n?MN.has(n.charCodeAt(0))?n:"":l?(Z=!0,`${V}\\p{M}*`):V);const t="[ ]*";return U.endsWith(t)&&(U=U.slice(0,U.length-t.length)),d&&l&&(Us||(Us=String.fromCharCode(...MN)),Z=!0,U=`${U}(?=[${Us}]|[^\\p{M}]|$)`),[Z,U]},SN=function(U){const l=Q(this,$,cs);if(l.length===0)return;const d=this._pageContents[U],Z=this.match(l,d,U),t=this._pageMatches[U]=[],F=this._pageMatchesLength[U]=[],c=this._pageDiffs[U];Z==null||Z.forEach(({index:W,length:n})=>{const[V,s]=AM(c,W,n);s&&(t.push(V),F.push(s))}),Q(this,Zd).highlightAll&&N(this,$,Ka).call(this,U),this._resumePageIdx===U&&(this._resumePageIdx=null,N(this,$,Qs).call(this));const a=t.length;this._matchesCountTotal+=a,Q(this,LQ)?a>0&&N(this,$,ns).call(this):++md(this,U0)._===this._linkService.pagesCount&&N(this,$,ns).call(this)},XN=function(){if(this._extractTextPromises.length>0)return;let U=Promise.resolve();const l={disableNormalization:!0};for(let d=0,Z=this._linkService.pagesCount;d<Z;d++){const{promise:t,resolve:F}=Promise.withResolvers();this._extractTextPromises[d]=t,U=U.then(()=>this._pdfDocument.getPage(d+1).then(c=>c.getTextContent(l)).then(c=>{const a=[];for(const W of c.items)a.push(W.str),W.hasEOL&&a.push(`
|
||
`);[this._pageContents[d],this._pageDiffs[d],this._hasDiacritics[d]]=Fs(a.join("")),F()},c=>{console.error(`Unable to get text content for page ${d+1}`,c),this._pageContents[d]="",this._pageDiffs[d]=null,this._hasDiacritics[d]=!1,F()}))}},Ka=function(U){this._scrollMatches&&this._selected.pageIdx===U&&(this._linkService.page=U+1),this._eventBus.dispatch("updatetextlayermatches",{source:this,pageIndex:U})},Mc=function(){this._eventBus.dispatch("updatetextlayermatches",{source:this,pageIndex:-1})},kF=function(){const U=Q(this,Zd).findPrevious,l=this._linkService.page-1,d=this._linkService.pagesCount;if(this._highlightMatches=!0,this._dirtyMatch){this._dirtyMatch=!1,this._selected.pageIdx=this._selected.matchIdx=-1,this._offset.pageIdx=l,this._offset.matchIdx=null,this._offset.wrapped=!1,this._resumePageIdx=null,this._pageMatches.length=0,this._pageMatchesLength.length=0,b(this,U0,0),this._matchesCountTotal=0,N(this,$,Mc).call(this);for(let t=0;t<d;t++)this._pendingFindMatches.has(t)||(this._pendingFindMatches.add(t),this._extractTextPromises[t].then(()=>{this._pendingFindMatches.delete(t),N(this,$,SN).call(this,t)}))}if(Q(this,$,cs).length===0){N(this,$,Jc).call(this,oZ.FOUND);return}if(this._resumePageIdx)return;const Z=this._offset;if(this._pagesToSearch=d,Z.matchIdx!==null){const t=this._pageMatches[Z.pageIdx].length;if(!U&&Z.matchIdx+1<t||U&&Z.matchIdx>0){Z.matchIdx=U?Z.matchIdx-1:Z.matchIdx+1,N(this,$,va).call(this,!0);return}N(this,$,as).call(this,U)}N(this,$,Qs).call(this)},YN=function(U){const l=this._offset,d=U.length,Z=Q(this,Zd).findPrevious;return d?(l.matchIdx=Z?d-1:0,N(this,$,va).call(this,!0),!0):(N(this,$,as).call(this,Z),l.wrapped&&(l.matchIdx=null,this._pagesToSearch<0)?(N(this,$,va).call(this,!1),!0):!1)},Qs=function(){this._resumePageIdx!==null&&console.error("There can only be one pending page.");let U=null;do{const l=this._offset.pageIdx;if(U=this._pageMatches[l],!U){this._resumePageIdx=l;break}}while(!N(this,$,YN).call(this,U))},as=function(U){const l=this._offset,d=this._linkService.pagesCount;l.pageIdx=U?l.pageIdx-1:l.pageIdx+1,l.matchIdx=null,this._pagesToSearch--,(l.pageIdx>=d||l.pageIdx<0)&&(l.pageIdx=U?d-1:0,l.wrapped=!0)},va=function(U=!1){let l=oZ.NOT_FOUND;const d=this._offset.wrapped;if(this._offset.wrapped=!1,U){const Z=this._selected.pageIdx;this._selected.pageIdx=this._offset.pageIdx,this._selected.matchIdx=this._offset.matchIdx,l=d?oZ.WRAPPED:oZ.FOUND,Z!==-1&&Z!==this._selected.pageIdx&&N(this,$,Ka).call(this,Z)}N(this,$,Jc).call(this,l,Q(this,Zd).findPrevious),this._selected.pageIdx!==-1&&(this._scrollMatches=!0,N(this,$,Ka).call(this,this._selected.pageIdx))},fb=function(U){const l=this._pdfDocument;this._firstPageCapability.promise.then(()=>{!this._pdfDocument||l&&this._pdfDocument!==l||(this._findTimeout&&(clearTimeout(this._findTimeout),this._findTimeout=null),this._resumePageIdx&&(this._resumePageIdx=null,this._dirtyMatch=!0),N(this,$,Jc).call(this,oZ.FOUND),this._highlightMatches=!1,N(this,$,Mc).call(this))})},Ws=function(){var U;const{pageIdx:l,matchIdx:d}=this._selected;let Z=0,t=this._matchesCountTotal;if(d!==-1){for(let F=0;F<l;F++)Z+=((U=this._pageMatches[F])==null?void 0:U.length)||0;Z+=d+1}return(Z<1||Z>t)&&(Z=t=0),{current:Z,total:t}},ns=function(){this._eventBus.dispatch("updatefindmatchescount",{source:this,matchesCount:N(this,$,Ws).call(this)})},Jc=function(U,l=!1){var t,F;var d,Z;!Q(this,LQ)&&(Q(this,U0)!==this._linkService.pagesCount||U===oZ.PENDING)||this._eventBus.dispatch("updatefindcontrolstate",{source:this,state:U,previous:l,entireWord:(t=(d=Q(this,Zd))==null?void 0:d.entireWord)!=null?t:null,matchesCount:N(this,$,Ws).call(this),rawQuery:(F=(Z=Q(this,Zd))==null?void 0:Z.query)!=null?F:null})};const qM="noopener noreferrer nofollow",Et={NONE:0,SELF:1,BLANK:2,PARENT:3,TOP:4};var hi,Ab;const _b=class qb{constructor({eventBus:l,externalLinkTarget:d=null,externalLinkRel:Z=null,ignoreDestinationZoom:t=!1}={}){f(this,"externalLinkEnabled",!0),this.eventBus=l,this.externalLinkTarget=d,this.externalLinkRel=Z,this._ignoreDestinationZoom=t,this.baseUrl=null,this.pdfDocument=null,this.pdfViewer=null,this.pdfHistory=null}setDocument(l,d=null){this.baseUrl=d,this.pdfDocument=l}setViewer(l){this.pdfViewer=l}setHistory(l){this.pdfHistory=l}get pagesCount(){return this.pdfDocument?this.pdfDocument.numPages:0}get page(){return this.pdfDocument?this.pdfViewer.currentPageNumber:1}set page(l){this.pdfDocument&&(this.pdfViewer.currentPageNumber=l)}get rotation(){return this.pdfDocument?this.pdfViewer.pagesRotation:0}set rotation(l){this.pdfDocument&&(this.pdfViewer.pagesRotation=l)}get isInPresentationMode(){return this.pdfDocument?this.pdfViewer.isInPresentationMode:!1}goToDestination(l){return z(this,null,function*(){if(!this.pdfDocument)return;let d,Z,t;if(typeof l=="string"?(d=l,Z=yield this.pdfDocument.getDestination(l)):(d=null,Z=yield l),!Array.isArray(Z)){console.error(`goToDestination: "${Z}" is not a valid destination array, for dest="${l}".`);return}const[F]=Z;if(F&&typeof F=="object"){if(t=this.pdfDocument.cachedPageNumber(F),!t)try{t=(yield this.pdfDocument.getPageIndex(F))+1}catch(c){console.error(`goToDestination: "${F}" is not a valid page reference, for dest="${l}".`);return}}else Number.isInteger(F)&&(t=F+1);if(!t||t<1||t>this.pagesCount){console.error(`goToDestination: "${t}" is not a valid page number, for dest="${l}".`);return}this.pdfHistory&&(this.pdfHistory.pushCurrentPosition(),this.pdfHistory.push({namedDest:d,explicitDest:Z,pageNumber:t})),this.pdfViewer.scrollPageIntoView({pageNumber:t,destArray:Z,ignoreDestinationZoom:this._ignoreDestinationZoom})})}goToPage(l){if(!this.pdfDocument)return;const d=typeof l=="string"&&this.pdfViewer.pageLabelToPageNumber(l)||l|0;if(!(Number.isInteger(d)&&d>0&&d<=this.pagesCount)){console.error(`PDFLinkService.goToPage: "${l}" is not a valid page.`);return}this.pdfHistory&&(this.pdfHistory.pushCurrentPosition(),this.pdfHistory.pushPage(d)),this.pdfViewer.scrollPageIntoView({pageNumber:d})}addLinkAttributes(l,d,Z=!1){if(!d||typeof d!="string")throw new Error('A valid "url" parameter must provided.');const t=Z?Et.BLANK:this.externalLinkTarget,F=this.externalLinkRel;this.externalLinkEnabled?l.href=l.title=d:(l.href="",l.title=`Disabled: ${d}`,l.onclick=()=>!1);let c="";switch(t){case Et.NONE:break;case Et.SELF:c="_self";break;case Et.BLANK:c="_blank";break;case Et.PARENT:c="_parent";break;case Et.TOP:c="_top";break}l.target=c,l.rel=typeof F=="string"?F:qM}getDestinationHash(l){if(typeof l=="string"){if(l.length>0)return this.getAnchorUrl("#"+escape(l))}else if(Array.isArray(l)){const d=JSON.stringify(l);if(d.length>0)return this.getAnchorUrl("#"+escape(d))}return this.getAnchorUrl("")}getAnchorUrl(l){return this.baseUrl?this.baseUrl+l:l}setHash(l){var d;if(!this.pdfDocument)return;let Z,t;if(l.includes("=")){const F=nV(l);if(F.has("search")){const c=F.get("search").replaceAll('"',""),a=F.get("phrase")==="true";this.eventBus.dispatch("findfromurlhash",{source:this,query:a?c:c.match(/\S+/g)})}if(F.has("page")&&(Z=F.get("page")|0||1),F.has("zoom")){const c=F.get("zoom").split(","),a=c[0],W=parseFloat(a);a.includes("Fit")?a==="Fit"||a==="FitB"?t=[null,{name:a}]:a==="FitH"||a==="FitBH"||a==="FitV"||a==="FitBV"?t=[null,{name:a},c.length>1?c[1]|0:null]:a==="FitR"?c.length!==5?console.error('PDFLinkService.setHash: Not enough parameters for "FitR".'):t=[null,{name:a},c[1]|0,c[2]|0,c[3]|0,c[4]|0]:console.error(`PDFLinkService.setHash: "${a}" is not a valid zoom value.`):t=[null,{name:"XYZ"},c.length>1?c[1]|0:null,c.length>2?c[2]|0:null,W?W/100:a]}t?this.pdfViewer.scrollPageIntoView({pageNumber:Z||this.page,destArray:t,allowNegativeOffset:!0}):Z&&(this.page=Z),F.has("pagemode")&&this.eventBus.dispatch("pagemode",{source:this,mode:F.get("pagemode")}),F.has("nameddest")&&this.goToDestination(F.get("nameddest"));return}t=unescape(l);try{t=JSON.parse(t),Array.isArray(t)||(t=t.toString())}catch(F){}if(typeof t=="string"||N(d=qb,hi,Ab).call(d,t)){this.goToDestination(t);return}console.error(`PDFLinkService.setHash: "${unescape(l)}" is not a valid destination.`)}executeNamedAction(l){var d,Z;if(this.pdfDocument){switch(l){case"GoBack":(d=this.pdfHistory)==null||d.back();break;case"GoForward":(Z=this.pdfHistory)==null||Z.forward();break;case"NextPage":this.pdfViewer.nextPage();break;case"PrevPage":this.pdfViewer.previousPage();break;case"LastPage":this.page=this.pagesCount;break;case"FirstPage":this.page=1;break}this.eventBus.dispatch("namedaction",{source:this,action:l})}}executeSetOCGState(l){return z(this,null,function*(){if(!this.pdfDocument)return;const d=this.pdfDocument,Z=yield this.pdfViewer.optionalContentConfigPromise;d===this.pdfDocument&&(Z.setOCGState(l),this.pdfViewer.optionalContentConfigPromise=Promise.resolve(Z))})}};hi=new WeakSet,Ab=function(U){if(!Array.isArray(U)||U.length<2)return!1;const[l,d,...Z]=U;if(!(typeof l=="object"&&Number.isInteger(l==null?void 0:l.num)&&Number.isInteger(l==null?void 0:l.gen))&&!Number.isInteger(l)||!(typeof d=="object"&&typeof(d==null?void 0:d.name)=="string"))return!1;const t=Z.length;let F=!0;switch(d.name){case"XYZ":if(t<2||t>3)return!1;break;case"Fit":case"FitB":return t===0;case"FitH":case"FitBH":case"FitV":case"FitBV":if(t>1)return!1;break;case"FitR":if(t!==4)return!1;F=!1;break;default:return!1}for(const c of Z)if(!(typeof c=="number"||F&&c===null))return!1;return!0},e(_b,hi);let $b=_b;class lR extends $b{setDocument(l,d=null){}}const{AbortException:$M,AnnotationEditorLayer:lJ,AnnotationEditorParamsType:$G,AnnotationEditorType:yd,AnnotationEditorUIManager:dJ,AnnotationLayer:UJ,AnnotationMode:VZ,build:lT,CMapCompressionType:dT,ColorPicker:UT,createValidAbsoluteUrl:ZJ,DOMSVGFactory:ZT,DrawLayer:tJ,FeatureTest:tT,fetchData:pN,getDocument:FT,getFilenameFromUrl:cT,getPdfFilenameFromUrl:FJ,getXfaPageViewport:QT,GlobalWorkerOptions:aT,ImageKind:WT,InvalidPDFException:nT,isDataScheme:VT,isPdfFile:cJ,MissingPDFException:sT,noContextMenu:iT,normalizeUnicode:QJ,OPS:RT,OutputScale:aJ,PasswordResponses:NT,PDFDataRangeTransport:hT,PDFDateString:bT,PDFWorker:mT,PermissionFlag:Ha,PixelsPerInch:WZ,RenderingCancelledException:dR,setLayerDimensions:WJ,shadow:fn,TextLayer:nJ,UnexpectedResponseException:eT,Util:MT,VerbosityLevel:JT,version:uN,XfaLayer:Vs}=globalThis.pdfjsLib;var OW,wt,gW,bi;class lm{constructor({pdfPage:l,linkService:d,downloadManager:Z,annotationStorage:t=null,imageResourcesPath:F="",renderForms:c=!0,enableScripting:a=!1,hasJSActionsPromise:W=null,fieldObjectsPromise:n=null,annotationCanvasMap:V=null,accessibilityManager:s=null,annotationEditorUIManager:i=null,onAppend:R=null}){e(this,gW),e(this,OW,null),e(this,wt,null),this.pdfPage=l,this.linkService=d,this.downloadManager=Z,this.imageResourcesPath=F,this.renderForms=c,this.annotationStorage=t,this.enableScripting=a,this._hasJSActionsPromise=W||Promise.resolve(!1),this._fieldObjectsPromise=n||Promise.resolve(null),this._annotationCanvasMap=V,this._accessibilityManager=s,this._annotationEditorUIManager=i,b(this,OW,R),this.annotationLayer=null,this.div=null,this._cancelled=!1,this._eventBus=d.eventBus}render(l,d,Z="display"){return z(this,null,function*(){var t,F;if(this.div){if(this._cancelled||!this.annotationLayer)return;this.annotationLayer.update({viewport:l.clone({dontFlip:!0})});return}const[c,a,W]=yield Promise.all([this.pdfPage.getAnnotations({intent:Z}),this._hasJSActionsPromise,this._fieldObjectsPromise]);if(this._cancelled)return;const n=this.div=document.createElement("div");if(n.className="annotationLayer",(t=Q(this,OW))==null||t.call(this,n),c.length===0){this.hide();return}this.annotationLayer=new UJ({div:n,accessibilityManager:this._accessibilityManager,annotationCanvasMap:this._annotationCanvasMap,annotationEditorUIManager:this._annotationEditorUIManager,page:this.pdfPage,viewport:l.clone({dontFlip:!0}),structTreeLayer:(d==null?void 0:d.structTreeLayer)||null}),yield this.annotationLayer.render({annotations:c,imageResourcesPath:this.imageResourcesPath,renderForms:this.renderForms,linkService:this.linkService,downloadManager:this.downloadManager,annotationStorage:this.annotationStorage,enableScripting:this.enableScripting,hasJSActions:a,fieldObjects:W}),this.linkService.isInPresentationMode&&N(this,gW,bi).call(this,E0.FULLSCREEN),Q(this,wt)||(b(this,wt,new AbortController),(F=this._eventBus)==null||F._on("presentationmodechanged",V=>{N(this,gW,bi).call(this,V.state)},{signal:Q(this,wt).signal}))})}cancel(){var l;this._cancelled=!0,(l=Q(this,wt))==null||l.abort(),b(this,wt,null)}hide(){this.div&&(this.div.hidden=!0)}hasEditableAnnotations(){var l;return!!((l=this.annotationLayer)!=null&&l.hasEditableAnnotations())}}OW=new WeakMap,wt=new WeakMap,gW=new WeakSet,bi=function(U){if(!this.div)return;let l=!1;switch(U){case E0.FULLSCREEN:l=!0;break;case E0.NORMAL:break;default:return}for(const d of this.div.childNodes)d.hasAttribute("data-internal-link")||(d.inert=l)};function oN(U,l){const d=document.createElement("a");if(!d.click)throw new Error('DownloadManager: "a.click()" is not supported.');d.href=U,d.target="_parent","download"in d&&(d.download=l),(document.body||document.documentElement).append(d),d.click(),d.remove()}var dm;class VJ{constructor(){e(this,dm,new WeakMap)}downloadData(l,d,Z){const t=URL.createObjectURL(new Blob([l],{type:Z}));oN(t,d)}openOrDownloadData(l,d,Z=null){const t=cJ(d)?"application/pdf":"";return this.downloadData(l,d,t),!1}download(l,d,Z){let t;if(l)t=URL.createObjectURL(new Blob([l],{type:"application/pdf"}));else{if(!ZJ(d,"http://example.com")){console.error(`download - not a valid URL: ${d}`);return}t=d+"#pdfjs.action=download"}oN(t,Z)}}dm=new WeakMap;const BN={EVENT:"event",TIMEOUT:"timeout"};function sJ(Z){return z(this,arguments,function*({target:U,name:l,delay:d=0}){if(typeof U!="object"||!(l&&typeof l=="string")||!(Number.isInteger(d)&&d>=0))throw new Error("waitOnEventOrTimeout - invalid parameters.");const{promise:t,resolve:F}=Promise.withResolvers(),c=new AbortController;function a(V){c.abort(),clearTimeout(n),F(V)}const W=U instanceof Um?"_on":"addEventListener";U[W](l,a.bind(null,BN.EVENT),{signal:c.signal});const n=setTimeout(a.bind(null,BN.TIMEOUT),d);return t})}var tQ;class Um{constructor(){e(this,tQ,Object.create(null))}on(l,d,Z=null){this._on(l,d,{external:!0,once:Z==null?void 0:Z.once,signal:Z==null?void 0:Z.signal})}off(l,d,Z=null){this._off(l,d)}dispatch(l,d){const Z=Q(this,tQ)[l];if(!Z||Z.length===0)return;let t;for(const{listener:F,external:c,once:a}of Z.slice(0)){if(a&&this._off(l,F),c){(t||(t=[])).push(F);continue}F(d)}if(t){for(const F of t)F(d);t=null}}_on(l,d,Z=null){var t;let F=null;if((Z==null?void 0:Z.signal)instanceof AbortSignal){const{signal:c}=Z;if(c.aborted){console.error("Cannot use an `aborted` signal.");return}const a=()=>this._off(l,d);F=()=>c.removeEventListener("abort",a),c.addEventListener("abort",a)}((t=Q(this,tQ))[l]||(t[l]=[])).push({listener:d,external:(Z==null?void 0:Z.external)===!0,once:(Z==null?void 0:Z.once)===!0,rmAbort:F})}_off(l,d,Z=null){var t;const F=Q(this,tQ)[l];if(F)for(let c=0,a=F.length;c<a;c++){const W=F[c];if(W.listener===d){(t=W.rmAbort)==null||t.call(W),F.splice(c,1);return}}}}tQ=new WeakMap;class VV{constructor(l){this.value=l}valueOf(){return this.value}}class Ll extends VV{constructor(l="???"){super(l)}toString(l){return`{${this.value}}`}}class sZ extends VV{constructor(l,d={}){super(l),this.opts=d}toString(l){try{return l.memoizeIntlObject(Intl.NumberFormat,this.opts).format(this.value)}catch(d){return l.reportError(d),this.value.toString(10)}}}class zQ extends VV{constructor(l,d={}){super(l),this.opts=d}toString(l){try{return l.memoizeIntlObject(Intl.DateTimeFormat,this.opts).format(this.value)}catch(d){return l.reportError(d),new Date(this.value).toISOString()}}}const yN=100,iJ="",RJ="";function NJ(U,l,d){if(d===l||d instanceof sZ&&l instanceof sZ&&d.value===l.value)return!0;if(l instanceof sZ&&typeof d=="string"){let Z=U.memoizeIntlObject(Intl.PluralRules,l.opts).select(l.value);if(d===Z)return!0}return!1}function kN(U,l,d){return l[d]?g0(U,l[d].value):(U.reportError(new RangeError("No default")),new Ll)}function mi(U,l){const d=[],Z=Object.create(null);for(const t of l)t.type==="narg"?Z[t.name]=HQ(U,t.value):d.push(HQ(U,t));return{positional:d,named:Z}}function HQ(U,l){switch(l.type){case"str":return l.value;case"num":return new sZ(l.value,{minimumFractionDigits:l.precision});case"var":return hJ(U,l);case"mesg":return bJ(U,l);case"term":return mJ(U,l);case"func":return eJ(U,l);case"select":return MJ(U,l);default:return new Ll}}function hJ(U,{name:l}){let d;if(U.params)if(Object.prototype.hasOwnProperty.call(U.params,l))d=U.params[l];else return new Ll(`$${l}`);else if(U.args&&Object.prototype.hasOwnProperty.call(U.args,l))d=U.args[l];else return U.reportError(new ReferenceError(`Unknown variable: $${l}`)),new Ll(`$${l}`);if(d instanceof VV)return d;switch(typeof d){case"string":return d;case"number":return new sZ(d);case"object":if(d instanceof Date)return new zQ(d.getTime());default:return U.reportError(new TypeError(`Variable type not supported: $${l}, ${typeof d}`)),new Ll(`$${l}`)}}function bJ(U,{name:l,attr:d}){const Z=U.bundle._messages.get(l);if(!Z)return U.reportError(new ReferenceError(`Unknown message: ${l}`)),new Ll(l);if(d){const t=Z.attributes[d];return t?g0(U,t):(U.reportError(new ReferenceError(`Unknown attribute: ${d}`)),new Ll(`${l}.${d}`))}return Z.value?g0(U,Z.value):(U.reportError(new ReferenceError(`No value: ${l}`)),new Ll(l))}function mJ(U,{name:l,attr:d,args:Z}){const t=`-${l}`,F=U.bundle._terms.get(t);if(!F)return U.reportError(new ReferenceError(`Unknown term: ${t}`)),new Ll(t);if(d){const a=F.attributes[d];if(a){U.params=mi(U,Z).named;const W=g0(U,a);return U.params=null,W}return U.reportError(new ReferenceError(`Unknown attribute: ${d}`)),new Ll(`${t}.${d}`)}U.params=mi(U,Z).named;const c=g0(U,F.value);return U.params=null,c}function eJ(U,{name:l,args:d}){let Z=U.bundle._functions[l];if(!Z)return U.reportError(new ReferenceError(`Unknown function: ${l}()`)),new Ll(`${l}()`);if(typeof Z!="function")return U.reportError(new TypeError(`Function ${l}() is not callable`)),new Ll(`${l}()`);try{let t=mi(U,d);return Z(t.positional,t.named)}catch(t){return U.reportError(t),new Ll(`${l}()`)}}function MJ(U,{selector:l,variants:d,star:Z}){let t=HQ(U,l);if(t instanceof Ll)return kN(U,d,Z);for(const F of d){const c=HQ(U,F.key);if(NJ(U,t,c))return g0(U,F.value)}return kN(U,d,Z)}function Zm(U,l){if(U.dirty.has(l))return U.reportError(new RangeError("Cyclic reference")),new Ll;U.dirty.add(l);const d=[],Z=U.bundle._useIsolating&&l.length>1;for(const t of l){if(typeof t=="string"){d.push(U.bundle._transform(t));continue}if(U.placeables++,U.placeables>yN)throw U.dirty.delete(l),new RangeError(`Too many placeables expanded: ${U.placeables}, max allowed is ${yN}`);Z&&d.push(iJ),d.push(HQ(U,t).toString(U)),Z&&d.push(RJ)}return U.dirty.delete(l),d.join("")}function g0(U,l){return typeof l=="string"?U.bundle._transform(l):Zm(U,l)}class JJ{constructor(l,d,Z){this.dirty=new WeakSet,this.params=null,this.placeables=0,this.bundle=l,this.errors=d,this.args=Z}reportError(l){if(!this.errors||!(l instanceof Error))throw l;this.errors.push(l)}memoizeIntlObject(l,d){let Z=this.bundle._intls.get(l);Z||(Z={},this.bundle._intls.set(l,Z));let t=JSON.stringify(d);return Z[t]||(Z[t]=new l(this.bundle.locales,d)),Z[t]}}function An(U,l){const d=Object.create(null);for(const[Z,t]of Object.entries(U))l.includes(Z)&&(d[Z]=t.valueOf());return d}const LN=["unitDisplay","currencyDisplay","useGrouping","minimumIntegerDigits","minimumFractionDigits","maximumFractionDigits","minimumSignificantDigits","maximumSignificantDigits"];function GJ(U,l){let d=U[0];if(d instanceof Ll)return new Ll(`NUMBER(${d.valueOf()})`);if(d instanceof sZ)return new sZ(d.valueOf(),ul(ul({},d.opts),An(l,LN)));if(d instanceof zQ)return new sZ(d.valueOf(),ul({},An(l,LN)));throw new TypeError("Invalid argument to NUMBER")}const zN=["dateStyle","timeStyle","fractionalSecondDigits","dayPeriod","hour12","weekday","era","year","month","day","hour","minute","second","timeZoneName"];function TJ(U,l){let d=U[0];if(d instanceof Ll)return new Ll(`DATETIME(${d.valueOf()})`);if(d instanceof zQ)return new zQ(d.valueOf(),ul(ul({},d.opts),An(l,zN)));if(d instanceof sZ)return new zQ(d.valueOf(),ul({},An(l,zN)));throw new TypeError("Invalid argument to DATETIME")}const IN=new Map;function SJ(U){const l=Array.isArray(U)?U.join(" "):U;let d=IN.get(l);return d===void 0&&(d=new Map,IN.set(l,d)),d}class XJ{constructor(l,{functions:d,useIsolating:Z=!0,transform:t=F=>F}={}){this._terms=new Map,this._messages=new Map,this.locales=Array.isArray(l)?l:[l],this._functions=ul({NUMBER:GJ,DATETIME:TJ},d),this._useIsolating=Z,this._transform=t,this._intls=SJ(l)}hasMessage(l){return this._messages.has(l)}getMessage(l){return this._messages.get(l)}addResource(l,{allowOverrides:d=!1}={}){const Z=[];for(let t=0;t<l.body.length;t++){let F=l.body[t];if(F.id.startsWith("-")){if(d===!1&&this._terms.has(F.id)){Z.push(new Error(`Attempt to override an existing term: "${F.id}"`));continue}this._terms.set(F.id,F)}else{if(d===!1&&this._messages.has(F.id)){Z.push(new Error(`Attempt to override an existing message: "${F.id}"`));continue}this._messages.set(F.id,F)}}return Z}formatPattern(l,d=null,Z=null){if(typeof l=="string")return this._transform(l);let t=new JJ(this,Z,d);try{return Zm(t,l).toString(t)}catch(F){if(t.errors&&F instanceof Error)return t.errors.push(F),new Ll().toString(t);throw F}}}const ss=/^(-?[a-zA-Z][\w-]*) *= */gm,DN=/\.([a-zA-Z][\w-]*) *= */y,YJ=/\*?\[/y,is=/(-?[0-9]+(?:\.([0-9]+))?)/y,pJ=/([a-zA-Z][\w-]*)/y,EN=/([$-])?([a-zA-Z][\w-]*)(?:\.([a-zA-Z][\w-]*))?/y,uJ=/^[A-Z][A-Z0-9_-]*$/,Pa=/([^{}\n\r]+)/y,oJ=/([^\\"\n\r]*)/y,wN=/\\([\\"])/y,CN=/\\u([a-fA-F0-9]{4})|\\U([a-fA-F0-9]{6})/y,BJ=/^\n+/,xN=/ +$/,yJ=/ *\r?\n/g,kJ=/( *)$/,LJ=/{\s*/y,rN=/\s*}/y,zJ=/\[\s*/y,IJ=/\s*] */y,DJ=/\s*\(\s*/y,EJ=/\s*->\s*/y,wJ=/\s*:\s*/y,CJ=/\s*,?\s*/y,xJ=/\s+/y;class rJ{constructor(l){this.body=[],ss.lastIndex=0;let d=0;for(;;){let S=ss.exec(l);if(S===null)break;d=ss.lastIndex;try{this.body.push(W(S[1]))}catch(B){if(B instanceof SyntaxError)continue;throw B}}function Z(S){return S.lastIndex=d,S.test(l)}function t(S,B){if(l[d]===S)return d++,!0;if(B)throw new B(`Expected ${S}`);return!1}function F(S,B){if(Z(S))return d=S.lastIndex,!0;if(B)throw new B(`Expected ${S.toString()}`);return!1}function c(S){S.lastIndex=d;let B=S.exec(l);if(B===null)throw new SyntaxError(`Expected ${S.toString()}`);return d=S.lastIndex,B}function a(S){return c(S)[1]}function W(S){let B=V(),y=n();if(B===null&&Object.keys(y).length===0)throw new SyntaxError("Expected message value or attributes");return{id:S,value:B,attributes:y}}function n(){let S=Object.create(null);for(;Z(DN);){let B=a(DN),y=V();if(y===null)throw new SyntaxError("Expected attribute value");S[B]=y}return S}function V(){let S;if(Z(Pa)&&(S=a(Pa)),l[d]==="{"||l[d]==="}")return s(S?[S]:[],1/0);let B=p();return B?S?s([S,B],B.length):(B.value=o(B.value,BJ),s([B],B.length)):S?o(S,xN):null}function s(S=[],B){for(;;){if(Z(Pa)){S.push(a(Pa));continue}if(l[d]==="{"){S.push(i());continue}if(l[d]==="}")throw new SyntaxError("Unbalanced closing brace");let r=p();if(r){S.push(r),B=Math.min(B,r.length);continue}break}let y=S.length-1,D=S[y];typeof D=="string"&&(S[y]=o(D,xN));let E=[];for(let r of S)r instanceof jN&&(r=r.value.slice(0,r.value.length-B)),r&&E.push(r);return E}function i(){F(LJ,SyntaxError);let S=R();if(F(rN))return S;if(F(EJ)){let B=M();return F(rN,SyntaxError),ul({type:"select",selector:S},B)}throw new SyntaxError("Unclosed placeable")}function R(){if(l[d]==="{")return i();if(Z(EN)){let[,S,B,y=null]=c(EN);if(S==="$")return{type:"var",name:B};if(F(DJ)){let D=h();if(S==="-")return{type:"term",name:B,attr:y,args:D};if(uJ.test(B))return{type:"func",name:B,args:D};throw new SyntaxError("Function names must be all upper-case")}return S==="-"?{type:"term",name:B,attr:y,args:[]}:{type:"mesg",name:B,attr:y}}return T()}function h(){let S=[];for(;;){switch(l[d]){case")":return d++,S;case void 0:throw new SyntaxError("Unclosed argument list")}S.push(m()),F(CJ)}}function m(){let S=R();return S.type!=="mesg"?S:F(wJ)?{type:"narg",name:S.name,value:T()}:S}function M(){let S=[],B=0,y;for(;Z(YJ);){t("*")&&(y=B);let D=J(),E=V();if(E===null)throw new SyntaxError("Expected variant value");S[B++]={key:D,value:E}}if(B===0)return null;if(y===void 0)throw new SyntaxError("Expected default variant");return{variants:S,star:y}}function J(){F(zJ,SyntaxError);let S;return Z(is)?S=G():S={type:"str",value:a(pJ)},F(IJ,SyntaxError),S}function T(){if(Z(is))return G();if(l[d]==='"')return X();throw new SyntaxError("Invalid expression")}function G(){let[,S,B=""]=c(is),y=B.length;return{type:"num",value:parseFloat(S),precision:y}}function X(){t('"',SyntaxError);let S="";for(;;){if(S+=a(oJ),l[d]==="\\"){S+=Y();continue}if(t('"'))return{type:"str",value:S};throw new SyntaxError("Unclosed string literal")}}function Y(){if(Z(wN))return a(wN);if(Z(CN)){let[,S,B]=c(CN),y=parseInt(S||B,16);return y<=55295||57344<=y?String.fromCodePoint(y):"<22>"}throw new SyntaxError("Unknown escape sequence")}function p(){let S=d;switch(F(xJ),l[d]){case".":case"[":case"*":case"}":case void 0:return!1;case"{":return k(l.slice(S,d))}return l[d-1]===" "?k(l.slice(S,d)):!1}function o(S,B){return S.replace(B,"")}function k(S){let B=S.replace(yJ,`
|
||
`),y=kJ.exec(S)[1].length;return new jN(B,y)}}}class jN{constructor(l,d){this.value=l,this.length=d}}const jJ=/<|&#?\w+;/,OJ={"http://www.w3.org/1999/xhtml":["em","strong","small","s","cite","q","dfn","abbr","data","time","code","var","samp","kbd","sub","sup","i","b","u","mark","bdi","bdo","span","br","wbr"]},gJ={"http://www.w3.org/1999/xhtml":{global:["title","aria-label","aria-valuetext"],a:["download"],area:["download","alt"],input:["alt","placeholder"],menuitem:["label"],menu:["label"],optgroup:["label"],option:["label"],track:["label"],img:["alt"],textarea:["placeholder"],th:["abbr"]},"http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul":{global:["accesskey","aria-label","aria-valuetext","label","title","tooltiptext"],description:["value"],key:["key","keycode"],label:["value"],textbox:["placeholder","value"]}};function KJ(U,l){const{value:d}=l;if(typeof d=="string")if(U.localName==="title"&&U.namespaceURI==="http://www.w3.org/1999/xhtml")U.textContent=d;else if(!jJ.test(d))U.textContent=d;else{const Z=U.ownerDocument.createElementNS("http://www.w3.org/1999/xhtml","template");Z.innerHTML=d,vJ(Z.content,U)}tm(l,U)}function vJ(U,l){for(const d of U.childNodes)if(d.nodeType!==d.TEXT_NODE){if(d.hasAttribute("data-l10n-name")){const Z=PJ(l,d);U.replaceChild(Z,d);continue}if(AJ(d)){const Z=fJ(d);U.replaceChild(Z,d);continue}console.warn(`An element of forbidden type "${d.localName}" was found in the translation. Only safe text-level elements and elements with data-l10n-name are allowed.`),U.replaceChild(ei(d),d)}l.textContent="",l.appendChild(U)}function HJ(U,l){if(!U)return!1;for(let d of U)if(d.name===l)return!0;return!1}function tm(U,l){const d=l.hasAttribute("data-l10n-attrs")?l.getAttribute("data-l10n-attrs").split(",").map(Z=>Z.trim()):null;for(const Z of Array.from(l.attributes))ON(Z.name,l,d)&&!HJ(U.attributes,Z.name)&&l.removeAttribute(Z.name);if(U.attributes)for(const Z of Array.from(U.attributes))ON(Z.name,l,d)&&l.getAttribute(Z.name)!==Z.value&&l.setAttribute(Z.name,Z.value)}function PJ(U,l){const d=l.getAttribute("data-l10n-name"),Z=U.querySelector(`[data-l10n-name="${d}"]`);if(!Z)return console.warn(`An element named "${d}" wasn't found in the source.`),ei(l);if(Z.localName!==l.localName)return console.warn(`An element named "${d}" was found in the translation but its type ${l.localName} didn't match the element found in the source (${Z.localName}).`),ei(l);U.removeChild(Z);const t=Z.cloneNode(!1);return Fm(l,t)}function fJ(U){const l=U.ownerDocument.createElement(U.localName);return Fm(U,l)}function ei(U){return U.ownerDocument.createTextNode(U.textContent)}function AJ(U){const l=OJ[U.namespaceURI];return l&&l.includes(U.localName)}function ON(U,l,d=null){if(d&&d.includes(U))return!0;const Z=gJ[l.namespaceURI];if(!Z)return!1;const t=U.toLowerCase(),F=l.localName;if(Z.global.includes(t))return!0;if(!Z[F])return!1;if(Z[F].includes(t))return!0;if(l.namespaceURI==="http://www.w3.org/1999/xhtml"&&F==="input"&&t==="value"){const c=l.type.toLowerCase();if(c==="submit"||c==="button"||c==="reset")return!0}return!1}function Fm(U,l){return l.textContent=U.textContent,tm(U,l),l}class _J extends Array{static from(l){return l instanceof this?l:new this(l)}}class qJ extends _J{constructor(l){if(super(),Symbol.asyncIterator in Object(l))this.iterator=l[Symbol.asyncIterator]();else if(Symbol.iterator in Object(l))this.iterator=l[Symbol.iterator]();else throw new TypeError("Argument must implement the iteration protocol.")}[Symbol.asyncIterator](){const l=this;let d=0;return{next(){return z(this,null,function*(){return l.length<=d&&l.push(l.iterator.next()),l[d++]})}}}touchNext(l=1){return z(this,null,function*(){let d=0;for(;d++<l;){const Z=this[this.length-1];if(Z&&(yield Z).done)break;this.push(this.iterator.next())}return this[this.length-1]})}}class $J{constructor(l=[],d){this.resourceIds=l,this.generateBundles=d,this.onChange(!0)}addResourceIds(l,d=!1){return this.resourceIds.push(...l),this.onChange(d),this.resourceIds.length}removeResourceIds(l){return this.resourceIds=this.resourceIds.filter(d=>!l.includes(d)),this.onChange(),this.resourceIds.length}formatWithFallback(l,d){return z(this,null,function*(){const Z=[];let t=!1;try{for(var F=FR(this.bundles),c,a,W;c=!(a=yield F.next()).done;c=!1){const n=a.value;t=!0;const V=UG(d,n,l,Z);if(V.size===0)break;if(typeof console<"u"){const s=n.locales[0],i=Array.from(V).join(", ");console.warn(`[fluent] Missing translations in ${s}: ${i}`)}}}catch(a){W=[a]}finally{try{c&&(a=F.return)&&(yield a.call(F))}finally{if(W)throw W[0]}}return!t&&typeof console<"u"&&console.warn(`[fluent] Request for keys failed because no resource bundles got generated.
|
||
keys: ${JSON.stringify(l)}.
|
||
resourceIds: ${JSON.stringify(this.resourceIds)}.`),Z})}formatMessages(l){return this.formatWithFallback(l,dG)}formatValues(l){return this.formatWithFallback(l,lG)}formatValue(l,d){return z(this,null,function*(){const[Z]=yield this.formatValues([{id:l,args:d}]);return Z})}handleEvent(){this.onChange()}onChange(l=!1){this.bundles=qJ.from(this.generateBundles(this.resourceIds)),l&&this.bundles.touchNext(2)}}function lG(U,l,d,Z){return d.value?U.formatPattern(d.value,Z,l):null}function dG(U,l,d,Z){const t={value:null,attributes:null};d.value&&(t.value=U.formatPattern(d.value,Z,l));let F=Object.keys(d.attributes);if(F.length>0){t.attributes=new Array(F.length);for(let[c,a]of F.entries()){let W=U.formatPattern(d.attributes[a],Z,l);t.attributes[c]={name:a,value:W}}}return t}function UG(U,l,d,Z){const t=[],F=new Set;return d.forEach(({id:c,args:a},W)=>{if(Z[W]!==void 0)return;let n=l.getMessage(c);if(n){if(t.length=0,Z[W]=U(l,t,n,a),t.length>0&&typeof console<"u"){const V=l.locales[0],s=t.join(", ");console.warn(`[fluent][resolver] errors in ${V}/${c}: ${s}.`)}}else F.add(c)}),F}const Ct="data-l10n-id",Gc="data-l10n-args",ZG=`[${Ct}]`;class tG extends $J{constructor(l,d){super(l,d),this.roots=new Set,this.pendingrAF=null,this.pendingElements=new Set,this.windowElement=null,this.mutationObserver=null,this.observerConfig={attributes:!0,characterData:!1,childList:!0,subtree:!0,attributeFilter:[Ct,Gc]}}onChange(l=!1){super.onChange(l),this.roots&&this.translateRoots()}setAttributes(l,d,Z){return l.setAttribute(Ct,d),Z?l.setAttribute(Gc,JSON.stringify(Z)):l.removeAttribute(Gc),l}getAttributes(l){return{id:l.getAttribute(Ct),args:JSON.parse(l.getAttribute(Gc)||null)}}connectRoot(l){for(const d of this.roots)if(d===l||d.contains(l)||l.contains(d))throw new Error("Cannot add a root that overlaps with existing root.");if(this.windowElement){if(this.windowElement!==l.ownerDocument.defaultView)throw new Error(`Cannot connect a root:
|
||
DOMLocalization already has a root from a different window.`)}else this.windowElement=l.ownerDocument.defaultView,this.mutationObserver=new this.windowElement.MutationObserver(d=>this.translateMutations(d));this.roots.add(l),this.mutationObserver.observe(l,this.observerConfig)}disconnectRoot(l){return this.roots.delete(l),this.pauseObserving(),this.roots.size===0?(this.mutationObserver=null,this.windowElement&&this.pendingrAF&&this.windowElement.cancelAnimationFrame(this.pendingrAF),this.windowElement=null,this.pendingrAF=null,this.pendingElements.clear(),!0):(this.resumeObserving(),!1)}translateRoots(){const l=Array.from(this.roots);return Promise.all(l.map(d=>this.translateFragment(d)))}pauseObserving(){this.mutationObserver&&(this.translateMutations(this.mutationObserver.takeRecords()),this.mutationObserver.disconnect())}resumeObserving(){if(this.mutationObserver)for(const l of this.roots)this.mutationObserver.observe(l,this.observerConfig)}translateMutations(l){for(const d of l)switch(d.type){case"attributes":d.target.hasAttribute("data-l10n-id")&&this.pendingElements.add(d.target);break;case"childList":for(const Z of d.addedNodes)if(Z.nodeType===Z.ELEMENT_NODE)if(Z.childElementCount)for(const t of this.getTranslatables(Z))this.pendingElements.add(t);else Z.hasAttribute(Ct)&&this.pendingElements.add(Z);break}this.pendingElements.size>0&&this.pendingrAF===null&&(this.pendingrAF=this.windowElement.requestAnimationFrame(()=>{this.translateElements(Array.from(this.pendingElements)),this.pendingElements.clear(),this.pendingrAF=null}))}translateFragment(l){return this.translateElements(this.getTranslatables(l))}translateElements(l){return z(this,null,function*(){if(!l.length)return;const d=l.map(this.getKeysForElement),Z=yield this.formatMessages(d);return this.applyTranslations(l,Z)})}applyTranslations(l,d){this.pauseObserving();for(let Z=0;Z<l.length;Z++)d[Z]!==void 0&&KJ(l[Z],d[Z]);this.resumeObserving()}getTranslatables(l){const d=Array.from(l.querySelectorAll(ZG));return typeof l.hasAttribute=="function"&&l.hasAttribute(Ct)&&d.push(l),d}getKeysForElement(l){return{id:l.getAttribute(Ct),args:JSON.parse(l.getAttribute(Gc)||null)}}}var KW,FQ,cQ,pd,_n,cm,Qm;const am=class Mi{constructor({lang:l,isRTL:d},Z=null){e(this,KW),e(this,FQ,new Set),e(this,cQ),e(this,pd);var t,F;b(this,cQ,N(t=Mi,_n,cm).call(t,l)),b(this,pd,Z),b(this,KW,(d!=null?d:N(F=Mi,_n,Qm).call(F,Q(this,cQ)))?"rtl":"ltr")}_setL10n(l){b(this,pd,l)}getLanguage(){return Q(this,cQ)}getDirection(){return Q(this,KW)}get(l,d=null,Z){return z(this,null,function*(){var t;return Array.isArray(l)?(l=l.map(F=>({id:F})),(yield Q(this,pd).formatMessages(l)).map(F=>F.value)):((t=(yield Q(this,pd).formatMessages([{id:l,args:d}]))[0])==null?void 0:t.value)||Z})}translate(l){return z(this,null,function*(){Q(this,FQ).add(l);try{Q(this,pd).connectRoot(l),yield Q(this,pd).translateRoots()}catch(d){}})}translateOnce(l){return z(this,null,function*(){try{yield Q(this,pd).translateElements([l])}catch(d){console.error(`translateOnce: "${d}".`)}})}destroy(){return z(this,null,function*(){for(const l of Q(this,FQ))Q(this,pd).disconnectRoot(l);Q(this,FQ).clear(),Q(this,pd).pauseObserving()})}pause(){Q(this,pd).pauseObserving()}resume(){Q(this,pd).resumeObserving()}};KW=new WeakMap,FQ=new WeakMap,cQ=new WeakMap,pd=new WeakMap,_n=new WeakSet,cm=function(U){return U=(U==null?void 0:U.toLowerCase())||"en-us",{en:"en-us",es:"es-es",fy:"fy-nl",ga:"ga-ie",gu:"gu-in",hi:"hi-in",hy:"hy-am",nb:"nb-no",ne:"ne-np",nn:"nn-no",pa:"pa-in",pt:"pt-pt",sv:"sv-se",zh:"zh-cn"}[U]||U},Qm=function(U){const l=U.split("-",1)[0];return["ar","he","fa","ps","ur"].includes(l)},e(am,_n);let FG=am;function gN(U,l){const d=new rJ(l),Z=new XJ(U),t=Z.addResource(d);return t.length&&console.error("L10n errors",t),Z}var zZ,Wm,KN,vN,nm,Rs;const Vm=class QQ extends FG{constructor(l){super({lang:l});const d=l?N(QQ,zZ,Wm).bind(QQ,"en-us",this.getLanguage()):N(QQ,zZ,nm).bind(QQ,this.getLanguage());this._setL10n(new tG([],d))}};zZ=new WeakSet,Wm=function(U,l){return NV(this,null,function*(){const{baseURL:d,paths:Z}=yield new qQ(N(this,zZ,vN).call(this)),t=[l];if(U!==l){const F=l.split("-",1)[0];F!==l&&t.push(F),t.push(U)}for(const F of t){const c=yield new qQ(N(this,zZ,KN).call(this,F,d,Z));c?yield c:F==="en-us"&&(yield N(this,zZ,Rs).call(this,F))}})},KN=function(U,l,d){return z(this,null,function*(){const Z=d[U];if(!Z)return null;const t=new URL(Z,l),F=yield pN(t,"text");return gN(U,F)})},vN=function(){return z(this,null,function*(){try{const{href:U}=document.querySelector('link[type="application/l10n"]'),l=yield pN(U,"json");return{baseURL:U.replace(/[^/]*$/,"")||"./",paths:l}}catch(U){}return{baseURL:"./",paths:Object.create(null)}})},nm=function(U){return NV(this,null,function*(){yield N(this,zZ,Rs).call(this,U)})},Rs=function(U){return z(this,null,function*(){return gN(U,`pdfjs-previous-button =
|
||
.title = Previous Page
|
||
pdfjs-previous-button-label = Previous
|
||
pdfjs-next-button =
|
||
.title = Next Page
|
||
pdfjs-next-button-label = Next
|
||
pdfjs-page-input =
|
||
.title = Page
|
||
pdfjs-of-pages = of { $pagesCount }
|
||
pdfjs-page-of-pages = ({ $pageNumber } of { $pagesCount })
|
||
pdfjs-zoom-out-button =
|
||
.title = Zoom Out
|
||
pdfjs-zoom-out-button-label = Zoom Out
|
||
pdfjs-zoom-in-button =
|
||
.title = Zoom In
|
||
pdfjs-zoom-in-button-label = Zoom In
|
||
pdfjs-zoom-select =
|
||
.title = Zoom
|
||
pdfjs-presentation-mode-button =
|
||
.title = Switch to Presentation Mode
|
||
pdfjs-presentation-mode-button-label = Presentation Mode
|
||
pdfjs-open-file-button =
|
||
.title = Open File
|
||
pdfjs-open-file-button-label = Open
|
||
pdfjs-print-button =
|
||
.title = Print
|
||
pdfjs-print-button-label = Print
|
||
pdfjs-save-button =
|
||
.title = Save
|
||
pdfjs-save-button-label = Save
|
||
pdfjs-download-button =
|
||
.title = Download
|
||
pdfjs-download-button-label = Download
|
||
pdfjs-bookmark-button =
|
||
.title = Current Page (View URL from Current Page)
|
||
pdfjs-bookmark-button-label = Current Page
|
||
pdfjs-tools-button =
|
||
.title = Tools
|
||
pdfjs-tools-button-label = Tools
|
||
pdfjs-first-page-button =
|
||
.title = Go to First Page
|
||
pdfjs-first-page-button-label = Go to First Page
|
||
pdfjs-last-page-button =
|
||
.title = Go to Last Page
|
||
pdfjs-last-page-button-label = Go to Last Page
|
||
pdfjs-page-rotate-cw-button =
|
||
.title = Rotate Clockwise
|
||
pdfjs-page-rotate-cw-button-label = Rotate Clockwise
|
||
pdfjs-page-rotate-ccw-button =
|
||
.title = Rotate Counterclockwise
|
||
pdfjs-page-rotate-ccw-button-label = Rotate Counterclockwise
|
||
pdfjs-cursor-text-select-tool-button =
|
||
.title = Enable Text Selection Tool
|
||
pdfjs-cursor-text-select-tool-button-label = Text Selection Tool
|
||
pdfjs-cursor-hand-tool-button =
|
||
.title = Enable Hand Tool
|
||
pdfjs-cursor-hand-tool-button-label = Hand Tool
|
||
pdfjs-scroll-page-button =
|
||
.title = Use Page Scrolling
|
||
pdfjs-scroll-page-button-label = Page Scrolling
|
||
pdfjs-scroll-vertical-button =
|
||
.title = Use Vertical Scrolling
|
||
pdfjs-scroll-vertical-button-label = Vertical Scrolling
|
||
pdfjs-scroll-horizontal-button =
|
||
.title = Use Horizontal Scrolling
|
||
pdfjs-scroll-horizontal-button-label = Horizontal Scrolling
|
||
pdfjs-scroll-wrapped-button =
|
||
.title = Use Wrapped Scrolling
|
||
pdfjs-scroll-wrapped-button-label = Wrapped Scrolling
|
||
pdfjs-spread-none-button =
|
||
.title = Do not join page spreads
|
||
pdfjs-spread-none-button-label = No Spreads
|
||
pdfjs-spread-odd-button =
|
||
.title = Join page spreads starting with odd-numbered pages
|
||
pdfjs-spread-odd-button-label = Odd Spreads
|
||
pdfjs-spread-even-button =
|
||
.title = Join page spreads starting with even-numbered pages
|
||
pdfjs-spread-even-button-label = Even Spreads
|
||
pdfjs-document-properties-button =
|
||
.title = Document Properties…
|
||
pdfjs-document-properties-button-label = Document Properties…
|
||
pdfjs-document-properties-file-name = File name:
|
||
pdfjs-document-properties-file-size = File size:
|
||
pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } KB ({ $b } bytes)
|
||
pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } bytes)
|
||
pdfjs-document-properties-title = Title:
|
||
pdfjs-document-properties-author = Author:
|
||
pdfjs-document-properties-subject = Subject:
|
||
pdfjs-document-properties-keywords = Keywords:
|
||
pdfjs-document-properties-creation-date = Creation Date:
|
||
pdfjs-document-properties-modification-date = Modification Date:
|
||
pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
|
||
pdfjs-document-properties-creator = Creator:
|
||
pdfjs-document-properties-producer = PDF Producer:
|
||
pdfjs-document-properties-version = PDF Version:
|
||
pdfjs-document-properties-page-count = Page Count:
|
||
pdfjs-document-properties-page-size = Page Size:
|
||
pdfjs-document-properties-page-size-unit-inches = in
|
||
pdfjs-document-properties-page-size-unit-millimeters = mm
|
||
pdfjs-document-properties-page-size-orientation-portrait = portrait
|
||
pdfjs-document-properties-page-size-orientation-landscape = landscape
|
||
pdfjs-document-properties-page-size-name-a-three = A3
|
||
pdfjs-document-properties-page-size-name-a-four = A4
|
||
pdfjs-document-properties-page-size-name-letter = Letter
|
||
pdfjs-document-properties-page-size-name-legal = Legal
|
||
pdfjs-document-properties-page-size-dimension-string = { $width } × { $height } { $unit } ({ $orientation })
|
||
pdfjs-document-properties-page-size-dimension-name-string = { $width } × { $height } { $unit } ({ $name }, { $orientation })
|
||
pdfjs-document-properties-linearized = Fast Web View:
|
||
pdfjs-document-properties-linearized-yes = Yes
|
||
pdfjs-document-properties-linearized-no = No
|
||
pdfjs-document-properties-close-button = Close
|
||
pdfjs-print-progress-message = Preparing document for printing…
|
||
pdfjs-print-progress-percent = { $progress }%
|
||
pdfjs-print-progress-close-button = Cancel
|
||
pdfjs-printing-not-supported = Warning: Printing is not fully supported by this browser.
|
||
pdfjs-printing-not-ready = Warning: The PDF is not fully loaded for printing.
|
||
pdfjs-toggle-sidebar-button =
|
||
.title = Toggle Sidebar
|
||
pdfjs-toggle-sidebar-notification-button =
|
||
.title = Toggle Sidebar (document contains outline/attachments/layers)
|
||
pdfjs-toggle-sidebar-button-label = Toggle Sidebar
|
||
pdfjs-document-outline-button =
|
||
.title = Show Document Outline (double-click to expand/collapse all items)
|
||
pdfjs-document-outline-button-label = Document Outline
|
||
pdfjs-attachments-button =
|
||
.title = Show Attachments
|
||
pdfjs-attachments-button-label = Attachments
|
||
pdfjs-layers-button =
|
||
.title = Show Layers (double-click to reset all layers to the default state)
|
||
pdfjs-layers-button-label = Layers
|
||
pdfjs-thumbs-button =
|
||
.title = Show Thumbnails
|
||
pdfjs-thumbs-button-label = Thumbnails
|
||
pdfjs-current-outline-item-button =
|
||
.title = Find Current Outline Item
|
||
pdfjs-current-outline-item-button-label = Current Outline Item
|
||
pdfjs-findbar-button =
|
||
.title = Find in Document
|
||
pdfjs-findbar-button-label = Find
|
||
pdfjs-additional-layers = Additional Layers
|
||
pdfjs-thumb-page-title =
|
||
.title = Page { $page }
|
||
pdfjs-thumb-page-canvas =
|
||
.aria-label = Thumbnail of Page { $page }
|
||
pdfjs-find-input =
|
||
.title = Find
|
||
.placeholder = Find in document…
|
||
pdfjs-find-previous-button =
|
||
.title = Find the previous occurrence of the phrase
|
||
pdfjs-find-previous-button-label = Previous
|
||
pdfjs-find-next-button =
|
||
.title = Find the next occurrence of the phrase
|
||
pdfjs-find-next-button-label = Next
|
||
pdfjs-find-highlight-checkbox = Highlight All
|
||
pdfjs-find-match-case-checkbox-label = Match Case
|
||
pdfjs-find-match-diacritics-checkbox-label = Match Diacritics
|
||
pdfjs-find-entire-word-checkbox-label = Whole Words
|
||
pdfjs-find-reached-top = Reached top of document, continued from bottom
|
||
pdfjs-find-reached-bottom = Reached end of document, continued from top
|
||
pdfjs-find-match-count =
|
||
{ $total ->
|
||
[one] { $current } of { $total } match
|
||
*[other] { $current } of { $total } matches
|
||
}
|
||
pdfjs-find-match-count-limit =
|
||
{ $limit ->
|
||
[one] More than { $limit } match
|
||
*[other] More than { $limit } matches
|
||
}
|
||
pdfjs-find-not-found = Phrase not found
|
||
pdfjs-page-scale-width = Page Width
|
||
pdfjs-page-scale-fit = Page Fit
|
||
pdfjs-page-scale-auto = Automatic Zoom
|
||
pdfjs-page-scale-actual = Actual Size
|
||
pdfjs-page-scale-percent = { $scale }%
|
||
pdfjs-page-landmark =
|
||
.aria-label = Page { $page }
|
||
pdfjs-loading-error = An error occurred while loading the PDF.
|
||
pdfjs-invalid-file-error = Invalid or corrupted PDF file.
|
||
pdfjs-missing-file-error = Missing PDF file.
|
||
pdfjs-unexpected-response-error = Unexpected server response.
|
||
pdfjs-rendering-error = An error occurred while rendering the page.
|
||
pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
|
||
pdfjs-text-annotation-type =
|
||
.alt = [{ $type } Annotation]
|
||
pdfjs-password-label = Enter the password to open this PDF file.
|
||
pdfjs-password-invalid = Invalid password. Please try again.
|
||
pdfjs-password-ok-button = OK
|
||
pdfjs-password-cancel-button = Cancel
|
||
pdfjs-web-fonts-disabled = Web fonts are disabled: unable to use embedded PDF fonts.
|
||
pdfjs-editor-free-text-button =
|
||
.title = Text
|
||
pdfjs-editor-free-text-button-label = Text
|
||
pdfjs-editor-ink-button =
|
||
.title = Draw
|
||
pdfjs-editor-ink-button-label = Draw
|
||
pdfjs-editor-stamp-button =
|
||
.title = Add or edit images
|
||
pdfjs-editor-stamp-button-label = Add or edit images
|
||
pdfjs-editor-highlight-button =
|
||
.title = Highlight
|
||
pdfjs-editor-highlight-button-label = Highlight
|
||
pdfjs-highlight-floating-button1 =
|
||
.title = Highlight
|
||
.aria-label = Highlight
|
||
pdfjs-highlight-floating-button-label = Highlight
|
||
pdfjs-editor-remove-ink-button =
|
||
.title = Remove drawing
|
||
pdfjs-editor-remove-freetext-button =
|
||
.title = Remove text
|
||
pdfjs-editor-remove-stamp-button =
|
||
.title = Remove image
|
||
pdfjs-editor-remove-highlight-button =
|
||
.title = Remove highlight
|
||
pdfjs-editor-free-text-color-input = Color
|
||
pdfjs-editor-free-text-size-input = Size
|
||
pdfjs-editor-ink-color-input = Color
|
||
pdfjs-editor-ink-thickness-input = Thickness
|
||
pdfjs-editor-ink-opacity-input = Opacity
|
||
pdfjs-editor-stamp-add-image-button =
|
||
.title = Add image
|
||
pdfjs-editor-stamp-add-image-button-label = Add image
|
||
pdfjs-editor-free-highlight-thickness-input = Thickness
|
||
pdfjs-editor-free-highlight-thickness-title =
|
||
.title = Change thickness when highlighting items other than text
|
||
pdfjs-free-text =
|
||
.aria-label = Text Editor
|
||
pdfjs-free-text-default-content = Start typing…
|
||
pdfjs-ink =
|
||
.aria-label = Draw Editor
|
||
pdfjs-ink-canvas =
|
||
.aria-label = User-created image
|
||
pdfjs-editor-alt-text-button-label = Alt text
|
||
pdfjs-editor-alt-text-edit-button-label = Edit alt text
|
||
pdfjs-editor-alt-text-dialog-label = Choose an option
|
||
pdfjs-editor-alt-text-dialog-description = Alt text (alternative text) helps when people can’t see the image or when it doesn’t load.
|
||
pdfjs-editor-alt-text-add-description-label = Add a description
|
||
pdfjs-editor-alt-text-add-description-description = Aim for 1-2 sentences that describe the subject, setting, or actions.
|
||
pdfjs-editor-alt-text-mark-decorative-label = Mark as decorative
|
||
pdfjs-editor-alt-text-mark-decorative-description = This is used for ornamental images, like borders or watermarks.
|
||
pdfjs-editor-alt-text-cancel-button = Cancel
|
||
pdfjs-editor-alt-text-save-button = Save
|
||
pdfjs-editor-alt-text-decorative-tooltip = Marked as decorative
|
||
pdfjs-editor-alt-text-textarea =
|
||
.placeholder = For example, “A young man sits down at a table to eat a meal”
|
||
pdfjs-editor-resizer-top-left =
|
||
.aria-label = Top left corner — resize
|
||
pdfjs-editor-resizer-top-middle =
|
||
.aria-label = Top middle — resize
|
||
pdfjs-editor-resizer-top-right =
|
||
.aria-label = Top right corner — resize
|
||
pdfjs-editor-resizer-middle-right =
|
||
.aria-label = Middle right — resize
|
||
pdfjs-editor-resizer-bottom-right =
|
||
.aria-label = Bottom right corner — resize
|
||
pdfjs-editor-resizer-bottom-middle =
|
||
.aria-label = Bottom middle — resize
|
||
pdfjs-editor-resizer-bottom-left =
|
||
.aria-label = Bottom left corner — resize
|
||
pdfjs-editor-resizer-middle-left =
|
||
.aria-label = Middle left — resize
|
||
pdfjs-editor-highlight-colorpicker-label = Highlight color
|
||
pdfjs-editor-colorpicker-button =
|
||
.title = Change color
|
||
pdfjs-editor-colorpicker-dropdown =
|
||
.aria-label = Color choices
|
||
pdfjs-editor-colorpicker-yellow =
|
||
.title = Yellow
|
||
pdfjs-editor-colorpicker-green =
|
||
.title = Green
|
||
pdfjs-editor-colorpicker-blue =
|
||
.title = Blue
|
||
pdfjs-editor-colorpicker-pink =
|
||
.title = Pink
|
||
pdfjs-editor-colorpicker-red =
|
||
.title = Red
|
||
pdfjs-editor-highlight-show-all-button-label = Show all
|
||
pdfjs-editor-highlight-show-all-button =
|
||
.title = Show all
|
||
pdfjs-editor-new-alt-text-dialog-edit-label = Edit alt text (image description)
|
||
pdfjs-editor-new-alt-text-dialog-add-label = Add alt text (image description)
|
||
pdfjs-editor-new-alt-text-textarea =
|
||
.placeholder = Write your description here…
|
||
pdfjs-editor-new-alt-text-description = Short description for people who can’t see the image or when the image doesn’t load.
|
||
pdfjs-editor-new-alt-text-disclaimer1 = This alt text was created automatically and may be inaccurate.
|
||
pdfjs-editor-new-alt-text-disclaimer-learn-more-url = Learn more
|
||
pdfjs-editor-new-alt-text-create-automatically-button-label = Create alt text automatically
|
||
pdfjs-editor-new-alt-text-not-now-button = Not now
|
||
pdfjs-editor-new-alt-text-error-title = Couldn’t create alt text automatically
|
||
pdfjs-editor-new-alt-text-error-description = Please write your own alt text or try again later.
|
||
pdfjs-editor-new-alt-text-error-close-button = Close
|
||
pdfjs-editor-new-alt-text-ai-model-downloading-progress = Downloading alt text AI model ({ $downloadedSize } of { $totalSize } MB)
|
||
.aria-valuetext = Downloading alt text AI model ({ $downloadedSize } of { $totalSize } MB)
|
||
pdfjs-editor-new-alt-text-added-button-label = Alt text added
|
||
pdfjs-editor-new-alt-text-missing-button-label = Missing alt text
|
||
pdfjs-editor-new-alt-text-to-review-button-label = Review alt text
|
||
pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer = Created automatically: { $generatedAltText }
|
||
pdfjs-image-alt-text-settings-button =
|
||
.title = Image alt text settings
|
||
pdfjs-image-alt-text-settings-button-label = Image alt text settings
|
||
pdfjs-editor-alt-text-settings-dialog-label = Image alt text settings
|
||
pdfjs-editor-alt-text-settings-automatic-title = Automatic alt text
|
||
pdfjs-editor-alt-text-settings-create-model-button-label = Create alt text automatically
|
||
pdfjs-editor-alt-text-settings-create-model-description = Suggests descriptions to help people who can’t see the image or when the image doesn’t load.
|
||
pdfjs-editor-alt-text-settings-download-model-label = Alt text AI model ({ $totalSize } MB)
|
||
pdfjs-editor-alt-text-settings-ai-model-description = Runs locally on your device so your data stays private. Required for automatic alt text.
|
||
pdfjs-editor-alt-text-settings-delete-model-button = Delete
|
||
pdfjs-editor-alt-text-settings-download-model-button = Download
|
||
pdfjs-editor-alt-text-settings-downloading-model-button = Downloading…
|
||
pdfjs-editor-alt-text-settings-editor-title = Alt text editor
|
||
pdfjs-editor-alt-text-settings-show-dialog-button-label = Show alt text editor right away when adding an image
|
||
pdfjs-editor-alt-text-settings-show-dialog-description = Helps you make sure all your images have alt text.
|
||
pdfjs-editor-alt-text-settings-close-button = Close`)})},e(Vm,zZ);let sV=Vm;const cG=1e3,QG=50,aG=1e3;function Ji(){return document.location.hash}var xt,al,nZ,vW,qn,IQ,HW,Gi,HN,PN,Ti,sm,im;class WG{constructor({linkService:l,eventBus:d}){e(this,al),e(this,xt,null),this.linkService=l,this.eventBus=d,this._initialized=!1,this._fingerprint="",this.reset(),this.eventBus._on("pagesinit",()=>{this._isPagesLoaded=!1,this.eventBus._on("pagesloaded",Z=>{this._isPagesLoaded=!!Z.pagesCount},{once:!0})})}initialize({fingerprint:l,resetHistory:d=!1,updateUrl:Z=!1}){if(!l||typeof l!="string"){console.error('PDFHistory.initialize: The "fingerprint" must be a non-empty string.');return}this._initialized&&this.reset();const t=this._fingerprint!==""&&this._fingerprint!==l;this._fingerprint=l,this._updateUrl=Z===!0,this._initialized=!0,N(this,al,sm).call(this);const F=window.history.state;if(this._popStateInProgress=!1,this._blockHashChange=0,this._currentHash=Ji(),this._numPositionUpdates=0,this._uid=this._maxUid=0,this._destination=null,this._position=null,!N(this,al,IQ).call(this,F,!0)||d){const{hash:a,page:W,rotation:n}=N(this,al,Gi).call(this,!0);if(!a||t||d){N(this,al,nZ).call(this,null,!0);return}N(this,al,nZ).call(this,{hash:a,page:W,rotation:n},!0);return}const c=F.destination;N(this,al,HW).call(this,c,F.uid,!0),c.rotation!==void 0&&(this._initialRotation=c.rotation),c.dest?(this._initialBookmark=JSON.stringify(c.dest),this._destination.page=null):c.hash?this._initialBookmark=c.hash:c.page&&(this._initialBookmark=`page=${c.page}`)}reset(){this._initialized&&(N(this,al,Ti).call(this),this._initialized=!1,N(this,al,im).call(this)),this._updateViewareaTimeout&&(clearTimeout(this._updateViewareaTimeout),this._updateViewareaTimeout=null),this._initialBookmark=null,this._initialRotation=null}push({namedDest:l=null,explicitDest:d,pageNumber:Z}){if(!this._initialized)return;if(l&&typeof l!="string"){console.error(`PDFHistory.push: "${l}" is not a valid namedDest parameter.`);return}else if(Array.isArray(d)){if(!N(this,al,qn).call(this,Z)&&(Z!==null||this._destination)){console.error(`PDFHistory.push: "${Z}" is not a valid pageNumber parameter.`);return}}else{console.error(`PDFHistory.push: "${d}" is not a valid explicitDest parameter.`);return}const t=l||JSON.stringify(d);if(!t)return;let F=!1;if(this._destination&&(nG(this._destination.hash,t)||VG(this._destination.dest,d))){if(this._destination.page)return;F=!0}this._popStateInProgress&&!F||(N(this,al,nZ).call(this,{dest:d,hash:t,page:Z,rotation:this.linkService.rotation},F),this._popStateInProgress||(this._popStateInProgress=!0,Promise.resolve().then(()=>{this._popStateInProgress=!1})))}pushPage(l){var d;if(this._initialized){if(!N(this,al,qn).call(this,l)){console.error(`PDFHistory.pushPage: "${l}" is not a valid page number.`);return}((d=this._destination)==null?void 0:d.page)!==l&&(this._popStateInProgress||(N(this,al,nZ).call(this,{dest:null,hash:`page=${l}`,page:l,rotation:this.linkService.rotation}),this._popStateInProgress||(this._popStateInProgress=!0,Promise.resolve().then(()=>{this._popStateInProgress=!1}))))}}pushCurrentPosition(){!this._initialized||this._popStateInProgress||N(this,al,vW).call(this)}back(){if(!this._initialized||this._popStateInProgress)return;const l=window.history.state;N(this,al,IQ).call(this,l)&&l.uid>0&&window.history.back()}forward(){if(!this._initialized||this._popStateInProgress)return;const l=window.history.state;N(this,al,IQ).call(this,l)&&l.uid<this._maxUid&&window.history.forward()}get popStateInProgress(){return this._initialized&&(this._popStateInProgress||this._blockHashChange>0)}get initialBookmark(){return this._initialized?this._initialBookmark:null}get initialRotation(){return this._initialized?this._initialRotation:null}}xt=new WeakMap,al=new WeakSet,nZ=function(U,l=!1){const d=l||!this._destination,Z={fingerprint:this._fingerprint,uid:d?this._uid:this._uid+1,destination:U};N(this,al,HW).call(this,U,Z.uid);let t;if(this._updateUrl&&U!=null&&U.hash){const F=document.location.href.split("#",1)[0];F.startsWith("file://")||(t=`${F}#${U.hash}`)}d?window.history.replaceState(Z,"",t):window.history.pushState(Z,"",t)},vW=function(U=!1){if(!this._position)return;let l=this._position;if(U&&(l=Object.assign(Object.create(null),this._position),l.temporary=!0),!this._destination){N(this,al,nZ).call(this,l);return}if(this._destination.temporary){N(this,al,nZ).call(this,l,!0);return}if(this._destination.hash===l.hash||!this._destination.page&&this._numPositionUpdates<=QG)return;let d=!1;if(this._destination.page>=l.first&&this._destination.page<=l.page){if(this._destination.dest!==void 0||!this._destination.first)return;d=!0}N(this,al,nZ).call(this,l,d)},qn=function(U){return Number.isInteger(U)&&U>0&&U<=this.linkService.pagesCount},IQ=function(U,l=!1){if(!U)return!1;if(U.fingerprint!==this._fingerprint)if(l){if(typeof U.fingerprint!="string"||U.fingerprint.length!==this._fingerprint.length)return!1;const[d]=performance.getEntriesByType("navigation");if((d==null?void 0:d.type)!=="reload")return!1}else return!1;return!(!Number.isInteger(U.uid)||U.uid<0||U.destination===null||typeof U.destination!="object")},HW=function(U,l,d=!1){this._updateViewareaTimeout&&(clearTimeout(this._updateViewareaTimeout),this._updateViewareaTimeout=null),d&&U!=null&&U.temporary&&delete U.temporary,this._destination=U,this._uid=l,this._maxUid=Math.max(this._maxUid,l),this._numPositionUpdates=0},Gi=function(U=!1){const l=unescape(Ji()).substring(1),d=nV(l),Z=d.get("nameddest")||"";let t=d.get("page")|0;return(!N(this,al,qn).call(this,t)||U&&Z.length>0)&&(t=null),{hash:l,page:t,rotation:this.linkService.rotation}},HN=function({location:U}){this._updateViewareaTimeout&&(clearTimeout(this._updateViewareaTimeout),this._updateViewareaTimeout=null),this._position={hash:U.pdfOpenParams.substring(1),page:this.linkService.page,first:U.pageNumber,rotation:U.rotation},!this._popStateInProgress&&(this._isPagesLoaded&&this._destination&&!this._destination.page&&this._numPositionUpdates++,this._updateViewareaTimeout=setTimeout(()=>{this._popStateInProgress||N(this,al,vW).call(this,!0),this._updateViewareaTimeout=null},aG))},PN=function({state:U}){const l=Ji(),d=this._currentHash!==l;if(this._currentHash=l,!U){this._uid++;const{hash:t,page:F,rotation:c}=N(this,al,Gi).call(this);N(this,al,nZ).call(this,{hash:t,page:F,rotation:c},!0);return}if(!N(this,al,IQ).call(this,U))return;this._popStateInProgress=!0,d&&(this._blockHashChange++,sJ({target:window,name:"hashchange",delay:cG}).then(()=>{this._blockHashChange--}));const Z=U.destination;N(this,al,HW).call(this,Z,U.uid,!0),Kb(Z.rotation)&&(this.linkService.rotation=Z.rotation),Z.dest?this.linkService.goToDestination(Z.dest):Z.hash?this.linkService.setHash(Z.hash):Z.page&&(this.linkService.page=Z.page),Promise.resolve().then(()=>{this._popStateInProgress=!1})},Ti=function(){(!this._destination||this._destination.temporary)&&N(this,al,vW).call(this)},sm=function(){if(Q(this,xt))return;b(this,xt,new AbortController);const{signal:U}=Q(this,xt);this.eventBus._on("updateviewarea",N(this,al,HN).bind(this),{signal:U}),window.addEventListener("popstate",N(this,al,PN).bind(this),{signal:U}),window.addEventListener("pagehide",N(this,al,Ti).bind(this),{signal:U})},im=function(){var U;(U=Q(this,xt))==null||U.abort(),b(this,xt,null)};function nG(U,l){return typeof U!="string"||typeof l!="string"?!1:U===l||nV(U).get("nameddest")===l}function VG(U,l){function d(Z,t){if(typeof Z!=typeof t||Array.isArray(Z)||Array.isArray(t))return!1;if(Z!==null&&typeof Z=="object"&&t!==null){if(Object.keys(Z).length!==Object.keys(t).length)return!1;for(const F in Z)if(!d(Z[F],t[F]))return!1;return!0}return Z===t||Number.isNaN(Z)&&Number.isNaN(t)}if(!(Array.isArray(U)&&Array.isArray(l))||U.length!==l.length)return!1;for(let Z=0,t=U.length;Z<t;Z++)if(!d(U[Z],l[Z]))return!1;return!0}var PW,fW,AW,_W,qW,aQ;class sG{constructor(l){e(this,PW,null),e(this,fW,null),e(this,AW,null),e(this,_W,null),e(this,qW,null),e(this,aQ),this.pdfPage=l.pdfPage,this.accessibilityManager=l.accessibilityManager,this.l10n=l.l10n,this.l10n||(this.l10n=new sV),this.annotationEditorLayer=null,this.div=null,this._cancelled=!1,b(this,aQ,l.uiManager),b(this,PW,l.annotationLayer||null),b(this,qW,l.textLayer||null),b(this,fW,l.drawLayer||null),b(this,AW,l.onAppend||null),b(this,_W,l.structTreeLayer||null)}render(l,d="display"){return z(this,null,function*(){var Z;if(d!=="display"||this._cancelled)return;const t=l.clone({dontFlip:!0});if(this.div){this.annotationEditorLayer.update({viewport:t}),this.show();return}const F=this.div=document.createElement("div");F.className="annotationEditorLayer",F.hidden=!0,F.dir=Q(this,aQ).direction,(Z=Q(this,AW))==null||Z.call(this,F),this.annotationEditorLayer=new lJ({uiManager:Q(this,aQ),div:F,structTreeLayer:Q(this,_W),accessibilityManager:this.accessibilityManager,pageIndex:this.pdfPage.pageNumber-1,l10n:this.l10n,viewport:t,annotationLayer:Q(this,PW),textLayer:Q(this,qW),drawLayer:Q(this,fW)});const c={viewport:t,div:F,annotations:null,intent:d};this.annotationEditorLayer.render(c),this.show()})}cancel(){this._cancelled=!0,this.div&&this.annotationEditorLayer.destroy()}hide(){this.div&&(this.div.hidden=!0)}show(){!this.div||this.annotationEditorLayer.isInvisible||(this.div.hidden=!1)}}PW=new WeakMap,fW=new WeakMap,AW=new WeakMap,_W=new WeakMap,qW=new WeakMap,aQ=new WeakMap;{var Si=new Map;const U=navigator.userAgent||"",l=navigator.platform||"",d=navigator.maxTouchPoints||1,Z=/Android/.test(U),t=/\b(iPad|iPhone|iPod)(?=;)/.test(U)||l==="MacIntel"&&d>1;(function(){(t||Z)&&Si.set("maxCanvasPixels",5242880)})(),function(){Z&&Si.set("useSystemFonts",!1)}()}const L={BROWSER:1,VIEWER:2,API:4,WORKER:8,EVENT_DISPATCH:16,PREFERENCE:128},Xi={BOOLEAN:1,NUMBER:2,OBJECT:4,STRING:8,UNDEFINED:16},BU={allowedGlobalEvents:{value:null,kind:L.BROWSER},canvasMaxAreaInBytes:{value:-1,kind:L.BROWSER+L.API},isInAutomation:{value:!1,kind:L.BROWSER},localeProperties:{value:{lang:navigator.language||"en-US"},kind:L.BROWSER},nimbusDataStr:{value:"",kind:L.BROWSER},supportsCaretBrowsingMode:{value:!1,kind:L.BROWSER},supportsDocumentFonts:{value:!0,kind:L.BROWSER},supportsIntegratedFind:{value:!1,kind:L.BROWSER},supportsMouseWheelZoomCtrlKey:{value:!0,kind:L.BROWSER},supportsMouseWheelZoomMetaKey:{value:!0,kind:L.BROWSER},supportsPinchToZoom:{value:!0,kind:L.BROWSER},toolbarDensity:{value:0,kind:L.BROWSER+L.EVENT_DISPATCH},altTextLearnMoreUrl:{value:"",kind:L.VIEWER+L.PREFERENCE},annotationEditorMode:{value:0,kind:L.VIEWER+L.PREFERENCE},annotationMode:{value:2,kind:L.VIEWER+L.PREFERENCE},cursorToolOnLoad:{value:0,kind:L.VIEWER+L.PREFERENCE},debuggerSrc:{value:"./debugger.mjs",kind:L.VIEWER},defaultZoomDelay:{value:400,kind:L.VIEWER+L.PREFERENCE},defaultZoomValue:{value:"",kind:L.VIEWER+L.PREFERENCE},disableHistory:{value:!1,kind:L.VIEWER},disablePageLabels:{value:!1,kind:L.VIEWER+L.PREFERENCE},enableAltText:{value:!1,kind:L.VIEWER+L.PREFERENCE},enableAltTextModelDownload:{value:!0,kind:L.VIEWER+L.PREFERENCE+L.EVENT_DISPATCH},enableGuessAltText:{value:!0,kind:L.VIEWER+L.PREFERENCE+L.EVENT_DISPATCH},enableHighlightFloatingButton:{value:!1,kind:L.VIEWER+L.PREFERENCE},enableNewAltTextWhenAddingImage:{value:!0,kind:L.VIEWER+L.PREFERENCE},enablePermissions:{value:!1,kind:L.VIEWER+L.PREFERENCE},enablePrintAutoRotate:{value:!0,kind:L.VIEWER+L.PREFERENCE},enableScripting:{value:!0,kind:L.VIEWER+L.PREFERENCE},enableUpdatedAddImage:{value:!1,kind:L.VIEWER+L.PREFERENCE},externalLinkRel:{value:"noopener noreferrer nofollow",kind:L.VIEWER},externalLinkTarget:{value:0,kind:L.VIEWER+L.PREFERENCE},highlightEditorColors:{value:"yellow=#FFFF98,green=#53FFBC,blue=#80EBFF,pink=#FFCBE6,red=#FF4F5F",kind:L.VIEWER+L.PREFERENCE},historyUpdateUrl:{value:!1,kind:L.VIEWER+L.PREFERENCE},ignoreDestinationZoom:{value:!1,kind:L.VIEWER+L.PREFERENCE},imageResourcesPath:{value:"./images/",kind:L.VIEWER},maxCanvasPixels:{value:iF(2,25),kind:L.VIEWER},forcePageColors:{value:!1,kind:L.VIEWER+L.PREFERENCE},pageColorsBackground:{value:"Canvas",kind:L.VIEWER+L.PREFERENCE},pageColorsForeground:{value:"CanvasText",kind:L.VIEWER+L.PREFERENCE},pdfBugEnabled:{value:!1,kind:L.VIEWER+L.PREFERENCE},printResolution:{value:150,kind:L.VIEWER},sidebarViewOnLoad:{value:-1,kind:L.VIEWER+L.PREFERENCE},scrollModeOnLoad:{value:-1,kind:L.VIEWER+L.PREFERENCE},spreadModeOnLoad:{value:-1,kind:L.VIEWER+L.PREFERENCE},textLayerMode:{value:1,kind:L.VIEWER+L.PREFERENCE},viewOnLoad:{value:0,kind:L.VIEWER+L.PREFERENCE},cMapPacked:{value:!0,kind:L.API},cMapUrl:{value:"../web/cmaps/",kind:L.API},disableAutoFetch:{value:!1,kind:L.API+L.PREFERENCE},disableFontFace:{value:!1,kind:L.API+L.PREFERENCE},disableRange:{value:!1,kind:L.API+L.PREFERENCE},disableStream:{value:!1,kind:L.API+L.PREFERENCE},docBaseUrl:{value:"",kind:L.API},enableHWA:{value:!0,kind:L.API+L.VIEWER+L.PREFERENCE},enableXfa:{value:!0,kind:L.API+L.PREFERENCE},fontExtraProperties:{value:!1,kind:L.API},isEvalSupported:{value:!0,kind:L.API},isOffscreenCanvasSupported:{value:!0,kind:L.API},maxImageSize:{value:-1,kind:L.API},pdfBug:{value:!1,kind:L.API},standardFontDataUrl:{value:"../web/standard_fonts/",kind:L.API},useSystemFonts:{value:void 0,kind:L.API,type:Xi.BOOLEAN+Xi.UNDEFINED},verbosity:{value:1,kind:L.API},workerPort:{value:null,kind:L.WORKER},workerSrc:{value:"../build/pdf.worker.mjs",kind:L.WORKER}};BU.defaultUrl={value:"compressed.tracemonkey-pldi-09.pdf",kind:L.VIEWER},BU.sandboxBundleSrc={value:"../build/pdf.sandbox.mjs",kind:L.VIEWER},BU.viewerCssTheme={value:0,kind:L.VIEWER+L.PREFERENCE},BU.enableFakeMLManager={value:!0,kind:L.VIEWER};BU.disablePreferences={value:!1,kind:L.VIEWER};var tF;const PU=class{static get(l){return Q(this,tF).get(l)}static getAll(l=null,d=!1){const Z=Object.create(null);for(const t in BU){const F=BU[t];l&&!(l&F.kind)||(Z[t]=d?F.value:Q(this,tF).get(t))}return Z}static set(l,d){this.setAll({[l]:d})}static setAll(l,d=!1){this._hasInvokedSet||(this._hasInvokedSet=!0);let Z;for(const t in l){const F=BU[t],c=l[t];if(!F||!(typeof c==typeof F.value||Xi[(typeof c).toUpperCase()]&F.type))continue;const{kind:a}=F;d&&!(a&L.BROWSER||a&L.PREFERENCE)||(this.eventBus&&a&L.EVENT_DISPATCH&&(Z||(Z=new Map)).set(t,c),Q(this,tF).set(t,c))}if(Z)for(const[t,F]of Z)this.eventBus.dispatch(t.toLowerCase(),{source:this,value:F})}};tF=new WeakMap,f(PU,"eventBus"),e(PU,tF,new Map),(()=>{for(const U in BU)Q(PU,tF).set(U,BU[U].value);for(const[U,l]of Si)Q(PU,tF).set(U,l);PU._hasInvokedSet=!1,PU._checkDisablePreferences=()=>PU.get("disablePreferences")?!0:(PU._hasInvokedSet&&console.warn('The Preferences may override manually set AppOptions; please use the "disablePreferences"-option to prevent that.'),!1)})();let iG=PU;var fU;class RG{constructor(l){e(this,fU,null),this.pageIndex=l.pageIndex}render(l="display"){return z(this,null,function*(){l!=="display"||Q(this,fU)||this._cancelled||b(this,fU,new tJ({pageIndex:this.pageIndex}))})}cancel(){this._cancelled=!0,Q(this,fU)&&(Q(this,fU).destroy(),b(this,fU,null))}setParent(l){var d;(d=Q(this,fU))==null||d.setParent(l)}getDrawLayer(){return Q(this,fU)}}fU=new WeakMap;const fN={Document:null,DocumentFragment:null,Part:"group",Sect:"group",Div:"group",Aside:"note",NonStruct:"none",P:null,H:"heading",Title:null,FENote:"note",Sub:"group",Lbl:null,Span:null,Em:null,Strong:null,Link:"link",Annot:"note",Form:"form",Ruby:null,RB:null,RT:null,RP:null,Warichu:null,WT:null,WP:null,L:"list",LI:"listitem",LBody:null,Table:"table",TR:"row",TH:"columnheader",TD:"cell",THead:"columnheader",TBody:null,TFoot:null,Caption:null,Figure:"figure",Formula:null,Artifact:null},NG=/^H(\d+)$/;var WQ,bU,nQ,DQ,EQ,vZ,At,Ns,AN,Yi;class Rm{constructor(l,d){e(this,At),e(this,WQ),e(this,bU,null),e(this,nQ),e(this,DQ,new Map),e(this,EQ),e(this,vZ,null),b(this,WQ,l.getStructTree()),b(this,EQ,d)}render(){return z(this,null,function*(){var l;if(Q(this,nQ))return Q(this,nQ);const{promise:d,resolve:Z,reject:t}=Promise.withResolvers();b(this,nQ,d);try{b(this,bU,N(this,At,Yi).call(this,yield Q(this,WQ)))}catch(F){t(F)}return b(this,WQ,null),(l=Q(this,bU))==null||l.classList.add("structTree"),Z(Q(this,bU)),d})}getAriaAttributes(l){return z(this,null,function*(){return yield this.render(),Q(this,DQ).get(l)})}hide(){Q(this,bU)&&!Q(this,bU).hidden&&(Q(this,bU).hidden=!0)}show(){var l;(l=Q(this,bU))!=null&&l.hidden&&(Q(this,bU).hidden=!1)}addElementsToTextLayer(){var l;if(Q(this,vZ)){for(const[d,Z]of Q(this,vZ))(l=document.getElementById(d))==null||l.append(Z);Q(this,vZ).clear(),b(this,vZ,null)}}}WQ=new WeakMap,bU=new WeakMap,nQ=new WeakMap,DQ=new WeakMap,EQ=new WeakMap,vZ=new WeakMap,At=new WeakSet,Ns=function(U,l){const{alt:d,id:Z,lang:t}=U;if(d!==void 0){let F=!1;const c=kQ(d);for(const a of U.children)if(a.type==="annotation"){let W=Q(this,DQ).get(a.id);W||(W=new Map,Q(this,DQ).set(a.id,W)),W.set("aria-label",c),F=!0}F||l.setAttribute("aria-label",c)}Z!==void 0&&l.setAttribute("aria-owns",Z),t!==void 0&&l.setAttribute("lang",kQ(t,!0))},AN=function(U,l){const{alt:d,bbox:Z,children:t}=U,F=t==null?void 0:t[0];if(!Q(this,EQ)||!d||!Z||(F==null?void 0:F.type)!=="content")return!1;const{id:c}=F;if(!c)return!1;l.setAttribute("aria-owns",c);const a=document.createElement("span");(Q(this,vZ)||b(this,vZ,new Map)).set(c,a),a.setAttribute("role","img"),a.setAttribute("aria-label",kQ(d));const{pageHeight:W,pageX:n,pageY:V}=Q(this,EQ),s="calc(var(--scale-factor)*",{style:i}=a;return i.width=`${s}${Z[2]-Z[0]}px)`,i.height=`${s}${Z[3]-Z[1]}px)`,i.left=`${s}${Z[0]-n}px)`,i.top=`${s}${W-Z[3]+V}px)`,!0},Yi=function(U){if(!U)return null;const l=document.createElement("span");if("role"in U){const{role:d}=U,Z=d.match(NG);if(Z?(l.setAttribute("role","heading"),l.setAttribute("aria-level",Z[1])):fN[d]&&l.setAttribute("role",fN[d]),d==="Figure"&&N(this,At,AN).call(this,U,l))return l}if(N(this,At,Ns).call(this,U,l),U.children)if(U.children.length===1&&"id"in U.children[0])N(this,At,Ns).call(this,U.children[0],l);else for(const d of U.children)l.append(N(this,At,Yi).call(this,d));return l};var BZ,dU,yZ,rt,wQ,$W,ln,pi;const Nm=class dn{constructor(){e(this,ln),e(this,BZ,!1),e(this,dU,null),e(this,yZ,new Map),e(this,rt,new Map)}setTextMapping(l){b(this,dU,l)}enable(){if(Q(this,BZ))throw new Error("TextAccessibilityManager is already enabled.");if(!Q(this,dU))throw new Error("Text divs and strings have not been set.");if(b(this,BZ,!0),b(this,dU,Q(this,dU).slice()),Q(this,dU).sort(N(dn,wQ,$W)),Q(this,yZ).size>0){const l=Q(this,dU);for(const[d,Z]of Q(this,yZ)){if(!document.getElementById(d)){Q(this,yZ).delete(d);continue}N(this,ln,pi).call(this,d,l[Z])}}for(const[l,d]of Q(this,rt))this.addPointerInTextLayer(l,d);Q(this,rt).clear()}disable(){Q(this,BZ)&&(Q(this,rt).clear(),b(this,dU,null),b(this,BZ,!1))}removePointerInTextLayer(l){if(!Q(this,BZ)){Q(this,rt).delete(l);return}const d=Q(this,dU);if(!d||d.length===0)return;const{id:Z}=l,t=Q(this,yZ).get(Z);if(t===void 0)return;const F=d[t];Q(this,yZ).delete(Z);let c=F.getAttribute("aria-owns");c!=null&&c.includes(Z)&&(c=c.split(" ").filter(a=>a!==Z).join(" "),c?F.setAttribute("aria-owns",c):(F.removeAttribute("aria-owns"),F.setAttribute("role","presentation")))}addPointerInTextLayer(l,d){const{id:Z}=l;if(!Z)return null;if(!Q(this,BZ))return Q(this,rt).set(l,d),null;d&&this.removePointerInTextLayer(l);const t=Q(this,dU);if(!t||t.length===0)return null;const F=vQ(t,n=>{var V;return N(V=dn,wQ,$W).call(V,l,n)<0}),c=Math.max(0,F-1),a=t[c];N(this,ln,pi).call(this,Z,a),Q(this,yZ).set(Z,c);const W=a.parentNode;return W!=null&&W.classList.contains("markedContent")?W.id:null}moveElementInDOM(l,d,Z,t){const F=this.addPointerInTextLayer(Z,t);if(!l.hasChildNodes())return l.append(d),F;const c=Array.from(l.childNodes).filter(n=>n!==d);if(c.length===0)return F;const a=Z||d,W=vQ(c,n=>{var V;return N(V=dn,wQ,$W).call(V,a,n)<0});return W===0?c[0].before(d):c[W-1].after(d),F}};BZ=new WeakMap,dU=new WeakMap,yZ=new WeakMap,rt=new WeakMap,wQ=new WeakSet,$W=function(U,l){const d=U.getBoundingClientRect(),Z=l.getBoundingClientRect();if(d.width===0&&d.height===0)return 1;if(Z.width===0&&Z.height===0)return-1;const t=d.y,F=d.y+d.height,c=d.y+d.height/2,a=Z.y,W=Z.y+Z.height,n=Z.y+Z.height/2;if(c<=a&&n>=F)return-1;if(n<=t&&c>=W)return 1;const V=d.x+d.width/2,s=Z.x+Z.width/2;return V-s},ln=new WeakSet,pi=function(U,l){const d=l.getAttribute("aria-owns");d!=null&&d.includes(U)||l.setAttribute("aria-owns",d?`${d} ${U}`:U),l.removeAttribute("role")},e(Nm,wQ);let hG=Nm;var jt;class bG{constructor({findController:l,eventBus:d,pageIndex:Z}){e(this,jt,null),this.findController=l,this.matches=[],this.eventBus=d,this.pageIdx=Z,this.textDivs=null,this.textContentItemsStr=null,this.enabled=!1}setTextMapping(l,d){this.textDivs=l,this.textContentItemsStr=d}enable(){if(!this.textDivs||!this.textContentItemsStr)throw new Error("Text divs and strings have not been set.");if(this.enabled)throw new Error("TextHighlighter is already enabled.");this.enabled=!0,Q(this,jt)||(b(this,jt,new AbortController),this.eventBus._on("updatetextlayermatches",l=>{(l.pageIndex===this.pageIdx||l.pageIndex===-1)&&this._updateMatches()},{signal:Q(this,jt).signal})),this._updateMatches()}disable(){var l;this.enabled&&(this.enabled=!1,(l=Q(this,jt))==null||l.abort(),b(this,jt,null),this._updateMatches(!0))}_convertMatches(l,d){if(!l)return[];const{textContentItemsStr:Z}=this;let t=0,F=0;const c=Z.length-1,a=[];for(let W=0,n=l.length;W<n;W++){let V=l[W];for(;t!==c&&V>=F+Z[t].length;)F+=Z[t].length,t++;t===Z.length&&console.error("Could not find a matching mapping");const s={begin:{divIdx:t,offset:V-F}};for(V+=d[W];t!==c&&V>F+Z[t].length;)F+=Z[t].length,t++;s.end={divIdx:t,offset:V-F},a.push(s)}return a}_renderMatches(l){if(l.length===0)return;const{findController:d,pageIdx:Z}=this,{textContentItemsStr:t,textDivs:F}=this,c=Z===d.selected.pageIdx,a=d.selected.matchIdx,W=d.state.highlightAll;let n=null;const V={divIdx:-1,offset:void 0};function s(J,T){const G=J.divIdx;return F[G].textContent="",i(G,0,J.offset,T)}function i(J,T,G,X){let Y=F[J];if(Y.nodeType===Node.TEXT_NODE){const k=document.createElement("span");Y.before(k),k.append(Y),F[J]=k,Y=k}const p=t[J].substring(T,G),o=document.createTextNode(p);if(X){const k=document.createElement("span");return k.className=`${X} appended`,k.append(o),Y.append(k),X.includes("selected")?k.offsetLeft:0}return Y.append(o),0}let R=a,h=R+1;if(W)R=0,h=l.length;else if(!c)return;let m=-1,M=-1;for(let J=R;J<h;J++){const T=l[J],G=T.begin;if(G.divIdx===m&&G.offset===M)continue;m=G.divIdx,M=G.offset;const X=T.end,Y=c&&J===a,p=Y?" selected":"";let o=0;if(!n||G.divIdx!==n.divIdx?(n!==null&&i(n.divIdx,n.offset,V.offset),s(G)):i(n.divIdx,n.offset,G.offset),G.divIdx===X.divIdx)o=i(G.divIdx,G.offset,X.offset,"highlight"+p);else{o=i(G.divIdx,G.offset,V.offset,"highlight begin"+p);for(let k=G.divIdx+1,S=X.divIdx;k<S;k++)F[k].className="highlight middle"+p;s(X,"highlight end"+p)}n=X,Y&&d.scrollMatchIntoView({element:F[G.divIdx],selectedLeft:o,pageIndex:Z,matchIndex:a})}n&&i(n.divIdx,n.offset,V.offset)}_updateMatches(l=!1){if(!this.enabled&&!l)return;const{findController:d,matches:Z,pageIdx:t}=this,{textContentItemsStr:F,textDivs:c}=this;let a=-1;for(const V of Z){const s=Math.max(a,V.begin.divIdx);for(let i=s,R=V.end.divIdx;i<=R;i++){const h=c[i];h.textContent=F[i],h.className=""}a=V.end.divIdx+1}if(!(d!=null&&d.highlightMatches)||l)return;const W=d.pageMatches[t]||null,n=d.pageMatchesLength[t]||null;this.matches=this._convertMatches(W,n),this._renderMatches(this.matches)}}jt=new WeakMap;var $n,Un,Z0,AU,Yd,Mt,ui,hm,Zn,bm,_N;const t0=class mm{constructor({pdfPage:l,highlighter:d=null,accessibilityManager:Z=null,enablePermissions:t=!1,onAppend:F=null}){e(this,ui),e(this,$n,!1),e(this,Un,null),e(this,Z0,!1),e(this,AU,null),this.pdfPage=l,this.highlighter=d,this.accessibilityManager=Z,b(this,$n,t===!0),b(this,Un,F),this.div=document.createElement("div"),this.div.tabIndex=0,this.div.className="textLayer"}render(l,d=null){return z(this,null,function*(){var Z,t,F,c,a;if(Q(this,Z0)&&Q(this,AU)){Q(this,AU).update({viewport:l,onBefore:this.hide.bind(this)}),this.show();return}this.cancel(),b(this,AU,new nJ({textContentSource:this.pdfPage.streamTextContent(d||{includeMarkedContent:!0,disableNormalization:!0}),container:this.div,viewport:l}));const{textDivs:W,textContentItemsStr:n}=Q(this,AU);(Z=this.highlighter)==null||Z.setTextMapping(W,n),(t=this.accessibilityManager)==null||t.setTextMapping(W),yield Q(this,AU).render(),b(this,Z0,!0);const V=document.createElement("div");V.className="endOfContent",this.div.append(V),N(this,ui,hm).call(this,V),(F=Q(this,Un))==null||F.call(this,this.div),(c=this.highlighter)==null||c.enable(),(a=this.accessibilityManager)==null||a.enable()})}hide(){var l;!this.div.hidden&&Q(this,Z0)&&((l=this.highlighter)==null||l.disable(),this.div.hidden=!0)}show(){var l;this.div.hidden&&Q(this,Z0)&&(this.div.hidden=!1,(l=this.highlighter)==null||l.enable())}cancel(){var l,d,Z,t;(l=Q(this,AU))==null||l.cancel(),b(this,AU,null),(d=this.highlighter)==null||d.disable(),(Z=this.accessibilityManager)==null||Z.disable(),N(t=mm,Zn,bm).call(t,this.div)}};$n=new WeakMap,Un=new WeakMap,Z0=new WeakMap,AU=new WeakMap,Yd=new WeakMap,Mt=new WeakMap,ui=new WeakSet,hm=function(U){var l;const{div:d}=this;d.addEventListener("mousedown",()=>{d.classList.add("selecting")}),d.addEventListener("copy",Z=>{if(!Q(this,$n)){const t=document.getSelection();Z.clipboardData.setData("text/plain",kQ(QJ(t.toString())))}Z.preventDefault(),Z.stopPropagation()}),Q(t0,Yd).set(d,U),N(l=t0,Zn,_N).call(l)},Zn=new WeakSet,bm=function(U){var l;Q(this,Yd).delete(U),Q(this,Yd).size===0&&((l=Q(this,Mt))==null||l.abort(),b(this,Mt,null))},_N=function(){if(Q(this,Mt))return;b(this,Mt,new AbortController);const{signal:U}=Q(this,Mt),l=(F,c)=>{c.append(F),F.style.width="",F.style.height="",c.classList.remove("selecting")};let d=!1;document.addEventListener("pointerdown",()=>{d=!0},{signal:U}),document.addEventListener("pointerup",()=>{d=!1,Q(this,Yd).forEach(l)},{signal:U}),window.addEventListener("blur",()=>{d=!1,Q(this,Yd).forEach(l)},{signal:U}),document.addEventListener("keyup",()=>{d||Q(this,Yd).forEach(l)},{signal:U});var Z,t;document.addEventListener("selectionchange",()=>{const F=document.getSelection();if(F.rangeCount===0){Q(this,Yd).forEach(l);return}const c=new Set;for(let i=0;i<F.rangeCount;i++){const R=F.getRangeAt(i);for(const h of Q(this,Yd).keys())!c.has(h)&&R.intersectsNode(h)&&c.add(h)}for(const[i,R]of Q(this,Yd))c.has(i)?i.classList.add("selecting"):l(R,i);if(Z!=null||(Z=getComputedStyle(Q(this,Yd).values().next().value).getPropertyValue("-moz-user-select")==="none"),Z)return;const a=F.getRangeAt(0),W=t&&(a.compareBoundaryPoints(Range.END_TO_END,t)===0||a.compareBoundaryPoints(Range.START_TO_END,t)===0);let n=W?a.startContainer:a.endContainer;n.nodeType===Node.TEXT_NODE&&(n=n.parentNode);const V=n.parentElement.closest(".textLayer"),s=Q(this,Yd).get(V);s&&(s.style.width=V.style.width,s.style.height=V.style.height,n.parentElement.insertBefore(s,W?n:n.nextSibling)),t=a.cloneRange()},{signal:U})},e(t0,Zn),e(t0,Yd,new Map),e(t0,Mt,null);let em=t0;class Mm{constructor({pdfPage:l,annotationStorage:d=null,linkService:Z,xfaHtml:t=null}){this.pdfPage=l,this.annotationStorage=d,this.linkService=Z,this.xfaHtml=t,this.div=null,this._cancelled=!1}render(l,d="display"){return z(this,null,function*(){if(d==="print"){const F={viewport:l.clone({dontFlip:!0}),div:this.div,xfaHtml:this.xfaHtml,annotationStorage:this.annotationStorage,linkService:this.linkService,intent:d};return this.div=document.createElement("div"),F.div=this.div,Vs.render(F)}const Z=yield this.pdfPage.getXfa();if(this._cancelled||!Z)return{textDivs:[]};const t={viewport:l.clone({dontFlip:!0}),div:this.div,xfaHtml:Z,annotationStorage:this.annotationStorage,linkService:this.linkService,intent:d};return this.div?Vs.update(t):(this.div=document.createElement("div"),t.div=this.div,Vs.render(t))})}cancel(){this._cancelled=!0}hide(){this.div&&(this.div.hidden=!0)}}const mG={annotationEditorUIManager:null,annotationStorage:null,downloadManager:null,enableScripting:!1,fieldObjectsPromise:null,findController:null,hasJSActionsPromise:null,get linkService(){return new lR}},eG=new Map([["canvasWrapper",0],["textLayer",1],["annotationLayer",2],["annotationEditorLayer",3],["xfaLayer",3]]);var F0,tn,c0,Fn,Ot,gt,cn,Qn,an,Y0,VQ,sQ,IZ,Q0,FF,Rl,p0,Wn,Tc,oi,Bi,yi,ki,Li,qN,$N,zi;class Jm{constructor(l){var a,W,n;e(this,Rl),e(this,F0,VZ.ENABLE_FORMS),e(this,tn,!1),e(this,c0,!1),e(this,Fn,!1),e(this,Ot,null),e(this,gt,null),e(this,cn,null),e(this,Qn,1),e(this,an,1),e(this,Y0,null),e(this,VQ,pl.INITIAL),e(this,sQ,oU.ENABLE),e(this,IZ,{directDrawing:!0,initialOptionalContent:!0,regularAnnotations:!0}),e(this,Q0,new WeakMap),e(this,FF,[null,null,null,null]);var d,Z;const t=l.container,F=l.defaultViewport;this.id=l.id,this.renderingId="page"+this.id,b(this,Ot,l.layerProperties||mG),this.pdfPage=null,this.pageLabel=null,this.rotation=0,this.scale=l.scale||rb,this.viewport=F,this.pdfPageRotate=F.rotation,this._optionalContentConfigPromise=l.optionalContentConfigPromise||null,b(this,sQ,(a=l.textLayerMode)!=null?a:oU.ENABLE),b(this,F0,(W=l.annotationMode)!=null?W:VZ.ENABLE_FORMS),this.imageResourcesPath=l.imageResourcesPath||"",this.maxCanvasPixels=(n=l.maxCanvasPixels)!=null?n:iG.get("maxCanvasPixels"),this.pageColors=l.pageColors||null,b(this,tn,l.enableHWA||!1),this.eventBus=l.eventBus,this.renderingQueue=l.renderingQueue,this.l10n=l.l10n,this.l10n||(this.l10n=new sV),this.renderTask=null,this.resume=null,this._isStandalone=!((d=this.renderingQueue)!=null&&d.hasViewer()),this._container=t,this._annotationCanvasMap=null,this.annotationLayer=null,this.annotationEditorLayer=null,this.textLayer=null,this.zoomLayer=null,this.xfaLayer=null,this.structTreeLayer=null,this.drawLayer=null;const c=document.createElement("div");if(c.className="page",c.setAttribute("data-page-number",this.id),c.setAttribute("role","region"),c.setAttribute("data-l10n-id","pdfjs-page-landmark"),c.setAttribute("data-l10n-args",JSON.stringify({page:this.id})),this.div=c,N(this,Rl,Wn).call(this),t==null||t.append(c),this._isStandalone){t==null||t.style.setProperty("--scale-factor",this.scale*WZ.PDF_TO_CSS_UNITS),(Z=this.pageColors)!=null&&Z.background&&(t==null||t.style.setProperty("--page-bg-color",this.pageColors.background));const{optionalContentConfigPromise:V}=l;V&&V.then(s=>{V===this._optionalContentConfigPromise&&(Q(this,IZ).initialOptionalContent=s.hasInitialVisibility)}),l.l10n||this.l10n.translate(this.div)}}get renderingState(){return Q(this,VQ)}set renderingState(l){if(l!==Q(this,VQ))switch(b(this,VQ,l),Q(this,gt)&&(clearTimeout(Q(this,gt)),b(this,gt,null)),l){case pl.PAUSED:this.div.classList.remove("loading");break;case pl.RUNNING:this.div.classList.add("loadingIcon"),b(this,gt,setTimeout(()=>{this.div.classList.add("loading"),b(this,gt,null)},0));break;case pl.INITIAL:case pl.FINISHED:this.div.classList.remove("loadingIcon","loading");break}}setPdfPage(l){var d,Z,t,F;this._isStandalone&&(((d=this.pageColors)==null?void 0:d.foreground)==="CanvasText"||((Z=this.pageColors)==null?void 0:Z.background)==="Canvas")&&((t=this._container)==null||t.style.setProperty("--hcm-highlight-filter",l.filterFactory.addHighlightHCMFilter("highlight","CanvasText","Canvas","HighlightText","Highlight")),(F=this._container)==null||F.style.setProperty("--hcm-highlight-selected-filter",l.filterFactory.addHighlightHCMFilter("highlight_selected","CanvasText","Canvas","HighlightText","Highlight"))),this.pdfPage=l,this.pdfPageRotate=l.rotate;const c=(this.rotation+this.pdfPageRotate)%360;this.viewport=l.getViewport({scale:this.scale*WZ.PDF_TO_CSS_UNITS,rotation:c}),N(this,Rl,Wn).call(this),this.reset()}destroy(){var l;this.reset(),(l=this.pdfPage)==null||l.cleanup()}hasEditableAnnotations(){var l;return!!((l=this.annotationLayer)!=null&&l.hasEditableAnnotations())}get _textHighlighter(){return fn(this,"_textHighlighter",new bG({pageIndex:this.id-1,eventBus:this.eventBus,findController:Q(this,Ot).findController}))}_resetZoomLayer(l=!1){if(!this.zoomLayer)return;const d=this.zoomLayer.firstChild;Q(this,Q0).delete(d),d.width=0,d.height=0,l&&this.zoomLayer.remove(),this.zoomLayer=null}reset({keepZoomLayer:l=!1,keepAnnotationLayer:d=!1,keepAnnotationEditorLayer:Z=!1,keepXfaLayer:t=!1,keepTextLayer:F=!1}={}){var c,a,W,n,V;this.cancelRendering({keepAnnotationLayer:d,keepAnnotationEditorLayer:Z,keepXfaLayer:t,keepTextLayer:F}),this.renderingState=pl.INITIAL;const s=this.div,i=s.childNodes,R=l&&this.zoomLayer||null,h=d&&((c=this.annotationLayer)==null?void 0:c.div)||null,m=Z&&((a=this.annotationEditorLayer)==null?void 0:a.div)||null,M=t&&((W=this.xfaLayer)==null?void 0:W.div)||null,J=F&&((n=this.textLayer)==null?void 0:n.div)||null;for(let T=i.length-1;T>=0;T--){const G=i[T];switch(G){case R:case h:case m:case M:case J:continue}G.remove();const X=Q(this,FF).indexOf(G);X>=0&&(Q(this,FF)[X]=null)}s.removeAttribute("data-loaded"),h&&this.annotationLayer.hide(),m&&this.annotationEditorLayer.hide(),M&&this.xfaLayer.hide(),J&&this.textLayer.hide(),(V=this.structTreeLayer)==null||V.hide(),R||(this.canvas&&(Q(this,Q0).delete(this.canvas),this.canvas.width=0,this.canvas.height=0,delete this.canvas),this._resetZoomLayer())}toggleEditingMode(l){this.hasEditableAnnotations()&&(b(this,Fn,l),this.reset({keepZoomLayer:!0,keepAnnotationLayer:!0,keepAnnotationEditorLayer:!0,keepXfaLayer:!0,keepTextLayer:!0}))}update({scale:l=0,rotation:d=null,optionalContentConfigPromise:Z=null,drawingDelay:t=-1}){var F;this.scale=l||this.scale,typeof d=="number"&&(this.rotation=d),Z instanceof Promise&&(this._optionalContentConfigPromise=Z,Z.then(a=>{Z===this._optionalContentConfigPromise&&(Q(this,IZ).initialOptionalContent=a.hasInitialVisibility)})),Q(this,IZ).directDrawing=!0;const c=(this.rotation+this.pdfPageRotate)%360;if(this.viewport=this.viewport.clone({scale:this.scale*WZ.PDF_TO_CSS_UNITS,rotation:c}),N(this,Rl,Wn).call(this),this._isStandalone&&((F=this._container)==null||F.style.setProperty("--scale-factor",this.viewport.scale)),this.canvas){let a=!1;if(Q(this,c0)){if(this.maxCanvasPixels===0)a=!0;else if(this.maxCanvasPixels>0){const{width:n,height:V}=this.viewport,{sx:s,sy:i}=this.outputScale;a=(Math.floor(n)*s|0)*(Math.floor(V)*i|0)>this.maxCanvasPixels}}const W=t>=0&&t<1e3;if(W||a){if(W&&!a&&this.renderingState!==pl.FINISHED&&(this.cancelRendering({keepZoomLayer:!0,keepAnnotationLayer:!0,keepAnnotationEditorLayer:!0,keepXfaLayer:!0,keepTextLayer:!0,cancelExtraDelay:t}),this.renderingState=pl.FINISHED,Q(this,IZ).directDrawing=!1),this.cssTransform({target:this.canvas,redrawAnnotationLayer:!0,redrawAnnotationEditorLayer:!0,redrawXfaLayer:!0,redrawTextLayer:!W,hideTextLayer:W}),W)return;this.eventBus.dispatch("pagerendered",{source:this,pageNumber:this.id,cssTransform:!0,timestamp:performance.now(),error:Q(this,Y0)});return}!this.zoomLayer&&!this.canvas.hidden&&(this.zoomLayer=this.canvas.parentNode,this.zoomLayer.style.position="absolute")}this.zoomLayer&&this.cssTransform({target:this.zoomLayer.firstChild}),this.reset({keepZoomLayer:!0,keepAnnotationLayer:!0,keepAnnotationEditorLayer:!0,keepXfaLayer:!0,keepTextLayer:!0})}cancelRendering({keepAnnotationLayer:l=!1,keepAnnotationEditorLayer:d=!1,keepXfaLayer:Z=!1,keepTextLayer:t=!1,cancelExtraDelay:F=0}={}){var c;this.renderTask&&(this.renderTask.cancel(F),this.renderTask=null),this.resume=null,this.textLayer&&(!t||!this.textLayer.div)&&(this.textLayer.cancel(),this.textLayer=null),this.annotationLayer&&(!l||!this.annotationLayer.div)&&(this.annotationLayer.cancel(),this.annotationLayer=null,this._annotationCanvasMap=null),this.structTreeLayer&&!this.textLayer&&(this.structTreeLayer=null),this.annotationEditorLayer&&(!d||!this.annotationEditorLayer.div)&&(this.drawLayer&&(this.drawLayer.cancel(),this.drawLayer=null),this.annotationEditorLayer.cancel(),this.annotationEditorLayer=null),this.xfaLayer&&(!Z||!this.xfaLayer.div)&&(this.xfaLayer.cancel(),this.xfaLayer=null,(c=this._textHighlighter)==null||c.disable())}cssTransform({target:l,redrawAnnotationLayer:d=!1,redrawAnnotationEditorLayer:Z=!1,redrawXfaLayer:t=!1,redrawTextLayer:F=!1,hideTextLayer:c=!1}){var a;if(!l.hasAttribute("zooming")){l.setAttribute("zooming",!0);const{style:n}=l;n.width=n.height=""}const W=Q(this,Q0).get(l);if(this.viewport!==W){const n=this.viewport.rotation-W.rotation,V=Math.abs(n);let s=1,i=1;if(V===90||V===270){const{width:R,height:h}=this.viewport;s=h/R,i=R/h}l.style.transform=`rotate(${n}deg) scale(${s}, ${i})`}d&&this.annotationLayer&&N(this,Rl,oi).call(this),Z&&this.annotationEditorLayer&&(this.drawLayer&&N(this,Rl,yi).call(this),N(this,Rl,Bi).call(this)),t&&this.xfaLayer&&N(this,Rl,ki).call(this),this.textLayer&&(c?(this.textLayer.hide(),(a=this.structTreeLayer)==null||a.hide()):F&&N(this,Rl,Li).call(this))}get width(){return this.viewport.width}get height(){return this.viewport.height}getPagePoint(l,d){return this.viewport.convertToPdfPoint(l,d)}draw(){return z(this,null,function*(){this.renderingState!==pl.INITIAL&&(console.error("Must be in new state before drawing"),this.reset());const{div:l,l10n:d,pageColors:Z,pdfPage:t,viewport:F}=this;if(!t)throw this.renderingState=pl.FINISHED,new Error("pdfPage is not loaded");this.renderingState=pl.RUNNING;const c=document.createElement("div");if(c.classList.add("canvasWrapper"),N(this,Rl,p0).call(this,c,"canvasWrapper"),!this.textLayer&&Q(this,sQ)!==oU.DISABLE&&!t.isPureXfa&&(this._accessibilityManager||(this._accessibilityManager=new hG),this.textLayer=new em({pdfPage:t,highlighter:this._textHighlighter,accessibilityManager:this._accessibilityManager,enablePermissions:Q(this,sQ)===oU.ENABLE_PERMISSIONS,onAppend:S=>{this.l10n.pause(),N(this,Rl,p0).call(this,S,"textLayer"),this.l10n.resume()}})),!this.annotationLayer&&Q(this,F0)!==VZ.DISABLE){const{annotationStorage:S,annotationEditorUIManager:B,downloadManager:y,enableScripting:D,fieldObjectsPromise:E,hasJSActionsPromise:r,linkService:w}=Q(this,Ot);this._annotationCanvasMap||(this._annotationCanvasMap=new Map),this.annotationLayer=new lm({pdfPage:t,annotationStorage:S,imageResourcesPath:this.imageResourcesPath,renderForms:Q(this,F0)===VZ.ENABLE_FORMS,linkService:w,downloadManager:y,enableScripting:D,hasJSActionsPromise:r,fieldObjectsPromise:E,annotationCanvasMap:this._annotationCanvasMap,accessibilityManager:this._accessibilityManager,annotationEditorUIManager:B,onAppend:u=>{N(this,Rl,p0).call(this,u,"annotationLayer")}})}const a=S=>{if(i==null||i(!1),this.renderingQueue&&!this.renderingQueue.isHighestPriority(this)){this.renderingState=pl.PAUSED,this.resume=()=>{this.renderingState=pl.RUNNING,S()};return}S()},{width:W,height:n}=F,V=document.createElement("canvas");V.setAttribute("role","presentation"),V.hidden=!0;const s=!!(Z!=null&&Z.background&&Z!=null&&Z.foreground);let i=S=>{(!s||S)&&(V.hidden=!1,i=null)};c.append(V),this.canvas=V;const R=V.getContext("2d",{alpha:!1,willReadFrequently:!Q(this,tn)}),h=this.outputScale=new aJ;if(this.maxCanvasPixels===0){const S=1/this.scale;h.sx*=S,h.sy*=S,b(this,c0,!0)}else if(this.maxCanvasPixels>0){const S=W*n,B=Math.sqrt(this.maxCanvasPixels/S);h.sx>B||h.sy>B?(h.sx=B,h.sy=B,b(this,c0,!0)):b(this,c0,!1)}const m=mN(h.sx),M=mN(h.sy),J=V.width=ja(Oa(W*h.sx),m[0]),T=V.height=ja(Oa(n*h.sy),M[0]),G=ja(Oa(W),m[1]),X=ja(Oa(n),M[1]);h.sx=J/G,h.sy=T/X,Q(this,Qn)!==m[1]&&(l.style.setProperty("--scale-round-x",`${m[1]}px`),b(this,Qn,m[1])),Q(this,an)!==M[1]&&(l.style.setProperty("--scale-round-y",`${M[1]}px`),b(this,an,M[1])),Q(this,Q0).set(V,F);const Y=h.scaled?[h.sx,0,0,h.sy,0,0]:null,p={canvasContext:R,transform:Y,viewport:F,annotationMode:Q(this,F0),optionalContentConfigPromise:this._optionalContentConfigPromise,annotationCanvasMap:this._annotationCanvasMap,pageColors:Z,isEditing:Q(this,Fn)},o=this.renderTask=t.render(p);o.onContinue=a;const k=o.promise.then(()=>z(this,null,function*(){var S;i==null||i(!0),yield N(this,Rl,zi).call(this,o),this.structTreeLayer||(this.structTreeLayer=new Rm(t,F.rawDims)),N(this,Rl,Li).call(this),this.annotationLayer&&(yield N(this,Rl,oi).call(this));const{annotationEditorUIManager:B}=Q(this,Ot);B&&(this.drawLayer||(this.drawLayer=new RG({pageIndex:this.id})),yield N(this,Rl,yi).call(this),this.drawLayer.setParent(c),this.annotationEditorLayer||(this.annotationEditorLayer=new sG({uiManager:B,pdfPage:t,l10n:d,structTreeLayer:this.structTreeLayer,accessibilityManager:this._accessibilityManager,annotationLayer:(S=this.annotationLayer)==null?void 0:S.annotationLayer,textLayer:this.textLayer,drawLayer:this.drawLayer.getDrawLayer(),onAppend:y=>{N(this,Rl,p0).call(this,y,"annotationEditorLayer")}})),N(this,Rl,Bi).call(this))}),S=>(S instanceof dR||i==null||i(!0),N(this,Rl,zi).call(this,o,S)));if(t.isPureXfa){if(!this.xfaLayer){const{annotationStorage:S,linkService:B}=Q(this,Ot);this.xfaLayer=new Mm({pdfPage:t,annotationStorage:S,linkService:B})}N(this,Rl,ki).call(this)}return l.setAttribute("data-loaded",!0),this.eventBus.dispatch("pagerender",{source:this,pageNumber:this.id}),k})}setPageLabel(l){var d;this.pageLabel=typeof l=="string"?l:null,this.div.setAttribute("data-l10n-args",JSON.stringify({page:(d=this.pageLabel)!=null?d:this.id})),this.pageLabel!==null?this.div.setAttribute("data-page-label",this.pageLabel):this.div.removeAttribute("data-page-label")}get thumbnailCanvas(){const{directDrawing:l,initialOptionalContent:d,regularAnnotations:Z}=Q(this,IZ);return l&&d&&Z?this.canvas:null}}F0=new WeakMap,tn=new WeakMap,c0=new WeakMap,Fn=new WeakMap,Ot=new WeakMap,gt=new WeakMap,cn=new WeakMap,Qn=new WeakMap,an=new WeakMap,Y0=new WeakMap,VQ=new WeakMap,sQ=new WeakMap,IZ=new WeakMap,Q0=new WeakMap,FF=new WeakMap,Rl=new WeakSet,p0=function(U,l){const d=eG.get(l),Z=Q(this,FF)[d];if(Q(this,FF)[d]=U,Z){Z.replaceWith(U);return}for(let t=d-1;t>=0;t--){const F=Q(this,FF)[t];if(F){F.after(U);return}}this.div.prepend(U)},Wn=function(){const{viewport:U}=this;if(this.pdfPage){if(Q(this,cn)===U.rotation)return;b(this,cn,U.rotation)}WJ(this.div,U,!0,!1)},Tc=function(U,l){this.eventBus.dispatch(U,{source:this,pageNumber:this.id,error:l})},oi=function(){return z(this,null,function*(){let U=null;try{yield this.annotationLayer.render(this.viewport,{structTreeLayer:this.structTreeLayer},"display")}catch(l){console.error(`#renderAnnotationLayer: "${l}".`),U=l}finally{N(this,Rl,Tc).call(this,"annotationlayerrendered",U)}})},Bi=function(){return z(this,null,function*(){let U=null;try{yield this.annotationEditorLayer.render(this.viewport,"display")}catch(l){console.error(`#renderAnnotationEditorLayer: "${l}".`),U=l}finally{N(this,Rl,Tc).call(this,"annotationeditorlayerrendered",U)}})},yi=function(){return z(this,null,function*(){try{yield this.drawLayer.render("display")}catch(U){console.error(`#renderDrawLayer: "${U}".`)}})},ki=function(){return z(this,null,function*(){var U;let l=null;try{const d=yield this.xfaLayer.render(this.viewport,"display");d!=null&&d.textDivs&&this._textHighlighter&&N(this,Rl,$N).call(this,d.textDivs)}catch(d){console.error(`#renderXfaLayer: "${d}".`),l=d}finally{(U=this.xfaLayer)!=null&&U.div&&(this.l10n.pause(),N(this,Rl,p0).call(this,this.xfaLayer.div,"xfaLayer"),this.l10n.resume()),N(this,Rl,Tc).call(this,"xfalayerrendered",l)}})},Li=function(){return z(this,null,function*(){if(!this.textLayer)return;let U=null;try{yield this.textLayer.render(this.viewport)}catch(l){if(l instanceof $M)return;console.error(`#renderTextLayer: "${l}".`),U=l}N(this,Rl,Tc).call(this,"textlayerrendered",U),N(this,Rl,qN).call(this)})},qN=function(){return z(this,null,function*(){var U,l,d;if(!this.textLayer)return;const Z=yield(U=this.structTreeLayer)==null?void 0:U.render();Z&&(this.l10n.pause(),(l=this.structTreeLayer)==null||l.addElementsToTextLayer(),this.canvas&&Z.parentNode!==this.canvas&&this.canvas.append(Z),this.l10n.resume()),(d=this.structTreeLayer)==null||d.show()})},$N=function(U){return z(this,null,function*(){const l=yield this.pdfPage.getTextContent(),d=[];for(const Z of l.items)d.push(Z.str);this._textHighlighter.setTextMapping(U,d),this._textHighlighter.enable()})},zi=function(U,l=null){return z(this,null,function*(){if(U===this.renderTask&&(this.renderTask=null),l instanceof dR){b(this,Y0,null);return}if(b(this,Y0,l),this.renderingState=pl.FINISHED,this._resetZoomLayer(!0),Q(this,IZ).regularAnnotations=!U.separateAnnots,this.eventBus.dispatch("pagerendered",{source:this,pageNumber:this.id,cssTransform:!1,timestamp:performance.now(),error:Q(this,Y0)}),l)throw l})};function MG(U){return z(this,null,function*(){const l="",d=l.split("#",1)[0];let{info:Z,metadata:t,contentDispositionFilename:F,contentLength:c}=yield U.getMetadata();if(!c){const{length:a}=yield U.getDownloadInfo();c=a}return WU(ul({},Z),{baseURL:d,filesize:c,filename:F||FJ(l),metadata:t==null?void 0:t.getRaw(),authors:t==null?void 0:t.get("dc:creator"),numPages:U.numPages,URL:l})})}class JG{constructor(l){this._ready=new Promise((d,Z)=>{import(l).then(t=>{d(t.QuickJSSandbox())}).catch(Z)})}createSandbox(l){return z(this,null,function*(){(yield this._ready).create(l)})}dispatchEventInSandbox(l){return z(this,null,function*(){const d=yield this._ready;setTimeout(()=>d.dispatchEvent(l),0)})}destroySandbox(){return z(this,null,function*(){(yield this._ready).nukeSandbox()})}}var lZ,u0,nn,w0,C0,lV,Gd,HZ,CQ,ql,cU,ud,Gm,Vn,Ii,Tm,iQ;class GG{constructor({eventBus:l,externalServices:d=null,docProperties:Z=null}){e(this,ud),e(this,lZ,null),e(this,u0,null),e(this,nn,null),e(this,w0,null),e(this,C0,null),e(this,lV,null),e(this,Gd,null),e(this,HZ,null),e(this,CQ,!1),e(this,ql,null),e(this,cU,null),b(this,C0,l),b(this,lV,d),b(this,nn,Z)}setViewer(l){b(this,HZ,l)}setDocument(l){return z(this,null,function*(){var d;if(Q(this,Gd)&&(yield N(this,ud,iQ).call(this)),b(this,Gd,l),!l)return;const[Z,t,F]=yield Promise.all([l.getFieldObjects(),l.getCalculationOrderIds(),l.getJSActions()]);if(!Z&&!F){yield N(this,ud,iQ).call(this);return}if(l!==Q(this,Gd))return;try{b(this,ql,N(this,ud,Tm).call(this))}catch(W){console.error(`setDocument: "${W.message}".`),yield N(this,ud,iQ).call(this);return}const c=Q(this,C0);b(this,w0,new AbortController);const{signal:a}=Q(this,w0);c._on("updatefromsandbox",W=>{(W==null?void 0:W.source)===window&&N(this,ud,Gm).call(this,W.detail)},{signal:a}),c._on("dispatcheventinsandbox",W=>{var n;(n=Q(this,ql))==null||n.dispatchEventInSandbox(W.detail)},{signal:a}),c._on("pagechanging",({pageNumber:W,previous:n})=>{W!==n&&(N(this,ud,Ii).call(this,n),N(this,ud,Vn).call(this,W))},{signal:a}),c._on("pagerendered",({pageNumber:W})=>{this._pageOpenPending.has(W)&&W===Q(this,HZ).currentPageNumber&&N(this,ud,Vn).call(this,W)},{signal:a}),c._on("pagesdestroy",()=>z(this,null,function*(){var W,n;yield N(this,ud,Ii).call(this,Q(this,HZ).currentPageNumber),yield(W=Q(this,ql))==null?void 0:W.dispatchEventInSandbox({id:"doc",name:"WillClose"}),(n=Q(this,lZ))==null||n.resolve()}),{signal:a});try{const W=yield Q(this,nn).call(this,l);if(l!==Q(this,Gd))return;yield Q(this,ql).createSandbox({objects:Z,calculationOrder:t,appInfo:{platform:navigator.platform,language:navigator.language},docInfo:WU(ul({},W),{actions:F})}),c.dispatch("sandboxcreated",{source:this})}catch(W){console.error(`setDocument: "${W.message}".`),yield N(this,ud,iQ).call(this);return}yield(d=Q(this,ql))==null?void 0:d.dispatchEventInSandbox({id:"doc",name:"Open"}),yield N(this,ud,Vn).call(this,Q(this,HZ).currentPageNumber,!0),Promise.resolve().then(()=>{l===Q(this,Gd)&&b(this,CQ,!0)})})}dispatchWillSave(){return z(this,null,function*(){var l;return(l=Q(this,ql))==null?void 0:l.dispatchEventInSandbox({id:"doc",name:"WillSave"})})}dispatchDidSave(){return z(this,null,function*(){var l;return(l=Q(this,ql))==null?void 0:l.dispatchEventInSandbox({id:"doc",name:"DidSave"})})}dispatchWillPrint(){return z(this,null,function*(){var l;if(Q(this,ql)){yield(l=Q(this,cU))==null?void 0:l.promise,b(this,cU,Promise.withResolvers());try{yield Q(this,ql).dispatchEventInSandbox({id:"doc",name:"WillPrint"})}catch(d){throw Q(this,cU).resolve(),b(this,cU,null),d}yield Q(this,cU).promise}})}dispatchDidPrint(){return z(this,null,function*(){var l;return(l=Q(this,ql))==null?void 0:l.dispatchEventInSandbox({id:"doc",name:"DidPrint"})})}get destroyPromise(){var l;return((l=Q(this,u0))==null?void 0:l.promise)||null}get ready(){return Q(this,CQ)}get _pageOpenPending(){return fn(this,"_pageOpenPending",new Set)}get _visitedPages(){return fn(this,"_visitedPages",new Map)}}lZ=new WeakMap,u0=new WeakMap,nn=new WeakMap,w0=new WeakMap,C0=new WeakMap,lV=new WeakMap,Gd=new WeakMap,HZ=new WeakMap,CQ=new WeakMap,ql=new WeakMap,cU=new WeakMap,ud=new WeakSet,Gm=function(U){return z(this,null,function*(){var l,d;const Z=Q(this,HZ),t=Z.isInPresentationMode||Z.isChangingPresentationMode,{id:F,siblings:c,command:a,value:W}=U;if(!F){switch(a){case"clear":console.clear();break;case"error":console.error(W);break;case"layout":if(!t){const V=oM(W);Z.spreadMode=V.spreadMode}break;case"page-num":Z.currentPageNumber=W+1;break;case"print":yield Z.pagesPromise,Q(this,C0).dispatch("print",{source:this});break;case"println":console.log(W);break;case"zoom":t||(Z.currentScaleValue=W);break;case"SaveAs":Q(this,C0).dispatch("download",{source:this});break;case"FirstPage":Z.currentPageNumber=1;break;case"LastPage":Z.currentPageNumber=Z.pagesCount;break;case"NextPage":Z.nextPage();break;case"PrevPage":Z.previousPage();break;case"ZoomViewIn":t||Z.increaseScale();break;case"ZoomViewOut":t||Z.decreaseScale();break;case"WillPrintFinished":(l=Q(this,cU))==null||l.resolve(),b(this,cU,null);break}return}if(t&&U.focus)return;delete U.id,delete U.siblings;const n=c?[F,...c]:[F];for(const V of n){const s=document.querySelector(`[data-element-id="${V}"]`);s?s.dispatchEvent(new CustomEvent("updatefromsandbox",{detail:U})):(d=Q(this,Gd))==null||d.annotationStorage.setValue(V,U)}})},Vn=function(U,l=!1){return z(this,null,function*(){const d=Q(this,Gd),Z=this._visitedPages;if(l&&b(this,lZ,Promise.withResolvers()),!Q(this,lZ))return;const t=Q(this,HZ).getPageView(U-1);if((t==null?void 0:t.renderingState)!==pl.FINISHED){this._pageOpenPending.add(U);return}this._pageOpenPending.delete(U);const F=z(this,null,function*(){var c,a;const W=yield Z.has(U)?null:(c=t.pdfPage)==null?void 0:c.getJSActions();d===Q(this,Gd)&&(yield(a=Q(this,ql))==null?void 0:a.dispatchEventInSandbox({id:"page",name:"PageOpen",pageNumber:U,actions:W}))});Z.set(U,F)})},Ii=function(U){return z(this,null,function*(){var l;const d=Q(this,Gd),Z=this._visitedPages;if(!Q(this,lZ)||this._pageOpenPending.has(U))return;const t=Z.get(U);t&&(Z.set(U,null),yield t,d===Q(this,Gd)&&(yield(l=Q(this,ql))==null?void 0:l.dispatchEventInSandbox({id:"page",name:"PageClose",pageNumber:U})))})},Tm=function(){if(b(this,u0,Promise.withResolvers()),Q(this,ql))throw new Error("#initScripting: Scripting already exists.");return Q(this,lV).createScripting()},iQ=function(){return z(this,null,function*(){var U,l,d,Z;if(!Q(this,ql)){b(this,Gd,null),(U=Q(this,u0))==null||U.resolve();return}Q(this,lZ)&&(yield Promise.race([Q(this,lZ).promise,new Promise(t=>{setTimeout(t,1e3)})]).catch(()=>{}),b(this,lZ,null)),b(this,Gd,null);try{yield Q(this,ql).destroySandbox()}catch(t){}(l=Q(this,cU))==null||l.reject(new Error("Scripting destroyed.")),b(this,cU,null),(d=Q(this,w0))==null||d.abort(),b(this,w0,null),this._pageOpenPending.clear(),this._visitedPages.clear(),b(this,ql,null),b(this,CQ,!1),(Z=Q(this,u0))==null||Z.resolve()})};class TG extends GG{constructor(l){l.externalServices||window.addEventListener("updatefromsandbox",d=>{l.eventBus.dispatch("updatefromsandbox",{source:window,detail:d.detail})}),l.externalServices||(l.externalServices={createScripting:()=>new JG(l.sandboxBundleSrc)}),l.docProperties||(l.docProperties=d=>MG(d)),super(l)}}const SG=3e4;class XG{constructor(){this.pdfViewer=null,this.pdfThumbnailViewer=null,this.onIdle=null,this.highestPriorityPage=null,this.idleTimeout=null,this.printing=!1,this.isThumbnailViewEnabled=!1,Object.defineProperty(this,"hasViewer",{value:()=>!!this.pdfViewer})}setViewer(l){this.pdfViewer=l}setThumbnailViewer(l){this.pdfThumbnailViewer=l}isHighestPriority(l){return this.highestPriorityPage===l.renderingId}renderHighestPriority(l){var d;this.idleTimeout&&(clearTimeout(this.idleTimeout),this.idleTimeout=null),!this.pdfViewer.forceRendering(l)&&(this.isThumbnailViewEnabled&&(d=this.pdfThumbnailViewer)!=null&&d.forceRendering()||this.printing||this.onIdle&&(this.idleTimeout=setTimeout(this.onIdle.bind(this),SG)))}getHighestPriority(l,d,Z,t=!1){const F=l.views,c=F.length;if(c===0)return null;for(let s=0;s<c;s++){const i=F[s].view;if(!this.isViewFinished(i))return i}const a=l.first.id,W=l.last.id;if(W-a+1>c){const s=l.ids;for(let i=1,R=W-a;i<R;i++){const h=Z?a+i:W-i;if(s.has(h))continue;const m=d[h-1];if(!this.isViewFinished(m))return m}}let n=Z?W:a-2,V=d[n];return V&&!this.isViewFinished(V)||t&&(n+=Z?1:-1,V=d[n],V&&!this.isViewFinished(V))?V:null}isViewFinished(l){return l.renderingState===pl.FINISHED}renderView(l){switch(l.renderingState){case pl.FINISHED:return!1;case pl.PAUSED:this.highestPriorityPage=l.renderingId,l.resume();break;case pl.RUNNING:this.highestPriorityPage=l.renderingId;break;case pl.INITIAL:this.highestPriorityPage=l.renderingId,l.draw().finally(()=>{this.renderHighestPriority()}).catch(d=>{d instanceof dR||console.error(`renderView: "${d}"`)});break}return!0}}const lh=10,fa={FORCE_SCROLL_MODE_PAGE:1e4,FORCE_LAZY_PAGE_INIT:5e3,PAUSE_EAGER_PAGE_INIT:250};function dh(U){return Object.values(yd).includes(U)&&U!==yd.DISABLE}var PZ,a0,sn,Di;class YG{constructor(l){e(this,sn),e(this,PZ,new Set),e(this,a0,0),b(this,a0,l)}push(l){const d=Q(this,PZ);d.has(l)&&d.delete(l),d.add(l),d.size>Q(this,a0)&&N(this,sn,Di).call(this)}resize(l,d=null){b(this,a0,l);const Z=Q(this,PZ);if(d){const t=Z.size;let F=1;for(const c of Z)if(d.has(c.id)&&(Z.delete(c),Z.add(c)),++F>t)break}for(;Z.size>Q(this,a0);)N(this,sn,Di).call(this)}has(l){return Q(this,PZ).has(l)}[Symbol.iterator](){return Q(this,PZ).keys()}}PZ=new WeakMap,a0=new WeakMap,sn=new WeakSet,Di=function(){const U=Q(this,PZ).keys().next().value;U==null||U.destroy(),Q(this,PZ).delete(U)};var Kt,Rn,Nn,dZ,Od,x0,xQ,hn,bn,mn,en,Mn,vt,W0,r0,o0,RQ,_t,rQ,Jn,NQ,j0,cF,jQ,Fl,Sm,Xm,Ym,OQ,dV,Uh,hs,Zh,DZ,Ei,pm,um,om,wi,Bm,Gn;class ym{constructor(l){var c,a,W;e(this,Fl),e(this,Kt,null),e(this,Rn,null),e(this,Nn,null),e(this,dZ,yd.NONE),e(this,Od,null),e(this,x0,VZ.ENABLE_FORMS),e(this,xQ,null),e(this,hn,!1),e(this,bn,!1),e(this,mn,!1),e(this,en,!1),e(this,Mn,!1),e(this,vt,null),e(this,W0,null),e(this,r0,null),e(this,o0,null),e(this,RQ,!1),e(this,_t,null),e(this,rQ,!1),e(this,Jn,0),e(this,NQ,new ResizeObserver(N(this,Fl,Bm).bind(this))),e(this,j0,null),e(this,cF,null),e(this,jQ,oU.ENABLE);var d,Z;const t="4.7.76";if(uN!==t)throw new Error(`The API version "${uN}" does not match the Viewer version "${t}".`);if(this.container=l.container,this.viewer=l.viewer||l.container.firstElementChild,((d=this.container)==null?void 0:d.tagName)!=="DIV"||((Z=this.viewer)==null?void 0:Z.tagName)!=="DIV")throw new Error("Invalid `container` and/or `viewer` option.");if(this.container.offsetParent&&getComputedStyle(this.container).position!=="absolute")throw new Error("The `container` must be absolutely positioned.");Q(this,NQ).observe(this.container),this.eventBus=l.eventBus,this.linkService=l.linkService||new lR,this.downloadManager=l.downloadManager||null,this.findController=l.findController||null,b(this,Rn,l.altTextManager||null),this.findController&&(this.findController.onIsPageVisible=n=>this._getVisiblePages().ids.has(n)),this._scriptingManager=l.scriptingManager||null,b(this,jQ,(c=l.textLayerMode)!=null?c:oU.ENABLE),b(this,x0,(a=l.annotationMode)!=null?a:VZ.ENABLE_FORMS),b(this,dZ,(W=l.annotationEditorMode)!=null?W:yd.NONE),b(this,Nn,l.annotationEditorHighlightColors||null),b(this,bn,l.enableHighlightFloatingButton===!0),b(this,en,l.enableUpdatedAddImage===!0),b(this,Mn,l.enableNewAltTextWhenAddingImage===!0),this.imageResourcesPath=l.imageResourcesPath||"",this.enablePrintAutoRotate=l.enablePrintAutoRotate||!1,this.removePageBorders=l.removePageBorders||!1,this.maxCanvasPixels=l.maxCanvasPixels,this.l10n=l.l10n,this.l10n||(this.l10n=new sV),b(this,mn,l.enablePermissions||!1),this.pageColors=l.pageColors||null,b(this,W0,l.mlManager||null),b(this,hn,l.enableHWA||!1),this.defaultRenderingQueue=!l.renderingQueue,this.defaultRenderingQueue?(this.renderingQueue=new XG,this.renderingQueue.setViewer(this)):this.renderingQueue=l.renderingQueue;const{abortSignal:F}=l;F==null||F.addEventListener("abort",()=>{Q(this,NQ).disconnect(),b(this,NQ,null)},{once:!0}),this.scroll=JM(this.container,this._scrollUpdate.bind(this),F),this.presentationModeState=E0.UNKNOWN,this._resetView(),this.removePageBorders&&this.viewer.classList.add("removePageBorders"),N(this,Fl,wi).call(this),this.eventBus._on("thumbnailrendered",({pageNumber:n,pdfPage:V})=>{const s=this._pages[n-1];Q(this,Kt).has(s)||V==null||V.cleanup()}),l.l10n||this.l10n.translate(this.container)}get pagesCount(){return this._pages.length}getPageView(l){return this._pages[l]}getCachedPageViews(){return new Set(Q(this,Kt))}get pageViewsReady(){return this._pages.every(l=>l==null?void 0:l.pdfPage)}get renderForms(){return Q(this,x0)===VZ.ENABLE_FORMS}get enableScripting(){return!!this._scriptingManager}get currentPageNumber(){return this._currentPageNumber}set currentPageNumber(l){if(!Number.isInteger(l))throw new Error("Invalid page number.");this.pdfDocument&&(this._setCurrentPageNumber(l,!0)||console.error(`currentPageNumber: "${l}" is not a valid page.`))}_setCurrentPageNumber(l,d=!1){var F;var Z;if(this._currentPageNumber===l)return d&&N(this,Fl,Ei).call(this),!0;if(!(0<l&&l<=this.pagesCount))return!1;const t=this._currentPageNumber;return this._currentPageNumber=l,this.eventBus.dispatch("pagechanging",{source:this,pageNumber:l,pageLabel:(F=(Z=this._pageLabels)==null?void 0:Z[l-1])!=null?F:null,previous:t}),d&&N(this,Fl,Ei).call(this),!0}get currentPageLabel(){var d;var l;return(d=(l=this._pageLabels)==null?void 0:l[this._currentPageNumber-1])!=null?d:null}set currentPageLabel(l){if(!this.pdfDocument)return;let d=l|0;if(this._pageLabels){const Z=this._pageLabels.indexOf(l);Z>=0&&(d=Z+1)}this._setCurrentPageNumber(d,!0)||console.error(`currentPageLabel: "${l}" is not a valid page.`)}get currentScale(){return this._currentScale!==ls?this._currentScale:rb}set currentScale(l){if(isNaN(l))throw new Error("Invalid numeric scale.");this.pdfDocument&&N(this,Fl,DZ).call(this,l,{noScroll:!1})}get currentScaleValue(){return this._currentScaleValue}set currentScaleValue(l){this.pdfDocument&&N(this,Fl,DZ).call(this,l,{noScroll:!1})}get pagesRotation(){return this._pagesRotation}set pagesRotation(l){if(!Kb(l))throw new Error("Invalid pages rotation angle.");if(!this.pdfDocument||(l%=360,l<0&&(l+=360),this._pagesRotation===l))return;this._pagesRotation=l;const d=this._currentPageNumber;this.refresh(!0,{rotation:l}),this._currentScaleValue&&N(this,Fl,DZ).call(this,this._currentScaleValue,{noScroll:!0}),this.eventBus.dispatch("rotationchanging",{source:this,pagesRotation:l,pageNumber:d}),this.defaultRenderingQueue&&this.update()}get firstPagePromise(){return this.pdfDocument?this._firstPageCapability.promise:null}get onePageRendered(){return this.pdfDocument?this._onePageRenderedCapability.promise:null}get pagesPromise(){return this.pdfDocument?this._pagesCapability.promise:null}get _layerProperties(){const l=this;return fn(this,"_layerProperties",{get annotationEditorUIManager(){return Q(l,Od)},get annotationStorage(){var d;return(d=l.pdfDocument)==null?void 0:d.annotationStorage},get downloadManager(){return l.downloadManager},get enableScripting(){return!!l._scriptingManager},get fieldObjectsPromise(){var d;return(d=l.pdfDocument)==null?void 0:d.getFieldObjects()},get findController(){return l.findController},get hasJSActionsPromise(){var d;return(d=l.pdfDocument)==null?void 0:d.hasJSActions()},get linkService(){return l.linkService}})}getAllText(){return z(this,null,function*(){const l=[],d=[];for(let Z=1,t=this.pdfDocument.numPages;Z<=t;++Z){if(Q(this,rQ))return null;d.length=0;const F=yield this.pdfDocument.getPage(Z),{items:c}=yield F.getTextContent();for(const a of c)a.str&&d.push(a.str),a.hasEOL&&d.push(`
|
||
`);l.push(kQ(d.join("")))}return l.join(`
|
||
`)})}setDocument(l){var d,Z,t;if(this.pdfDocument&&(this.eventBus.dispatch("pagesdestroy",{source:this}),this._cancelRendering(),this._resetView(),(d=this.findController)==null||d.setDocument(null),(Z=this._scriptingManager)==null||Z.setDocument(null),(t=Q(this,Od))==null||t.destroy(),b(this,Od,null)),this.pdfDocument=l,!l)return;const F=l.numPages,c=l.getPage(1),a=l.getOptionalContentConfig({intent:"display"}),W=Q(this,mn)?l.getPermissions():Promise.resolve(),{eventBus:n,pageColors:V,viewer:s}=this;b(this,vt,new AbortController);const{signal:i}=Q(this,vt);if(F>fa.FORCE_SCROLL_MODE_PAGE){console.warn("Forcing PAGE-scrolling for performance reasons, given the length of the document.");const m=this._scrollMode=cl.PAGE;n.dispatch("scrollmodechanged",{source:this,mode:m})}this._pagesCapability.promise.then(()=>{n.dispatch("pagesloaded",{source:this,pagesCount:F})},()=>{});const R=m=>{const M=this._pages[m.pageNumber-1];M&&Q(this,Kt).push(M)};n._on("pagerender",R,{signal:i});const h=m=>{m.cssTransform||(this._onePageRenderedCapability.resolve({timestamp:m.timestamp}),n._off("pagerendered",h))};n._on("pagerendered",h,{signal:i}),Promise.all([c,W]).then(([m,M])=>{var J,T;if(l!==this.pdfDocument)return;this._firstPageCapability.resolve(m),this._optionalContentConfigPromise=a;const{annotationEditorMode:G,annotationMode:X,textLayerMode:Y}=N(this,Fl,Sm).call(this,M);if(Y!==oU.DISABLE){const S=b(this,_t,document.createElement("div"));S.id="hiddenCopyElement",s.before(S)}if(typeof AbortSignal.any=="function"&&G!==yd.DISABLE){const S=G;l.isPureXfa?console.warn("Warning: XFA-editing is not implemented."):dh(S)?(b(this,Od,new dJ(this.container,s,Q(this,Rn),n,l,V,Q(this,Nn),Q(this,bn),Q(this,en),Q(this,Mn),Q(this,W0))),n.dispatch("annotationeditoruimanager",{source:this,uiManager:Q(this,Od)}),S!==yd.NONE&&(S===yd.STAMP&&((J=Q(this,W0))==null||J.loadModel("altText")),Q(this,Od).updateMode(S))):console.error(`Invalid AnnotationEditor mode: ${S}`)}const p=this._scrollMode===cl.PAGE?null:s,o=this.currentScale,k=m.getViewport({scale:o*WZ.PDF_TO_CSS_UNITS});s.style.setProperty("--scale-factor",k.scale),V!=null&&V.background&&s.style.setProperty("--page-bg-color",V.background),((V==null?void 0:V.foreground)==="CanvasText"||(V==null?void 0:V.background)==="Canvas")&&(s.style.setProperty("--hcm-highlight-filter",l.filterFactory.addHighlightHCMFilter("highlight","CanvasText","Canvas","HighlightText","Highlight")),s.style.setProperty("--hcm-highlight-selected-filter",l.filterFactory.addHighlightHCMFilter("highlight_selected","CanvasText","Canvas","HighlightText","ButtonText")));for(let S=1;S<=F;++S){const B=new Jm({container:p,eventBus:n,id:S,scale:o,defaultViewport:k.clone(),optionalContentConfigPromise:a,renderingQueue:this.renderingQueue,textLayerMode:Y,annotationMode:X,imageResourcesPath:this.imageResourcesPath,maxCanvasPixels:this.maxCanvasPixels,pageColors:V,l10n:this.l10n,layerProperties:this._layerProperties,enableHWA:Q(this,hn)});this._pages.push(B)}(T=this._pages[0])==null||T.setPdfPage(m),this._scrollMode===cl.PAGE?N(this,Fl,OQ).call(this):this._spreadMode!==nd.NONE&&this._updateSpreadMode(),N(this,Fl,Xm).call(this,i).then(()=>z(this,null,function*(){var S,B;if(l!==this.pdfDocument)return;if((S=this.findController)==null||S.setDocument(l),(B=this._scriptingManager)==null||B.setDocument(l),Q(this,_t)&&document.addEventListener("copy",N(this,Fl,Ym).bind(this,Y),{signal:i}),Q(this,Od)&&n.dispatch("annotationeditormodechanged",{source:this,mode:Q(this,dZ)}),l.loadingParams.disableAutoFetch||F>fa.FORCE_LAZY_PAGE_INIT){this._pagesCapability.resolve();return}let y=F-1;if(y<=0){this._pagesCapability.resolve();return}for(let D=2;D<=F;++D){const E=l.getPage(D).then(r=>{const w=this._pages[D-1];w.pdfPage||w.setPdfPage(r),--y===0&&this._pagesCapability.resolve()},r=>{console.error(`Unable to get page ${D} to initialize viewer`,r),--y===0&&this._pagesCapability.resolve()});D%fa.PAUSE_EAGER_PAGE_INIT===0&&(yield E)}})),n.dispatch("pagesinit",{source:this}),l.getMetadata().then(({info:S})=>{l===this.pdfDocument&&S.Language&&(s.lang=S.Language)}),this.defaultRenderingQueue&&this.update()}).catch(m=>{console.error("Unable to initialize viewer",m),this._pagesCapability.reject(m)})}setPageLabels(l){var Z;var d;if(this.pdfDocument){l?Array.isArray(l)&&this.pdfDocument.numPages===l.length?this._pageLabels=l:(this._pageLabels=null,console.error("setPageLabels: Invalid page labels.")):this._pageLabels=null;for(let t=0,F=this._pages.length;t<F;t++)this._pages[t].setPageLabel((Z=(d=this._pageLabels)==null?void 0:d[t])!=null?Z:null)}}_resetView(){var l,d;this._pages=[],this._currentPageNumber=1,this._currentScale=ls,this._currentScaleValue=null,this._pageLabels=null,b(this,Kt,new YG(lh)),this._location=null,this._pagesRotation=0,this._optionalContentConfigPromise=null,this._firstPageCapability=Promise.withResolvers(),this._onePageRenderedCapability=Promise.withResolvers(),this._pagesCapability=Promise.withResolvers(),this._scrollMode=cl.VERTICAL,this._previousScrollMode=cl.UNKNOWN,this._spreadMode=nd.NONE,b(this,j0,{previousPageNumber:1,scrollDown:!0,pages:[]}),(l=Q(this,vt))==null||l.abort(),b(this,vt,null),this.viewer.textContent="",this._updateScrollMode(),this.viewer.removeAttribute("lang"),(d=Q(this,_t))==null||d.remove(),b(this,_t,null),N(this,Fl,Gn).call(this)}_scrollUpdate(){this.pagesCount!==0&&this.update()}pageLabelToPageNumber(l){if(!this._pageLabels)return null;const d=this._pageLabels.indexOf(l);return d<0?null:d+1}scrollPageIntoView({pageNumber:l,destArray:d=null,allowNegativeOffset:Z=!1,ignoreDestinationZoom:t=!1}){if(!this.pdfDocument)return;const F=Number.isInteger(l)&&this._pages[l-1];if(!F){console.error(`scrollPageIntoView: "${l}" is not a valid pageNumber parameter.`);return}if(this.isInPresentationMode||!d){this._setCurrentPageNumber(l,!0);return}let c=0,a=0,W=0,n=0,V,s;const i=F.rotation%180!==0,R=(i?F.height:F.width)/F.scale/WZ.PDF_TO_CSS_UNITS,h=(i?F.width:F.height)/F.scale/WZ.PDF_TO_CSS_UNITS;let m=0;switch(d[1].name){case"XYZ":c=d[2],a=d[3],m=d[4],c=c!==null?c:0,a=a!==null?a:h;break;case"Fit":case"FitB":m="page-fit";break;case"FitH":case"FitBH":a=d[2],m="page-width",a===null&&this._location?(c=this._location.left,a=this._location.top):(typeof a!="number"||a<0)&&(a=h);break;case"FitV":case"FitBV":c=d[2],W=R,n=h,m="page-height";break;case"FitR":c=d[2],a=d[3],W=d[4]-c,n=d[5]-a;let G=jb,X=Ob;this.removePageBorders&&(G=X=0),V=(this.container.clientWidth-G)/W/WZ.PDF_TO_CSS_UNITS,s=(this.container.clientHeight-X)/n/WZ.PDF_TO_CSS_UNITS,m=Math.min(Math.abs(V),Math.abs(s));break;default:console.error(`scrollPageIntoView: "${d[1].name}" is not a valid destination type.`);return}if(t||(m&&m!==this._currentScale?this.currentScaleValue=m:this._currentScale===ls&&(this.currentScaleValue=bM)),m==="page-fit"&&!d[4]){N(this,Fl,dV).call(this,F);return}const M=[F.viewport.convertToViewportPoint(c,a),F.viewport.convertToViewportPoint(c+W,a+n)];let J=Math.min(M[0][0],M[1][0]),T=Math.min(M[0][1],M[1][1]);Z||(J=Math.max(J,0),T=Math.max(T,0)),N(this,Fl,dV).call(this,F,{left:J,top:T})}_updateLocation(l){const d=this._currentScale,Z=this._currentScaleValue,t=parseFloat(Z)===d?Math.round(d*1e4)/100:Z,F=l.id,c=this._pages[F-1],a=this.container,W=c.getPagePoint(a.scrollLeft-l.x,a.scrollTop-l.y),n=Math.round(W[0]),V=Math.round(W[1]);let s=`#page=${F}`;this.isInPresentationMode||(s+=`&zoom=${t},${n},${V}`),this._location={pageNumber:F,scale:t,top:V,left:n,rotation:this._pagesRotation,pdfOpenParams:s}}update(){const l=this._getVisiblePages(),d=l.views,Z=d.length;if(Z===0)return;const t=Math.max(lh,2*Z+1);Q(this,Kt).resize(t,l.ids),this.renderingQueue.renderHighestPriority(l);const F=this._spreadMode===nd.NONE&&(this._scrollMode===cl.PAGE||this._scrollMode===cl.VERTICAL),c=this._currentPageNumber;let a=!1;for(const W of d){if(W.percent<100)break;if(W.id===c&&F){a=!0;break}}this._setCurrentPageNumber(a?c:d[0].id),this._updateLocation(l.first),this.eventBus.dispatch("updateviewarea",{source:this,location:this._location})}containsElement(l){return this.container.contains(l)}focus(){this.container.focus()}get _isContainerRtl(){return getComputedStyle(this.container).direction==="rtl"}get isInPresentationMode(){return this.presentationModeState===E0.FULLSCREEN}get isChangingPresentationMode(){return this.presentationModeState===E0.CHANGING}get isHorizontalScrollbarEnabled(){return this.isInPresentationMode?!1:this.container.scrollWidth>this.container.clientWidth}get isVerticalScrollbarEnabled(){return this.isInPresentationMode?!1:this.container.scrollHeight>this.container.clientHeight}_getVisiblePages(){const l=this._scrollMode===cl.PAGE?Q(this,j0).pages:this._pages,d=this._scrollMode===cl.HORIZONTAL,Z=d&&this._isContainerRtl;return TM({scrollEl:this.container,views:l,sortByVisibility:!0,horizontal:d,rtl:Z})}cleanup(){for(const l of this._pages)l.renderingState!==pl.FINISHED&&l.reset()}_cancelRendering(){for(const l of this._pages)l.cancelRendering()}forceRendering(l){const d=l||this._getVisiblePages(),Z=N(this,Fl,om).call(this,d),t=this._spreadMode!==nd.NONE&&this._scrollMode!==cl.HORIZONTAL,F=this.renderingQueue.getHighestPriority(d,this._pages,Z,t);return F?(N(this,Fl,um).call(this,F).then(()=>{this.renderingQueue.renderView(F)}),!0):!1}get hasEqualPageSizes(){const l=this._pages[0];for(let d=1,Z=this._pages.length;d<Z;++d){const t=this._pages[d];if(t.width!==l.width||t.height!==l.height)return!1}return!0}getPagesOverview(){let l;return this._pages.map(d=>{const Z=d.pdfPage.getViewport({scale:1}),t=vb(Z);if(l===void 0)l=t;else if(this.enablePrintAutoRotate&&t!==l)return{width:Z.height,height:Z.width,rotation:(Z.rotation-90)%360};return{width:Z.width,height:Z.height,rotation:Z.rotation}})}get optionalContentConfigPromise(){return this.pdfDocument?this._optionalContentConfigPromise?this._optionalContentConfigPromise:(console.error("optionalContentConfigPromise: Not initialized yet."),this.pdfDocument.getOptionalContentConfig({intent:"display"})):Promise.resolve(null)}set optionalContentConfigPromise(l){if(!(l instanceof Promise))throw new Error(`Invalid optionalContentConfigPromise: ${l}`);this.pdfDocument&&this._optionalContentConfigPromise&&(this._optionalContentConfigPromise=l,this.refresh(!1,{optionalContentConfigPromise:l}),this.eventBus.dispatch("optionalcontentconfigchanged",{source:this,promise:l}))}get scrollMode(){return this._scrollMode}set scrollMode(l){if(this._scrollMode!==l){if(!SM(l))throw new Error(`Invalid scroll mode: ${l}`);this.pagesCount>fa.FORCE_SCROLL_MODE_PAGE||(this._previousScrollMode=this._scrollMode,this._scrollMode=l,this.eventBus.dispatch("scrollmodechanged",{source:this,mode:l}),this._updateScrollMode(this._currentPageNumber))}}_updateScrollMode(l=null){const d=this._scrollMode,Z=this.viewer;Z.classList.toggle("scrollHorizontal",d===cl.HORIZONTAL),Z.classList.toggle("scrollWrapped",d===cl.WRAPPED),!(!this.pdfDocument||!l)&&(d===cl.PAGE?N(this,Fl,OQ).call(this):this._previousScrollMode===cl.PAGE&&this._updateSpreadMode(),this._currentScaleValue&&isNaN(this._currentScaleValue)&&N(this,Fl,DZ).call(this,this._currentScaleValue,{noScroll:!0}),this._setCurrentPageNumber(l,!0),this.update())}get spreadMode(){return this._spreadMode}set spreadMode(l){if(this._spreadMode!==l){if(!XM(l))throw new Error(`Invalid spread mode: ${l}`);this._spreadMode=l,this.eventBus.dispatch("spreadmodechanged",{source:this,mode:l}),this._updateSpreadMode(this._currentPageNumber)}}_updateSpreadMode(l=null){if(!this.pdfDocument)return;const d=this.viewer,Z=this._pages;if(this._scrollMode===cl.PAGE)N(this,Fl,OQ).call(this);else if(d.textContent="",this._spreadMode===nd.NONE)for(const t of this._pages)d.append(t.div);else{const t=this._spreadMode-1;let F=null;for(let c=0,a=Z.length;c<a;++c)F===null?(F=document.createElement("div"),F.className="spread",d.append(F)):c%2===t&&(F=F.cloneNode(!1),d.append(F)),F.append(Z[c].div)}l&&(this._currentScaleValue&&isNaN(this._currentScaleValue)&&N(this,Fl,DZ).call(this,this._currentScaleValue,{noScroll:!0}),this._setCurrentPageNumber(l,!0),this.update())}_getPageAdvance(l,d=!1){switch(this._scrollMode){case cl.WRAPPED:{const{views:Z}=this._getVisiblePages(),t=new Map;for(const{id:F,y:c,percent:a,widthPercent:W}of Z){if(a===0||W<100)continue;let n=t.get(c);n||t.set(c,n||(n=[])),n.push(F)}for(const F of t.values()){const c=F.indexOf(l);if(c===-1)continue;const a=F.length;if(a===1)break;if(d)for(let W=c-1,n=0;W>=n;W--){const V=F[W],s=F[W+1]-1;if(V<s)return l-s}else for(let W=c+1,n=a;W<n;W++){const V=F[W],s=F[W-1]+1;if(V>s)return s-l}if(d){const W=F[0];if(W<l)return l-W+1}else{const W=F[a-1];if(W>l)return W-l+1}break}break}case cl.HORIZONTAL:break;case cl.PAGE:case cl.VERTICAL:{if(this._spreadMode===nd.NONE)break;const Z=this._spreadMode-1;if(d&&l%2!==Z||!d&&l%2===Z)break;const{views:t}=this._getVisiblePages(),F=d?l-1:l+1;for(const{id:c,percent:a,widthPercent:W}of t)if(c===F){if(a>0&&W===100)return 2;break}break}}return 1}nextPage(){const l=this._currentPageNumber,d=this.pagesCount;if(l>=d)return!1;const Z=this._getPageAdvance(l,!1)||1;return this.currentPageNumber=Math.min(l+Z,d),!0}previousPage(){const l=this._currentPageNumber;if(l<=1)return!1;const d=this._getPageAdvance(l,!0)||1;return this.currentPageNumber=Math.max(l-d,1),!0}updateScale({drawingDelay:l,scaleFactor:d=null,steps:Z=null,origin:t}){if(Z===null&&d===null)throw new Error("Invalid updateScale options: either `steps` or `scaleFactor` must be provided.");if(!this.pdfDocument)return;let F=this._currentScale;if(d>0&&d!==1)F=Math.round(F*d*100)/100;else if(Z){const c=Z>0?hN:1/hN,a=Z>0?Math.ceil:Math.floor;Z=Math.abs(Z);do F=a((F*c).toFixed(2)*10)/10;while(--Z>0)}F=Math.max(mM,Math.min(eM,F)),N(this,Fl,DZ).call(this,F,{noScroll:!1,drawingDelay:l,origin:t})}increaseScale(l={}){var d;this.updateScale(WU(ul({},l),{steps:(d=l.steps)!=null?d:1}))}decreaseScale(l={}){var d;this.updateScale(WU(ul({},l),{steps:-((d=l.steps)!=null?d:1)}))}get containerTopLeft(){return Q(this,xQ)||b(this,xQ,[this.container.offsetTop,this.container.offsetLeft])}get annotationEditorMode(){return Q(this,Od)?Q(this,dZ):yd.DISABLE}set annotationEditorMode({mode:l,editId:d=null,isFromKeyboard:Z=!1}){var t;if(!Q(this,Od))throw new Error("The AnnotationEditor is not enabled.");if(Q(this,dZ)===l)return;if(!dh(l))throw new Error(`Invalid AnnotationEditor mode: ${l}`);if(!this.pdfDocument)return;l===yd.STAMP&&((t=Q(this,W0))==null||t.loadModel("altText"));const{eventBus:F}=this,c=()=>{N(this,Fl,Gn).call(this),b(this,dZ,l),Q(this,Od).updateMode(l,d,Z),F.dispatch("annotationeditormodechanged",{source:this,mode:l})};if(l===yd.NONE||Q(this,dZ)===yd.NONE){const a=l!==yd.NONE;a||this.pdfDocument.annotationStorage.resetModifiedIds();for(const n of this._pages)n.toggleEditingMode(a);const W=N(this,Fl,pm).call(this);if(a&&W){N(this,Fl,Gn).call(this),b(this,r0,new AbortController);const n=AbortSignal.any([Q(this,vt).signal,Q(this,r0).signal]);F._on("pagerendered",({pageNumber:V})=>{W.delete(V),W.size===0&&b(this,o0,setTimeout(c,0))},{signal:n});return}}c()}refresh(l=!1,d=Object.create(null)){if(this.pdfDocument){for(const Z of this._pages)Z.update(d);Q(this,cF)!==null&&(clearTimeout(Q(this,cF)),b(this,cF,null)),l||this.update()}}}Kt=new WeakMap,Rn=new WeakMap,Nn=new WeakMap,dZ=new WeakMap,Od=new WeakMap,x0=new WeakMap,xQ=new WeakMap,hn=new WeakMap,bn=new WeakMap,mn=new WeakMap,en=new WeakMap,Mn=new WeakMap,vt=new WeakMap,W0=new WeakMap,r0=new WeakMap,o0=new WeakMap,RQ=new WeakMap,_t=new WeakMap,rQ=new WeakMap,Jn=new WeakMap,NQ=new WeakMap,j0=new WeakMap,cF=new WeakMap,jQ=new WeakMap,Fl=new WeakSet,Sm=function(U){const l={annotationEditorMode:Q(this,dZ),annotationMode:Q(this,x0),textLayerMode:Q(this,jQ)};return U&&(!U.includes(Ha.COPY)&&Q(this,jQ)===oU.ENABLE&&(l.textLayerMode=oU.ENABLE_PERMISSIONS),U.includes(Ha.MODIFY_CONTENTS)||(l.annotationEditorMode=yd.DISABLE),!U.includes(Ha.MODIFY_ANNOTATIONS)&&!U.includes(Ha.FILL_INTERACTIVE_FORMS)&&Q(this,x0)===VZ.ENABLE_FORMS&&(l.annotationMode=VZ.ENABLE)),l},Xm=function(U){return z(this,null,function*(){if(document.visibilityState==="hidden"||!this.container.offsetParent||this._getVisiblePages().views.length===0)return;const l=Promise.withResolvers();function d(){document.visibilityState==="hidden"&&l.resolve()}document.addEventListener("visibilitychange",d,{signal:U}),yield Promise.race([this._onePageRenderedCapability.promise,l.promise]),document.removeEventListener("visibilitychange",d)})},Ym=function(U,l){const d=document.getSelection(),{focusNode:Z,anchorNode:t}=d;if(t&&Z&&d.containsNode(Q(this,_t))){if(Q(this,RQ)||U===oU.ENABLE_PERMISSIONS){l.preventDefault(),l.stopPropagation();return}b(this,RQ,!0);const{classList:F}=this.viewer;F.add("copyAll");const c=new AbortController;window.addEventListener("keydown",a=>b(this,rQ,a.key==="Escape"),{signal:c.signal}),this.getAllText().then(a=>z(this,null,function*(){a!==null&&(yield navigator.clipboard.writeText(a))})).catch(a=>{console.warn(`Something goes wrong when extracting the text: ${a.message}`)}).finally(()=>{b(this,RQ,!1),b(this,rQ,!1),c.abort(),F.remove("copyAll")}),l.preventDefault(),l.stopPropagation()}},OQ=function(){if(this._scrollMode!==cl.PAGE)throw new Error("#ensurePageViewVisible: Invalid scrollMode value.");const U=this._currentPageNumber,l=Q(this,j0),d=this.viewer;if(d.textContent="",l.pages.length=0,this._spreadMode===nd.NONE&&!this.isInPresentationMode){const Z=this._pages[U-1];d.append(Z.div),l.pages.push(Z)}else{const Z=new Set,t=this._spreadMode-1;t===-1?Z.add(U-1):U%2!==t?(Z.add(U-1),Z.add(U)):(Z.add(U-2),Z.add(U-1));const F=document.createElement("div");if(F.className="spread",this.isInPresentationMode){const c=document.createElement("div");c.className="dummyPage",F.append(c)}for(const c of Z){const a=this._pages[c];a&&(F.append(a.div),l.pages.push(a))}d.append(F)}l.scrollDown=U>=l.previousPageNumber,l.previousPageNumber=U},dV=function(U,l=null){const{div:d,id:Z}=U;if(this._currentPageNumber!==Z&&this._setCurrentPageNumber(Z),this._scrollMode===cl.PAGE&&(N(this,Fl,OQ).call(this),this.update()),!l&&!this.isInPresentationMode){const t=d.offsetLeft+d.clientLeft,F=t+d.clientWidth,{scrollLeft:c,clientWidth:a}=this.container;(this._scrollMode===cl.HORIZONTAL||t<c||F>c+a)&&(l={left:0,top:0})}gb(d,l),!this._currentScaleValue&&this._location&&(this._location=null)},Uh=function(U){return U===this._currentScale||Math.abs(U-this._currentScale)<1e-15},hs=function(U,l,{noScroll:d=!1,preset:Z=!1,drawingDelay:t=-1,origin:F=null}){if(this._currentScaleValue=l.toString(),N(this,Fl,Uh).call(this,U)){Z&&this.eventBus.dispatch("scalechanging",{source:this,scale:U,presetValue:l});return}this.viewer.style.setProperty("--scale-factor",U*WZ.PDF_TO_CSS_UNITS);const c=t>=0&&t<1e3;this.refresh(!0,{scale:U,drawingDelay:c?t:-1}),c&&b(this,cF,setTimeout(()=>{b(this,cF,null),this.refresh()},t));const a=this._currentScale;if(this._currentScale=U,!d){let W=this._currentPageNumber,n;if(this._location&&!(this.isInPresentationMode||this.isChangingPresentationMode)&&(W=this._location.pageNumber,n=[null,{name:"XYZ"},this._location.left,this._location.top,null]),this.scrollPageIntoView({pageNumber:W,destArray:n,allowNegativeOffset:!0}),Array.isArray(F)){const V=U/a-1,[s,i]=this.containerTopLeft;this.container.scrollLeft+=(F[0]-i)*V,this.container.scrollTop+=(F[1]-s)*V}}this.eventBus.dispatch("scalechanging",{source:this,scale:U,presetValue:Z?l:void 0}),this.defaultRenderingQueue&&this.update()},Zh=function(){return this._spreadMode!==nd.NONE&&this._scrollMode!==cl.HORIZONTAL?2:1},DZ=function(U,l){let d=parseFloat(U);if(d>0)l.preset=!1,N(this,Fl,hs).call(this,d,U,l);else{const Z=this._pages[this._currentPageNumber-1];if(!Z)return;let t=jb,F=Ob;this.isInPresentationMode?(t=F=4,this._spreadMode!==nd.NONE&&(t*=2)):this.removePageBorders?t=F=0:this._scrollMode===cl.HORIZONTAL&&([t,F]=[F,t]);const c=(this.container.clientWidth-t)/Z.width*Z.scale/Q(this,Fl,Zh),a=(this.container.clientHeight-F)/Z.height*Z.scale;switch(U){case"page-actual":d=1;break;case"page-width":d=c;break;case"page-height":d=a;break;case"page-fit":d=Math.min(c,a);break;case"auto":const W=vb(Z)?c:Math.min(a,c);d=Math.min(MM,W);break;default:console.error(`#setScale: "${U}" is an unknown zoom value.`);return}l.preset=!0,N(this,Fl,hs).call(this,d,U,l)}},Ei=function(){const U=this._pages[this._currentPageNumber-1];this.isInPresentationMode&&N(this,Fl,DZ).call(this,this._currentScaleValue,{noScroll:!0}),N(this,Fl,dV).call(this,U)},pm=function(){const U=this._getVisiblePages(),l=[],{ids:d,views:Z}=U;for(const t of Z){const{view:F}=t;if(!F.hasEditableAnnotations()){d.delete(F.id);continue}l.push(t)}return l.length===0?null:(this.renderingQueue.renderHighestPriority({first:l[0],last:l.at(-1),views:l,ids:d}),d)},um=function(U){return z(this,null,function*(){if(U.pdfPage)return U.pdfPage;try{const l=yield this.pdfDocument.getPage(U.id);return U.pdfPage||U.setPdfPage(l),l}catch(l){return console.error("Unable to get page for page view",l),null}})},om=function(U){var l,d;if(((l=U.first)==null?void 0:l.id)===1)return!0;if(((d=U.last)==null?void 0:d.id)===this.pagesCount)return!1;switch(this._scrollMode){case cl.PAGE:return Q(this,j0).scrollDown;case cl.HORIZONTAL:return this.scroll.right}return this.scroll.down},wi=function(U=this.container.clientHeight){U!==Q(this,Jn)&&(b(this,Jn,U),YM.setProperty("--viewer-container-height",`${U}px`))},Bm=function(U){for(const l of U)if(l.target===this.container){N(this,Fl,wi).call(this,Math.floor(l.borderBoxSize[0].blockSize)),b(this,xQ,null);break}},Gn=function(){var U;(U=Q(this,r0))==null||U.abort(),b(this,r0,null),Q(this,o0)!==null&&(clearTimeout(Q(this,o0)),b(this,o0,null))};class pG extends ym{_resetView(){super._resetView(),this._scrollMode=cl.PAGE,this._spreadMode=nd.NONE}set scrollMode(l){}_updateScrollMode(){}set spreadMode(l){}_updateSpreadMode(){}}Sl.AnnotationLayerBuilder;Sl.DownloadManager;Sl.EventBus;Sl.FindState;Sl.GenericL10n;Sl.LinkTarget;Sl.PDFFindController;Sl.PDFHistory;var uG=Sl.PDFLinkService;Sl.PDFPageView;Sl.PDFScriptingManager;Sl.PDFSinglePageViewer;Sl.PDFViewer;Sl.ProgressBar;Sl.RenderingStates;Sl.ScrollMode;Sl.SimpleLinkService;Sl.SpreadMode;Sl.StructTreeLayerBuilder;Sl.TextLayerBuilder;Sl.XfaLayerBuilder;Sl.parseQueryString;const oG=["id"],BG=["id"],yG=bQ("canvas",null,null,-1),kG={key:0,class:"textLayer"},LG={key:1,class:"annotationLayer"},km=Qh({__name:"VuePdfEmbed",props:{annotationLayer:{type:Boolean},height:{},id:{},imageResourcesPath:{},page:{},rotation:{default:0},scale:{default:1},source:{},textLayer:{type:Boolean},width:{}},emits:["internal-link-clicked","loaded","loading-failed","password-requested","progress","rendered","rendering-failed"],setup(U,{expose:l,emit:d}){const Z=U,t=Sn([]),F=Jt([]),c=Sn(null);let a=null;const{doc:W}=xb({onError:J=>{t.value=[],d("loading-failed",J)},onPasswordRequest({callback:J,isWrongPassword:T}){d("password-requested",{callback:J,isWrongPassword:T})},onProgress:J=>{d("progress",J)},source:jm(Z,"source")}),n=Om(()=>{if(!W.value||!Z.annotationLayer)return null;const J=new uG;return J.setDocument(W.value),J.setViewer({scrollPageIntoView:({pageNumber:T})=>{d("internal-link-clicked",T)}}),J}),V=J=>z(this,null,function*(){var Y;if(!W.value)return;const T=yield W.value.getData(),G=yield W.value.getMetadata(),X=(Y=J!=null?J:G.contentDispositionFilename)!=null?Y:"";hM(T,X)}),s=J=>{var X;let T,G;return Z.height&&!Z.width?(G=Z.height,T=G/J):(T=(X=Z.width)!=null?X:c.value.clientWidth,G=T*J),[T,G]},i=(J=300,T="",G=!1)=>z(this,null,function*(){var X,Y,p;if(!W.value)return;const o=J/72,k=96/72;let S,B,y;try{S=window.document.createElement("div"),S.style.display="none",window.document.body.appendChild(S),B=yield NM(S);const D=Z.page&&!G?[Z.page]:[...Array(W.value.numPages+1).keys()].slice(1);yield Promise.all(D.map((E,r)=>z(this,null,function*(){const w=yield W.value.getPage(E),u=w.getViewport({scale:1,rotation:0});if(r===0){const Wl=u.width*o/k,hl=u.height*o/k;RM(B,Wl,hl)}const C=window.document.createElement("canvas");C.width=u.width*o,C.height=u.height*o,S.appendChild(C);const Ul=C.cloneNode();B.contentWindow.document.body.appendChild(Ul),yield w.render({canvasContext:C.getContext("2d"),intent:"print",transform:[o,0,0,o,0,0],viewport:u}).promise,Ul.getContext("2d").drawImage(C,0,0)}))),T&&(y=window.document.title,window.document.title=T),(X=B.contentWindow)==null||X.focus(),(Y=B.contentWindow)==null||Y.print()}finally{y&&(window.document.title=y),$V(S),(p=S.parentNode)==null||p.removeChild(S)}}),R=()=>z(this,null,function*(){if(!(!W.value||a!=null&&a.isAborted))try{t.value=Z.page?[Z.page]:[...Array(W.value.numPages+1).keys()].slice(1),F.value=Array(t.value.length).fill(1),yield Promise.all(t.value.map((J,T)=>z(this,null,function*(){const G=yield W.value.getPage(J);if(a!=null&&a.isAborted)return;const X=((Z.rotation%90===0?Z.rotation:0)+G.rotate)%360,[Y,p,o]=Array.from(c.value.getElementsByClassName("vue-pdf-embed__page")[T].children),k=!!(X/90%2),S=G.view[2]-G.view[0],B=G.view[3]-G.view[1],[y,D]=s(k?S/B:B/S),E=`${Math.floor(y)}px`,r=`${Math.floor(D)}px`,w=y/(k?B:S),u=G.getViewport({scale:w,rotation:X});F.value[T]=w,Y.style.display="block",Y.style.width=E,Y.style.height=r;const C=[h(G,u.clone({scale:u.scale*window.devicePixelRatio*Z.scale}),Y)];return Z.textLayer&&C.push(M(G,u.clone({dontFlip:!0}),p)),Z.annotationLayer&&C.push(m(G,u.clone({dontFlip:!0}),o||p)),Promise.all(C)}))),a!=null&&a.isAborted||d("rendered")}catch(J){t.value=[],F.value=[],a!=null&&a.isAborted||d("rendering-failed",J)}}),h=(J,T,G)=>z(this,null,function*(){G.width=T.width,G.height=T.height,yield J.render({canvasContext:G.getContext("2d"),viewport:T}).promise}),m=(J,T,G)=>z(this,null,function*(){RN(G),new WM({accessibilityManager:null,annotationCanvasMap:null,annotationEditorUIManager:null,div:G,page:J,structTreeLayer:null,viewport:T}).render({annotations:yield J.getAnnotations(),div:G,imageResourcesPath:Z.imageResourcesPath,linkService:n.value,page:J,renderForms:!1,viewport:T})}),M=(J,T,G)=>z(this,null,function*(){RN(G),new VM({container:G,textContentSource:yield J.getTextContent(),viewport:T}).render()});return bs(W,J=>{J&&d("loaded",J)},{immediate:!0}),bs(()=>[W.value,Z.annotationLayer,Z.height,Z.imageResourcesPath,Z.page,Z.rotation,Z.scale,Z.textLayer,Z.width],T=>z(this,[T],function*([J]){J&&(a&&(a.isAborted=!0,yield a.promise),$V(c.value),a={isAborted:!1,promise:R()},yield a.promise,a=null)}),{immediate:!0}),ch(()=>{$V(c.value)}),l({doc:W,download:V,print:i}),(J,T)=>(ZZ(),EZ("div",{id:J.id,ref_key:"root",ref:c,class:"vue-pdf-embed"},[(ZZ(!0),EZ(gm,null,Km(t.value,(G,X)=>(ZZ(),EZ("div",{key:G},[QR(J.$slots,"before-page",{page:G}),bQ("div",{id:J.id&&`${J.id}-${G}`,class:"vue-pdf-embed__page",style:vm({"--scale-factor":F.value[X],position:"relative"})},[yG,J.textLayer?(ZZ(),EZ("div",kG)):aR("",!0),J.annotationLayer?(ZZ(),EZ("div",LG)):aR("",!0)],12,BG),QR(J.$slots,"after-page",{page:G})]))),128))],8,oG))}});window!=null&&window.Vue&&(window.VuePdfEmbed=km,window.useVuePdfEmbed=xb);qV!=null&&qV.workerSrc||(qV.workerSrc=iM);const zG={},Sc=Object.freeze(Object.defineProperty({__proto__:null,default:zG},Symbol.toStringTag,{value:"Module"}));var Xc={a:7,c:6,h:1,l:2,m:2,q:4,s:4,t:2,v:1,z:0},IG=/([astvzqmhlc])([^astvzqmhlc]*)/gi,DG=/-?[0-9]*\.?[0-9]+(?:e[-+]?\d+)?/gi;function EG(U){const l=U.match(DG);return l?l.map(Number):[]}function Lm(U){const l=[],d=String(U).trim();return d[0]!=="M"&&d[0]!=="m"||d.replace(IG,(Z,t,F)=>{const c=EG(F);let a=t.toLowerCase(),W=t;if(a==="m"&&c.length>2&&(l.push([W,...c.splice(0,2)]),a="l",W=W==="m"?"l":"L"),c.length<Xc[a])return"";for(l.push([W,...c.splice(0,Xc[a])]);c.length>=Xc[a]&&c.length&&Xc[a];)l.push([W,...c.splice(0,Xc[a])]);return""}),l}function th(U,l){const d=U.x*Math.cos(l)-U.y*Math.sin(l),Z=U.y*Math.cos(l)+U.x*Math.sin(l);U.x=d,U.y=Z}function wG(U,l,d){U.x+=l,U.y+=d}function Fh(U,l){U.x*=l,U.y*=l}var Tn=class Ci{constructor(l){this.commands=[],l&&l instanceof Ci?this.commands.push(...l.commands):l&&(this.commands=Lm(l))}addPath(l){l&&l instanceof Ci&&this.commands.push(...l.commands)}moveTo(l,d){this.commands.push(["M",l,d])}lineTo(l,d){this.commands.push(["L",l,d])}arc(l,d,Z,t,F,c){this.commands.push(["AC",l,d,Z,t,F,!!c])}arcTo(l,d,Z,t,F){this.commands.push(["AT",l,d,Z,t,F])}ellipse(l,d,Z,t,F,c,a,W){this.commands.push(["E",l,d,Z,t,F,c,a,!!W])}closePath(){this.commands.push(["Z"])}bezierCurveTo(l,d,Z,t,F,c){this.commands.push(["C",l,d,Z,t,F,c])}quadraticCurveTo(l,d,Z,t){this.commands.push(["Q",l,d,Z,t])}rect(l,d,Z,t){this.commands.push(["R",l,d,Z,t])}roundRect(l,d,Z,t,F){typeof F>"u"?this.commands.push(["RR",l,d,Z,t,0]):this.commands.push(["RR",l,d,Z,t,F])}};function hQ(U,l){let d=0,Z=0,t,F,c,a,W,n,V,s,i,R,h,m,M,J,T,G,X,Y,p,o,k,S=null,B=null,y=null,D=null,E=null,r=null;U.beginPath();for(let w=0;w<l.length;++w){Y=l[w][0],Y!=="S"&&Y!=="s"&&Y!=="C"&&Y!=="c"&&(S=null,B=null),Y!=="T"&&Y!=="t"&&Y!=="Q"&&Y!=="q"&&(y=null,D=null);let u;switch(Y){case"m":case"M":u=l[w],Y==="m"?(d+=u[1],Z+=u[2]):(d=u[1],Z=u[2]),(Y==="M"||!E)&&(E={x:d,y:Z}),U.moveTo(d,Z);break;case"l":u=l[w],d+=u[1],Z+=u[2],U.lineTo(d,Z);break;case"L":u=l[w],d=u[1],Z=u[2],U.lineTo(d,Z);break;case"H":u=l[w],d=u[1],U.lineTo(d,Z);break;case"h":u=l[w],d+=u[1],U.lineTo(d,Z);break;case"V":u=l[w],Z=u[1],U.lineTo(d,Z);break;case"v":u=l[w],Z+=u[1],U.lineTo(d,Z);break;case"a":case"A":if(u=l[w],r===null)throw new Error("This should never happen");Y==="a"?(d+=u[6],Z+=u[7]):(d=u[6],Z=u[7]),J=u[1],T=u[2],V=u[3]*Math.PI/180,c=!!u[4],a=!!u[5],W={x:d,y:Z},n={x:(r.x-W.x)/2,y:(r.y-W.y)/2},th(n,-V),s=n.x*n.x/(J*J)+n.y*n.y/(T*T),s>1&&(s=Math.sqrt(s),J*=s,T*=s),p={x:J*n.y/T,y:-(T*n.x)/J},i=J*J*T*T,R=J*J*n.y*n.y+T*T*n.x*n.x,a!==c?Fh(p,Math.sqrt((i-R)/R)||0):Fh(p,-Math.sqrt((i-R)/R)||0),F=Math.atan2((n.y-p.y)/T,(n.x-p.x)/J),t=Math.atan2(-(n.y+p.y)/T,-(n.x+p.x)/J),th(p,V),wG(p,(W.x+r.x)/2,(W.y+r.y)/2),U.save(),U.translate(p.x,p.y),U.rotate(V),U.scale(J,T),U.arc(0,0,1,F,t,!a),U.restore();break;case"C":u=l[w],S=u[3],B=u[4],d=u[5],Z=u[6],U.bezierCurveTo(u[1],u[2],S,B,d,Z);break;case"c":u=l[w],U.bezierCurveTo(u[1]+d,u[2]+Z,u[3]+d,u[4]+Z,u[5]+d,u[6]+Z),S=u[3]+d,B=u[4]+Z,d+=u[5],Z+=u[6];break;case"S":u=l[w],(S===null||B===null)&&(S=d,B=Z),U.bezierCurveTo(2*d-S,2*Z-B,u[1],u[2],u[3],u[4]),S=u[1],B=u[2],d=u[3],Z=u[4];break;case"s":u=l[w],(S===null||B===null)&&(S=d,B=Z),U.bezierCurveTo(2*d-S,2*Z-B,u[1]+d,u[2]+Z,u[3]+d,u[4]+Z),S=u[1]+d,B=u[2]+Z,d+=u[3],Z+=u[4];break;case"Q":u=l[w],y=u[1],D=u[2],d=u[3],Z=u[4],U.quadraticCurveTo(y,D,d,Z);break;case"q":u=l[w],y=u[1]+d,D=u[2]+Z,d+=u[3],Z+=u[4],U.quadraticCurveTo(y,D,d,Z);break;case"T":u=l[w],(y===null||D===null)&&(y=d,D=Z),y=2*d-y,D=2*Z-D,d=u[1],Z=u[2],U.quadraticCurveTo(y,D,d,Z);break;case"t":u=l[w],(y===null||D===null)&&(y=d,D=Z),y=2*d-y,D=2*Z-D,d+=u[1],Z+=u[2],U.quadraticCurveTo(y,D,d,Z);break;case"z":case"Z":E&&(d=E.x,Z=E.y),E=null,U.closePath();break;case"AC":u=l[w],d=u[1],Z=u[2],M=u[3],F=u[4],t=u[5],o=u[6],U.arc(d,Z,M,F,t,o);break;case"AT":u=l[w],h=u[1],m=u[2],d=u[3],Z=u[4],M=u[5],U.arcTo(h,m,d,Z,M);break;case"E":u=l[w],d=u[1],Z=u[2],J=u[3],T=u[4],V=u[5],F=u[6],t=u[7],o=u[8],U.save(),U.translate(d,Z),U.rotate(V),U.scale(J,T),U.arc(0,0,1,F,t,o),U.restore();break;case"R":u=l[w],d=u[1],Z=u[2],G=u[3],X=u[4],E={x:d,y:Z},U.rect(d,Z,G,X);break;case"RR":u=l[w],d=u[1],Z=u[2],G=u[3],X=u[4],k=u[5],E={x:d,y:Z},U.roundRect(d,Z,G,X,k);break;default:throw new Error(`Invalid path command: ${Y}`)}r?(r.x=d,r.y=Z):r={x:d,y:Z}}}function UR(U,l,d,Z,t=0){if(typeof t=="number"&&(t=[t]),Array.isArray(t)){if(t.length===0||t.length>4)throw new RangeError(`Failed to execute 'roundRect' on '${this.constructor.name}': ${t.length} radii provided. Between one and four radii are necessary.`);t.forEach(V=>{if(V<0)throw new RangeError(`Failed to execute 'roundRect' on '${this.constructor.name}': Radius value ${V} is negative.`)})}else return;if(t.length===1&&t[0]===0){this.rect(U,l,d,Z);return}const F=Math.min(d,Z)/2,c=Math.min(F,t[0]);let a=c,W=c,n=c;t.length===2&&(a=Math.min(F,t[1]),n=a),t.length===3&&(a=Math.min(F,t[1]),n=a,W=Math.min(F,t[2])),t.length===4&&(a=Math.min(F,t[1]),W=Math.min(F,t[2]),n=Math.min(F,t[3])),this.moveTo(U,l+Z-n),this.arcTo(U,l,U+c,l,c),this.arcTo(U+d,l,U+d,l+a,a),this.arcTo(U+d,l+Z,U+d-W,l+Z,W),this.arcTo(U,l+Z,U,l+Z-n,n),this.moveTo(U,l)}function CG(U){if(!U)return;const l=U.prototype.clip,d=U.prototype.fill,Z=U.prototype.stroke,t=U.prototype.isPointInPath;U.prototype.clip=function(...F){if(F[0]instanceof Tn){const a=F[0],W=F[1]||"nonzero";return hQ(this,a.commands),l.apply(this,[W])}const c=F[0]||"nonzero";return l.apply(this,[c])},U.prototype.fill=function(...F){if(F[0]instanceof Tn){const a=F[0],W=F[1]||"nonzero";return hQ(this,a.commands),d.apply(this,[W])}const c=F[0]||"nonzero";return d.apply(this,[c])},U.prototype.stroke=function(F){F&&hQ(this,F.commands),Z.apply(this)},U.prototype.isPointInPath=function(...F){if(F[0]instanceof Tn){const c=F[0],a=F[1],W=F[2],n=F[3]||"nonzero";return hQ(this,c.commands),t.apply(this,[a,W,n])}return t.apply(this,F)}}function xG(U){U&&!U.prototype.roundRect&&(U.prototype.roundRect=UR)}function rG(U){U&&!U.prototype.roundRect&&(U.prototype.roundRect=UR)}const jG=Object.freeze(Object.defineProperty({__proto__:null,Path2D:Tn,applyPath2DToCanvasRenderingContext:CG,applyRoundRectToCanvasRenderingContext2D:xG,applyRoundRectToPath2D:rG,buildPath:hQ,parsePath:Lm,roundRect:UR},Symbol.toStringTag,{value:"Module"})),OG={class:"font-medium"},gG=["element-loading-text"],KG={class:"flex justify-between items-center h-9"},vG={key:0,class:"font-medium ml-1.25 text-xl"},HG={key:1},PG={class:"w-[170px] flex-bc"},fG="https://xiaoxian521.github.io/hyperlink/pdf/Cookie%E5%92%8CSession%E5%8C%BA%E5%88%AB%E7%94%A8%E6%B3%95.pdf",TT=Qh({name:"Pdf",__name:"pdf",setup(U){const{t:l}=Hm(),d=Jt(),Z=Jt(1),t=Jt(!0),F=Jt(1),c=Jt(0),a=Jt(!1),W=[0,90,180,270],n=()=>{t.value=!1,Z.value=d.value.doc.numPages},V=()=>{F.value=a.value?null:1},s=()=>{d.value.print()};return(i,R)=>{const h=NF("el-link"),m=NF("el-pagination"),M=NF("el-checkbox"),J=NF("IconifyIconOnline"),T=NF("el-scrollbar"),G=NF("el-card"),X=WR("tippy"),Y=WR("loading");return ZZ(),Pm(G,{shadow:"never"},{header:dt(()=>[bQ("div",OG,[RZ(h,{href:"https://github.com/hrynko/vue-pdf-embed",target:"_blank",style:{margin:"0 5px 4px 0","font-size":"16px"}},{default:dt(()=>R[3]||(R[3]=[$Q(" PDF预览 ")])),_:1})]),RZ(h,{class:"mt-2",href:"https://github.com/pure-admin/vue-pure-admin/blob/main/src/views/able/pdf.vue",target:"_blank"},{default:dt(()=>R[4]||(R[4]=[$Q(" 代码位置 src/views/able/pdf.vue ")])),_:1})]),default:dt(()=>[hV((ZZ(),EZ("div",{class:"h-[calc(100vh-295px)]","element-loading-text":nR(l)("status.pureLoad")},[bQ("div",KG,[a.value?(ZZ(),EZ("div",vG," 共"+bV(Z.value)+"页 ",1)):(ZZ(),EZ("div",HG,[RZ(m,{"current-page":F.value,"onUpdate:currentPage":R[0]||(R[0]=p=>F.value=p),background:"",layout:"prev, slot, next","page-size":1,total:Z.value},{default:dt(()=>[$Q(bV(F.value)+" / "+bV(Z.value),1)]),_:1},8,["current-page","total"])])),bQ("div",PG,[RZ(M,{modelValue:a.value,"onUpdate:modelValue":R[1]||(R[1]=p=>a.value=p),onChange:V},{default:dt(()=>R[5]||(R[5]=[$Q(" 显示所有页面 ")])),_:1},8,["modelValue"]),hV(RZ(J,{icon:"ic:baseline-rotate-90-degrees-ccw",class:"cursor-pointer outline-transparent",onClick:R[2]||(R[2]=p=>c.value===3?c.value=0:c.value+=1)},null,512),[[X,{maxWidth:"none",content:`翻转(当前角度${W[c.value]}度)`}]]),hV(RZ(J,{icon:"ri:printer-line",class:"cursor-pointer outline-transparent",onClick:s},null,512),[[X,{maxWidth:"none",content:"打印"}]])])]),RZ(T,null,{default:dt(()=>[RZ(nR(km),{ref_key:"pdfRef",ref:d,class:"h-full container overflow-auto",rotation:W[c.value],page:F.value,source:fG,onRendered:n},null,8,["rotation","page"])]),_:1})],8,gG)),[[Y,t.value]])]),_:1})}}});export{TT as default};
|